@pikku/core 0.12.80 → 0.12.83

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 (237) hide show
  1. package/CHANGELOG.md +345 -0
  2. package/dist/errors/index.d.ts +1 -1
  3. package/dist/errors/index.js +1 -1
  4. package/dist/function/function-runner.js +2 -5
  5. package/dist/function/index.d.ts +1 -1
  6. package/dist/index.d.ts +11 -11
  7. package/dist/index.js +3 -3
  8. package/dist/pikku-state.js +4 -0
  9. package/dist/services/ai-agent-runner-service.d.ts +7 -0
  10. package/dist/services/ai-run-state-service.d.ts +10 -0
  11. package/dist/services/in-memory-ai-run-state-service.d.ts +5 -1
  12. package/dist/services/in-memory-ai-run-state-service.js +9 -0
  13. package/dist/services/index.d.ts +15 -16
  14. package/dist/services/index.js +5 -5
  15. package/dist/services/meta-service.d.ts +2 -1
  16. package/dist/services/scoped-credential-service.d.ts +21 -0
  17. package/dist/services/scoped-credential-service.js +53 -0
  18. package/dist/testing/service-tests/ai-storage-service-tests.js +76 -0
  19. package/dist/types/core.types.d.ts +2 -3
  20. package/dist/types/state.types.d.ts +19 -1
  21. package/dist/wirings/actor-flow/index.d.ts +1 -1
  22. package/dist/wirings/ai-agent/ai-agent-finalize.d.ts +58 -0
  23. package/dist/wirings/ai-agent/ai-agent-finalize.js +138 -0
  24. package/dist/wirings/ai-agent/ai-agent-interrupt.js +1 -0
  25. package/dist/wirings/ai-agent/ai-agent-memory.d.ts +2 -8
  26. package/dist/wirings/ai-agent/ai-agent-memory.js +34 -17
  27. package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +7 -0
  28. package/dist/wirings/ai-agent/ai-agent-model-config.js +44 -1
  29. package/dist/wirings/ai-agent/ai-agent-prepare.js +4 -0
  30. package/dist/wirings/ai-agent/ai-agent-runner.js +61 -40
  31. package/dist/wirings/ai-agent/ai-agent-stream.js +89 -36
  32. package/dist/wirings/ai-agent/ai-agent-turn.d.ts +1 -0
  33. package/dist/wirings/ai-agent/ai-agent-turn.js +1 -0
  34. package/dist/wirings/ai-agent/ai-agent.types.d.ts +46 -1
  35. package/dist/wirings/ai-agent/index.d.ts +8 -7
  36. package/dist/wirings/ai-agent/index.js +5 -4
  37. package/dist/wirings/ai-scorer/ai-scorer-grade.d.ts +26 -0
  38. package/dist/wirings/ai-scorer/ai-scorer-grade.js +33 -0
  39. package/dist/wirings/ai-scorer/ai-scorer-judge.d.ts +17 -0
  40. package/dist/wirings/ai-scorer/ai-scorer-judge.js +92 -0
  41. package/dist/wirings/ai-scorer/ai-scorer-live.d.ts +15 -0
  42. package/dist/wirings/ai-scorer/ai-scorer-live.js +38 -0
  43. package/dist/wirings/ai-scorer/ai-scorer-registry.d.ts +18 -0
  44. package/dist/wirings/ai-scorer/ai-scorer-registry.js +46 -0
  45. package/dist/wirings/ai-scorer/ai-scorer-sampling.d.ts +8 -0
  46. package/dist/wirings/ai-scorer/ai-scorer-sampling.js +31 -0
  47. package/dist/wirings/ai-scorer/ai-scorer-snapshots.d.ts +10 -0
  48. package/dist/wirings/ai-scorer/ai-scorer-snapshots.js +40 -0
  49. package/dist/wirings/ai-scorer/ai-scorer-worker.d.ts +15 -0
  50. package/dist/wirings/ai-scorer/ai-scorer-worker.js +58 -0
  51. package/dist/wirings/ai-scorer/ai-scorer.d.ts +39 -0
  52. package/dist/wirings/ai-scorer/ai-scorer.js +40 -0
  53. package/dist/wirings/ai-scorer/ai-scorer.types.d.ts +90 -0
  54. package/dist/wirings/ai-scorer/ai-scorer.types.js +4 -0
  55. package/dist/wirings/ai-scorer/index.d.ts +6 -0
  56. package/dist/wirings/ai-scorer/index.js +5 -0
  57. package/dist/wirings/channel/index.d.ts +5 -6
  58. package/dist/wirings/channel/index.js +3 -4
  59. package/dist/wirings/channel/local/local-channel-runner.js +8 -1
  60. package/dist/wirings/cli/channel/cli-raw-channel-runner.js +9 -1
  61. package/dist/wirings/cli/channel/index.d.ts +1 -2
  62. package/dist/wirings/cli/channel/index.js +0 -1
  63. package/dist/wirings/cli/cli-runner.js +13 -1
  64. package/dist/wirings/credential/index.d.ts +1 -1
  65. package/dist/wirings/gateway/index.d.ts +1 -1
  66. package/dist/wirings/http/http-runner.js +8 -2
  67. package/dist/wirings/http/index.d.ts +1 -2
  68. package/dist/wirings/mcp/index.d.ts +1 -1
  69. package/dist/wirings/mcp/mcp-runner.d.ts +15 -0
  70. package/dist/wirings/mcp/mcp-runner.js +18 -5
  71. package/dist/wirings/persona/index.d.ts +3 -4
  72. package/dist/wirings/persona/index.js +2 -3
  73. package/dist/wirings/queue/index.d.ts +1 -3
  74. package/dist/wirings/queue/index.js +1 -3
  75. package/dist/wirings/rpc/addon-runner.d.ts +8 -0
  76. package/dist/wirings/rpc/addon-runner.js +31 -3
  77. package/dist/wirings/rpc/rpc-runner.js +4 -0
  78. package/dist/wirings/rpc/rpc-types.d.ts +8 -0
  79. package/dist/wirings/rpc/wire-addon.d.ts +25 -0
  80. package/dist/wirings/rpc/wire-addon.js +8 -0
  81. package/dist/wirings/scheduler/index.d.ts +1 -1
  82. package/dist/wirings/trigger/index.d.ts +1 -1
  83. package/dist/wirings/virtual-user/index.d.ts +5 -6
  84. package/dist/wirings/virtual-user/index.js +2 -4
  85. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +85 -15
  86. package/dist/wirings/workflow/feature.d.ts +2 -1
  87. package/dist/wirings/workflow/index.d.ts +5 -16
  88. package/dist/wirings/workflow/index.js +1 -9
  89. package/dist/wirings/workflow/pikku-scenario-service.d.ts +17 -7
  90. package/dist/wirings/workflow/pikku-scenario-service.js +48 -13
  91. package/dist/wirings/workflow/pikku-workflow-service.js +17 -3
  92. package/dist/wirings/workflow/scenario-step.types.d.ts +8 -0
  93. package/dist/wirings/workflow/scenario.types.d.ts +37 -0
  94. package/dist/wirings/workflow/workflow-approval-audit.d.ts +16 -0
  95. package/dist/wirings/workflow/workflow-approval-audit.js +40 -0
  96. package/dist/wirings/workflow/workflow-approval-policy.d.ts +20 -0
  97. package/dist/wirings/workflow/workflow-approval-policy.js +48 -0
  98. package/dist/wirings/workflow/workflow-approval.d.ts +29 -1
  99. package/dist/wirings/workflow/workflow-approval.js +65 -2
  100. package/dist/wirings/workflow/workflow-run-ownership.d.ts +2 -1
  101. package/dist/wirings/workflow/workflow-run-ownership.js +2 -1
  102. package/dist/wirings/workflow/workflow.types.d.ts +2 -37
  103. package/knowledge/decisions/internals/addon-pikku-meta-ships-at-the-package-root-or-under-dist.md +32 -0
  104. package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +39 -0
  105. package/knowledge/decisions/internals/index.md +30 -3
  106. package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +115 -0
  107. package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +37 -0
  108. package/knowledge/decisions/security/a-workflow-run-is-read-and-approved-by-its-owner.md +30 -14
  109. package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +59 -0
  110. package/knowledge/decisions/security/index.md +3 -1
  111. package/knowledge/questions/index.md +1 -1
  112. package/package.json +3 -2
  113. package/scripts/generate-api-report.mts +143 -18
  114. package/src/api-report.test.ts +2 -2
  115. package/src/errors/index.ts +1 -1
  116. package/src/function/function-runner.test.ts +52 -0
  117. package/src/function/function-runner.ts +5 -9
  118. package/src/function/index.ts +0 -2
  119. package/src/index.ts +0 -35
  120. package/src/pikku-state.ts +5 -0
  121. package/src/public-surface.json +81 -118
  122. package/src/services/ai-agent-runner-service.ts +12 -1
  123. package/src/services/ai-run-state-service.ts +11 -0
  124. package/src/services/in-memory-ai-run-state-service.ts +13 -0
  125. package/src/services/index.ts +7 -58
  126. package/src/services/meta-service.ts +2 -4
  127. package/src/services/scoped-credential-service.test.ts +86 -0
  128. package/src/services/scoped-credential-service.ts +63 -0
  129. package/src/testing/service-tests/ai-storage-service-tests.ts +93 -0
  130. package/src/types/core.types.ts +4 -7
  131. package/src/types/state.types.ts +21 -1
  132. package/src/wirings/actor-flow/index.ts +0 -3
  133. package/src/wirings/ai-agent/ai-agent-finalize.test.ts +186 -0
  134. package/src/wirings/ai-agent/ai-agent-finalize.ts +197 -0
  135. package/src/wirings/ai-agent/ai-agent-interrupt.ts +1 -0
  136. package/src/wirings/ai-agent/ai-agent-memory.ts +54 -38
  137. package/src/wirings/ai-agent/ai-agent-model-config.test.ts +72 -3
  138. package/src/wirings/ai-agent/ai-agent-model-config.ts +49 -1
  139. package/src/wirings/ai-agent/ai-agent-prepare.ts +4 -0
  140. package/src/wirings/ai-agent/ai-agent-runner.ts +71 -40
  141. package/src/wirings/ai-agent/ai-agent-stream-output-hooks.test.ts +353 -0
  142. package/src/wirings/ai-agent/ai-agent-stream.ts +116 -54
  143. package/src/wirings/ai-agent/ai-agent-turn.test.ts +67 -0
  144. package/src/wirings/ai-agent/ai-agent-turn.ts +1 -0
  145. package/src/wirings/ai-agent/ai-agent.types.ts +64 -4
  146. package/src/wirings/ai-agent/index.ts +2 -16
  147. package/src/wirings/ai-scorer/ai-scorer-grade.test.ts +106 -0
  148. package/src/wirings/ai-scorer/ai-scorer-grade.ts +55 -0
  149. package/src/wirings/ai-scorer/ai-scorer-judge.test.ts +143 -0
  150. package/src/wirings/ai-scorer/ai-scorer-judge.ts +120 -0
  151. package/src/wirings/ai-scorer/ai-scorer-live.test.ts +174 -0
  152. package/src/wirings/ai-scorer/ai-scorer-live.ts +56 -0
  153. package/src/wirings/ai-scorer/ai-scorer-registry.ts +63 -0
  154. package/src/wirings/ai-scorer/ai-scorer-sampling.test.ts +34 -0
  155. package/src/wirings/ai-scorer/ai-scorer-sampling.ts +36 -0
  156. package/src/wirings/ai-scorer/ai-scorer-snapshots.test.ts +49 -0
  157. package/src/wirings/ai-scorer/ai-scorer-snapshots.ts +46 -0
  158. package/src/wirings/ai-scorer/ai-scorer-worker.test.ts +122 -0
  159. package/src/wirings/ai-scorer/ai-scorer-worker.ts +69 -0
  160. package/src/wirings/ai-scorer/ai-scorer.ts +76 -0
  161. package/src/wirings/ai-scorer/ai-scorer.types.ts +107 -0
  162. package/src/wirings/ai-scorer/index.ts +24 -0
  163. package/src/wirings/channel/index.ts +1 -20
  164. package/src/wirings/channel/local/local-channel-runner.test.ts +68 -0
  165. package/src/wirings/channel/local/local-channel-runner.ts +8 -1
  166. package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +23 -0
  167. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +12 -1
  168. package/src/wirings/cli/channel/index.ts +0 -7
  169. package/src/wirings/cli/cli-runner.test.ts +68 -0
  170. package/src/wirings/cli/cli-runner.ts +18 -1
  171. package/src/wirings/credential/index.ts +0 -1
  172. package/src/wirings/gateway/index.ts +0 -3
  173. package/src/wirings/http/http-runner.test.ts +66 -0
  174. package/src/wirings/http/http-runner.ts +10 -2
  175. package/src/wirings/http/index.ts +1 -1
  176. package/src/wirings/mcp/index.ts +0 -1
  177. package/src/wirings/mcp/mcp-runner.test.ts +181 -0
  178. package/src/wirings/mcp/mcp-runner.ts +35 -5
  179. package/src/wirings/persona/index.ts +0 -8
  180. package/src/wirings/queue/index.ts +0 -14
  181. package/src/wirings/rpc/addon-runner.ts +62 -3
  182. package/src/wirings/rpc/addon-secrets.test.ts +391 -0
  183. package/src/wirings/rpc/rpc-runner.test.ts +2 -0
  184. package/src/wirings/rpc/rpc-runner.ts +4 -0
  185. package/src/wirings/rpc/rpc-types.ts +8 -0
  186. package/src/wirings/rpc/wire-addon.ts +33 -0
  187. package/src/wirings/scheduler/index.ts +0 -1
  188. package/src/wirings/trigger/index.ts +0 -1
  189. package/src/wirings/virtual-user/index.ts +0 -16
  190. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +96 -16
  191. package/src/wirings/workflow/feature.ts +2 -5
  192. package/src/wirings/workflow/graph/graph-runner.test.ts +72 -0
  193. package/src/wirings/workflow/index.ts +2 -68
  194. package/src/wirings/workflow/pikku-scenario-service.ts +81 -16
  195. package/src/wirings/workflow/pikku-workflow-service.test.ts +13 -12
  196. package/src/wirings/workflow/pikku-workflow-service.ts +28 -4
  197. package/src/wirings/workflow/scenario-expectations.test.ts +75 -0
  198. package/src/wirings/workflow/scenario-hooks.test.ts +3 -2
  199. package/src/wirings/workflow/scenario-step.types.ts +8 -0
  200. package/src/wirings/workflow/scenario.types.ts +63 -0
  201. package/src/wirings/workflow/workflow-approval-audit.ts +47 -0
  202. package/src/wirings/workflow/workflow-approval-policy.test.ts +524 -0
  203. package/src/wirings/workflow/workflow-approval-policy.ts +68 -0
  204. package/src/wirings/workflow/workflow-approval.ts +113 -9
  205. package/src/wirings/workflow/workflow-run-authority.test.ts +12 -15
  206. package/src/wirings/workflow/workflow-run-ownership.ts +2 -1
  207. package/src/wirings/workflow/workflow.types.ts +1 -63
  208. package/src/wirings-stay-decoupled.test.ts +6 -2
  209. package/tsconfig.tsbuildinfo +1 -1
  210. package/dist/internal.d.ts +0 -3
  211. package/dist/internal.js +0 -2
  212. package/dist/middleware/timeout.d.ts +0 -9
  213. package/dist/middleware/timeout.js +0 -15
  214. package/dist/pikku-response.d.ts +0 -6
  215. package/dist/pikku-response.js +0 -6
  216. package/dist/services/gopass-secrets.d.ts +0 -15
  217. package/dist/services/gopass-secrets.js +0 -76
  218. package/dist/services/http-scenario-actors.d.ts +0 -75
  219. package/dist/services/http-scenario-actors.js +0 -195
  220. package/dist/services/http-user-flow-actors.d.ts +0 -67
  221. package/dist/services/http-user-flow-actors.js +0 -193
  222. package/dist/services/scenario-actors-service.d.ts +0 -127
  223. package/dist/services/scenario-actors-service.js +0 -40
  224. package/dist/services/user-flow-actors-service.d.ts +0 -39
  225. package/dist/wirings/credential/wire-credential.d.ts +0 -48
  226. package/dist/wirings/credential/wire-credential.js +0 -47
  227. package/dist/wirings/oauth2/oauth2-client.d.ts +0 -47
  228. package/dist/wirings/oauth2/oauth2-client.js +0 -263
  229. package/dist/wirings/oauth2/oauth2-routes.d.ts +0 -35
  230. package/dist/wirings/oauth2/oauth2-routes.js +0 -146
  231. package/dist/wirings/scope/wire-scope.d.ts +0 -33
  232. package/dist/wirings/scope/wire-scope.js +0 -32
  233. package/dist/wirings/workflow/dsl/index.d.ts +0 -5
  234. package/dist/wirings/workflow/dsl/index.js +0 -4
  235. package/dist/wirings/workflow/graph/index.d.ts +0 -5
  236. package/dist/wirings/workflow/graph/index.js +0 -4
  237. /package/dist/{services/user-flow-actors-service.js → wirings/workflow/scenario.types.js} +0 -0
