@jr2/orchestrator 0.3.0 → 0.5.1

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 (354) hide show
  1. package/README.md +20 -2
  2. package/bin/server.ts +7 -4
  3. package/console/canvas.ts +27 -14
  4. package/console/components/app.ts +12 -1
  5. package/console/components/fleet.ts +52 -6
  6. package/console/components/machine-pane.ts +128 -2
  7. package/console/components/nav.ts +1 -1
  8. package/console/components/schema-form.ts +12 -4
  9. package/console/json-field.ts +23 -0
  10. package/console/main.ts +122 -39
  11. package/console/store.ts +321 -21
  12. package/console/style.css +111 -0
  13. package/docs/agents-block.md +5 -0
  14. package/docs/concepts/agents-and-turns.md +442 -0
  15. package/docs/concepts/architecture.md +230 -0
  16. package/docs/concepts/charts.md +143 -0
  17. package/docs/concepts/composition.md +357 -0
  18. package/docs/concepts/converge.md +254 -0
  19. package/docs/concepts/durable-runs.md +189 -0
  20. package/docs/concepts/effects.md +603 -0
  21. package/docs/concepts/gates.md +208 -0
  22. package/docs/concepts/machines-and-workflows.md +289 -0
  23. package/docs/concepts/pools-and-sources.md +230 -0
  24. package/docs/concepts/secrets-and-trust.md +222 -0
  25. package/docs/concepts/the-menu.md +378 -0
  26. package/docs/concepts/workspaces.md +678 -0
  27. package/docs/get-started/a-model-decides.md +563 -0
  28. package/docs/get-started/an-agent-in-a-sandbox.md +381 -0
  29. package/docs/get-started/connect-a-model.md +248 -0
  30. package/docs/get-started/create-an-instance.md +194 -0
  31. package/docs/get-started/have-your-assistant-write-a-machine.md +922 -0
  32. package/docs/get-started/install.md +126 -0
  33. package/docs/guides/add-tools-to-the-sandbox.md +295 -0
  34. package/docs/guides/answer-a-gate.md +304 -0
  35. package/docs/guides/bind-open-parts.md +223 -0
  36. package/docs/guides/cancel-a-run.md +146 -0
  37. package/docs/guides/clean-up.md +206 -0
  38. package/docs/guides/fix-a-failed-converge.md +361 -0
  39. package/docs/guides/give-the-cluster-git-credentials.md +222 -0
  40. package/docs/guides/iterate-on-a-machine-on-kind.md +190 -0
  41. package/docs/guides/let-an-agent-write-a-chart.md +226 -0
  42. package/docs/guides/look-inside-a-sandbox.md +174 -0
  43. package/docs/guides/mirror-the-kit-images.md +176 -0
  44. package/docs/guides/move-from-kind-to-a-shared-cluster.md +302 -0
  45. package/docs/guides/open-the-console.md +91 -0
  46. package/docs/guides/publish-a-machine-as-an-npm-package.md +350 -0
  47. package/docs/guides/push-and-sign-a-branch.md +486 -0
  48. package/docs/guides/run-a-chart-by-name.md +270 -0
  49. package/docs/guides/run-a-command-or-call-a-url.md +544 -0
  50. package/docs/guides/run-one-worker-per-item.md +321 -0
  51. package/docs/guides/set-an-agents-access-and-dials.md +375 -0
  52. package/docs/guides/size-a-workspace.md +204 -0
  53. package/docs/guides/start-a-run-from-a-run.md +237 -0
  54. package/docs/guides/start-a-run.md +207 -0
  55. package/docs/guides/upgrade-the-kit-version.md +240 -0
  56. package/docs/guides/use-a-hosted-provider.md +208 -0
  57. package/docs/guides/use-a-local-model.md +313 -0
  58. package/docs/guides/watch-a-run.md +326 -0
  59. package/docs/guides/write-a-workflow.md +318 -0
  60. package/docs/index.md +44 -0
  61. package/docs/llms.txt +216 -0
  62. package/docs/reference/authoring-surface/agent.md +128 -0
  63. package/docs/reference/authoring-surface/answer.md +140 -0
  64. package/docs/reference/authoring-surface/arg.md +60 -0
  65. package/docs/reference/authoring-surface/basic.md +62 -0
  66. package/docs/reference/authoring-surface/bearer.md +53 -0
  67. package/docs/reference/authoring-surface/chartschema.md +23 -0
  68. package/docs/reference/authoring-surface/chartschemafor.md +48 -0
  69. package/docs/reference/authoring-surface/command.md +191 -0
  70. package/docs/reference/authoring-surface/customize.md +64 -0
  71. package/docs/reference/authoring-surface/defineconfig.md +41 -0
  72. package/docs/reference/authoring-surface/defineevent.md +114 -0
  73. package/docs/reference/authoring-surface/dispatch.md +126 -0
  74. package/docs/reference/authoring-surface/fail.md +83 -0
  75. package/docs/reference/authoring-surface/file.md +122 -0
  76. package/docs/reference/authoring-surface/frompick.md +277 -0
  77. package/docs/reference/authoring-surface/http.md +159 -0
  78. package/docs/reference/authoring-surface/isfailure.md +58 -0
  79. package/docs/reference/authoring-surface/jr2setup.md +237 -0
  80. package/docs/reference/authoring-surface/open.md +74 -0
  81. package/docs/reference/authoring-surface/openbody.md +86 -0
  82. package/docs/reference/authoring-surface/paramsof.md +125 -0
  83. package/docs/reference/authoring-surface/pool.md +186 -0
  84. package/docs/reference/authoring-surface/push.md +112 -0
  85. package/docs/reference/authoring-surface/secret.md +118 -0
  86. package/docs/reference/authoring-surface/sentby.md +83 -0
  87. package/docs/reference/authoring-surface/source.md +51 -0
  88. package/docs/reference/authoring-surface/text.md +62 -0
  89. package/docs/reference/authoring-surface/type-agentdeclaration.md +27 -0
  90. package/docs/reference/authoring-surface/type-agentdefinition.md +80 -0
  91. package/docs/reference/authoring-surface/type-agentlogic.md +15 -0
  92. package/docs/reference/authoring-surface/type-agentslots.md +12 -0
  93. package/docs/reference/authoring-surface/type-answeraction.md +12 -0
  94. package/docs/reference/authoring-surface/type-arg.md +19 -0
  95. package/docs/reference/authoring-surface/type-argnames.md +12 -0
  96. package/docs/reference/authoring-surface/type-binding.md +62 -0
  97. package/docs/reference/authoring-surface/type-bindingof.md +12 -0
  98. package/docs/reference/authoring-surface/type-bodyacceptsdoor.md +15 -0
  99. package/docs/reference/authoring-surface/type-bodyacceptsslots.md +17 -0
  100. package/docs/reference/authoring-surface/type-ceilings.md +41 -0
  101. package/docs/reference/authoring-surface/type-chainlink.md +19 -0
  102. package/docs/reference/authoring-surface/type-chartaction.md +46 -0
  103. package/docs/reference/authoring-surface/type-chartagent.md +28 -0
  104. package/docs/reference/authoring-surface/type-chartevent.md +20 -0
  105. package/docs/reference/authoring-surface/type-chartguard.md +20 -0
  106. package/docs/reference/authoring-surface/type-chartinvoke.md +28 -0
  107. package/docs/reference/authoring-surface/type-chartjson.md +14 -0
  108. package/docs/reference/authoring-surface/type-chartstate.md +46 -0
  109. package/docs/reference/authoring-surface/type-charttext.md +40 -0
  110. package/docs/reference/authoring-surface/type-charttransition.md +22 -0
  111. package/docs/reference/authoring-surface/type-charttransitions.md +14 -0
  112. package/docs/reference/authoring-surface/type-chartvalue.md +15 -0
  113. package/docs/reference/authoring-surface/type-childat.md +12 -0
  114. package/docs/reference/authoring-surface/type-childslots.md +12 -0
  115. package/docs/reference/authoring-surface/type-commandenv.md +15 -0
  116. package/docs/reference/authoring-surface/type-commandinput.md +19 -0
  117. package/docs/reference/authoring-surface/type-commandoptions.md +78 -0
  118. package/docs/reference/authoring-surface/type-commandoutput.md +104 -0
  119. package/docs/reference/authoring-surface/type-customize.md +109 -0
  120. package/docs/reference/authoring-surface/type-dispatchdefinition.md +39 -0
  121. package/docs/reference/authoring-surface/type-dispatchinput.md +14 -0
  122. package/docs/reference/authoring-surface/type-dispatchopenparts.md +14 -0
  123. package/docs/reference/authoring-surface/type-dispatchoutput.md +65 -0
  124. package/docs/reference/authoring-surface/type-duration.md +15 -0
  125. package/docs/reference/authoring-surface/type-effectbinding.md +93 -0
  126. package/docs/reference/authoring-surface/type-effectlogic.md +12 -0
  127. package/docs/reference/authoring-surface/type-envopenparts.md +14 -0
  128. package/docs/reference/authoring-surface/type-eventaudience.md +27 -0
  129. package/docs/reference/authoring-surface/type-eventdef.md +45 -0
  130. package/docs/reference/authoring-surface/type-eventfrom.md +16 -0
  131. package/docs/reference/authoring-surface/type-eventsemantics.md +26 -0
  132. package/docs/reference/authoring-surface/type-execoutcome.md +34 -0
  133. package/docs/reference/authoring-surface/type-failslot.md +14 -0
  134. package/docs/reference/authoring-surface/type-failure.md +19 -0
  135. package/docs/reference/authoring-surface/type-failureinput.md +20 -0
  136. package/docs/reference/authoring-surface/type-filebody.md +41 -0
  137. package/docs/reference/authoring-surface/type-frominput.md +14 -0
  138. package/docs/reference/authoring-surface/type-hostinjectedinput.md +58 -0
  139. package/docs/reference/authoring-surface/type-httpdefinition.md +101 -0
  140. package/docs/reference/authoring-surface/type-httpinput.md +12 -0
  141. package/docs/reference/authoring-surface/type-httpmethod.md +14 -0
  142. package/docs/reference/authoring-surface/type-httpopenparts.md +12 -0
  143. package/docs/reference/authoring-surface/type-httpoutput.md +89 -0
  144. package/docs/reference/authoring-surface/type-httprequestparts.md +33 -0
  145. package/docs/reference/authoring-surface/type-jr2config.md +126 -0
  146. package/docs/reference/authoring-surface/type-lends.md +38 -0
  147. package/docs/reference/authoring-surface/type-logicat.md +12 -0
  148. package/docs/reference/authoring-surface/type-markedif.md +12 -0
  149. package/docs/reference/authoring-surface/type-mergedactors.md +12 -0
  150. package/docs/reference/authoring-surface/type-namedsecret.md +25 -0
  151. package/docs/reference/authoring-surface/type-noslotspec.md +26 -0
  152. package/docs/reference/authoring-surface/type-noslotworkspaceoptions.md +32 -0
  153. package/docs/reference/authoring-surface/type-openbodydeclaration.md +40 -0
  154. package/docs/reference/authoring-surface/type-openbodylogic.md +14 -0
  155. package/docs/reference/authoring-surface/type-openbodyoutput.md +42 -0
  156. package/docs/reference/authoring-surface/type-openbodyslot.md +18 -0
  157. package/docs/reference/authoring-surface/type-opencommandinput.md +17 -0
  158. package/docs/reference/authoring-surface/type-openeffect.md +12 -0
  159. package/docs/reference/authoring-surface/type-openeffectslots.md +12 -0
  160. package/docs/reference/authoring-surface/type-openof.md +12 -0
  161. package/docs/reference/authoring-surface/type-opensecret.md +23 -0
  162. package/docs/reference/authoring-surface/type-opensecretmark.md +12 -0
  163. package/docs/reference/authoring-surface/type-permissivenoslotworkspaceoptions.md +31 -0
  164. package/docs/reference/authoring-surface/type-permissiveworkspaceoptions.md +32 -0
  165. package/docs/reference/authoring-surface/type-poolmachine.md +28 -0
  166. package/docs/reference/authoring-surface/type-poolspec.md +60 -0
  167. package/docs/reference/authoring-surface/type-pushinput.md +15 -0
  168. package/docs/reference/authoring-surface/type-pushoptions.md +79 -0
  169. package/docs/reference/authoring-surface/type-pushoutput.md +124 -0
  170. package/docs/reference/authoring-surface/type-pushwireoutput.md +12 -0
  171. package/docs/reference/authoring-surface/type-quantity.md +14 -0
  172. package/docs/reference/authoring-surface/type-reached.md +12 -0
  173. package/docs/reference/authoring-surface/type-reposlot.md +70 -0
  174. package/docs/reference/authoring-surface/type-reposlotsof.md +16 -0
  175. package/docs/reference/authoring-surface/type-sandboxoptions.md +77 -0
  176. package/docs/reference/authoring-surface/type-secret.md +25 -0
  177. package/docs/reference/authoring-surface/type-sender.md +19 -0
  178. package/docs/reference/authoring-surface/type-sentbyguards.md +12 -0
  179. package/docs/reference/authoring-surface/type-size.md +85 -0
  180. package/docs/reference/authoring-surface/type-slothandles.md +32 -0
  181. package/docs/reference/authoring-surface/type-sourcenextresult.md +17 -0
  182. package/docs/reference/authoring-surface/type-sourcespec.md +44 -0
  183. package/docs/reference/authoring-surface/type-syncstate.md +12 -0
  184. package/docs/reference/authoring-surface/type-text.md +19 -0
  185. package/docs/reference/authoring-surface/type-textpart.md +24 -0
  186. package/docs/reference/authoring-surface/type-thinkinglevel.md +39 -0
  187. package/docs/reference/authoring-surface/type-toparameterizedobject.md +14 -0
  188. package/docs/reference/authoring-surface/type-toprovidedactor.md +14 -0
  189. package/docs/reference/authoring-surface/type-unknown.md +21 -0
  190. package/docs/reference/authoring-surface/type-usercontainer.md +77 -0
  191. package/docs/reference/authoring-surface/type-withoutemptyindex.md +20 -0
  192. package/docs/reference/authoring-surface/type-workflowevent.md +46 -0
  193. package/docs/reference/authoring-surface/type-workspaceaccess.md +16 -0
  194. package/docs/reference/authoring-surface/type-workspaced.md +94 -0
  195. package/docs/reference/authoring-surface/type-workspacehandles.md +23 -0
  196. package/docs/reference/authoring-surface/type-workspacemachine.md +29 -0
  197. package/docs/reference/authoring-surface/type-workspaceof.md +13 -0
  198. package/docs/reference/authoring-surface/type-workspaceoptions.md +39 -0
  199. package/docs/reference/authoring-surface/type-workspacespec.md +37 -0
  200. package/docs/reference/authoring-surface/workspace.md +259 -0
  201. package/docs/reference/authoring-surface.md +197 -0
  202. package/docs/reference/cli.md +433 -0
  203. package/docs/reference/config.md +756 -0
  204. package/docs/reference/decisions/0001-operator-owned-generic-sandbox.md +113 -0
  205. package/docs/reference/decisions/0002-duplex-streaming-actor.md +110 -0
  206. package/docs/reference/decisions/0004-worktree-provisioning-model.md +124 -0
  207. package/docs/reference/decisions/0005-sandbox-pod-composition.md +230 -0
  208. package/docs/reference/decisions/0006-agent-control-surface.md +47 -0
  209. package/docs/reference/decisions/0007-durable-machine-state.md +109 -0
  210. package/docs/reference/decisions/0008-orchestrator-as-deployed-app.md +60 -0
  211. package/docs/reference/decisions/0009-cli-and-instance-interface.md +275 -0
  212. package/docs/reference/decisions/0010-bdd-acceptance-tests.md +160 -0
  213. package/docs/reference/decisions/0011-workflow-defined-events.md +141 -0
  214. package/docs/reference/decisions/0012-workspace-wrapper-machine.md +103 -0
  215. package/docs/reference/decisions/0013-the-agent-reaches-its-machine-through-a-container-it-cannot-read.md +157 -0
  216. package/docs/reference/decisions/0014-observation-is-open-run-state-is-not.md +95 -0
  217. package/docs/reference/decisions/0015-authoring-surface-absorbs-the-mechanism.md +265 -0
  218. package/docs/reference/decisions/0016-agent-turn-mechanics-are-internal.md +124 -0
  219. package/docs/reference/decisions/0017-pool-over-a-source-port.md +69 -0
  220. package/docs/reference/decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md +111 -0
  221. package/docs/reference/decisions/0019-one-converging-command-against-the-current-context.md +275 -0
  222. package/docs/reference/decisions/0020-private-ca-trust-is-a-named-concept.md +60 -0
  223. package/docs/reference/decisions/0021-workspace-continuity-is-a-lease-that-answers-back.md +100 -0
  224. package/docs/reference/decisions/0022-observation-is-a-level-triggered-feed.md +103 -0
  225. package/docs/reference/decisions/0023-the-harness-prints-the-conversation.md +176 -0
  226. package/docs/reference/decisions/0024-an-agents-turn-ends-with-the-state-that-asked-for-it.md +439 -0
  227. package/docs/reference/decisions/0025-cancel-ends-a-run-stop-parks-it.md +65 -0
  228. package/docs/reference/decisions/0026-a-turn-that-is-over-is-never-prompted.md +62 -0
  229. package/docs/reference/decisions/0027-the-harness-is-jr2s-own-server-flue-retires-the-wire-stays.md +237 -0
  230. package/docs/reference/decisions/0028-what-an-agent-may-do-to-the-workspace-is-part-of-its-definition.md +89 -0
  231. package/docs/reference/decisions/0029-a-menu-is-fixed-for-a-conversation-and-a-turn-is-told-its-allowed-picks.md +154 -0
  232. package/docs/reference/decisions/0030-a-snapshot-names-the-machine-it-was-written-under.md +100 -0
  233. package/docs/reference/decisions/0031-menu-only-agents-run-on-the-instance-harness.md +190 -0
  234. package/docs/reference/decisions/0032-the-console-unlocks-with-the-instance-token.md +61 -0
  235. package/docs/reference/decisions/0033-a-machine-declares-the-input-that-starts-it.md +127 -0
  236. package/docs/reference/decisions/0034-the-console-renders-with-preact-and-the-server-erases-the-types.md +57 -0
  237. package/docs/reference/decisions/0035-a-runaway-turn-is-ended-rerolled-once-then-a-fault.md +92 -0
  238. package/docs/reference/decisions/0036-a-turn-compacts-its-own-context-mid-flight.md +138 -0
  239. package/docs/reference/decisions/0037-an-instance-builds-its-sandbox-images-jr2-injects-the-harness.md +196 -0
  240. package/docs/reference/decisions/0038-jr2-up-builds-every-image-it-deploys.md +170 -0
  241. package/docs/reference/decisions/0039-image-garbage-collects-by-reachability.md +115 -0
  242. package/docs/reference/decisions/0041-a-build-the-host-already-holds-is-not-spent-again.md +64 -0
  243. package/docs/reference/decisions/0042-ready-is-not-routable-an-admission-retries-its-connection.md +142 -0
  244. package/docs/reference/decisions/0043-the-kit-is-tested-as-installed-a-local-registry-stands-in-for-npm.md +170 -0
  245. package/docs/reference/decisions/0044-kit-images-live-at-a-canonical-home-a-self-host-mirrors-it.md +85 -0
  246. package/docs/reference/decisions/0045-the-platform-joins-the-image-address-and-the-cluster-chooses-it.md +82 -0
  247. package/docs/reference/decisions/0046-a-converge-failure-carries-its-diagnosis.md +34 -0
  248. package/docs/reference/decisions/0047-the-git-ssh-key-source-is-the-users-choice.md +47 -0
  249. package/docs/reference/decisions/0048-the-orchestrator-boots-without-its-repos.md +36 -0
  250. package/docs/reference/decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md +126 -0
  251. package/docs/reference/decisions/0050-what-code-names-config-declares-what-the-cli-names-discovery-finds.md +73 -0
  252. package/docs/reference/decisions/0051-a-repo-is-a-slot-on-the-workspace-and-a-cache-on-the-node.md +227 -0
  253. package/docs/reference/decisions/0052-a-sandbox-lands-where-an-ordinary-pod-lands-and-the-cache-follows-it.md +81 -0
  254. package/docs/reference/decisions/0053-a-fetch-inside-the-pod-asks-the-node-cache-and-the-cache-asks-the-remote.md +111 -0
  255. package/docs/reference/decisions/0054-the-kit-ships-machines-and-a-shipped-machine-leaves-its-parts-open.md +126 -0
  256. package/docs/reference/decisions/0055-a-release-is-a-pushed-tag-and-the-publish-guard-is-the-credential.md +107 -0
  257. package/docs/reference/decisions/0056-a-global-jr2-hands-off-to-the-instances-own-and-an-instance-has-one-kit-version.md +62 -0
  258. package/docs/reference/decisions/0057-a-turn-is-its-frame-its-dials-and-whether-it-continues.md +152 -0
  259. package/docs/reference/decisions/0058-a-harness-answers-the-orchestrator-alone.md +106 -0
  260. package/docs/reference/decisions/0059-a-harness-holds-stand-ins-and-the-custodian-holds-the-keys.md +384 -0
  261. package/docs/reference/decisions/0060-a-workspace-states-its-size-and-jr2-reserves-all-of-it.md +111 -0
  262. package/docs/reference/decisions/0061-a-memory-kill-ends-the-agents-processes-not-the-harness.md +83 -0
  263. package/docs/reference/decisions/0062-jr2-briefs-the-agent-on-its-seat-never-on-its-task.md +212 -0
  264. package/docs/reference/decisions/0063-the-orchestrator-watches-the-cluster.md +83 -0
  265. package/docs/reference/decisions/0064-a-workspace-waits-for-capacity.md +79 -0
  266. package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-a-week.md +65 -0
  267. package/docs/reference/decisions/0066-a-model-tier-runs-a-real-model-and-a-change-to-what-it-reads-runs-the-tier.md +550 -0
  268. package/docs/reference/decisions/0067-an-effect-is-an-actor-slot-and-runs-at-most-once-unless-marked-idempotent.md +430 -0
  269. package/docs/reference/decisions/0068-an-effector-holds-an-effects-secrets-and-signs-its-wire.md +464 -0
  270. package/docs/reference/decisions/0069-the-orchestrator-is-a-kit-image-and-an-instance-publishes-its-assembly.md +180 -0
  271. package/docs/reference/decisions/0070-a-machine-lends-its-parts-to-a-chart.md +323 -0
  272. package/docs/reference/decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md +183 -0
  273. package/docs/reference/decisions/0072-the-docs-ship-inside-the-kit-and-an-instances-agents-md-indexes-them.md +144 -0
  274. package/docs/reference/decisions/0073-a-machine-fails-a-run-with-fail-and-an-uncaught-failure-ends-it-failed.md +122 -0
  275. package/docs/reference/decisions/0074-an-unrouted-mechanism-event-is-refused-at-load-and-faults-the-run.md +76 -0
  276. package/docs/reference/decisions.md +83 -0
  277. package/docs/reference/glossary.md +648 -0
  278. package/docs/reference/http-api.md +1348 -0
  279. package/docs/reference/machines.md +190 -0
  280. package/docs/reference/mechanism-events.md +72 -0
  281. package/docs/why.md +206 -0
  282. package/package.json +6 -4
  283. package/src/actor.ts +976 -61
  284. package/src/agent.ts +114 -38
  285. package/src/ambient.ts +4 -1
  286. package/src/assembly-checks.ts +347 -0
  287. package/src/assembly-tar.ts +494 -0
  288. package/src/assembly.ts +721 -0
  289. package/src/cause.ts +234 -0
  290. package/src/chart.ts +2182 -0
  291. package/src/charts.ts +748 -0
  292. package/src/config.ts +520 -162
  293. package/src/content-hash.ts +105 -0
  294. package/src/custodian.lua +6 -5
  295. package/src/custodian.ts +143 -39
  296. package/src/customize.ts +388 -55
  297. package/src/dispatch-effect.ts +945 -0
  298. package/src/door-compat.ts +217 -0
  299. package/src/durability.ts +11 -4
  300. package/src/effect-checks.ts +557 -0
  301. package/src/effect.ts +1202 -0
  302. package/src/effector-wire.ts +674 -0
  303. package/src/fail.ts +209 -0
  304. package/src/fingerprint.ts +4 -3
  305. package/src/gate.ts +8 -0
  306. package/src/git-clone.ts +65 -0
  307. package/src/git-push.ts +336 -0
  308. package/src/harness-client.ts +764 -48
  309. package/src/held-secrets.ts +82 -26
  310. package/src/holds.ts +156 -0
  311. package/src/http-effect.ts +1423 -0
  312. package/src/http.ts +916 -113
  313. package/src/images.ts +47 -21
  314. package/src/index.ts +62 -43
  315. package/src/instance.ts +505 -59
  316. package/src/internal.ts +84 -0
  317. package/src/kube-client.ts +333 -0
  318. package/src/machine-doc.ts +106 -6
  319. package/src/mechanism-routes.ts +168 -0
  320. package/src/model-keys.generated.ts +53 -0
  321. package/src/model-keys.ts +18 -58
  322. package/src/mount-digest.ts +53 -0
  323. package/src/names.ts +66 -8
  324. package/src/notices.ts +141 -0
  325. package/src/open-body.ts +1580 -0
  326. package/src/open-effect.ts +217 -0
  327. package/src/open.ts +59 -6
  328. package/src/parts.ts +709 -41
  329. package/src/party.ts +534 -0
  330. package/src/pick.ts +761 -0
  331. package/src/pool.ts +248 -37
  332. package/src/registration.ts +382 -19
  333. package/src/repo-fetch.ts +60 -85
  334. package/src/repos.ts +65 -75
  335. package/src/rest.ts +133 -0
  336. package/src/run-host.ts +2383 -115
  337. package/src/run-output.ts +38 -0
  338. package/src/sandbox-effect.ts +1126 -0
  339. package/src/sandbox-effector.ts +111 -0
  340. package/src/sandbox-kube.ts +1721 -0
  341. package/src/sandbox-watch.ts +260 -0
  342. package/src/secret-placement.ts +529 -0
  343. package/src/server.ts +284 -84
  344. package/src/setup.ts +819 -117
  345. package/src/size.ts +454 -0
  346. package/src/snapshot-store.ts +115 -20
  347. package/src/stub-harness.ts +49 -16
  348. package/src/sync-client.ts +54 -0
  349. package/src/timers.ts +191 -0
  350. package/src/tokens.ts +35 -4
  351. package/src/vocabulary.ts +135 -15
  352. package/src/wire.ts +238 -10
  353. package/src/workspace.ts +1195 -338
  354. package/src/sandbox-kubectl.ts +0 -1108
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: AgentDefinition
3
+ description: "An Agent's definition: which model it runs, its instructions, and what it may do to the Workspace."
4
+ ---
5
+
6
+ # `AgentDefinition`
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.
9
+
10
+ ```ts
11
+ type AgentDefinition = {
12
+ model: string;
13
+ instructions: string;
14
+ description?: string;
15
+ thinkingLevel?: ThinkingLevel;
16
+ workspace?: WorkspaceAccess;
17
+ };
18
+ ```
19
+
20
+ An Agent's definition: which model it runs, its instructions, and what it may do to the
21
+ Workspace. Give it to `agent()` to get the Agent's actor slot. It is plain data that can be
22
+ written as JSON.
23
+
24
+ It holds who the Agent is, not what one Turn does. The prompt of a Turn and the directory it
25
+ works in are the Frame. The state that invokes the Agent sets the Frame in the invoke's
26
+ `input`. That `input` can also set `model` and `thinkingLevel` for one Turn: the Dials. It
27
+ cannot change `instructions` or `workspace`.
28
+
29
+ **Fields**
30
+
31
+ - `model`: `string`
32
+
33
+ The model, as `<provider>/<modelId>`: for example `anthropic/claude-haiku-5-5`. The
34
+ provider must be one that `jr2.config.ts` can reach. Here it is always a string: an `open`
35
+ model of `agent()` must be bound before a Turn starts. One Turn may set another model in the
36
+ invoke's `input`.
37
+ - `instructions`: `string`
38
+
39
+ The Agent's instructions: the text that tells the model who it is and how to work. The same
40
+ on every Turn.
41
+ - `description` (optional): `string`
42
+
43
+ A short description, for people who read the Machine. The model never reads it.
44
+ - `thinkingLevel` (optional): [`ThinkingLevel`](type-thinkinglevel.md)
45
+
46
+ How hard the model thinks: one of [`ThinkingLevel`](type-thinkinglevel.md). Absent: `"off"`. A model with no
47
+ `"off"` runs at another level, and the printed conversation names it. One Turn may set another
48
+ level in the invoke's `input`.
49
+ - `workspace` (optional): [`WorkspaceAccess`](type-workspaceaccess.md)
50
+
51
+ What the Agent may do to the Workspace. Default: `"write"`.
52
+ - `"write"`: all the Working tools (read, write, edit, bash, grep, glob).
53
+ - `"read"`: no write or edit tool. The Agent keeps bash, so `"read"` does not stop a command
54
+ that writes. To keep the Agent from changing the branch, frame its Turn in the review
55
+ Worktree: `reviewSha` in the spec, then `cwd: context.workspace.review?.<slot>`.
56
+ - `"none"`: no Working tools. The Agent only reads its prompt and picks from its Menu. Its Turn
57
+ runs on the Instance Harness, not in a Sandbox, so it needs no `workspace()` around it.
58
+
59
+ **Example**
60
+
61
+ ```ts
62
+ import { agent, type AgentDefinition } from "@jr2/orchestrator";
63
+
64
+ const definition: AgentDefinition = {
65
+ model: "anthropic/claude-haiku-5-5",
66
+ instructions: "You fix the failing test, and you change nothing else.",
67
+ description: "Fixes one failing test",
68
+ thinkingLevel: "medium",
69
+ workspace: "write",
70
+ };
71
+
72
+ export const coder = agent(definition);
73
+ ```
74
+
75
+ **See also**
76
+
77
+ - [Agents and Turns](../../concepts/agents-and-turns.md)
78
+ - [Set an Agent's access and Dials](../../guides/set-an-agents-access-and-dials.md)
79
+ - [ADR-0018: The instance authors Agent definitions; jr2 assembles the Harness](../decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md)
80
+ - [ADR-0028: What an Agent may do to the Workspace is part of its definition](../decisions/0028-what-an-agent-may-do-to-the-workspace-is-part-of-its-definition.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: AgentLogic
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `AgentLogic`
7
+
8
+ Type, in `@jr2/orchestrator/src/actor.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 AgentLogic = CallbackActorLogic<
12
+ AgentRunReceiveEvent,
13
+ AgentTurnInput | (AgentTurnInput & AgentTurnPlacement) | AgentRunInput
14
+ >;
15
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: AgentSlots
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `AgentSlots`
7
+
8
+ Type, in `@jr2/orchestrator/src/customize.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 AgentSlots<M extends AnyStateMachine> = Extract<SlotsOf<M>, { logic: AgentLogic }>["src"];
12
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: AnswerAction
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `AnswerAction`
7
+
8
+ Type, in `@jr2/orchestrator/src/pick.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 AnswerAction = { readonly jr2Answer: true };
12
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: Arg
3
+ description: "One entry of a command's argv that the input of the Effect fills, as `arg(\"name\")` makes it."
4
+ ---
5
+
6
+ # `Arg`
7
+
8
+ Type, in `@jr2/orchestrator/src/effect.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 Arg<N extends string = string> = { readonly arg: N };
12
+ ```
13
+
14
+ One entry of a command's argv that the input of the Effect fills, as `arg("name")` makes it. It
15
+ is one argument, whatever its text. No shell reads it.
16
+
17
+ **Fields**
18
+
19
+ - `arg`: `N`
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ArgNames
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `ArgNames`
7
+
8
+ Type, in `@jr2/orchestrator/src/effect.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 ArgNames<A extends readonly unknown[]> = A[number] extends infer E ? (E extends Arg<infer N> ? N : never) : never;
12
+ ```
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: Binding
3
+ description: "The repository of a Repo Slot: `{ url, ref }`."
4
+ ---
5
+
6
+ # `Binding`
7
+
8
+ Type, in `@jr2/orchestrator/src/parts.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Workspaces and Repos.
9
+
10
+ ```ts
11
+ type Binding = {
12
+ url: string;
13
+ ref?: string;
14
+ };
15
+ ```
16
+
17
+ The repository of a Repo Slot: `{ url, ref }`. `url` is the Repo's git url. `ref` is the branch
18
+ or commit that the branch Worktree starts from; absent, the Repo's default branch. Where only a
19
+ url is needed, a string is enough.
20
+
21
+ `workspace()` and `customize()` refuse:
22
+ - an empty `url`: ``<where>: Repo Slot "<slot>" is bound to an empty url (got <value>) — a slot
23
+ is `open`, a url, `{ url, ref? }`, or a mapper `({ input }) => url | { url, ref? }` over the
24
+ door (ADR-0051).``
25
+ - an empty `ref`: the same text, with `bound with an empty ref` in place of `bound to an empty
26
+ url`.
27
+ - a url that names no Repo, such as a relative path: ``<where>: Repo Slot "<slot>" binds
28
+ "<url>", which names no Repo — <reason> (ADR-0051).``
29
+
30
+ **Fields**
31
+
32
+ - `url`: `string`
33
+
34
+ The Repo's git url.
35
+ - `ref` (optional): `string`
36
+
37
+ The branch or commit that the branch Worktree starts from. Default: the Repo's default
38
+ branch.
39
+
40
+ **Example**
41
+
42
+ ```ts
43
+ import { jr2Setup, workspace, type Binding } from "@jr2/orchestrator";
44
+
45
+ const app: Binding = { url: "https://github.com/you/app.git", ref: "release-2" };
46
+
47
+ const body = jr2Setup().createMachine({
48
+ id: "body",
49
+ initial: "done",
50
+ states: { done: { type: "final" } },
51
+ });
52
+
53
+ export const machine = workspace(body, {
54
+ repos: { app },
55
+ spec: () => ({ branch: "jr2/hotfix" }),
56
+ });
57
+ ```
58
+
59
+ **See also**
60
+
61
+ - [Workspaces](../../concepts/workspaces.md)
62
+ - [ADR-0051: A Repo is a slot on the `workspace()` and a cache on the node](../decisions/0051-a-repo-is-a-slot-on-the-workspace-and-a-cache-on-the-node.md)
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: BindingOf
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `BindingOf`
7
+
8
+ Type, in `@jr2/orchestrator/src/customize.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 BindingOf<L> = L extends OpenEffect<infer P> ? Intersected<PartBinding<P>> : never;
12
+ ```
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: BodyAcceptsDoor
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `BodyAcceptsDoor`
7
+
8
+ Type, in `@jr2/orchestrator/src/workspace.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 BodyAcceptsDoor<TBody extends AnyStateMachine, TDoor, TSlots extends string> =
12
+ TDoor & Workspaced<TDoor, TSlots> & HostInjectedInput extends InputFrom<TBody>
13
+ ? BodyNamesNoSlotUnderOpenMap<TBody, TSlots>
14
+ : { "the body's declared input must accept the door plus the injected handles": Workspaced<TDoor, TSlots> };
15
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: BodyAcceptsSlots
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `BodyAcceptsSlots`
7
+
8
+ Type, in `@jr2/orchestrator/src/workspace.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 BodyAcceptsSlots<TBody extends AnyStateMachine, TSlots extends string> =
12
+ InputFrom<TBody> extends { workspace: infer THandles }
13
+ ? WorkspaceHandles<TSlots> extends THandles
14
+ ? BodyNamesNoSlotUnderOpenMap<TBody, TSlots>
15
+ : { "the body's declared handles must accept the Repo Slots the wrapper declares": WorkspaceHandles<TSlots> }
16
+ : unknown;
17
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Ceilings
3
+ description: The limits that an Open body sets on its Chart.
4
+ ---
5
+
6
+ # `Ceilings`
7
+
8
+ Type, in `@jr2/orchestrator/src/open-body.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 Ceilings = {
12
+ turns: number;
13
+ wallClock: Duration;
14
+ transitions: number;
15
+ fanOut: number;
16
+ size: number;
17
+ };
18
+ ```
19
+
20
+ The limits that an Open body sets on its Chart. Each one is a positive bound. When the Chart gets
21
+ to one, the Open body stops it and ends with `{ outcome: "ceiling", ceiling, detail }`.
22
+
23
+ **Fields**
24
+
25
+ - `turns`: `number`
26
+
27
+ The Agent Turns that start under the Open body, at all levels. The Turns of a lent Machine
28
+ count too.
29
+ - `wallClock`: [`Duration`](type-duration.md)
30
+
31
+ The time from the start of the Open body, such as `"30m"`. At most about 596 hours.
32
+ - `transitions`: `number`
33
+
34
+ The transitions of the Chart in the whole run. xstate has no guard against a loop, so this is
35
+ the guard.
36
+ - `fanOut`: `number`
37
+
38
+ The children that run under the Open body at one time.
39
+ - `size`: `number`
40
+
41
+ The size of the Chart, as JSON, in bytes. At most 1048576 (1 MiB).
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: ChainLink
3
+ description: "One reply since the pick, as the author reads it: an invoked actor's output, typed by its slot (`src`); or an event that answered a state below the Agent's — a Gate's answer, a nested Agent's pick — typed by the Machine's events."
4
+ ---
5
+
6
+ # `ChainLink`
7
+
8
+ Type, in `@jr2/orchestrator/src/pick.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 ChainLink<TActor extends ProvidedActor, TEvent extends EventObject> =
12
+ | (TActor extends unknown ? { kind: "output"; src: TActor["src"]; output: OutputFrom<TActor["logic"]> } : never)
13
+ | { kind: "event"; event: Exclude<TEvent, { type: `${string}.${string}` }> };
14
+ ```
15
+
16
+ One reply since the pick, as the author reads it: an invoked actor's output, typed by its slot
17
+ (`src`); or an event that answered a state below the Agent's — a Gate's answer, a nested Agent's
18
+ pick — typed by the Machine's events. A reply is from outside the Machine: the events it sends
19
+ itself are not links.
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: ChartAction
3
+ description: An action.
4
+ ---
5
+
6
+ # `ChartAction`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartAction =
12
+ | { type: "set"; path: string; from: ChartValue }
13
+ | { type: "append"; path: string; from: ChartValue }
14
+ | { type: "increment"; path: string; by?: number }
15
+ | { type: "clear"; path: string }
16
+ | { type: string; params?: ChartValue };
17
+ ```
18
+
19
+ An action. The four generic ones write the run's context at `path`, a context path WITHOUT the
20
+ `context.` root (`"round"`, `"ticket.notes"`, `"items.0"`); every other `type` is a lent action.
21
+
22
+ **Forms**: it is one of these objects.
23
+
24
+ - Form 1: `type`, `path`, `from`
25
+
26
+ - `type`: `"set"`
27
+ - `path`: `string`
28
+ - `from`: [`ChartValue`](type-chartvalue.md)
29
+ - Form 2: `type`, `path`, `from`
30
+
31
+ - `type`: `"append"`
32
+ - `path`: `string`
33
+ - `from`: [`ChartValue`](type-chartvalue.md)
34
+ - Form 3: `type`, `path`, `by`
35
+
36
+ - `type`: `"increment"`
37
+ - `path`: `string`
38
+ - `by` (optional): `number`
39
+ - Form 4: `type`, `path`
40
+
41
+ - `type`: `"clear"`
42
+ - `path`: `string`
43
+ - Form 5: `type`, `params`
44
+
45
+ - `type`: `string`
46
+ - `params` (optional): [`ChartValue`](type-chartvalue.md)
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: ChartAgent
3
+ description: "An Agent a Chart mints: the plain fields of an Agent definition (ADR-0049)."
4
+ ---
5
+
6
+ # `ChartAgent`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartAgent = {
12
+ model: string;
13
+ instructions: string;
14
+ description?: string;
15
+ thinkingLevel?: ThinkingLevel;
16
+ workspace?: WorkspaceAccess;
17
+ };
18
+ ```
19
+
20
+ An Agent a Chart mints: the plain fields of an Agent definition ([ADR-0049](../decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md)).
21
+
22
+ **Fields**
23
+
24
+ - `model`: `string`
25
+ - `instructions`: `string`
26
+ - `description` (optional): `string`
27
+ - `thinkingLevel` (optional): [`ThinkingLevel`](type-thinkinglevel.md)
28
+ - `workspace` (optional): [`WorkspaceAccess`](type-workspaceaccess.md)
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: ChartEvent
3
+ description: "An event a Chart mints: its payload is a JSON Schema object, built into zod at admission."
4
+ ---
5
+
6
+ # `ChartEvent`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartEvent = { description?: string; input: Record<string, unknown>; audience?: EventAudience };
12
+ ```
13
+
14
+ An event a Chart mints: its payload is a JSON Schema object, built into zod at admission.
15
+
16
+ **Fields**
17
+
18
+ - `description` (optional): `string`
19
+ - `input`: `Record<string, unknown>`
20
+ - `audience` (optional): [`EventAudience`](type-eventaudience.md)
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: ChartGuard
3
+ description: "A guard: a lent guard by name, with or without params, `jr2.sentBy`, `jr2.failure`, or `not`/`and`/`or`."
4
+ ---
5
+
6
+ # `ChartGuard`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartGuard =
12
+ | string
13
+ | { type: string; params?: ChartValue }
14
+ | { not: ChartGuard }
15
+ | { and: ChartGuard[] }
16
+ | { or: ChartGuard[] };
17
+ ```
18
+
19
+ A guard: a lent guard by name, with or without params, `jr2.sentBy`, `jr2.failure`, or
20
+ `not`/`and`/`or`.
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: ChartInvoke
3
+ description: "An invoke: a lent Agent, Effect or Machine, a minted Agent, or the kit's `gate` or `fail`."
4
+ ---
5
+
6
+ # `ChartInvoke`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartInvoke = {
12
+ src: string;
13
+ id?: string;
14
+ input?: ChartValue;
15
+ onDone?: ChartTransitions;
16
+ onError?: ChartTransitions;
17
+ };
18
+ ```
19
+
20
+ An invoke: a lent Agent, Effect or Machine, a minted Agent, or the kit's `gate` or `fail`.
21
+
22
+ **Fields**
23
+
24
+ - `src`: `string`
25
+ - `id` (optional): `string`
26
+ - `input` (optional): [`ChartValue`](type-chartvalue.md)
27
+ - `onDone` (optional): [`ChartTransitions`](type-charttransitions.md)
28
+ - `onError` (optional): [`ChartTransitions`](type-charttransitions.md)
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: ChartJson
3
+ description: Plain JSON.
4
+ ---
5
+
6
+ # `ChartJson`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartJson = string | number | boolean | null | ChartJson[] | { [key: string]: ChartJson };
12
+ ```
13
+
14
+ Plain JSON.
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: ChartState
3
+ description: A state node.
4
+ ---
5
+
6
+ # `ChartState`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartState = {
12
+ type?: "atomic" | "compound" | "parallel" | "final" | "history";
13
+ initial?: string;
14
+ states?: Record<string, ChartState>;
15
+ history?: "shallow" | "deep";
16
+ invoke?: ChartInvoke | ChartInvoke[];
17
+ on?: Record<string, ChartTransitions>;
18
+ always?: ChartTransitions;
19
+ after?: Record<string, ChartTransitions>;
20
+ entry?: ChartAction[];
21
+ exit?: ChartAction[];
22
+ output?: ChartValue;
23
+ meta?: ChartJson;
24
+ tags?: string[];
25
+ description?: string;
26
+ };
27
+ ```
28
+
29
+ A state node.
30
+
31
+ **Fields**
32
+
33
+ - `type` (optional): `"atomic" | "compound" | "parallel" | "final" | "history"`
34
+ - `initial` (optional): `string`
35
+ - `states` (optional): `Record<string, ChartState>`
36
+ - `history` (optional): `"shallow" | "deep"`
37
+ - `invoke` (optional): `ChartInvoke | ChartInvoke[]`
38
+ - `on` (optional): `Record<string, ChartTransitions>`
39
+ - `always` (optional): [`ChartTransitions`](type-charttransitions.md)
40
+ - `after` (optional): `Record<string, ChartTransitions>`
41
+ - `entry` (optional): `ChartAction[]`
42
+ - `exit` (optional): `ChartAction[]`
43
+ - `output` (optional): [`ChartValue`](type-chartvalue.md)
44
+ - `meta` (optional): [`ChartJson`](type-chartjson.md)
45
+ - `tags` (optional): `string[]`
46
+ - `description` (optional): `string`
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: ChartText
3
+ description: The Chart text (ADR-0070).
4
+ ---
5
+
6
+ # `ChartText`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartText = {
12
+ version?: 1;
13
+ id?: string;
14
+ context?: Record<string, ChartJson>;
15
+ events?: Record<string, ChartEvent>;
16
+ agents?: Record<string, ChartAgent>;
17
+ initial: string;
18
+ states: Record<string, ChartState>;
19
+ output?: ChartValue;
20
+ };
21
+ ```
22
+
23
+ The Chart text ([ADR-0070](../decisions/0070-a-machine-lends-its-parts-to-a-chart.md)). Every key here is the whole grammar: the door refuses any other.
24
+
25
+ **Fields**
26
+
27
+ - `version` (optional): `1`
28
+ - `id` (optional): `string`
29
+
30
+ The machine id. Default: the Open body's slot key. A `#` target needs it.
31
+ - `context` (optional): `Record<string, ChartJson>`
32
+
33
+ The initial context: plain JSON, no references.
34
+ - `events` (optional): `Record<string, ChartEvent>`
35
+ - `agents` (optional): `Record<string, ChartAgent>`
36
+ - `initial`: `string`
37
+ - `states`: `Record<string, ChartState>`
38
+ - `output` (optional): [`ChartValue`](type-chartvalue.md)
39
+
40
+ The Chart's output, resolved when the Chart is done.
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: ChartTransition
3
+ description: "A transition: a target alone, or the object form."
4
+ ---
5
+
6
+ # `ChartTransition`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartTransition =
12
+ | string
13
+ | {
14
+ target?: string | string[];
15
+ guard?: ChartGuard;
16
+ actions?: ChartAction[];
17
+ reenter?: boolean;
18
+ description?: string;
19
+ };
20
+ ```
21
+
22
+ A transition: a target alone, or the object form.
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: ChartTransitions
3
+ description: "One transition or a list, in xstate's order."
4
+ ---
5
+
6
+ # `ChartTransitions`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartTransitions = ChartTransition | ChartTransition[];
12
+ ```
13
+
14
+ One transition or a list, in xstate's order.
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: ChartValue
3
+ description: "A value whose strings may hold `{{<root>.<path>}}` placeholders and whose objects may be `{ \"$ref\": \"<root>.<path>\" }`."
4
+ ---
5
+
6
+ # `ChartValue`
7
+
8
+ Type, in `@jr2/orchestrator/src/chart.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 ChartValue = ChartJson;
12
+ ```
13
+
14
+ A value whose strings may hold `{{<root>.<path>}}` placeholders and whose objects may be
15
+ `{ "$ref": "<root>.<path>" }`. Resolved by `resolveReferences` at invoke time.
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ChildAt
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `ChildAt`
7
+
8
+ Type, in `@jr2/orchestrator/src/customize.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 ChildAt<M extends AnyStateMachine, K extends string> = Extract<LogicAt<M, K>, AnyStateMachine>;
12
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ChildSlots
3
+ description: A type that the Authoring surface names.
4
+ ---
5
+
6
+ # `ChildSlots`
7
+
8
+ Type, in `@jr2/orchestrator/src/customize.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 ChildSlots<M extends AnyStateMachine> = Extract<SlotsOf<M>, { logic: AnyStateMachine }>["src"];
12
+ ```