@tx5dr/plugin-api 1.7.12 → 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.
Files changed (181) hide show
  1. package/README.md +475 -17
  2. package/dist/__tests__/adif.test.js +107 -0
  3. package/dist/__tests__/adif.test.js.map +1 -1
  4. package/dist/__tests__/capability-context.test.d.ts +2 -0
  5. package/dist/__tests__/capability-context.test.d.ts.map +1 -0
  6. package/dist/__tests__/capability-context.test.js +99 -0
  7. package/dist/__tests__/capability-context.test.js.map +1 -0
  8. package/dist/__tests__/testing-utils.test.js +234 -15
  9. package/dist/__tests__/testing-utils.test.js.map +1 -1
  10. package/dist/capabilities.d.ts +38 -0
  11. package/dist/capabilities.d.ts.map +1 -0
  12. package/dist/capabilities.js +50 -0
  13. package/dist/capabilities.js.map +1 -0
  14. package/dist/compatibility.d.ts +15 -0
  15. package/dist/compatibility.d.ts.map +1 -0
  16. package/dist/compatibility.js +71 -0
  17. package/dist/compatibility.js.map +1 -0
  18. package/dist/contest-logbook-ui/assets/contest-log.css +1 -0
  19. package/dist/contest-logbook-ui/assets/contest-log.js +40 -0
  20. package/dist/contest-logbook-ui/contest-log.html +13 -0
  21. package/dist/context.d.ts +125 -54
  22. package/dist/context.d.ts.map +1 -1
  23. package/dist/definition.d.ts +98 -21
  24. package/dist/definition.d.ts.map +1 -1
  25. package/dist/definition.js +8 -1
  26. package/dist/definition.js.map +1 -1
  27. package/dist/ft8/StandardQSOPluginRuntime.d.ts +142 -0
  28. package/dist/ft8/StandardQSOPluginRuntime.d.ts.map +1 -0
  29. package/dist/ft8/StandardQSOPluginRuntime.js +1592 -0
  30. package/dist/ft8/StandardQSOPluginRuntime.js.map +1 -0
  31. package/dist/ft8/index.d.ts +22 -0
  32. package/dist/ft8/index.d.ts.map +1 -0
  33. package/dist/ft8/index.js +176 -0
  34. package/dist/ft8/index.js.map +1 -0
  35. package/dist/helpers.d.ts +417 -132
  36. package/dist/helpers.d.ts.map +1 -1
  37. package/dist/hooks.d.ts +56 -34
  38. package/dist/hooks.d.ts.map +1 -1
  39. package/dist/host-dependencies.d.ts +101 -0
  40. package/dist/host-dependencies.d.ts.map +1 -1
  41. package/dist/index.d.ts +20 -6
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +12 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/runtime.d.ts +539 -13
  46. package/dist/runtime.d.ts.map +1 -1
  47. package/dist/runtime.js +9 -1
  48. package/dist/runtime.js.map +1 -1
  49. package/dist/settings.d.ts +31 -0
  50. package/dist/settings.d.ts.map +1 -1
  51. package/dist/simulation.d.ts +60 -0
  52. package/dist/simulation.d.ts.map +1 -0
  53. package/dist/simulation.js +2 -0
  54. package/dist/simulation.js.map +1 -0
  55. package/dist/sync.d.ts +98 -6
  56. package/dist/sync.d.ts.map +1 -1
  57. package/dist/sync.js +6 -0
  58. package/dist/sync.js.map +1 -1
  59. package/dist/testing/index.d.ts +74 -12
  60. package/dist/testing/index.d.ts.map +1 -1
  61. package/dist/testing/index.js +372 -105
  62. package/dist/testing/index.js.map +1 -1
  63. package/dist/toolkit/contest/CabrilloBuilder.d.ts +7 -0
  64. package/dist/toolkit/contest/CabrilloBuilder.d.ts.map +1 -0
  65. package/dist/toolkit/contest/CabrilloBuilder.js +11 -0
  66. package/dist/toolkit/contest/CabrilloBuilder.js.map +1 -0
  67. package/dist/toolkit/contest/ContestCategorySchema.d.ts +11 -0
  68. package/dist/toolkit/contest/ContestCategorySchema.d.ts.map +1 -0
  69. package/dist/toolkit/contest/ContestCategorySchema.js +6 -0
  70. package/dist/toolkit/contest/ContestCategorySchema.js.map +1 -0
  71. package/dist/toolkit/contest/ContestLogbook.d.ts +223 -0
  72. package/dist/toolkit/contest/ContestLogbook.d.ts.map +1 -0
  73. package/dist/toolkit/contest/ContestLogbook.js +845 -0
  74. package/dist/toolkit/contest/ContestLogbook.js.map +1 -0
  75. package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts +28 -0
  76. package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts.map +1 -0
  77. package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js +79 -0
  78. package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js.map +1 -0
  79. package/dist/toolkit/contest/ContestQsoProjector.d.ts +12 -0
  80. package/dist/toolkit/contest/ContestQsoProjector.d.ts.map +1 -0
  81. package/dist/toolkit/contest/ContestQsoProjector.js +13 -0
  82. package/dist/toolkit/contest/ContestQsoProjector.js.map +1 -0
  83. package/dist/toolkit/contest/ContestSessionNotifier.d.ts +9 -0
  84. package/dist/toolkit/contest/ContestSessionNotifier.d.ts.map +1 -0
  85. package/dist/toolkit/contest/ContestSessionNotifier.js +13 -0
  86. package/dist/toolkit/contest/ContestSessionNotifier.js.map +1 -0
  87. package/dist/toolkit/contest/ContestSessionRepository.d.ts +21 -0
  88. package/dist/toolkit/contest/ContestSessionRepository.d.ts.map +1 -0
  89. package/dist/toolkit/contest/ContestSessionRepository.js +27 -0
  90. package/dist/toolkit/contest/ContestSessionRepository.js.map +1 -0
  91. package/dist/toolkit/contest/DefaultContestSession.d.ts +105 -0
  92. package/dist/toolkit/contest/DefaultContestSession.d.ts.map +1 -0
  93. package/dist/toolkit/contest/DefaultContestSession.js +387 -0
  94. package/dist/toolkit/contest/DefaultContestSession.js.map +1 -0
  95. package/dist/toolkit/contest/DefaultContestWorkbench.d.ts +100 -0
  96. package/dist/toolkit/contest/DefaultContestWorkbench.d.ts.map +1 -0
  97. package/dist/toolkit/contest/DefaultContestWorkbench.js +33 -0
  98. package/dist/toolkit/contest/DefaultContestWorkbench.js.map +1 -0
  99. package/dist/toolkit/contest/FT8ContestDefinition.d.ts +83 -0
  100. package/dist/toolkit/contest/FT8ContestDefinition.d.ts.map +1 -0
  101. package/dist/toolkit/contest/FT8ContestDefinition.js +167 -0
  102. package/dist/toolkit/contest/FT8ContestDefinition.js.map +1 -0
  103. package/dist/toolkit/contest/FT8ContestModules.d.ts +178 -0
  104. package/dist/toolkit/contest/FT8ContestModules.d.ts.map +1 -0
  105. package/dist/toolkit/contest/FT8ContestModules.js +247 -0
  106. package/dist/toolkit/contest/FT8ContestModules.js.map +1 -0
  107. package/dist/toolkit/contest/FT8ContestPlugin.d.ts +55 -0
  108. package/dist/toolkit/contest/FT8ContestPlugin.d.ts.map +1 -0
  109. package/dist/toolkit/contest/FT8ContestPlugin.js +322 -0
  110. package/dist/toolkit/contest/FT8ContestPlugin.js.map +1 -0
  111. package/dist/toolkit/contest/FT8ContestTestKit.d.ts +12 -0
  112. package/dist/toolkit/contest/FT8ContestTestKit.d.ts.map +1 -0
  113. package/dist/toolkit/contest/FT8ContestTestKit.js +60 -0
  114. package/dist/toolkit/contest/FT8ContestTestKit.js.map +1 -0
  115. package/dist/toolkit/contest/contest-toolkit.test.d.ts +2 -0
  116. package/dist/toolkit/contest/contest-toolkit.test.d.ts.map +1 -0
  117. package/dist/toolkit/contest/contest-toolkit.test.js +1196 -0
  118. package/dist/toolkit/contest/contest-toolkit.test.js.map +1 -0
  119. package/dist/toolkit/contest/index.d.ts +14 -0
  120. package/dist/toolkit/contest/index.d.ts.map +1 -0
  121. package/dist/toolkit/contest/index.js +14 -0
  122. package/dist/toolkit/contest/index.js.map +1 -0
  123. package/dist/toolkit/index.d.ts +3 -0
  124. package/dist/toolkit/index.d.ts.map +1 -0
  125. package/dist/toolkit/index.js +3 -0
  126. package/dist/toolkit/index.js.map +1 -0
  127. package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts +15 -0
  128. package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts.map +1 -0
  129. package/dist/toolkit/parallel-qso/AuthorizationLease.js +25 -0
  130. package/dist/toolkit/parallel-qso/AuthorizationLease.js.map +1 -0
  131. package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts +40 -0
  132. package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts.map +1 -0
  133. package/dist/toolkit/parallel-qso/BoundedCallSessionController.js +81 -0
  134. package/dist/toolkit/parallel-qso/BoundedCallSessionController.js.map +1 -0
  135. package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts +2 -0
  136. package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts.map +1 -0
  137. package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js +31 -0
  138. package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js.map +1 -0
  139. package/dist/toolkit/parallel-qso/CompletionTracker.d.ts +20 -0
  140. package/dist/toolkit/parallel-qso/CompletionTracker.d.ts.map +1 -0
  141. package/dist/toolkit/parallel-qso/CompletionTracker.js +20 -0
  142. package/dist/toolkit/parallel-qso/CompletionTracker.js.map +1 -0
  143. package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts +19 -0
  144. package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts.map +1 -0
  145. package/dist/toolkit/parallel-qso/LaneFrequencyController.js +23 -0
  146. package/dist/toolkit/parallel-qso/LaneFrequencyController.js.map +1 -0
  147. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts +134 -0
  148. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts.map +1 -0
  149. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js +554 -0
  150. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js.map +1 -0
  151. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts +2 -0
  152. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts.map +1 -0
  153. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js +470 -0
  154. package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js.map +1 -0
  155. package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts +20 -0
  156. package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts.map +1 -0
  157. package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js +29 -0
  158. package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js.map +1 -0
  159. package/dist/toolkit/parallel-qso/ProtocolLane.d.ts +50 -0
  160. package/dist/toolkit/parallel-qso/ProtocolLane.d.ts.map +1 -0
  161. package/dist/toolkit/parallel-qso/ProtocolLane.js +2 -0
  162. package/dist/toolkit/parallel-qso/ProtocolLane.js.map +1 -0
  163. package/dist/toolkit/parallel-qso/controllers.test.d.ts +2 -0
  164. package/dist/toolkit/parallel-qso/controllers.test.d.ts.map +1 -0
  165. package/dist/toolkit/parallel-qso/controllers.test.js +36 -0
  166. package/dist/toolkit/parallel-qso/controllers.test.js.map +1 -0
  167. package/dist/toolkit/parallel-qso/index.d.ts +8 -0
  168. package/dist/toolkit/parallel-qso/index.d.ts.map +1 -0
  169. package/dist/toolkit/parallel-qso/index.js +8 -0
  170. package/dist/toolkit/parallel-qso/index.js.map +1 -0
  171. package/dist/utils/adif.d.ts +1 -1
  172. package/dist/utils/adif.d.ts.map +1 -1
  173. package/dist/utils/adif.js +96 -51
  174. package/dist/utils/adif.js.map +1 -1
  175. package/dist/utils/qso-text-fields.d.ts +7 -1
  176. package/dist/utils/qso-text-fields.d.ts.map +1 -1
  177. package/dist/utils/qso-text-fields.js +74 -6
  178. package/dist/utils/qso-text-fields.js.map +1 -1
  179. package/package.json +28 -6
  180. package/src/bridge.d.ts +3 -0
  181. package/tokens.css +51 -0