@@ -53,7 +53,6 @@
53
53
  "addGlobalPermission",
54
54
  "addTagMiddleware",
55
55
  "assertSecretAllowedForHost",
56
- "beginChanges",
57
56
  "checkAuthPermissions",
58
57
  "clearPikkuRuntimeState",
59
58
  "createGraph",
@@ -61,7 +60,6 @@
61
60
  "createSecretValue",
62
61
  "fetch",
63
62
  "formatVersionedId",
64
- "getAbortScope",
65
63
  "getAllFunctionNames",
66
64
  "getRelativeTimeOffsetFromNow",
67
65
  "hasScopes",
@@ -83,14 +81,8 @@
83
81
  "pikkuPermission",
84
82
  "pikkuPermissionFactory",
85
83
  "pikkuServerLifecycle",
86
- "resolveAuditConfig",
87
- "resolveAuditUserIdentityFromWire",
88
- "runInAbortScope",
89
84
  "runMiddleware",
90
85
  "stopSingletonServices",
91
- "unsafeAsHashed",
92
- "unsafeAsSealed",
93
- "unsafeAsWrapped",
94
86
  "verifyScopes",
95
87
  "wireAddon",
96
88
  "wireRemoteAddon",
@@ -119,9 +111,6 @@
119
111
  "pikkuPermissionFactory"
