@raidiant/notifai 11.7.1 → 12.0.0-beta.13
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 +57 -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
package/dist/cli-contract.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const CLI_PACKAGE_NAME = "@raidiant/notifai";
|
|
2
|
-
export declare const CLI_UPDATE_AVAILABLE = "A newer Notifai is available.";
|
|
3
|
-
export declare const SERVICE_UPDATE_IN_PROGRESS = "The service is being updated; try again later.";
|
|
4
|
-
export declare function cliPackageSpec(version: string): string;
|
|
5
|
-
export declare function cliDistTagsUrl(): string;
|
|
6
|
-
export type CliUpdateChannel = 'stable' | 'beta';
|
|
7
|
-
/** A prerelease installation belongs to the beta channel; everything else is stable. */
|
|
8
|
-
export declare function cliUpdateChannel(version: string | null): CliUpdateChannel;
|
|
9
|
-
/**
|
|
10
|
-
* Resolve the current published CLI independently of every installed
|
|
11
|
-
* `notifai` command. The fetched build owns the locally derived prefix repair,
|
|
12
|
-
* so this action neither invokes the stale PATH winner nor exposes local
|
|
13
|
-
* installation paths. A beta tester stays on the beta channel, which also
|
|
14
|
-
* delivers a stable release once it is the newer one.
|
|
15
|
-
*/
|
|
16
|
-
export declare function cliUpdateRecoveryCommand(channel?: CliUpdateChannel): string;
|
package/dist/cli-contract.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { isPrerelease } from './version.js';
|
|
2
|
-
export const CLI_PACKAGE_NAME = '@raidiant/notifai';
|
|
3
|
-
export const CLI_UPDATE_AVAILABLE = 'A newer Notifai is available.';
|
|
4
|
-
export const SERVICE_UPDATE_IN_PROGRESS = 'The service is being updated; try again later.';
|
|
5
|
-
export function cliPackageSpec(version) {
|
|
6
|
-
return `${CLI_PACKAGE_NAME}@${version}`;
|
|
7
|
-
}
|
|
8
|
-
export function cliDistTagsUrl() {
|
|
9
|
-
return `https://registry.npmjs.org/-/package/${CLI_PACKAGE_NAME}/dist-tags`;
|
|
10
|
-
}
|
|
11
|
-
/** A prerelease installation belongs to the beta channel; everything else is stable. */
|
|
12
|
-
export function cliUpdateChannel(version) {
|
|
13
|
-
return version !== null && isPrerelease(version) ? 'beta' : 'stable';
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Resolve the current published CLI independently of every installed
|
|
17
|
-
* `notifai` command. The fetched build owns the locally derived prefix repair,
|
|
18
|
-
* so this action neither invokes the stale PATH winner nor exposes local
|
|
19
|
-
* installation paths. A beta tester stays on the beta channel, which also
|
|
20
|
-
* delivers a stable release once it is the newer one.
|
|
21
|
-
*/
|
|
22
|
-
export function cliUpdateRecoveryCommand(channel = 'stable') {
|
|
23
|
-
return channel === 'beta'
|
|
24
|
-
? `npx --yes ${cliPackageSpec('beta')} update --channel beta`
|
|
25
|
-
: `npx --yes ${cliPackageSpec('latest')} update`;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=cli-contract.js.map
|
package/dist/cli-contract.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-contract.js","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,+BAA+B,CAAA;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,gDAAgD,CAAA;AAE1F,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,GAAG,gBAAgB,IAAI,OAAO,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,wCAAwC,gBAAgB,YAAY,CAAA;AAC7E,CAAC;AAID,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,OAAO,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAA4B,QAAQ;IAC3E,OAAO,OAAO,KAAK,MAAM;QACvB,CAAC,CAAC,aAAa,cAAc,CAAC,MAAM,CAAC,wBAAwB;QAC7D,CAAC,CAAC,aAAa,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAA;AACpD,CAAC"}
|
package/dist/cli-release.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { type CliUpdateChannel } from './cli-contract.js';
|
|
2
|
-
/** The npm dist-tags a CLI installation can update to. */
|
|
3
|
-
export interface CliDistTags {
|
|
4
|
-
latest: string;
|
|
5
|
-
beta: string | null;
|
|
6
|
-
}
|
|
7
|
-
export interface CliReleaseTarget {
|
|
8
|
-
version: string;
|
|
9
|
-
dist_tag: 'latest' | 'beta';
|
|
10
|
-
}
|
|
11
|
-
export declare function shouldConsultCliRegistry(input: {
|
|
12
|
-
env?: NodeJS.ProcessEnv;
|
|
13
|
-
}): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Accept a registry dist-tags document only when every tag an update can
|
|
16
|
-
* follow is well formed: `latest` is a stable release and `beta`, when
|
|
17
|
-
* present, is a prerelease. Anything else is unreadable, never a guess.
|
|
18
|
-
*/
|
|
19
|
-
export declare function parseCliDistTags(body: unknown): CliDistTags | null;
|
|
20
|
-
export declare function publishedCliDistTags(fetchImpl?: typeof fetch, options?: {
|
|
21
|
-
useCache?: boolean;
|
|
22
|
-
}): Promise<CliDistTags | null>;
|
|
23
|
-
/**
|
|
24
|
-
* The release a channel updates to. Stable follows `latest`. Beta follows
|
|
25
|
-
* whichever of `beta` and `latest` has the higher SemVer precedence, so a
|
|
26
|
-
* tester moves on to the stable release once it ships.
|
|
27
|
-
*/
|
|
28
|
-
export declare function cliReleaseTarget(tags: CliDistTags, channel: CliUpdateChannel): CliReleaseTarget;
|
|
29
|
-
/**
|
|
30
|
-
* The published release newer than `local` on the channel `local` belongs to,
|
|
31
|
-
* or null. A prerelease installation is offered both newer betas and the
|
|
32
|
-
* stable release that supersedes it.
|
|
33
|
-
*/
|
|
34
|
-
export declare function newerPublishedCli(local: string | null, tags: CliDistTags | null): string | null;
|
|
35
|
-
export declare function thisCliVersion(): string | null;
|
|
36
|
-
export declare function resetPublishedCliDistTagsForTest(): void;
|
package/dist/cli-release.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { packageVersion } from './release.js';
|
|
2
|
-
import { cliDistTagsUrl, cliUpdateChannel } from './cli-contract.js';
|
|
3
|
-
import { compareReleasePrecedence, isPrerelease, isSemVer } from './version.js';
|
|
4
|
-
/**
|
|
5
|
-
* The newest published CLI, read from the registry that publishes it.
|
|
6
|
-
*
|
|
7
|
-
* Which version is newest is a registry fact. Doctor consults it as a
|
|
8
|
-
* best-effort, cached, short-timeout hint in human and structured diagnostics.
|
|
9
|
-
* Automatic lifecycle notices have their own persistent throttle.
|
|
10
|
-
*/
|
|
11
|
-
const DIST_TAGS_URL = cliDistTagsUrl();
|
|
12
|
-
const REQUEST_TIMEOUT_MS = 2_000;
|
|
13
|
-
const CACHE_TTL_MS = 60 * 60 * 1000;
|
|
14
|
-
let cached = null;
|
|
15
|
-
export function shouldConsultCliRegistry(input) {
|
|
16
|
-
const ci = input.env?.['CI'];
|
|
17
|
-
return ci !== '1' && ci !== 'true';
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Accept a registry dist-tags document only when every tag an update can
|
|
21
|
-
* follow is well formed: `latest` is a stable release and `beta`, when
|
|
22
|
-
* present, is a prerelease. Anything else is unreadable, never a guess.
|
|
23
|
-
*/
|
|
24
|
-
export function parseCliDistTags(body) {
|
|
25
|
-
if (typeof body !== 'object' || body === null)
|
|
26
|
-
return null;
|
|
27
|
-
const { latest, beta } = body;
|
|
28
|
-
if (typeof latest !== 'string' || !isSemVer(latest) || isPrerelease(latest))
|
|
29
|
-
return null;
|
|
30
|
-
if (beta === undefined)
|
|
31
|
-
return { latest, beta: null };
|
|
32
|
-
if (typeof beta !== 'string' || !isPrerelease(beta))
|
|
33
|
-
return null;
|
|
34
|
-
return { latest, beta };
|
|
35
|
-
}
|
|
36
|
-
export async function publishedCliDistTags(fetchImpl = fetch, options = {}) {
|
|
37
|
-
if (options.useCache !== false && cached !== null && Date.now() - cached.at < CACHE_TTL_MS)
|
|
38
|
-
return cached.value;
|
|
39
|
-
try {
|
|
40
|
-
const response = await fetchImpl(DIST_TAGS_URL, {
|
|
41
|
-
headers: { accept: 'application/json' },
|
|
42
|
-
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
|
|
43
|
-
});
|
|
44
|
-
if (!response.ok)
|
|
45
|
-
return null;
|
|
46
|
-
const tags = parseCliDistTags(await response.json());
|
|
47
|
-
if (tags === null)
|
|
48
|
-
return null;
|
|
49
|
-
if (options.useCache !== false)
|
|
50
|
-
cached = { value: tags, at: Date.now() };
|
|
51
|
-
return tags;
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* The release a channel updates to. Stable follows `latest`. Beta follows
|
|
59
|
-
* whichever of `beta` and `latest` has the higher SemVer precedence, so a
|
|
60
|
-
* tester moves on to the stable release once it ships.
|
|
61
|
-
*/
|
|
62
|
-
export function cliReleaseTarget(tags, channel) {
|
|
63
|
-
if (channel === 'beta' && tags.beta !== null && compareReleasePrecedence(tags.beta, tags.latest) === 'after') {
|
|
64
|
-
return { version: tags.beta, dist_tag: 'beta' };
|
|
65
|
-
}
|
|
66
|
-
return { version: tags.latest, dist_tag: 'latest' };
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* The published release newer than `local` on the channel `local` belongs to,
|
|
70
|
-
* or null. A prerelease installation is offered both newer betas and the
|
|
71
|
-
* stable release that supersedes it.
|
|
72
|
-
*/
|
|
73
|
-
export function newerPublishedCli(local, tags) {
|
|
74
|
-
if (local === null || tags === null)
|
|
75
|
-
return null;
|
|
76
|
-
const target = cliReleaseTarget(tags, cliUpdateChannel(local));
|
|
77
|
-
return compareReleasePrecedence(target.version, local) === 'after' ? target.version : null;
|
|
78
|
-
}
|
|
79
|
-
export function thisCliVersion() {
|
|
80
|
-
return packageVersion();
|
|
81
|
-
}
|
|
82
|
-
export function resetPublishedCliDistTagsForTest() {
|
|
83
|
-
cached = null;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=cli-release.js.map
|
package/dist/cli-release.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-release.js","sourceRoot":"","sources":["../src/cli-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE/E;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,cAAc,EAAE,CAAA;AACtC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAChC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAanC,IAAI,MAAM,GAAqD,IAAI,CAAA;AAEnE,MAAM,UAAU,wBAAwB,CAAC,KAExC;IACC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAA4C,CAAA;IACrE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACxF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAChE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAA0B,KAAK,EAC/B,UAAkC,EAAE;IAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,YAAY;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IAC/G,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE;YAC9C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC;SAChD,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QACpD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QACxE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,OAAyB;IAC3E,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;QAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IACjD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAoB,EAAE,IAAwB;IAC9E,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9D,OAAO,wBAAwB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,MAAM,GAAG,IAAI,CAAA;AACf,CAAC"}
|
package/dist/client.d.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import type { AttendanceRequestT, AttendanceResponse, AlphaAccessRequestResponse, AccountAccessResponse, BeginPairingResponse, CapabilityDocument, CreateMediaUploadRequestT, CreateMediaUploadResponse, FinalizeMediaUploadResponse, EvidenceSnapshot, GetAgentAcknowledgementResponse, ListDevicesResponse, ListSoundsResponse, ClaimDeliveryAttemptRequestT, ClaimDeliveryAttemptResponse, ClientCapability, CloseDisposition, CloseRepliesResponse, CompatibilityResponse, GetSessionMessageAcknowledgementResponse, RecoveryAction, ListRepliesResponse, Platform, PollPairingResponse, PutAgentAcknowledgementRequestT, PutAgentAcknowledgementResponse, RecordHarnessAnswerRequestT, RecordHarnessAnswerResponse, PutAgentSessionLabelRequestT, PutSessionMessageAcknowledgementRequestT, PutSessionMessageAcknowledgementResponse, ReportDeliveryAttemptRequestT, ReportDeliveryAttemptResponse, AgentSessionView, SubmissionReceipt, SubmitNotificationRequestT } from '@raidiant/notifai-protocol';
|
|
2
|
-
import type { Logger } from './logging.js';
|
|
3
|
-
export declare class ApiCallError extends Error {
|
|
4
|
-
status: number;
|
|
5
|
-
code: string;
|
|
6
|
-
nextAction: string | null;
|
|
7
|
-
details: unknown;
|
|
8
|
-
recoveryAction: RecoveryAction | null;
|
|
9
|
-
constructor(status: number, code: string, message: string, nextAction?: string | null, details?: unknown, recoveryAction?: RecoveryAction | null);
|
|
10
|
-
}
|
|
11
|
-
export declare class NetworkError extends Error {
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Whether a replies-poll failure is temporary while the durable request stays
|
|
15
|
-
* live. Transport faults, throttling, request timeouts, and server failures
|
|
16
|
-
* can recover on a later poll; client errors cannot be repaired by retrying
|
|
17
|
-
* the same authenticated request.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isRetryableReplyPollError(err: unknown): boolean;
|
|
20
|
-
export interface ApiClient {
|
|
21
|
-
beginPairing(body: {
|
|
22
|
-
machine_name: string;
|
|
23
|
-
credential_hash: string;
|
|
24
|
-
poll_verifier_hash: string;
|
|
25
|
-
confirmation_hash: string;
|
|
26
|
-
}): Promise<BeginPairingResponse>;
|
|
27
|
-
pollPairing(pairingId: string, pollVerifier: string): Promise<PollPairingResponse>;
|
|
28
|
-
requestPairingNotification(pairingId: string, pollVerifier: string, email: string): Promise<{
|
|
29
|
-
status: 'requested';
|
|
30
|
-
}>;
|
|
31
|
-
accessStatus(): Promise<AccountAccessResponse>;
|
|
32
|
-
/**
|
|
33
|
-
* Read-only. There is no client-side write: filing this errand is the
|
|
34
|
-
* User's decision, and the server refuses it from a machine credential.
|
|
35
|
-
*/
|
|
36
|
-
accessRequest(): Promise<AlphaAccessRequestResponse>;
|
|
37
|
-
listDevices(): Promise<ListDevicesResponse>;
|
|
38
|
-
listSounds(): Promise<ListSoundsResponse>;
|
|
39
|
-
capabilities(platform?: Platform, appVersion?: string, appBuild?: string): Promise<CapabilityDocument>;
|
|
40
|
-
compatibility(): Promise<CompatibilityResponse>;
|
|
41
|
-
submit(body: SubmitNotificationRequestT, waitSeconds: number): Promise<SubmissionReceipt>;
|
|
42
|
-
evidence(requestId: string): Promise<EvidenceSnapshot>;
|
|
43
|
-
replies(requestId: string, options: {
|
|
44
|
-
waitSeconds: number;
|
|
45
|
-
afterSeq: number;
|
|
46
|
-
}): Promise<ListRepliesResponse>;
|
|
47
|
-
/**
|
|
48
|
-
* Close a question's reply window and return the replies committed before
|
|
49
|
-
* the close fence. `disposition` says why: `deliver` only when this caller
|
|
50
|
-
* will claim the fenced answer for hand-off, `retire` on every retirement.
|
|
51
|
-
* Without one the close records none, exactly as released CLIs do.
|
|
52
|
-
*/
|
|
53
|
-
closeReplies(requestId: string): Promise<ListRepliesResponse>;
|
|
54
|
-
closeReplies(requestId: string, disposition: CloseDisposition): Promise<CloseRepliesResponse>;
|
|
55
|
-
closeReplies(requestId: string, disposition?: CloseDisposition): Promise<ListRepliesResponse | CloseRepliesResponse>;
|
|
56
|
-
putAgentAcknowledgement(requestId: string, body: PutAgentAcknowledgementRequestT): Promise<PutAgentAcknowledgementResponse>;
|
|
57
|
-
recordHarnessAnswer(requestId: string, body: RecordHarnessAnswerRequestT): Promise<RecordHarnessAnswerResponse>;
|
|
58
|
-
putAgentSessionLabel(body: PutAgentSessionLabelRequestT): Promise<AgentSessionView>;
|
|
59
|
-
agentAcknowledgement(requestId: string, options: {
|
|
60
|
-
waitSeconds: number;
|
|
61
|
-
}): Promise<GetAgentAcknowledgementResponse>;
|
|
62
|
-
createMediaUpload(body: CreateMediaUploadRequestT): Promise<CreateMediaUploadResponse>;
|
|
63
|
-
finalizeMediaUpload(mediaId: string): Promise<FinalizeMediaUploadResponse>;
|
|
64
|
-
uploadMedia(grant: CreateMediaUploadResponse, bytes: Uint8Array): Promise<void>;
|
|
65
|
-
health(): Promise<boolean>;
|
|
66
|
-
/**
|
|
67
|
-
* One Session Attendant exchange for an exact Agent Session. The server may
|
|
68
|
-
* hold a `running` exchange up to `waitSeconds`; `signal` cuts it short.
|
|
69
|
-
*/
|
|
70
|
-
attend(sessionId: string, body: AttendanceRequestT, options: {
|
|
71
|
-
waitSeconds: number;
|
|
72
|
-
signal?: AbortSignal;
|
|
73
|
-
}): Promise<AttendanceResponse>;
|
|
74
|
-
/** Claim one hand-off into an Agent Session under the lease generation held. */
|
|
75
|
-
claimDeliveryAttempt(sessionId: string, body: ClaimDeliveryAttemptRequestT): Promise<ClaimDeliveryAttemptResponse>;
|
|
76
|
-
/** Report how a claimed hand-off ended; accepted from the attempt's machine only. */
|
|
77
|
-
reportDeliveryAttempt(attemptId: string, body: ReportDeliveryAttemptRequestT): Promise<ReportDeliveryAttemptResponse>;
|
|
78
|
-
putSessionMessageAcknowledgement(messageId: string, body: PutSessionMessageAcknowledgementRequestT): Promise<PutSessionMessageAcknowledgementResponse>;
|
|
79
|
-
sessionMessageAcknowledgement(messageId: string): Promise<GetSessionMessageAcknowledgementResponse>;
|
|
80
|
-
}
|
|
81
|
-
export interface ClientOptions {
|
|
82
|
-
/**
|
|
83
|
-
* Ceiling for a single request, on top of any long poll the server has been
|
|
84
|
-
* asked to hold. Callers running inside a harness hook shrink this so their
|
|
85
|
-
* whole network path stays inside the budget the harness allows them.
|
|
86
|
-
*/
|
|
87
|
-
timeoutMs?: number;
|
|
88
|
-
/**
|
|
89
|
-
* Absolute wall-clock ceiling for the caller's whole operation. This is
|
|
90
|
-
* intentionally separate from `timeoutMs`: a late long poll must not get a
|
|
91
|
-
* fresh per-request allowance after its owning harness hook is nearly done.
|
|
92
|
-
*/
|
|
93
|
-
deadlineAt?: number;
|
|
94
|
-
/** Test seam for `deadlineAt`; production uses the wall clock. */
|
|
95
|
-
now?: () => number;
|
|
96
|
-
/**
|
|
97
|
-
* Records each call locally. Worth having because the two failures that cost
|
|
98
|
-
* the most time — a server older than this CLI, and a network path that only
|
|
99
|
-
* fails inside a hook — both look identical from outside and are told apart
|
|
100
|
-
* instantly by a status code and a duration.
|
|
101
|
-
*/
|
|
102
|
-
logger?: Pick<Logger, 'debug' | 'error'>;
|
|
103
|
-
/** Artifact identity and named jobs advertised only on authenticated traffic. */
|
|
104
|
-
cliVersion?: string | null;
|
|
105
|
-
capabilities?: readonly ClientCapability[];
|
|
106
|
-
/** Complete Notification Request schema this authenticated client will submit. */
|
|
107
|
-
notificationContractFingerprint?: string | null;
|
|
108
|
-
}
|
|
109
|
-
export declare function createClient(baseUrl: string, bearer: string | null, options?: ClientOptions): ApiClient;
|
package/dist/client.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { CAPABILITIES_HEADER, CLI_VERSION_HEADER, NOTIFICATION_CONTRACT_HEADER, } from '@raidiant/notifai-protocol';
|
|
2
|
-
export class ApiCallError extends Error {
|
|
3
|
-
status;
|
|
4
|
-
code;
|
|
5
|
-
nextAction;
|
|
6
|
-
details;
|
|
7
|
-
recoveryAction;
|
|
8
|
-
constructor(status, code, message, nextAction = null, details = null, recoveryAction = null) {
|
|
9
|
-
super(message);
|
|
10
|
-
this.status = status;
|
|
11
|
-
this.code = code;
|
|
12
|
-
this.nextAction = nextAction;
|
|
13
|
-
this.details = details;
|
|
14
|
-
this.recoveryAction = recoveryAction;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export class NetworkError extends Error {
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Whether a replies-poll failure is temporary while the durable request stays
|
|
21
|
-
* live. Transport faults, throttling, request timeouts, and server failures
|
|
22
|
-
* can recover on a later poll; client errors cannot be repaired by retrying
|
|
23
|
-
* the same authenticated request.
|
|
24
|
-
*/
|
|
25
|
-
export function isRetryableReplyPollError(err) {
|
|
26
|
-
if (err instanceof NetworkError)
|
|
27
|
-
return true;
|
|
28
|
-
if (!(err instanceof ApiCallError))
|
|
29
|
-
return false;
|
|
30
|
-
return err.status >= 500 || err.status === 429 || err.status === 408;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* A deadline that fired reads as an abort, which says nothing useful on its
|
|
34
|
-
* own. Naming the timeout is what lets someone tell a hung server apart from a
|
|
35
|
-
* refused connection.
|
|
36
|
-
*/
|
|
37
|
-
function networkFailure(err, root, limitMs) {
|
|
38
|
-
const name = err instanceof Error ? err.name : '';
|
|
39
|
-
if (name === 'TimeoutError' || name === 'AbortError') {
|
|
40
|
-
return new NetworkError(`${root} did not respond within ${Math.round(limitMs / 1000)}s`);
|
|
41
|
-
}
|
|
42
|
-
return new NetworkError(`Could not reach ${root}: ${String(err)}`);
|
|
43
|
-
}
|
|
44
|
-
/** Generous enough for a slow link, short enough that nothing hangs for ever. */
|
|
45
|
-
const DEFAULT_TIMEOUT_MS = 20_000;
|
|
46
|
-
export function createClient(baseUrl, bearer, options = {}) {
|
|
47
|
-
const root = baseUrl.replace(/\/$/, '');
|
|
48
|
-
const budgetMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
49
|
-
const now = options.now ?? Date.now;
|
|
50
|
-
const logger = options.logger;
|
|
51
|
-
const clientHeaders = bearer
|
|
52
|
-
? {
|
|
53
|
-
...(options.cliVersion ? { [CLI_VERSION_HEADER]: options.cliVersion } : {}),
|
|
54
|
-
...(options.capabilities
|
|
55
|
-
? { [CAPABILITIES_HEADER]: options.capabilities.join(',') }
|
|
56
|
-
: {}),
|
|
57
|
-
...(options.notificationContractFingerprint
|
|
58
|
-
? { [NOTIFICATION_CONTRACT_HEADER]: options.notificationContractFingerprint }
|
|
59
|
-
: {}),
|
|
60
|
-
}
|
|
61
|
-
: {};
|
|
62
|
-
async function call(method, apiPath, body,
|
|
63
|
-
/** Seconds the server was asked to hold the connection open. */
|
|
64
|
-
serverWaitSeconds = 0, abort) {
|
|
65
|
-
const startedAt = Date.now();
|
|
66
|
-
try {
|
|
67
|
-
const result = await callOnce(method, apiPath, body, serverWaitSeconds, abort);
|
|
68
|
-
logger?.debug('http.call', {
|
|
69
|
-
method,
|
|
70
|
-
path: apiPath,
|
|
71
|
-
ok: true,
|
|
72
|
-
duration_ms: Date.now() - startedAt,
|
|
73
|
-
});
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
logger?.error('http.call', {
|
|
78
|
-
method,
|
|
79
|
-
path: apiPath,
|
|
80
|
-
ok: false,
|
|
81
|
-
duration_ms: Date.now() - startedAt,
|
|
82
|
-
...(err instanceof ApiCallError
|
|
83
|
-
? { status: err.status, code: err.code, message: err.message, details: err.details }
|
|
84
|
-
: { message: String(err) }),
|
|
85
|
-
});
|
|
86
|
-
throw err;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async function callOnce(method, apiPath, body, serverWaitSeconds = 0, abort) {
|
|
90
|
-
// Without this, a server that accepts the connection and then never answers
|
|
91
|
-
// hangs until the harness kills the whole hook — and the reply-poll deadline
|
|
92
|
-
// cannot interrupt an individual fetch. The signal covers the
|
|
93
|
-
// body read too, not just the response headers.
|
|
94
|
-
const requestBudgetMs = budgetMs + serverWaitSeconds * 1000;
|
|
95
|
-
const remainingMs = options.deadlineAt === undefined
|
|
96
|
-
? requestBudgetMs
|
|
97
|
-
: Math.max(1, options.deadlineAt - now());
|
|
98
|
-
const limitMs = Math.max(1, Math.min(requestBudgetMs, remainingMs));
|
|
99
|
-
const timeout = AbortSignal.timeout(limitMs);
|
|
100
|
-
const signal = abort === undefined ? timeout : AbortSignal.any([timeout, abort]);
|
|
101
|
-
let response;
|
|
102
|
-
try {
|
|
103
|
-
response = await fetch(`${root}${apiPath}`, {
|
|
104
|
-
method,
|
|
105
|
-
headers: {
|
|
106
|
-
...(body !== undefined ? { 'content-type': 'application/json' } : {}),
|
|
107
|
-
...(bearer ? { authorization: bearer } : {}),
|
|
108
|
-
...clientHeaders,
|
|
109
|
-
},
|
|
110
|
-
signal,
|
|
111
|
-
...(bearer ? { redirect: 'error' } : {}),
|
|
112
|
-
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
catch (err) {
|
|
116
|
-
throw networkFailure(err, root, limitMs);
|
|
117
|
-
}
|
|
118
|
-
if (!response.ok) {
|
|
119
|
-
let parsed = null;
|
|
120
|
-
try {
|
|
121
|
-
parsed = (await response.json());
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// non-JSON body
|
|
125
|
-
}
|
|
126
|
-
throw new ApiCallError(response.status, parsed?.error.code ?? 'internal_error', parsed?.error.message ?? `Request failed with status ${response.status}`, parsed?.error.next_action ?? null, parsed?.error.details ?? null, parsed?.error.recovery_action ?? null);
|
|
127
|
-
}
|
|
128
|
-
if (response.status === 204)
|
|
129
|
-
return undefined;
|
|
130
|
-
try {
|
|
131
|
-
return (await response.json());
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
// A truncated or abandoned body is a transport failure, not a protocol
|
|
135
|
-
// one: it must be retryable like any other, not surface as a raw abort.
|
|
136
|
-
throw networkFailure(err, root, limitMs);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
beginPairing: (body) => call('POST', '/api/v1/pairings', body),
|
|
141
|
-
pollPairing: (pairingId, pollVerifier) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/poll`, {
|
|
142
|
-
poll_verifier: pollVerifier,
|
|
143
|
-
}),
|
|
144
|
-
requestPairingNotification: (pairingId, pollVerifier, email) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/notification`, { poll_verifier: pollVerifier, email }),
|
|
145
|
-
accessStatus: () => call('GET', '/api/v1/account/access'),
|
|
146
|
-
accessRequest: () => call('GET', '/api/v1/account/alpha-access-request'),
|
|
147
|
-
listDevices: () => call('GET', '/api/v1/devices'),
|
|
148
|
-
listSounds: () => call('GET', '/api/v1/sounds'),
|
|
149
|
-
capabilities: (platform = 'ios', appVersion, appBuild) => {
|
|
150
|
-
const query = new URLSearchParams();
|
|
151
|
-
if (appVersion !== undefined)
|
|
152
|
-
query.set('app_version', appVersion);
|
|
153
|
-
if (appBuild !== undefined)
|
|
154
|
-
query.set('app_build', appBuild);
|
|
155
|
-
const suffix = query.size > 0 ? `?${query.toString()}` : '';
|
|
156
|
-
return call('GET', `/api/v1/capabilities/${encodeURIComponent(platform)}${suffix}`);
|
|
157
|
-
},
|
|
158
|
-
compatibility: () => call('GET', '/api/v1/compatibility'),
|
|
159
|
-
submit: (body, waitSeconds) => call('POST', `/api/v1/notifications?wait_seconds=${waitSeconds}`, body, waitSeconds),
|
|
160
|
-
evidence: (requestId) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}`),
|
|
161
|
-
replies: (requestId, { waitSeconds, afterSeq }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies?wait_seconds=${waitSeconds}&after_seq=${afterSeq}`, undefined, waitSeconds),
|
|
162
|
-
closeReplies: ((requestId, disposition) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies/close`, disposition === undefined ? undefined : { disposition })),
|
|
163
|
-
putAgentAcknowledgement: (requestId, body) => call('PUT', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement`, body),
|
|
164
|
-
recordHarnessAnswer: (requestId, body) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/harness-answers`, body),
|
|
165
|
-
putAgentSessionLabel: (body) => call('PUT', '/api/v1/agent-sessions/label', body),
|
|
166
|
-
agentAcknowledgement: (requestId, { waitSeconds }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement?wait_seconds=${waitSeconds}`, undefined, waitSeconds),
|
|
167
|
-
createMediaUpload: (body) => call('POST', '/api/v1/media', body),
|
|
168
|
-
// Storage-observed bytes become authoritative before a send can reference
|
|
169
|
-
// the upload; the caller's declared size is only a request.
|
|
170
|
-
finalizeMediaUpload: (mediaId) => call('POST', `/api/v1/media/${encodeURIComponent(mediaId)}/finalize`),
|
|
171
|
-
uploadMedia: async (grant, bytes) => {
|
|
172
|
-
let response;
|
|
173
|
-
try {
|
|
174
|
-
response = await fetch(grant.upload_url, {
|
|
175
|
-
method: 'PUT',
|
|
176
|
-
headers: grant.upload_headers,
|
|
177
|
-
body: bytes,
|
|
178
|
-
// Media can be large, so this gets its own allowance rather than the
|
|
179
|
-
// per-request budget — but still a finite one.
|
|
180
|
-
signal: AbortSignal.timeout(Math.max(budgetMs, 60_000)),
|
|
181
|
-
// The grant names one exact destination and carries signed headers.
|
|
182
|
-
// A redirect would replay both against an origin the server never
|
|
183
|
-
// granted, so it is refused rather than followed.
|
|
184
|
-
redirect: 'manual',
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
catch (err) {
|
|
188
|
-
throw new NetworkError(`Upload failed: ${String(err)}`);
|
|
189
|
-
}
|
|
190
|
-
if (response.status >= 300 && response.status < 400) {
|
|
191
|
-
throw new NetworkError(`Upload redirect is refused, not followed: the grant's headers are signed for one exact destination`);
|
|
192
|
-
}
|
|
193
|
-
if (!response.ok) {
|
|
194
|
-
throw new NetworkError(`Upload rejected with status ${response.status}`);
|
|
195
|
-
}
|
|
196
|
-
// A successful storage PUT is not authorization to reference the media.
|
|
197
|
-
// The idempotent finalize call makes the server inspect provider metadata
|
|
198
|
-
// and commit authoritative quota before the command can use media_id.
|
|
199
|
-
await call('POST', `/api/v1/media/${encodeURIComponent(grant.media_id)}/finalize`);
|
|
200
|
-
},
|
|
201
|
-
health: async () => {
|
|
202
|
-
try {
|
|
203
|
-
await call('GET', '/healthz');
|
|
204
|
-
return true;
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return false;
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
attend: (sessionId, body, { waitSeconds, signal }) => call('POST', `/api/v1/agent-sessions/${encodeURIComponent(sessionId)}/attendance?wait_seconds=${waitSeconds}`, body, waitSeconds, signal),
|
|
211
|
-
claimDeliveryAttempt: (sessionId, body) => call('POST', `/api/v1/agent-sessions/${encodeURIComponent(sessionId)}/delivery-attempts`, body),
|
|
212
|
-
reportDeliveryAttempt: (attemptId, body) => call('POST', `/api/v1/delivery-attempts/${encodeURIComponent(attemptId)}/report`, body),
|
|
213
|
-
putSessionMessageAcknowledgement: (messageId, body) => call('PUT', `/api/v1/session-messages/${encodeURIComponent(messageId)}/agent-acknowledgement`, body),
|
|
214
|
-
sessionMessageAcknowledgement: (messageId) => call('GET', `/api/v1/session-messages/${encodeURIComponent(messageId)}/agent-acknowledgement`),
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface CodexAnswerControl {
|
|
2
|
-
namespace: string;
|
|
3
|
-
threadId: string;
|
|
4
|
-
/** Revalidate after preparation; this is not proof a form is unanswered. */
|
|
5
|
-
currentTurn(turnId: string): Promise<boolean>;
|
|
6
|
-
/** A success receipt proves admission to this turn, not agent acknowledgement. */
|
|
7
|
-
steer(turnId: string, text: string): Promise<void>;
|
|
8
|
-
close(): void;
|
|
9
|
-
}
|
|
10
|
-
/** Optional bounded-turn capability, independent of queue support. A missing
|
|
11
|
-
* read API returns null before answer bytes; the caller uses ordinary input.
|
|
12
|
-
* The owner, lease and bound question must still be fenced by the caller.
|
|
13
|
-
*/
|
|
14
|
-
export declare function connectCodexAnswerControl(sessionId: string, turnId: string, env: NodeJS.ProcessEnv, deadlineAt: number, now?: () => number): Promise<CodexAnswerControl | null>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/** Bounded native answer transport. Exact question evidence belongs to bindings. */
|
|
2
|
-
import { connectCodexControl } from './codex-native-control.js';
|
|
3
|
-
/** Optional bounded-turn capability, independent of queue support. A missing
|
|
4
|
-
* read API returns null before answer bytes; the caller uses ordinary input.
|
|
5
|
-
* The owner, lease and bound question must still be fenced by the caller.
|
|
6
|
-
*/
|
|
7
|
-
export async function connectCodexAnswerControl(sessionId, turnId, env, deadlineAt, now = () => performance.now()) {
|
|
8
|
-
const control = await connectCodexControl(sessionId, env, deadlineAt, now);
|
|
9
|
-
if (control === null)
|
|
10
|
-
return null;
|
|
11
|
-
const currentTurn = async (expected) => {
|
|
12
|
-
// Full thread/read can exceed the response bound in an ordinary long
|
|
13
|
-
// session. Question identity comes from the owned accepted transcript.
|
|
14
|
-
const result = await control.call('thread/turns/list', {
|
|
15
|
-
threadId: sessionId, limit: 1, sortDirection: 'desc', itemsView: 'notLoaded',
|
|
16
|
-
});
|
|
17
|
-
return result !== null && Array.isArray(result.data) && result.data.length === 1 &&
|
|
18
|
-
result.data[0]?.id === expected && result.data[0]?.status === 'inProgress' &&
|
|
19
|
-
result.data[0]?.itemsView === 'notLoaded';
|
|
20
|
-
};
|
|
21
|
-
try {
|
|
22
|
-
if (!await currentTurn(turnId)) {
|
|
23
|
-
control.close();
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
return { namespace: control.namespace, threadId: control.threadId, currentTurn,
|
|
27
|
-
steer: async (expected, text) => {
|
|
28
|
-
const result = await control.call('turn/steer', {
|
|
29
|
-
threadId: sessionId, expectedTurnId: expected, input: [{ type: 'text', text }],
|
|
30
|
-
});
|
|
31
|
-
if (result === null || result.turnId !== expected)
|
|
32
|
-
throw new Error('Native answer receipt is unknown; do not replay it.');
|
|
33
|
-
},
|
|
34
|
-
close: () => control.close(), };
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
control.close();
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=codex-answer-control.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-answer-control.js","sourceRoot":"","sources":["../src/codex-answer-control.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAY/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EAAE,MAAc,EAAE,GAAsB,EAAE,UAAkB,EAC7E,MAAoB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAE3C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC1E,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAoB,EAAE;QAC/D,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;SAC7E,CAAkF,CAAA;QACnF,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY;YAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,WAAW,CAAA;IAC7C,CAAC,CAAA;IACD,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAChE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;YAC5E,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;oBAC9C,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC/E,CAA+B,CAAA;gBAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;YAC3H,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAC7B,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { ServiceIdentity } from './credentials.js';
|
|
2
|
-
import { connectCodexAnswerControl } from './codex-answer-control.js';
|
|
3
|
-
import type { DeliveryLease } from './session-delivery.js';
|
|
4
|
-
import type { NativeInputAnswers } from './session-inputs.js';
|
|
5
|
-
export declare function codexAnswerPresentation(input: {
|
|
6
|
-
sessionId: string;
|
|
7
|
-
env: NodeJS.ProcessEnv;
|
|
8
|
-
lease: DeliveryLease;
|
|
9
|
-
ownerKey: string;
|
|
10
|
-
turnId: string;
|
|
11
|
-
transcriptPath: string | undefined;
|
|
12
|
-
service: ServiceIdentity;
|
|
13
|
-
deadline: number;
|
|
14
|
-
mayWrite(): boolean;
|
|
15
|
-
/** Credential stores may invoke the OS: call only outside state locks. */
|
|
16
|
-
serviceCurrent(): boolean;
|
|
17
|
-
connect?: typeof connectCodexAnswerControl;
|
|
18
|
-
}): NativeInputAnswers;
|