@@ -0,0 +1,134 @@
1
+ import type { ParsedFT8Message } from '@tx5dr/contracts';
2
+ import type { QSOFailureInfo } from '../../hooks.js';
3
+ import type { StrategyDecisionMetaV2, StrategyQSOCompletionEffect, StrategyQSOCompletionSettlement, StrategyStreamSnapshot, StrategyTransmission, StreamPhysicalReceipt, QueuedStrategyObservationMeta } from '../../runtime.js';
4
+ import type { ParallelQSOQueueEntry, ProtocolLane, ProtocolLaneIdentity } from './ProtocolLane.js';
5
+ export type ParallelQueueMutationReason = 'queue_full' | 'invalid_target' | 'entry_not_found' | 'active_entry' | 'version_conflict';
6
+ export interface ParallelQueueMutationResult<TData> {
7
+ outcome: 'accepted' | 'duplicate' | 'rejected';
8
+ reason?: ParallelQueueMutationReason;
9
+ version: number;
10
+ entry?: ParallelQSOQueueEntry<TData>;
11
+ affectedStreamIds: string[];
12
+ }
13
+ export interface ParallelQueueEntrySnapshot<TData> {
14
+ entry: ParallelQSOQueueEntry<TData>;
15
+ active: boolean;
16
+ streamId?: string;
17
+ audioFrequencyHz?: number;
18
+ }
19
+ export interface ParallelQueueSnapshot<TData> {
20
+ version: number;
21
+ maxActiveStreams: number;
22
+ activeEntryIds: string[];
23
+ entries: ParallelQueueEntrySnapshot<TData>[];
24
+ }
25
+ export interface ParallelQSOFillOptions<TData> {
26
+ currentTransmitCycle: 0 | 1;
27
+ isEligible?: (entry: Readonly<ParallelQSOQueueEntry<TData>>) => boolean | Promise<boolean>;
28
+ }
29
+ export interface ParallelQSOActivateEntryOptions {
30
+ currentTransmitCycle: 0 | 1;
31
+ streamId: string;
32
+ }
33
+ export interface ParallelQSOFillResult {
34
+ activatedEntryIds: string[];
35
+ rejectedEntryIds: string[];
36
+ requestedTransmitCycle?: 0 | 1;
37
+ }
38
+ export interface ParallelQSOReleasedEntry {
39
+ streamId: string;
40
+ entryId: string;
41
+ disposition: 'remove-entry' | 'retain-entry';
42
+ reason: string;
43
+ }
44
+ export interface ParallelQSODecisionResult {
45
+ transmissions: StrategyTransmission[];
46
+ qsoCompletions: StrategyQSOCompletionEffect[];
47
+ qsoFailures: QSOFailureInfo[];
48
+ streams: StrategyStreamSnapshot[];
49
+ activeEntryIds: string[];
50
+ releasedEntries: ParallelQSOReleasedEntry[];
51
+ }
52
+ export interface ParallelQSOCoordinatorCheckpoint<TData> {
53
+ version: number;
54
+ nextEntrySequence: number;
55
+ maxStreams: number;
56
+ entries: ParallelQSOQueueEntry<TData>[];
57
+ bindings: Array<{
58
+ streamId: string;
59
+ entryId: string;
60
+ transmitCycle: 0 | 1;
61
+ }>;
62
+ lanes: Array<{
63
+ streamId: string;
64
+ checkpoint: unknown;
65
+ }>;
66
+ }
67
+ export interface ParallelQSOCoordinatorOptions<TData> {
68
+ maxSupportedStreams: number;
69
+ initialMaxStreams: number;
70
+ createLane(identity: ProtocolLaneIdentity): ProtocolLane<TData>;
71
+ maxQueueSize?: number;
72
+ entryIdPrefix?: string;
73
+ }
74
+ /** Protocol-neutral queue and stable-lane scheduler for built-in strategies. */
75
+ export declare class ParallelQSOCoordinator<TData> {
76
+ private readonly lanes;
77
+ private readonly lanesByStreamId;
78
+ private readonly maxSupportedStreams;
79
+ private readonly maxQueueSize;
80
+ private readonly entryIdPrefix;
81
+ private entries;
82
+ private bindings;
83
+ private version;
84
+ private nextEntrySequence;
85
+ private maxStreams;
86
+ constructor(options: ParallelQSOCoordinatorOptions<TData>);
87
+ getMaxStreams(): number;
88
+ setMaxStreams(maxStreams: number, options?: {
89
+ preemptExcess?: boolean;
90
+ }): string[];
91
+ enqueue(input: {
92
+ targetKey: string;
93
+ callsign: string;
94
+ requestedTransmitCycle?: 0 | 1;
95
+ data: TData;
96
+ }): ParallelQueueMutationResult<TData>;
97
+ reorder(entryId: string, beforeEntryId: string | null, expectedVersion: number): ParallelQueueMutationResult<TData>;
98
+ remove(entryId: string, expectedVersion: number): ParallelQueueMutationResult<TData>;
99
+ clear(expectedVersion: number): ParallelQueueMutationResult<TData>;
100
+ updateEntry(entryId: string, update: (data: TData) => boolean): boolean;
101
+ setRequestedTransmitCycle(entryId: string, cycle: 0 | 1): boolean;
102
+ markChanged(): void;
103
+ releaseEntry(entryId: string, options: {
104
+ removeEntry: boolean;
105
+ reason: string;
106
+ resetLane?: boolean;
107
+ }): string | undefined;
108
+ getEntry(entryId: string): ParallelQSOQueueEntry<TData> | undefined;
109
+ findEntryByTargetKey(targetKey: string): ParallelQSOQueueEntry<TData> | undefined;
110
+ getQueueSnapshot(): ParallelQueueSnapshot<TData>;
111
+ fillAvailableLanes(options: ParallelQSOFillOptions<TData>): Promise<ParallelQSOFillResult>;
112
+ activateEntry(entryId: string, options: ParallelQSOActivateEntryOptions): ParallelQSOFillResult;
113
+ observe(messages: ParsedFT8Message[], meta: QueuedStrategyObservationMeta): boolean;
114
+ decide(messages: ParsedFT8Message[], meta: StrategyDecisionMetaV2): Promise<ParallelQSODecisionResult>;
115
+ getTransmissions(): StrategyTransmission[];
116
+ getStreams(): StrategyStreamSnapshot[];
117
+ setStreamState(streamId: string, stateId: string, expectedLifecycleEpoch: number): boolean;
118
+ invokeStreamAction(streamId: string, lifecycleEpoch: number, actionId: string, payload?: unknown): Promise<import('../../runtime.js').StrategyActionResult | void>;
119
+ onPhysicalReceipts(receipts: StreamPhysicalReceipt[]): string[];
120
+ settleQSOCompletion(settlement: StrategyQSOCompletionSettlement): boolean;
121
+ checkpoint(): ParallelQSOCoordinatorCheckpoint<TData>;
122
+ restore(checkpoint: ParallelQSOCoordinatorCheckpoint<TData>): void;
123
+ reset(reason?: string): void;
124
+ private workingLanes;
125
+ private waitingEntries;
126
+ private getActiveStreamIds;
127
+ private findStreamIdForEntry;
128
+ private releaseBinding;
129
+ private mutationResult;
130
+ private bumpVersion;
131
+ private validateMaxStreams;
132
+ private validateCheckpoint;
133
+ }
134
+ //# sourceMappingURL=ParallelQSOCoordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelQSOCoordinator.d.ts","sourceRoot":"","sources":["../../../src/toolkit/parallel-qso/ParallelQSOCoordinator.ts"],"names":[],"mappings":"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"}