120
112
  ],
121
113
  "./channel": [
122
- "CHANNEL_RPC_PENDING",
123
- "CHANNEL_RPC_REQUEST",
124
- "CHANNEL_RPC_RESPONSE",
125
114
  "ChannelDeploymentService",
126
115
  "ChannelRPCError",
127
116
  "ChannelRPCRegistry",
@@ -129,29 +118,16 @@
129
118
  "EventHubStore",
130
119
  "PikkuAbstractChannelHandler",
131
120
  "addChannelMiddleware",
132
- "channelRemote",
133
121
  "combineChannelMiddleware",
134
- "createChannelRPCInputValidator",
135
- "createChannelRPCResponder",
136
- "createChannelRPCResultValidator",
137
122
  "defineChannelRoutes",
138
- "getChannelHostRPC",
139
- "handleChannelRPCResponse",
140
- "isChannelRPCPending",
141
- "isChannelRPCRequest",
142
- "isChannelRPCResponse",
143
123
  "logChannels",
144
- "openChannel",
145
- "releaseChannelHostRPC",
146
- "resolveCapability",
147
124
  "unsupportedChannelRemote",
148
- "wireChannel",
149
- "wrapChannelWithMiddleware"
125
+ "wireChannel"
150
126
  ],
151
127
  "./workflow": [
152
128
  "DEFAULT_STEP_RETRIES",
153
129
  "PikkuWorkflowService",
154
- "SCENARIO_SURFACES",
130
+ "WorkflowApprovalForbiddenError",
155
131
  "WorkflowApprovalResolvedError",
156
132
  "WorkflowCancelledException",
157
133
  "WorkflowDispatchException",
@@ -160,39 +136,36 @@
160
136
  "WorkflowRunNotFoundError",
161
137
  "WorkflowStepFunctionMismatchError",
162
138
  "WorkflowSuspendedException",
163
- "addFeature",
164
139
  "addWorkflow",
165
140
  "assertWorkflowRunOwner",
166
141
  "buildRunTimeline",
167
- "composeStepProse",
168
- "createCookieJar",
169
142
  "deriveInvocationId",
170
143
  "isRef",
171
144
  "pikkuWorkflowGraph",
172
- "pikkuWorkflowOrchestratorFunc",
173
- "pikkuWorkflowSleeperFunc",
174
- "pikkuWorkflowWorkerFunc",
175
- "pollUntil",
176
145
  "reconstructFinalState",
177
146
  "reconstructStateAt",
178
- "renderStepTemplate",
179
- "requireActor",
180
- "requireScenarioEnv",
181
- "resolveFeatureScenarios",
182
- "resolveScenarioSurfaces",
183
147
  "template",
184
- "uuidv5",
185
- "witnessesAgree"
148
+ "uuidv5"
186
149
  ],
