@senpi/runtime 1.0.95-dev.feat-dsl-backend-int.20260415201130 → 1.0.95-dev.runtime-phase-2.20260416163440

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 (275) hide show
  1. package/README.md +46 -0
  2. package/dist/actions/action-runtime-module.d.ts +55 -0
  3. package/dist/actions/action-runtime-module.d.ts.map +1 -0
  4. package/dist/actions/action-runtime-module.js +444 -0
  5. package/dist/actions/action-runtime-module.js.map +1 -0
  6. package/dist/actions/close-position/close-position.action.d.ts +1 -0
  7. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  8. package/dist/actions/close-position/close-position.action.js +55 -20
  9. package/dist/actions/close-position/close-position.action.js.map +1 -1
  10. package/dist/actions/decision-engine.d.ts.map +1 -1
  11. package/dist/actions/decision-engine.js +5 -0
  12. package/dist/actions/decision-engine.js.map +1 -1
  13. package/dist/actions/llm-decision/shared.d.ts +1 -1
  14. package/dist/actions/llm-decision/shared.d.ts.map +1 -1
  15. package/dist/actions/llm-decision/shared.js +1 -1
  16. package/dist/actions/llm-decision/shared.js.map +1 -1
  17. package/dist/actions/notifications/formatter.d.ts +39 -0
  18. package/dist/actions/notifications/formatter.d.ts.map +1 -0
  19. package/dist/actions/notifications/formatter.js +68 -0
  20. package/dist/actions/notifications/formatter.js.map +1 -0
  21. package/dist/actions/notifications/index.d.ts +37 -0
  22. package/dist/actions/notifications/index.d.ts.map +1 -0
  23. package/dist/actions/notifications/index.js +89 -0
  24. package/dist/actions/notifications/index.js.map +1 -0
  25. package/dist/actions/open-position/open-position.action.d.ts +1 -0
  26. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  27. package/dist/actions/open-position/open-position.action.js +132 -27
  28. package/dist/actions/open-position/open-position.action.js.map +1 -1
  29. package/dist/actions/open-position/resolve-margin.d.ts +22 -0
  30. package/dist/actions/open-position/resolve-margin.d.ts.map +1 -0
  31. package/dist/actions/open-position/resolve-margin.js +30 -0
  32. package/dist/actions/open-position/resolve-margin.js.map +1 -0
  33. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  34. package/dist/actions/position-tracker/position-tracker.action.js +4 -1
  35. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  36. package/dist/actions/store/action-store.d.ts +45 -0
  37. package/dist/actions/store/action-store.d.ts.map +1 -0
  38. package/dist/actions/store/action-store.js +127 -0
  39. package/dist/actions/store/action-store.js.map +1 -0
  40. package/dist/actions/store/index.d.ts +11 -0
  41. package/dist/actions/store/index.d.ts.map +1 -0
  42. package/dist/actions/store/index.js +9 -0
  43. package/dist/actions/store/index.js.map +1 -0
  44. package/dist/actions/store/paths.d.ts +15 -0
  45. package/dist/actions/store/paths.d.ts.map +1 -0
  46. package/dist/actions/store/paths.js +29 -0
  47. package/dist/actions/store/paths.js.map +1 -0
  48. package/dist/actions/store/types.d.ts +114 -0
  49. package/dist/actions/store/types.d.ts.map +1 -0
  50. package/dist/actions/store/types.js +48 -0
  51. package/dist/actions/store/types.js.map +1 -0
  52. package/dist/actions/tracking-helpers.d.ts +13 -0
  53. package/dist/actions/tracking-helpers.d.ts.map +1 -0
  54. package/dist/actions/tracking-helpers.js +47 -0
  55. package/dist/actions/tracking-helpers.js.map +1 -0
  56. package/dist/actions/types.d.ts +8 -0
  57. package/dist/actions/types.d.ts.map +1 -1
  58. package/dist/cli/guide-commands.d.ts.map +1 -1
  59. package/dist/cli/guide-commands.js +105 -3
  60. package/dist/cli/guide-commands.js.map +1 -1
  61. package/dist/cli/senpi-commands.d.ts.map +1 -1
  62. package/dist/cli/senpi-commands.js +426 -0
  63. package/dist/cli/senpi-commands.js.map +1 -1
  64. package/dist/constants/order-types.d.ts +7 -0
  65. package/dist/constants/order-types.d.ts.map +1 -0
  66. package/dist/constants/order-types.js +6 -0
  67. package/dist/constants/order-types.js.map +1 -0
  68. package/dist/context/interpolate.d.ts +6 -2
  69. package/dist/context/interpolate.d.ts.map +1 -1
  70. package/dist/context/interpolate.js +6 -2
  71. package/dist/context/interpolate.js.map +1 -1
  72. package/dist/context/types.d.ts +8 -1
  73. package/dist/context/types.d.ts.map +1 -1
  74. package/dist/context/types.js +8 -1
  75. package/dist/context/types.js.map +1 -1
  76. package/dist/dsl/config/exit-block.d.ts +7 -0
  77. package/dist/dsl/config/exit-block.d.ts.map +1 -1
  78. package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -1
  79. package/dist/dsl/config/parse-plugin-config.js +27 -1
  80. package/dist/dsl/config/parse-plugin-config.js.map +1 -1
  81. package/dist/dsl/config/unknown-keys.d.ts.map +1 -1
  82. package/dist/dsl/config/unknown-keys.js +3 -1
  83. package/dist/dsl/config/unknown-keys.js.map +1 -1
  84. package/dist/dsl/monitor/create-monitor.d.ts +4 -0
  85. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  86. package/dist/dsl/monitor/create-monitor.js +3 -1
  87. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  88. package/dist/dsl/monitor/process-one-position.d.ts +4 -0
  89. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  90. package/dist/dsl/monitor/process-one-position.js +51 -7
  91. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  92. package/dist/dsl/plugin/index.d.ts.map +1 -1
  93. package/dist/dsl/plugin/index.js +3 -1
  94. package/dist/dsl/plugin/index.js.map +1 -1
  95. package/dist/health/index.d.ts +5 -2
  96. package/dist/health/index.d.ts.map +1 -1
  97. package/dist/health/index.js +103 -6
  98. package/dist/health/index.js.map +1 -1
  99. package/dist/health/types.d.ts +99 -0
  100. package/dist/health/types.d.ts.map +1 -1
  101. package/dist/health/types.js +7 -1
  102. package/dist/health/types.js.map +1 -1
  103. package/dist/index.d.ts +1 -1
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +90 -0
  106. package/dist/index.js.map +1 -1
  107. package/dist/risk/guardrail.types.d.ts +53 -0
  108. package/dist/risk/guardrail.types.d.ts.map +1 -0
  109. package/dist/risk/guardrail.types.js +5 -0
  110. package/dist/risk/guardrail.types.js.map +1 -0
  111. package/dist/risk/index.d.ts +2 -4
  112. package/dist/risk/index.d.ts.map +1 -1
  113. package/dist/risk/index.js +2 -6
  114. package/dist/risk/index.js.map +1 -1
  115. package/dist/risk/risk-audit-log.d.ts +25 -0
  116. package/dist/risk/risk-audit-log.d.ts.map +1 -0
  117. package/dist/risk/risk-audit-log.js +30 -0
  118. package/dist/risk/risk-audit-log.js.map +1 -0
  119. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts +162 -0
  120. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts.map +1 -0
  121. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js +285 -0
  122. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js.map +1 -0
  123. package/dist/runtime/create-actions.d.ts +6 -2
  124. package/dist/runtime/create-actions.d.ts.map +1 -1
  125. package/dist/runtime/create-actions.js +18 -7
  126. package/dist/runtime/create-actions.js.map +1 -1
  127. package/dist/runtime/create-scanner-module.d.ts +5 -0
  128. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  129. package/dist/runtime/create-scanner-module.js +12 -1
  130. package/dist/runtime/create-scanner-module.js.map +1 -1
  131. package/dist/runtime/load-runtime-config.d.ts +1 -1
  132. package/dist/runtime/load-runtime-config.d.ts.map +1 -1
  133. package/dist/runtime/load-runtime-config.js +37 -1
  134. package/dist/runtime/load-runtime-config.js.map +1 -1
  135. package/dist/runtime/map-strategies.d.ts +1 -1
  136. package/dist/runtime/map-strategies.d.ts.map +1 -1
  137. package/dist/runtime/map-strategies.js +38 -1
  138. package/dist/runtime/map-strategies.js.map +1 -1
  139. package/dist/runtime/risk-guard.d.ts +23 -2
  140. package/dist/runtime/risk-guard.d.ts.map +1 -1
  141. package/dist/runtime/risk-guard.js +441 -5
  142. package/dist/runtime/risk-guard.js.map +1 -1
  143. package/dist/runtime/run.d.ts +7 -0
  144. package/dist/runtime/run.d.ts.map +1 -1
  145. package/dist/runtime/run.js +3 -0
  146. package/dist/runtime/run.js.map +1 -1
  147. package/dist/runtime/runtime-schema.d.ts +1169 -24
  148. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  149. package/dist/runtime/runtime-schema.js +105 -2
  150. package/dist/runtime/runtime-schema.js.map +1 -1
  151. package/dist/runtime/runtime.d.ts +26 -0
  152. package/dist/runtime/runtime.d.ts.map +1 -1
  153. package/dist/runtime/runtime.js +192 -6
  154. package/dist/runtime/runtime.js.map +1 -1
  155. package/dist/runtime/scanner-composition.d.ts +10 -0
  156. package/dist/runtime/scanner-composition.d.ts.map +1 -1
  157. package/dist/runtime/scanner-composition.js +10 -0
  158. package/dist/runtime/scanner-composition.js.map +1 -1
  159. package/dist/runtime/scanner-registry.d.ts +39 -1
  160. package/dist/runtime/scanner-registry.d.ts.map +1 -1
  161. package/dist/runtime/scanner-registry.js +105 -2
  162. package/dist/runtime/scanner-registry.js.map +1 -1
  163. package/dist/runtime/state-layout.d.ts +2 -0
  164. package/dist/runtime/state-layout.d.ts.map +1 -1
  165. package/dist/runtime/state-layout.js +1 -0
  166. package/dist/runtime/state-layout.js.map +1 -1
  167. package/dist/runtime/validate-action-prompts.d.ts +30 -0
  168. package/dist/runtime/validate-action-prompts.d.ts.map +1 -0
  169. package/dist/runtime/validate-action-prompts.js +110 -0
  170. package/dist/runtime/validate-action-prompts.js.map +1 -0
  171. package/dist/scanners/__tests__/test-helpers.d.ts +10 -0
  172. package/dist/scanners/__tests__/test-helpers.d.ts.map +1 -1
  173. package/dist/scanners/__tests__/test-helpers.js +52 -0
  174. package/dist/scanners/__tests__/test-helpers.js.map +1 -1
  175. package/dist/scanners/engine/engine.d.ts +37 -0
  176. package/dist/scanners/engine/engine.d.ts.map +1 -1
  177. package/dist/scanners/engine/engine.js +130 -12
  178. package/dist/scanners/engine/engine.js.map +1 -1
  179. package/dist/scanners/engine/result-builder.d.ts +16 -0
  180. package/dist/scanners/engine/result-builder.d.ts.map +1 -1
  181. package/dist/scanners/engine/result-builder.js +22 -0
  182. package/dist/scanners/engine/result-builder.js.map +1 -1
  183. package/dist/scanners/engine/strategy-registry.d.ts +2 -0
  184. package/dist/scanners/engine/strategy-registry.d.ts.map +1 -1
  185. package/dist/scanners/engine/strategy-registry.js +5 -1
  186. package/dist/scanners/engine/strategy-registry.js.map +1 -1
  187. package/dist/scanners/external-scanner-receiver.d.ts +118 -0
  188. package/dist/scanners/external-scanner-receiver.d.ts.map +1 -0
  189. package/dist/scanners/external-scanner-receiver.js +266 -0
  190. package/dist/scanners/external-scanner-receiver.js.map +1 -0
  191. package/dist/scanners/implementations/external-scanner.d.ts +17 -0
  192. package/dist/scanners/implementations/external-scanner.d.ts.map +1 -0
  193. package/dist/scanners/implementations/external-scanner.js +51 -0
  194. package/dist/scanners/implementations/external-scanner.js.map +1 -0
  195. package/dist/scanners/implementations/index.d.ts +1 -0
  196. package/dist/scanners/implementations/index.d.ts.map +1 -1
  197. package/dist/scanners/implementations/index.js +1 -0
  198. package/dist/scanners/implementations/index.js.map +1 -1
  199. package/dist/scanners/index.d.ts +4 -1
  200. package/dist/scanners/index.d.ts.map +1 -1
  201. package/dist/scanners/index.js +2 -0
  202. package/dist/scanners/index.js.map +1 -1
  203. package/dist/scanners/protocol/scanner.d.ts +3 -1
  204. package/dist/scanners/protocol/scanner.d.ts.map +1 -1
  205. package/dist/scanners/runtime-module.d.ts +10 -0
  206. package/dist/scanners/runtime-module.d.ts.map +1 -1
  207. package/dist/scanners/runtime-module.js +19 -3
  208. package/dist/scanners/runtime-module.js.map +1 -1
  209. package/dist/scanners/scanner-definition.d.ts +12 -1
  210. package/dist/scanners/scanner-definition.d.ts.map +1 -1
  211. package/dist/scanners/types.d.ts +3 -0
  212. package/dist/scanners/types.d.ts.map +1 -1
  213. package/dist/scanners/types.js.map +1 -1
  214. package/dist/scripts/run-dsl-standalone-live.js +1 -1
  215. package/dist/scripts/run-dsl-standalone-live.js.map +1 -1
  216. package/dist/scripts/run-dsl-standalone-mock.js +1 -1
  217. package/dist/scripts/run-dsl-standalone-mock.js.map +1 -1
  218. package/dist/senpi/client.d.ts +27 -2
  219. package/dist/senpi/client.d.ts.map +1 -1
  220. package/dist/senpi/client.js +74 -1
  221. package/dist/senpi/client.js.map +1 -1
  222. package/dist/senpi/index.d.ts +1 -1
  223. package/dist/senpi/index.d.ts.map +1 -1
  224. package/dist/senpi/types.d.ts +68 -0
  225. package/dist/senpi/types.d.ts.map +1 -1
  226. package/dist/strategy/strategy-state.d.ts +4 -1
  227. package/dist/strategy/strategy-state.d.ts.map +1 -1
  228. package/dist/strategy/strategy-state.js +7 -2
  229. package/dist/strategy/strategy-state.js.map +1 -1
  230. package/dist/tracking/constants.d.ts +24 -0
  231. package/dist/tracking/constants.d.ts.map +1 -0
  232. package/dist/tracking/constants.js +46 -0
  233. package/dist/tracking/constants.js.map +1 -0
  234. package/dist/tracking/index.d.ts +12 -0
  235. package/dist/tracking/index.d.ts.map +1 -0
  236. package/dist/tracking/index.js +8 -0
  237. package/dist/tracking/index.js.map +1 -0
  238. package/dist/tracking/tracker.d.ts +22 -0
  239. package/dist/tracking/tracker.d.ts.map +1 -0
  240. package/dist/tracking/tracker.js +44 -0
  241. package/dist/tracking/tracker.js.map +1 -0
  242. package/dist/tracking/tracking-handler.d.ts +12 -0
  243. package/dist/tracking/tracking-handler.d.ts.map +1 -0
  244. package/dist/tracking/tracking-handler.js +148 -0
  245. package/dist/tracking/tracking-handler.js.map +1 -0
  246. package/dist/tracking/transport.d.ts +35 -0
  247. package/dist/tracking/transport.d.ts.map +1 -0
  248. package/dist/tracking/transport.js +117 -0
  249. package/dist/tracking/transport.js.map +1 -0
  250. package/dist/tracking/types.d.ts +21 -0
  251. package/dist/tracking/types.d.ts.map +1 -0
  252. package/dist/tracking/types.js +6 -0
  253. package/dist/tracking/types.js.map +1 -0
  254. package/dist/types/action.d.ts +13 -2
  255. package/dist/types/action.d.ts.map +1 -1
  256. package/dist/types/dsl/index.d.ts +4 -1
  257. package/dist/types/dsl/index.d.ts.map +1 -1
  258. package/dist/types/strategy.d.ts +9 -3
  259. package/dist/types/strategy.d.ts.map +1 -1
  260. package/dist/utils/resolve-order-type.d.ts +5 -0
  261. package/dist/utils/resolve-order-type.d.ts.map +1 -0
  262. package/dist/utils/resolve-order-type.js +29 -0
  263. package/dist/utils/resolve-order-type.js.map +1 -0
  264. package/examples/strategies/dsl-showcase.yaml +7 -2
  265. package/examples/strategies/dsl.yaml +5 -1
  266. package/examples/strategies/fox-minimal-loosened.yaml +18 -3
  267. package/examples/strategies/fox-minimal.yaml +25 -3
  268. package/examples/strategies/minimal.yaml +4 -2
  269. package/examples/strategies/momentum/how-it-works.md +47 -0
  270. package/examples/strategies/momentum/momentum-guarded.yaml +161 -0
  271. package/examples/strategies/risk-showcase.yaml +93 -0
  272. package/examples/strategies/viper.yaml +11 -3
  273. package/examples/strategies/wolf.yaml +11 -3
  274. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +12 -4
  275. package/package.json +4 -4
