@tx5dr/plugin-api 2.0.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +201 -0
- package/dist/__tests__/adif.test.js +67 -0
- package/dist/__tests__/adif.test.js.map +1 -1
- package/dist/__tests__/testing-utils.test.js +17 -0
- package/dist/__tests__/testing-utils.test.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +2 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/compatibility.d.ts +15 -0
- package/dist/compatibility.d.ts.map +1 -0
- package/dist/compatibility.js +71 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/contest-logbook-ui/assets/contest-log.css +1 -0
- package/dist/contest-logbook-ui/assets/contest-log.js +40 -0
- package/dist/contest-logbook-ui/contest-log.html +13 -0
- package/dist/context.d.ts +39 -7
- package/dist/context.d.ts.map +1 -1
- package/dist/definition.d.ts +25 -1
- package/dist/definition.d.ts.map +1 -1
- package/dist/definition.js.map +1 -1
- package/dist/ft8/StandardQSOPluginRuntime.d.ts +142 -0
- package/dist/ft8/StandardQSOPluginRuntime.d.ts.map +1 -0
- package/dist/ft8/StandardQSOPluginRuntime.js +1592 -0
- package/dist/ft8/StandardQSOPluginRuntime.js.map +1 -0
- package/dist/ft8/index.d.ts +22 -0
- package/dist/ft8/index.d.ts.map +1 -0
- package/dist/ft8/index.js +176 -0
- package/dist/ft8/index.js.map +1 -0
- package/dist/helpers.d.ts +95 -3
- package/dist/helpers.d.ts.map +1 -1
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +377 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/simulation.d.ts +60 -0
- package/dist/simulation.d.ts.map +1 -0
- package/dist/simulation.js +2 -0
- package/dist/simulation.js.map +1 -0
- package/dist/testing/index.d.ts +5 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +67 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/toolkit/contest/CabrilloBuilder.d.ts +7 -0
- package/dist/toolkit/contest/CabrilloBuilder.d.ts.map +1 -0
- package/dist/toolkit/contest/CabrilloBuilder.js +11 -0
- package/dist/toolkit/contest/CabrilloBuilder.js.map +1 -0
- package/dist/toolkit/contest/ContestCategorySchema.d.ts +11 -0
- package/dist/toolkit/contest/ContestCategorySchema.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestCategorySchema.js +6 -0
- package/dist/toolkit/contest/ContestCategorySchema.js.map +1 -0
- package/dist/toolkit/contest/ContestLogbook.d.ts +223 -0
- package/dist/toolkit/contest/ContestLogbook.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestLogbook.js +845 -0
- package/dist/toolkit/contest/ContestLogbook.js.map +1 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts +28 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js +79 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js.map +1 -0
- package/dist/toolkit/contest/ContestQsoProjector.d.ts +12 -0
- package/dist/toolkit/contest/ContestQsoProjector.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestQsoProjector.js +13 -0
- package/dist/toolkit/contest/ContestQsoProjector.js.map +1 -0
- package/dist/toolkit/contest/ContestSessionNotifier.d.ts +9 -0
- package/dist/toolkit/contest/ContestSessionNotifier.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestSessionNotifier.js +13 -0
- package/dist/toolkit/contest/ContestSessionNotifier.js.map +1 -0
- package/dist/toolkit/contest/ContestSessionRepository.d.ts +21 -0
- package/dist/toolkit/contest/ContestSessionRepository.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestSessionRepository.js +27 -0
- package/dist/toolkit/contest/ContestSessionRepository.js.map +1 -0
- package/dist/toolkit/contest/DefaultContestSession.d.ts +105 -0
- package/dist/toolkit/contest/DefaultContestSession.d.ts.map +1 -0
- package/dist/toolkit/contest/DefaultContestSession.js +387 -0
- package/dist/toolkit/contest/DefaultContestSession.js.map +1 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.d.ts +100 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.d.ts.map +1 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.js +33 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestDefinition.d.ts +83 -0
- package/dist/toolkit/contest/FT8ContestDefinition.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestDefinition.js +167 -0
- package/dist/toolkit/contest/FT8ContestDefinition.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestModules.d.ts +178 -0
- package/dist/toolkit/contest/FT8ContestModules.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestModules.js +247 -0
- package/dist/toolkit/contest/FT8ContestModules.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestPlugin.d.ts +55 -0
- package/dist/toolkit/contest/FT8ContestPlugin.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestPlugin.js +322 -0
- package/dist/toolkit/contest/FT8ContestPlugin.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestTestKit.d.ts +12 -0
- package/dist/toolkit/contest/FT8ContestTestKit.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestTestKit.js +60 -0
- package/dist/toolkit/contest/FT8ContestTestKit.js.map +1 -0
- package/dist/toolkit/contest/contest-toolkit.test.d.ts +2 -0
- package/dist/toolkit/contest/contest-toolkit.test.d.ts.map +1 -0
- package/dist/toolkit/contest/contest-toolkit.test.js +1196 -0
- package/dist/toolkit/contest/contest-toolkit.test.js.map +1 -0
- package/dist/toolkit/contest/index.d.ts +14 -0
- package/dist/toolkit/contest/index.d.ts.map +1 -0
- package/dist/toolkit/contest/index.js +14 -0
- package/dist/toolkit/contest/index.js.map +1 -0
- package/dist/toolkit/index.d.ts +3 -0
- package/dist/toolkit/index.d.ts.map +1 -0
- package/dist/toolkit/index.js +3 -0
- package/dist/toolkit/index.js.map +1 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts +15 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.js +25 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.js.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts +40 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.js +81 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.js.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js +31 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.d.ts +20 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.js +20 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.js.map +1 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts +19 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.js +23 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.js.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts +134 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js +554 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js +470 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts +20 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js +29 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js.map +1 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.d.ts +50 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.js +2 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.js.map +1 -0
- package/dist/toolkit/parallel-qso/controllers.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/controllers.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/controllers.test.js +36 -0
- package/dist/toolkit/parallel-qso/controllers.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/index.d.ts +8 -0
- package/dist/toolkit/parallel-qso/index.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/index.js +8 -0
- package/dist/toolkit/parallel-qso/index.js.map +1 -0
- package/dist/utils/adif.d.ts +1 -1
- package/dist/utils/adif.d.ts.map +1 -1
- package/dist/utils/adif.js +91 -50
- package/dist/utils/adif.js.map +1 -1
- package/package.json +27 -5
- package/src/bridge.d.ts +3 -0
- package/tokens.css +51 -0
package/dist/hooks.d.ts
CHANGED
|
@@ -56,6 +56,8 @@ export interface StrategyDecision {
|
|
|
56
56
|
};
|
|
57
57
|
/** Optional structured reason for a strategy-requested QSO failure stop. */
|
|
58
58
|
qsoFailure?: QSOFailureInfo;
|
|
59
|
+
/** Parallel lane failures emitted by one accepted decision. */
|
|
60
|
+
qsoFailures?: QSOFailureInfo[];
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
63
|
* Metadata describing why a strategy decision is being evaluated.
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,aAAa,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,4EAA4E;IAC5E,UAAU,CAAC,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,22 +21,28 @@
|
|
|
21
21
|
*/
|
|
22
22
|
/** Core plugin definition and lifecycle interfaces. */
|
|
23
23
|
export { definePlugin } from './definition.js';
|
|
24
|
+
export { assertPluginApiCompatible, comparePluginApiVersions, PluginApiCompatibilityError, } from './compatibility.js';
|
|
24
25
|
export { PLUGIN_COMMAND_CAPABILITY_PERMISSIONS, PLUGIN_CONTEXT_CAPABILITY_KEYS, getPluginContextCapabilityKeys, } from './capabilities.js';
|
|
25
26
|
export type { PluginContextCapabilityKey, PluginContextCapabilityPermission, } from './capabilities.js';
|
|
26
27
|
export type { PluginDefinition, AnyPluginDefinition } from './definition.js';
|
|
28
|
+
export type { SimulationMode, SimulationPeerIdentity, SimulationScenarioChoice, SimulationScenarioRule, SimulationScenarioTimeoutRule, SimulationScenarioState, SimulationAddressedRestartPolicy, SimulationScenarioDescriptor, } from './simulation.js';
|
|
27
29
|
export type { PluginContext, PluginContextBase, PluginCleanupContext, PluginContextFor, RuntimePluginContext, StrategyPluginContext, PluginEligibilityContext, } from './context.js';
|
|
30
|
+
export type { PluginAfterStartupTask, PluginLifecyclePort } from './context.js';
|
|
28
31
|
export type { HostDependencies, HamlibHostDependency, HamlibRotator, HamlibRotatorConstructor, HamlibSupportedRotatorInfo, HamlibRotatorConnectionInfo, HamlibRotatorPosition, HamlibRotatorStatus, HamlibRotatorDirection, HamlibRotatorResetType, HamlibConfigFieldDescriptor, HamlibPortCaps, HamlibRotatorCaps, } from './host-dependencies.js';
|
|
29
32
|
export type { PluginHooks, AutoCallProposal, AutoCallExecutionRequest, AutoCallExecutionPlan, SlotActivityEvent, FrequencyChangeState, ScoredCandidate, StrategyDecision, StrategyDecisionMeta, LastMessageInfo, QSOFailureInfo, } from './hooks.js';
|
|
30
|
-
export type { StrategyRuntime, StrategyRuntimeContext, StrategyRuntimeSnapshot, StrategyRuntimeSlot, StrategyRuntimeSlotContentUpdate, StrategyRuntimeCheckpoint, StrategyDecisionMetaV2, StrategyDecisionResult, StrategyDecisionSource, StrategyQSOCompletionEffect, StrategyQSOCompletionSettlement, AssistedQueueDisplayState, AssistedQueuePauseReason, AssistedQueueTone, AssistedQueueIcon, AssistedQueueRow, AssistedQueueSnapshot, QueuedStrategyObservationMeta, QueuedStrategyTargetRequest, QueuedStrategyMutationResult, QueuedStrategyRuntime, } from './runtime.js';
|
|
33
|
+
export type { StrategyRuntime, StrategyRuntimeContext, StrategyRuntimeSnapshot, StrategyMessagePresentationTone, StrategyMessagePresentationBadge, StrategyMessagePresentationClass, StrategyMessagePresentationProjection, StrategyMessagePresentationNoveltyRule, StrategyMessagePresentationTagRule, StrategyTransmitGate, StrategyStateOption, StrategyActionDescriptor, StrategyActionInput, StrategyActionTone, StrategyActionPresentation, StrategyAttention, StrategyCompletionProjection, StrategyActionTarget, StrategyActionInvocation, StrategyActionResult, StrategyLogbookSessionEffect, StrategyStreamSnapshot, StrategyStreamStateUpdate, StrategyTransmission, StreamPhysicalReceipt, StrategyRuntimeSlot, StrategyRuntimeSlotContentUpdate, StrategyRuntimeCheckpoint, StrategyOperatorTransmitCyclesChanged, StrategyDecisionMetaV2, StrategyDecisionResult, StrategyDecisionSource, StrategyQSOCompletionEffect, StrategyQSOCompletionSettlement, AssistedQueueDisplayState, AssistedQueuePauseReason, AssistedQueueTone, AssistedQueueIcon, AssistedQueueRow, AssistedQueueSnapshot, QueuedStrategyObservationMeta, QueuedStrategyTargetRequest, QueuedStrategyMutationResult, QueuedStrategyRuntime, } from './runtime.js';
|
|
31
34
|
export { isQueuedStrategyRuntime } from './runtime.js';
|
|
32
35
|
export type { HostSettingsControl, HostSettingsNamespace, HostFrequencyPresetsSettingsNamespace, HostFT8Settings, HostFT8SettingsPatch, HostFrequencyPresetsSettings, HostStationInfoPatch, HostPSKReporterSettingsPatch, } from './settings.js';
|
|
33
36
|
/** Host-provided helper interfaces available through {@link PluginContext}. */
|
|
34
|
-
export type { KVStore, PluginLogger, PluginTimers, OtherOperatorSnapshot, OperatorSnapshot, OperatorCommandPort, PluginOperatorCommand, PluginOperatorCommandResult, RadioView, RadioOperatingMode, RadioCapabilitiesView, RadioCommandPort, PluginRadioCommand, RadioTunerCommandPort, PluginRadioTunerCommand, RadioPowerView, RadioPowerCommandPort, PluginRadioPowerCommand, RadioPowerSetOptions, LogbookAccess, LogbookReadAccess, LogbookCommandPort, CallsignLogbookAccess, CallsignLogbookReadAccess, CallsignLogbookCommandPort, QSOQueryFilter, BandAccess, IdleTransmitFrequencyOptions, AutoTargetEligibilityReason, AutoTargetEligibilityDecision, UIBridge, PanelMeta, PluginUIHandler, PluginUIRequestContext, PluginUIRequestUser, PluginUIBoundResource, PluginUIInstanceTarget, PluginUIPageSessionInfo, PluginUIPageContext, PluginFileStore, PluginNetworkControl, PluginEventBus, PluginEventBusMessage, PluginUdpControl, PluginUdpSocket, PluginUdpSocketOptions, PluginUdpBindOptions, PluginUdpRemoteInfo, } from './helpers.js';
|
|
37
|
+
export type { KVStore, DigitalMessagePreflight, DigitalMessagePreflightRequest, DigitalMessagePreflightResult, PluginLogger, PluginTimers, OtherOperatorSnapshot, OperatorSnapshot, OperatorCommandPort, PluginOperatorCommand, PluginOperatorCommandResult, RadioView, RadioOperatingMode, RadioCapabilitiesView, RadioCommandPort, PluginRadioCommand, RadioTunerCommandPort, PluginRadioTunerCommand, RadioPowerView, RadioPowerCommandPort, PluginRadioPowerCommand, RadioPowerSetOptions, LogbookAccess, LogbookReadAccess, LogbookCommandPort, CallsignLogbookAccess, CallsignLogbookReadAccess, CallsignLogbookCommandPort, PluginLogbookSessionDescriptor, PluginLogbookSessionAccess, PluginLogbookSessions, QSOQueryFilter, BandAccess, IdleTransmitFrequencyOptions, AutoTargetEligibilityReason, AutoTargetEligibilityDecision, UIBridge, PanelMeta, PluginUIHandler, PluginUIHandlerRegistration, PluginUIRequestContext, PluginUIRequestUser, PluginUIBoundResource, PluginUIInstanceTarget, PluginUIPageSessionInfo, PluginUIPageContext, PluginFileStore, PluginNetworkControl, PluginEventBus, ReadonlyKVStore, PluginEventBusMessage, PluginUdpControl, PluginUdpSocket, PluginUdpSocketOptions, PluginUdpBindOptions, PluginUdpRemoteInfo, } from './helpers.js';
|
|
38
|
+
export type { LogbookBatchMutation, LogbookBatchOptions, LogbookBatchOutcome, LogbookBatchResult, LogbookQsoSnapshot, } from '@tx5dr/core';
|
|
39
|
+
/** Atomic contest-QSO contract and its durable private-field codec. */
|
|
40
|
+
export { CONTEST_QSO_ENVELOPE_MAX_BYTES, ContestQsoEnvelopeSchema, parseContestQsoEnvelope, serializeContestQsoEnvelope, } from '@tx5dr/contracts';
|
|
35
41
|
/** Callsign and DXCC helpers available to plugins. */
|
|
36
42
|
export { getCallsignInfo, listDXCCEntities, resolveDXCCEntity, } from '@tx5dr/core';
|
|
37
43
|
export type { CallsignInfo, DXCCEntity, DXCCResolutionResult, } from '@tx5dr/core';
|
|
38
44
|
/** Common radio/message/settings types re-exported for plugin author convenience. */
|
|
39
|
-
export type { FT8Message, FT8MessageBase, FT8MessageCQ, FT8MessageCall, FT8MessageSignalReport, FT8MessageRogerReport, FT8MessageRRR, FT8MessageSeventyThree, FT8MessageFoxRR73, FT8MessageCustom, FT8MessageUnknown, ParsedFT8Message, LogbookAnalysis, SlotInfo, SlotPack, FrequencyState, QSORecord, FrameMessage, ModeDescriptor, OperatorSlots, DxccStatus, TargetSelectionPriorityMode, PluginType, PluginInstanceScope, PluginPermission, PluginSettingType, PluginSettingDescriptor, PluginSettingScope, PluginQuickAction, PluginQuickSetting, PluginCapability, PluginPanelDescriptor, PluginPanelComponent, PluginPanelWidth, PluginPanelOpenMode, PluginPanelUISize, PluginUIPanelContributionGroup, PluginUIPanelContributionTarget, PluginObjectArrayField, PluginKeyedStringArrayKey, PluginSettingCondition, PluginSettingConditionalDescription, PluginSettingOption, PluginStorageScope, PluginStorageConfig, PluginManifest, PluginStatus, PluginUIPageDescriptor, PluginUIConfig, CapabilityList, CapabilityState, CapabilityDescriptor, CapabilityValue, WriteCapabilityPayload, RadioPowerRequest, RadioPowerResponse, RadioPowerState, RadioPowerStateEvent, RadioPowerSupportInfo, RadioPowerTarget, DecodeWindowSettings, RealtimeSettings, RealtimeSettingsResponseData, PresetFrequency, StationInfo, PSKReporterConfig, NtpServerListSettings, UpdateNtpServerListRequest, } from '@tx5dr/contracts';
|
|
45
|
+
export type { FT8Message, FT8MessageBase, FT8MessageCQ, FT8MessageCall, FT8MessageSignalReport, FT8MessageRogerReport, FT8MessageRRR, FT8MessageSeventyThree, FT8MessageFoxRR73, FT8MessageCustom, FT8MessageUnknown, ParsedFT8Message, LogbookAnalysis, SlotInfo, SlotPack, FrequencyState, QSORecord, ContestQsoEnvelope, FrameMessage, ModeDescriptor, OperatorSlots, DxccStatus, TargetSelectionPriorityMode, PluginType, PluginInstanceScope, PluginPermission, PluginSettingType, PluginSettingDescriptor, PluginSettingScope, PluginQuickAction, PluginQuickSetting, PluginCapability, PluginPanelDescriptor, PluginPanelComponent, PluginPanelWidth, PluginPanelOpenMode, PluginPanelUISize, PluginUIPanelContributionGroup, PluginUIPanelContributionTarget, PluginObjectArrayField, PluginKeyedStringArrayKey, PluginSettingCondition, PluginSettingConditionalDescription, PluginSettingOption, PluginStorageScope, PluginStorageConfig, PluginManifest, PluginStatus, PluginUIPageDescriptor, PluginUIConfig, CapabilityList, CapabilityState, CapabilityDescriptor, CapabilityValue, WriteCapabilityPayload, RadioPowerRequest, RadioPowerResponse, RadioPowerState, RadioPowerStateEvent, RadioPowerSupportInfo, RadioPowerTarget, DecodeWindowSettings, RealtimeSettings, RealtimeSettingsResponseData, PresetFrequency, StationInfo, PSKReporterConfig, NtpServerListSettings, UpdateNtpServerListRequest, } from '@tx5dr/contracts';
|
|
40
46
|
/** Logbook sync provider interfaces. */
|
|
41
47
|
export type { LogbookSyncProvider, LogbookSyncRegistrar, SyncAction, SyncFailure, SyncFailureInput, SyncFailureOperation, SyncFailureSource, SyncTestResult, SyncUploadProgress, SyncUploadOptions, SyncUploadPreflightOptions, SyncUploadResult, SyncPreflightIssue, SyncUploadPreflightResult, SyncDownloadProgress, SyncDownloadResult, SyncDownloadOptions, } from './sync.js';
|
|
42
48
|
export { createSyncFailure, errorToSyncFailure, failureMessage, sanitizeSyncFailureText, } from './sync.js';
|
|
@@ -49,6 +55,10 @@ export { parseADIFContent, parseADIFRecord, parseADIFFields, convertQSOToADIF, g
|
|
|
49
55
|
/** Plugin page scope path utilities. */
|
|
50
56
|
export { getPluginPageFileScopePath, getPluginPageScopePath, getPluginPageScopeSegments, getPluginPageStorePath, } from './utils/page-scope.js';
|
|
51
57
|
export type { PluginPageBoundResource } from './utils/page-scope.js';
|
|
58
|
+
/** Composable FT8/FT4 contest rules, assembler and framework-neutral test kit. */
|
|
59
|
+
export * from './toolkit/contest/index.js';
|
|
60
|
+
/** Reusable standard FT8/FT4 QSO runtime for external strategy plugins. */
|
|
61
|
+
export * from './ft8/index.js';
|
|
52
62
|
/** QSO text field utilities. */
|
|
53
63
|
export { buildSignalReportComment, parseQsoTextFields, parseLegacyComment, parseMessageHistoryText, resolveQsoComment, buildCommentFromMessageHistory, normalizeMessageHistory, sanitizeAdifFieldValue, } from './utils/qso-text-fields.js';
|
|
54
64
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,qCAAqC,EACrC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,qCAAqC,EACrC,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,YAAY,EACV,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,EACd,UAAU,EACV,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,QAAQ,EACR,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -21,8 +21,11 @@
|
|
|
21
21
|
*/
|
|
22
22
|
/** Core plugin definition and lifecycle interfaces. */
|
|
23
23
|
export { definePlugin } from './definition.js';
|
|
24
|
+
export { assertPluginApiCompatible, comparePluginApiVersions, PluginApiCompatibilityError, } from './compatibility.js';
|
|
24
25
|
export { PLUGIN_COMMAND_CAPABILITY_PERMISSIONS, PLUGIN_CONTEXT_CAPABILITY_KEYS, getPluginContextCapabilityKeys, } from './capabilities.js';
|
|
25
26
|
export { isQueuedStrategyRuntime } from './runtime.js';
|
|
27
|
+
/** Atomic contest-QSO contract and its durable private-field codec. */
|
|
28
|
+
export { CONTEST_QSO_ENVELOPE_MAX_BYTES, ContestQsoEnvelopeSchema, parseContestQsoEnvelope, serializeContestQsoEnvelope, } from '@tx5dr/contracts';
|
|
26
29
|
/** Callsign and DXCC helpers available to plugins. */
|
|
27
30
|
export { getCallsignInfo, listDXCCEntities, resolveDXCCEntity, } from '@tx5dr/core';
|
|
28
31
|
export { createSyncFailure, errorToSyncFailure, failureMessage, sanitizeSyncFailureText, } from './sync.js';
|
|
@@ -34,6 +37,10 @@ export { normalizeCallsign } from './utils/callsign.js';
|
|
|
34
37
|
export { parseADIFContent, parseADIFRecord, parseADIFFields, convertQSOToADIF, generateADIFFile, formatADIFDate, formatADIFTime, parseADIFDateTime, } from './utils/adif.js';
|
|
35
38
|
/** Plugin page scope path utilities. */
|
|
36
39
|
export { getPluginPageFileScopePath, getPluginPageScopePath, getPluginPageScopeSegments, getPluginPageStorePath, } from './utils/page-scope.js';
|
|
40
|
+
/** Composable FT8/FT4 contest rules, assembler and framework-neutral test kit. */
|
|
41
|
+
export * from './toolkit/contest/index.js';
|
|
42
|
+
/** Reusable standard FT8/FT4 QSO runtime for external strategy plugins. */
|
|
43
|
+
export * from './ft8/index.js';
|
|
37
44
|
/** QSO text field utilities. */
|
|
38
45
|
export { buildSignalReportComment, parseQsoTextFields, parseLegacyComment, parseMessageHistoryText, resolveQsoComment, buildCommentFromMessageHistory, normalizeMessageHistory, sanitizeAdifFieldValue, } from './utils/qso-text-fields.js';
|
|
39
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,qCAAqC,EACrC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qCAAqC,EACrC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAoG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAgFvD,uEAAuE;AACvE,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAG1B,sDAAsD;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAqGrB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,gFAAgF;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,4CAA4C;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wDAAwD;AACxD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,wCAAwC;AACxC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,kFAAkF;AAClF,cAAc,4BAA4B,CAAC;AAE3C,2EAA2E;AAC3E,cAAc,gBAAgB,CAAC;AAE/B,gCAAgC;AAChC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ParsedFT8Message, FrameMessage, SlotInfo, QSORecord } from '@tx5dr/contracts';
|
|
2
2
|
import type { StrategyDecision } from './hooks.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Legacy identifiers for the six selectable FT8 transmit messages.
|
|
5
5
|
*
|
|
6
|
-
* These labels
|
|
7
|
-
*
|
|
6
|
+
* These labels describe message choices, not T/R time slots or parallel QSO
|
|
7
|
+
* streams. User-facing interfaces should call them Tx messages.
|
|
8
8
|
*/
|
|
9
9
|
export type StrategyRuntimeSlot = 'TX1' | 'TX2' | 'TX3' | 'TX4' | 'TX5' | 'TX6';
|
|
10
10
|
/**
|
|
@@ -39,15 +39,316 @@ export interface StrategyRuntimeSnapshot {
|
|
|
39
39
|
slots?: Partial<Record<StrategyRuntimeSlot, string>>;
|
|
40
40
|
/** Current conversation metadata tracked by the runtime. */
|
|
41
41
|
context?: StrategyRuntimeContext;
|
|
42
|
-
/** Optional list of user-visible next
|
|
42
|
+
/** Optional legacy list of user-visible next Tx messages or branch hints. */
|
|
43
43
|
availableSlots?: string[];
|
|
44
44
|
/** Host correlation token for QSO persistence; it is not an RF decision epoch. */
|
|
45
45
|
qsoLifecycleEpoch?: number;
|
|
46
|
+
/** Active protocol lanes owned by a parallel-capable strategy. */
|
|
47
|
+
streams?: StrategyStreamSnapshot[];
|
|
46
48
|
/** Optional compact projection exposed by queue-capable strategies. */
|
|
47
49
|
queue?: AssistedQueueSnapshot;
|
|
50
|
+
/** Plugin-declared operator controls rendered without business interpretation. */
|
|
51
|
+
actions?: StrategyActionDescriptor[];
|
|
52
|
+
/** Plugin-declared operator attention items. */
|
|
53
|
+
attentions?: StrategyAttention[];
|
|
54
|
+
/** Optional strategy-owned presentation for decoded message history. */
|
|
55
|
+
messagePresentation?: StrategyMessagePresentationProjection;
|
|
56
|
+
/** Strategy-owned operator-start gate, enforced by both Host UI and Server. */
|
|
57
|
+
transmitGate?: StrategyTransmitGate;
|
|
58
|
+
}
|
|
59
|
+
/** Semantic tone requested by strategy-owned message presentation rules. */
|
|
60
|
+
export type StrategyMessagePresentationTone = 'neutral' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
61
|
+
/** Compact label and semantic tone rendered beside a decoded message. */
|
|
62
|
+
export interface StrategyMessagePresentationBadge {
|
|
63
|
+
/** Literal label or plugin locale key. */
|
|
64
|
+
label: string;
|
|
65
|
+
/** Host-themed semantic tone; plugins cannot provide CSS. */
|
|
66
|
+
tone: StrategyMessagePresentationTone;
|
|
67
|
+
}
|
|
68
|
+
/** Bounded token matcher evaluated by the Host against normalized message tokens. */
|
|
69
|
+
export interface StrategyMessagePresentationTokenMatch {
|
|
70
|
+
/** Exact, case-insensitive token matching; arbitrary regular expressions are not accepted. */
|
|
71
|
+
firstTokenIn?: string[];
|
|
72
|
+
/** Matches when any normalized message token equals one of these values. */
|
|
73
|
+
anyTokenIn?: string[];
|
|
74
|
+
}
|
|
75
|
+
/** Named visual class assigned by a strategy presentation projection. */
|
|
76
|
+
export interface StrategyMessagePresentationClass {
|
|
77
|
+
/** @deprecated Use `badges`; retained for API v2 snapshot compatibility. */
|
|
78
|
+
badge?: {
|
|
79
|
+
label: string;
|
|
80
|
+
tone: StrategyMessagePresentationTone;
|
|
81
|
+
};
|
|
82
|
+
/** Badges revealed when the optional emphasis matcher succeeds. */
|
|
83
|
+
badges?: StrategyMessagePresentationBadge[];
|
|
84
|
+
/** Semantic row treatment; Host maps tones to its theme and never accepts plugin CSS. */
|
|
85
|
+
row?: {
|
|
86
|
+
tone: StrategyMessagePresentationTone;
|
|
87
|
+
background?: 'none' | 'soft';
|
|
88
|
+
accent?: boolean;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Only expose badges and soft row emphasis when any matcher succeeds.
|
|
92
|
+
* The accent, text decoration and opacity remain visible when none match.
|
|
93
|
+
*/
|
|
94
|
+
emphasisWhen?: StrategyMessagePresentationTokenMatch[];
|
|
95
|
+
/** Optional semantic strike-through for completed or excluded rows. */
|
|
96
|
+
textDecoration?: 'line-through';
|
|
97
|
+
/** Optional semantic opacity treatment. */
|
|
98
|
+
opacity?: 'normal' | 'muted';
|
|
99
|
+
}
|
|
100
|
+
/** Assigns a class when a Host-extracted fact is new within a partition. */
|
|
101
|
+
export interface StrategyMessagePresentationNoveltyRule {
|
|
102
|
+
/** Canonical message fact extracted by Host before comparing plugin-owned known values. */
|
|
103
|
+
fact: 'grid-field-2';
|
|
104
|
+
/** Plugin-owned known values keyed by the configured partition. */
|
|
105
|
+
knownValuesByPartition: Record<string, string[]>;
|
|
106
|
+
/** Presentation class used when the extracted fact is not known. */
|
|
107
|
+
classId: string;
|
|
108
|
+
}
|
|
109
|
+
/** Adds a badge when a bounded token matcher accepts the decoded message. */
|
|
110
|
+
export interface StrategyMessagePresentationTagRule {
|
|
111
|
+
/** Stable rule identity for diagnostics and replacement. */
|
|
112
|
+
id: string;
|
|
113
|
+
/** Host-evaluated token matcher. */
|
|
114
|
+
match: StrategyMessagePresentationTokenMatch;
|
|
115
|
+
/** Badge rendered when the matcher succeeds. */
|
|
116
|
+
badge: StrategyMessagePresentationBadge;
|
|
117
|
+
}
|
|
118
|
+
/** Complete strategy-owned, data-only presentation projection for decoded messages. */
|
|
119
|
+
export interface StrategyMessagePresentationProjection {
|
|
120
|
+
/** Monotonic plugin revision used to replace stale projections. */
|
|
121
|
+
revision: number;
|
|
122
|
+
/** Whether the projection replaces logbook presentation or augments it. */
|
|
123
|
+
mode: 'replace-logbook' | 'augment';
|
|
124
|
+
/** Canonical message subject classified by the projection. */
|
|
125
|
+
subject: 'sender-callsign';
|
|
126
|
+
/** Partition used for assignments and novelty checks. */
|
|
127
|
+
partitionBy: 'band' | 'mode' | 'none';
|
|
128
|
+
/** Optional partition allowlist. */
|
|
129
|
+
eligiblePartitions?: string[];
|
|
130
|
+
/** Class applied when no assignment or rule selects another class. */
|
|
131
|
+
defaultClass?: string;
|
|
132
|
+
/** Strategy-defined presentation classes keyed by stable ID. */
|
|
133
|
+
classes: Record<string, StrategyMessagePresentationClass>;
|
|
134
|
+
/** Explicit subject-to-class assignments. */
|
|
135
|
+
assignments: Array<{
|
|
136
|
+
subject: string;
|
|
137
|
+
partition?: string;
|
|
138
|
+
classId: string;
|
|
139
|
+
}>;
|
|
140
|
+
/** Optional Host-evaluated novelty rules. */
|
|
141
|
+
noveltyRules?: StrategyMessagePresentationNoveltyRule[];
|
|
142
|
+
/** Optional Host-evaluated tag rules. */
|
|
143
|
+
tagRules?: StrategyMessagePresentationTagRule[];
|
|
144
|
+
}
|
|
145
|
+
/** Strategy-owned reason that prevents an operator from starting transmission. */
|
|
146
|
+
export interface StrategyTransmitGate {
|
|
147
|
+
/** Always false while the gate is present. */
|
|
148
|
+
allowed: false;
|
|
149
|
+
/** Literal message or plugin locale key shown to the operator. */
|
|
150
|
+
reason: string;
|
|
151
|
+
/** Optional strategy action that can resolve the gate. */
|
|
152
|
+
actionId?: string;
|
|
153
|
+
}
|
|
154
|
+
/** Semantic tone used for strategy-owned operator actions. */
|
|
155
|
+
export type StrategyActionTone = 'default' | 'primary' | 'success' | 'warning' | 'danger';
|
|
156
|
+
/** Host layout requested for a strategy-owned action. */
|
|
157
|
+
export type StrategyActionPresentation = 'primary' | 'secondary' | 'menu' | 'segmented';
|
|
158
|
+
/** Optional value editor attached to a strategy-owned action. */
|
|
159
|
+
export type StrategyActionInput = {
|
|
160
|
+
kind: 'text';
|
|
161
|
+
label?: string;
|
|
162
|
+
value?: string;
|
|
163
|
+
placeholder?: string;
|
|
164
|
+
maxLength?: number;
|
|
165
|
+
} | {
|
|
166
|
+
kind: 'number' | 'audio-frequency';
|
|
167
|
+
label?: string;
|
|
168
|
+
value?: number;
|
|
169
|
+
min?: number;
|
|
170
|
+
max?: number;
|
|
171
|
+
step?: number;
|
|
172
|
+
unit?: string;
|
|
173
|
+
spectrumPick?: boolean;
|
|
174
|
+
};
|
|
175
|
+
/** One context-sensitive command wholly owned by a strategy plugin. */
|
|
176
|
+
export interface StrategyActionDescriptor {
|
|
177
|
+
/** Stable action identifier passed back to the owning runtime. */
|
|
178
|
+
id: string;
|
|
179
|
+
/** Literal label or plugin locale key. */
|
|
180
|
+
label: string;
|
|
181
|
+
/** Optional literal description or plugin locale key. */
|
|
182
|
+
description?: string;
|
|
183
|
+
/** Host icon identifier. */
|
|
184
|
+
icon?: string;
|
|
185
|
+
/** Semantic action tone. */
|
|
186
|
+
tone?: StrategyActionTone;
|
|
187
|
+
/** Preferred Host layout for this command. */
|
|
188
|
+
presentation?: StrategyActionPresentation;
|
|
189
|
+
/** Optional group identity used by menus and segmented controls. */
|
|
190
|
+
groupId?: string;
|
|
191
|
+
/** Whether a toggle-like action is currently selected. */
|
|
192
|
+
selected?: boolean;
|
|
193
|
+
/** Explanation shown while the action is disabled. */
|
|
194
|
+
disabledReason?: string;
|
|
195
|
+
/** Optional exact transmission preview. */
|
|
196
|
+
previewText?: string;
|
|
197
|
+
/** Confirmation dialog requested before invocation. */
|
|
198
|
+
confirmation?: {
|
|
199
|
+
title: string;
|
|
200
|
+
description?: string;
|
|
201
|
+
confirmLabel?: string;
|
|
202
|
+
cancelLabel?: string;
|
|
203
|
+
};
|
|
204
|
+
/** Optional text, number, or audio-frequency editor. */
|
|
205
|
+
input?: StrategyActionInput;
|
|
206
|
+
/** Host-validated navigation to a page declared by the owning plugin. */
|
|
207
|
+
navigation?: {
|
|
208
|
+
kind: 'plugin-page';
|
|
209
|
+
pageId: string;
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/** Strategy-owned operator attention item with optional actions and notification. */
|
|
213
|
+
export interface StrategyAttention {
|
|
214
|
+
/** Stable identity used to replace or dismiss the item. */
|
|
215
|
+
id: string;
|
|
216
|
+
/** Semantic severity rendered by the Host. */
|
|
217
|
+
tone: 'info' | 'warning' | 'danger' | 'success';
|
|
218
|
+
/** Literal title or plugin locale key. */
|
|
219
|
+
title: string;
|
|
220
|
+
/** Optional literal description or plugin locale key. */
|
|
221
|
+
description?: string;
|
|
222
|
+
/** Locale interpolation parameters. */
|
|
223
|
+
params?: Record<string, string | number>;
|
|
224
|
+
/** Whether the Host may surface an out-of-page notification. */
|
|
225
|
+
notify?: boolean;
|
|
226
|
+
/** Epoch milliseconds after which the Host may discard the item. */
|
|
227
|
+
expiresAt?: number;
|
|
228
|
+
/** Strategy action IDs offered with the item. */
|
|
229
|
+
actionIds?: string[];
|
|
230
|
+
}
|
|
231
|
+
/** Durable QSO completion state projected by one strategy stream. */
|
|
232
|
+
export interface StrategyCompletionProjection {
|
|
233
|
+
/** Current preparation or commit phase. */
|
|
234
|
+
state: 'not-ready' | 'ready' | 'committing' | 'committed' | 'failed';
|
|
235
|
+
/** Optional literal label or plugin locale key. */
|
|
236
|
+
label?: string;
|
|
237
|
+
/** Durable record ID once the Host commits the QSO. */
|
|
238
|
+
recordId?: string;
|
|
239
|
+
}
|
|
240
|
+
/** One user-selectable state exposed by a strategy-owned state machine. */
|
|
241
|
+
export interface StrategyStateOption {
|
|
242
|
+
/** Stable state identifier understood only by the owning strategy. */
|
|
243
|
+
id: string;
|
|
244
|
+
/** Literal label or plugin locale key shown by the Host UI. */
|
|
245
|
+
label?: string;
|
|
246
|
+
/** Exact transmission produced when this state is selected, when applicable. */
|
|
247
|
+
transmitText?: string;
|
|
248
|
+
}
|
|
249
|
+
/** One independently progressing parallel QSO inside an operator strategy. */
|
|
250
|
+
export interface StrategyStreamSnapshot {
|
|
251
|
+
/** Stable identity within the owning strategy runtime. */
|
|
252
|
+
streamId: string;
|
|
253
|
+
/** Current lane state selected by the protocol implementation. */
|
|
254
|
+
currentState: string;
|
|
255
|
+
/** Target station currently owned by this lane. */
|
|
256
|
+
targetCallsign?: string;
|
|
257
|
+
/** Last accepted target grid, when known. */
|
|
258
|
+
targetGrid?: string;
|
|
259
|
+
/** Audio carrier used by this lane in hertz. */
|
|
260
|
+
audioFrequencyHz: number;
|
|
261
|
+
/** Lane-local lifecycle epoch used to correlate durable QSO effects. */
|
|
262
|
+
qsoLifecycleEpoch: number;
|
|
263
|
+
/** Protocol-approved states that the operator may select for this lane. */
|
|
264
|
+
stateOptions?: StrategyStateOption[];
|
|
265
|
+
/** Context-sensitive actions owned by this lane. */
|
|
266
|
+
actions?: StrategyActionDescriptor[];
|
|
267
|
+
/** Operator attention items owned by this lane. */
|
|
268
|
+
attentions?: StrategyAttention[];
|
|
269
|
+
/** Durable QSO completion projection for this lane. */
|
|
270
|
+
completion?: StrategyCompletionProjection;
|
|
271
|
+
/** Most recent accepted inbound protocol text. */
|
|
272
|
+
lastReceivedText?: string;
|
|
273
|
+
/** Exact text this lane plans to transmit next. */
|
|
274
|
+
nextTransmitText?: string;
|
|
275
|
+
}
|
|
276
|
+
/** Optimistic target for a strategy action invocation. */
|
|
277
|
+
export type StrategyActionTarget = {
|
|
278
|
+
kind: 'runtime';
|
|
279
|
+
} | {
|
|
280
|
+
kind: 'stream';
|
|
281
|
+
streamId: string;
|
|
282
|
+
lifecycleEpoch: number;
|
|
283
|
+
} | {
|
|
284
|
+
kind: 'queue-entry';
|
|
285
|
+
entryId: string;
|
|
286
|
+
queueVersion: number;
|
|
287
|
+
};
|
|
288
|
+
/** Host-validated invocation of one strategy-owned action. */
|
|
289
|
+
export interface StrategyActionInvocation {
|
|
290
|
+
/** Runtime, stream, or queue entry that owns the action. */
|
|
291
|
+
target: StrategyActionTarget;
|
|
292
|
+
/** Action identifier from the current strategy projection. */
|
|
293
|
+
actionId: string;
|
|
294
|
+
/** Untrusted action input that the strategy must validate. */
|
|
295
|
+
payload?: unknown;
|
|
296
|
+
}
|
|
297
|
+
/** Host-managed plugin logbook session effect returned by an accepted action or decision. */
|
|
298
|
+
export type StrategyLogbookSessionEffect = {
|
|
299
|
+
operation: 'open';
|
|
300
|
+
sessionKey: string;
|
|
301
|
+
title: string;
|
|
302
|
+
retention?: 'durable' | 'runtime';
|
|
303
|
+
} | {
|
|
304
|
+
operation: 'destroy';
|
|
305
|
+
sessionKey: string;
|
|
306
|
+
};
|
|
307
|
+
/** Declarative effects returned after invoking a strategy-owned action. */
|
|
308
|
+
export interface StrategyActionResult {
|
|
309
|
+
/** Requests a fresh speculative decision after the action commits. */
|
|
310
|
+
requestDecision?: boolean;
|
|
311
|
+
/** Start this operator through the Host's normal automation path after a direct user action. */
|
|
312
|
+
requestOperatorStart?: boolean;
|
|
313
|
+
/** QSO effects prepared and committed by the Host. */
|
|
314
|
+
qsoCompletions?: StrategyQSOCompletionEffect[];
|
|
315
|
+
/** Host-managed plugin logbook session operations caused by this explicit action. */
|
|
316
|
+
logbookSessionEffects?: StrategyLogbookSessionEffect[];
|
|
317
|
+
/** Stable action outcome for UI feedback and diagnostics. */
|
|
318
|
+
outcome?: {
|
|
319
|
+
code: string;
|
|
320
|
+
message?: string;
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/** Optimistic request to move one strategy-owned lane to a user-selectable state. */
|
|
324
|
+
export interface StrategyStreamStateUpdate {
|
|
325
|
+
/** Lane to update. */
|
|
326
|
+
streamId: string;
|
|
327
|
+
/** Strategy-approved target state. */
|
|
328
|
+
stateId: string;
|
|
329
|
+
/** Optimistic lane lifecycle epoch from the current projection. */
|
|
330
|
+
expectedLifecycleEpoch: number;
|
|
331
|
+
}
|
|
332
|
+
/** One independently encoded transmission contributed by a strategy. */
|
|
333
|
+
export interface StrategyTransmission {
|
|
334
|
+
/** Stable lane identity within one operator. */
|
|
335
|
+
streamId: string;
|
|
336
|
+
/** Exact FT8/FT4 text to encode. */
|
|
337
|
+
text: string;
|
|
338
|
+
/** Audio carrier frequency in hertz. */
|
|
339
|
+
audioFrequencyHz: number;
|
|
340
|
+
}
|
|
341
|
+
/** Physical confirmation for one transmitted lane in an atomic frame. */
|
|
342
|
+
export interface StreamPhysicalReceipt extends StrategyTransmission {
|
|
343
|
+
/** Host physical-frame identity. */
|
|
344
|
+
frameId: string;
|
|
345
|
+
/** Monotonic physical-frame revision. */
|
|
346
|
+
revision: number;
|
|
347
|
+
/** Literal proof that this lane reached physical transmission. */
|
|
348
|
+
physicalConfirmed: true;
|
|
48
349
|
}
|
|
49
350
|
/** User-facing phase shown for one row in a queue-capable strategy. */
|
|
50
|
-
export type AssistedQueueDisplayState = 'TX1' | 'TX2' | 'TX3' | 'TX4' | 'TX5' | 'engaged' | 'closing' | 'paused' | 'no-response' | 'later' | 'review';
|
|
351
|
+
export type AssistedQueueDisplayState = 'TX1' | 'TX2' | 'TX3' | 'TX4' | 'TX5' | 'engaged' | 'closing' | 'paused' | 'no-response' | 'later' | 'review' | 'candidate' | 'authorized' | 'dupe';
|
|
51
352
|
/** Why a queued target is temporarily paused instead of being selected. */
|
|
52
353
|
export type AssistedQueuePauseReason = 'target-busy' | 'stale';
|
|
53
354
|
/** Semantic color treatment requested for an assisted queue row. */
|
|
@@ -80,6 +381,16 @@ export interface AssistedQueueRow {
|
|
|
80
381
|
lastSnr?: number;
|
|
81
382
|
/** Receive cycles elapsed since this target was last decoded. */
|
|
82
383
|
lastHeardCyclesAgo?: number;
|
|
384
|
+
/** Cycle in which the target was most recently decoded transmitting. */
|
|
385
|
+
lastHeardCycle?: 0 | 1;
|
|
386
|
+
/** Active strategy stream currently processing this entry. */
|
|
387
|
+
streamId?: string;
|
|
388
|
+
/** Reserved audio carrier when the entry owns a stream. */
|
|
389
|
+
audioFrequencyHz?: number;
|
|
390
|
+
/** Audited operator authorization associated with this entry. */
|
|
391
|
+
authorizationId?: string;
|
|
392
|
+
/** Plugin-declared row actions. Omission preserves legacy queue controls. */
|
|
393
|
+
actions?: StrategyActionDescriptor[];
|
|
83
394
|
}
|
|
84
395
|
/** Versioned queue projection embedded in `StrategyRuntimeSnapshot.queue`. */
|
|
85
396
|
export interface AssistedQueueSnapshot {
|
|
@@ -87,6 +398,12 @@ export interface AssistedQueueSnapshot {
|
|
|
87
398
|
version: number;
|
|
88
399
|
/** Entry currently owned by the active QSO lifecycle, when any. */
|
|
89
400
|
activeEntryId?: string;
|
|
401
|
+
/** Entries currently owned by parallel QSO lifecycles. */
|
|
402
|
+
activeEntryIds?: string[];
|
|
403
|
+
/** Maximum number of entries that may be active at once. */
|
|
404
|
+
maxActiveStreams?: number;
|
|
405
|
+
/** User-requested stream count before Host radio-frequency policy is applied. */
|
|
406
|
+
requestedMaxActiveStreams?: number;
|
|
90
407
|
/** Queue rows in display order. */
|
|
91
408
|
rows: AssistedQueueRow[];
|
|
92
409
|
}
|
|
@@ -117,6 +434,8 @@ export interface QueuedStrategyMutationResult {
|
|
|
117
434
|
reason?: 'queue_full' | 'invalid_target' | 'entry_not_found' | 'entry_not_retryable' | 'active_entry' | 'version_conflict';
|
|
118
435
|
/** Authoritative queue state after the attempted mutation. */
|
|
119
436
|
snapshot: AssistedQueueSnapshot;
|
|
437
|
+
/** Requests a normal operator start after this explicit manual queue mutation. */
|
|
438
|
+
requestOperatorStart?: boolean;
|
|
120
439
|
}
|
|
121
440
|
/** Optional capability implemented by strategies that own a target queue. */
|
|
122
441
|
export interface QueuedStrategyRuntime extends StrategyRuntime {
|
|
@@ -166,30 +485,65 @@ export interface StrategyDecisionMetaV2 {
|
|
|
166
485
|
* capabilities, functions, promises or external resource handles.
|
|
167
486
|
*/
|
|
168
487
|
export type StrategyRuntimeCheckpoint = unknown;
|
|
488
|
+
/** Operator transmit-cycle selection observed by an active strategy runtime. */
|
|
489
|
+
export interface StrategyOperatorTransmitCyclesChanged {
|
|
490
|
+
/** Previous Host-selected transmit cycles. */
|
|
491
|
+
previousTransmitCycles: number[];
|
|
492
|
+
/** Current Host-selected transmit cycles. */
|
|
493
|
+
transmitCycles: number[];
|
|
494
|
+
/** Source of the accepted cycle change. */
|
|
495
|
+
source?: 'manual' | 'plugin' | 'late-decode' | 'slot-auto';
|
|
496
|
+
}
|
|
169
497
|
/** Declarative request for the Host to durably commit one completed QSO. */
|
|
170
498
|
export interface StrategyQSOCompletionEffect {
|
|
171
499
|
/** Complete QSO record to validate and persist. */
|
|
172
500
|
record: QSORecord;
|
|
173
501
|
/** Stable within one strategy runtime generation; distinct from RF decision epochs. */
|
|
174
502
|
lifecycleEpoch: number;
|
|
503
|
+
/** Lane that produced the completion; omitted by legacy single-lane strategies. */
|
|
504
|
+
streamId?: string;
|
|
505
|
+
/** Host persistence behavior requested by the strategy. */
|
|
506
|
+
persistencePolicy?: 'merge-nearby' | 'preserve-distinct';
|
|
507
|
+
/** Optional Host-issued destination. Omitted effects use the operator's primary logbook. */
|
|
508
|
+
destination?: {
|
|
509
|
+
kind: 'plugin-session';
|
|
510
|
+
sessionId: string;
|
|
511
|
+
} | {
|
|
512
|
+
kind: 'plugin-session-key';
|
|
513
|
+
sessionKey: string;
|
|
514
|
+
};
|
|
515
|
+
/** Structured-cloneable source metadata returned with post-commit delivery. */
|
|
516
|
+
metadata?: Record<string, unknown>;
|
|
175
517
|
}
|
|
176
518
|
/** Host acknowledgement for a previously returned QSO completion effect. */
|
|
177
519
|
export interface StrategyQSOCompletionSettlement {
|
|
178
520
|
/** Lifecycle epoch copied from the effect being settled. */
|
|
179
521
|
lifecycleEpoch: number;
|
|
180
|
-
/** Record ID from the accepted completion effect
|
|
522
|
+
/** Record ID from the accepted completion effect, used for correlation. */
|
|
181
523
|
recordId: string;
|
|
524
|
+
/** Final durable record ID; differs when the Host merged into an existing QSO. */
|
|
525
|
+
persistedRecordId?: string;
|
|
182
526
|
/** Whether the Host committed the record or the durable operation failed. */
|
|
183
527
|
status: 'committed' | 'failed';
|
|
528
|
+
/** Lane copied from the accepted completion effect. */
|
|
529
|
+
streamId?: string;
|
|
530
|
+
/** Detached source metadata copied from the accepted completion effect. */
|
|
531
|
+
metadata?: Record<string, unknown>;
|
|
184
532
|
}
|
|
185
533
|
/** Complete output of one speculative strategy decision. */
|
|
186
534
|
export interface StrategyDecisionResult extends StrategyDecision {
|
|
187
535
|
/** Exact text to queue next, or `null` when this decision should not transmit. */
|
|
188
536
|
transmission: string | null;
|
|
537
|
+
/** Parallel transmissions. New strategies use this instead of `transmission`. */
|
|
538
|
+
transmissions?: StrategyTransmission[];
|
|
189
539
|
/** UI/diagnostic snapshot produced from the same post-decision state. */
|
|
190
540
|
snapshot: StrategyRuntimeSnapshot;
|
|
191
541
|
/** Optional QSO persistence effect executed by the Host after acceptance. */
|
|
192
542
|
qsoCompletion?: StrategyQSOCompletionEffect;
|
|
543
|
+
/** Parallel QSO effects committed in the same accepted decision. */
|
|
544
|
+
qsoCompletions?: StrategyQSOCompletionEffect[];
|
|
545
|
+
/** Host-managed plugin logbook lifecycle effects accepted with this decision. */
|
|
546
|
+
logbookSessionEffects?: StrategyLogbookSessionEffect[];
|
|
193
547
|
/** Optional cycle selected from the triggering RX frame; applied by the host after target reservation. */
|
|
194
548
|
requestedTransmitCycle?: number;
|
|
195
549
|
}
|
|
@@ -205,6 +559,11 @@ export interface StrategyRuntime {
|
|
|
205
559
|
checkpoint(): StrategyRuntimeCheckpoint;
|
|
206
560
|
/** Restores a previously captured checkpoint after a decision is discarded. */
|
|
207
561
|
restore(checkpoint: StrategyRuntimeCheckpoint): void;
|
|
562
|
+
/**
|
|
563
|
+
* Observes an already-applied Host transmit-cycle selection. Returning true
|
|
564
|
+
* asks the Host to publish the resulting runtime projection.
|
|
565
|
+
*/
|
|
566
|
+
onOperatorTransmitCyclesChanged?(change: StrategyOperatorTransmitCyclesChanged): boolean;
|
|
208
567
|
/**
|
|
209
568
|
* Optional acknowledgement for a declarative QSO effect. Implementations may
|
|
210
569
|
* use it to prevent a completed contact from leaking into the next lifecycle.
|
|
@@ -227,6 +586,12 @@ export interface StrategyRuntime {
|
|
|
227
586
|
* transmission should be queued.
|
|
228
587
|
*/
|
|
229
588
|
getTransmitText(): string | null;
|
|
589
|
+
/**
|
|
590
|
+
* Returns every lane that should contribute to the next physical frame.
|
|
591
|
+
* Legacy runtimes may omit this method; the Host then maps getTransmitText()
|
|
592
|
+
* to the `default` stream at the operator's configured audio frequency.
|
|
593
|
+
*/
|
|
594
|
+
getTransmissions?(): StrategyTransmission[];
|
|
230
595
|
/**
|
|
231
596
|
* Requests that the runtime initiate or resume a call to a target station.
|
|
232
597
|
*
|
|
@@ -251,6 +616,10 @@ export interface StrategyRuntime {
|
|
|
251
616
|
* Switches the runtime to a specific logical transmit slot/state.
|
|
252
617
|
*/
|
|
253
618
|
setState(state: StrategyRuntimeSlot): void;
|
|
619
|
+
/** Switches one independently progressing lane to a strategy-approved state. */
|
|
620
|
+
setStreamState?(update: StrategyStreamStateUpdate): void;
|
|
621
|
+
/** Executes one plugin-declared runtime, stream or queue-entry action. */
|
|
622
|
+
invokeAction?(invocation: StrategyActionInvocation): StrategyActionResult | void | Promise<StrategyActionResult | void>;
|
|
254
623
|
/**
|
|
255
624
|
* Updates the human-readable content associated with a logical slot.
|
|
256
625
|
*/
|
|
@@ -267,5 +636,7 @@ export interface StrategyRuntime {
|
|
|
267
636
|
* Use this to mirror queued text into internal state when needed.
|
|
268
637
|
*/
|
|
269
638
|
onTransmissionQueued?(transmission: string): void;
|
|
639
|
+
/** Physical success notification for a complete parallel frame. */
|
|
640
|
+
onTransmissionsCompleted?(receipts: StreamPhysicalReceipt[]): void;
|
|
270
641
|
}
|
|
271
642
|
//# sourceMappingURL=runtime.d.ts.map
|