187
150
  "./scenario": [
188
151
  "PikkuScenarioService",
152
+ "SCENARIO_SURFACES",
189
153
  "ScenarioBrowserActorRequired",
190
154
  "ScenarioBrowserUnavailable",
191
155
  "ScenarioHookError",
192
156
  "ScenarioNoSurfaceBinding",
193
157
  "ScenarioNoWitness",
194
158
  "ScenarioWitnessDisagreement",
195
- "createScenarioRunner"
159
+ "addFeature",
160
+ "composeStepProse",
161
+ "createCookieJar",
162
+ "createScenarioRunner",
163
+ "pollUntil",
164
+ "renderStepTemplate",
165
+ "requireActor",
166
+ "requireScenarioEnv",
167
+ "resolveFeatureScenarios",
168
+ "resolveScenarioSurfaces"
196
169
  ],
197
170
  "./workflow/timeline": [
198
171
  "buildRunTimeline",
@@ -200,28 +173,24 @@
200
173
  "reconstructStateAt"
201
174
  ],
202
175
  "./workflow/types": [],
203
- "./actor-flow": ["runConversation"],
176
+ "./actor-flow": [
177
+ "runConversation"
178
+ ],
204
179
  "./virtual-user": [
205
180
  "DISPOSITIONS",
206
181
  "IntentStack",
207
182
  "PRODUCTION_DISPOSITION",
208
183
  "catalogueClassification",
209
- "catalogueIndex",
210
184
  "catalogueLookup",
211
- "createRng",
212
185
  "deriveCatalogue",
213
186
  "deriveIntents",
214
- "describeEntry",
215
187
  "dispositionProfile",
216
188
  "intentsForPersona",
217
189
  "isReadOnly",
218
190
  "personaScopes",
219
191
  "personaVirtualUserTarget",
220
192
  "prepareVirtualUserRun",
221
- "reachableAgents",
222
193
  "reachableCatalogue",
223
- "rememberIds",
224
- "renderCatalogue",
225
194
  "runVirtualUser",
226
195
  "unreachableCatalogue"
227
196
  ],
