@pikku/core 0.12.107 → 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 (588) hide show
  1. package/CHANGELOG.md +344 -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/virtual-user/virtual-user-scaffold.d.ts +8 -8
  74. package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +1 -1
  75. package/dist/wirings/workflow/workflow-queue-routing.d.ts +1 -1
  76. package/package.json +11 -5
  77. package/run-tests.sh +17 -9
  78. package/src/public-surface.json +26 -0
  79. package/src/agent-naming.test.ts +0 -68
  80. package/src/api-report.test.ts +0 -138
  81. package/src/app-alias-surface.test.ts +0 -179
  82. package/src/app-leaf-surface.test.ts +0 -222
  83. package/src/bootstrap-compat/root.ts +0 -20
  84. package/src/classification/column-form.test.ts +0 -97
  85. package/src/classification/column-form.ts +0 -55
  86. package/src/classification/data-classification.ts +0 -73
  87. package/src/classification/index.ts +0 -40
  88. package/src/classification/key-ids.ts +0 -2
  89. package/src/classification/secret-value.test.ts +0 -204
  90. package/src/classification/secret-value.ts +0 -106
  91. package/src/crypto-utils.test.ts +0 -668
  92. package/src/crypto-utils.ts +0 -460
  93. package/src/dev/hot-reload.test.ts +0 -587
  94. package/src/dev/hot-reload.ts +0 -225
  95. package/src/dev/module-runner.test.ts +0 -235
  96. package/src/dev/module-runner.ts +0 -138
  97. package/src/dev/reload-meta.test.ts +0 -183
  98. package/src/dev/reload-meta.ts +0 -144
  99. package/src/ecosystem-tier-removed.test.ts +0 -72
  100. package/src/env.ts +0 -1
  101. package/src/errors/error-handler.ts +0 -77
  102. package/src/errors/error.test.ts +0 -229
  103. package/src/errors/errors.ts +0 -393
  104. package/src/errors/index.ts +0 -11
  105. package/src/errors/serialized-error.ts +0 -12
  106. package/src/factory-functions.test.ts +0 -111
  107. package/src/function/abort-scope.test.ts +0 -97
  108. package/src/function/abort-scope.ts +0 -80
  109. package/src/function/function-meta.types.ts +0 -151
  110. package/src/function/function-runner.test.ts +0 -1619
  111. package/src/function/function-runner.ts +0 -499
  112. package/src/function/functions.types.ts +0 -319
  113. package/src/function/index.ts +0 -40
  114. package/src/function/list.types.test.ts +0 -100
  115. package/src/function/list.types.ts +0 -69
  116. package/src/function/pikku-request.test.ts +0 -35
  117. package/src/function/pikku-request.ts +0 -17
  118. package/src/gopass-secrets-removed.test.ts +0 -51
  119. package/src/handle-error.test.ts +0 -532
  120. package/src/handle-error.ts +0 -64
  121. package/src/middleware/auth-apikey.test.ts +0 -362
  122. package/src/middleware/auth-apikey.ts +0 -39
  123. package/src/middleware/auth-bearer.test.ts +0 -566
  124. package/src/middleware/auth-bearer.ts +0 -83
  125. package/src/middleware/auth-cookie.test.ts +0 -572
  126. package/src/middleware/auth-cookie.ts +0 -107
  127. package/src/middleware/cors.test.ts +0 -579
  128. package/src/middleware/cors.ts +0 -103
  129. package/src/middleware/index.ts +0 -30
  130. package/src/middleware/middleware-factories.ts +0 -76
  131. package/src/middleware/middleware.types.ts +0 -61
  132. package/src/middleware/remote-auth.test.ts +0 -547
  133. package/src/middleware/remote-auth.ts +0 -95
  134. package/src/middleware/remote-jobs-secret.ts +0 -35
  135. package/src/middleware/require-origin.test.ts +0 -115
  136. package/src/middleware/require-origin.ts +0 -79
  137. package/src/middleware/telemetry.ts +0 -83
  138. package/src/middleware-runner.test.ts +0 -578
  139. package/src/middleware-runner.ts +0 -232
  140. package/src/no-any-casts.test.ts +0 -57
  141. package/src/no-root-barrel.test.ts +0 -122
  142. package/src/permissions.test.ts +0 -256
  143. package/src/permissions.ts +0 -217
  144. package/src/pikku-state.test.ts +0 -198
  145. package/src/pikku-state.ts +0 -206
  146. package/src/production-barrels-stay-lean.test.ts +0 -110
  147. package/src/public-surface.test.ts +0 -133
  148. package/src/remote.test.ts +0 -173
  149. package/src/remote.ts +0 -56
  150. package/src/removed-legacy-exports.test.ts +0 -66
  151. package/src/run-tests-script.test.ts +0 -67
  152. package/src/schema.test.ts +0 -430
  153. package/src/schema.ts +0 -204
  154. package/src/scopes.test.ts +0 -203
  155. package/src/scopes.ts +0 -67
  156. package/src/services/agent-run-state-service.ts +0 -37
  157. package/src/services/agent-runner-service.ts +0 -238
  158. package/src/services/agent-storage-service.ts +0 -39
  159. package/src/services/ai-embedding-service.ts +0 -9
  160. package/src/services/audit-service.test.ts +0 -44
  161. package/src/services/audit-service.ts +0 -280
  162. package/src/services/content-service.ts +0 -65
  163. package/src/services/credential-service.ts +0 -20
  164. package/src/services/credential-wire-service.test.ts +0 -235
  165. package/src/services/credential-wire-service.ts +0 -120
  166. package/src/services/deployment-service.ts +0 -32
  167. package/src/services/email-service.test.ts +0 -100
  168. package/src/services/email-service.ts +0 -60
  169. package/src/services/email-template.test.ts +0 -311
  170. package/src/services/email-template.ts +0 -254
  171. package/src/services/file-scenario-run-store.test.ts +0 -349
  172. package/src/services/file-scenario-run-store.ts +0 -282
  173. package/src/services/gateway-service.ts +0 -5
  174. package/src/services/http-personas-converse.test.ts +0 -274
  175. package/src/services/http-personas.test.ts +0 -379
  176. package/src/services/http-personas.ts +0 -508
  177. package/src/services/in-memory-agent-run-state-service.ts +0 -87
  178. package/src/services/in-memory-queue-service.test.ts +0 -162
  179. package/src/services/in-memory-queue-service.ts +0 -78
  180. package/src/services/in-memory-session-store.test.ts +0 -58
  181. package/src/services/in-memory-session-store.ts +0 -20
  182. package/src/services/in-memory-trigger-service.ts +0 -47
  183. package/src/services/in-memory-workflow-service.test.ts +0 -430
  184. package/src/services/in-memory-workflow-service.ts +0 -595
  185. package/src/services/index.ts +0 -192
  186. package/src/services/istanbul-coverage-service.test.ts +0 -66
  187. package/src/services/istanbul-coverage-service.ts +0 -59
  188. package/src/services/jwt-service.ts +0 -15
  189. package/src/services/local-content-request-handler.test.ts +0 -240
  190. package/src/services/local-content-request-handler.ts +0 -295
  191. package/src/services/local-content.test.ts +0 -186
  192. package/src/services/local-content.ts +0 -242
  193. package/src/services/local-credential-service.ts +0 -63
  194. package/src/services/local-email-service.test.ts +0 -182
  195. package/src/services/local-email-service.ts +0 -43
  196. package/src/services/local-gateway-service.ts +0 -51
  197. package/src/services/local-secrets.test.ts +0 -95
  198. package/src/services/local-secrets.ts +0 -71
  199. package/src/services/local-variables.test.ts +0 -61
  200. package/src/services/local-variables.ts +0 -45
  201. package/src/services/logger-console.test.ts +0 -117
  202. package/src/services/logger-console.ts +0 -174
  203. package/src/services/logger.ts +0 -48
  204. package/src/services/meta-service.test.ts +0 -75
  205. package/src/services/meta-service.ts +0 -767
  206. package/src/services/persona-actor-secret.test.ts +0 -68
  207. package/src/services/persona-actor-secret.ts +0 -70
  208. package/src/services/persona-sign-in.test.ts +0 -219
  209. package/src/services/persona-sign-in.ts +0 -238
  210. package/src/services/personas-service.ts +0 -191
  211. package/src/services/pikku-user-id.test.ts +0 -62
  212. package/src/services/pikku-user-id.ts +0 -13
  213. package/src/services/queue-webhook-service.test.ts +0 -409
  214. package/src/services/queue-webhook-service.ts +0 -150
  215. package/src/services/remote-jobs.test.ts +0 -106
  216. package/src/services/remote-jobs.ts +0 -92
  217. package/src/services/scheduler-service.ts +0 -37
  218. package/src/services/schema-service.ts +0 -10
  219. package/src/services/scope-service.ts +0 -91
  220. package/src/services/scoped-credential-service.test.ts +0 -86
  221. package/src/services/scoped-credential-service.ts +0 -63
  222. package/src/services/scoped-secret-service.test.ts +0 -93
  223. package/src/services/scoped-secret-service.ts +0 -40
  224. package/src/services/secret-host-binding.test.ts +0 -138
  225. package/src/services/secret-host-binding.ts +0 -51
  226. package/src/services/secret-service.ts +0 -25
  227. package/src/services/secretless.test.ts +0 -54
  228. package/src/services/secretless.ts +0 -29
  229. package/src/services/session-store.ts +0 -9
  230. package/src/services/stub-tracker.test.ts +0 -104
  231. package/src/services/stub-tracker.ts +0 -175
  232. package/src/services/system-role-guard.test.ts +0 -96
  233. package/src/services/system-role-guard.ts +0 -71
  234. package/src/services/temporary-file-service.ts +0 -76
  235. package/src/services/trigger-service.ts +0 -5
  236. package/src/services/typed-credential-service.ts +0 -83
  237. package/src/services/typed-secret-service.test.ts +0 -204
  238. package/src/services/typed-secret-service.ts +0 -132
  239. package/src/services/typed-variables-service.test.ts +0 -166
  240. package/src/services/typed-variables-service.ts +0 -166
  241. package/src/services/user-session-service.test.ts +0 -147
  242. package/src/services/user-session-service.ts +0 -85
  243. package/src/services/v8-coverage-service.test.ts +0 -69
  244. package/src/services/v8-coverage-service.ts +0 -163
  245. package/src/services/variables-service.ts +0 -13
  246. package/src/services/webhook-service.ts +0 -147
  247. package/src/services/workflow-service.ts +0 -120
  248. package/src/side-effects-are-declared.test.ts +0 -84
  249. package/src/source-files-stay-composable.test.ts +0 -41
  250. package/src/template-alias-surface.test.ts +0 -240
  251. package/src/test-utils.ts +0 -38
  252. package/src/testing/index.ts +0 -3
  253. package/src/testing/service-tests/agent-run-service-tests.ts +0 -98
  254. package/src/testing/service-tests/agent-storage-service-tests.ts +0 -379
  255. package/src/testing/service-tests/channel-store-tests.ts +0 -98
  256. package/src/testing/service-tests/credential-service-tests.ts +0 -143
  257. package/src/testing/service-tests/deployment-service-tests.ts +0 -33
  258. package/src/testing/service-tests/event-hub-store-tests.ts +0 -48
  259. package/src/testing/service-tests/secret-service-tests.ts +0 -105
  260. package/src/testing/service-tests/session-store-tests.ts +0 -62
  261. package/src/testing/service-tests/workflow-run-service-tests.ts +0 -59
  262. package/src/testing/service-tests/workflow-service-tests.ts +0 -308
  263. package/src/testing/service-tests.ts +0 -95
  264. package/src/time-utils.test.ts +0 -56
  265. package/src/time-utils.ts +0 -89
  266. package/src/types/core.types.ts +0 -446
  267. package/src/types/index.ts +0 -25
  268. package/src/types/state.types.ts +0 -226
  269. package/src/types/typed-credentials.test.ts +0 -72
  270. package/src/utils/hash.test.ts +0 -68
  271. package/src/utils/hash.ts +0 -26
  272. package/src/utils/hmac.ts +0 -21
  273. package/src/utils/node-host-resolver.ts +0 -20
  274. package/src/utils/safe-fetch.test.ts +0 -515
  275. package/src/utils/safe-fetch.ts +0 -347
  276. package/src/utils.test.ts +0 -359
  277. package/src/utils.ts +0 -165
  278. package/src/version.test.ts +0 -80
  279. package/src/version.ts +0 -25
  280. package/src/wirings/actor-flow/actor-flow.types.ts +0 -40
  281. package/src/wirings/actor-flow/index.ts +0 -10
  282. package/src/wirings/actor-flow/run-conversation.test.ts +0 -187
  283. package/src/wirings/actor-flow/run-conversation.ts +0 -280
  284. package/src/wirings/addon/addon-auth-tags.test.ts +0 -219
  285. package/src/wirings/addon/addon-runner.ts +0 -236
  286. package/src/wirings/addon/addon-scopes.test.ts +0 -225
  287. package/src/wirings/addon/addon-secrets.test.ts +0 -391
  288. package/src/wirings/addon/index.ts +0 -12
  289. package/src/wirings/addon/remote-addon-auth.ts +0 -65
  290. package/src/wirings/addon/wire-addon.test.ts +0 -102
  291. package/src/wirings/addon/wire-addon.ts +0 -202
  292. package/src/wirings/addon/wire-remote-addon.ts +0 -41
  293. package/src/wirings/agent/agent-agui.test.ts +0 -1213
  294. package/src/wirings/agent/agent-agui.ts +0 -405
  295. package/src/wirings/agent/agent-authorization.test.ts +0 -208
  296. package/src/wirings/agent/agent-finalize.test.ts +0 -187
  297. package/src/wirings/agent/agent-finalize.ts +0 -197
  298. package/src/wirings/agent/agent-helpers.test.ts +0 -215
  299. package/src/wirings/agent/agent-helpers.ts +0 -96
  300. package/src/wirings/agent/agent-interrupt.test.ts +0 -833
  301. package/src/wirings/agent/agent-interrupt.ts +0 -400
  302. package/src/wirings/agent/agent-memory.test.ts +0 -397
  303. package/src/wirings/agent/agent-memory.ts +0 -496
  304. package/src/wirings/agent/agent-middleware.types.test.ts +0 -41
  305. package/src/wirings/agent/agent-model-config.test.ts +0 -103
  306. package/src/wirings/agent/agent-model-config.ts +0 -59
  307. package/src/wirings/agent/agent-prepare.test.ts +0 -977
  308. package/src/wirings/agent/agent-prepare.ts +0 -1083
  309. package/src/wirings/agent/agent-registry.test.ts +0 -455
  310. package/src/wirings/agent/agent-registry.ts +0 -99
  311. package/src/wirings/agent/agent-resume-authorization.test.ts +0 -206
  312. package/src/wirings/agent/agent-rpc.ts +0 -116
  313. package/src/wirings/agent/agent-runner.test.ts +0 -1229
  314. package/src/wirings/agent/agent-runner.ts +0 -858
  315. package/src/wirings/agent/agent-stream-delegate.test.ts +0 -381
  316. package/src/wirings/agent/agent-stream-output-hooks.test.ts +0 -353
  317. package/src/wirings/agent/agent-stream.test.ts +0 -1800
  318. package/src/wirings/agent/agent-stream.ts +0 -1639
  319. package/src/wirings/agent/agent-thread-ownership.test.ts +0 -297
  320. package/src/wirings/agent/agent-turn.test.ts +0 -65
  321. package/src/wirings/agent/agent-turn.ts +0 -122
  322. package/src/wirings/agent/agent-utils.ts +0 -20
  323. package/src/wirings/agent/agent.types.ts +0 -676
  324. package/src/wirings/agent/index.ts +0 -58
  325. package/src/wirings/agent/voice-input.test.ts +0 -220
  326. package/src/wirings/agent/voice-input.ts +0 -180
  327. package/src/wirings/agent/voice-output.test.ts +0 -510
  328. package/src/wirings/agent/voice-output.ts +0 -311
  329. package/src/wirings/agent-scorer/agent-scorer-grade.test.ts +0 -106
  330. package/src/wirings/agent-scorer/agent-scorer-grade.ts +0 -55
  331. package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +0 -285
  332. package/src/wirings/agent-scorer/agent-scorer-judge.ts +0 -180
  333. package/src/wirings/agent-scorer/agent-scorer-live.test.ts +0 -174
  334. package/src/wirings/agent-scorer/agent-scorer-live.ts +0 -56
  335. package/src/wirings/agent-scorer/agent-scorer-registry.ts +0 -66
  336. package/src/wirings/agent-scorer/agent-scorer-sampling.test.ts +0 -34
  337. package/src/wirings/agent-scorer/agent-scorer-sampling.ts +0 -36
  338. package/src/wirings/agent-scorer/agent-scorer-snapshots.test.ts +0 -49
  339. package/src/wirings/agent-scorer/agent-scorer-snapshots.ts +0 -46
  340. package/src/wirings/agent-scorer/agent-scorer-worker.test.ts +0 -122
  341. package/src/wirings/agent-scorer/agent-scorer-worker.ts +0 -71
  342. package/src/wirings/agent-scorer/agent-scorer.ts +0 -102
  343. package/src/wirings/agent-scorer/agent-scorer.types.ts +0 -128
  344. package/src/wirings/agent-scorer/index.ts +0 -23
  345. package/src/wirings/channel/channel-common.ts +0 -102
  346. package/src/wirings/channel/channel-handler-shapes.test.ts +0 -72
  347. package/src/wirings/channel/channel-handler.test.ts +0 -322
  348. package/src/wirings/channel/channel-handler.ts +0 -259
  349. package/src/wirings/channel/channel-host-rpc.test.ts +0 -150
  350. package/src/wirings/channel/channel-host-rpc.ts +0 -69
  351. package/src/wirings/channel/channel-middleware-runner.test.ts +0 -188
  352. package/src/wirings/channel/channel-middleware-runner.ts +0 -126
  353. package/src/wirings/channel/channel-rpc-registry.ts +0 -116
  354. package/src/wirings/channel/channel-rpc-responder.ts +0 -117
  355. package/src/wirings/channel/channel-rpc-service.ts +0 -132
  356. package/src/wirings/channel/channel-rpc-validators.ts +0 -65
  357. package/src/wirings/channel/channel-rpc.test.ts +0 -841
  358. package/src/wirings/channel/channel-rpc.ts +0 -5
  359. package/src/wirings/channel/channel-rpc.types.ts +0 -160
  360. package/src/wirings/channel/channel-runner.ts +0 -164
  361. package/src/wirings/channel/channel-store.ts +0 -35
  362. package/src/wirings/channel/channel.types.ts +0 -193
  363. package/src/wirings/channel/define-channel-routes.ts +0 -5
  364. package/src/wirings/channel/eventhub-service.ts +0 -16
  365. package/src/wirings/channel/eventhub-store.ts +0 -13
  366. package/src/wirings/channel/index.ts +0 -40
  367. package/src/wirings/channel/local/index.ts +0 -3
  368. package/src/wirings/channel/local/local-channel-handler.ts +0 -98
  369. package/src/wirings/channel/local/local-channel-runner.test.ts +0 -339
  370. package/src/wirings/channel/local/local-channel-runner.ts +0 -271
  371. package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -77
  372. package/src/wirings/channel/local/local-eventhub-service.ts +0 -69
  373. package/src/wirings/channel/log-channels.ts +0 -16
  374. package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +0 -135
  375. package/src/wirings/channel/pikku-abstract-channel-handler.ts +0 -60
  376. package/src/wirings/channel/serverless/index.ts +0 -6
  377. package/src/wirings/channel/serverless/serverless-channel-runner.ts +0 -328
  378. package/src/wirings/cli/channel/cli-approval.test.ts +0 -177
  379. package/src/wirings/cli/channel/cli-approval.ts +0 -135
  380. package/src/wirings/cli/channel/cli-channel-runner.ts +0 -118
  381. package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +0 -192
  382. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +0 -148
  383. package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +0 -480
  384. package/src/wirings/cli/channel/cli-raw-client-runner.ts +0 -188
  385. package/src/wirings/cli/channel/index.ts +0 -6
  386. package/src/wirings/cli/cli-runner.test.ts +0 -969
  387. package/src/wirings/cli/cli-runner.ts +0 -538
  388. package/src/wirings/cli/cli.types.ts +0 -388
  389. package/src/wirings/cli/command-parser.test.ts +0 -1120
  390. package/src/wirings/cli/command-parser.ts +0 -713
  391. package/src/wirings/cli/define-cli-commands.ts +0 -13
  392. package/src/wirings/cli/format-cli-error.test.ts +0 -91
  393. package/src/wirings/cli/format-cli-error.ts +0 -96
  394. package/src/wirings/cli/index.ts +0 -19
  395. package/src/wirings/credential/credential.types.ts +0 -37
  396. package/src/wirings/credential/define-credential.ts +0 -49
  397. package/src/wirings/credential/index.ts +0 -7
  398. package/src/wirings/credential/validate-credential-definitions.ts +0 -63
  399. package/src/wirings/gateway/gateway-authorization.test.ts +0 -575
  400. package/src/wirings/gateway/gateway-channel-meta.test.ts +0 -44
  401. package/src/wirings/gateway/gateway-runner.test.ts +0 -581
  402. package/src/wirings/gateway/gateway-runner.ts +0 -411
  403. package/src/wirings/gateway/gateway.types.ts +0 -137
  404. package/src/wirings/gateway/index.ts +0 -15
  405. package/src/wirings/http/http-routes.test.ts +0 -318
  406. package/src/wirings/http/http-routes.ts +0 -111
  407. package/src/wirings/http/http-runner-addon-ref.test.ts +0 -238
  408. package/src/wirings/http/http-runner.test.ts +0 -503
  409. package/src/wirings/http/http-runner.ts +0 -462
  410. package/src/wirings/http/http.types.ts +0 -307
  411. package/src/wirings/http/index.ts +0 -27
  412. package/src/wirings/http/log-http-routes.ts +0 -18
  413. package/src/wirings/http/pikku-fetch-http-request.test.ts +0 -318
  414. package/src/wirings/http/pikku-fetch-http-request.ts +0 -260
  415. package/src/wirings/http/pikku-fetch-http-response.test.ts +0 -123
  416. package/src/wirings/http/pikku-fetch-http-response.ts +0 -149
  417. package/src/wirings/http/routers/http-router.ts +0 -13
  418. package/src/wirings/http/routers/path-to-regex.test.ts +0 -306
  419. package/src/wirings/http/routers/path-to-regex.ts +0 -115
  420. package/src/wirings/http/web-request.test.ts +0 -382
  421. package/src/wirings/http/web-request.ts +0 -162
  422. package/src/wirings/mcp/index.ts +0 -26
  423. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -388
  424. package/src/wirings/mcp/mcp-endpoint-registry.ts +0 -159
  425. package/src/wirings/mcp/mcp-runner.test.ts +0 -588
  426. package/src/wirings/mcp/mcp-runner.ts +0 -330
  427. package/src/wirings/mcp/mcp.types.ts +0 -199
  428. package/src/wirings/node/index.ts +0 -2
  429. package/src/wirings/node/node.types.ts +0 -23
  430. package/src/wirings/oauth2/index.ts +0 -1
  431. package/src/wirings/oauth2/oauth2.types.ts +0 -12
  432. package/src/wirings/persona/define-personas.ts +0 -33
  433. package/src/wirings/persona/index.ts +0 -75
  434. package/src/wirings/persona/persona-app-scopes.test.ts +0 -47
  435. package/src/wirings/persona/persona-app-scopes.ts +0 -74
  436. package/src/wirings/persona/persona-email.ts +0 -87
  437. package/src/wirings/persona/persona-environments.test.ts +0 -194
  438. package/src/wirings/persona/persona-environments.ts +0 -138
  439. package/src/wirings/persona/persona-mailbox.ts +0 -156
  440. package/src/wirings/persona/persona.test.ts +0 -230
  441. package/src/wirings/persona/persona.types.ts +0 -156
  442. package/src/wirings/persona/validate-personas.ts +0 -137
  443. package/src/wirings/queue/index.ts +0 -29
  444. package/src/wirings/queue/queue-identity.test.ts +0 -454
  445. package/src/wirings/queue/queue-identity.ts +0 -176
  446. package/src/wirings/queue/queue-runner.test.ts +0 -705
  447. package/src/wirings/queue/queue-runner.ts +0 -181
  448. package/src/wirings/queue/queue.types.ts +0 -161
  449. package/src/wirings/queue/register-queue-helper.ts +0 -46
  450. package/src/wirings/queue/signed-queue-service.ts +0 -60
  451. package/src/wirings/queue/validate-worker-config.test.ts +0 -108
  452. package/src/wirings/queue/validate-worker-config.ts +0 -90
  453. package/src/wirings/role/define-system-role.ts +0 -33
  454. package/src/wirings/role/index.ts +0 -13
  455. package/src/wirings/role/role.test.ts +0 -104
  456. package/src/wirings/role/role.types.ts +0 -47
  457. package/src/wirings/role/validate-role-definitions.ts +0 -93
  458. package/src/wirings/rpc/index.ts +0 -8
  459. package/src/wirings/rpc/rpc-runner.test.ts +0 -1130
  460. package/src/wirings/rpc/rpc-runner.ts +0 -569
  461. package/src/wirings/rpc/rpc-types.ts +0 -87
  462. package/src/wirings/scheduler/index.ts +0 -11
  463. package/src/wirings/scheduler/log-schedulers.ts +0 -16
  464. package/src/wirings/scheduler/scheduler-runner.test.ts +0 -835
  465. package/src/wirings/scheduler/scheduler-runner.ts +0 -138
  466. package/src/wirings/scheduler/scheduler.types.ts +0 -42
  467. package/src/wirings/scope/define-scope.ts +0 -33
  468. package/src/wirings/scope/index.ts +0 -15
  469. package/src/wirings/scope/scope.test.ts +0 -159
  470. package/src/wirings/scope/scope.types.ts +0 -42
  471. package/src/wirings/scope/validate-scope-definitions.ts +0 -107
  472. package/src/wirings/secret/index.ts +0 -9
  473. package/src/wirings/secret/secret.types.ts +0 -70
  474. package/src/wirings/secret/validate-secret-definitions.test.ts +0 -232
  475. package/src/wirings/secret/validate-secret-definitions.ts +0 -88
  476. package/src/wirings/trigger/index.ts +0 -9
  477. package/src/wirings/trigger/pikku-trigger-service.ts +0 -107
  478. package/src/wirings/trigger/trigger-runner.test.ts +0 -78
  479. package/src/wirings/trigger/trigger-runner.ts +0 -113
  480. package/src/wirings/trigger/trigger.types.ts +0 -100
  481. package/src/wirings/variable/index.ts +0 -8
  482. package/src/wirings/variable/validate-variable-definitions.test.ts +0 -115
  483. package/src/wirings/variable/validate-variable-definitions.ts +0 -71
  484. package/src/wirings/variable/variable.types.ts +0 -40
  485. package/src/wirings/virtual-user/index.ts +0 -107
  486. package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +0 -115
  487. package/src/wirings/virtual-user/prepare-virtual-user-run.ts +0 -95
  488. package/src/wirings/virtual-user/run-virtual-user.test.ts +0 -774
  489. package/src/wirings/virtual-user/run-virtual-user.ts +0 -684
  490. package/src/wirings/virtual-user/virtual-user-agents.test.ts +0 -72
  491. package/src/wirings/virtual-user/virtual-user-agents.ts +0 -62
  492. package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +0 -215
  493. package/src/wirings/virtual-user/virtual-user-catalogue.ts +0 -184
  494. package/src/wirings/virtual-user/virtual-user-derive.test.ts +0 -426
  495. package/src/wirings/virtual-user/virtual-user-derive.ts +0 -161
  496. package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +0 -68
  497. package/src/wirings/virtual-user/virtual-user-dispositions.ts +0 -210
  498. package/src/wirings/virtual-user/virtual-user-intents.test.ts +0 -218
  499. package/src/wirings/virtual-user/virtual-user-intents.ts +0 -185
  500. package/src/wirings/virtual-user/virtual-user-rng.test.ts +0 -72
  501. package/src/wirings/virtual-user/virtual-user-rng.ts +0 -50
  502. package/src/wirings/virtual-user/virtual-user-run-store.ts +0 -131
  503. package/src/wirings/virtual-user/virtual-user-scaffold.test.ts +0 -854
  504. package/src/wirings/virtual-user/virtual-user-scaffold.ts +0 -664
  505. package/src/wirings/virtual-user/virtual-user-schedule-store.ts +0 -93
  506. package/src/wirings/virtual-user/virtual-user-schedule.test.ts +0 -280
  507. package/src/wirings/virtual-user/virtual-user-schedule.ts +0 -156
  508. package/src/wirings/virtual-user/virtual-user-target.ts +0 -47
  509. package/src/wirings/virtual-user/virtual-user.types.ts +0 -215
  510. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +0 -709
  511. package/src/wirings/workflow/dsl/workflow-runner.ts +0 -25
  512. package/src/wirings/workflow/feature.test.ts +0 -131
  513. package/src/wirings/workflow/feature.ts +0 -59
  514. package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +0 -569
  515. package/src/wirings/workflow/graph/graph-foreach.test.ts +0 -626
  516. package/src/wirings/workflow/graph/graph-node.ts +0 -115
  517. package/src/wirings/workflow/graph/graph-runner.test.ts +0 -1049
  518. package/src/wirings/workflow/graph/graph-runner.ts +0 -1376
  519. package/src/wirings/workflow/graph/graph-validation.test.ts +0 -27
  520. package/src/wirings/workflow/graph/graph-validation.ts +0 -41
  521. package/src/wirings/workflow/graph/template.test.ts +0 -49
  522. package/src/wirings/workflow/graph/template.ts +0 -42
  523. package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -39
  524. package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -75
  525. package/src/wirings/workflow/index.ts +0 -107
  526. package/src/wirings/workflow/pikku-scenario-service.ts +0 -1013
  527. package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -963
  528. package/src/wirings/workflow/pikku-workflow-service.ts +0 -1993
  529. package/src/wirings/workflow/run-timeline.test.ts +0 -199
  530. package/src/wirings/workflow/run-timeline.ts +0 -185
  531. package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -107
  532. package/src/wirings/workflow/scenario-cookie-jar.ts +0 -57
  533. package/src/wirings/workflow/scenario-expectations.test.ts +0 -238
  534. package/src/wirings/workflow/scenario-hooks.test.ts +0 -259
  535. package/src/wirings/workflow/scenario-poll.test.ts +0 -64
  536. package/src/wirings/workflow/scenario-poll.ts +0 -27
  537. package/src/wirings/workflow/scenario-prose.test.ts +0 -275
  538. package/src/wirings/workflow/scenario-prose.ts +0 -86
  539. package/src/wirings/workflow/scenario-run.types.ts +0 -193
  540. package/src/wirings/workflow/scenario-service.test.ts +0 -147
  541. package/src/wirings/workflow/scenario-step-guards.ts +0 -23
  542. package/src/wirings/workflow/scenario-step.test.ts +0 -800
  543. package/src/wirings/workflow/scenario-step.types.ts +0 -262
  544. package/src/wirings/workflow/scenario-surface.test.ts +0 -146
  545. package/src/wirings/workflow/scenario-surface.ts +0 -71
  546. package/src/wirings/workflow/scenario.types.ts +0 -63
  547. package/src/wirings/workflow/workflow-approval-audit.ts +0 -47
  548. package/src/wirings/workflow/workflow-approval-policy.test.ts +0 -594
  549. package/src/wirings/workflow/workflow-approval-policy.ts +0 -68
  550. package/src/wirings/workflow/workflow-approval.ts +0 -290
  551. package/src/wirings/workflow/workflow-child-run-session.test.ts +0 -168
  552. package/src/wirings/workflow/workflow-constants.ts +0 -66
  553. package/src/wirings/workflow/workflow-dispatch-durability.test.ts +0 -116
  554. package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -55
  555. package/src/wirings/workflow/workflow-dispatch-relay.test.ts +0 -128
  556. package/src/wirings/workflow/workflow-errors.ts +0 -132
  557. package/src/wirings/workflow/workflow-inline-authority.test.ts +0 -175
  558. package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -51
  559. package/src/wirings/workflow/workflow-invocation-id.ts +0 -28
  560. package/src/wirings/workflow/workflow-meta-resolver.ts +0 -45
  561. package/src/wirings/workflow/workflow-mirror.test.ts +0 -171
  562. package/src/wirings/workflow/workflow-missing-meta.test.ts +0 -92
  563. package/src/wirings/workflow/workflow-on-error.test.ts +0 -145
  564. package/src/wirings/workflow/workflow-queue-routing.ts +0 -129
  565. package/src/wirings/workflow/workflow-queue-wiring.ts +0 -149
  566. package/src/wirings/workflow/workflow-queue-workers.test.ts +0 -131
  567. package/src/wirings/workflow/workflow-queue-workers.ts +0 -66
  568. package/src/wirings/workflow/workflow-recovery.ts +0 -192
  569. package/src/wirings/workflow/workflow-replay-snapshot.test.ts +0 -140
  570. package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -113
  571. package/src/wirings/workflow/workflow-run-authority.test.ts +0 -212
  572. package/src/wirings/workflow/workflow-run-context.test.ts +0 -172
  573. package/src/wirings/workflow/workflow-run-engine.types.ts +0 -92
  574. package/src/wirings/workflow/workflow-run-ownership.ts +0 -37
  575. package/src/wirings/workflow/workflow-run-polling.test.ts +0 -127
  576. package/src/wirings/workflow/workflow-stalled-recovery.test.ts +0 -152
  577. package/src/wirings/workflow/workflow-status-stream.test.ts +0 -354
  578. package/src/wirings/workflow/workflow-status-stream.ts +0 -144
  579. package/src/wirings/workflow/workflow-step-claim.ts +0 -46
  580. package/src/wirings/workflow/workflow-step-ordinal.test.ts +0 -94
  581. package/src/wirings/workflow/workflow-step-session.test.ts +0 -87
  582. package/src/wirings/workflow/workflow-suspend.ts +0 -61
  583. package/src/wirings/workflow/workflow-terminal-run-guard.test.ts +0 -105
  584. package/src/wirings/workflow/workflow.types.ts +0 -268
  585. package/src/wirings-stay-decoupled.test.ts +0 -130
  586. package/tsconfig.json +0 -14
  587. package/tsconfig.tsbuildinfo +0 -1
  588. package/tsconfig.type-tests.json +0 -15
