@jr2/orchestrator 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/console/components/app.ts +55 -15
  2. package/console/components/bottom-drawer.ts +259 -0
  3. package/console/components/drawer.ts +14 -6
  4. package/console/components/fleet.ts +36 -13
  5. package/console/components/machine-pane.ts +61 -5
  6. package/console/components/nav.ts +54 -8
  7. package/console/conversation.ts +161 -0
  8. package/console/login.ts +123 -0
  9. package/console/main.ts +600 -60
  10. package/console/store.ts +611 -64
  11. package/console/style.css +231 -0
  12. package/docs/agents-block.md +2 -2
  13. package/docs/concepts/agents-and-turns.md +86 -9
  14. package/docs/concepts/architecture.md +41 -28
  15. package/docs/concepts/callers-and-hooks.md +205 -0
  16. package/docs/concepts/charts.md +7 -5
  17. package/docs/concepts/composition.md +10 -1
  18. package/docs/concepts/converge.md +4 -2
  19. package/docs/concepts/durable-runs.md +43 -16
  20. package/docs/concepts/effects.md +50 -22
  21. package/docs/concepts/gates.md +95 -25
  22. package/docs/concepts/machines-and-workflows.md +5 -4
  23. package/docs/concepts/pools-and-sources.md +187 -11
  24. package/docs/concepts/secrets-and-trust.md +73 -33
  25. package/docs/concepts/the-menu.md +11 -0
  26. package/docs/concepts/workspaces.md +6 -5
  27. package/docs/get-started/a-model-decides.md +14 -13
  28. package/docs/get-started/an-agent-in-a-sandbox.md +43 -34
  29. package/docs/get-started/connect-a-model.md +1 -1
  30. package/docs/get-started/create-an-instance.md +17 -14
  31. package/docs/guides/add-tools-to-the-sandbox.md +55 -11
  32. package/docs/guides/answer-a-gate-from-a-forge.md +304 -0
  33. package/docs/guides/answer-a-gate.md +74 -37
  34. package/docs/guides/bind-open-parts.md +24 -8
  35. package/docs/guides/call-an-mcp-tool-from-a-machine.md +572 -0
  36. package/docs/guides/cancel-a-run.md +26 -16
  37. package/docs/guides/fix-a-failed-converge.md +18 -6
  38. package/docs/guides/give-a-caller-a-scope.md +203 -0
  39. package/docs/guides/give-an-agent-mcp-tools.md +422 -0
  40. package/docs/guides/iterate-on-a-machine-on-kind.md +10 -9
  41. package/docs/guides/let-an-agent-write-a-chart.md +9 -6
  42. package/docs/guides/look-inside-a-sandbox.md +101 -31
  43. package/docs/guides/open-the-console.md +63 -14
  44. package/docs/guides/read-a-conversation.md +225 -0
  45. package/docs/guides/run-a-chart-by-name.md +17 -16
  46. package/docs/guides/run-one-worker-per-item.md +15 -9
  47. package/docs/guides/set-an-agents-access-and-dials.md +2 -0
  48. package/docs/guides/start-a-run-for-each-alert.md +290 -0
  49. package/docs/guides/start-a-run-from-a-run.md +18 -16
  50. package/docs/guides/start-a-run.md +24 -18
  51. package/docs/guides/steer-an-agent.md +332 -0
  52. package/docs/guides/use-a-hosted-provider.md +1 -1
  53. package/docs/guides/watch-a-run.md +127 -121
  54. package/docs/guides/write-a-hook-kind.md +238 -0
  55. package/docs/guides/write-a-tool-as-an-mcp-server.md +351 -0
  56. package/docs/guides/write-a-workflow.md +17 -7
  57. package/docs/llms.txt +81 -15
  58. package/docs/reference/authoring-surface/agent.md +1 -1
  59. package/docs/reference/authoring-surface/answer.md +1 -1
  60. package/docs/reference/authoring-surface/arg.md +1 -1
  61. package/docs/reference/authoring-surface/basic.md +1 -1
  62. package/docs/reference/authoring-surface/bearer.md +1 -1
  63. package/docs/reference/authoring-surface/branchname.md +1 -1
  64. package/docs/reference/authoring-surface/carry.md +23 -0
  65. package/docs/reference/authoring-surface/chartschema.md +1 -1
  66. package/docs/reference/authoring-surface/chartschemafor.md +1 -1
  67. package/docs/reference/authoring-surface/command.md +1 -1
  68. package/docs/reference/authoring-surface/customize.md +4 -1
  69. package/docs/reference/authoring-surface/defineconfig.md +1 -1
  70. package/docs/reference/authoring-surface/defineevent.md +1 -1
  71. package/docs/reference/authoring-surface/dispatch.md +5 -4
  72. package/docs/reference/authoring-surface/fail.md +1 -1
  73. package/docs/reference/authoring-surface/file.md +1 -1
  74. package/docs/reference/authoring-surface/frompick.md +1 -1
  75. package/docs/reference/authoring-surface/gate.md +118 -0
  76. package/docs/reference/authoring-surface/group-agents.md +15 -0
  77. package/docs/reference/authoring-surface/group-charts.md +16 -0
  78. package/docs/reference/authoring-surface/group-composition.md +25 -0
  79. package/docs/reference/authoring-surface/group-config.md +17 -0
  80. package/docs/reference/authoring-surface/group-effects.md +48 -0
  81. package/docs/reference/authoring-surface/group-failure.md +13 -0
  82. package/docs/reference/authoring-surface/group-gates.md +16 -0
  83. package/docs/reference/authoring-surface/group-machine-and-events.md +15 -0
  84. package/docs/reference/authoring-surface/group-steering.md +12 -0
  85. package/docs/reference/authoring-surface/group-types-these-signatures-name.md +137 -0
  86. package/docs/reference/authoring-surface/group-workspaces-and-repos.md +15 -0
  87. package/docs/reference/authoring-surface/http.md +1 -1
  88. package/docs/reference/authoring-surface/isfailure.md +1 -1
  89. package/docs/reference/authoring-surface/isready.md +1 -1
  90. package/docs/reference/authoring-surface/jr2setup.md +13 -3
  91. package/docs/reference/authoring-surface/mcp.md +107 -0
  92. package/docs/reference/authoring-surface/open.md +5 -3
  93. package/docs/reference/authoring-surface/openbody.md +1 -1
  94. package/docs/reference/authoring-surface/paramsof.md +1 -1
  95. package/docs/reference/authoring-surface/pool.md +77 -9
  96. package/docs/reference/authoring-surface/push.md +1 -1
  97. package/docs/reference/authoring-surface/readyof.md +1 -1
  98. package/docs/reference/authoring-surface/reread.md +19 -0
  99. package/docs/reference/authoring-surface/secret.md +1 -1
  100. package/docs/reference/authoring-surface/sentby.md +1 -1
  101. package/docs/reference/authoring-surface/skip.md +22 -0
  102. package/docs/reference/authoring-surface/source.md +56 -1
  103. package/docs/reference/authoring-surface/steer.md +93 -0
  104. package/docs/reference/authoring-surface/text.md +1 -1
  105. package/docs/reference/authoring-surface/type-agentdefinition.md +14 -1
  106. package/docs/reference/authoring-surface/type-agentmcpserver.md +54 -0
  107. package/docs/reference/authoring-surface/type-anyframepath.md +1 -1
  108. package/docs/reference/authoring-surface/type-anyworktreepath.md +1 -1
  109. package/docs/reference/authoring-surface/type-binding.md +1 -1
  110. package/docs/reference/authoring-surface/type-caller.md +40 -0
  111. package/docs/reference/authoring-surface/type-callerrecord.md +32 -0
  112. package/docs/reference/authoring-surface/type-carry.md +19 -0
  113. package/docs/reference/authoring-surface/type-chainlink.md +3 -3
  114. package/docs/reference/authoring-surface/type-commandoutput.md +1 -1
  115. package/docs/reference/authoring-surface/type-customize.md +16 -1
  116. package/docs/reference/authoring-surface/type-delivered.md +17 -0
  117. package/docs/reference/authoring-surface/type-deliveredevent.md +18 -0
  118. package/docs/reference/authoring-surface/type-dispatchdefinition.md +4 -3
  119. package/docs/reference/authoring-surface/type-dispatchoutput.md +1 -1
  120. package/docs/reference/authoring-surface/type-effectbinding.md +12 -2
  121. package/docs/reference/authoring-surface/type-framepath.md +1 -1
  122. package/docs/reference/authoring-surface/type-gatebinding.md +15 -0
  123. package/docs/reference/authoring-surface/type-gatehooks.md +12 -0
  124. package/docs/reference/authoring-surface/type-gatelook.md +37 -0
  125. package/docs/reference/authoring-surface/type-gateoutcome.md +32 -0
  126. package/docs/reference/authoring-surface/type-gatereply.md +19 -0
  127. package/docs/reference/authoring-surface/type-gateslot.md +21 -0
  128. package/docs/reference/authoring-surface/type-gateslotinput.md +13 -0
  129. package/docs/reference/authoring-surface/type-gateslotparts.md +18 -0
  130. package/docs/reference/authoring-surface/type-gateslots.md +12 -0
  131. package/docs/reference/authoring-surface/type-gatetypesat.md +13 -0
  132. package/docs/reference/authoring-surface/type-hostinjectedinput.md +1 -1
  133. package/docs/reference/authoring-surface/type-httpoutput.md +1 -1
  134. package/docs/reference/authoring-surface/type-jr2config.md +37 -2
  135. package/docs/reference/authoring-surface/type-lateroutcome.md +1 -1
  136. package/docs/reference/authoring-surface/type-lends.md +5 -1
  137. package/docs/reference/authoring-surface/type-lookoutput.md +14 -0
  138. package/docs/reference/authoring-surface/type-mcpcalloutput.md +78 -0
  139. package/docs/reference/authoring-surface/type-mcpnotreturned.md +42 -0
  140. package/docs/reference/authoring-surface/type-mcpoptions.md +47 -0
  141. package/docs/reference/authoring-surface/type-mcpoutput.md +50 -0
  142. package/docs/reference/authoring-surface/type-mcpreadoutput.md +53 -0
  143. package/docs/reference/authoring-surface/type-mcpremoteserver.md +50 -0
  144. package/docs/reference/authoring-surface/type-mcpserver.md +41 -0
  145. package/docs/reference/authoring-surface/type-mcpstdioserver.md +42 -0
  146. package/docs/reference/authoring-surface/type-namedsecret.md +4 -4
  147. package/docs/reference/authoring-surface/type-openbodydeclaration.md +1 -1
  148. package/docs/reference/authoring-surface/type-openbodyoutput.md +1 -1
  149. package/docs/reference/authoring-surface/type-poolnextinput.md +1 -1
  150. package/docs/reference/authoring-surface/type-poolspec.md +11 -6
  151. package/docs/reference/authoring-surface/type-pushoutput.md +1 -1
  152. package/docs/reference/authoring-surface/type-pushsourcespec.md +38 -0
  153. package/docs/reference/authoring-surface/type-readsourcespec.md +47 -0
  154. package/docs/reference/authoring-surface/type-reposlot.md +1 -1
  155. package/docs/reference/authoring-surface/type-reread.md +18 -0
  156. package/docs/reference/authoring-surface/type-runsconfig.md +41 -0
  157. package/docs/reference/authoring-surface/type-sender.md +26 -1
  158. package/docs/reference/authoring-surface/type-sendercallerfield.md +14 -0
  159. package/docs/reference/authoring-surface/type-size.md +1 -1
  160. package/docs/reference/authoring-surface/type-skip.md +19 -0
  161. package/docs/reference/authoring-surface/type-sourcehooks.md +23 -0
  162. package/docs/reference/authoring-surface/type-sourcein.md +25 -0
  163. package/docs/reference/authoring-surface/type-sourcereply.md +18 -0
  164. package/docs/reference/authoring-surface/type-sourcespec.md +16 -7
  165. package/docs/reference/authoring-surface/type-sourceverdict.md +49 -0
  166. package/docs/reference/authoring-surface/type-standingpoolmachine.md +12 -0
  167. package/docs/reference/authoring-surface/type-standingpoolspec.md +51 -0
  168. package/docs/reference/authoring-surface/type-steerargs.md +20 -0
  169. package/docs/reference/authoring-surface/type-thinkinglevel.md +1 -1
  170. package/docs/reference/authoring-surface/type-usercontainer.md +1 -1
  171. package/docs/reference/authoring-surface/type-workspaced.md +1 -1
  172. package/docs/reference/authoring-surface/type-worktreefound.md +3 -3
  173. package/docs/reference/authoring-surface/type-worktreeinput.md +1 -1
  174. package/docs/reference/authoring-surface/type-worktreeoptions.md +1 -1
  175. package/docs/reference/authoring-surface/type-worktreeoutput.md +1 -1
  176. package/docs/reference/authoring-surface/type-worktreepath.md +1 -1
  177. package/docs/reference/authoring-surface/type-worktreeready.md +1 -1
  178. package/docs/reference/authoring-surface/type-worktreerefused.md +4 -4
  179. package/docs/reference/authoring-surface/workspace.md +1 -1
  180. package/docs/reference/authoring-surface/worktree.md +1 -1
  181. package/docs/reference/authoring-surface.md +88 -167
  182. package/docs/reference/cli.md +413 -74
  183. package/docs/reference/config.md +235 -2
  184. package/docs/reference/decisions/0002-duplex-streaming-actor.md +71 -11
  185. package/docs/reference/decisions/0005-sandbox-pod-composition.md +14 -10
  186. package/docs/reference/decisions/0006-agent-control-surface.md +4 -4
  187. package/docs/reference/decisions/0007-durable-machine-state.md +1 -1
  188. package/docs/reference/decisions/0009-cli-and-instance-interface.md +150 -49
  189. package/docs/reference/decisions/0010-bdd-acceptance-tests.md +5 -3
  190. package/docs/reference/decisions/0011-workflow-defined-events.md +256 -12
  191. package/docs/reference/decisions/0012-workspace-wrapper-machine.md +9 -2
  192. package/docs/reference/decisions/0013-the-agent-reaches-its-machine-through-a-container-it-cannot-read.md +20 -14
  193. package/docs/reference/decisions/0014-observation-is-open-run-state-is-not.md +53 -27
  194. package/docs/reference/decisions/0015-authoring-surface-absorbs-the-mechanism.md +18 -14
  195. package/docs/reference/decisions/0017-pool-over-a-source-port.md +226 -12
  196. package/docs/reference/decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md +15 -7
  197. package/docs/reference/decisions/0019-one-converging-command-against-the-current-context.md +32 -18
  198. package/docs/reference/decisions/0021-workspace-continuity-is-a-lease-that-answers-back.md +14 -1
  199. package/docs/reference/decisions/0022-observation-is-a-level-triggered-feed.md +4 -4
  200. package/docs/reference/decisions/0023-the-harness-prints-the-conversation.md +116 -34
  201. package/docs/reference/decisions/0024-an-agents-turn-ends-with-the-state-that-asked-for-it.md +38 -37
  202. package/docs/reference/decisions/0025-cancel-ends-a-run-stop-parks-it.md +10 -5
  203. package/docs/reference/decisions/0027-the-harness-is-jr2s-own-server-flue-retires-the-wire-stays.md +7 -6
  204. package/docs/reference/decisions/0028-what-an-agent-may-do-to-the-workspace-is-part-of-its-definition.md +23 -7
  205. package/docs/reference/decisions/0029-a-menu-is-fixed-for-a-conversation-and-a-turn-is-told-its-allowed-picks.md +18 -10
  206. package/docs/reference/decisions/0030-a-snapshot-names-the-machine-it-was-written-under.md +3 -2
  207. package/docs/reference/decisions/0031-menu-only-agents-run-on-the-instance-harness.md +23 -18
  208. package/docs/reference/decisions/0032-the-console-unlocks-with-a-callers-credential.md +101 -0
  209. package/docs/reference/decisions/0033-a-machine-declares-the-input-that-starts-it.md +4 -3
  210. package/docs/reference/decisions/0034-the-console-renders-with-preact-and-the-server-erases-the-types.md +6 -6
  211. package/docs/reference/decisions/0037-an-instance-builds-its-sandbox-images-jr2-injects-the-harness.md +5 -4
  212. package/docs/reference/decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md +19 -19
  213. package/docs/reference/decisions/0050-what-code-names-config-declares-what-the-cli-names-discovery-finds.md +6 -1
  214. package/docs/reference/decisions/0054-the-kit-ships-machines-and-a-shipped-machine-leaves-its-parts-open.md +55 -40
  215. package/docs/reference/decisions/0055-a-release-is-a-pushed-tag-and-the-publish-guard-is-the-credential.md +14 -13
  216. package/docs/reference/decisions/0057-a-turn-is-its-frame-its-dials-and-whether-it-continues.md +7 -0
  217. package/docs/reference/decisions/0058-a-harness-answers-the-orchestrator-alone.md +13 -7
  218. package/docs/reference/decisions/0059-a-harness-holds-stand-ins-and-the-custodian-holds-the-keys.md +38 -30
  219. package/docs/reference/decisions/0062-jr2-briefs-the-agent-on-its-seat-never-on-its-task.md +64 -17
  220. package/docs/reference/decisions/0063-the-orchestrator-watches-the-cluster.md +2 -1
  221. package/docs/reference/decisions/0064-a-workspace-waits-for-capacity.md +2 -2
  222. package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-kept-for-a-set-time.md +109 -0
  223. package/docs/reference/decisions/0066-a-model-tier-runs-a-real-model-and-a-change-to-what-it-reads-runs-the-tier.md +51 -23
  224. package/docs/reference/decisions/0067-an-effect-is-an-actor-slot-and-runs-at-most-once-unless-marked-idempotent.md +94 -54
  225. package/docs/reference/decisions/0068-an-effector-holds-an-effects-secrets-and-signs-its-wire.md +101 -47
  226. package/docs/reference/decisions/0069-the-orchestrator-is-a-kit-image-and-an-instance-publishes-its-assembly.md +32 -9
  227. package/docs/reference/decisions/0070-a-machine-lends-its-parts-to-a-chart.md +17 -13
  228. package/docs/reference/decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md +56 -30
  229. package/docs/reference/decisions/0072-the-docs-ship-inside-the-kit-and-an-instances-agents-md-indexes-them.md +35 -25
  230. package/docs/reference/decisions/0075-a-machine-cuts-a-worktree-and-the-workspace-only-clones.md +4 -3
  231. package/docs/reference/decisions/0076-an-agents-control-credential-lives-only-where-no-workspace-code-runs.md +37 -10
  232. package/docs/reference/decisions/0078-a-caller-comes-from-one-authenticator-seam-and-acts-within-its-scopes.md +285 -0
  233. package/docs/reference/decisions/0079-an-agent-holds-mcp-tools-a-machine-calls-them-as-an-effect-and-the-machine-is-the-approval.md +198 -0
  234. package/docs/reference/decisions.md +6 -4
  235. package/docs/reference/glossary.md +96 -42
  236. package/docs/reference/hooks.md +1077 -0
  237. package/docs/reference/http-api.md +976 -149
  238. package/docs/why.md +2 -1
  239. package/package.json +10 -3
  240. package/src/actor.ts +36 -10
  241. package/src/agent.ts +50 -0
  242. package/src/assembly-checks.ts +530 -4
  243. package/src/callers.ts +245 -0
  244. package/src/chart.ts +52 -7
  245. package/src/config.ts +550 -1
  246. package/src/conversations.ts +453 -0
  247. package/src/custodian.ts +8 -2
  248. package/src/customize.ts +143 -4
  249. package/src/dispatch-effect.ts +142 -26
  250. package/src/durability.ts +2 -0
  251. package/src/duration.ts +20 -0
  252. package/src/effect-checks.ts +2 -1
  253. package/src/effect.ts +60 -7
  254. package/src/effector-wire.ts +272 -27
  255. package/src/gate-brand.ts +16 -0
  256. package/src/gate.ts +634 -48
  257. package/src/harness-client.ts +10 -4
  258. package/src/held-secrets.ts +72 -23
  259. package/src/holds.ts +2 -2
  260. package/src/hook-kinds/discord.ts +92 -0
  261. package/src/hook-kinds/door.ts +107 -0
  262. package/src/hook-kinds/github.ts +89 -0
  263. package/src/hook-kinds/gitlab.ts +72 -0
  264. package/src/hook-kinds/hook.ts +7 -0
  265. package/src/hook-kinds/index.ts +465 -0
  266. package/src/hook-kinds/slack.ts +151 -0
  267. package/src/hook-kinds/webhook.ts +113 -0
  268. package/src/hooks.ts +506 -0
  269. package/src/http-effect.ts +76 -38
  270. package/src/http.ts +889 -94
  271. package/src/index.ts +16 -5
  272. package/src/instance.ts +196 -26
  273. package/src/internal.ts +22 -3
  274. package/src/machine-doc.ts +26 -1
  275. package/src/mcp-effect.ts +424 -0
  276. package/src/mount-digest.ts +41 -7
  277. package/src/names.ts +64 -2
  278. package/src/notices.ts +138 -10
  279. package/src/open-body.ts +25 -11
  280. package/src/open-effect.ts +17 -4
  281. package/src/open.ts +4 -2
  282. package/src/parts.ts +87 -9
  283. package/src/party.ts +2 -1
  284. package/src/pick.ts +2 -2
  285. package/src/pool.ts +1142 -163
  286. package/src/registration.ts +203 -13
  287. package/src/run-host.ts +1509 -171
  288. package/src/run-list.ts +191 -0
  289. package/src/sandbox-kube.ts +53 -5
  290. package/src/secret-placement.ts +239 -33
  291. package/src/server.ts +53 -4
  292. package/src/setup.ts +72 -32
  293. package/src/snapshot-store.ts +565 -48
  294. package/src/steer.ts +111 -0
  295. package/src/stub-harness.ts +6 -2
  296. package/src/tokens.ts +263 -22
  297. package/src/wire.ts +17 -0
  298. package/src/workspace.ts +50 -6
  299. package/src/worktree.ts +3 -3
  300. package/docs/reference/decisions/0032-the-console-unlocks-with-the-instance-token.md +0 -61
  301. package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-a-week.md +0 -65
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: SourceHooks
3
+ description: "A Source's handlers, by Hook kind and event key."
4
+ ---
5
+
6
+ # `SourceHooks`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.
9
+
10
+ ```ts
11
+ type SourceHooks<Out, TInput = unknown> = KindHooks<SourceIn<TInput>, Out | Skip>;
12
+ ```
13
+
14
+ A Source's handlers, by Hook kind and event key. They have the shape of a Gate's `hooks`. A
15
+ handler is pure and synchronous. It gives `Out` or `skip(reason)`, never `undefined`; a throw is a
16
+ skip with the error as its reason.
17
+
18
+ **Fields**
19
+
20
+ - `github` (optional): `typeof github`
21
+ - `gitlab` (optional): `typeof gitlab`
22
+ - `slack` (optional): `typeof slack`
23
+ - `discord` (optional): `typeof discord`
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: SourceIn
3
+ description: "What a Source's handler reads beside `payload`."
4
+ ---
5
+
6
+ # `SourceIn`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.
9
+
10
+ ```ts
11
+ type SourceIn<TInput = unknown> = {
12
+ readonly caller: CallerRecord;
13
+ readonly delivery: string;
14
+ readonly input: TInput;
15
+ };
16
+ ```
17
+
18
+ What a Source's handler reads beside `payload`. `caller` is the Hook as a Caller, `delivery` the
19
+ delivery id, and `input` the Pool's input (`{}` for a standing Pool).
20
+
21
+ **Fields**
22
+
23
+ - `caller`: [`CallerRecord`](type-callerrecord.md)
24
+ - `delivery`: `string`
25
+ - `input`: `TInput`
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: SourceReply
3
+ description: "The text that the person who acted reads, from this Source's verdict (ADR-0011, ADR-0017)."
4
+ ---
5
+
6
+ # `SourceReply`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. It is an export of `@jr2/orchestrator`, in the [Composition](group-composition.md) group of the [Authoring surface](../authoring-surface.md) page.
9
+
10
+ ```ts
11
+ type SourceReply<T> = (verdict: SourceVerdict<T>, at: { readonly caller: CallerRecord }) => string | undefined;
12
+ ```
13
+
14
+ The text that the person who acted reads, from this Source's verdict ([ADR-0011](../decisions/0011-workflow-defined-events.md), [ADR-0017](../decisions/0017-pool-over-a-source-port.md)).
15
+ Plain text: the Hook kind escapes it and puts it in its envelope. Pure and synchronous.
16
+ `undefined` or `""`: this Source says nothing. It runs only for a delivery whose answer a person
17
+ reads (`slack`, `discord`). The text of a `skipped` verdict shows only when no other target gave
18
+ a text.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: SourceSpec
3
- description: "Where a Pool gets its work items: the Source."
3
+ description: A pull Source.
4
4
  ---