@@ -249,23 +218,15 @@
249
218
  "wireHTTP",
250
219
  "wireHTTPRoutes"
251
220
  ],
252
- "./remote": ["buildRemoteHeaders"],
221
+ "./remote": [
222
+ "buildRemoteHeaders"
223
+ ],
253
224
  "./queue": [
254
- "QUEUE_IDENTITY_CLAIM_VERSION",
255
- "QUEUE_IDENTITY_INFO",
256
- "QUEUE_IDENTITY_SECRET_NAME",
257
225
  "QueueJobDiscardedError",
258
226
  "QueueJobFailedError",
259
227
  "SignedQueueService",
260
- "getQueueIdentitySecret",
261
- "getQueueWorkers",
262
228
  "registerQueueWorkers",
263
- "removeQueueWorker",
264
- "resolveQueueJobIdentity",
265
229
  "runQueueJob",
266
- "signQueueIdentity",
267
- "validateWorkerConfig",
268
- "verifyQueueIdentity",
269
230
  "wireQueueWorker"
270
231
  ],
271
232
  "./scheduler": [
@@ -274,7 +235,11 @@
274
235
  "runScheduledTask",
275
236
  "wireScheduler"
276
237
  ],
277
- "./trigger": ["PikkuTriggerService", "wireTrigger", "wireTriggerSource"],
238
+ "./trigger": [
239
+ "PikkuTriggerService",
240
+ "wireTrigger",
241
+ "wireTriggerSource"
242
+ ],
278
243
  "./rpc": [
279
244
  "PikkuRPCService",
280
245
  "RPCNotFoundError",
@@ -292,7 +257,10 @@
292
257
  "safeFetch",
293
258
  "setDefaultHostResolver"
294
259
  ],
295
- "./node-host-resolver": ["installNodeHostResolver", "nodeHostResolver"],
260
+ "./node-host-resolver": [
261
+ "installNodeHostResolver",
262
+ "nodeHostResolver"
263
+ ],
296
264
  "./mcp": [
297
265
  "MCPEndpointRegistry",
298
266
  "MCPError",
@@ -318,34 +286,33 @@
318
286
  "agentInterrupt",
319
287
  "agentResume",
320
288
  "agentStream",
321
- "approveAIAgent",
322
- "awaitPendingInterruptNote",
323
289
  "canAccessThread",
324
- "getAIAgents",
325
- "getAIAgentsMeta",
326
- "getInFlightTools",
327
290
  "interruptAIAgent",
328
- "isAbortError",
329
291
  "isOwnedByPrincipal",
330
- "isRunInterruptible",
331
- "persistOrphanedToolResults",
332
- "readsAsNonSpeech",
333
- "registerInterruptibleRun",
292
+ "resolveModelAlias",
334
293
  "resumeAIAgent",
335
294
  "resumeAIAgentSync",
336
295
  "runAIAgent",
337
- "sessionPrincipals",
338
296
  "signalRunInterrupt",
339
297
  "streamAIAgent",
340
298
  "threadOwnerConstraint",
341
- "trackInterruptNote",
342
- "trackToolExecution",
343
299
  "unspeakableScripts",
344
300
  "voiceForText",
345
301
  "voiceInput",
346
302
  "voiceOutput",
347
303
  "wrapChannelWithAGUI"
348
304
  ],
