@tx5dr/contracts 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 (255) hide show
  1. package/dist/index.d.ts +7 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/schema/__tests__/android-operator-audio.schema.test.d.ts +2 -0
  6. package/dist/schema/__tests__/android-operator-audio.schema.test.d.ts.map +1 -0
  7. package/dist/schema/__tests__/android-operator-audio.schema.test.js +27 -0
  8. package/dist/schema/__tests__/android-operator-audio.schema.test.js.map +1 -0
  9. package/dist/schema/__tests__/assisted-queue.schema.test.d.ts +2 -0
  10. package/dist/schema/__tests__/assisted-queue.schema.test.d.ts.map +1 -0
  11. package/dist/schema/__tests__/assisted-queue.schema.test.js +114 -0
  12. package/dist/schema/__tests__/assisted-queue.schema.test.js.map +1 -0
  13. package/dist/schema/__tests__/audio-sidecar.schema.test.d.ts +2 -0
  14. package/dist/schema/__tests__/audio-sidecar.schema.test.d.ts.map +1 -0
  15. package/dist/schema/__tests__/audio-sidecar.schema.test.js +42 -0
  16. package/dist/schema/__tests__/audio-sidecar.schema.test.js.map +1 -0
  17. package/dist/schema/__tests__/audio.schema.test.js +92 -1
  18. package/dist/schema/__tests__/audio.schema.test.js.map +1 -1
  19. package/dist/schema/__tests__/diagnostics.schema.test.d.ts +2 -0
  20. package/dist/schema/__tests__/diagnostics.schema.test.d.ts.map +1 -0
  21. package/dist/schema/__tests__/diagnostics.schema.test.js +31 -0
  22. package/dist/schema/__tests__/diagnostics.schema.test.js.map +1 -0
  23. package/dist/schema/__tests__/logbook-health.schema.test.d.ts +2 -0
  24. package/dist/schema/__tests__/logbook-health.schema.test.d.ts.map +1 -0
  25. package/dist/schema/__tests__/logbook-health.schema.test.js +104 -0
  26. package/dist/schema/__tests__/logbook-health.schema.test.js.map +1 -0
  27. package/dist/schema/__tests__/meter.schema.test.d.ts +2 -0
  28. package/dist/schema/__tests__/meter.schema.test.d.ts.map +1 -0
  29. package/dist/schema/__tests__/meter.schema.test.js +27 -0
  30. package/dist/schema/__tests__/meter.schema.test.js.map +1 -0
  31. package/dist/schema/__tests__/observability.schema.test.d.ts +2 -0
  32. package/dist/schema/__tests__/observability.schema.test.d.ts.map +1 -0
  33. package/dist/schema/__tests__/observability.schema.test.js +12 -0
  34. package/dist/schema/__tests__/observability.schema.test.js.map +1 -0
  35. package/dist/schema/__tests__/operator-context-report.schema.test.d.ts +2 -0
  36. package/dist/schema/__tests__/operator-context-report.schema.test.d.ts.map +1 -0
  37. package/dist/schema/__tests__/operator-context-report.schema.test.js +70 -0
  38. package/dist/schema/__tests__/operator-context-report.schema.test.js.map +1 -0
  39. package/dist/schema/__tests__/operator.schema.test.js +9 -3
  40. package/dist/schema/__tests__/operator.schema.test.js.map +1 -1
  41. package/dist/schema/__tests__/plugin-market.schema.test.js +149 -3
  42. package/dist/schema/__tests__/plugin-market.schema.test.js.map +1 -1
  43. package/dist/schema/__tests__/qso.schema.test.d.ts +2 -0
  44. package/dist/schema/__tests__/qso.schema.test.d.ts.map +1 -0
  45. package/dist/schema/__tests__/qso.schema.test.js +70 -0
  46. package/dist/schema/__tests__/qso.schema.test.js.map +1 -0
  47. package/dist/schema/__tests__/radio-power-support.test.js +15 -0
  48. package/dist/schema/__tests__/radio-power-support.test.js.map +1 -1
  49. package/dist/schema/__tests__/radio-profile.schema.test.d.ts +2 -0
  50. package/dist/schema/__tests__/radio-profile.schema.test.d.ts.map +1 -0
  51. package/dist/schema/__tests__/radio-profile.schema.test.js +36 -0
  52. package/dist/schema/__tests__/radio-profile.schema.test.js.map +1 -0
  53. package/dist/schema/__tests__/radio.schema.test.js +92 -1
  54. package/dist/schema/__tests__/radio.schema.test.js.map +1 -1
  55. package/dist/schema/__tests__/realtime-settings.schema.test.js +2 -1
  56. package/dist/schema/__tests__/realtime-settings.schema.test.js.map +1 -1
  57. package/dist/schema/__tests__/remote-access.schema.test.d.ts +2 -0
  58. package/dist/schema/__tests__/remote-access.schema.test.d.ts.map +1 -0
  59. package/dist/schema/__tests__/remote-access.schema.test.js +18 -0
  60. package/dist/schema/__tests__/remote-access.schema.test.js.map +1 -0
  61. package/dist/schema/__tests__/spectrum.schema.test.d.ts +2 -0
  62. package/dist/schema/__tests__/spectrum.schema.test.d.ts.map +1 -0
  63. package/dist/schema/__tests__/spectrum.schema.test.js +107 -0
  64. package/dist/schema/__tests__/spectrum.schema.test.js.map +1 -0
  65. package/dist/schema/__tests__/strategy-transmission.schema.test.d.ts +2 -0
  66. package/dist/schema/__tests__/strategy-transmission.schema.test.d.ts.map +1 -0
  67. package/dist/schema/__tests__/strategy-transmission.schema.test.js +95 -0
  68. package/dist/schema/__tests__/strategy-transmission.schema.test.js.map +1 -0
  69. package/dist/schema/android-operator-audio.schema.d.ts +174 -0
  70. package/dist/schema/android-operator-audio.schema.d.ts.map +1 -0
  71. package/dist/schema/android-operator-audio.schema.js +38 -0
  72. package/dist/schema/android-operator-audio.schema.js.map +1 -0
  73. package/dist/schema/api-response.schema.d.ts +503 -44
  74. package/dist/schema/api-response.schema.d.ts.map +1 -1
  75. package/dist/schema/api-response.schema.js +9 -0
  76. package/dist/schema/api-response.schema.js.map +1 -1
  77. package/dist/schema/audio-sidecar.schema.d.ts +75 -0
  78. package/dist/schema/audio-sidecar.schema.d.ts.map +1 -1
  79. package/dist/schema/audio-sidecar.schema.js +32 -0
  80. package/dist/schema/audio-sidecar.schema.js.map +1 -1
  81. package/dist/schema/audio.schema.d.ts +4749 -3
  82. package/dist/schema/audio.schema.d.ts.map +1 -1
  83. package/dist/schema/audio.schema.js +101 -2
  84. package/dist/schema/audio.schema.js.map +1 -1
  85. package/dist/schema/auth.schema.d.ts +173 -14
  86. package/dist/schema/auth.schema.d.ts.map +1 -1
  87. package/dist/schema/auth.schema.js +65 -1
  88. package/dist/schema/auth.schema.js.map +1 -1
  89. package/dist/schema/cpu-profile.schema.d.ts +2 -2
  90. package/dist/schema/cw-decoder.schema.d.ts +74 -74
  91. package/dist/schema/cw-keyer.schema.d.ts +20 -14
  92. package/dist/schema/cw-keyer.schema.d.ts.map +1 -1
  93. package/dist/schema/cw-keyer.schema.js +3 -0
  94. package/dist/schema/cw-keyer.schema.js.map +1 -1
  95. package/dist/schema/desktop-https.schema.d.ts +6 -6
  96. package/dist/schema/device-ui.schema.d.ts +16 -16
  97. package/dist/schema/diagnostics.schema.d.ts +163 -0
  98. package/dist/schema/diagnostics.schema.d.ts.map +1 -0
  99. package/dist/schema/diagnostics.schema.js +46 -0
  100. package/dist/schema/diagnostics.schema.js.map +1 -0
  101. package/dist/schema/ft8.schema.d.ts +12 -2
  102. package/dist/schema/ft8.schema.d.ts.map +1 -1
  103. package/dist/schema/ft8.schema.js +8 -0
  104. package/dist/schema/ft8.schema.js.map +1 -1
  105. package/dist/schema/image-radio.schema.d.ts +2597 -0
  106. package/dist/schema/image-radio.schema.d.ts.map +1 -0
  107. package/dist/schema/image-radio.schema.js +283 -0
  108. package/dist/schema/image-radio.schema.js.map +1 -0
  109. package/dist/schema/logbook.schema.d.ts +2128 -18
  110. package/dist/schema/logbook.schema.d.ts.map +1 -1
  111. package/dist/schema/logbook.schema.js +159 -1
  112. package/dist/schema/logbook.schema.js.map +1 -1
  113. package/dist/schema/mode.schema.d.ts +4 -6
  114. package/dist/schema/mode.schema.d.ts.map +1 -1
  115. package/dist/schema/mode.schema.js +18 -6
  116. package/dist/schema/mode.schema.js.map +1 -1
  117. package/dist/schema/observability.schema.d.ts +66 -0
  118. package/dist/schema/observability.schema.d.ts.map +1 -0
  119. package/dist/schema/observability.schema.js +20 -0
  120. package/dist/schema/observability.schema.js.map +1 -0
  121. package/dist/schema/openwebrx.schema.d.ts +2 -2
  122. package/dist/schema/operator.schema.d.ts +2682 -6
  123. package/dist/schema/operator.schema.d.ts.map +1 -1
  124. package/dist/schema/operator.schema.js +10 -20
  125. package/dist/schema/operator.schema.js.map +1 -1
  126. package/dist/schema/plugin.schema.d.ts +1977 -492
  127. package/dist/schema/plugin.schema.d.ts.map +1 -1
  128. package/dist/schema/plugin.schema.js +165 -14
  129. package/dist/schema/plugin.schema.js.map +1 -1
  130. package/dist/schema/process-monitor.schema.d.ts +132 -132
  131. package/dist/schema/pskreporter.schema.d.ts +1 -3
  132. package/dist/schema/pskreporter.schema.d.ts.map +1 -1
  133. package/dist/schema/pskreporter.schema.js +1 -3
  134. package/dist/schema/pskreporter.schema.js.map +1 -1
  135. package/dist/schema/qso.schema.d.ts +246 -1
  136. package/dist/schema/qso.schema.d.ts.map +1 -1
  137. package/dist/schema/qso.schema.js +68 -0
  138. package/dist/schema/qso.schema.js.map +1 -1
  139. package/dist/schema/radio-capability.schema.d.ts +31 -40
  140. package/dist/schema/radio-capability.schema.d.ts.map +1 -1
  141. package/dist/schema/radio-capability.schema.js +8 -15
  142. package/dist/schema/radio-capability.schema.js.map +1 -1
  143. package/dist/schema/radio-power-support.d.ts.map +1 -1
  144. package/dist/schema/radio-power-support.js +3 -0
  145. package/dist/schema/radio-power-support.js.map +1 -1
  146. package/dist/schema/radio-power.schema.d.ts +102 -13
  147. package/dist/schema/radio-power.schema.d.ts.map +1 -1
  148. package/dist/schema/radio-power.schema.js +15 -8
  149. package/dist/schema/radio-power.schema.js.map +1 -1
  150. package/dist/schema/radio-profile.schema.d.ts +1491 -97
  151. package/dist/schema/radio-profile.schema.d.ts.map +1 -1
  152. package/dist/schema/radio-profile.schema.js +7 -0
  153. package/dist/schema/radio-profile.schema.js.map +1 -1
  154. package/dist/schema/radio.schema.d.ts +442 -48
  155. package/dist/schema/radio.schema.d.ts.map +1 -1
  156. package/dist/schema/radio.schema.js +75 -7
  157. package/dist/schema/radio.schema.js.map +1 -1
  158. package/dist/schema/realtime.schema.d.ts +60 -52
  159. package/dist/schema/realtime.schema.d.ts.map +1 -1
  160. package/dist/schema/realtime.schema.js +9 -1
  161. package/dist/schema/realtime.schema.js.map +1 -1
  162. package/dist/schema/rigctld.schema.d.ts +6 -6
  163. package/dist/schema/slot-info.schema.d.ts +28 -9
  164. package/dist/schema/slot-info.schema.d.ts.map +1 -1
  165. package/dist/schema/slot-info.schema.js +17 -10
  166. package/dist/schema/slot-info.schema.js.map +1 -1
  167. package/dist/schema/spectrum-config.schema.d.ts +638 -0
  168. package/dist/schema/spectrum-config.schema.d.ts.map +1 -0
  169. package/dist/schema/spectrum-config.schema.js +129 -0
  170. package/dist/schema/spectrum-config.schema.js.map +1 -0
  171. package/dist/schema/spectrum.schema.d.ts +1323 -30
  172. package/dist/schema/spectrum.schema.d.ts.map +1 -1
  173. package/dist/schema/spectrum.schema.js +72 -0
  174. package/dist/schema/spectrum.schema.js.map +1 -1
  175. package/dist/schema/station-info.schema.d.ts +5 -0
  176. package/dist/schema/station-info.schema.d.ts.map +1 -1
  177. package/dist/schema/station-info.schema.js +5 -0
  178. package/dist/schema/station-info.schema.js.map +1 -1
  179. package/dist/schema/system.schema.d.ts +56 -6
  180. package/dist/schema/system.schema.d.ts.map +1 -1
  181. package/dist/schema/system.schema.js +22 -0
  182. package/dist/schema/system.schema.js.map +1 -1
  183. package/dist/schema/transmission.schema.d.ts +8 -7
  184. package/dist/schema/transmission.schema.d.ts.map +1 -1
  185. package/dist/schema/transmission.schema.js +2 -7
  186. package/dist/schema/transmission.schema.js.map +1 -1
  187. package/dist/schema/tx-audio-input.schema.d.ts +8 -0
  188. package/dist/schema/tx-audio-input.schema.d.ts.map +1 -0
  189. package/dist/schema/tx-audio-input.schema.js +19 -0
  190. package/dist/schema/tx-audio-input.schema.js.map +1 -0
  191. package/dist/schema/voice-keyer.schema.d.ts +16 -16
  192. package/dist/schema/voice.schema.d.ts +1 -1
  193. package/dist/schema/voice.schema.d.ts.map +1 -1
  194. package/dist/schema/voice.schema.js +1 -1
  195. package/dist/schema/voice.schema.js.map +1 -1
  196. package/dist/schema/websocket.schema.d.ts +35811 -7829
  197. package/dist/schema/websocket.schema.d.ts.map +1 -1
  198. package/dist/schema/websocket.schema.js +453 -9
  199. package/dist/schema/websocket.schema.js.map +1 -1
  200. package/package.json +6 -1
  201. package/src/index.ts +7 -0
  202. package/src/schema/__tests__/android-operator-audio.schema.test.ts +31 -0
  203. package/src/schema/__tests__/assisted-queue.schema.test.ts +122 -0
  204. package/src/schema/__tests__/audio-sidecar.schema.test.ts +48 -0
  205. package/src/schema/__tests__/audio.schema.test.ts +102 -0
  206. package/src/schema/__tests__/diagnostics.schema.test.ts +32 -0
  207. package/src/schema/__tests__/logbook-health.schema.test.ts +117 -0
  208. package/src/schema/__tests__/meter.schema.test.ts +28 -0
  209. package/src/schema/__tests__/observability.schema.test.ts +15 -0
  210. package/src/schema/__tests__/operator-context-report.schema.test.ts +77 -0
  211. package/src/schema/__tests__/operator.schema.test.ts +11 -3
  212. package/src/schema/__tests__/plugin-market.schema.test.ts +165 -2
  213. package/src/schema/__tests__/qso.schema.test.ts +91 -0
  214. package/src/schema/__tests__/radio-power-support.test.ts +17 -0
  215. package/src/schema/__tests__/radio-profile.schema.test.ts +44 -0
  216. package/src/schema/__tests__/radio.schema.test.ts +108 -1
  217. package/src/schema/__tests__/realtime-settings.schema.test.ts +2 -1
  218. package/src/schema/__tests__/remote-access.schema.test.ts +22 -0
  219. package/src/schema/__tests__/spectrum.schema.test.ts +119 -0
  220. package/src/schema/__tests__/strategy-transmission.schema.test.ts +106 -0
  221. package/src/schema/android-operator-audio.schema.ts +49 -0
  222. package/src/schema/api-response.schema.ts +11 -0
  223. package/src/schema/audio-sidecar.schema.ts +35 -0
  224. package/src/schema/audio.schema.ts +115 -2
  225. package/src/schema/auth.schema.ts +79 -1
  226. package/src/schema/cw-keyer.schema.ts +5 -0
  227. package/src/schema/diagnostics.schema.ts +55 -0
  228. package/src/schema/ft8.schema.ts +8 -0
  229. package/src/schema/image-radio.schema.ts +342 -0
  230. package/src/schema/logbook.schema.ts +205 -1
  231. package/src/schema/mode.schema.ts +18 -6
  232. package/src/schema/observability.schema.ts +26 -0
  233. package/src/schema/operator.schema.ts +11 -20
  234. package/src/schema/plugin.schema.ts +186 -15
  235. package/src/schema/pskreporter.schema.ts +1 -3
  236. package/src/schema/qso.schema.ts +78 -0
  237. package/src/schema/radio-capability.schema.ts +8 -15
  238. package/src/schema/radio-power-support.ts +3 -0
  239. package/src/schema/radio-power.schema.ts +15 -8
  240. package/src/schema/radio-profile.schema.ts +7 -0
  241. package/src/schema/radio.schema.ts +90 -7
  242. package/src/schema/realtime.schema.ts +9 -1
  243. package/src/schema/slot-info.schema.ts +18 -11
  244. package/src/schema/spectrum-config.schema.ts +156 -0
  245. package/src/schema/spectrum.schema.ts +89 -0
  246. package/src/schema/station-info.schema.ts +5 -0
  247. package/src/schema/system.schema.ts +29 -0
  248. package/src/schema/transmission.schema.ts +2 -7
  249. package/src/schema/tx-audio-input.schema.ts +22 -0
  250. package/src/schema/voice.schema.ts +1 -1
  251. package/src/schema/websocket.schema.ts +601 -13
  252. package/test/image-radio-schema.test.ts +107 -0
  253. package/test/plugin-slot-schema.test.ts +31 -0
  254. package/test/radio-capability-schema.test.ts +44 -0
  255. package/CLAUDE.md +0 -41
