@pikku/core 0.12.106 → 0.12.111

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 (589) hide show
  1. package/CHANGELOG.md +358 -0
  2. package/dist/analytics/analytics.d.ts +6 -0
  3. package/dist/analytics/analytics.js +58 -0
  4. package/dist/analytics/analytics.types.d.ts +156 -0
  5. package/dist/analytics/analytics.types.js +1 -0
  6. package/dist/analytics/anonymous-analytics-identity.d.ts +23 -0
  7. package/dist/analytics/anonymous-analytics-identity.js +27 -0
  8. package/dist/analytics/compose-analytics-identity.d.ts +14 -0
  9. package/dist/analytics/compose-analytics-identity.js +33 -0
  10. package/dist/analytics/cookie-analytics-identity.d.ts +24 -0
  11. package/dist/analytics/cookie-analytics-identity.js +37 -0
  12. package/dist/analytics/define-analytics-events.d.ts +22 -0
  13. package/dist/analytics/define-analytics-events.js +9 -0
  14. package/dist/analytics/fan-out-analytics.d.ts +15 -0
  15. package/dist/analytics/fan-out-analytics.js +36 -0
  16. package/dist/analytics/index.d.ts +13 -0
  17. package/dist/analytics/index.js +8 -0
  18. package/dist/analytics/logger-analytics-service.d.ts +14 -0
  19. package/dist/analytics/logger-analytics-service.js +23 -0
  20. package/dist/analytics/mint-cookie.d.ts +44 -0
  21. package/dist/analytics/mint-cookie.js +55 -0
  22. package/dist/errors/errors.d.ts +7 -0
  23. package/dist/errors/errors.js +17 -0
  24. package/dist/function/function-meta.types.d.ts +2 -0
  25. package/dist/function/function-runner.js +29 -0
  26. package/dist/function/functions.types.d.ts +22 -3
  27. package/dist/middleware/auth-apikey.d.ts +1 -1
  28. package/dist/pikku-state.d.ts +1 -1
  29. package/dist/scopes.d.ts +11 -0
  30. package/dist/scopes.js +17 -0
  31. package/dist/services/credential-wire-service.d.ts +1 -1
  32. package/dist/services/feature-flag-service.d.ts +100 -0
  33. package/dist/services/feature-flag-service.js +1 -0
  34. package/dist/services/index.d.ts +1 -0
  35. package/dist/services/meta-service.d.ts +16 -0
  36. package/dist/services/meta-service.js +19 -0
  37. package/dist/services/webhook-service.d.ts +7 -2
  38. package/dist/services/webhook-service.js +11 -6
  39. package/dist/testing/service-tests/agent-run-service-tests.d.ts +2 -2
  40. package/dist/testing/service-tests/agent-storage-service-tests.d.ts +1 -1
  41. package/dist/testing/service-tests/channel-store-tests.d.ts +1 -1
  42. package/dist/testing/service-tests/credential-service-tests.d.ts +1 -1
  43. package/dist/testing/service-tests/deployment-service-tests.d.ts +1 -1
  44. package/dist/testing/service-tests/event-hub-store-tests.d.ts +1 -1
  45. package/dist/testing/service-tests/secret-service-tests.d.ts +1 -1
  46. package/dist/testing/service-tests/session-store-tests.d.ts +1 -1
  47. package/dist/testing/service-tests/workflow-run-service-tests.d.ts +1 -1
  48. package/dist/testing/service-tests/workflow-service-tests.d.ts +1 -1
  49. package/dist/types/core.types.d.ts +23 -0
  50. package/dist/wirings/agent/agent-rpc.d.ts +1 -1
  51. package/dist/wirings/agent/agent-turn.d.ts +1 -1
  52. package/dist/wirings/agent-scorer/agent-scorer-live.d.ts +1 -1
  53. package/dist/wirings/channel/channel-common.d.ts +1 -1
  54. package/dist/wirings/channel/channel-rpc-validators.d.ts +2 -2
  55. package/dist/wirings/channel/channel-runner.d.ts +1 -1
  56. package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
  57. package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
  58. package/dist/wirings/cli/channel/cli-approval.d.ts +2 -2
  59. package/dist/wirings/flag/assert-feature-available.d.ts +15 -0
  60. package/dist/wirings/flag/assert-feature-available.js +23 -0
  61. package/dist/wirings/flag/cached-flag-source.d.ts +73 -0
  62. package/dist/wirings/flag/cached-flag-source.js +96 -0
  63. package/dist/wirings/flag/define-feature-flags.d.ts +33 -0
  64. package/dist/wirings/flag/define-feature-flags.js +32 -0
  65. package/dist/wirings/flag/flag.types.d.ts +97 -0
  66. package/dist/wirings/flag/flag.types.js +1 -0
  67. package/dist/wirings/flag/index.d.ts +7 -0
  68. package/dist/wirings/flag/index.js +5 -0
  69. package/dist/wirings/flag/resolve-flag.d.ts +52 -0
  70. package/dist/wirings/flag/resolve-flag.js +90 -0
  71. package/dist/wirings/flag/validate-flag-definitions.d.ts +26 -0
  72. package/dist/wirings/flag/validate-flag-definitions.js +103 -0
  73. package/dist/wirings/rpc/rpc-runner.js +3 -0
  74. package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +8 -8
  75. package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +1 -1
  76. package/dist/wirings/workflow/workflow-queue-routing.d.ts +1 -1
  77. package/package.json +11 -5
  78. package/run-tests.sh +17 -9
  79. package/src/public-surface.json +26 -0
  80. package/src/agent-naming.test.ts +0 -68
  81. package/src/api-report.test.ts +0 -138
  82. package/src/app-alias-surface.test.ts +0 -179
  83. package/src/app-leaf-surface.test.ts +0 -222
  84. package/src/bootstrap-compat/root.ts +0 -20
  85. package/src/classification/column-form.test.ts +0 -97
  86. package/src/classification/column-form.ts +0 -55
  87. package/src/classification/data-classification.ts +0 -73
  88. package/src/classification/index.ts +0 -40
  89. package/src/classification/key-ids.ts +0 -2
  90. package/src/classification/secret-value.test.ts +0 -204
  91. package/src/classification/secret-value.ts +0 -106
  92. package/src/crypto-utils.test.ts +0 -668
  93. package/src/crypto-utils.ts +0 -460
  94. package/src/dev/hot-reload.test.ts +0 -587
  95. package/src/dev/hot-reload.ts +0 -225
  96. package/src/dev/module-runner.test.ts +0 -235
  97. package/src/dev/module-runner.ts +0 -138
  98. package/src/dev/reload-meta.test.ts +0 -183
  99. package/src/dev/reload-meta.ts +0 -144
  100. package/src/ecosystem-tier-removed.test.ts +0 -72
  101. package/src/env.ts +0 -1
  102. package/src/errors/error-handler.ts +0 -77
  103. package/src/errors/error.test.ts +0 -229
  104. package/src/errors/errors.ts +0 -393
  105. package/src/errors/index.ts +0 -11
  106. package/src/errors/serialized-error.ts +0 -12
  107. package/src/factory-functions.test.ts +0 -111
  108. package/src/function/abort-scope.test.ts +0 -97
  109. package/src/function/abort-scope.ts +0 -80
  110. package/src/function/function-meta.types.ts +0 -151
  111. package/src/function/function-runner.test.ts +0 -1619
  112. package/src/function/function-runner.ts +0 -499
  113. package/src/function/functions.types.ts +0 -319
  114. package/src/function/index.ts +0 -40
  115. package/src/function/list.types.test.ts +0 -100
  116. package/src/function/list.types.ts +0 -69
  117. package/src/function/pikku-request.test.ts +0 -35
  118. package/src/function/pikku-request.ts +0 -17
  119. package/src/gopass-secrets-removed.test.ts +0 -51
  120. package/src/handle-error.test.ts +0 -532
  121. package/src/handle-error.ts +0 -64
  122. package/src/middleware/auth-apikey.test.ts +0 -362
  123. package/src/middleware/auth-apikey.ts +0 -39
  124. package/src/middleware/auth-bearer.test.ts +0 -566
  125. package/src/middleware/auth-bearer.ts +0 -83
  126. package/src/middleware/auth-cookie.test.ts +0 -572
  127. package/src/middleware/auth-cookie.ts +0 -107
  128. package/src/middleware/cors.test.ts +0 -579
  129. package/src/middleware/cors.ts +0 -103
  130. package/src/middleware/index.ts +0 -30
  131. package/src/middleware/middleware-factories.ts +0 -76
  132. package/src/middleware/middleware.types.ts +0 -61
  133. package/src/middleware/remote-auth.test.ts +0 -547
  134. package/src/middleware/remote-auth.ts +0 -95
  135. package/src/middleware/remote-jobs-secret.ts +0 -35
  136. package/src/middleware/require-origin.test.ts +0 -115
  137. package/src/middleware/require-origin.ts +0 -79
  138. package/src/middleware/telemetry.ts +0 -83
  139. package/src/middleware-runner.test.ts +0 -578
  140. package/src/middleware-runner.ts +0 -232
  141. package/src/no-any-casts.test.ts +0 -57
  142. package/src/no-root-barrel.test.ts +0 -122
  143. package/src/permissions.test.ts +0 -256
  144. package/src/permissions.ts +0 -217
  145. package/src/pikku-state.test.ts +0 -198
  146. package/src/pikku-state.ts +0 -206
  147. package/src/production-barrels-stay-lean.test.ts +0 -110
  148. package/src/public-surface.test.ts +0 -133
  149. package/src/remote.test.ts +0 -173
  150. package/src/remote.ts +0 -56
  151. package/src/removed-legacy-exports.test.ts +0 -66
  152. package/src/run-tests-script.test.ts +0 -67
  153. package/src/schema.test.ts +0 -430
  154. package/src/schema.ts +0 -204
  155. package/src/scopes.test.ts +0 -203
  156. package/src/scopes.ts +0 -67
  157. package/src/services/agent-run-state-service.ts +0 -37
  158. package/src/services/agent-runner-service.ts +0 -238
  159. package/src/services/agent-storage-service.ts +0 -39
  160. package/src/services/ai-embedding-service.ts +0 -9
  161. package/src/services/audit-service.test.ts +0 -44
  162. package/src/services/audit-service.ts +0 -280
  163. package/src/services/content-service.ts +0 -65
  164. package/src/services/credential-service.ts +0 -20
  165. package/src/services/credential-wire-service.test.ts +0 -235
  166. package/src/services/credential-wire-service.ts +0 -120
  167. package/src/services/deployment-service.ts +0 -32
  168. package/src/services/email-service.test.ts +0 -100
  169. package/src/services/email-service.ts +0 -60
  170. package/src/services/email-template.test.ts +0 -311
  171. package/src/services/email-template.ts +0 -254
  172. package/src/services/file-scenario-run-store.test.ts +0 -349
  173. package/src/services/file-scenario-run-store.ts +0 -282
  174. package/src/services/gateway-service.ts +0 -5
  175. package/src/services/http-personas-converse.test.ts +0 -274
  176. package/src/services/http-personas.test.ts +0 -379
  177. package/src/services/http-personas.ts +0 -508
  178. package/src/services/in-memory-agent-run-state-service.ts +0 -87
  179. package/src/services/in-memory-queue-service.test.ts +0 -162
  180. package/src/services/in-memory-queue-service.ts +0 -78
  181. package/src/services/in-memory-session-store.test.ts +0 -58
  182. package/src/services/in-memory-session-store.ts +0 -20
  183. package/src/services/in-memory-trigger-service.ts +0 -47
  184. package/src/services/in-memory-workflow-service.test.ts +0 -430
  185. package/src/services/in-memory-workflow-service.ts +0 -595
  186. package/src/services/index.ts +0 -192
  187. package/src/services/istanbul-coverage-service.test.ts +0 -66
  188. package/src/services/istanbul-coverage-service.ts +0 -59
  189. package/src/services/jwt-service.ts +0 -15
  190. package/src/services/local-content-request-handler.test.ts +0 -240
  191. package/src/services/local-content-request-handler.ts +0 -295
  192. package/src/services/local-content.test.ts +0 -186
  193. package/src/services/local-content.ts +0 -242
  194. package/src/services/local-credential-service.ts +0 -63
  195. package/src/services/local-email-service.test.ts +0 -182
  196. package/src/services/local-email-service.ts +0 -43
  197. package/src/services/local-gateway-service.ts +0 -51
  198. package/src/services/local-secrets.test.ts +0 -95
  199. package/src/services/local-secrets.ts +0 -71
  200. package/src/services/local-variables.test.ts +0 -61
  201. package/src/services/local-variables.ts +0 -45
  202. package/src/services/logger-console.test.ts +0 -117
  203. package/src/services/logger-console.ts +0 -174
  204. package/src/services/logger.ts +0 -48
  205. package/src/services/meta-service.test.ts +0 -75
  206. package/src/services/meta-service.ts +0 -767
  207. package/src/services/persona-actor-secret.test.ts +0 -68
  208. package/src/services/persona-actor-secret.ts +0 -70
  209. package/src/services/persona-sign-in.test.ts +0 -219
  210. package/src/services/persona-sign-in.ts +0 -238
  211. package/src/services/personas-service.ts +0 -191
  212. package/src/services/pikku-user-id.test.ts +0 -62
  213. package/src/services/pikku-user-id.ts +0 -13
  214. package/src/services/queue-webhook-service.test.ts +0 -409
  215. package/src/services/queue-webhook-service.ts +0 -150
  216. package/src/services/remote-jobs.test.ts +0 -106
  217. package/src/services/remote-jobs.ts +0 -92
  218. package/src/services/scheduler-service.ts +0 -37
  219. package/src/services/schema-service.ts +0 -10
  220. package/src/services/scope-service.ts +0 -91
  221. package/src/services/scoped-credential-service.test.ts +0 -86
  222. package/src/services/scoped-credential-service.ts +0 -63
  223. package/src/services/scoped-secret-service.test.ts +0 -93
  224. package/src/services/scoped-secret-service.ts +0 -40
  225. package/src/services/secret-host-binding.test.ts +0 -138
  226. package/src/services/secret-host-binding.ts +0 -51
  227. package/src/services/secret-service.ts +0 -25
  228. package/src/services/secretless.test.ts +0 -54
  229. package/src/services/secretless.ts +0 -29
  230. package/src/services/session-store.ts +0 -9
  231. package/src/services/stub-tracker.test.ts +0 -104
  232. package/src/services/stub-tracker.ts +0 -175
  233. package/src/services/system-role-guard.test.ts +0 -96
  234. package/src/services/system-role-guard.ts +0 -71
  235. package/src/services/temporary-file-service.ts +0 -76
  236. package/src/services/trigger-service.ts +0 -5
  237. package/src/services/typed-credential-service.ts +0 -83
  238. package/src/services/typed-secret-service.test.ts +0 -204
  239. package/src/services/typed-secret-service.ts +0 -132
  240. package/src/services/typed-variables-service.test.ts +0 -166
  241. package/src/services/typed-variables-service.ts +0 -166
  242. package/src/services/user-session-service.test.ts +0 -147
  243. package/src/services/user-session-service.ts +0 -85
  244. package/src/services/v8-coverage-service.test.ts +0 -69
  245. package/src/services/v8-coverage-service.ts +0 -163
  246. package/src/services/variables-service.ts +0 -13
  247. package/src/services/webhook-service.ts +0 -147
  248. package/src/services/workflow-service.ts +0 -120
  249. package/src/side-effects-are-declared.test.ts +0 -84
  250. package/src/source-files-stay-composable.test.ts +0 -41
  251. package/src/template-alias-surface.test.ts +0 -240
  252. package/src/test-utils.ts +0 -38
  253. package/src/testing/index.ts +0 -3
  254. package/src/testing/service-tests/agent-run-service-tests.ts +0 -98
  255. package/src/testing/service-tests/agent-storage-service-tests.ts +0 -379
  256. package/src/testing/service-tests/channel-store-tests.ts +0 -98
  257. package/src/testing/service-tests/credential-service-tests.ts +0 -143
  258. package/src/testing/service-tests/deployment-service-tests.ts +0 -33
  259. package/src/testing/service-tests/event-hub-store-tests.ts +0 -48
  260. package/src/testing/service-tests/secret-service-tests.ts +0 -105
  261. package/src/testing/service-tests/session-store-tests.ts +0 -62
  262. package/src/testing/service-tests/workflow-run-service-tests.ts +0 -59
  263. package/src/testing/service-tests/workflow-service-tests.ts +0 -308
  264. package/src/testing/service-tests.ts +0 -95
  265. package/src/time-utils.test.ts +0 -56
  266. package/src/time-utils.ts +0 -89
  267. package/src/types/core.types.ts +0 -446
  268. package/src/types/index.ts +0 -25
  269. package/src/types/state.types.ts +0 -226
  270. package/src/types/typed-credentials.test.ts +0 -72
  271. package/src/utils/hash.test.ts +0 -68
  272. package/src/utils/hash.ts +0 -26
  273. package/src/utils/hmac.ts +0 -21
  274. package/src/utils/node-host-resolver.ts +0 -20
  275. package/src/utils/safe-fetch.test.ts +0 -515
  276. package/src/utils/safe-fetch.ts +0 -347
  277. package/src/utils.test.ts +0 -359
  278. package/src/utils.ts +0 -165
  279. package/src/version.test.ts +0 -80
  280. package/src/version.ts +0 -25
  281. package/src/wirings/actor-flow/actor-flow.types.ts +0 -40
  282. package/src/wirings/actor-flow/index.ts +0 -10
  283. package/src/wirings/actor-flow/run-conversation.test.ts +0 -187
  284. package/src/wirings/actor-flow/run-conversation.ts +0 -280
  285. package/src/wirings/addon/addon-auth-tags.test.ts +0 -219
  286. package/src/wirings/addon/addon-runner.ts +0 -236
  287. package/src/wirings/addon/addon-scopes.test.ts +0 -225
  288. package/src/wirings/addon/addon-secrets.test.ts +0 -391
  289. package/src/wirings/addon/index.ts +0 -12
  290. package/src/wirings/addon/remote-addon-auth.ts +0 -65
  291. package/src/wirings/addon/wire-addon.test.ts +0 -102
  292. package/src/wirings/addon/wire-addon.ts +0 -202
  293. package/src/wirings/addon/wire-remote-addon.ts +0 -41
  294. package/src/wirings/agent/agent-agui.test.ts +0 -1213
  295. package/src/wirings/agent/agent-agui.ts +0 -405
  296. package/src/wirings/agent/agent-authorization.test.ts +0 -208
  297. package/src/wirings/agent/agent-finalize.test.ts +0 -187
  298. package/src/wirings/agent/agent-finalize.ts +0 -197
  299. package/src/wirings/agent/agent-helpers.test.ts +0 -215
  300. package/src/wirings/agent/agent-helpers.ts +0 -96
  301. package/src/wirings/agent/agent-interrupt.test.ts +0 -833
  302. package/src/wirings/agent/agent-interrupt.ts +0 -400
  303. package/src/wirings/agent/agent-memory.test.ts +0 -397
  304. package/src/wirings/agent/agent-memory.ts +0 -496
  305. package/src/wirings/agent/agent-middleware.types.test.ts +0 -41
  306. package/src/wirings/agent/agent-model-config.test.ts +0 -103
  307. package/src/wirings/agent/agent-model-config.ts +0 -59
  308. package/src/wirings/agent/agent-prepare.test.ts +0 -977
  309. package/src/wirings/agent/agent-prepare.ts +0 -1083
  310. package/src/wirings/agent/agent-registry.test.ts +0 -455
  311. package/src/wirings/agent/agent-registry.ts +0 -99
  312. package/src/wirings/agent/agent-resume-authorization.test.ts +0 -206
  313. package/src/wirings/agent/agent-rpc.ts +0 -116
  314. package/src/wirings/agent/agent-runner.test.ts +0 -1229
  315. package/src/wirings/agent/agent-runner.ts +0 -858
  316. package/src/wirings/agent/agent-stream-delegate.test.ts +0 -381
  317. package/src/wirings/agent/agent-stream-output-hooks.test.ts +0 -353
  318. package/src/wirings/agent/agent-stream.test.ts +0 -1800
  319. package/src/wirings/agent/agent-stream.ts +0 -1639
  320. package/src/wirings/agent/agent-thread-ownership.test.ts +0 -297
  321. package/src/wirings/agent/agent-turn.test.ts +0 -65
  322. package/src/wirings/agent/agent-turn.ts +0 -122
  323. package/src/wirings/agent/agent-utils.ts +0 -20
  324. package/src/wirings/agent/agent.types.ts +0 -676
  325. package/src/wirings/agent/index.ts +0 -58
  326. package/src/wirings/agent/voice-input.test.ts +0 -220
  327. package/src/wirings/agent/voice-input.ts +0 -180
  328. package/src/wirings/agent/voice-output.test.ts +0 -510
  329. package/src/wirings/agent/voice-output.ts +0 -311
  330. package/src/wirings/agent-scorer/agent-scorer-grade.test.ts +0 -106
  331. package/src/wirings/agent-scorer/agent-scorer-grade.ts +0 -55
  332. package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +0 -285
  333. package/src/wirings/agent-scorer/agent-scorer-judge.ts +0 -180
  334. package/src/wirings/agent-scorer/agent-scorer-live.test.ts +0 -174
  335. package/src/wirings/agent-scorer/agent-scorer-live.ts +0 -56
  336. package/src/wirings/agent-scorer/agent-scorer-registry.ts +0 -66
  337. package/src/wirings/agent-scorer/agent-scorer-sampling.test.ts +0 -34
  338. package/src/wirings/agent-scorer/agent-scorer-sampling.ts +0 -36
  339. package/src/wirings/agent-scorer/agent-scorer-snapshots.test.ts +0 -49
  340. package/src/wirings/agent-scorer/agent-scorer-snapshots.ts +0 -46
  341. package/src/wirings/agent-scorer/agent-scorer-worker.test.ts +0 -122
  342. package/src/wirings/agent-scorer/agent-scorer-worker.ts +0 -71
  343. package/src/wirings/agent-scorer/agent-scorer.ts +0 -102
  344. package/src/wirings/agent-scorer/agent-scorer.types.ts +0 -128
  345. package/src/wirings/agent-scorer/index.ts +0 -23
  346. package/src/wirings/channel/channel-common.ts +0 -102
  347. package/src/wirings/channel/channel-handler-shapes.test.ts +0 -72
  348. package/src/wirings/channel/channel-handler.test.ts +0 -322
  349. package/src/wirings/channel/channel-handler.ts +0 -259
  350. package/src/wirings/channel/channel-host-rpc.test.ts +0 -150
  351. package/src/wirings/channel/channel-host-rpc.ts +0 -69
  352. package/src/wirings/channel/channel-middleware-runner.test.ts +0 -188
  353. package/src/wirings/channel/channel-middleware-runner.ts +0 -126
  354. package/src/wirings/channel/channel-rpc-registry.ts +0 -116
  355. package/src/wirings/channel/channel-rpc-responder.ts +0 -117
  356. package/src/wirings/channel/channel-rpc-service.ts +0 -132
  357. package/src/wirings/channel/channel-rpc-validators.ts +0 -65
  358. package/src/wirings/channel/channel-rpc.test.ts +0 -841
  359. package/src/wirings/channel/channel-rpc.ts +0 -5
  360. package/src/wirings/channel/channel-rpc.types.ts +0 -160
  361. package/src/wirings/channel/channel-runner.ts +0 -164
  362. package/src/wirings/channel/channel-store.ts +0 -35
  363. package/src/wirings/channel/channel.types.ts +0 -193
  364. package/src/wirings/channel/define-channel-routes.ts +0 -5
  365. package/src/wirings/channel/eventhub-service.ts +0 -16
  366. package/src/wirings/channel/eventhub-store.ts +0 -13
  367. package/src/wirings/channel/index.ts +0 -40
  368. package/src/wirings/channel/local/index.ts +0 -3
  369. package/src/wirings/channel/local/local-channel-handler.ts +0 -98
  370. package/src/wirings/channel/local/local-channel-runner.test.ts +0 -339
  371. package/src/wirings/channel/local/local-channel-runner.ts +0 -271
  372. package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -77
  373. package/src/wirings/channel/local/local-eventhub-service.ts +0 -69
  374. package/src/wirings/channel/log-channels.ts +0 -16
  375. package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +0 -135
  376. package/src/wirings/channel/pikku-abstract-channel-handler.ts +0 -60
  377. package/src/wirings/channel/serverless/index.ts +0 -6
  378. package/src/wirings/channel/serverless/serverless-channel-runner.ts +0 -328
  379. package/src/wirings/cli/channel/cli-approval.test.ts +0 -177
  380. package/src/wirings/cli/channel/cli-approval.ts +0 -135
  381. package/src/wirings/cli/channel/cli-channel-runner.ts +0 -118
  382. package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +0 -192
  383. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +0 -148
  384. package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +0 -480
  385. package/src/wirings/cli/channel/cli-raw-client-runner.ts +0 -188
  386. package/src/wirings/cli/channel/index.ts +0 -6
  387. package/src/wirings/cli/cli-runner.test.ts +0 -969
  388. package/src/wirings/cli/cli-runner.ts +0 -538
  389. package/src/wirings/cli/cli.types.ts +0 -388
  390. package/src/wirings/cli/command-parser.test.ts +0 -1120
  391. package/src/wirings/cli/command-parser.ts +0 -713
  392. package/src/wirings/cli/define-cli-commands.ts +0 -13
  393. package/src/wirings/cli/format-cli-error.test.ts +0 -91
  394. package/src/wirings/cli/format-cli-error.ts +0 -96
  395. package/src/wirings/cli/index.ts +0 -19
  396. package/src/wirings/credential/credential.types.ts +0 -37
  397. package/src/wirings/credential/define-credential.ts +0 -49
  398. package/src/wirings/credential/index.ts +0 -7
  399. package/src/wirings/credential/validate-credential-definitions.ts +0 -63
  400. package/src/wirings/gateway/gateway-authorization.test.ts +0 -575
  401. package/src/wirings/gateway/gateway-channel-meta.test.ts +0 -44
  402. package/src/wirings/gateway/gateway-runner.test.ts +0 -581
  403. package/src/wirings/gateway/gateway-runner.ts +0 -411
  404. package/src/wirings/gateway/gateway.types.ts +0 -137
  405. package/src/wirings/gateway/index.ts +0 -15
  406. package/src/wirings/http/http-routes.test.ts +0 -318
  407. package/src/wirings/http/http-routes.ts +0 -111
  408. package/src/wirings/http/http-runner-addon-ref.test.ts +0 -238
  409. package/src/wirings/http/http-runner.test.ts +0 -503
  410. package/src/wirings/http/http-runner.ts +0 -462
  411. package/src/wirings/http/http.types.ts +0 -307
  412. package/src/wirings/http/index.ts +0 -27
  413. package/src/wirings/http/log-http-routes.ts +0 -18
  414. package/src/wirings/http/pikku-fetch-http-request.test.ts +0 -318
  415. package/src/wirings/http/pikku-fetch-http-request.ts +0 -260
  416. package/src/wirings/http/pikku-fetch-http-response.test.ts +0 -123
  417. package/src/wirings/http/pikku-fetch-http-response.ts +0 -149
  418. package/src/wirings/http/routers/http-router.ts +0 -13
  419. package/src/wirings/http/routers/path-to-regex.test.ts +0 -306
  420. package/src/wirings/http/routers/path-to-regex.ts +0 -115
  421. package/src/wirings/http/web-request.test.ts +0 -382
  422. package/src/wirings/http/web-request.ts +0 -162
  423. package/src/wirings/mcp/index.ts +0 -26
  424. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -388
  425. package/src/wirings/mcp/mcp-endpoint-registry.ts +0 -159
  426. package/src/wirings/mcp/mcp-runner.test.ts +0 -588
  427. package/src/wirings/mcp/mcp-runner.ts +0 -330
  428. package/src/wirings/mcp/mcp.types.ts +0 -199
  429. package/src/wirings/node/index.ts +0 -2
  430. package/src/wirings/node/node.types.ts +0 -23
  431. package/src/wirings/oauth2/index.ts +0 -1
  432. package/src/wirings/oauth2/oauth2.types.ts +0 -12
  433. package/src/wirings/persona/define-personas.ts +0 -33
  434. package/src/wirings/persona/index.ts +0 -75
  435. package/src/wirings/persona/persona-app-scopes.test.ts +0 -47
  436. package/src/wirings/persona/persona-app-scopes.ts +0 -74
  437. package/src/wirings/persona/persona-email.ts +0 -87
  438. package/src/wirings/persona/persona-environments.test.ts +0 -194
  439. package/src/wirings/persona/persona-environments.ts +0 -138
  440. package/src/wirings/persona/persona-mailbox.ts +0 -156
  441. package/src/wirings/persona/persona.test.ts +0 -230
  442. package/src/wirings/persona/persona.types.ts +0 -156
  443. package/src/wirings/persona/validate-personas.ts +0 -137
  444. package/src/wirings/queue/index.ts +0 -29
  445. package/src/wirings/queue/queue-identity.test.ts +0 -454
  446. package/src/wirings/queue/queue-identity.ts +0 -176
  447. package/src/wirings/queue/queue-runner.test.ts +0 -705
  448. package/src/wirings/queue/queue-runner.ts +0 -181
  449. package/src/wirings/queue/queue.types.ts +0 -161
  450. package/src/wirings/queue/register-queue-helper.ts +0 -46
  451. package/src/wirings/queue/signed-queue-service.ts +0 -60
  452. package/src/wirings/queue/validate-worker-config.test.ts +0 -108
  453. package/src/wirings/queue/validate-worker-config.ts +0 -90
  454. package/src/wirings/role/define-system-role.ts +0 -33
  455. package/src/wirings/role/index.ts +0 -13
  456. package/src/wirings/role/role.test.ts +0 -104
  457. package/src/wirings/role/role.types.ts +0 -47
  458. package/src/wirings/role/validate-role-definitions.ts +0 -93
  459. package/src/wirings/rpc/index.ts +0 -8
  460. package/src/wirings/rpc/rpc-runner.test.ts +0 -1130
  461. package/src/wirings/rpc/rpc-runner.ts +0 -566
  462. package/src/wirings/rpc/rpc-types.ts +0 -87
  463. package/src/wirings/scheduler/index.ts +0 -11
  464. package/src/wirings/scheduler/log-schedulers.ts +0 -16
  465. package/src/wirings/scheduler/scheduler-runner.test.ts +0 -835
  466. package/src/wirings/scheduler/scheduler-runner.ts +0 -138
  467. package/src/wirings/scheduler/scheduler.types.ts +0 -42
  468. package/src/wirings/scope/define-scope.ts +0 -33
  469. package/src/wirings/scope/index.ts +0 -15
  470. package/src/wirings/scope/scope.test.ts +0 -159
  471. package/src/wirings/scope/scope.types.ts +0 -42
  472. package/src/wirings/scope/validate-scope-definitions.ts +0 -107
  473. package/src/wirings/secret/index.ts +0 -9
  474. package/src/wirings/secret/secret.types.ts +0 -70
  475. package/src/wirings/secret/validate-secret-definitions.test.ts +0 -232
  476. package/src/wirings/secret/validate-secret-definitions.ts +0 -88
  477. package/src/wirings/trigger/index.ts +0 -9
  478. package/src/wirings/trigger/pikku-trigger-service.ts +0 -107
  479. package/src/wirings/trigger/trigger-runner.test.ts +0 -78
  480. package/src/wirings/trigger/trigger-runner.ts +0 -113
  481. package/src/wirings/trigger/trigger.types.ts +0 -100
  482. package/src/wirings/variable/index.ts +0 -8
  483. package/src/wirings/variable/validate-variable-definitions.test.ts +0 -115
  484. package/src/wirings/variable/validate-variable-definitions.ts +0 -71
  485. package/src/wirings/variable/variable.types.ts +0 -40
  486. package/src/wirings/virtual-user/index.ts +0 -107
  487. package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +0 -115
  488. package/src/wirings/virtual-user/prepare-virtual-user-run.ts +0 -95
  489. package/src/wirings/virtual-user/run-virtual-user.test.ts +0 -774
  490. package/src/wirings/virtual-user/run-virtual-user.ts +0 -684
  491. package/src/wirings/virtual-user/virtual-user-agents.test.ts +0 -72
  492. package/src/wirings/virtual-user/virtual-user-agents.ts +0 -62
  493. package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +0 -215
  494. package/src/wirings/virtual-user/virtual-user-catalogue.ts +0 -184
  495. package/src/wirings/virtual-user/virtual-user-derive.test.ts +0 -426
  496. package/src/wirings/virtual-user/virtual-user-derive.ts +0 -161
  497. package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +0 -68
  498. package/src/wirings/virtual-user/virtual-user-dispositions.ts +0 -210
  499. package/src/wirings/virtual-user/virtual-user-intents.test.ts +0 -218
  500. package/src/wirings/virtual-user/virtual-user-intents.ts +0 -185
  501. package/src/wirings/virtual-user/virtual-user-rng.test.ts +0 -72
  502. package/src/wirings/virtual-user/virtual-user-rng.ts +0 -50
  503. package/src/wirings/virtual-user/virtual-user-run-store.ts +0 -131
  504. package/src/wirings/virtual-user/virtual-user-scaffold.test.ts +0 -854
  505. package/src/wirings/virtual-user/virtual-user-scaffold.ts +0 -664
  506. package/src/wirings/virtual-user/virtual-user-schedule-store.ts +0 -93
  507. package/src/wirings/virtual-user/virtual-user-schedule.test.ts +0 -280
  508. package/src/wirings/virtual-user/virtual-user-schedule.ts +0 -156
  509. package/src/wirings/virtual-user/virtual-user-target.ts +0 -47
  510. package/src/wirings/virtual-user/virtual-user.types.ts +0 -215
  511. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +0 -709
  512. package/src/wirings/workflow/dsl/workflow-runner.ts +0 -25
  513. package/src/wirings/workflow/feature.test.ts +0 -131
  514. package/src/wirings/workflow/feature.ts +0 -59
  515. package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +0 -569
  516. package/src/wirings/workflow/graph/graph-foreach.test.ts +0 -626
  517. package/src/wirings/workflow/graph/graph-node.ts +0 -115
  518. package/src/wirings/workflow/graph/graph-runner.test.ts +0 -1049
  519. package/src/wirings/workflow/graph/graph-runner.ts +0 -1376
  520. package/src/wirings/workflow/graph/graph-validation.test.ts +0 -27
  521. package/src/wirings/workflow/graph/graph-validation.ts +0 -41
  522. package/src/wirings/workflow/graph/template.test.ts +0 -49
  523. package/src/wirings/workflow/graph/template.ts +0 -42
  524. package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -39
  525. package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -75
  526. package/src/wirings/workflow/index.ts +0 -107
  527. package/src/wirings/workflow/pikku-scenario-service.ts +0 -1013
  528. package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -963
  529. package/src/wirings/workflow/pikku-workflow-service.ts +0 -1993
  530. package/src/wirings/workflow/run-timeline.test.ts +0 -199
  531. package/src/wirings/workflow/run-timeline.ts +0 -185
  532. package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -107
  533. package/src/wirings/workflow/scenario-cookie-jar.ts +0 -57
  534. package/src/wirings/workflow/scenario-expectations.test.ts +0 -238
  535. package/src/wirings/workflow/scenario-hooks.test.ts +0 -259
  536. package/src/wirings/workflow/scenario-poll.test.ts +0 -64
  537. package/src/wirings/workflow/scenario-poll.ts +0 -27
  538. package/src/wirings/workflow/scenario-prose.test.ts +0 -275
  539. package/src/wirings/workflow/scenario-prose.ts +0 -86
  540. package/src/wirings/workflow/scenario-run.types.ts +0 -193
  541. package/src/wirings/workflow/scenario-service.test.ts +0 -147
  542. package/src/wirings/workflow/scenario-step-guards.ts +0 -23
  543. package/src/wirings/workflow/scenario-step.test.ts +0 -800
  544. package/src/wirings/workflow/scenario-step.types.ts +0 -262
  545. package/src/wirings/workflow/scenario-surface.test.ts +0 -146
  546. package/src/wirings/workflow/scenario-surface.ts +0 -71
  547. package/src/wirings/workflow/scenario.types.ts +0 -63
  548. package/src/wirings/workflow/workflow-approval-audit.ts +0 -47
  549. package/src/wirings/workflow/workflow-approval-policy.test.ts +0 -594
  550. package/src/wirings/workflow/workflow-approval-policy.ts +0 -68
  551. package/src/wirings/workflow/workflow-approval.ts +0 -290
  552. package/src/wirings/workflow/workflow-child-run-session.test.ts +0 -168
  553. package/src/wirings/workflow/workflow-constants.ts +0 -66
  554. package/src/wirings/workflow/workflow-dispatch-durability.test.ts +0 -116
  555. package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -55
  556. package/src/wirings/workflow/workflow-dispatch-relay.test.ts +0 -128
  557. package/src/wirings/workflow/workflow-errors.ts +0 -132
  558. package/src/wirings/workflow/workflow-inline-authority.test.ts +0 -175
  559. package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -51
  560. package/src/wirings/workflow/workflow-invocation-id.ts +0 -28
  561. package/src/wirings/workflow/workflow-meta-resolver.ts +0 -45
  562. package/src/wirings/workflow/workflow-mirror.test.ts +0 -171
  563. package/src/wirings/workflow/workflow-missing-meta.test.ts +0 -92
  564. package/src/wirings/workflow/workflow-on-error.test.ts +0 -145
  565. package/src/wirings/workflow/workflow-queue-routing.ts +0 -129
  566. package/src/wirings/workflow/workflow-queue-wiring.ts +0 -149
  567. package/src/wirings/workflow/workflow-queue-workers.test.ts +0 -131
  568. package/src/wirings/workflow/workflow-queue-workers.ts +0 -66
  569. package/src/wirings/workflow/workflow-recovery.ts +0 -192
  570. package/src/wirings/workflow/workflow-replay-snapshot.test.ts +0 -140
  571. package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -113
  572. package/src/wirings/workflow/workflow-run-authority.test.ts +0 -212
  573. package/src/wirings/workflow/workflow-run-context.test.ts +0 -172
  574. package/src/wirings/workflow/workflow-run-engine.types.ts +0 -92
  575. package/src/wirings/workflow/workflow-run-ownership.ts +0 -37
  576. package/src/wirings/workflow/workflow-run-polling.test.ts +0 -127
  577. package/src/wirings/workflow/workflow-stalled-recovery.test.ts +0 -152
  578. package/src/wirings/workflow/workflow-status-stream.test.ts +0 -354
  579. package/src/wirings/workflow/workflow-status-stream.ts +0 -144
  580. package/src/wirings/workflow/workflow-step-claim.ts +0 -46
  581. package/src/wirings/workflow/workflow-step-ordinal.test.ts +0 -94
  582. package/src/wirings/workflow/workflow-step-session.test.ts +0 -87
  583. package/src/wirings/workflow/workflow-suspend.ts +0 -61
  584. package/src/wirings/workflow/workflow-terminal-run-guard.test.ts +0 -105
  585. package/src/wirings/workflow/workflow.types.ts +0 -268
  586. package/src/wirings-stay-decoupled.test.ts +0 -130
  587. package/tsconfig.json +0 -14
  588. package/tsconfig.tsbuildinfo +0 -1
  589. package/tsconfig.type-tests.json +0 -15