@@ -1,203 +0,0 @@
1
- import { describe, test } from 'node:test'
2
- import * as assert from 'node:assert'
3
- import { hasScopes, verifyScopes } from './scopes.js'
4
- import { MissingScopeError } from './errors/errors.js'
5
- import type { CoreUserSession } from './types/core.types.js'
6
-
7
- const session = (scopes?: string[]): CoreUserSession =>
8
- ({ userId: 'test-user', scopes }) as CoreUserSession
9
-
10
- describe('verifyScopes', () => {
11
- test('passes on an exact match', () => {
12
- verifyScopes(['invoices:create'], session(['invoices:create']))
13
- })
14
-
15
- test('passes when no scopes are required', () => {
16
- verifyScopes([], session())
17
- })
18
-
19
- test('throws when the session holds none', () => {
20
- assert.throws(
21
- () => verifyScopes(['invoices:create'], session([])),
22
- MissingScopeError
23
- )
24
- })
25
-
26
- test('holding an unrelated scope does not grant', () => {
27
- assert.throws(
28
- () => verifyScopes(['invoices:create'], session(['billing:read'])),
29
- MissingScopeError
30
- )
31
- })
32
-
33
- describe('wildcards', () => {
34
- test('admin:* satisfies a descendant', () => {
35
- verifyScopes(['admin:invoices:create'], session(['admin:*']))
36
- })
37
-
38
- test('admin:* satisfies an intermediate descendant', () => {
39
- verifyScopes(['admin:invoices'], session(['admin:*']))
40
- })
41
-
42
- test('admin:* satisfies the parent itself', () => {
43
- verifyScopes(['admin'], session(['admin:*']))
44
- })
45
-
46
- test('a bare * satisfies anything', () => {
47
- verifyScopes(['admin:invoices:create'], session(['*']))
48
- })
49
-
50
- test('a deep wildcard satisfies its own descendants', () => {
51
- verifyScopes(['admin:invoices:create'], session(['admin:invoices:*']))
52
- })
53
-
54
- test('does not leak across siblings', () => {
55
- assert.throws(
56
- () => verifyScopes(['billing:read'], session(['admin:*'])),
57
- MissingScopeError
58
- )
59
- })
60
-
61
- test('a required wildcard is not satisfied by one narrow grant', () => {
62
- assert.throws(
63
- () => verifyScopes(['admin:*'], session(['admin:invoices:create'])),
64
- MissingScopeError
65
- )
66
- })
67
-
68
- test('a required wildcard is satisfied by a broader grant', () => {
69
- verifyScopes(['admin:*'], session(['*']))
70
- })
71
- })
72
-
73
- describe('a plain parent grant covers its descendants', () => {
74
- test('holding a parent satisfies a deep descendant', () => {
75
- verifyScopes(['admin:invoices:create'], session(['admin']))
76
- })
77
-
78
- test('holding a parent satisfies an intermediate descendant', () => {
79
- verifyScopes(['admin:invoices'], session(['admin']))
80
- })
81
-
82
- test('holding an intermediate parent satisfies its child', () => {
83
- verifyScopes(['admin:invoices:create'], session(['admin:invoices']))
84
- })
85
-
86
- test('a parent does not leak across siblings', () => {
87
- assert.throws(
88
- () => verifyScopes(['billing:read'], session(['admin'])),
89
- MissingScopeError
90
- )
91
- })
92
- })
93
-
94
- describe('AND semantics', () => {
95
- test('passes only when every required scope is held', () => {
96
- verifyScopes(
97
- ['invoices:read', 'invoices:write'],
98
- session(['invoices:read', 'invoices:write'])
99
- )
100
- })
101
-
102
- test('throws when only one of two is held', () => {
103
- assert.throws(
104
- () =>
105
- verifyScopes(
106
- ['invoices:read', 'invoices:write'],
107
- session(['invoices:read'])
108
- ),
109
- MissingScopeError
110
- )
111
- })
112
-
113
- test('one wildcard can satisfy several requirements', () => {
114
- verifyScopes(['admin:read', 'admin:write'], session(['admin:*']))
115
- })
116
- })
117
-
118
- describe('fails closed', () => {
119
- test('throws when the session has no scopes field', () => {
120
- assert.throws(
121
- () => verifyScopes(['invoices:create'], session(undefined)),
122
- MissingScopeError
123
- )
124
- })
125
-
126
- test('throws when there is no session at all', () => {
127
- assert.throws(
128
- () => verifyScopes(['invoices:create'], undefined),
129
- MissingScopeError
130
- )
131
- })
132
-
133
- test('a narrower grant does not satisfy a broader requirement', () => {
134
- assert.throws(
135
- () => verifyScopes(['admin'], session(['admin:invoices'])),
136
- MissingScopeError
137
- )
138
- })
139
- })
140
-
141
- describe('a parent grant coexists with a child grant', () => {
142
- test('the parent still grants when a child is also held', () => {
143
- verifyScopes(
144
- ['admin:invoices'],
145
- session(['admin:invoices', 'admin:invoices:create'])
146
- )
147
- })
148
-
149
- test('the child still grants when a parent is also held', () => {
150
- verifyScopes(
151
- ['admin:invoices:create'],
152
- session(['admin:invoices', 'admin:invoices:create'])
153
- )
154
- })
155
- })
156
-
157
- test('names the missing scope', () => {
158
- assert.throws(
159
- () => verifyScopes(['a:b', 'c:d'], session(['a:b'])),
160
- (err: MissingScopeError) => {
161
- assert.equal(err.payload.scope, 'c:d')
162
- assert.match(err.message, /c:d/)
163
- return true
164
- }
165
- )
166
- })
167
- })
168
-
169
- describe('hasScopes', () => {
170
- test('true on an exact match', () => {
171
- assert.equal(hasScopes(['invoices:create'], ['invoices:create']), true)
172
- })
173
-
174
- test('false when the grant is unrelated', () => {
175
- assert.equal(hasScopes(['invoices:create'], ['billing:read']), false)
176
- })
177
-
178
- test('shares the hierarchy rules with verifyScopes', () => {
179
- assert.equal(hasScopes(['admin:impersonate'], ['admin']), true)
180
- assert.equal(hasScopes(['admin:impersonate'], ['admin:*']), true)
181
- assert.equal(hasScopes(['admin:impersonate'], ['*']), true)
182
- assert.equal(hasScopes(['admin'], ['admin:impersonate']), false)
183
- })
184
-
185
- test('AND semantics: every required scope must be satisfied', () => {
186
- assert.equal(hasScopes(['a:read', 'a:write'], ['a:read']), false)
187
- assert.equal(hasScopes(['a:read', 'a:write'], ['a']), true)
188
- })
189
-
190
- test('fails closed on absent or empty grants', () => {
191
- assert.equal(hasScopes(['invoices:create'], undefined), false)
192
- assert.equal(hasScopes(['invoices:create'], []), false)
193
- })
194
-
195
- test('an empty requirement is satisfied by anything', () => {
196
- assert.equal(hasScopes([], undefined), true)
197
- assert.equal(hasScopes(undefined, undefined), true)
198
- })
199
-
200
- test('accepts a Set of held grants', () => {
201
- assert.equal(hasScopes(['admin:impersonate'], new Set(['admin'])), true)
202
- })
203
- })
package/src/scopes.ts DELETED
@@ -1,67 +0,0 @@
1
- import type { CoreUserSession } from './types/core.types.js'
2
- import { MissingScopeError } from './errors/errors.js'
3
-
4
- const SEPARATOR = ':'
5
- const WILDCARD = '*'
6
-
7
- /**
8
- * Every grant that would satisfy `scope`: the scope itself, a wildcard
9
- * directly beneath it, a wildcard at each ancestor level, and each plain
10
- * ancestor id.
11
- */
12
- const satisfyingGrants = (scope: string): string[] => {
13
- const segments = scope.split(SEPARATOR)
14
- const grants = [scope, `${scope}${SEPARATOR}${WILDCARD}`]
15
- for (let i = 0; i < segments.length; i++) {
16
- grants.push([...segments.slice(0, i), WILDCARD].join(SEPARATOR))
17
- }
18
- for (let i = 1; i < segments.length; i++) {
19
- grants.push(segments.slice(0, i).join(SEPARATOR))
20
- }
21
- return grants
22
- }
23
-
24
- const holds = (held: ReadonlySet<string>, scope: string): boolean =>
25
- satisfyingGrants(scope).some((grant) => held.has(grant))
26
-
27
- /** The first required scope `held` does not satisfy, or `null`. Fails closed. */
28
- const firstUnsatisfied = (
29
- required: readonly string[] | undefined,
30
- held: Iterable<string> | undefined
31
- ): string | null => {
32
- if (!required || required.length === 0) {
33
- return null
34
- }
35
-
36
- const grants = new Set(held ?? [])
37
- for (const scope of required) {
38
- if (!holds(grants, scope)) {
39
- return scope
40
- }
41
- }
42
- return null
43
- }
44
-
45
- /**
46
- * The non-throwing counterpart to {@link verifyScopes}, for deciding rather
47
- * than enforcing. Fails closed; an empty `required` is satisfied by anything.
48
- */
49
- export const hasScopes = (
50
- required: readonly string[] | undefined,
51
- held: Iterable<string> | undefined
52
- ): boolean => firstUnsatisfied(required, held) === null
53
-
54
- /**
55
- * Throws {@link MissingScopeError} naming the first scope the session does not
56
- * hold. Fails closed: no session, or a session without `scopes`, satisfies
57
- * nothing.
58
- */
59
- export const verifyScopes = (
60
- required: readonly string[] | undefined,
61
- session: CoreUserSession | undefined
62
- ): void => {
63
- const missing = firstUnsatisfied(required, session?.scopes)
64
- if (missing !== null) {
65
- throw new MissingScopeError(missing)
66
- }
67
- }
@@ -1,37 +0,0 @@
1
- import type {
2
- AgentRunState,
3
- PendingApproval,
4
- } from '../wirings/agent/agent.types.js'
5
- import type { AgentRunScore } from '../wirings/agent-scorer/agent-scorer.types.js'
6
-
7
- export type CreateRunInput = Omit<AgentRunState, 'runId'>
8
-
9
- export type SaveScoreInput = Omit<AgentRunScore, 'createdAt'>
10
-
11
- export interface AgentRunStateService {
12
- createRun(run: CreateRunInput): Promise<string>
13
- updateRun(runId: string, updates: Partial<AgentRunState>): Promise<void>
14
- getRun(runId: string): Promise<AgentRunState | null>
15
- getRunsByThread(threadId: string): Promise<AgentRunState[]>
16
- /**
17
- * Claims an approval: removes it from the run's pending list and records the
18
- * decision, as one atomic step. Returns whether THIS caller made the claim —
19
- * concurrent approvals of the same tool call produce exactly one `true`, and
20
- * only that caller may run the tool.
21
- */
22
- resolveApproval(
23
- toolCallId: string,
24
- status: 'approved' | 'denied'
25
- ): Promise<boolean>
26
- findRunByToolCallId(
27
- toolCallId: string
28
- ): Promise<{ run: AgentRunState; approval: PendingApproval } | null>
29
- /**
30
- * Record one scorer's grade of a finished run. A run accumulates one row per
31
- * scorer, and a scorer may grade the same run more than once — a retried job
32
- * appends rather than replaces, so a re-grade never silently overwrites the
33
- * grade that was acted on.
34
- */
35
- saveScore(score: SaveScoreInput): Promise<void>
36
- getScores(runId: string): Promise<AgentRunScore[]>
37
- }
@@ -1,238 +0,0 @@
1
- import type {
2
- AgentMessage,
3
- AgentStep,
4
- AgentToolDef,
5
- AgentStreamChannel,
6
- } from '../wirings/agent/agent.types.js'
7
-
8
- export type AIProviderOptions = Record<string, Record<string, unknown>>
9
-
10
- export type AgentRunnerParams = {
11
- model: string
12
- temperature?: number
13
- instructions: string
14
- messages: AgentMessage[]
15
- tools: AgentToolDef[]
16
- maxSteps: number
17
- toolChoice: 'auto' | 'required' | 'none'
18
- outputSchema?: Record<string, unknown>
19
- /** Pikku agent function name — forwarded to the LLM proxy (LiteLLM) as
20
- * request-level metadata so usage can be broken down per agent. */
21
- agentId?: string
22
- /**
23
- * Cancels the model call itself, not just delivery of its output. Set by
24
- * `streamAgent` from the run's interrupt handle so a voice barge-in stops
25
- * generation upstream rather than leaving tokens being billed into a stream
26
- * nobody reads. A runner that ignores it degrades to "the caller stops
27
- * listening", which is the behaviour before this field existed.
28
- */
29
- abortSignal?: AbortSignal
30
- /**
31
- * Per-provider settings passed to the model untouched — the escape hatch for
32
- * anything the shared params above cannot express because only one vendor
33
- * has it.
34
- *
35
- * The setting that motivated it is `reasoningEffort`. A voice turn is heard
36
- * rather than read, so the wait before the first word is most of the
37
- * experience: `{ openai: { reasoningEffort: 'minimal' } }` on gpt-5-mini
38
- * measured 0.9s to first token against 2.5s at the default, and 1.6s of
39
- * silence is a long time to sit through having just finished speaking.
40
- */
41
- providerOptions?: AIProviderOptions
42
- }
43
-
44
- export type AgentRunnerResult = {
45
- text: string
46
- object?: unknown
47
- steps: AgentStep[]
48
- usage: { inputTokens: number; outputTokens: number }
49
- }
50
-
51
- export type AgentStepResult = {
52
- text: string
53
- object?: unknown
54
- toolCalls: { toolCallId: string; toolName: string; args: unknown }[]
55
- toolResults: {
56
- toolCallId: string
57
- toolName: string
58
- result: unknown
59
- /**
60
- * Set when the tool threw rather than returned. Carried as its own field
61
- * because `result` is a rendered string by the time anything downstream
62
- * reads it, and "did this tool fail" is not answerable by looking for an
63
- * `Error:` prefix in text a tool could legitimately have returned.
64
- */
65
- error?: string
66
- }[]
67
- usage: { inputTokens: number; outputTokens: number }
68
- finishReason: 'stop' | 'tool-calls' | 'length' | 'error' | 'unknown'
69
- reasoningContent?: string
70
- }
71
-
72
- export type AITranscriptionParams = {
73
- model: string
74
- audio: Uint8Array
75
- providerOptions?: AIProviderOptions
76
- maxRetries?: number
77
- abortSignal?: AbortSignal
78
- headers?: Record<string, string>
79
- }
80
-
81
- export type AITranscriptionResult = {
82
- text: string
83
- segments?: Array<{
84
- text: string
85
- startSecond: number
86
- endSecond: number
87
- }>
88
- language?: string
89
- durationInSeconds?: number
90
- warnings?: unknown[]
91
- providerMetadata?: Record<string, unknown>
92
- responses?: unknown[]
93
- }
94
-
95
- export type AIGenerateSpeechParams = {
96
- model: string
97
- text: string
98
- voice?: string
99
- outputFormat?: string
100
- instructions?: string
101
- speed?: number
102
- language?: string
103
- providerOptions?: AIProviderOptions
104
- maxRetries?: number
105
- abortSignal?: AbortSignal
106
- headers?: Record<string, string>
107
- }
108
-
109
- export type AIGenerateSpeechResult = {
110
- audio: {
111
- uint8Array: Uint8Array
112
- base64: string
113
- mediaType: string
114
- format: string
115
- }
116
- warnings?: unknown[]
117
- providerMetadata?: Record<string, unknown>
118
- responses?: unknown[]
119
- }
120
-
121
- export type AIGenerateImagePrompt =
122
- | string
123
- | {
124
- images: Array<Uint8Array | ArrayBuffer | string>
125
- text?: string
126
- mask?: Uint8Array | ArrayBuffer | string
127
- }
128
-
129
- export type AIGenerateImageParams = {
130
- model: string
131
- prompt: AIGenerateImagePrompt
132
- n?: number
133
- maxImagesPerCall?: number
134
- size?: `${number}x${number}`
135
- aspectRatio?: `${number}:${number}`
136
- seed?: number
137
- providerOptions?: AIProviderOptions
138
- maxRetries?: number
139
- abortSignal?: AbortSignal
140
- headers?: Record<string, string>
141
- }
142
-
143
- export type AIGenerateImageResult = {
144
- images: Array<{
145
- uint8Array: Uint8Array
146
- base64: string
147
- mediaType: string
148
- }>
149
- warnings?: unknown[]
150
- providerMetadata?: Record<string, unknown>
151
- responses?: unknown[]
152
- usage?: {
153
- inputTokens?: number
154
- outputTokens?: number
155
- totalTokens?: number
156
- }
157
- }
158
-
159
- export type AIEmbedParams = {
160
- model: string
161
- value: string
162
- providerOptions?: AIProviderOptions
163
- maxRetries?: number
164
- abortSignal?: AbortSignal
165
- headers?: Record<string, string>
166
- }
167
-
168
- export type AIEmbedResult = {
169
- value: string
170
- embedding: number[]
171
- usage?: { tokens?: number }
172
- warnings?: unknown[]
173
- providerMetadata?: Record<string, unknown>
174
- response?: unknown
175
- }
176
-
177
- export type AIEmbedManyParams = {
178
- model: string
179
- values: string[]
180
- providerOptions?: AIProviderOptions
181
- maxRetries?: number
182
- abortSignal?: AbortSignal
183
- headers?: Record<string, string>
184
- maxParallelCalls?: number
185
- }
186
-
187
- export type AIEmbedManyResult = {
188
- values: string[]
189
- embeddings: number[][]
190
- usage?: { tokens?: number }
191
- warnings?: unknown[]
192
- providerMetadata?: Record<string, unknown>
193
- responses?: unknown[]
194
- }
195
-
196
- export type AIRerankParams<VALUE extends string | Record<string, unknown>> = {
197
- model: string
198
- query: string
199
- documents: VALUE[]
200
- topK?: number
201
- providerOptions?: AIProviderOptions
202
- maxRetries?: number
203
- abortSignal?: AbortSignal
204
- headers?: Record<string, string>
205
- }
206
-
207
- export type AIRerankResult<VALUE extends string | Record<string, unknown>> = {
208
- ranking: Array<{
209
- index: number
210
- document: VALUE
211
- score: number
212
- }>
213
- rerankedDocuments: VALUE[]
214
- originalDocuments: VALUE[]
215
- providerMetadata?: Record<string, unknown>
216
- response?: unknown
217
- }
218
-
219
- export interface AgentRunnerService {
220
- stream(
221
- params: AgentRunnerParams,
222
- channel: AgentStreamChannel
223
- ): Promise<AgentStepResult>
224
- run(params: AgentRunnerParams): Promise<AgentStepResult>
225
- transcribe?(params: AITranscriptionParams): Promise<AITranscriptionResult>
226
- generateSpeech?(
227
- params: AIGenerateSpeechParams
228
- ): Promise<AIGenerateSpeechResult>
229
- generateImage?(params: AIGenerateImageParams): Promise<AIGenerateImageResult>
230
- embed?(params: AIEmbedParams): Promise<AIEmbedResult>
231
- embedMany?(params: AIEmbedManyParams): Promise<AIEmbedManyResult>
232
- rerank?<VALUE extends string | Record<string, unknown>>(
233
- params: AIRerankParams<VALUE>
234
- ): Promise<AIRerankResult<VALUE>>
235
- /** Return a new runner that uses the given API key for every LLM call.
236
- * Optional — runners that don't support per-key scoping leave this undefined. */
237
- withApiKey?(apiKey: string): AgentRunnerService
238
- }
@@ -1,39 +0,0 @@
1
- import type { AgentThread, AgentMessage } from '../wirings/agent/agent.types.js'
2
-
3
- export interface AgentStorageService {
4
- createThread(
5
- resourceId: string,
6
- options?: {
7
- threadId?: string
8
- title?: string
9
- metadata?: Record<string, unknown>
10
- }
11
- ): Promise<AgentThread>
12
-
13
- getThread(threadId: string): Promise<AgentThread>
14
-
15
- getThreads(resourceId: string): Promise<AgentThread[]>
16
-
17
- deleteThread(threadId: string): Promise<void>
18
-
19
- getMessages(
20
- threadId: string,
21
- options?: {
22
- lastN?: number
23
- cursor?: string
24
- }
25
- ): Promise<AgentMessage[]>
26
-
27
- saveMessages(threadId: string, messages: AgentMessage[]): Promise<void>
28
-
29
- getWorkingMemory(
30
- id: string,
31
- scope: 'resource' | 'thread'
32
- ): Promise<Record<string, unknown> | null>
33
-
34
- saveWorkingMemory(
35
- id: string,
36
- scope: 'resource' | 'thread',
37
- data: Record<string, unknown>
38
- ): Promise<void>
39
- }
@@ -1,9 +0,0 @@
1
- // knowledge: decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md
2
- export interface AIEmbeddingService {
3
- readonly model: string
4
- readonly dimensions?: number
5
- /** Index time. Preserves input order. */
6
- embedDocuments(values: string[]): Promise<number[][]>
7
- /** Query time. */
8
- embedQuery(value: string): Promise<number[]>
9
- }
@@ -1,44 +0,0 @@
1
- import { describe, test } from 'node:test'
2
- import assert from 'node:assert/strict'
3
- import {
4
- createInvocationAudit,
5
- type AuditEvent,
6
- type AuditEventBatch,
7
- } from './audit-service.js'
8
-
9
- describe('audit-service', () => {
10
- test('best-effort flush failures are logged and do not throw', async () => {
11
- const warnings: unknown[][] = []
12
- const audit = createInvocationAudit(
13
- {
14
- async audit(_event: AuditEvent): Promise<void> {
15
- throw new Error('should not use single-event write')
16
- },
17
- async write(_batch: AuditEventBatch): Promise<void> {
18
- throw new Error('sink failed')
19
- },
20
- },
21
- {
22
- wireType: 'rpc',
23
- wireId: 'wire-best-effort',
24
- functionId: 'bestEffortFunc',
25
- audit: { durability: 'best-effort' },
26
- logger: {
27
- warn: (...args: unknown[]) => warnings.push(args),
28
- },
29
- } as any
30
- )
31
-
32
- await audit.write({
33
- type: 'db.query',
34
- source: 'auto',
35
- queryId: 'q-1',
36
- })
37
-
38
- await assert.doesNotReject(async () => {
39
- await audit.close()
40
- })
41
- assert.equal(warnings.length, 1)
42
- assert.equal(warnings[0]?.[0], 'best-effort audit flush failed')
43
- })
44
- })