@@ -1,6 +1,10 @@
1
+ import { Type } from "@sinclair/typebox";
1
2
  import { mkdtemp, readdir, rm } from "node:fs/promises";
2
3
  import { tmpdir } from "node:os";
3
4
  import { join } from "node:path";
5
+ import { defineSharedArtifact } from "../artifacts.js";
6
+ import { createScanner } from "../create-scanner.js";
7
+ import { PersistencePolicy, RetentionPolicy, } from "../scanner-definition.js";
4
8
  export async function createTempDir(prefix) {
5
9
  return mkdtemp(join(tmpdir(), prefix));
6
10
  }
@@ -20,4 +24,52 @@ export async function listFilesRecursive(root) {
20
24
  }
21
25
  return out;
22
26
  }
27
+ export function makeTestSignal(scannerId, score = 0.5, asset = "BTC") {
28
+ return {
29
+ address: "alpha",
30
+ scannerId,
31
+ signalType: "TEST_SIGNAL",
32
+ asset,
33
+ direction: "LONG",
34
+ score,
35
+ timestamp: Date.now(),
36
+ factors: { thresholdHit: true },
37
+ meta: {},
38
+ };
39
+ }
40
+ export function buildPushDrivenTestScanner(options = {}) {
41
+ const id = options.id ?? "push-driven";
42
+ const outputs = options.outputs ?? { signals: true, context: false };
43
+ return createScanner({
44
+ id,
45
+ signalType: "TEST_SIGNAL",
46
+ description: "Push-driven test scanner",
47
+ outputs,
48
+ scheduleMode: "external",
49
+ intervalSeconds: 0,
50
+ retention: RetentionPolicy.LAST_ONLY,
51
+ persistence: outputs.signals
52
+ ? PersistencePolicy.ALWAYS
53
+ : PersistencePolicy.NEVER,
54
+ inputs: [],
55
+ artifacts: outputs.context
56
+ ? {
57
+ produces: [
58
+ defineSharedArtifact(id, {
59
+ description: `Retained test context for '${id}'.`,
60
+ }),
61
+ ],
62
+ }
63
+ : undefined,
64
+ configSchema: Type.Object({}),
65
+ defaultConfig: {},
66
+ scan: options.scan ??
67
+ (async (ctx) => ({
68
+ timestamp: ctx.now(),
69
+ scannedCount: outputs.signals ? 1 : 0,
70
+ signals: outputs.signals ? [makeTestSignal(id)] : [],
71
+ summary: { mode: "push-driven-test" },
72
+ })),
73
+ });
74
+ }
23
75
  //# sourceMappingURL=test-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/scanners/__tests__/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/scanners/__tests__/test-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Scanner } from "../protocol/scanner.js";