@@ -1,411 +0,0 @@
1
- import { pikkuState } from '../../pikku-state.js'
2
- import { NotFoundError, UnauthorizedError } from '../../errors/errors.js'
3
- import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
4
- import { runMiddleware } from '../../middleware-runner.js'
5
- import { httpRouter } from '../http/routers/http-router.js'
6
- import type { CoreHTTPFunctionWiring } from '../http/http.types.js'
7
- import type {
8
- CoreGateway,
9
- GatewayAdapter,
10
- GatewayOutboundMessage,
11
- PikkuGateway,
12
- } from './gateway.types.js'
13
-
14
- const resolvedAdapters = new WeakMap<CoreGateway, Promise<GatewayAdapter>>()
15
-
16
- const gatewayHandlerFuncId = (name: string) => `gateway__${name}__handler`
17
-
18
- // knowledge: decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md
19
- const bridgeMiddlewareSession = async (wire: PikkuRawWire): Promise<void> => {
20
- if (wire.session || !wire.getSession) return
21
- const session = await wire.getSession()
22
- if (session) {
23
- wire.session = session
24
- }
25
- }
26
-
27
- /**
28
- * Metadata the inspector recorded for the function the gateway was wired with.
29
- * The bootstrap loads every meta file before any wiring file, so this is
30
- * already populated by the time a gateway wires itself. A gateway wired by
31
- * hand rather than through codegen has no entry, and falls back to the
32
- * sessionless default below.
33
- */
34
- const declaredHandlerMeta = (config: CoreGateway) => {
35
- const declaredFuncId = pikkuState(null, 'gateway', 'meta')[config.name]
36
- ?.pikkuFuncId
37
- return declaredFuncId
38
- ? pikkuState(null, 'function', 'meta')[declaredFuncId]
39
- : undefined
40
- }
41
-
42
- // knowledge: decisions/security/gateway-handlers-run-through-the-function-runner-gate.md
43
- const registerGatewayHandler = (config: CoreGateway): string => {
44
- const funcId = gatewayHandlerFuncId(config.name)
45
- const funcMeta = pikkuState(null, 'function', 'meta')
46
- const declared = declaredHandlerMeta(config)
47
- funcMeta[funcId] = {
48
- ...declared,
49
- pikkuFuncId: funcId,
50
- inputSchemaName: declared?.inputSchemaName ?? null,
51
- outputSchemaName: declared?.outputSchemaName ?? null,
52
- sessionless: declared?.sessionless ?? true,
53
- }
54
- addFunction(funcId, config.func)
55
- return funcId
56
- }
57
-
58
- /**
59
- * Tag middleware the inspector resolved for this gateway. It is keyed by
60
- * gateway name rather than reachable from `config`, because `tags` is a
61
- * compile-time input everywhere — nothing at runtime maps a tag to its
62
- * middleware group.
63
- */
64
- const gatewayInheritedMiddleware = (config: CoreGateway) =>
65
- pikkuState(null, 'gateway', 'meta')[config.name]?.middleware
66
-
67
- export const resolveGatewayAdapter = (
68
- config: CoreGateway,
69
- services: CoreSingletonServices
70
- ): Promise<GatewayAdapter> => {
71
- let resolved = resolvedAdapters.get(config)
72
- if (!resolved) {
73
- resolved =
74
- typeof config.adapter === 'function'
75
- ? Promise.resolve(config.adapter(services))
76
- : Promise.resolve(config.adapter)
77
- resolvedAdapters.set(config, resolved)
78
- }
79
- return resolved
80
- }
81
- import type {
82
- PikkuWire,
83
- PikkuRawWire,
84
- CoreSingletonServices,
85
- } from '../../types/core.types.js'
86
- import type { CorePikkuMiddleware } from '../../middleware/middleware.types.js'
87
- export const wireGateway = (config: CoreGateway): void => {
88
- pikkuState(null, 'gateway', 'gateways').set(config.name, config)
89
-
90
- switch (config.type) {
91
- case 'webhook':
92
- wireWebhookGateway(config)
93
- break
94
- case 'websocket':
95
- wireWebsocketGateway(config)
96
- break
97
- case 'listener':
98
- wireListenerGateway(config)
99
- break
100
- default:
101
- throw new Error(
102
- `Unknown gateway type '${config.type}' for gateway '${config.name}'`
103
- )
104
- }
105
- }
106
-
107
- const wireWebhookGateway = (config: CoreGateway): void => {
108
- const { name, route, adapter } = config
109
- if (!route) {
110
- throw new Error(`Webhook gateway '${name}' requires a route`)
111
- }
112
-
113
- const postFuncId = `gateway__${name}__post`
114
- const routes = pikkuState(null, 'http', 'routes')
115
-
116
- const postHandler = {
117
- auth: false,
118
- func: createWebhookPostHandler(config),
119
- }
120
-
121
- addFunction(postFuncId, postHandler)
122
-
123
- if (!routes.has('post')) {
124
- routes.set('post', new Map())
125
- }
126
- routes.get('post')!.set(route, {
127
- method: 'post',
128
- route,
129
- func: postHandler,
130
- auth: false,
131
- // A gateway handler takes (services, data, wire) rather than a pikku
132
- // function's shape, so it never matches CorePikkuFunctionConfig. It is only
133
- // ever invoked through runPikkuFunc, which is what makes that safe.
134
- } as unknown as CoreHTTPFunctionWiring<unknown, unknown, string>)
135
-
136
- // knowledge: decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md
137
- if (typeof adapter === 'function' || adapter.verifyWebhook) {
138
- const verifyFuncId = `gateway__${name}__verify`
139
-
140
- const verifyHandler = {
141
- auth: false,
142
- func: createWebhookVerifyHandler(config),
143
- }
144
-
145
- addFunction(verifyFuncId, verifyHandler)
146
-
147
- if (!routes.has('get')) {
148
- routes.set('get', new Map())
149
- }
150
- routes.get('get')!.set(route, {
151
- method: 'get',
152
- route,
153
- func: verifyHandler,
154
- auth: false,
155
- // knowledge: decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md
156
- returnsJSON: false,
157
- } as unknown as CoreHTTPFunctionWiring<unknown, unknown, string>)
158
- }
159
-
160
- httpRouter.reset()
161
- }
162
-
163
- const createWebhookPostHandler = (config: CoreGateway) => {
164
- const { name, middleware: userMiddleware } = config
165
- const handlerFuncId = registerGatewayHandler(config)
166
- const inheritedMiddleware = gatewayInheritedMiddleware(config)
167
-
168
- return async (
169
- services: CoreSingletonServices,
170
- data: unknown,
171
- wire: PikkuWire
172
- ) => {
173
- const adapter = await resolveGatewayAdapter(config, services)
174
-
175
- if (adapter.verifyWebhook) {
176
- const verifyResult = await adapter.verifyWebhook(data, wire.http?.request)
177
- if (verifyResult.verified) {
178
- return verifyResult.response
179
- }
180
- }
181
-
182
- const parsed = adapter.parse(data)
183
- if (!parsed) {
184
- return { ok: true }
185
- }
186
-
187
- const gateway: PikkuGateway = {
188
- gatewayName: name,
189
- senderId: parsed.senderId,
190
- platform: adapter.name,
191
- send: (msg: GatewayOutboundMessage) => adapter.send(parsed.senderId, msg),
192
- }
193
- wire.gateway = gateway
194
-
195
- // Gateway middleware runs outside the gate so it can establish the session the gate checks.
196
- const invoke = async () => {
197
- await bridgeMiddlewareSession(wire)
198
- return await runPikkuFunc('gateway', name, handlerFuncId, {
199
- singletonServices: services,
200
- data: () => parsed,
201
- auth: config.auth,
202
- inheritedMiddleware,
203
- wire,
204
- })
205
- }
206
-
207
- const gatewayMiddleware = userMiddleware as
208
- CorePikkuMiddleware[] | undefined
209
- const result: any = gatewayMiddleware?.length
210
- ? await runMiddleware(services, wire, gatewayMiddleware, invoke)
211
- : await invoke()
212
-
213
- if (result && (result.text || result.richContent || result.attachments)) {
214
- await adapter.send(parsed.senderId, result as GatewayOutboundMessage)
215
- }
216
- return { ok: true }
217
- }
218
- }
219
-
220
- const createWebhookVerifyHandler = (config: CoreGateway) => {
221
- return async (
222
- services: CoreSingletonServices,
223
- _data: unknown,
224
- wire: PikkuWire
225
- ) => {
226
- const adapter = await resolveGatewayAdapter(config, services)
227
- if (!adapter.verifyWebhook) {
228
- throw new NotFoundError(
229
- `Gateway '${config.name}' does not support webhook verification`
230
- )
231
- }
232
-
233
- const query = wire.http?.request?.query()
234
- const result = await adapter.verifyWebhook(query, wire.http?.request)
235
- if (!result.verified) {
236
- throw new UnauthorizedError('Webhook verification failed')
237
- }
238
- // knowledge: decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md
239
- const response = result.response
240
- if (typeof response === 'string' || typeof response === 'number') {
241
- return String(response)
242
- }
243
- wire.http?.response?.header('content-type', 'application/json')
244
- return JSON.stringify(response)
245
- }
246
- }
247
-
248
- const wireWebsocketGateway = (config: CoreGateway): void => {
249
- const { name, route } = config
250
- if (!route) {
251
- throw new Error(`WebSocket gateway '${name}' requires a route`)
252
- }
253
-
254
- pikkuState(null, 'gateway', 'gateways').set(config.name, config)
255
-
256
- const channelsMeta = pikkuState(null, 'channel', 'meta')
257
- const channels = pikkuState(null, 'channel', 'channels')
258
-
259
- const messageFuncId = `gateway__${name}__message`
260
- const connectFuncId = `gateway__${name}__connect`
261
-
262
- const funcMeta = pikkuState(null, 'function', 'meta')
263
- funcMeta[messageFuncId] = {
264
- pikkuFuncId: messageFuncId,
265
- inputSchemaName: null,
266
- outputSchemaName: null,
267
- sessionless: true,
268
- }
269
- funcMeta[connectFuncId] = {
270
- pikkuFuncId: connectFuncId,
271
- inputSchemaName: null,
272
- outputSchemaName: null,
273
- sessionless: true,
274
- }
275
-
276
- channelsMeta[name] = {
277
- name,
278
- route,
279
- gateway: true,
280
- input: null,
281
- connect: { pikkuFuncId: connectFuncId },
282
- disconnect: null,
283
- message: { pikkuFuncId: messageFuncId },
284
- messageWirings: {},
285
- }
286
-
287
- const userMiddleware = config.middleware as CorePikkuMiddleware[] | undefined
288
- const handlerFuncId = registerGatewayHandler(config)
289
- const inheritedMiddleware = gatewayInheritedMiddleware(config)
290
-
291
- addFunction(connectFuncId, {
292
- auth: false,
293
- func: async (services: any, _data: unknown, wire: PikkuWire) => {
294
- const adapter = await resolveGatewayAdapter(config, services)
295
- wire.gateway = {
296
- gatewayName: name,
297
- senderId: '',
298
- platform: adapter.name,
299
- send: async (msg: GatewayOutboundMessage) => {
300
- wire.channel?.send(msg)
301
- },
302
- } satisfies PikkuGateway
303
- },
304
- })
305
-
306
- addFunction(messageFuncId, {
307
- auth: false,
308
- func: async (services: any, data: unknown, wire: PikkuWire) => {
309
- const adapter = await resolveGatewayAdapter(config, services)
310
- const parsed = adapter.parse(data)
311
- if (!parsed) return
312
-
313
- const gateway: PikkuGateway = {
314
- gatewayName: name,
315
- senderId: parsed.senderId,
316
- platform: adapter.name,
317
- send: async (msg: GatewayOutboundMessage) => {
318
- wire.channel?.send(msg)
319
- },
320
- }
321
- wire.gateway = gateway
322
-
323
- const invoke = async () => {
324
- await bridgeMiddlewareSession(wire)
325
- return await runPikkuFunc('gateway', name, handlerFuncId, {
326
- singletonServices: services,
327
- data: () => parsed,
328
- auth: config.auth,
329
- inheritedMiddleware,
330
- wire,
331
- })
332
- }
333
-
334
- const gatewayMiddleware = userMiddleware as
335
- CorePikkuMiddleware[] | undefined
336
- const result: any = gatewayMiddleware?.length
337
- ? await runMiddleware(services, wire, gatewayMiddleware, invoke)
338
- : await invoke()
339
-
340
- if (result && (result.text || result.richContent || result.attachments)) {
341
- wire.channel?.send(result)
342
- }
343
- },
344
- })
345
-
346
- // knowledge: decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md
347
- channels.set(name, {
348
- name,
349
- route,
350
- auth: false,
351
- onConnect: { func: async () => {} },
352
- onMessage: { func: async () => {} },
353
- })
354
-
355
- httpRouter.reset()
356
- }
357
-
358
- const wireListenerGateway = (config: CoreGateway): void => {
359
- pikkuState(null, 'gateway', 'gateways').set(config.name, config)
360
- }
361
-
362
- /** The returned callback is what a GatewayService passes to `adapter.init()`. */
363
- export const createListenerMessageHandler = (
364
- name: string,
365
- config: CoreGateway,
366
- singletonServices: CoreSingletonServices
367
- ): ((rawData: unknown) => Promise<void>) => {
368
- const userMiddleware = config.middleware as CorePikkuMiddleware[] | undefined
369
- const handlerFuncId = registerGatewayHandler(config)
370
- const inheritedMiddleware = gatewayInheritedMiddleware(config)
371
-
372
- return async (rawData: unknown): Promise<void> => {
373
- const adapter = await resolveGatewayAdapter(config, singletonServices)
374
- const parsed = adapter.parse(rawData)
375
- if (!parsed) return
376
-
377
- const wire: PikkuRawWire = {}
378
- const gateway: PikkuGateway = {
379
- gatewayName: name,
380
- senderId: parsed.senderId,
381
- platform: adapter.name,
382
- send: (msg: GatewayOutboundMessage) => adapter.send(parsed.senderId, msg),
383
- }
384
- wire.gateway = gateway
385
-
386
- const invoke = async () => {
387
- await bridgeMiddlewareSession(wire)
388
- return await runPikkuFunc('gateway', name, handlerFuncId, {
389
- singletonServices,
390
- data: () => parsed,
391
- auth: config.auth,
392
- inheritedMiddleware,
393
- wire,
394
- })
395
- }
396
-
397
- // knowledge: decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md
398
- const result: any = userMiddleware?.length
399
- ? await runMiddleware(
400
- singletonServices,
401
- wire as PikkuWire,
402
- userMiddleware,
403
- invoke
404
- )
405
- : await invoke()
406
-
407
- if (result && (result.text || result.richContent || result.attachments)) {
408
- await adapter.send(parsed.senderId, result as GatewayOutboundMessage)
409
- }
410
- }
411
- }
@@ -1,137 +0,0 @@
1
- import type {
2
- CommonWireMeta,
3
- CoreSingletonServices,
4
- } from '../../types/core.types.js'
5
- import type {
6
- CorePikkuMiddleware,
7
- CorePikkuMiddlewareGroup,
8
- } from '../../middleware/middleware.types.js'
9
- import type { CorePikkuFunctionConfig } from '../../function/functions.types.js'
10
- import type { PikkuHTTPRequest } from '../http/http.types.js'
11
-
12
- export interface GatewayAttachment {
13
- type: string
14
- url?: string
15
- data?: ArrayBuffer | Uint8Array
16
- mimeType?: string
17
- filename?: string
18
- }
19
-
20
- /**
21
- * One message arriving from a gateway, normalised: who sent it, in which
22
- * conversation, and what they said.
23
- */
24
- export interface GatewayInboundMessage {
25
- /** Platform-specific: a phone number, a Slack user id, and so on. */
26
- senderId: string
27
- /** What they said, as plain text, with the provider's markup stripped. */
28
- text: string
29
- /** The provider's own event, untouched, for anything this shape drops. */
30
- raw: unknown
31
- /** Files and media that came with the message. */
32
- attachments?: GatewayAttachment[]
33
- /** Anything else the adapter wants to carry through to the wiring. */
34
- metadata?: Record<string, unknown>
35
- }
36
-
37
- /**
38
- * One message to send back through a gateway — plain text, or the provider's
39
- * own rich content.
40
- */
41
- export interface GatewayOutboundMessage {
42
- /** The reply as plain text. Every provider can render this. */
43
- text?: string
44
- /** The provider's own rich payload, e.g. Slack blocks. Passed through as-is. */
45
- richContent?: Record<string, unknown>
46
- /** Files and media to send alongside. */
47
- attachments?: GatewayAttachment[]
48
- }
49
-
50
- /**
51
- * What a gateway's `verifyWebhook` returns — verified, with the response the
52
- * provider expects back, or not.
53
- */
54
- export type WebhookVerificationResult =
55
- | {
56
- /** True when the request really came from the provider. */
57
- verified: true
58
- /** What to echo back, e.g. Meta's hub.challenge. */
59
- response: unknown
60
- }
61
- | {
62
- /** False when the signature or challenge did not check out. */
63
- verified: false
64
- }
65
-
66
- /**
67
- * What a gateway integration implements: parse an incoming event into a
68
- * message, send one back, and open and close the connection.
69
- */
70
- export interface GatewayAdapter {
71
- /** Identifies the gateway in wirings and logs, e.g. `'slack'`. */
72
- name: string
73
- /** Return null to ignore the event, e.g. a delivery receipt. */
74
- parse(data: unknown): GatewayInboundMessage | null
75
- /** Deliver a reply back to the sender the message came from. */
76
- send(senderId: string, message: GatewayOutboundMessage): Promise<void>
77
- /** Called by GatewayService.start(); must call onMessage per incoming event. */
78
- init(onMessage: (data: unknown) => Promise<void>): Promise<void>
79
- /** Called by GatewayService.stop(); release the connection init() opened. */
80
- close(): Promise<void>
81
- /** Receives the GET query params, or the POST body when called from the POST handler. */
82
- verifyWebhook?(
83
- data: unknown,
84
- request?: PikkuHTTPRequest
85
- ): WebhookVerificationResult | Promise<WebhookVerificationResult>
86
- }
87
-
88
- export type GatewayAdapterFactory = (
89
- services: CoreSingletonServices
90
- ) => GatewayAdapter | Promise<GatewayAdapter>
91
-
92
- export interface PikkuGateway {
93
- gatewayName: string
94
- senderId: string
95
- platform: string
96
- send(msg: GatewayOutboundMessage): Promise<void>
97
- }
98
-
99
- /** 'webhook' the platform POSTs to us, 'websocket' the client connects to us, 'listener' no route at all. */
100
- export type GatewayTransportType = 'webhook' | 'websocket' | 'listener'
101
-
102
- export type CoreGateway<
103
- PikkuFunctionConfig = CorePikkuFunctionConfig<any, any>,
104
- PikkuMiddleware extends CorePikkuMiddleware = CorePikkuMiddleware,
105
- > = Partial<
106
- Pick<CommonWireMeta, 'title' | 'summary' | 'description' | 'errors'>
107
- > & {
108
- /** Unique across the project. It is how the gateway is addressed in `pikku meta` and in logs. */
109
- name: string
110
- /** How the platform reaches us: a `webhook` it posts to, a `websocket` it holds open, or a `listener` we open outward. */
111
- type: GatewayTransportType
112
- /** Required for 'webhook' and 'websocket'; unused for 'listener'. */
113
- route?: string
114
- /** Which service this speaks to — slack, whatsapp, discord. It selects the adapter's dialect, not the transport. */
115
- platform?: string
116
- /** Translates between the platform's message format and pikku's. A factory is called with services, for an adapter that needs a token or a client. */
117
- adapter: GatewayAdapter | GatewayAdapterFactory
118
- /** The function to run per inbound message. It receives the normalised message, not the platform's raw payload. */
119
- func: PikkuFunctionConfig
120
- /** Wraps every inbound message: signature verification, tracing, rate limiting. */
121
- middleware?: CorePikkuMiddlewareGroup<any, any>
122
- /** Filters this gateway in and out of a build — see the `tags` option on `pikku all`. It has no effect at runtime. */
123
- tags?: string[]
124
- /** Unset lets the handler's own `auth` govern; gateway handlers are sessionless by default. */
125
- auth?: boolean
126
- }
127
-
128
- export type GatewayMeta = CommonWireMeta & {
129
- name: string
130
- type: GatewayTransportType
131
- route?: string
132
- platform?: string
133
- auth?: boolean
134
- gateway: true
135
- }
136
-
137
- export type GatewaysMeta = Record<string, GatewayMeta>
@@ -1,15 +0,0 @@
1
- export {
2
- wireGateway,
3
- createListenerMessageHandler,
4
- resolveGatewayAdapter,
5
- } from './gateway-runner.js'
6
- export type {
7
- GatewayAdapter,
8
- GatewayAdapterFactory,
9
- GatewayInboundMessage,
10
- GatewayOutboundMessage,
11
- GatewaysMeta,
12
- GatewayTransportType,
13
- CoreGateway,
14
- WebhookVerificationResult,
15
- } from './gateway.types.js'