305
+ "./ai-scorer": [
306
+ "addAIScorer",
307
+ "enableScoreSnapshots",
308
+ "getAIScorers",
309
+ "getAIScorersMeta",
310
+ "getScoreSnapshot",
311
+ "gradeRun",
312
+ "pikkuAIJudge",
313
+ "pikkuAIScorer",
314
+ "wireAIScorerQueueWorkers"
315
+ ],
349
316
  "./gateway": [
350
317
  "createListenerMessageHandler",
351
318
  "resolveGatewayAdapter",
@@ -361,15 +328,14 @@
361
328
  "runCLICommand",
362
329
  "wireCLI"
363
330
  ],
364
- "./cli/command-parser": ["generateCommandHelp", "parseCLIArguments"],
331
+ "./cli/command-parser": [
332
+ "generateCommandHelp",
333
+ "parseCLIArguments"
334
+ ],
365
335
  "./cli/channel": [
366
- "APPROVAL_FLAGS",
367
- "approverForMode",
368
- "createTerminalApprover",
369
336
  "executeCLIViaChannel",
370
337
  "executeRawCLIViaChannel",
371
- "handleRawCLI",
372
- "takeApprovalFlags"
338
+ "handleRawCLI"
373
339
  ],
374
340
  "./node": [],
375
341
  "./credential": [
@@ -388,27 +354,28 @@
388
354
  ],
389
355
  "./persona": [
390
356
  "HttpPersona",
391
- "allowedLinks",
392
- "applyMailboxAllowlist",
393
357
  "createHttpPersonas",
394
358
  "definePersonas",
395
- "isAllowedSender",
396
359
  "isRunnablePersona",
397
360
  "personaEmail",
398
- "personaEmailLabel",
399
361
  "personaEmails",
400
362
  "personaEnvironmentErrors",
401
363
  "personaEnvironmentRefusal",
402
364
  "postScenarioJson",
403
365
  "readScenarioHttpResponse",
404
- "resolvePersonaEnvironments",
405
366
  "roleMismatchMessage",
406
367
  "runnablePersonas",
407
368
  "validateAndBuildPersonasMeta",
408
369
  "verifyPersonaRoles"
409
370
  ],
410
- "./secret": ["defineSecret", "validateAndBuildSecretDefinitionsMeta"],
411
- "./variable": ["defineVariable", "validateAndBuildVariableDefinitionsMeta"],
371
+ "./secret": [
372
+ "defineSecret",
373
+ "validateAndBuildSecretDefinitionsMeta"
374
+ ],
375
+ "./variable": [
376
+ "defineVariable",
377
+ "validateAndBuildVariableDefinitionsMeta"
378
+ ],
412
379
  "./oauth2": [],
413
380
  "./errors": [
414
381
  "AIProviderAuthError",
@@ -456,13 +423,11 @@
456
423
  "UnprocessableContentError",
457
424
  "UnsupportedMediaTypeError",
458
425
  "WeakKeyMaterialError",
459
- "addError",
460
- "addErrors"
426
+ "addError"
461
427
  ],
462
428
  "./services": [
463
429
  "ConsoleLogger",
464
430
  "DEFAULT_WEBHOOK_RETRIES",
465
- "DEFAULT_WEBHOOK_SIGNATURE_HEADER",
466
431
  "InMemoryAIRunStateService",
467
432
  "InMemoryQueueService",
468
433
  "InMemorySessionStore",
@@ -480,6 +445,7 @@
480
445
  "PikkuCredentialWireService",
481
446
  "PikkuSessionService",
482
447
  "QueueWebhookService",
448
+ "ScopedCredentialService",
483
449
  "ScopedSecretService",
484
450
  "SecretHostNotAllowedError",
485
451
  "StubTracker",
@@ -487,28 +453,29 @@
487
453
  "TypedSecretService",
488
454
  "TypedVariablesService",
489
455
  "WebhookService",
490
- "assertRoleIsMutable",
491
- "assertRoleNameAvailable",
492
456
  "assertSecretAllowedForHost",
493
- "createFunctionSessionWireProps",
494
457
  "createInvocationAudit",
495
- "createMiddlewareCredentialWireProps",
496
458
  "createMiddlewareSessionWireProps",
497
459
  "createStubProxy",
498
- "createWireServicesCredentialWireProps",
499
460
  "getStubTracker",
500
461
  "isTestRun",
501
462
  "pikkuWebhookWorkerFunc",
502
- "resolveAuditConfig",
503
- "resolveAuditUserIdentityFromWire",
504
- "roleLockReason",
505
463
  "spy",
506
464
  "stub"
507
465
  ],
508
- "./services/local-meta": ["LocalMetaService"],
509
- "./services/v8-coverage": ["V8CoverageService"],
510
- "./services/istanbul-coverage": ["IstanbulCoverageService"],
511
- "./services/local-content": ["LocalContent", "signedContentPath"],
466
+ "./services/local-meta": [
467
+ "LocalMetaService"
468
+ ],
469
+ "./services/v8-coverage": [
470
+ "V8CoverageService"
471
+ ],
472
+ "./services/istanbul-coverage": [
473
+ "IstanbulCoverageService"
474
+ ],
475
+ "./services/local-content": [
476
+ "LocalContent",
477
+ "signedContentPath"
478
+ ],
512
479
  "./services/local-content-request-handler": [
513
480
  "createLocalContentRequestHandler",
514
481
  "verifySignedContentRequest"
@@ -538,21 +505,11 @@
538
505
  "verifyWithKeyMaterial",
539
506
  "wrapDEK"
540
507
  ],