5
5
 
6
6
  # `SourceSpec`
@@ -16,10 +16,12 @@ type SourceSpec<T, TInput = unknown> = {
16
16
  | PromiseActorLogic<null, PoolNextInput<TInput>>;
17
17
  wake?: EventDef;
18
18
  pollEvery?: number;
19
+ hooks?: SourceHooks<Reread, TInput>;
20
+ reply?: SourceReply<T>;
19
21
  };
20
22
  ```
21
23
 
22
- Where a Pool gets its work items: the Source. Make one with [`source`](source.md).
24
+ A pull Source. `next` claims one item at a time. Make one with [`source`](source.md).
23
25
 
24
26
  **Fields**
25
27
 
@@ -30,15 +32,22 @@ Where a Pool gets its work items: the Source. Make one with [`source`](source.md
30
32
  the items that workers have now, `settled`, the ids of the items that finished or failed, and
31
33
  `input`, the Pool's input. It must not give again an item in `active` or `settled`. It resolves
32
34
  to a [`SourceNextResult`](type-sourcenextresult.md). The Pool calls it when the run starts, after each claim, and when a worker settles. While workers run and no item is ready, it
33
- also calls it on `wake` and every `pollEvery`.
35
+ also calls it on `wake`, on a Hook's `reread()` and every `pollEvery`.
34
36
  - `wake` (optional): [`EventDef`](type-eventdef.md)
35
37
 
36
38
  An external event, made with `defineEvent`, that tells the Pool that new work is ready, for
37
- example from a webhook or `jr2 send`. While workers run and no item is ready, it makes the Pool
38
- call `next` at once. The Pool serves it as a Gate named `source` for the whole run
39
- (`<path>.source` when the Pool is composed in another Machine). Default: none.
39
+ example from `jr2 send`. While workers run and no item is ready, it makes the Pool call `next`
40
+ at once. The Pool serves it as a Gate named `source` for the whole run (`<path>.source` when the
41
+ Pool is composed in another Machine). Default: none.
40
42
  - `pollEvery` (optional): `number`
41
43
 
42
44
  While workers run and no item is ready, call `next` again after this many milliseconds. Use
43
45
  it for a Source whose items change while the run waits. Default: none, so the Pool calls
44
- `next` again only when a worker settles or `wake` comes.
46
+ `next` again only when a worker settles, `wake` comes, or a Hook's handler gives `reread()`.
47
+ - `hooks` (optional): `SourceHooks<Reread, TInput>`
48
+
49
+ What a Hook's delivery does: a handler for each Hook kind id and event key gives `reread()` or
50
+ `skip(reason)`. Default: none.
51
+ - `reply` (optional): `SourceReply<T>`
52
+
53
+ The text that the person who acted reads, from the verdict. Default: none.
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: SourceVerdict
3
+ description: "A Source's verdict on one delivery, as its `reply` reads it (ADR-0017)."
4
+ ---
5
+
6
+ # `SourceVerdict`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. It is an export of `@jr2/orchestrator`, in the [Composition](group-composition.md) group of the [Authoring surface](../authoring-surface.md) page.
9
+
10
+ ```ts
11
+ type SourceVerdict<T> =
12
+ | { readonly verdict: "held"; readonly key: string; readonly item: T }
13
+ | { readonly verdict: "existing"; readonly key: string; readonly item: T; readonly run?: string }
14
+ | { readonly verdict: "hold-full"; readonly key: string; readonly item: T }
15
+ | { readonly verdict: "reread" }
16
+ | { readonly verdict: "skipped"; readonly reason: string };
17
+ ```
18
+
19
+ A Source's verdict on one delivery, as its `reply` reads it ([ADR-0017](../decisions/0017-pool-over-a-source-port.md)). `held`, `existing` and
20
+ `hold-full` come from a push Source and carry the item and its key; `existing` names the run
21
+ that holds the key, when one holds it. `reread` comes from a Source that can read. `skipped`
22
+ carries the reason. A Pool that is paused has no run, so no `reply` of it runs: the door writes
23
+ that text.
24
+
25
+ **Forms**: it is one of these objects.
26
+
27
+ - Form 1: `verdict`, `key`, `item`
28
+
29
+ - `verdict`: `"held"`
30
+ - `key`: `string`
31
+ - `item`: `T`
32
+ - Form 2: `verdict`, `key`, `item`, `run`
33
+
34
+ - `verdict`: `"existing"`
35
+ - `key`: `string`
36
+ - `item`: `T`
37
+ - `run` (optional): `string`
38
+ - Form 3: `verdict`, `key`, `item`
39
+
40
+ - `verdict`: `"hold-full"`
41
+ - `key`: `string`
42
+ - `item`: `T`
43
+ - Form 4: `verdict`
44
+
45
+ - `verdict`: `"reread"`
46
+ - Form 5: `verdict`, `reason`
47
+
48
+ - `verdict`: `"skipped"`
49
+ - `reason`: `string`
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: StandingPoolMachine
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `StandingPoolMachine`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. It is type plumbing: it computes a type from the types of a Machine or of its parts, and a workflow module does not write it. The signature of an export, or a type that it names, names this type, so its declaration is here. The [Authoring surface](../authoring-surface.md) page lists each export.
9
+
10
+ ```ts
11
+ type StandingPoolMachine = StateMachine<any, any, any, any, any, any, any, any, any, {}, never, any, any, any>;
12
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: StandingPoolSpec
3
+ description: What you pass to `pool()` for a Pool of runs.
4
+ ---
5
+
6
+ # `StandingPoolSpec`
7
+
8
+ Type, in `@jr2/orchestrator/src/pool.ts`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.
9
+
10
+ ```ts
11
+ type StandingPoolSpec<T, I> = {
12
+ id?: string;
13
+ standing: true;
14
+ source: SourceSpec<T, {}> | SourceSpec<T> | ReadSourceSpec<T, {}> | ReadSourceSpec<T> | PushSourceSpec<T>;
15
+ itemId: (item: T) => string;
16
+ cap: number;
17
+ itemInput?: (item: T) => I;
18
+ input?: never;
19
+ onDrained?: never;
20
+ failures?: never;
21
+ };
22
+ ```
23
+
24
+ What you pass to `pool()` for a Pool of runs. The worker is a `dispatch(...)` slot, and the Pool
25
+ stands. Each item is a run of the slot's Workflow, keyed by `itemId` in that Workflow.
26
+
27
+ **Fields**
28
+
29
+ - `id` (optional): `string`
30
+
31
+ The Machine id: the name of the Pool in the Console. Default: `"pool"`.
32
+ - `standing`: `true`
33
+
34
+ A Pool of runs stands: jr2 keeps one live run of its Workflow, and it never ends by itself.
35
+ - `source`: `SourceSpec<T, {}> | SourceSpec<T> | ReadSourceSpec<T, {}> | ReadSourceSpec<T> | PushSourceSpec<T>`
36
+
37
+ Where the items come from: a pull, a read or a push Source. Make it with [`source`](source.md).
38
+ - `itemId`: `(item: T) => string`
39
+
40
+ The id of an item, and the KEY of its run in the slot's Workflow ([ADR-0071](../decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md)): every Pool, every
41
+ hand-over and every `jr2 run` that gives this key to that Workflow gets the same run while its
42
+ row lives — while it is live, and for `runs.retain` after it ends.
43
+ - `cap`: `number`
44
+
45
+ The most LIVE runs at once that this Pool dispatched. You must choose it.
46
+ - `itemInput` (optional): `(item: T) => I`
47
+
48
+ Make a run's body from its item. Default: the item itself.
49
+ - `input` (optional): `never`
50
+ - `onDrained` (optional): `never`
51
+ - `failures` (optional): `never`
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: SteerArgs
3
+ description: "The arguments a `steer` text or `from` function gets: the Machine's context and the event that the transition takes."
4
+ ---
5
+
6
+ # `SteerArgs`
7
+
8
+ Type, in `@jr2/orchestrator/src/steer.ts`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.
9
+
10
+ ```ts
11
+ type SteerArgs<TContext, TEvent> = { context: TContext; event: TEvent };
12
+ ```
13
+
14
+ The arguments a `steer` text or `from` function gets: the Machine's context and the event that
15
+ the transition takes.
16
+
17
+ **Fields**
18
+
19
+ - `context`: `TContext`
20
+ - `event`: `TEvent`
@@ -5,7 +5,7 @@ description: "How hard the model thinks before it answers: `\"off\"`, `\"minimal
5
5
 
