@raidiant/notifai 11.7.1 → 12.0.0-beta.11
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/CHANGELOG.md +53 -0
- package/NOTICE +16 -0
- package/THIRD_PARTY_NOTICES +725 -0
- package/bin/notifai.mjs +11420 -0
- package/data/install.ps1 +318 -0
- package/data/release.json +1 -0
- package/inventory.json +1 -0
- package/npm-adapter-files.json +52 -0
- package/package.json +14 -44
- package/README.md +0 -168
- package/dist/agent-update-notice.d.ts +0 -7
- package/dist/agent-update-notice.js +0 -77
- package/dist/agent-update-notice.js.map +0 -1
- package/dist/atomic-file.d.ts +0 -30
- package/dist/atomic-file.js +0 -148
- package/dist/atomic-file.js.map +0 -1
- package/dist/attendant-update.d.ts +0 -15
- package/dist/attendant-update.js +0 -96
- package/dist/attendant-update.js.map +0 -1
- package/dist/claude-wake.d.ts +0 -108
- package/dist/claude-wake.js +0 -369
- package/dist/claude-wake.js.map +0 -1
- package/dist/cli-bin.d.ts +0 -26
- package/dist/cli-bin.js +0 -220
- package/dist/cli-bin.js.map +0 -1
- package/dist/cli-contract.d.ts +0 -16
- package/dist/cli-contract.js +0 -27
- package/dist/cli-contract.js.map +0 -1
- package/dist/cli-release.d.ts +0 -36
- package/dist/cli-release.js +0 -85
- package/dist/cli-release.js.map +0 -1
- package/dist/client.d.ts +0 -109
- package/dist/client.js +0 -217
- package/dist/client.js.map +0 -1
- package/dist/codex-answer-control.d.ts +0 -14
- package/dist/codex-answer-control.js +0 -41
- package/dist/codex-answer-control.js.map +0 -1
- package/dist/codex-answer-presentation.d.ts +0 -18
- package/dist/codex-answer-presentation.js +0 -113
- package/dist/codex-answer-presentation.js.map +0 -1
- package/dist/codex-input-lifecycle.d.ts +0 -10
- package/dist/codex-input-lifecycle.js +0 -63
- package/dist/codex-input-lifecycle.js.map +0 -1
- package/dist/codex-native-control.d.ts +0 -13
- package/dist/codex-native-control.js +0 -120
- package/dist/codex-native-control.js.map +0 -1
- package/dist/codex-native-turn.d.ts +0 -37
- package/dist/codex-native-turn.js +0 -155
- package/dist/codex-native-turn.js.map +0 -1
- package/dist/codex-question-bindings.d.ts +0 -76
- package/dist/codex-question-bindings.js +0 -151
- package/dist/codex-question-bindings.js.map +0 -1
- package/dist/codex-queue-control.d.ts +0 -21
- package/dist/codex-queue-control.js +0 -59
- package/dist/codex-queue-control.js.map +0 -1
- package/dist/codex-tool-messages.d.ts +0 -7
- package/dist/codex-tool-messages.js +0 -126
- package/dist/codex-tool-messages.js.map +0 -1
- package/dist/codex-wake.d.ts +0 -58
- package/dist/codex-wake.js +0 -135
- package/dist/codex-wake.js.map +0 -1
- package/dist/command-session.d.ts +0 -14
- package/dist/command-session.js +0 -31
- package/dist/command-session.js.map +0 -1
- package/dist/commands-acknowledge.d.ts +0 -13
- package/dist/commands-acknowledge.js +0 -116
- package/dist/commands-acknowledge.js.map +0 -1
- package/dist/commands-agent-sessions.d.ts +0 -6
- package/dist/commands-agent-sessions.js +0 -51
- package/dist/commands-agent-sessions.js.map +0 -1
- package/dist/commands-ask.d.ts +0 -62
- package/dist/commands-ask.js +0 -503
- package/dist/commands-ask.js.map +0 -1
- package/dist/commands-auth.d.ts +0 -76
- package/dist/commands-auth.js +0 -421
- package/dist/commands-auth.js.map +0 -1
- package/dist/commands-close.d.ts +0 -6
- package/dist/commands-close.js +0 -273
- package/dist/commands-close.js.map +0 -1
- package/dist/commands-config.d.ts +0 -31
- package/dist/commands-config.js +0 -272
- package/dist/commands-config.js.map +0 -1
- package/dist/commands-core.d.ts +0 -145
- package/dist/commands-core.js +0 -190
- package/dist/commands-core.js.map +0 -1
- package/dist/commands-devices.d.ts +0 -41
- package/dist/commands-devices.js +0 -144
- package/dist/commands-devices.js.map +0 -1
- package/dist/commands-doctor.d.ts +0 -25
- package/dist/commands-doctor.js +0 -1553
- package/dist/commands-doctor.js.map +0 -1
- package/dist/commands-guidance.d.ts +0 -27
- package/dist/commands-guidance.js +0 -150
- package/dist/commands-guidance.js.map +0 -1
- package/dist/commands-harness-context.d.ts +0 -57
- package/dist/commands-harness-context.js +0 -102
- package/dist/commands-harness-context.js.map +0 -1
- package/dist/commands-hook-attend.d.ts +0 -70
- package/dist/commands-hook-attend.js +0 -655
- package/dist/commands-hook-attend.js.map +0 -1
- package/dist/commands-hook-diagnostics.d.ts +0 -37
- package/dist/commands-hook-diagnostics.js +0 -136
- package/dist/commands-hook-diagnostics.js.map +0 -1
- package/dist/commands-hook-install.d.ts +0 -26
- package/dist/commands-hook-install.js +0 -784
- package/dist/commands-hook-install.js.map +0 -1
- package/dist/commands-hook-run.d.ts +0 -29
- package/dist/commands-hook-run.js +0 -933
- package/dist/commands-hook-run.js.map +0 -1
- package/dist/commands-hook-shape.d.ts +0 -19
- package/dist/commands-hook-shape.js +0 -48
- package/dist/commands-hook-shape.js.map +0 -1
- package/dist/commands-init.d.ts +0 -42
- package/dist/commands-init.js +0 -901
- package/dist/commands-init.js.map +0 -1
- package/dist/commands-io.d.ts +0 -2
- package/dist/commands-io.js +0 -117
- package/dist/commands-io.js.map +0 -1
- package/dist/commands-logs.d.ts +0 -30
- package/dist/commands-logs.js +0 -201
- package/dist/commands-logs.js.map +0 -1
- package/dist/commands-native-acknowledge.d.ts +0 -8
- package/dist/commands-native-acknowledge.js +0 -114
- package/dist/commands-native-acknowledge.js.map +0 -1
- package/dist/commands-project.d.ts +0 -4
- package/dist/commands-project.js +0 -41
- package/dist/commands-project.js.map +0 -1
- package/dist/commands-receive.d.ts +0 -3
- package/dist/commands-receive.js +0 -59
- package/dist/commands-receive.js.map +0 -1
- package/dist/commands-send-support.d.ts +0 -59
- package/dist/commands-send-support.js +0 -258
- package/dist/commands-send-support.js.map +0 -1
- package/dist/commands-send.d.ts +0 -34
- package/dist/commands-send.js +0 -900
- package/dist/commands-send.js.map +0 -1
- package/dist/commands-setup-proof.d.ts +0 -43
- package/dist/commands-setup-proof.js +0 -134
- package/dist/commands-setup-proof.js.map +0 -1
- package/dist/commands-skill.d.ts +0 -21
- package/dist/commands-skill.js +0 -199
- package/dist/commands-skill.js.map +0 -1
- package/dist/commands-sounds.d.ts +0 -12
- package/dist/commands-sounds.js +0 -35
- package/dist/commands-sounds.js.map +0 -1
- package/dist/commands-update-check.d.ts +0 -6
- package/dist/commands-update-check.js +0 -102
- package/dist/commands-update-check.js.map +0 -1
- package/dist/commands-update-resume.d.ts +0 -7
- package/dist/commands-update-resume.js +0 -143
- package/dist/commands-update-resume.js.map +0 -1
- package/dist/commands-update-skill.d.ts +0 -5
- package/dist/commands-update-skill.js +0 -36
- package/dist/commands-update-skill.js.map +0 -1
- package/dist/commands-update.d.ts +0 -11
- package/dist/commands-update.js +0 -286
- package/dist/commands-update.js.map +0 -1
- package/dist/commands.d.ts +0 -26
- package/dist/commands.js +0 -27
- package/dist/commands.js.map +0 -1
- package/dist/config-schema.d.ts +0 -62
- package/dist/config-schema.js +0 -302
- package/dist/config-schema.js.map +0 -1
- package/dist/config.d.ts +0 -181
- package/dist/config.js +0 -357
- package/dist/config.js.map +0 -1
- package/dist/credentials.d.ts +0 -96
- package/dist/credentials.js +0 -342
- package/dist/credentials.js.map +0 -1
- package/dist/file-lock.d.ts +0 -34
- package/dist/file-lock.js +0 -367
- package/dist/file-lock.js.map +0 -1
- package/dist/generated-session-label.d.ts +0 -2
- package/dist/generated-session-label.js +0 -152
- package/dist/generated-session-label.js.map +0 -1
- package/dist/guidance-content.d.ts +0 -53
- package/dist/guidance-content.js +0 -248
- package/dist/guidance-content.js.map +0 -1
- package/dist/guidance-render.d.ts +0 -25
- package/dist/guidance-render.js +0 -47
- package/dist/guidance-render.js.map +0 -1
- package/dist/guidance.d.ts +0 -69
- package/dist/guidance.js +0 -173
- package/dist/guidance.js.map +0 -1
- package/dist/harness-session-title.d.ts +0 -22
- package/dist/harness-session-title.js +0 -74
- package/dist/harness-session-title.js.map +0 -1
- package/dist/harnesses.d.ts +0 -65
- package/dist/harnesses.js +0 -159
- package/dist/harnesses.js.map +0 -1
- package/dist/hermes-attendant.d.ts +0 -38
- package/dist/hermes-attendant.js +0 -337
- package/dist/hermes-attendant.js.map +0 -1
- package/dist/hermes-plugin.d.ts +0 -11
- package/dist/hermes-plugin.js +0 -299
- package/dist/hermes-plugin.js.map +0 -1
- package/dist/hook-acknowledgements.d.ts +0 -70
- package/dist/hook-acknowledgements.js +0 -490
- package/dist/hook-acknowledgements.js.map +0 -1
- package/dist/hook-adapter.d.ts +0 -48
- package/dist/hook-adapter.js +0 -419
- package/dist/hook-adapter.js.map +0 -1
- package/dist/hook-events.d.ts +0 -105
- package/dist/hook-events.js +0 -130
- package/dist/hook-events.js.map +0 -1
- package/dist/hook-gates.d.ts +0 -7
- package/dist/hook-gates.js +0 -20
- package/dist/hook-gates.js.map +0 -1
- package/dist/hook-input.d.ts +0 -10
- package/dist/hook-input.js +0 -64
- package/dist/hook-input.js.map +0 -1
- package/dist/hook-lifecycle.d.ts +0 -112
- package/dist/hook-lifecycle.js +0 -2031
- package/dist/hook-lifecycle.js.map +0 -1
- package/dist/hook-project-sessions.d.ts +0 -28
- package/dist/hook-project-sessions.js +0 -141
- package/dist/hook-project-sessions.js.map +0 -1
- package/dist/hook-question-lock.d.ts +0 -29
- package/dist/hook-question-lock.js +0 -217
- package/dist/hook-question-lock.js.map +0 -1
- package/dist/hook-question-retirement.d.ts +0 -74
- package/dist/hook-question-retirement.js +0 -314
- package/dist/hook-question-retirement.js.map +0 -1
- package/dist/hook-question-state.d.ts +0 -58
- package/dist/hook-question-state.js +0 -239
- package/dist/hook-question-state.js.map +0 -1
- package/dist/hook-session-state.d.ts +0 -127
- package/dist/hook-session-state.js +0 -488
- package/dist/hook-session-state.js.map +0 -1
- package/dist/hook-types.d.ts +0 -476
- package/dist/hook-types.js +0 -4
- package/dist/hook-types.js.map +0 -1
- package/dist/injection-render.d.ts +0 -36
- package/dist/injection-render.js +0 -61
- package/dist/injection-render.js.map +0 -1
- package/dist/install-hooks.d.ts +0 -470
- package/dist/install-hooks.js +0 -1622
- package/dist/install-hooks.js.map +0 -1
- package/dist/integration-health.d.ts +0 -26
- package/dist/integration-health.js +0 -133
- package/dist/integration-health.js.map +0 -1
- package/dist/interactive.d.ts +0 -22
- package/dist/interactive.js +0 -644
- package/dist/interactive.js.map +0 -1
- package/dist/invocation-context.d.ts +0 -47
- package/dist/invocation-context.js +0 -164
- package/dist/invocation-context.js.map +0 -1
- package/dist/local-path.d.ts +0 -7
- package/dist/local-path.js +0 -27
- package/dist/local-path.js.map +0 -1
- package/dist/logging.d.ts +0 -157
- package/dist/logging.js +0 -599
- package/dist/logging.js.map +0 -1
- package/dist/main-run.d.ts +0 -1
- package/dist/main-run.js +0 -42
- package/dist/main-run.js.map +0 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.js +0 -12
- package/dist/main.js.map +0 -1
- package/dist/native-answer-operation.d.ts +0 -70
- package/dist/native-answer-operation.js +0 -247
- package/dist/native-answer-operation.js.map +0 -1
- package/dist/native-skills.d.ts +0 -64
- package/dist/native-skills.js +0 -167
- package/dist/native-skills.js.map +0 -1
- package/dist/node-floor.d.ts +0 -19
- package/dist/node-floor.js +0 -32
- package/dist/node-floor.js.map +0 -1
- package/dist/npm-invocation.d.ts +0 -34
- package/dist/npm-invocation.js +0 -53
- package/dist/npm-invocation.js.map +0 -1
- package/dist/openclaw-continuation-bridge.d.ts +0 -7
- package/dist/openclaw-continuation-bridge.js +0 -64
- package/dist/openclaw-continuation-bridge.js.map +0 -1
- package/dist/openclaw-gateway-readiness.d.ts +0 -1
- package/dist/openclaw-gateway-readiness.js +0 -24
- package/dist/openclaw-gateway-readiness.js.map +0 -1
- package/dist/openclaw-generation.d.ts +0 -21
- package/dist/openclaw-generation.js +0 -115
- package/dist/openclaw-generation.js.map +0 -1
- package/dist/openclaw-message-bridge.d.ts +0 -8
- package/dist/openclaw-message-bridge.js +0 -93
- package/dist/openclaw-message-bridge.js.map +0 -1
- package/dist/openclaw-pending.d.ts +0 -8
- package/dist/openclaw-pending.js +0 -47
- package/dist/openclaw-pending.js.map +0 -1
- package/dist/openclaw-plugin.d.ts +0 -75
- package/dist/openclaw-plugin.js +0 -1353
- package/dist/openclaw-plugin.js.map +0 -1
- package/dist/openclaw-session-access.d.ts +0 -12
- package/dist/openclaw-session-access.js +0 -79
- package/dist/openclaw-session-access.js.map +0 -1
- package/dist/opencode-plugin.d.ts +0 -88
- package/dist/opencode-plugin.js +0 -286
- package/dist/opencode-plugin.js.map +0 -1
- package/dist/orca-session-title.d.ts +0 -11
- package/dist/orca-session-title.js +0 -111
- package/dist/orca-session-title.js.map +0 -1
- package/dist/pack-feedback-slice.d.ts +0 -35
- package/dist/pack-feedback-slice.js +0 -126
- package/dist/pack-feedback-slice.js.map +0 -1
- package/dist/pairing-qr.d.ts +0 -5
- package/dist/pairing-qr.js +0 -24
- package/dist/pairing-qr.js.map +0 -1
- package/dist/pending-pairing.d.ts +0 -38
- package/dist/pending-pairing.js +0 -70
- package/dist/pending-pairing.js.map +0 -1
- package/dist/platform.d.ts +0 -67
- package/dist/platform.js +0 -140
- package/dist/platform.js.map +0 -1
- package/dist/process-identity.d.ts +0 -26
- package/dist/process-identity.js +0 -82
- package/dist/process-identity.js.map +0 -1
- package/dist/program.d.ts +0 -59
- package/dist/program.js +0 -691
- package/dist/program.js.map +0 -1
- package/dist/project-enablement.d.ts +0 -21
- package/dist/project-enablement.js +0 -71
- package/dist/project-enablement.js.map +0 -1
- package/dist/question-settlement-process.d.ts +0 -17
- package/dist/question-settlement-process.js +0 -35
- package/dist/question-settlement-process.js.map +0 -1
- package/dist/question-timing.d.ts +0 -46
- package/dist/question-timing.js +0 -48
- package/dist/question-timing.js.map +0 -1
- package/dist/readiness.d.ts +0 -153
- package/dist/readiness.js +0 -149
- package/dist/readiness.js.map +0 -1
- package/dist/release.d.ts +0 -31
- package/dist/release.js +0 -52
- package/dist/release.js.map +0 -1
- package/dist/send-attempts.d.ts +0 -26
- package/dist/send-attempts.js +0 -139
- package/dist/send-attempts.js.map +0 -1
- package/dist/send.d.ts +0 -115
- package/dist/send.js +0 -421
- package/dist/send.js.map +0 -1
- package/dist/session-activation.d.ts +0 -13
- package/dist/session-activation.js +0 -64
- package/dist/session-activation.js.map +0 -1
- package/dist/session-attendant-probe.d.ts +0 -85
- package/dist/session-attendant-probe.js +0 -173
- package/dist/session-attendant-probe.js.map +0 -1
- package/dist/session-attendant-state.d.ts +0 -70
- package/dist/session-attendant-state.js +0 -256
- package/dist/session-attendant-state.js.map +0 -1
- package/dist/session-attendant.d.ts +0 -143
- package/dist/session-attendant.js +0 -520
- package/dist/session-attendant.js.map +0 -1
- package/dist/session-delivery.d.ts +0 -249
- package/dist/session-delivery.js +0 -576
- package/dist/session-delivery.js.map +0 -1
- package/dist/session-handoff.d.ts +0 -98
- package/dist/session-handoff.js +0 -118
- package/dist/session-handoff.js.map +0 -1
- package/dist/session-input-wakes.d.ts +0 -78
- package/dist/session-input-wakes.js +0 -239
- package/dist/session-input-wakes.js.map +0 -1
- package/dist/session-inputs.d.ts +0 -57
- package/dist/session-inputs.js +0 -434
- package/dist/session-inputs.js.map +0 -1
- package/dist/session-labels.d.ts +0 -56
- package/dist/session-labels.js +0 -396
- package/dist/session-labels.js.map +0 -1
- package/dist/session-message-handoff.d.ts +0 -39
- package/dist/session-message-handoff.js +0 -107
- package/dist/session-message-handoff.js.map +0 -1
- package/dist/setup-destinations.d.ts +0 -23
- package/dist/setup-destinations.js +0 -44
- package/dist/setup-destinations.js.map +0 -1
- package/dist/skill-integrity.d.ts +0 -54
- package/dist/skill-integrity.js +0 -164
- package/dist/skill-integrity.js.map +0 -1
- package/dist/skill-source/manifest.json +0 -40
- package/dist/skill-source/notifai/SKILL.md +0 -350
- package/dist/skill-source/notifai/references/diagnostics.md +0 -36
- package/dist/skill-source/notifai/references/harness-setup.md +0 -384
- package/dist/skill-source/notifai/references/native-questions.md +0 -51
- package/dist/skill-source/notifai/references/notes-and-edits.md +0 -54
- package/dist/skill-source/notifai/references/send-details.md +0 -14
- package/dist/skill-source/notifai/references/updates.md +0 -116
- package/dist/skill-source/notifai/references/writing-examples.md +0 -56
- package/dist/sound-ref.d.ts +0 -23
- package/dist/sound-ref.js +0 -28
- package/dist/sound-ref.js.map +0 -1
- package/dist/ui/banner.d.ts +0 -22
- package/dist/ui/banner.js +0 -87
- package/dist/ui/banner.js.map +0 -1
- package/dist/ui/config-view.d.ts +0 -30
- package/dist/ui/config-view.js +0 -108
- package/dist/ui/config-view.js.map +0 -1
- package/dist/ui/help.d.ts +0 -44
- package/dist/ui/help.js +0 -107
- package/dist/ui/help.js.map +0 -1
- package/dist/ui/theme.d.ts +0 -90
- package/dist/ui/theme.js +0 -244
- package/dist/ui/theme.js.map +0 -1
- package/dist/update-handoff.d.ts +0 -29
- package/dist/update-handoff.js +0 -69
- package/dist/update-handoff.js.map +0 -1
- package/dist/url-policy.d.ts +0 -85
- package/dist/url-policy.js +0 -369
- package/dist/url-policy.js.map +0 -1
- package/dist/version.d.ts +0 -40
- package/dist/version.js +0 -132
- package/dist/version.js.map +0 -1
- package/dist/wake-support.d.ts +0 -40
- package/dist/wake-support.js +0 -95
- package/dist/wake-support.js.map +0 -1
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { assessReadiness } from './commands-doctor.js';
|
|
2
|
-
import { EXIT, updateCliCommand } from './commands-core.js';
|
|
3
|
-
import { resolveActiveHarness } from './commands-harness-context.js';
|
|
4
|
-
import { inspectCliInstallations } from './cli-bin.js';
|
|
5
|
-
import { newerPublishedCli, publishedCliDistTags } from './cli-release.js';
|
|
6
|
-
import { packageVersion } from './release.js';
|
|
7
|
-
import { shippedSkillBundle } from './skill-integrity.js';
|
|
8
|
-
import { isSemVer } from './version.js';
|
|
9
|
-
import { installedChangelog, releaseNotesUrl, updateSessionEffects } from './update-handoff.js';
|
|
10
|
-
import path from 'node:path';
|
|
11
|
-
import { activeQuestionRouteProblems, CODEX_STALE_STOP_DEFINITION_PROBLEM } from './commands-hook-diagnostics.js';
|
|
12
|
-
import { findInstallations } from './install-hooks.js';
|
|
13
|
-
import { pendingList, readSessionState } from './hook-session-state.js';
|
|
14
|
-
import { localIntegrationAssessment } from './integration-health.js';
|
|
15
|
-
import { codexToolHookReady, CODEX_TOOL_HOOK_RECOVERY } from './codex-tool-messages.js';
|
|
16
|
-
/** Read-only update plan; integration changes belong to explicit resume. */
|
|
17
|
-
export async function cliUpdateCheckCommand(deps, flags) {
|
|
18
|
-
if (flags.from !== undefined && !isSemVer(flags.from)) {
|
|
19
|
-
deps.io.err('--from must be a semantic version');
|
|
20
|
-
return EXIT.usage;
|
|
21
|
-
}
|
|
22
|
-
const version = packageVersion();
|
|
23
|
-
const installation = inspectCliInstallations(deps.env, deps.hookPlatform ?? process.platform);
|
|
24
|
-
const tags = await publishedCliDistTags(deps.fetchImpl);
|
|
25
|
-
const current = installation.effective?.version ?? version;
|
|
26
|
-
const newer = tags === null || current === null ? null : newerPublishedCli(current, tags);
|
|
27
|
-
const available = tags === null || current === null ? null : newer !== null;
|
|
28
|
-
const readiness = await assessReadiness(deps, { json: true });
|
|
29
|
-
const active = resolveActiveHarness(deps.env, deps.cwd, (deps.now ?? Date.now)());
|
|
30
|
-
const owner = active.contested.length === 0 ? active.active : null;
|
|
31
|
-
const installations = findInstallations(deps.env, deps.hookAdapterHome, deps.hookPlatform);
|
|
32
|
-
const routeProblems = owner === null ? [] : activeQuestionRouteProblems(deps, owner, installations);
|
|
33
|
-
const restartReason = routeProblems.includes(CODEX_STALE_STOP_DEFINITION_PROBLEM)
|
|
34
|
-
? CODEX_STALE_STOP_DEFINITION_PROBLEM : undefined;
|
|
35
|
-
const sessionState = owner?.sessionId === undefined ? null : readSessionState(owner.sessionId, deps.env);
|
|
36
|
-
const toolNotesVerified = owner?.harness === 'codex' && owner.sessionId !== undefined
|
|
37
|
-
? codexToolHookReady(deps, owner.sessionId) : null;
|
|
38
|
-
const bundle = shippedSkillBundle(version ?? undefined);
|
|
39
|
-
const installedSkill = readiness.states.find(state => state.id === 'skill');
|
|
40
|
-
if (installedSkill !== undefined && typeof installedSkill.technical === 'object' && installedSkill.technical !== null &&
|
|
41
|
-
'resolution' in installedSkill.technical && installedSkill.technical.resolution === 'installed-skill-content-mismatch') {
|
|
42
|
-
installedSkill.remedy = { by: 'cli', summary: 'refresh the existing skill without unrelated setup', command: 'notifai update --refresh-skill --json' };
|
|
43
|
-
}
|
|
44
|
-
const report = {
|
|
45
|
-
ok: true,
|
|
46
|
-
read_only: true,
|
|
47
|
-
running_version: version,
|
|
48
|
-
installed_version: installation.effective?.version ?? null,
|
|
49
|
-
latest_version: tags?.latest ?? null,
|
|
50
|
-
beta_version: tags?.beta ?? null,
|
|
51
|
-
update_available: available,
|
|
52
|
-
available_version: newer,
|
|
53
|
-
update_command: updateCliCommand(deps),
|
|
54
|
-
release_notes_url: releaseNotesUrl(newer ?? tags?.latest ?? null),
|
|
55
|
-
changelog: installedChangelog(version, flags.from),
|
|
56
|
-
local_integration: localIntegrationAssessment(deps).faults,
|
|
57
|
-
tool_boundary_notes: owner?.harness === 'codex' && owner.sessionId !== undefined
|
|
58
|
-
? { verified: toolNotesVerified,
|
|
59
|
-
policy: 'Busy delivery requires an observed root tool callback in the current turn. Installed files, trusted definitions, historical observations and queue acceptance do not prove it.',
|
|
60
|
-
recovery: toolNotesVerified ? null : CODEX_TOOL_HOOK_RECOVERY }
|
|
61
|
-
: null,
|
|
62
|
-
guidance: bundle.ok ? {
|
|
63
|
-
verified: true,
|
|
64
|
-
skill_path: path.join(bundle.bundle.skillRoot, 'SKILL.md'),
|
|
65
|
-
update_reference_path: path.join(bundle.bundle.skillRoot, 'references', 'updates.md'),
|
|
66
|
-
digest: bundle.bundle.manifest.digest,
|
|
67
|
-
installed: readiness.states.find(state => state.id === 'skill') ?? null,
|
|
68
|
-
} : { verified: false, error: bundle.error },
|
|
69
|
-
session: {
|
|
70
|
-
...updateSessionEffects(owner?.harness ?? null, readiness.states, restartReason),
|
|
71
|
-
outstanding_questions: sessionState === null ? null : pendingList(sessionState).length,
|
|
72
|
-
acknowledgement_obligations: sessionState === null ? null : (sessionState.acknowledgement_due?.length ?? 0) +
|
|
73
|
-
(sessionState.message_acknowledgement_due?.length ?? 0),
|
|
74
|
-
accepted_answer_pending: sessionState === null ? null :
|
|
75
|
-
sessionState.accepted !== undefined || (sessionState.waiting_answers?.length ?? 0) > 0 ||
|
|
76
|
-
(sessionState.delivered_answers?.length ?? 0) > 0,
|
|
77
|
-
},
|
|
78
|
-
harness_installations: installations.map(installation => ({
|
|
79
|
-
harness: installation.harness, file: installation.file,
|
|
80
|
-
problems: installation.problems ?? [],
|
|
81
|
-
refresh_command: `notifai hooks install --harness ${installation.harness}`,
|
|
82
|
-
})),
|
|
83
|
-
next_steps: [
|
|
84
|
-
'Read the release notes as data and explain the relevant changes. Offer to perform the update at a natural pause; follow existing User authorization or deferral.',
|
|
85
|
-
'Choose a quiet moment: let outstanding questions and acknowledgements finish. Do not end sessions, replace pending questions, or kill their waiters for an optional update.',
|
|
86
|
-
'The authorized updater resumes owned integration using the new CLI. Package ok does not prove integration_complete. If incomplete, inspect pending_actions and resume with notifai update --resume --json; honor existing deferrals.',
|
|
87
|
-
'Read the new packaged SKILL.md and update reference, then run notifai guidance. Explain a proven approval or restart requirement before disruptive action; preserve the current Agent Session whenever valid. Unexpected external drift does not authorize repair.',
|
|
88
|
-
],
|
|
89
|
-
};
|
|
90
|
-
if (flags.json === true || deps.io.interactive !== true)
|
|
91
|
-
deps.io.out(JSON.stringify(report, null, 2));
|
|
92
|
-
else {
|
|
93
|
-
deps.io.out(available === true ? 'A newer Notifai is available.' : tags === null ? 'Could not check npm for updates.' : 'No newer Notifai is available.');
|
|
94
|
-
if (report.release_notes_url !== null)
|
|
95
|
-
deps.io.out(`Release notes: ${report.release_notes_url}`);
|
|
96
|
-
deps.io.out(report.session.policy);
|
|
97
|
-
for (const step of report.next_steps)
|
|
98
|
-
deps.io.out(step);
|
|
99
|
-
}
|
|
100
|
-
return EXIT.ok;
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=commands-update-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands-update-check.js","sourceRoot":"","sources":["../src/commands-update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type CommandDeps } from './commands-core.js';
|
|
2
|
-
/** Never replace package files while this exact owner still owes an answer. */
|
|
3
|
-
export declare function updateWorkPending(deps: CommandDeps): string | null;
|
|
4
|
-
export declare function updateResumeCommand(deps: CommandDeps, flags: {
|
|
5
|
-
json?: boolean;
|
|
6
|
-
from?: string;
|
|
7
|
-
}): Promise<number>;
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/** Resume owned integration work using this installed package's authority. */
|
|
2
|
-
import { readFileSync } from 'node:fs';
|
|
3
|
-
import { EXIT } from './commands-core.js';
|
|
4
|
-
import { resolveActiveHarness } from './commands-harness-context.js';
|
|
5
|
-
import { activeQuestionRouteProblems } from './commands-hook-diagnostics.js';
|
|
6
|
-
import { hooksInstallCommand } from './commands-hook-install.js';
|
|
7
|
-
import { listScopedNotifaiSkills } from './commands-skill.js';
|
|
8
|
-
import { updateSkillCommand } from './commands-update-skill.js';
|
|
9
|
-
import { hookAdapterTargetsArtifact, inspectHookAdapter, installHookAdapter, isNpxAdapterTarget } from './hook-adapter.js';
|
|
10
|
-
import { pendingList, readSessionState } from './hook-session-state.js';
|
|
11
|
-
import { installationFaults, localIntegrationAssessment } from './integration-health.js';
|
|
12
|
-
import { packageVersion } from './release.js';
|
|
13
|
-
import { installedChangelog } from './update-handoff.js';
|
|
14
|
-
import { isSemVer } from './version.js';
|
|
15
|
-
import { isHookInstallableHarness, questionRoutingCapability } from './harnesses.js';
|
|
16
|
-
import { sameLocalPath } from './local-path.js';
|
|
17
|
-
import { codexToolHookReady, CODEX_TOOL_HOOK_RECOVERY } from './codex-tool-messages.js';
|
|
18
|
-
import { activateInstalledAttendants } from './attendant-update.js';
|
|
19
|
-
/** Never replace package files while this exact owner still owes an answer. */
|
|
20
|
-
export function updateWorkPending(deps) {
|
|
21
|
-
const active = resolveActiveHarness(deps.env, deps.cwd, (deps.now ?? Date.now)());
|
|
22
|
-
if (active.contested.length > 0)
|
|
23
|
-
return 'Several Agent Sessions could own this invocation; resume from an unambiguous Agent Session.';
|
|
24
|
-
const owner = active.active;
|
|
25
|
-
if (owner?.sessionId === undefined)
|
|
26
|
-
return null;
|
|
27
|
-
const state = readSessionState(owner.sessionId, deps.env);
|
|
28
|
-
return pendingList(state).length > 0 || (state.acknowledgement_due?.length ?? 0) > 0 ||
|
|
29
|
-
(state.message_acknowledgement_due?.length ?? 0) > 0 ||
|
|
30
|
-
state.accepted !== undefined || (state.delivered_answers?.length ?? 0) > 0
|
|
31
|
-
? 'Finish outstanding questions, answers and Agent Acknowledgements first; preserve their IDs and waiters.' : null;
|
|
32
|
-
}
|
|
33
|
-
export async function updateResumeCommand(deps, flags) {
|
|
34
|
-
if (flags.from !== undefined && !isSemVer(flags.from)) {
|
|
35
|
-
deps.io.err('--from must be a semantic version');
|
|
36
|
-
return EXIT.usage;
|
|
37
|
-
}
|
|
38
|
-
const pending = [];
|
|
39
|
-
const changed = [];
|
|
40
|
-
let attendants = [];
|
|
41
|
-
const report = (filesComplete) => {
|
|
42
|
-
const complete = filesComplete && pending.length === 0;
|
|
43
|
-
const result = { ok: filesComplete, read_only: false, running_version: packageVersion(),
|
|
44
|
-
files_complete: filesComplete, migration_complete: complete, pending_actions: pending, changed, attendants,
|
|
45
|
-
resume_command: 'notifai update --resume --json', changelog: installedChangelog(packageVersion(), flags.from),
|
|
46
|
-
next_step: 'Read this package’s SKILL.md and references/updates.md, then run notifai guidance in the active Agent Session. Preserve outstanding work and existing User deferrals.' };
|
|
47
|
-
if (flags.json === true || deps.io.interactive !== true)
|
|
48
|
-
deps.io.out(JSON.stringify(result, null, 2));
|
|
49
|
-
else
|
|
50
|
-
deps.io.out(complete ? 'Update integration is verified. Reread changed agent guidance; no restart is implied.'
|
|
51
|
-
: `Update integration remains pending: ${pending.join('; ')}. Resume with notifai update --resume --json.`);
|
|
52
|
-
return filesComplete ? EXIT.ok : EXIT.failed;
|
|
53
|
-
};
|
|
54
|
-
const quietIo = { ...deps.io, confirm: deps.io.confirm.bind(deps.io), openUrl: deps.io.openUrl.bind(deps.io),
|
|
55
|
-
out: (_line) => { }, err: (line) => pending.push(line) };
|
|
56
|
-
const repairDeps = { ...deps, io: quietIo };
|
|
57
|
-
try {
|
|
58
|
-
let assessment = localIntegrationAssessment(deps);
|
|
59
|
-
const effective = assessment.cli.effective;
|
|
60
|
-
// A command invoked through another prefix has no authority to retarget
|
|
61
|
-
// shared integration or replace its guidance merely because it can run.
|
|
62
|
-
if (effective?.artifact_path === null || effective === null ||
|
|
63
|
-
!hookAdapterTargetsArtifact({ execPath: process.execPath, scriptPath: assessment.cli.current.artifact_path }, effective.artifact_path)) {
|
|
64
|
-
pending.push('Resolve the effective installation before resuming integration; run notifai doctor --json.');
|
|
65
|
-
return report(false);
|
|
66
|
-
}
|
|
67
|
-
const active = resolveActiveHarness(deps.env, deps.cwd, (deps.now ?? Date.now)());
|
|
68
|
-
const owner = active.contested.length === 0 ? active.active : null;
|
|
69
|
-
const waiting = updateWorkPending(deps);
|
|
70
|
-
if (waiting !== null) {
|
|
71
|
-
pending.push(waiting);
|
|
72
|
-
return report(false);
|
|
73
|
-
}
|
|
74
|
-
const inventory = await listScopedNotifaiSkills(deps);
|
|
75
|
-
if (inventory.errors.length > 0 || inventory.installed.length > 1) {
|
|
76
|
-
pending.push('Resolve unreadable or duplicate skill scopes before integration repair; no scope was selected.');
|
|
77
|
-
return report(false);
|
|
78
|
-
}
|
|
79
|
-
if (assessment.installations.length > 0) {
|
|
80
|
-
const adapter = inspectHookAdapter(deps.hookAdapterHome, deps.hookPlatform);
|
|
81
|
-
if (adapter.problems.length > 0 || adapter.target === null || isNpxAdapterTarget(adapter.target) ||
|
|
82
|
-
!hookAdapterTargetsArtifact(adapter.target, effective.artifact_path) ||
|
|
83
|
-
!sameLocalPath(adapter.target.execPath, process.execPath, deps.hookPlatform ?? process.platform)) {
|
|
84
|
-
if (installHookAdapter({ execPath: process.execPath, scriptPath: effective.artifact_path }, deps.hookAdapterHome, deps.hookPlatform, deps.env).changed)
|
|
85
|
-
changed.push('hook-adapter');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (inventory.installed.length === 1) {
|
|
89
|
-
let skillReport = {};
|
|
90
|
-
const skillResult = await updateSkillCommand({ ...repairDeps, io: { ...quietIo,
|
|
91
|
-
out: (line) => { try {
|
|
92
|
-
skillReport = JSON.parse(line);
|
|
93
|
-
}
|
|
94
|
-
catch { /* local status only */ } },
|
|
95
|
-
} }, { json: true });
|
|
96
|
-
if (skillResult !== EXIT.ok) {
|
|
97
|
-
pending.push(skillReport.error ?? 'Skill refresh failed; resume through the native installer in the existing scope.');
|
|
98
|
-
return report(false);
|
|
99
|
-
}
|
|
100
|
-
if (skillReport.changed === true)
|
|
101
|
-
changed.push('skill');
|
|
102
|
-
}
|
|
103
|
-
for (const { installation, env } of assessment.installations) {
|
|
104
|
-
if (installationFaults(installation, deps.hookPlatform).length === 0)
|
|
105
|
-
continue;
|
|
106
|
-
const before = readFileSync(installation.file, 'utf8');
|
|
107
|
-
if (hooksInstallCommand({ ...repairDeps, env }, { harness: installation.harness, narrate: false }) !== EXIT.ok) {
|
|
108
|
-
pending.push(`Could not finish ${installation.harness} hook migration.`);
|
|
109
|
-
return report(false);
|
|
110
|
-
}
|
|
111
|
-
if (readFileSync(installation.file, 'utf8') !== before)
|
|
112
|
-
changed.push(`${installation.harness}-hooks`);
|
|
113
|
-
}
|
|
114
|
-
assessment = localIntegrationAssessment(deps);
|
|
115
|
-
const repairFaults = assessment.faults.filter(fault => fault.code !== 'native-approval-pending');
|
|
116
|
-
pending.push(...assessment.faults.map(fault => `${fault.code}: ${fault.remedy}`));
|
|
117
|
-
if (owner !== null) {
|
|
118
|
-
if (isHookInstallableHarness(owner.harness) && questionRoutingCapability(owner.harness, deps.hookPlatform).stopContinuation !== 'unsupported') {
|
|
119
|
-
pending.push(...activeQuestionRouteProblems(deps, owner, assessment.installations.filter(entry => entry.env === deps.env).map(entry => entry.installation)));
|
|
120
|
-
}
|
|
121
|
-
if (changed.includes(`${owner.harness}-hooks`)) {
|
|
122
|
-
pending.push('Changed hooks need exact-session activation verification; preserve the current Agent Session until a specific approval or fresh-session requirement is proven.');
|
|
123
|
-
}
|
|
124
|
-
if (owner.harness === 'codex' && owner.sessionId !== undefined && !codexToolHookReady(deps, owner.sessionId)) {
|
|
125
|
-
pending.push(CODEX_TOOL_HOOK_RECOVERY);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (assessment.faults.length === 0) {
|
|
129
|
-
attendants = await activateInstalledAttendants(deps, effective.artifact_path);
|
|
130
|
-
if (attendants.some(entry => entry.state === 'activated'))
|
|
131
|
-
changed.push('resident-attendants');
|
|
132
|
-
const unresolved = attendants.filter(entry => entry.state === 'pending' || !entry.native_activity);
|
|
133
|
-
if (unresolved.length > 0)
|
|
134
|
-
pending.push(`${unresolved.length} existing Codex session(s) still need native activity or resident activation verification; keep their Agent Sessions and pending inputs intact.`);
|
|
135
|
-
}
|
|
136
|
-
return report(repairFaults.length === 0);
|
|
137
|
-
}
|
|
138
|
-
catch {
|
|
139
|
-
pending.push('Integration could not be verified; run notifai doctor --json and resume after the diagnosed gap is resolved.');
|
|
140
|
-
return report(false);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=commands-update-resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands-update-resume.js","sourceRoot":"","sources":["../src/commands-update-resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { EXIT } from './commands-core.js';
|
|
2
|
-
import { installedSkillMatchesPackage, listScopedNotifaiSkills, SKILLS_SOURCE } from './commands-skill.js';
|
|
3
|
-
/** Refresh one existing scope through the native installer, without setup. */
|
|
4
|
-
export async function updateSkillCommand(deps, flags) {
|
|
5
|
-
const fail = (error) => {
|
|
6
|
-
if (flags.json === true || deps.io.interactive !== true)
|
|
7
|
-
deps.io.out(JSON.stringify({ ok: false, error }));
|
|
8
|
-
else
|
|
9
|
-
deps.io.err(error);
|
|
10
|
-
return EXIT.failed;
|
|
11
|
-
};
|
|
12
|
-
const inventory = await listScopedNotifaiSkills(deps);
|
|
13
|
-
if (inventory.errors.length > 0 || inventory.installed.length !== 1) {
|
|
14
|
-
return fail('Skill refresh needs exactly one readable existing installation. Resolve missing or duplicate scope through setup first.');
|
|
15
|
-
}
|
|
16
|
-
const skill = inventory.installed[0];
|
|
17
|
-
if (deps.nativeSkills === undefined || SKILLS_SOURCE === null)
|
|
18
|
-
return fail('The packaged skill installer is unavailable.');
|
|
19
|
-
const changed = !installedSkillMatchesPackage(skill);
|
|
20
|
-
if (changed) {
|
|
21
|
-
const operation = await deps.nativeSkills.add({ source: SKILLS_SOURCE, skill: 'notifai', scope: skill.scope,
|
|
22
|
-
cwd: deps.cwd, env: deps.env, diagnosticsToStderr: true }).catch((error) => ({ code: 1, error: String(error) }));
|
|
23
|
-
if ((typeof operation === 'number' ? operation : operation.code) !== 0) {
|
|
24
|
-
return fail(typeof operation === 'number' ? 'The native skill installer failed.' : operation.error);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const after = await listScopedNotifaiSkills(deps);
|
|
28
|
-
if (after.errors.length > 0 || after.installed.length !== 1 || after.installed[0]?.scope !== skill.scope ||
|
|
29
|
-
!installedSkillMatchesPackage(after.installed[0]))
|
|
30
|
-
return fail('The refreshed skill could not be verified in its original scope.');
|
|
31
|
-
const report = { ok: true, changed, scope: skill.scope, path: after.installed[0].path,
|
|
32
|
-
next_step: 'Read the refreshed SKILL.md and references/updates.md, then run notifai guidance in this Agent Session.' };
|
|
33
|
-
deps.io.out(flags.json === true || deps.io.interactive !== true ? JSON.stringify(report, null, 2) : report.next_step);
|
|
34
|
-
return EXIT.ok;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=commands-update-skill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands-update-skill.js","sourceRoot":"","sources":["../src/commands-update-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type CommandDeps } from './commands-core.js';
|
|
2
|
-
export interface CliUpdateFlags {
|
|
3
|
-
json?: boolean;
|
|
4
|
-
channel?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Update the npm-global installation the shell actually resolves, then point
|
|
8
|
-
* the stable hook adapter at that same artifact. The npm executable may own a
|
|
9
|
-
* different global prefix; --prefix makes that ambient choice irrelevant.
|
|
10
|
-
*/
|
|
11
|
-
export declare function cliUpdateCommand(deps: CommandDeps, requested: CliUpdateFlags): number;
|
package/dist/commands-update.js
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { inspectCliInstallations, withoutNpxLauncherPath, } from './cli-bin.js';
|
|
5
|
-
import { EXIT } from './commands-core.js';
|
|
6
|
-
import { hookAdapterPath, installHookAdapter, inspectHookAdapter, isNpxAdapterTarget, } from './hook-adapter.js';
|
|
7
|
-
import { packageVersion } from './release.js';
|
|
8
|
-
import { CLI_PACKAGE_NAME, cliPackageSpec, cliUpdateChannel, cliUpdateRecoveryCommand, } from './cli-contract.js';
|
|
9
|
-
import { cliReleaseTarget, parseCliDistTags } from './cli-release.js';
|
|
10
|
-
import { pathContainsDirectory } from './local-path.js';
|
|
11
|
-
import { npmInvocation } from './npm-invocation.js';
|
|
12
|
-
import { compareReleasePrecedence } from './version.js';
|
|
13
|
-
import { updateWorkPending } from './commands-update-resume.js';
|
|
14
|
-
function runningArtifact(deps) {
|
|
15
|
-
const target = deps.hookInstallTarget;
|
|
16
|
-
if (target !== undefined && !isNpxAdapterTarget(target))
|
|
17
|
-
return target.scriptPath;
|
|
18
|
-
return process.argv[1];
|
|
19
|
-
}
|
|
20
|
-
function npmRun(deps, args) {
|
|
21
|
-
const invocation = npmInvocation(args, {
|
|
22
|
-
platform: deps.hookPlatform ?? process.platform,
|
|
23
|
-
env: deps.env,
|
|
24
|
-
nodeExecutable: process.execPath,
|
|
25
|
-
});
|
|
26
|
-
return spawnSync(invocation.file, invocation.args, {
|
|
27
|
-
...invocation.options,
|
|
28
|
-
encoding: 'utf8',
|
|
29
|
-
env: deps.env,
|
|
30
|
-
cwd: deps.cwd,
|
|
31
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
32
|
-
timeout: 120_000,
|
|
33
|
-
killSignal: 'SIGKILL',
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
function inspection(deps) {
|
|
37
|
-
const artifact = runningArtifact(deps);
|
|
38
|
-
return inspectCliInstallations(deps.env, deps.hookPlatform ?? process.platform, {
|
|
39
|
-
...(artifact === undefined ? {} : { runningArtifactPath: artifact }),
|
|
40
|
-
currentVersion: deps.runningVersion === undefined ? packageVersion() : deps.runningVersion,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function prefixIsAddressable(deps, prefix) {
|
|
44
|
-
const platform = deps.hookPlatform ?? process.platform;
|
|
45
|
-
const commandDirectory = platform === 'win32' ? prefix : path.join(prefix, 'bin');
|
|
46
|
-
return pathContainsDirectory(deps.env, commandDirectory, platform);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Read the dist-tags from the registry npm itself installs from, so a custom
|
|
50
|
-
* registry configuration answers for both the read and the install.
|
|
51
|
-
*/
|
|
52
|
-
function publishedDistTags(deps) {
|
|
53
|
-
const view = npmRun(deps, ['view', CLI_PACKAGE_NAME, 'dist-tags', '--json']);
|
|
54
|
-
if (view.status !== 0 || typeof view.stdout !== 'string')
|
|
55
|
-
return null;
|
|
56
|
-
try {
|
|
57
|
-
return parseCliDistTags(JSON.parse(view.stdout));
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function updateRetryCommand(flags) {
|
|
64
|
-
return flags.explicitStableSwitch
|
|
65
|
-
? `npx --yes ${cliPackageSpec('latest')} update --channel stable`
|
|
66
|
-
: cliUpdateRecoveryCommand(flags.channel);
|
|
67
|
-
}
|
|
68
|
-
function failed(deps, flags, failure, before, packageManagerPrefix) {
|
|
69
|
-
const { code, message, recoveryCommand: explicitRecovery, target } = typeof failure === 'string' ? { code: failure } : failure;
|
|
70
|
-
const recoveryMessage = message ?? (code === 'update_destination_unknown'
|
|
71
|
-
? 'Notifai could not identify an npm-global installation to update. Use the package manager that installed the resolved command to update it; the diagnostic below can inspect the installation.'
|
|
72
|
-
: code === 'package_manager_prefix_not_on_path'
|
|
73
|
-
? 'The npm global command directory is not on PATH. Add the bin directory for the reported package-manager prefix to PATH (the prefix itself on Windows), then inspect the installation with the diagnostic below before retrying the update.'
|
|
74
|
-
: null);
|
|
75
|
-
const recoveryCommand = explicitRecovery ?? (recoveryMessage === null
|
|
76
|
-
? updateRetryCommand(flags)
|
|
77
|
-
: `npx --yes ${cliPackageSpec(flags.channel === 'beta' ? 'beta' : 'latest')} doctor --json`);
|
|
78
|
-
if (flags.json === true) {
|
|
79
|
-
deps.io.out(JSON.stringify({
|
|
80
|
-
ok: false,
|
|
81
|
-
code,
|
|
82
|
-
recovery_command: recoveryCommand,
|
|
83
|
-
...(recoveryMessage === null ? {} : { message: recoveryMessage }),
|
|
84
|
-
...(target === undefined ? {} : { target }),
|
|
85
|
-
package_manager_prefix: packageManagerPrefix,
|
|
86
|
-
before,
|
|
87
|
-
after: inspection(deps),
|
|
88
|
-
}, null, 2));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
deps.io.err(recoveryMessage ?? 'Notifai could not finish updating. Retry with:');
|
|
92
|
-
deps.io.err(recoveryCommand);
|
|
93
|
-
}
|
|
94
|
-
return EXIT.failed;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Update the npm-global installation the shell actually resolves, then point
|
|
98
|
-
* the stable hook adapter at that same artifact. The npm executable may own a
|
|
99
|
-
* different global prefix; --prefix makes that ambient choice irrelevant.
|
|
100
|
-
*/
|
|
101
|
-
export function cliUpdateCommand(deps, requested) {
|
|
102
|
-
const requestedChannel = requested.channel ?? 'stable';
|
|
103
|
-
if (requestedChannel !== 'stable' && requestedChannel !== 'beta') {
|
|
104
|
-
deps.io.err('--channel must be stable or beta');
|
|
105
|
-
return EXIT.failed;
|
|
106
|
-
}
|
|
107
|
-
const channel = requestedChannel;
|
|
108
|
-
// Carry the caller's effective PATH into npm and the new artifact's handoff,
|
|
109
|
-
// otherwise each child would diagnose the temporary npx runner as installed.
|
|
110
|
-
deps = { ...deps, env: withoutNpxLauncherPath(deps.env, deps.hookPlatform ?? process.platform, runningArtifact(deps) ?? 'notifai') };
|
|
111
|
-
const before = inspection(deps);
|
|
112
|
-
// A beta channel, or a beta installation, installs one exact resolved
|
|
113
|
-
// release. Only an explicit stable selection may move a beta installation
|
|
114
|
-
// backwards; plain update still protects it. A stable installation updating
|
|
115
|
-
// on the stable channel keeps plain `latest`.
|
|
116
|
-
const installed = before.effective?.version ?? before.current.version;
|
|
117
|
-
const explicitlySwitchingToStable = requested.channel === 'stable' && cliUpdateChannel(installed) === 'beta';
|
|
118
|
-
const flags = {
|
|
119
|
-
...requested,
|
|
120
|
-
channel,
|
|
121
|
-
json: requested.json === true || deps.io.interactive !== true,
|
|
122
|
-
explicitStableSwitch: explicitlySwitchingToStable,
|
|
123
|
-
};
|
|
124
|
-
const waiting = updateWorkPending(deps);
|
|
125
|
-
if (waiting !== null)
|
|
126
|
-
return failed(deps, flags, { code: 'outstanding_session_work', message: waiting,
|
|
127
|
-
recoveryCommand: 'notifai update --check --json' }, before, null);
|
|
128
|
-
let target = null;
|
|
129
|
-
if (channel === 'beta' || cliUpdateChannel(installed) === 'beta') {
|
|
130
|
-
const tags = publishedDistTags(deps);
|
|
131
|
-
if (tags === null) {
|
|
132
|
-
return failed(deps, flags, {
|
|
133
|
-
code: 'release_versions_unavailable',
|
|
134
|
-
message: 'Notifai could not read the published release versions, so nothing was installed. Check the connection to the npm registry, then retry with:',
|
|
135
|
-
recoveryCommand: updateRetryCommand(flags),
|
|
136
|
-
}, before, null);
|
|
137
|
-
}
|
|
138
|
-
target = cliReleaseTarget(tags, channel);
|
|
139
|
-
if (installed !== null && compareReleasePrecedence(target.version, installed) === 'before' &&
|
|
140
|
-
!explicitlySwitchingToStable) {
|
|
141
|
-
const betaTarget = cliReleaseTarget(tags, 'beta');
|
|
142
|
-
const betaMovesForward = channel === 'stable' &&
|
|
143
|
-
compareReleasePrecedence(betaTarget.version, installed) !== 'before';
|
|
144
|
-
return failed(deps, flags, betaMovesForward
|
|
145
|
-
? {
|
|
146
|
-
code: 'update_would_downgrade',
|
|
147
|
-
message: `The installed Notifai ${installed} is newer than the stable release ${target.version}, so nothing was installed. Keep it current on the beta channel with:`,
|
|
148
|
-
recoveryCommand: cliUpdateRecoveryCommand('beta'),
|
|
149
|
-
target,
|
|
150
|
-
}
|
|
151
|
-
: {
|
|
152
|
-
code: 'update_would_downgrade',
|
|
153
|
-
message: `The installed Notifai ${installed} is newer than every published release, so nothing was installed. Inspect the installation with:`,
|
|
154
|
-
target,
|
|
155
|
-
}, before, null);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
const prefixResult = npmRun(deps, ['prefix', '--global']);
|
|
159
|
-
const packageManagerPrefix = prefixResult.status === 0 && typeof prefixResult.stdout === 'string' && prefixResult.stdout.trim() !== ''
|
|
160
|
-
? prefixResult.stdout.trim()
|
|
161
|
-
: null;
|
|
162
|
-
const pathCandidate = before.effective ?? before.entries[0] ?? null;
|
|
163
|
-
const targetPrefix = pathCandidate === null
|
|
164
|
-
? packageManagerPrefix
|
|
165
|
-
: pathCandidate.install_prefix;
|
|
166
|
-
if (targetPrefix === null) {
|
|
167
|
-
return failed(deps, flags, 'update_destination_unknown', before, packageManagerPrefix);
|
|
168
|
-
}
|
|
169
|
-
if (pathCandidate === null && !prefixIsAddressable(deps, targetPrefix)) {
|
|
170
|
-
return failed(deps, flags, 'package_manager_prefix_not_on_path', before, packageManagerPrefix);
|
|
171
|
-
}
|
|
172
|
-
const install = npmRun(deps, [
|
|
173
|
-
'install',
|
|
174
|
-
'--global',
|
|
175
|
-
'--prefix',
|
|
176
|
-
targetPrefix,
|
|
177
|
-
cliPackageSpec(target?.version ?? 'latest'),
|
|
178
|
-
]);
|
|
179
|
-
if (install.status !== 0) {
|
|
180
|
-
return failed(deps, flags, 'package_install_failed', before, packageManagerPrefix);
|
|
181
|
-
}
|
|
182
|
-
const after = inspection(deps);
|
|
183
|
-
const effective = after.effective;
|
|
184
|
-
if (effective === null ||
|
|
185
|
-
effective.artifact_path === null ||
|
|
186
|
-
effective.version === null ||
|
|
187
|
-
(before.effective !== null && effective.command_path !== before.effective.command_path)) {
|
|
188
|
-
return failed(deps, flags, 'effective_command_not_repaired', before, packageManagerPrefix);
|
|
189
|
-
}
|
|
190
|
-
if (target !== null && effective.version !== target.version) {
|
|
191
|
-
return failed(deps, flags, { code: 'effective_command_not_target', target }, before, packageManagerPrefix);
|
|
192
|
-
}
|
|
193
|
-
const minimumCurrent = before.current.version;
|
|
194
|
-
const currentComparison = minimumCurrent === null
|
|
195
|
-
? 'unparseable'
|
|
196
|
-
: compareReleasePrecedence(effective.version, minimumCurrent);
|
|
197
|
-
if (currentComparison === 'unparseable') {
|
|
198
|
-
return failed(deps, flags, 'effective_command_version_unknown', before, packageManagerPrefix);
|
|
199
|
-
}
|
|
200
|
-
// The exact-target check above already proved an intentional switch landed
|
|
201
|
-
// on the selected public release, even when this running beta is newer.
|
|
202
|
-
if (currentComparison === 'before' && !explicitlySwitchingToStable) {
|
|
203
|
-
return failed(deps, flags, 'effective_command_still_older', before, packageManagerPrefix);
|
|
204
|
-
}
|
|
205
|
-
// A package manifest can land before its dependencies or executable. Prove
|
|
206
|
-
// this artifact starts before making every trusted hook depend on it.
|
|
207
|
-
const probe = spawnSync(process.execPath, [effective.artifact_path, '--version'], {
|
|
208
|
-
encoding: 'utf8',
|
|
209
|
-
env: deps.env,
|
|
210
|
-
cwd: deps.cwd,
|
|
211
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
212
|
-
timeout: 10_000,
|
|
213
|
-
killSignal: 'SIGKILL',
|
|
214
|
-
});
|
|
215
|
-
if (probe.status !== 0 || probe.stdout?.trim() !== effective.version) {
|
|
216
|
-
return failed(deps, flags, 'effective_command_not_runnable', before, packageManagerPrefix);
|
|
217
|
-
}
|
|
218
|
-
let adapterRetargeted = false;
|
|
219
|
-
const adapter = hookAdapterPath(deps.hookAdapterHome);
|
|
220
|
-
if (existsSync(adapter)) {
|
|
221
|
-
try {
|
|
222
|
-
adapterRetargeted = installHookAdapter({ execPath: process.execPath, scriptPath: effective.artifact_path }, deps.hookAdapterHome, deps.hookPlatform ?? process.platform).changed;
|
|
223
|
-
}
|
|
224
|
-
catch {
|
|
225
|
-
return failed(deps, flags, 'hook_adapter_retarget_failed', before, packageManagerPrefix);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
// The old updater has already imported its modules. Only the newly installed
|
|
229
|
-
// artifact can describe the new release's guidance and harness requirements.
|
|
230
|
-
const previousVersion = before.effective?.version ?? before.current.version;
|
|
231
|
-
const handoffArgs = [effective.artifact_path, 'update', '--resume', '--json'];
|
|
232
|
-
if (previousVersion !== null)
|
|
233
|
-
handoffArgs.push('--from', previousVersion);
|
|
234
|
-
const handoffProbe = spawnSync(process.execPath, handoffArgs, {
|
|
235
|
-
encoding: 'utf8', env: deps.env, cwd: deps.cwd,
|
|
236
|
-
stdio: ['ignore', 'pipe', 'pipe'], timeout: 120_000, killSignal: 'SIGKILL',
|
|
237
|
-
});
|
|
238
|
-
let handoff = null;
|
|
239
|
-
try {
|
|
240
|
-
const value = JSON.parse(handoffProbe.stdout ?? '');
|
|
241
|
-
if (typeof value === 'object' && value !== null) {
|
|
242
|
-
const record = value;
|
|
243
|
-
// Preserve structured partial progress from the new executable too.
|
|
244
|
-
// A successful package probe alone cannot prove integration finished.
|
|
245
|
-
if (record.read_only === false && record.running_version === effective.version &&
|
|
246
|
-
typeof record.files_complete === 'boolean' && record.ok === record.files_complete &&
|
|
247
|
-
handoffProbe.status === (record.files_complete ? EXIT.ok : EXIT.failed) &&
|
|
248
|
-
typeof record.migration_complete === 'boolean' && Array.isArray(record.pending_actions) &&
|
|
249
|
-
record.pending_actions.every(action => typeof action === 'string') &&
|
|
250
|
-
record.migration_complete === (record.files_complete && record.pending_actions.length === 0)) {
|
|
251
|
-
handoff = record;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
catch {
|
|
256
|
-
// Package installation succeeded; failure to inspect session effects is
|
|
257
|
-
// explicit incomplete follow-up, never permission to restart blindly.
|
|
258
|
-
}
|
|
259
|
-
if (flags.json === true) {
|
|
260
|
-
const adapterInspection = existsSync(adapter)
|
|
261
|
-
? inspectHookAdapter(deps.hookAdapterHome, deps.hookPlatform ?? process.platform)
|
|
262
|
-
: null;
|
|
263
|
-
deps.io.out(JSON.stringify({
|
|
264
|
-
ok: true,
|
|
265
|
-
package_manager_prefix: packageManagerPrefix,
|
|
266
|
-
update_prefix: targetPrefix,
|
|
267
|
-
target: target ?? { version: null, dist_tag: 'latest' },
|
|
268
|
-
handoff,
|
|
269
|
-
integration_complete: handoff?.migration_complete === true,
|
|
270
|
-
follow_up_required: handoff?.migration_complete !== true,
|
|
271
|
-
guidance_reread_required: true,
|
|
272
|
-
handoff_error: handoff === null ? 'Run notifai update --resume --json with the updated CLI to finish integration; update --check --json is read-only diagnosis.' : null,
|
|
273
|
-
before,
|
|
274
|
-
after,
|
|
275
|
-
hook_adapter: adapterInspection === null
|
|
276
|
-
? null
|
|
277
|
-
: { path: adapterInspection.path, target: adapterInspection.target, retargeted: adapterRetargeted },
|
|
278
|
-
}, null, 2));
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
deps.io.out(handoff?.migration_complete === true ? 'The CLI and integration are verified. Read changed agent guidance.' : 'The package is installed; integration still needs follow-up. Run `notifai update --resume --json`.');
|
|
282
|
-
deps.io.out('Use `notifai update --check --json` for diagnosis; a restart is not automatic.');
|
|
283
|
-
}
|
|
284
|
-
return EXIT.ok;
|
|
285
|
-
}
|
|
286
|
-
//# sourceMappingURL=commands-update.js.map
|