@@ -26,9 +26,7 @@ export declare const PSKReporterStatsSchema: z.ZodObject<{
26
26
  totalReportCount?: number | undefined;
27
27
  consecutiveFailures?: number | undefined;
28
28
  }>;
29
- /**
30
- * PSKReporter 配置 Schema
31
- */
29
+ /** PSK Reporter publishing identity, antenna metadata, interval and counters. */
32
30
  export declare const PSKReporterConfigSchema: z.ZodObject<{
33
31
  /** 是否启用 PSKReporter 上报 */
34
32
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"pskreporter.schema.d.ts","sourceRoot":"","sources":["../../src/schema/pskreporter.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,sBAAsB;IACjC,wBAAwB;;IAExB,aAAa;;IAEb,YAAY;;IAEZ,aAAa;;IAEb,aAAa;;;;;;;;;;;;;;EAEb,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,0BAA0B;;IAG1B,iCAAiC;;IAGjC,iCAAiC;;IAGjC,oBAAoB;;IAGpB,qCAAqC;;IAGrC,gCAAgC;;IAGhC,yBAAyB;;IAGzB,WAAW;;QArCX,wBAAwB;;QAExB,aAAa;;QAEb,YAAY;;QAEZ,aAAa;;QAEb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+Bb,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,kBAAkB;;IAGlB,iBAAiB;;IAGjB,sBAAsB;;IAGtB,eAAe;;IAGf,qBAAqB;;IAGrB,yBAAyB;;IAGzB,0BAA0B;;;;;;;;;;;;;;;;;;EAE1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,YAAY;;IAEZ,aAAa;;IAEb,cAAc;;IAEd,cAAc;;IAEd,aAAa;;IAEb,sBAAsB;;IAEtB,eAAe;;IAEf,aAAa;;IAEb,WAAW;;;;;;;;;;;;;;;;;;;;;;EAEX,CAAC;AAGH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"pskreporter.schema.d.ts","sourceRoot":"","sources":["../../src/schema/pskreporter.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,sBAAsB;IACjC,wBAAwB;;IAExB,aAAa;;IAEb,YAAY;;IAEZ,aAAa;;IAEb,aAAa;;;;;;;;;;;;;;EAEb,CAAC;AAEH,iFAAiF;AACjF,eAAO,MAAM,uBAAuB;IAClC,0BAA0B;;IAG1B,iCAAiC;;IAGjC,iCAAiC;;IAGjC,oBAAoB;;IAGpB,qCAAqC;;IAGrC,gCAAgC;;IAGhC,yBAAyB;;IAGzB,WAAW;;QAnCX,wBAAwB;;QAExB,aAAa;;QAEb,YAAY;;QAEZ,aAAa;;QAEb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6Bb,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,kBAAkB;;IAGlB,iBAAiB;;IAGjB,sBAAsB;;IAGtB,eAAe;;IAGf,qBAAqB;;IAGrB,yBAAyB;;IAGzB,0BAA0B;;;;;;;;;;;;;;;;;;EAE1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,YAAY;;IAEZ,aAAa;;IAEb,cAAc;;IAEd,cAAc;;IAEd,aAAa;;IAEb,sBAAsB;;IAEtB,eAAe;;IAEf,aAAa;;IAEb,WAAW;;;;;;;;;;;;;;;;;;;;;;EAEX,CAAC;AAGH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -14,9 +14,7 @@ export const PSKReporterStatsSchema = z.object({
14
14
  /** 连续失败次数 */
15
15
  consecutiveFailures: z.number().default(0),
16
16
  });
17
- /**
18
- * PSKReporter 配置 Schema
19
- */
17
+ /** PSK Reporter publishing identity, antenna metadata, interval and counters. */
20
18
  export const PSKReporterConfigSchema = z.object({
21
19
  /** 是否启用 PSKReporter 上报 */
22
20
  enabled: z.boolean().default(false),
@@ -1 +1 @@
1
- {"version":3,"file":"pskreporter.schema.js","sourceRoot":"","sources":["../../src/schema/pskreporter.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pskreporter.schema.js","sourceRoot":"","sources":["../../src/schema/pskreporter.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,wBAAwB;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,aAAa;IACb,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,YAAY;IACZ,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,aAAa;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa;IACb,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,0BAA0B;IAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAEnC,iCAAiC;IACjC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAExC,iCAAiC;IACjC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAEvC,oBAAoB;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAE9C,qCAAqC;IACrC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAElE,gCAAgC;IAChC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAE7D,yBAAyB;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAEzC,WAAW;IACX,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,kBAAkB;IAClB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAE1B,iBAAiB;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC,sBAAsB;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAEhB,eAAe;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE1B,qBAAqB;IACrB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAE5B,yBAAyB;IACzB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEpC,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY;IACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,aAAa;IACb,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,cAAc;IACd,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,cAAc;IACd,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa;IACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,sBAAsB;IACtB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,eAAe;IACf,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa;IACb,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,WAAW;IACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
@@ -19,6 +19,64 @@ export declare const DxccStatusSchema: z.ZodEnum<["current", "deleted", "none",
19
19
  export declare const DxccSourceSchema: z.ZodEnum<["resolver", "adif", "lotw", "manual_override"]>;
20
20
  export declare const DxccConfidenceSchema: z.ZodEnum<["exception", "prefix", "heuristic", "manual", "unknown"]>;
21
21
  export declare const SubdivisionConfidenceSchema: z.ZodEnum<["high", "low"]>;
22
+ /** Maximum UTF-8 JSON size of contest-owned data persisted with one QSO. */
23
+ export declare const CONTEST_QSO_ENVELOPE_MAX_BYTES: number;
24
+ /**
25
+ * Versioned contest facts that must be committed atomically with their QSO.
26
+ *
27
+ * The shape is deliberately shallow and bounded. Contest plugins may choose
28
+ * their exchange and annotation keys, but cannot persist arbitrary object
29
+ * graphs or binary payloads in the logbook record.
30
+ */
31
+ export declare const ContestQsoEnvelopeSchema: z.ZodEffects<z.ZodObject<{
32
+ schemaVersion: z.ZodLiteral<1>;
33
+ contestId: z.ZodString;
34
+ editionId: z.ZodString;
35
+ rulesetVersion: z.ZodString;
36
+ sent: z.ZodRecord<z.ZodString, z.ZodString>;
37
+ received: z.ZodRecord<z.ZodString, z.ZodString>;
38
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
39
+ }, "strict", z.ZodTypeAny, {
40
+ received: Record<string, string>;
41
+ schemaVersion: 1;
42
+ contestId: string;
43
+ editionId: string;
44
+ rulesetVersion: string;
45
+ sent: Record<string, string>;
46
+ annotations?: Record<string, string | number | boolean> | undefined;
47
+ }, {
48
+ received: Record<string, string>;
49
+ schemaVersion: 1;
50
+ contestId: string;
51
+ editionId: string;
52
+ rulesetVersion: string;
53
+ sent: Record<string, string>;
54
+ annotations?: Record<string, string | number | boolean> | undefined;
55
+ }>, {
56
+ received: Record<string, string>;
57
+ schemaVersion: 1;
58
+ contestId: string;
59
+ editionId: string;
60
+ rulesetVersion: string;
61
+ sent: Record<string, string>;
62
+ annotations?: Record<string, string | number | boolean> | undefined;
63
+ }, {
64
+ received: Record<string, string>;
65
+ schemaVersion: 1;
66
+ contestId: string;
67
+ editionId: string;
68
+ rulesetVersion: string;
69
+ sent: Record<string, string>;
70
+ annotations?: Record<string, string | number | boolean> | undefined;
71
+ }>;
72
+ /**
73
+ * Serialize a validated contest envelope as ASCII-only JSON for durable ADIF
74
+ * private fields. Escaping non-ASCII and angle brackets keeps legacy string
75
+ * ADIF readers byte-safe without changing the decoded data.
76
+ */
77
+ export declare function serializeContestQsoEnvelope(value: ContestQsoEnvelope): string;
78
+ /** Parse and validate an envelope read from a durable private field. */
79
+ export declare function parseContestQsoEnvelope(value: string): ContestQsoEnvelope | undefined;
22
80
  export declare const OperatorConfigSchema: z.ZodObject<{
23
81
  id: z.ZodString;
24
82
  mode: z.ZodObject<{
@@ -50,6 +108,7 @@ export declare const OperatorConfigSchema: z.ZodObject<{
50
108
  maxQSOTimeoutCycles: z.ZodNumber;
51
109
  maxCallAttempts: z.ZodNumber;
52
110
  frequency: z.ZodNumber;
111
+ maxConcurrentStreams: z.ZodOptional<z.ZodNumber>;
53
112
  autoResumeCQAfterFail: z.ZodDefault<z.ZodBoolean>;
54
113
  autoResumeCQAfterSuccess: z.ZodDefault<z.ZodBoolean>;
55
114
  replyToWorkedStations: z.ZodDefault<z.ZodBoolean>;
@@ -77,6 +136,7 @@ export declare const OperatorConfigSchema: z.ZodObject<{
77
136
  replyToWorkedStations: boolean;
78
137
  prioritizeNewCalls: boolean;
79
138
  targetSelectionPriorityMode: "balanced" | "dxcc_first" | "new_callsign_first";
139
+ maxConcurrentStreams?: number | undefined;
80
140
  }, {
81
141
  id: string;
82
142
  mode: {
@@ -94,6 +154,7 @@ export declare const OperatorConfigSchema: z.ZodObject<{
94
154
  maxQSOTimeoutCycles: number;
95
155
  maxCallAttempts: number;
96
156
  frequency: number;
157
+ maxConcurrentStreams?: number | undefined;
97
158
  autoResumeCQAfterFail?: boolean | undefined;
98
159
  autoResumeCQAfterSuccess?: boolean | undefined;
99
160
  replyToWorkedStations?: boolean | undefined;
@@ -132,6 +193,7 @@ export declare const QSOContextSchema: z.ZodObject<{
132
193
  maxQSOTimeoutCycles: z.ZodNumber;
133
194
  maxCallAttempts: z.ZodNumber;
134
195
  frequency: z.ZodNumber;
196
+ maxConcurrentStreams: z.ZodOptional<z.ZodNumber>;
135
197
  autoResumeCQAfterFail: z.ZodDefault<z.ZodBoolean>;
136
198
  autoResumeCQAfterSuccess: z.ZodDefault<z.ZodBoolean>;
137
199
  replyToWorkedStations: z.ZodDefault<z.ZodBoolean>;
@@ -159,6 +221,7 @@ export declare const QSOContextSchema: z.ZodObject<{
159
221
  replyToWorkedStations: boolean;
160
222
  prioritizeNewCalls: boolean;
161
223
  targetSelectionPriorityMode: "balanced" | "dxcc_first" | "new_callsign_first";
224
+ maxConcurrentStreams?: number | undefined;
162
225
  }, {
163
226
  id: string;
164
227
  mode: {
@@ -176,6 +239,7 @@ export declare const QSOContextSchema: z.ZodObject<{
176
239
  maxQSOTimeoutCycles: number;
177
240
  maxCallAttempts: number;
178
241
  frequency: number;
242
+ maxConcurrentStreams?: number | undefined;
179
243
  autoResumeCQAfterFail?: boolean | undefined;
180
244
  autoResumeCQAfterSuccess?: boolean | undefined;
181
245
  replyToWorkedStations?: boolean | undefined;
@@ -210,6 +274,7 @@ export declare const QSOContextSchema: z.ZodObject<{
210
274
  replyToWorkedStations: boolean;
211
275
  prioritizeNewCalls: boolean;
212
276
  targetSelectionPriorityMode: "balanced" | "dxcc_first" | "new_callsign_first";
277
+ maxConcurrentStreams?: number | undefined;
213
278
  };
214
279
  targetCallsign?: string | undefined;
215
280
  targetGrid?: string | undefined;
@@ -234,6 +299,7 @@ export declare const QSOContextSchema: z.ZodObject<{
234
299
  maxQSOTimeoutCycles: number;
235
300
  maxCallAttempts: number;
236
301
  frequency: number;
302
+ maxConcurrentStreams?: number | undefined;
237
303
  autoResumeCQAfterFail?: boolean | undefined;
238
304
  autoResumeCQAfterSuccess?: boolean | undefined;
239
305
  replyToWorkedStations?: boolean | undefined;
@@ -258,8 +324,15 @@ export declare const QslSimpleStatusSchema: z.ZodOptional<z.ZodEnum<["Y", "N"]>>
258
324
  * - DXCC enrichment and review metadata;
259
325
  * - LoTW / QRZ confirmation state;
260
326
  * - station-location metadata used when exporting ADIF-like records.
327
+ *
328
+ * `frequency` is the RF frequency in hertz; `startTime`/`endTime` and QSL dates
329
+ * are Unix epoch milliseconds. `mode` is the ADIF main mode and `submode` is the
330
+ * optional ADIF submode. `messageHistory` contains the raw digital-mode exchange.
331
+ * Sync providers update the service-specific LoTW/QRZ fields using ADIF status
332
+ * codes (`Y`, `N`, `R`, `Q`, `I`, and received-only `V`) rather than a generic
333
+ * `qslStatus` field.
261
334
  */
262
- export declare const QSORecordSchema: z.ZodObject<{
335
+ export declare const QSORecordSchema: z.ZodEffects<z.ZodObject<{
263
336
  id: z.ZodString;
264
337
  callsign: z.ZodString;
265
338
  grid: z.ZodOptional<z.ZodString>;
@@ -272,6 +345,48 @@ export declare const QSORecordSchema: z.ZodObject<{
272
345
  reportReceived: z.ZodOptional<z.ZodString>;
273
346
  messageHistory: z.ZodArray<z.ZodString, "many">;
274
347
  comment: z.ZodOptional<z.ZodString>;
348
+ contestId: z.ZodOptional<z.ZodString>;
349
+ contestEntry: z.ZodOptional<z.ZodEffects<z.ZodObject<{
350
+ schemaVersion: z.ZodLiteral<1>;
351
+ contestId: z.ZodString;
352
+ editionId: z.ZodString;
353
+ rulesetVersion: z.ZodString;
354
+ sent: z.ZodRecord<z.ZodString, z.ZodString>;
355
+ received: z.ZodRecord<z.ZodString, z.ZodString>;
356
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
357
+ }, "strict", z.ZodTypeAny, {
358
+ received: Record<string, string>;
359
+ schemaVersion: 1;
360
+ contestId: string;
361
+ editionId: string;
362
+ rulesetVersion: string;
363
+ sent: Record<string, string>;
364
+ annotations?: Record<string, string | number | boolean> | undefined;
365
+ }, {
366
+ received: Record<string, string>;
367
+ schemaVersion: 1;
368
+ contestId: string;
369
+ editionId: string;
370
+ rulesetVersion: string;
371
+ sent: Record<string, string>;
372
+ annotations?: Record<string, string | number | boolean> | undefined;
373
+ }>, {
374
+ received: Record<string, string>;
375
+ schemaVersion: 1;
376
+ contestId: string;
377
+ editionId: string;
378
+ rulesetVersion: string;
379
+ sent: Record<string, string>;
380
+ annotations?: Record<string, string | number | boolean> | undefined;
381
+ }, {
382
+ received: Record<string, string>;
383
+ schemaVersion: 1;
384
+ contestId: string;
385
+ editionId: string;
386
+ rulesetVersion: string;
387
+ sent: Record<string, string>;
388
+ annotations?: Record<string, string | number | boolean> | undefined;
389
+ }>>;
275
390
  myCallsign: z.ZodOptional<z.ZodString>;
276
391
  myGrid: z.ZodOptional<z.ZodString>;
277
392
  qth: z.ZodOptional<z.ZodString>;
@@ -309,6 +424,113 @@ export declare const QSORecordSchema: z.ZodObject<{
309
424
  callsign: string;
310
425
  startTime: number;
311
426
  messageHistory: string[];
427
+ contestId?: string | undefined;
428
+ myCallsign?: string | undefined;
429
+ myGrid?: string | undefined;
430
+ reportSent?: string | undefined;
431
+ reportReceived?: string | undefined;
432
+ grid?: string | undefined;
433
+ submode?: string | undefined;
434
+ endTime?: number | undefined;
435
+ comment?: string | undefined;
436
+ contestEntry?: {
437
+ received: Record<string, string>;
438
+ schemaVersion: 1;
439
+ contestId: string;
440
+ editionId: string;
441
+ rulesetVersion: string;
442
+ sent: Record<string, string>;
443
+ annotations?: Record<string, string | number | boolean> | undefined;
444
+ } | undefined;
445
+ qth?: string | undefined;
446
+ dxccId?: number | undefined;
447
+ dxccEntity?: string | undefined;
448
+ dxccStatus?: "unknown" | "none" | "current" | "deleted" | undefined;
449
+ countryCode?: string | undefined;
450
+ cqZone?: number | undefined;
451
+ ituZone?: number | undefined;
452
+ dxccSource?: "resolver" | "adif" | "lotw" | "manual_override" | undefined;
453
+ dxccConfidence?: "unknown" | "exception" | "prefix" | "heuristic" | "manual" | undefined;
454
+ dxccResolvedAt?: number | undefined;
455
+ dxccResolverVersion?: string | undefined;
456
+ dxccNeedsReview?: boolean | undefined;
457
+ stationLocationId?: string | undefined;
458
+ myDxccId?: number | undefined;
459
+ myCqZone?: number | undefined;
460
+ myItuZone?: number | undefined;
461
+ myState?: string | undefined;
462
+ myCounty?: string | undefined;
463
+ myIota?: string | undefined;
464
+ lotwQslSent?: "Y" | "N" | "R" | "Q" | "I" | undefined;
465
+ lotwQslReceived?: "Y" | "N" | "R" | "I" | "V" | undefined;
466
+ lotwQslSentDate?: number | undefined;
467
+ lotwQslReceivedDate?: number | undefined;
468
+ qrzQslSent?: "Y" | "N" | undefined;
469
+ qrzQslReceived?: "Y" | "N" | undefined;
470
+ qrzQslSentDate?: number | undefined;
471
+ qrzQslReceivedDate?: number | undefined;
472
+ notes?: string | undefined;
473
+ }, {
474
+ id: string;
475
+ mode: string;
476
+ frequency: number;
477
+ callsign: string;
478
+ startTime: number;
479
+ messageHistory: string[];
480
+ contestId?: string | undefined;
481
+ myCallsign?: string | undefined;
482
+ myGrid?: string | undefined;
483
+ reportSent?: string | undefined;
484
+ reportReceived?: string | undefined;
485
+ grid?: string | undefined;
486
+ submode?: string | undefined;
487
+ endTime?: number | undefined;
488
+ comment?: string | undefined;
489
+ contestEntry?: {
490
+ received: Record<string, string>;
491
+ schemaVersion: 1;
492
+ contestId: string;
493
+ editionId: string;
494
+ rulesetVersion: string;
495
+ sent: Record<string, string>;
496
+ annotations?: Record<string, string | number | boolean> | undefined;
497
+ } | undefined;
498
+ qth?: string | undefined;
499
+ dxccId?: number | undefined;
500
+ dxccEntity?: string | undefined;
501
+ dxccStatus?: "unknown" | "none" | "current" | "deleted" | undefined;
502
+ countryCode?: string | undefined;
503
+ cqZone?: number | undefined;
504
+ ituZone?: number | undefined;
505
+ dxccSource?: "resolver" | "adif" | "lotw" | "manual_override" | undefined;
506
+ dxccConfidence?: "unknown" | "exception" | "prefix" | "heuristic" | "manual" | undefined;
507
+ dxccResolvedAt?: number | undefined;
508
+ dxccResolverVersion?: string | undefined;
509
+ dxccNeedsReview?: boolean | undefined;
510
+ stationLocationId?: string | undefined;
511
+ myDxccId?: number | undefined;
512
+ myCqZone?: number | undefined;
513
+ myItuZone?: number | undefined;
514
+ myState?: string | undefined;
515
+ myCounty?: string | undefined;
516
+ myIota?: string | undefined;
517
+ lotwQslSent?: "Y" | "N" | "R" | "Q" | "I" | undefined;
518
+ lotwQslReceived?: "Y" | "N" | "R" | "I" | "V" | undefined;
519
+ lotwQslSentDate?: number | undefined;
520
+ lotwQslReceivedDate?: number | undefined;
521
+ qrzQslSent?: "Y" | "N" | undefined;
522
+ qrzQslReceived?: "Y" | "N" | undefined;
523
+ qrzQslSentDate?: number | undefined;
524
+ qrzQslReceivedDate?: number | undefined;
525
+ notes?: string | undefined;
526
+ }>, {
527
+ id: string;
528
+ mode: string;
529
+ frequency: number;
530
+ callsign: string;
531
+ startTime: number;
532
+ messageHistory: string[];
533
+ contestId?: string | undefined;
312
534
  myCallsign?: string | undefined;
313
535
  myGrid?: string | undefined;
314
536
  reportSent?: string | undefined;
@@ -317,6 +539,15 @@ export declare const QSORecordSchema: z.ZodObject<{
317
539
  submode?: string | undefined;
318
540
  endTime?: number | undefined;
319
541
  comment?: string | undefined;
542
+ contestEntry?: {
543
+ received: Record<string, string>;
544
+ schemaVersion: 1;
545
+ contestId: string;
546
+ editionId: string;
547
+ rulesetVersion: string;
548
+ sent: Record<string, string>;
549
+ annotations?: Record<string, string | number | boolean> | undefined;
550
+ } | undefined;
320
551
  qth?: string | undefined;
321
552
  dxccId?: number | undefined;
322
553
  dxccEntity?: string | undefined;
@@ -352,6 +583,7 @@ export declare const QSORecordSchema: z.ZodObject<{
352
583
  callsign: string;
353
584
  startTime: number;
354
585
  messageHistory: string[];
586
+ contestId?: string | undefined;
355
587
  myCallsign?: string | undefined;
356
588
  myGrid?: string | undefined;
357
589
  reportSent?: string | undefined;
@@ -360,6 +592,15 @@ export declare const QSORecordSchema: z.ZodObject<{
360
592
  submode?: string | undefined;
361
593
  endTime?: number | undefined;
362
594
  comment?: string | undefined;
595
+ contestEntry?: {
596
+ received: Record<string, string>;
597
+ schemaVersion: 1;
598
+ contestId: string;
599
+ editionId: string;
600
+ rulesetVersion: string;
601
+ sent: Record<string, string>;
602
+ annotations?: Record<string, string | number | boolean> | undefined;
603
+ } | undefined;
363
604
  qth?: string | undefined;
364
605
  dxccId?: number | undefined;
365
606
  dxccEntity?: string | undefined;
@@ -389,6 +630,8 @@ export declare const QSORecordSchema: z.ZodObject<{
389
630
  qrzQslReceivedDate?: number | undefined;
390
631
  notes?: string | undefined;
391
632
  }>;
633
+ /** Host persistence behavior for an automatically completed QSO. */
634
+ export declare const QSOPersistencePolicySchema: z.ZodEnum<["merge-nearby", "preserve-distinct"]>;
392
635
  export declare const StrategiesResultSchema: z.ZodObject<{
393
636
  stop: z.ZodOptional<z.ZodBoolean>;
394
637
  }, "strip", z.ZodTypeAny, {
@@ -408,6 +651,7 @@ export type DxccStatus = z.infer<typeof DxccStatusSchema>;
408
651
  export type DxccSource = z.infer<typeof DxccSourceSchema>;
409
652
  export type DxccConfidence = z.infer<typeof DxccConfidenceSchema>;
410
653
  export type QSOContext = z.infer<typeof QSOContextSchema>;
654
+ export type ContestQsoEnvelope = z.infer<typeof ContestQsoEnvelopeSchema>;
411
655
  /**
412
656
  * Canonical persisted QSO record used by TX-5DR logbooks and plugin hooks.
413
657
  *
@@ -415,5 +659,6 @@ export type QSOContext = z.infer<typeof QSOContextSchema>;
415
659
  * logbook queries.
416
660
  */
417
661
  export type QSORecord = z.infer<typeof QSORecordSchema>;
662
+ export type QSOPersistencePolicy = z.infer<typeof QSOPersistencePolicySchema>;
418
663
  export type StrategiesResult = z.infer<typeof StrategiesResultSchema>;
419
664
  //# sourceMappingURL=qso.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qso.schema.d.ts","sourceRoot":"","sources":["../../src/schema/qso.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,6DAI5C,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,sDAK3B,CAAC;AAEH,eAAO,MAAM,gBAAgB,4DAK3B,CAAC;AAEH,eAAO,MAAM,oBAAoB,sEAM/B,CAAC;AAEH,eAAO,MAAM,2BAA2B,4BAGtC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe/B,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AAGH,eAAO,MAAM,mBAAmB,qDAA+C,CAAC;AAChF,eAAO,MAAM,uBAAuB,qDAA+C,CAAC;AACpF,eAAO,MAAM,qBAAqB,sCAAgC,CAAC;AAEnE;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiD1B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"qso.schema.d.ts","sourceRoot":"","sources":["../../src/schema/qso.schema.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,54 @@ export const SubdivisionConfidenceSchema = z.enum([
43
43
  'high',
44
44
  'low',
45
45
  ]);
46
+ /** Maximum UTF-8 JSON size of contest-owned data persisted with one QSO. */
47
+ export const CONTEST_QSO_ENVELOPE_MAX_BYTES = 8 * 1024;
48
+ const ContestQsoExchangeSchema = z.record(z.string(), z.string());
49
+ const ContestQsoAnnotationValueSchema = z.union([z.string(), z.number().finite(), z.boolean()]);
50
+ function durableContestQsoJson(value) {
51
+ return JSON.stringify(value).replace(/[<>\u007f-\uffff]/g, character => (`\\u${character.charCodeAt(0).toString(16).padStart(4, '0')}`));
52
+ }
53
+ /**
54
+ * Versioned contest facts that must be committed atomically with their QSO.
55
+ *
56
+ * The shape is deliberately shallow and bounded. Contest plugins may choose
57
+ * their exchange and annotation keys, but cannot persist arbitrary object
58
+ * graphs or binary payloads in the logbook record.
59
+ */
60
+ export const ContestQsoEnvelopeSchema = z.object({
61
+ schemaVersion: z.literal(1),
62
+ contestId: z.string().min(1),
63
+ editionId: z.string().min(1),
64
+ rulesetVersion: z.string().min(1),
65
+ sent: ContestQsoExchangeSchema,
66
+ received: ContestQsoExchangeSchema,
67
+ annotations: z.record(z.string(), ContestQsoAnnotationValueSchema).optional(),
68
+ }).strict().superRefine((value, context) => {
69
+ if (new TextEncoder().encode(durableContestQsoJson(value)).byteLength > CONTEST_QSO_ENVELOPE_MAX_BYTES) {
70
+ context.addIssue({
71
+ code: z.ZodIssueCode.custom,
72
+ message: `Contest QSO envelope must not exceed ${CONTEST_QSO_ENVELOPE_MAX_BYTES} UTF-8 JSON bytes`,
73
+ });
74
+ }
75
+ });
76
+ /**
77
+ * Serialize a validated contest envelope as ASCII-only JSON for durable ADIF
78
+ * private fields. Escaping non-ASCII and angle brackets keeps legacy string
79
+ * ADIF readers byte-safe without changing the decoded data.
80
+ */
81
+ export function serializeContestQsoEnvelope(value) {
82
+ return durableContestQsoJson(ContestQsoEnvelopeSchema.parse(value));
83
+ }
84
+ /** Parse and validate an envelope read from a durable private field. */
85
+ export function parseContestQsoEnvelope(value) {
86
+ try {
87
+ const parsed = ContestQsoEnvelopeSchema.safeParse(JSON.parse(value));
88
+ return parsed.success ? parsed.data : undefined;
89
+ }
90
+ catch {
91
+ return undefined;
92
+ }
93
+ }
46
94
  // 操作配置
47
95
  export const OperatorConfigSchema = z.object({
48
96
  id: z.string(),
@@ -54,6 +102,7 @@ export const OperatorConfigSchema = z.object({
54
102
  maxQSOTimeoutCycles: z.number(),
55
103
  maxCallAttempts: z.number(),
56
104
  frequency: z.number(),
105
+ maxConcurrentStreams: z.number().int().min(1).max(5).optional(),
57
106
  autoResumeCQAfterFail: z.boolean().default(false),
58
107
  autoResumeCQAfterSuccess: z.boolean().default(false),
59
108
  replyToWorkedStations: z.boolean().default(false),
@@ -82,6 +131,13 @@ export const QslSimpleStatusSchema = z.enum(['Y', 'N']).optional();
82
131
  * - DXCC enrichment and review metadata;
83
132
  * - LoTW / QRZ confirmation state;
84
133
  * - station-location metadata used when exporting ADIF-like records.
134
+ *
135
+ * `frequency` is the RF frequency in hertz; `startTime`/`endTime` and QSL dates
136
+ * are Unix epoch milliseconds. `mode` is the ADIF main mode and `submode` is the
137
+ * optional ADIF submode. `messageHistory` contains the raw digital-mode exchange.
138
+ * Sync providers update the service-specific LoTW/QRZ fields using ADIF status
139
+ * codes (`Y`, `N`, `R`, `Q`, `I`, and received-only `V`) rather than a generic
140
+ * `qslStatus` field.
85
141
  */
86
142
  export const QSORecordSchema = z.object({
87
143
  id: z.string(),
@@ -96,6 +152,8 @@ export const QSORecordSchema = z.object({
96
152
  reportReceived: z.string().optional(), // 接收的信号报告
97
153
  messageHistory: z.array(z.string()), // 内部消息历史(FT8 等数字模式)
98
154
  comment: z.string().optional(), // 标准 ADIF COMMENT 字段
155
+ contestId: z.string().optional(), // ADIF CONTEST_ID
156
+ contestEntry: ContestQsoEnvelopeSchema.optional(), // TX-5DR atomic contest facts
99
157
  myCallsign: z.string().optional(), // 我的呼号(操作员呼号)
100
158
  myGrid: z.string().optional(), // 我的网格定位(操作员网格)
101
159
  qth: z.string().optional(), // 对方 QTH(地点,语音通联常用)
@@ -129,7 +187,17 @@ export const QSORecordSchema = z.object({
129
187
  qrzQslReceivedDate: z.number().optional(),
130
188
  // 附注(对应 ADIF NOTES 字段)
131
189
  notes: z.string().optional(),
190
+ }).superRefine((value, context) => {
191
+ if (value.contestId && value.contestEntry && value.contestId !== value.contestEntry.contestId) {
192
+ context.addIssue({
193
+ code: z.ZodIssueCode.custom,
194
+ path: ['contestEntry', 'contestId'],
195
+ message: 'contestEntry.contestId must match contestId',
196
+ });
197
+ }
132
198
  });
199
+ /** Host persistence behavior for an automatically completed QSO. */
200
+ export const QSOPersistencePolicySchema = z.enum(['merge-nearby', 'preserve-distinct']);
133
201
  // 策略执行结果
134
202
  export const StrategiesResultSchema = z.object({
135
203
  stop: z.boolean().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"qso.schema.js","sourceRoot":"","sources":["../../src/schema/qso.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qso.schema.js","sourceRoot":"","sources":["../../src/schema/qso.schema.ts"],"names":[],"mappings":"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"}