2
+ import type { ScannerScheduleMode } from "../scanner-definition.js";
2
3
  import type { ScanResult, ScannerId, StrategyRegistration } from "../types.js";
4
+ import { type ExternalScannerIngestRequest, type ExternalScannerIngestResult } from "../external-scanner-receiver.js";
3
5
  import { type ScannerEngineDependencies } from "./data-providers.js";
4
6
  import { StrategyRegistry } from "./strategy-registry.js";
5
7
  import type { ScannerComposition } from "../../runtime/scanner-composition.js";
@@ -11,6 +13,7 @@ export interface ScannerRegistrationSummary {
11
13
  intervalSeconds: number;
12
14
  }
13
15
  export interface ScannerRegistrationStateSummary extends ScannerRegistrationSummary {
16
+ scheduleMode: ScannerScheduleMode;
14
17
  initialized: boolean;
15
18
  inFlight: boolean;
16
19
  nextRunAt: number | null;
@@ -48,6 +51,21 @@ export declare class ScannerEngine {
48
51
  * Flow: overlap-guard -> runtime/config -> beforeScan -> scan -> normalize -> persist.
49
52
  */
50
53
  runOnce(address: string, scannerId: ScannerId): Promise<ScanResult>;
54
+ /**
55
+ * Accepts one externally supplied signal/context payload for a push-driven
56
+ * scanner.
57
+ *
58
+ * This path intentionally reuses the engine's runtime bootstrap, result
59
+ * normalization, persistence, retained-context storage, and lifecycle
60
+ * callbacks so external ingests look like ordinary scanner attempts to the
61
+ * rest of the runtime.
62
+ *
63
+ * The in-flight marker is set before the first awaited store read. That
64
+ * preserves the same single-run-per-scanner invariant as interval scans even
65
+ * when two gateway ingests arrive in the same event-loop turn.
66
+ */
67
+ ingestExternalScannerData(address: string, request: ExternalScannerIngestRequest): Promise<ExternalScannerIngestResult>;
68
+ commitRunResult(address: string, scannerId: ScannerId, result: ScanResult): Promise<ScanResult>;
51
69
  /** Executes one scanner plus its dependency chain immediately in topological order. */
52
70
  runChain(address: string, scannerId: ScannerId): Promise<ScanResult[]>;
53
71
  /** Reads one scanner's retained context payload, or null when it is unavailable. */
@@ -76,11 +94,30 @@ export declare class ScannerEngine {
76
94
  * says the result should be written to disk.
77
95
  */
78
96
  private persistIfNeeded;
97
+ /**
98
+ * Commits retained context for external ingests through the same shared
99
+ * artifact store used by built-in scanners.
100
+ *
101
+ * Built-in scanners write context from inside `scan()` via
102
+ * `ctx.saveSharedArtifact(...)`. External scanners do not execute scanner
103
+ * logic, so the engine must preserve that boundary explicitly here.
104
+ */
105
+ private persistExternalContextIfNeeded;
79
106
  /**
80
107
  * Returns the registered strategy/scanner runtime entry or throws when the
81
108
  * requested pair is unknown to the engine.
82
109
  */
83
110
  private requireRegistration;
111
+ /**
112
+ * Resolves the target registration for an external ingest and enforces the
113
+ * routing invariants that make the ingest path safe.
114
+ *
115
+ * Route validation happens here instead of in the runtime/plugin layers so
116
+ * every caller shares the same rules for unknown scanners, disabled targets,
117
+ * and non-external registrations. Payload-shape compatibility with
118
+ * signal-only versus context-producing scanners stays in the ingest validator.
119
+ */
120
+ private requireExternalIngestRegistration;
84
121
  private defaultStateFor;
85
122
  private ensureValidState;
86
123
  private emitRunStart;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/engine.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { SkipScan } from "../protocol/hooks.js";
2
2
  import { ScanStatus as ScanStatusEnum } from "../types.js";
3
+ import { ExternalScannerIngestError, prepareExternalScannerIngest, } from "../external-scanner-receiver.js";
3
4
  import { assertValidConfig, assertValidState } from "./config-validator.js";
4
5
  import { createSharedArtifactAccessor, } from "./data-providers.js";
5
6
  import { resolveScanInputs } from "./input-resolver.js";
6
- import { buildResult, buildRunResult, formatError, shouldPersist, } from "./result-builder.js";
7
+ import { buildExternalIngestResult, buildResult, buildRunResult, formatError, shouldPersist, } from "./result-builder.js";
7
8
  import { StrategyRegistry, } from "./strategy-registry.js";
8
9
  /** Runtime engine for scanner registration, scheduling, and one-off execution. */
9
10
  export class ScannerEngine {
@@ -26,7 +27,7 @@ export class ScannerEngine {
26
27
  this.registry.registerStrategy(strategy);
27
28
  const entry = this.registry.registerScanner(strategy.id, scanner);
28
29
  assertValidConfig(scanner.definition, entry.initialConfig, strategy.id, scanner.definition.id);
29
- if (this.started && entry.enabled) {
30
+ if (this.started && entry.enabled && entry.scheduleMode === "interval") {
30
31
  this.schedule(entry);
31
32
  }
32
33
  }
@@ -62,18 +63,20 @@ export class ScannerEngine {
62
63
  this.started = true;
63
64
  const entries = this.registry.list();
64
65
  const toSchedule = entries.filter((e) => e.enabled);
66
+ const intervalScheduled = toSchedule.filter((entry) => entry.scheduleMode === "interval");
65
67
  const summary = {
66
68
  total: entries.length,
67
69
  enabled: toSchedule.length,
68
- scanners: toSchedule.map((e) => ({
70
+ scanners: intervalScheduled.map((e) => ({
69
71
  address: e.address,
70
72
  scannerId: e.scanner.definition.id,
73
+ scheduleMode: e.scheduleMode,
71
74
  intervalSeconds: e.intervalSeconds,
72
75
  })),
73
76
  };
74
77
  this.deps.logger?.info?.("Scanner engine start: scheduling scanners", summary);
75
78
  await this.bootstrapContextDependencies();
76
- for (const entry of toSchedule) {
79
+ for (const entry of intervalScheduled) {
77
80
  this.schedule(entry);
78
81
  }
79
82
  this.deps.logger?.info?.("Scanner engine start() complete");
@@ -101,6 +104,7 @@ export class ScannerEngine {
101
104
  return this.registry.list(address).map((entry) => ({
102
105
  address: entry.address,
103
106
  scannerId: entry.scanner.definition.id,
107
+ scheduleMode: entry.scheduleMode,
104
108
  enabled: entry.enabled,
105
109
  intervalSeconds: entry.intervalSeconds,
106
110
  initialized: entry.initialized,
@@ -161,9 +165,7 @@ export class ScannerEngine {
161
165
  const context = await this.buildPreparedContext(entry, runtime, attemptTimestamp);
162
166
  const output = await entry.scanner.scan(context);
163
167
  const result = buildRunResult(entry, context, output, this.now, this.deps.logger);
164
- await this.persistIfNeeded(entry, result);
165
- this.emitRunResult(result);
166
- return result;
168
+ return this.commitRunResult(entry.address, entry.scanner.definition.id, result);
167
169
  }
168
170
  catch (error) {
169
171
  const result = this.buildFailureResult(entry, error);
@@ -174,14 +176,83 @@ export class ScannerEngine {
174
176
  error,
175
177
  });
176
178
  }
177
- await this.persistIfNeeded(entry, result);
178
- this.emitRunResult(result);
179
- return result;
179
+ return this.commitRunResult(entry.address, entry.scanner.definition.id, result);
180
180
  }
181
181
  finally {
182
182
  this.registry.setLastScanTime(address, scannerId, null);
183
183
  }
184
184
  }
185
+ /**
186
+ * Accepts one externally supplied signal/context payload for a push-driven
187
+ * scanner.
188
+ *
189
+ * This path intentionally reuses the engine's runtime bootstrap, result
190
+ * normalization, persistence, retained-context storage, and lifecycle
191
+ * callbacks so external ingests look like ordinary scanner attempts to the
192
+ * rest of the runtime.
193
+ *
194
+ * The in-flight marker is set before the first awaited store read. That
195
+ * preserves the same single-run-per-scanner invariant as interval scans even
196
+ * when two gateway ingests arrive in the same event-loop turn.
197
+ */
198
+ async ingestExternalScannerData(address, request) {
199
+ const entry = this.requireExternalIngestRegistration(address, request.scanner);
200
+ if (entry.lastScanTime !== null) {
201
+ throw new ExternalScannerIngestError("UNAVAILABLE", `External scanner '${request.scanner}' is already processing an ingest for strategy '${address}'.`);
202
+ }
203
+ const attemptTimestamp = this.now();
204
+ this.registry.setLastScanTime(address, request.scanner, attemptTimestamp);
205
+ let emittedRunStart = false;
206
+ try {
207
+ const runtimeConfig = (await this.getConfig(address, request.scanner));
208
+ const prepared = prepareExternalScannerIngest({
209
+ address,
210
+ request,
211
+ config: runtimeConfig,
212
+ outputs: entry.scanner.definition.outputs,
213
+ defaultSignalType: entry.scanner.definition.signalType,
214
+ now: () => attemptTimestamp,
215
+ });
216
+ this.emitRunStart({
217
+ address,
218
+ scannerId: request.scanner,
219
+ timestamp: attemptTimestamp,
220
+ });
221
+ emittedRunStart = true;
222
+ await this.ensureInitializedRuntime(entry);
223
+ await this.persistExternalContextIfNeeded(entry, prepared);
224
+ const result = buildExternalIngestResult(entry, prepared, () => attemptTimestamp, this.deps.logger);
225
+ await this.commitRunResult(address, request.scanner, result);
226
+ return {
227
+ accepted: true,
228
+ address,
229
+ scanner: request.scanner,
230
+ timestamp: result.timestamp,
231
+ signalCount: result.signals.length,
232
+ contextUpdated: prepared.contextUpdated,
233
+ };
234
+ }
235
+ catch (error) {
236
+ if (!emittedRunStart) {
237
+ throw error;
238
+ }
239
+ const failure = this.buildFailureResult(entry, error);
240
+ this.emitRunResult(failure);
241
+ if (error instanceof ExternalScannerIngestError) {
242
+ throw error;
243
+ }
244
+ throw new ExternalScannerIngestError("UNAVAILABLE", failure.reason ?? "External scanner ingest failed.");
245
+ }
246
+ finally {
247
+ this.registry.setLastScanTime(address, request.scanner, null);
248
+ }
249
+ }
250
+ async commitRunResult(address, scannerId, result) {
251
+ const entry = this.requireRegistration(address, scannerId);
252
+ await this.persistIfNeeded(entry, result);
253
+ this.emitRunResult(result);
254
+ return result;
255
+ }
185
256
  /** Executes one scanner plus its dependency chain immediately in topological order. */
186
257
  async runChain(address, scannerId) {
187
258
  const chain = this.composition.getRunChain(scannerId);
@@ -287,7 +358,7 @@ export class ScannerEngine {
287
358
  }
288
359
  schedule(entry) {
289
360
  const scannerId = entry.scanner.definition.id;
290
- if (entry.timer || !entry.enabled) {
361
+ if (entry.timer || !entry.enabled || entry.scheduleMode !== "interval") {
291
362
  return;
292
363
  }
293
364
  const intervalMs = Math.max(entry.intervalSeconds, 1) * 1000;
@@ -368,6 +439,26 @@ export class ScannerEngine {
368
439
  }
369
440
  await this.deps.stores.signalStore.write(result, entry.scanner.definition);
370
441
  }
442
+ /**
443
+ * Commits retained context for external ingests through the same shared
444
+ * artifact store used by built-in scanners.
445
+ *
446
+ * Built-in scanners write context from inside `scan()` via
447
+ * `ctx.saveSharedArtifact(...)`. External scanners do not execute scanner
448
+ * logic, so the engine must preserve that boundary explicitly here.
449
+ */
450
+ async persistExternalContextIfNeeded(entry, prepared) {
451
+ if (!prepared.contextUpdated || prepared.retainedContext === null) {
452
+ return;
453
+ }
454
+ const producedContract = entry.scanner.definition.artifacts?.produces?.[0];
455
+ if (!producedContract) {
456
+ throw new Error(`External scanner '${entry.scanner.definition.id}' declared context output but is missing a produced context contract.`);
457
+ }
458
+ await this.deps.stores.sharedArtifactStore.saveByScanner(entry.address, entry.scanner.definition.id, prepared.retainedContext, {
459
+ contract: producedContract,
460
+ });
461
+ }
371
462
  /**
372
463
  * Returns the registered strategy/scanner runtime entry or throws when the
373
464
  * requested pair is unknown to the engine.
@@ -379,6 +470,31 @@ export class ScannerEngine {
379
470
  }
380
471
  return entry;
381
472
  }
473
+ /**
474
+ * Resolves the target registration for an external ingest and enforces the
475
+ * routing invariants that make the ingest path safe.
476
+ *
477
+ * Route validation happens here instead of in the runtime/plugin layers so
478
+ * every caller shares the same rules for unknown scanners, disabled targets,
479
+ * and non-external registrations. Payload-shape compatibility with
480
+ * signal-only versus context-producing scanners stays in the ingest validator.
481
+ */
482
+ requireExternalIngestRegistration(address, scannerId) {
483
+ let entry;
484
+ try {
485
+ entry = this.requireRegistration(address, scannerId);
486
+ }
487
+ catch {
488
+ throw new ExternalScannerIngestError("NOT_FOUND", `Scanner '${scannerId}' is not registered for strategy '${address}'.`);
489
+ }
490
+ if (entry.scheduleMode !== "external") {
491
+ throw new ExternalScannerIngestError("INVALID_REQUEST", `Scanner '${scannerId}' is not an external_scanner for strategy '${address}'.`);
492
+ }
493
+ if (!entry.enabled) {
494
+ throw new ExternalScannerIngestError("INVALID_REQUEST", `External scanner '${scannerId}' is disabled for strategy '${address}'.`);
495
+ }
496
+ return entry;
497
+ }
382
498
  defaultStateFor(entry) {
383
499
  const definition = entry.scanner.definition;
384
500
  if (definition.defaultState === undefined) {
@@ -439,7 +555,9 @@ export class ScannerEngine {
439
555
  });
440
556
  for (const scannerId of sourceIds) {
441
557
  for (const entry of this.registry.list().filter((candidate) => {
442
- return candidate.scanner.definition.id === scannerId && candidate.enabled;
558
+ return (candidate.scanner.definition.id === scannerId &&
559
+ candidate.enabled &&
560
+ candidate.scheduleMode === "interval");
443
561
  })) {
444
562
  const producedContract = entry.scanner.definition.artifacts?.produces?.[0];
445
563
  if (!producedContract) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/scanners/engine/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/scanners/engine/engine.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,22 @@ import type { StrategyScannerRegistration } from "./strategy-registry.js";
9
9
  export declare function buildRunResult(entry: StrategyScannerRegistration, context: ScanContext<unknown, unknown>, output: ScannerScanOutput, now: () => number, logger?: {
10
10
  warn?: (message: string, meta?: Record<string, unknown>) => void;
11
11
  }): ScanResult;
12
+ /**
13
+ * Builds a normalized `ScanResult` for a validated external ingest.
14
+ *
15
+ * External scanners bypass `scanner.scan()` because the caller already
16
+ * provides the signal payload. This helper keeps score clamping, signal
17
+ * normalization, and terminal result shape aligned with scheduled runs without
18
+ * inventing a parallel persistence format.
19
+ */
20
+ export declare function buildExternalIngestResult(entry: StrategyScannerRegistration, params: {
21
+ timestamp: number;
22
+ signals: Signal[];
23
+ scannedCount: number;
24
+ summary: Record<string, unknown>;
25
+ }, now: () => number, logger?: {
26
+ warn?: (message: string, meta?: Record<string, unknown>) => void;
27
+ }): ScanResult;
12
28
  /** Determines whether a scan result should be persisted based on the scanner's persistence policy. */
13
29
  export declare function shouldPersist(policy: PersistencePolicy, result: ScanResult): boolean;
14
30
  /** Constructs a ScanResult with default values for optional fields. */
@@ -1 +1 @@
1
- {"version":3,"file":"result-builder.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/result-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAM,EACP,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,2BAA2B,EAClC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EACtC,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,MAAM,EACjB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAAE,GAC5E,UAAU,CAqBZ;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAWpF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,UAAU,CAYb;AA4DD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnE;AAcD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
1
+ {"version":3,"file":"result-builder.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/result-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAM,EACP,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,2BAA2B,EAClC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EACtC,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,MAAM,EACjB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAAE,GAC5E,UAAU,CAqBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,2BAA2B,EAClC,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,EACD,GAAG,EAAE,MAAM,MAAM,EACjB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAAE,GAC5E,UAAU,CAgBZ;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAWpF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,UAAU,CAYb;AA4DD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnE;AAcD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
@@ -22,6 +22,28 @@ export function buildRunResult(entry, context, output, now, logger) {
22
22
  summary: isRecord(output.summary) ? output.summary : {},
23
23
  });
24
24
  }
25
+ /**
26
+ * Builds a normalized `ScanResult` for a validated external ingest.
27
+ *
28
+ * External scanners bypass `scanner.scan()` because the caller already
29
+ * provides the signal payload. This helper keeps score clamping, signal
30
+ * normalization, and terminal result shape aligned with scheduled runs without
31
+ * inventing a parallel persistence format.
32
+ */
33
+ export function buildExternalIngestResult(entry, params, now, logger) {
34
+ const outputTimestamp = coerceTimestamp(params.timestamp, now());
35
+ const signals = params.signals.map((signal) => normalizeSignal(signal, entry, outputTimestamp, logger));
36
+ return buildResult({
37
+ address: entry.address,
38
+ scannerId: entry.scanner.definition.id,
39
+ timestamp: outputTimestamp,
40
+ status: signals.length > 0 ? ScanStatusEnum.OK : ScanStatusEnum.HEARTBEAT,
41
+ signals,
42
+ actionableCount: signals.length,
43
+ scannedCount: coerceCount(params.scannedCount, signals.length),
44
+ summary: isRecord(params.summary) ? params.summary : {},
45
+ });
46
+ }
25
47
  /** Determines whether a scan result should be persisted based on the scanner's persistence policy. */
26
48
  export function shouldPersist(policy, result) {
27
49
  switch (policy) {
@@ -1 +1 @@
1
- {"version":3,"file":"result-builder.js","sourceRoot":"","sources":["../../../src/scanners/engine/result-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result-builder.js","sourceRoot":"","sources":["../../../src/scanners/engine/result-builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Scanner } from "../protocol/scanner.js";
2
+ import type { ScannerScheduleMode } from "../scanner-definition.js";
2
3
  import type { ScannerId, StrategyRegistration } from "../types.js";
3
4
  /**
4
5
  * One scanner runtime registration scoped to one strategy.
@@ -8,6 +9,7 @@ export interface StrategyScannerRegistration<Cfg = unknown, St = unknown> {
8
9
  address: string;
9
10
  strategy: StrategyRegistration;
10
11
  scanner: Scanner<Cfg, St>;
12
+ scheduleMode: ScannerScheduleMode;
11
13
  enabled: boolean;
12
14
  initialized: boolean;
13
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-registry.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/strategy-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,2BAA2B,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,GAAG,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED,yEAAyE;AACzE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAE3E,8CAA8C;IAC9C,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAItD,qDAAqD;IACrD,eAAe,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GACxB,2BAA2B,CAAC,GAAG,EAAE,EAAE,CAAC;IAoCvC,4EAA4E;IAC5E,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACnB,2BAA2B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,SAAS;IAMnD,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,2BAA2B,EAAE;IAOrD,iDAAiD;IACjD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAUzE,kFAAkF;IAClF,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,OAAO,GACnB,IAAI;IAUP,mFAAmF;IACnF,eAAe,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,IAAI;IAUP,4DAA4D;IAC5D,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC3B,IAAI;IAUP,4EAA4E;IAC5E,YAAY,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,IAAI;IAUP,oDAAoD;IACpD,cAAc,IAAI,IAAI;CASvB"}
1
+ {"version":3,"file":"strategy-registry.d.ts","sourceRoot":"","sources":["../../../src/scanners/engine/strategy-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,2BAA2B,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1B,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,GAAG,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED,yEAAyE;AACzE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAE3E,8CAA8C;IAC9C,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAItD,qDAAqD;IACrD,eAAe,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GACxB,2BAA2B,CAAC,GAAG,EAAE,EAAE,CAAC;IAyCvC,4EAA4E;IAC5E,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACnB,2BAA2B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,SAAS;IAMnD,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,2BAA2B,EAAE;IAOrD,iDAAiD;IACjD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAUzE,kFAAkF;IAClF,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,OAAO,GACnB,IAAI;IAUP,mFAAmF;IACnF,eAAe,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,IAAI;IAUP,4DAA4D;IAC5D,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC3B,IAAI;IAUP,4EAA4E;IAC5E,YAAY,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,IAAI;IAUP,oDAAoD;IACpD,cAAc,IAAI,IAAI;CASvB"}
@@ -17,6 +17,7 @@ export class StrategyRegistry {
17
17
  throw new Error(`Scanner '${scanner.definition.id}' is already registered for strategy '${address}'.`);
18
18
  }
19
19
  const override = strategy.scannerOverrides?.[scanner.definition.id];
20
+ const scheduleMode = override?.scheduleMode ?? scanner.definition.scheduleMode ?? "interval";
20
21
  const enabled = strategy.defaultEnabledScanners === undefined
21
22
  ? true
22
23
  : strategy.defaultEnabledScanners.includes(scanner.definition.id);
@@ -24,10 +25,13 @@ export class StrategyRegistry {
24
25
  address,
25
26
  strategy,
26
27
  scanner,
28
+ scheduleMode,
27
29
  enabled,
28
30
  initialized: false,
29
31
  lastScanTime: null,
30
- intervalSeconds: override?.intervalSeconds ?? scanner.definition.intervalSeconds,
32
+ intervalSeconds: scheduleMode === "external"
33
+ ? 0
34
+ : override?.intervalSeconds ?? scanner.definition.intervalSeconds,
31
35
  initialConfig: (override?.config ?? scanner.definition.defaultConfig),
32
36
  nextRunAt: null,
33
37
  timer: null,
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-registry.js","sourceRoot":"","sources":["../../../src/scanners/engine/strategy-registry.ts"],"names":[],"mappings":"AAwBA,yEAAyE;AACzE,MAAM,OAAO,gBAAgB;IACV,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAC;IACzD,QAAQ,GAAG,IAAI,GAAG,EAAuC,CAAC;IAE3E,8CAA8C;IAC9C,gBAAgB,CAAC,QAA8B;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,qDAAqD;IACrD,eAAe,CACb,OAAe,EACf,OAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,sBAAsB,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,CAAC,UAAU,CAAC,EAAE,yCAAyC,OAAO,IAAI,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GACX,QAAQ,CAAC,sBAAsB,KAAK,SAAS;YAC3C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAyC;YAClD,OAAO;YACP,QAAQ;YACR,OAAO;YACP,OAAO;YACP,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,QAAQ,EAAE,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe;YAChF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAQ;YAC5E,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAoC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,GAAG,CACD,OAAe,EACf,SAAoB;QAEpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAE5C,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,OAAgB;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAClF,CAAC;IAED,iDAAiD;IACjD,UAAU,CAAC,OAAe,EAAE,SAAoB,EAAE,OAAgB;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,qCAAqC,OAAO,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,kFAAkF;IAClF,cAAc,CACZ,OAAe,EACf,SAAoB,EACpB,WAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,qCAAqC,OAAO,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,mFAAmF;IACnF,eAAe,CACb,OAAe,EACf,SAAoB,EACpB,YAA2B;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,qCAAqC,OAAO,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CACN,OAAe,EACf,SAAoB,EACpB,KAA4B;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,qCAAqC,OAAO,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,4EAA4E;IAC5E,YAAY,CACV,OAAe,EACf,SAAoB,EACpB,SAAwB;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,qCAAqC,OAAO,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,oDAAoD;IACpD,cAAc;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,SAAoB;IACzD,OAAO,GAAG,OAAO,KAAK,SAAS,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"strategy-registry.js","sourceRoot":"","sources":["../../../src/scanners/engine/strategy-registry.ts"],"names":[],"mappings":"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"}