6
6
  # `ThinkingLevel`
7
7
 
8
- Type, in `@jr2/orchestrator/src/agent.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Agents.
8
+ Type, in `@jr2/orchestrator/src/agent.ts`. It is an export of `@jr2/orchestrator`, in the [Agents](group-agents.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
@@ -5,7 +5,7 @@ description: "The User Container in its object form: its image, and its part of
5
5
 
6
6
  # `UserContainer`
7
7
 
8
- Type, in `@jr2/orchestrator/src/size.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Composition.
8
+ Type, in `@jr2/orchestrator/src/size.ts`. It is an export of `@jr2/orchestrator`, in the [Composition](group-composition.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type UserContainer = {
@@ -5,7 +5,7 @@ description: "The input of a `workspace()` body: the run input, plus `workspace`
5
5
 
6
6
  # `Workspaced`
7
7
 
8
- Type, in `@jr2/orchestrator/src/workspace.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Workspaces and Repos.
8
+ Type, in `@jr2/orchestrator/src/workspace.ts`. It is an export of `@jr2/orchestrator`, in the [Workspaces and Repos](group-workspaces-and-repos.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type Workspaced<TInput, TSlots extends string> = WithoutEmptyIndex<TInput> & {
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  title: WorktreeFound
3
- description: "What a cut found: `held`, a cut made this Worktree earlier, so what is in it is earlier work; `local`, a local branch; `remote`, `origin/<branch>`, now tracked; `none`, a new branch with no upstream; `commit`, a detached cut."
3
+ description: What a cut found.
4
4
  ---
5
5
 
6
6
  # `WorktreeFound`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeFound = "held" | "local" | "remote" | "none" | "commit" | (string & {});
12
12
  ```
13
13
 
14
- What a cut found: `held`, a cut made this Worktree earlier, so what is in it is earlier work;
14
+ What a cut found. `held`: a cut made this Worktree earlier, so what is in it is earlier work;
15
15
  `local`, a local branch; `remote`, `origin/<branch>`, now tracked; `none`, a new branch with no
16
16
  upstream; `commit`, a detached cut. Open: a later value does not break an author's code.
@@ -5,7 +5,7 @@ description: "The input of a `worktree()`: a branch Worktree, or a detached one.
5
5
 
6
6
  # `WorktreeInput`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeInput =
@@ -5,7 +5,7 @@ description: The options of `worktree()`.
5
5
 
6
6
  # `WorktreeOptions`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeOptions = {
@@ -5,7 +5,7 @@ description: The output of a `worktree()`.
5
5
 
6
6
  # `WorktreeOutput`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeOutput<S extends string = string> = WorktreeReady<S> | WorktreeRefused | Unknown | LaterOutcome;
@@ -5,7 +5,7 @@ description: A Worktree of the Repo Slots `S`.
5
5
 
6
6
  # `WorktreePath`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreePath<S extends string> = `/work/${S}/${NameStart}${string}`;
@@ -5,7 +5,7 @@ description: Type, an export of @jr2/orchestrator.
5
5
 
6
6
  # `WorktreeReady`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeReady<S extends string = string> = {
@@ -1,18 +1,18 @@
1
1
  ---
2
2
  title: WorktreeRefused
3
- description: "No Worktree, and nothing changed: a bad path, a name git or the push refuses, a re-cut that does not agree with the first, a branch that another Worktree holds, an `expect` that does not hold, or a name that the remote cannot confirm."
3
+ description: No Worktree, and nothing changed.
4
4
  ---
5
5
 
6
6
  # `WorktreeRefused`
7
7
 
8
- Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Type, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  type WorktreeRefused = { outcome: "refused"; reason: string };
12
12
  ```
13
13
 
14
- No Worktree, and nothing changed: a bad path, a name git or the push refuses, a re-cut that does
15
- not agree with the first, a branch that another Worktree holds, an `expect` that does not hold, or a
14
+ No Worktree, and nothing changed. The cause is a bad path, a name git or the push refuses, a
15
+ re-cut that does not agree with the first, a branch that another Worktree holds, an `expect` that does not hold, or a
16
16
  name that the remote cannot confirm.
17
17
 
18
18
  **Fields**
@@ -5,7 +5,7 @@ description: "Run a body Machine in a Sandbox: a pod of its own, with a clone of
5
5
 
6
6
  # `workspace`
7
7
 
8
- Function, in `@jr2/orchestrator/src/workspace.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Workspaces and Repos.
8
+ Function, in `@jr2/orchestrator/src/workspace.ts`. It is an export of `@jr2/orchestrator`, in the [Workspaces and Repos](group-workspaces-and-repos.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ## Overload 1
11
11
 
@@ -5,7 +5,7 @@ description: "Make a `worktree` Effect: it cuts a Worktree of a Repo Slot, or re
5
5
 
6
6
  # `worktree`
7
7
 
8
- Function, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
8
+ Function, in `@jr2/orchestrator/src/worktree.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
9
9
 
10
10
  ```ts
11
11
  function worktree(options: WorktreeOptions = {}): EffectLogic<WorktreeInput, WorktreeOutput>