541
- "./hmac": ["hmacSha256Hex", "timingSafeStringEqual"],
542
- "./ecosystem": [
543
- "addFunction",
544
- "addGlobalMiddleware",
545
- "addMiddleware",
546
- "getAllPackageStates",
547
- "getCreateWireServices",
548
- "getSingletonServices",
549
- "httpRouter",
550
- "pikkuState",
551
- "resetPikkuState",
552
- "runPikkuFunc",
553
- "setSingletonServices"
508
+ "./hmac": [
509
+ "hmacSha256Hex",
510
+ "timingSafeStringEqual"
554
511
  ],
555
- "./internal": [
512
+ "./ecosystem": [
556
513
  "addFunction",
557
514
  "addGlobalMiddleware",
558
515
  "addMiddleware",
@@ -573,6 +530,12 @@
573
530
  "getSchema",
574
531
  "validateSchema"
575
532
  ],
576
- "./testing": ["defineServiceTests"],
577
- "./dev": ["pikkuDevReloader", "reconcileAddonRegistry", "reloadGeneratedMeta"]
533
+ "./testing": [
534
+ "defineServiceTests"
535
+ ],
536
+ "./dev": [
537
+ "pikkuDevReloader",
538
+ "reconcileAddonRegistry",
539
+ "reloadGeneratedMeta"
540
+ ]
578
541
  }
@@ -52,7 +52,18 @@ export type AIAgentStepResult = {
52
52
  text: string
53
53
  object?: unknown
54
54
  toolCalls: { toolCallId: string; toolName: string; args: unknown }[]
55
- toolResults: { toolCallId: string; toolName: string; result: 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
+ }[]
56
67
  usage: { inputTokens: number; outputTokens: number }
57
68
  finishReason: 'stop' | 'tool-calls' | 'length' | 'error' | 'unknown'
58
69
  reasoningContent?: string
@@ -2,9 +2,12 @@ import type {
2
2
  AgentRunState,
3
3
  PendingApproval,
4
4
  } from '../wirings/ai-agent/ai-agent.types.js'
5
+ import type { AIRunScore } from '../wirings/ai-scorer/ai-scorer.types.js'
5
6
 
6
7
  export type CreateRunInput = Omit<AgentRunState, 'runId'>
7
8
 
9
+ export type SaveScoreInput = Omit<AIRunScore, 'createdAt'>
10
+
8
11
  export interface AIRunStateService {
9
12
  createRun(run: CreateRunInput): Promise<string>
10
13
  updateRun(runId: string, updates: Partial<AgentRunState>): Promise<void>
@@ -23,4 +26,12 @@ export interface AIRunStateService {
23
26
  findRunByToolCallId(
24
27
  toolCallId: string
25
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<AIRunScore[]>
26
37
  }
@@ -1,14 +1,17 @@
1
1
  import type {
2
2
  AIRunStateService,
3
3
  CreateRunInput,
4
+ SaveScoreInput,
4
5
  } from './ai-run-state-service.js'
5
6
  import type {
6
7
  AgentRunState,
7
8
  PendingApproval,
8
9
  } from '../wirings/ai-agent/ai-agent.types.js'
10
+ import type { AIRunScore } from '../wirings/ai-scorer/ai-scorer.types.js'
9
11
 
10
12
  export class InMemoryAIRunStateService implements AIRunStateService {
11
13
  private runs = new Map<string, AgentRunState>()
14
+ private scores = new Map<string, AIRunScore[]>()
12
15
  private counter = 0
13
16
 
14
17
  async createRun(run: CreateRunInput): Promise<string> {
@@ -71,4 +74,14 @@ export class InMemoryAIRunStateService implements AIRunStateService {
71
74
  }
72
75
  return null
73
76
  }
77
+
78
+ async saveScore(score: SaveScoreInput): Promise<void> {
79
+ const existing = this.scores.get(score.runId) ?? []
80
+ existing.push({ ...score, createdAt: new Date() })
81
+ this.scores.set(score.runId, existing)
82
+ }
83
+
84
+ async getScores(runId: string): Promise<AIRunScore[]> {
85
+ return [...(this.scores.get(runId) ?? [])]
86
+ }
74
87
  }
@@ -1,16 +1,12 @@
1
1
  export { LogLevel } from './logger.js'
2
2
  export { ScopedSecretService } from './scoped-secret-service.js'
3
+ export { ScopedCredentialService } from './scoped-credential-service.js'
3
4
  export {
4
5
  PikkuSessionService,
5
6
  createMiddlewareSessionWireProps,
6
- createFunctionSessionWireProps,
7
7
  } from './user-session-service.js'
8
8
  export { TypedSecretService } from './typed-secret-service.js'
9
- export {
10
- PikkuCredentialWireService,
11
- createMiddlewareCredentialWireProps,
12
- createWireServicesCredentialWireProps,
13
- } from './credential-wire-service.js'
9
+ export { PikkuCredentialWireService } from './credential-wire-service.js'
14
10
  export { TypedVariablesService } from './typed-variables-service.js'
15
11
  export { LocalSecretService } from './local-secrets.js'
16
12
  export { LocalEmailService } from './local-email-service.js'
@@ -39,18 +35,12 @@ export type {
39
35
  export type {
40
36
  ScenarioPersona,
41
37
  ResolvedPersona,
42
- ScenarioPersonaOf,
43
38
  ScenarioPersonas,
44
- ScenarioInvokeOptions,
45
- ScenarioRpcMap,
46
- ScenarioHttpResponse,
47
39
  } from './personas-service.js'
48
40
  // knowledge: decisions/internals/the-persona-runtime-is-exported-from-the-persona-entry-point.md
49
- export type { HttpPersonasConfig } from './http-personas.js'
50
41
  export type { JWTService } from './jwt-service.js'
51
42
  export type {
52
43
  EmailService,
53
- EmailTemplateReference,
54
44
  SendEmailInput,
55
45
  SendEmailResult,
56
46
  SendHTMLEmailInput,
@@ -59,12 +49,10 @@ export type {
59
49
  } from './email-service.js'
60
50
  export {
61
51
  DEFAULT_WEBHOOK_RETRIES,
62
- DEFAULT_WEBHOOK_SIGNATURE_HEADER,
63
52
  PIKKU_OUTGOING_WEBHOOK_QUEUE_NAME,
64
53
  WebhookService,
65
54
  type SendWebhookInput,
66
55
  type SendWebhookResult,
67
- type WebhookAttemptRecord,
68
56
  type WebhookAttemptResult,
69
57
  type WebhookDeliveryRecord,
70
58
  type WebhookDeliveryWithAttempts,
@@ -94,63 +82,31 @@ export type {
94
82
  AIAgentRunnerParams,
95
83
  AIAgentRunnerResult,
96
84
  AIAgentStepResult,
97
- AIEmbedManyParams,
98
- AIEmbedManyResult,
99
- AIEmbedParams,
100
- AIEmbedResult,
101
- AIGenerateImageParams,
102
- AIGenerateImagePrompt,
103
- AIGenerateImageResult,
104
- AIGenerateSpeechParams,
105
- AIGenerateSpeechResult,
106
- AIProviderOptions,
107
- AIRerankParams,
108
- AIRerankResult,
109
- AITranscriptionParams,
110
- AITranscriptionResult,
111
85
  AIAgentRunnerService,
112
86
  } from './ai-agent-runner-service.js'
113
87
  export type { AIEmbeddingService } from './ai-embedding-service.js'
114
88
  export type {
115
89
  CreateRunInput,
90
+ SaveScoreInput,
116
91
  AIRunStateService,
117
92
  } from './ai-run-state-service.js'
118
- export type {
119
- CredentialStatus,
120
- CredentialMeta,
121
- } from './typed-secret-service.js'
93
+ export type { CredentialMeta } from './typed-secret-service.js'
122
94
  export type { CredentialService } from './credential-service.js'
123
95
  export { TypedCredentialService } from './typed-credential-service.js'
124
- export type {
125
- CredentialStatusInfo,
126
- CredentialMetaInfo,
127
- } from './typed-credential-service.js'
128
- export type { VariableStatus, VariableMeta } from './typed-variables-service.js'
96
+ export type { CredentialMetaInfo } from './typed-credential-service.js'
97
+ export type { VariableMeta } from './typed-variables-service.js'
129
98
  export type { MetaService } from './meta-service.js'
130
99
  export type { SessionStore } from './session-store.js'
131
100
  export type { ScopeService, Role } from './scope-service.js'
132
- export {
133
- assertRoleIsMutable,
134
- assertRoleNameAvailable,
135
- roleLockReason,
136
- } from './system-role-guard.js'
137
101
  export type { IsSystemRole } from './system-role-guard.js'
138
- export {
139
- NoopAuditService,
140
- createInvocationAudit,
141
- resolveAuditConfig,
142
- resolveAuditUserIdentityFromWire,
143
- } from './audit-service.js'
102
+ export { NoopAuditService, createInvocationAudit } from './audit-service.js'
144
103
  export type {
145
104
  AuditConfig,
146
105
  AuditDurability,
147
106
  AuditEvent,
148
107
  AuditEventBatch,
149
108
  AuditLog,
150
- AuditLogWriteInput,
151
- AuditOutcome,
152
109
  AuditService,
153
- AuditSource,
154
110
  AuditUserIdentity,
155
111
  ResolvedAuditConfig,
156
112
  } from './audit-service.js'
@@ -174,17 +130,10 @@ export type {
174
130
  AgentMeta,
175
131
  EmailsMeta,
176
132
  EmailTemplateMeta,
177
- EmailTemplateLocaleMeta,
178
- EmailTemplateAssets,
179
133
  } from './meta-service.js'
180
134
  export type {
181
135
  CoverageService,
182
- CoverageSnapshot,
183
- LineHits,
184
136
  ScriptCoverage,
185
- FunctionCoverage,
186
- CoverageRange,
187
- CoverageStatus,
188
137
  FunctionCoverageEntry,
189
138
  FunctionCoverageReport,
190
139
  CoverageFunctionMeta,
@@ -13,10 +13,8 @@ import type {
13
13
  MCPToolMeta,
14
14
  MCPPromptMeta,
15
15
  } from '../wirings/mcp/mcp.types.js'
16
- import type {
17
- FeaturesMeta,
18
- WorkflowsMeta,
19
- } from '../wirings/workflow/workflow.types.js'
16
+ import type { WorkflowsMeta } from '../wirings/workflow/workflow.types.js'
17
+ import type { FeaturesMeta } from '../wirings/workflow/scenario.types.js'
20
18
  import type { ResolvedPersona } from './personas-service.js'
21
19
  import type { SystemRoleDefinitionsMeta } from '../wirings/role/role.types.js'
22
20
  import type {