@jr2/orchestrator 0.4.1 → 0.6.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.
- package/README.md +20 -2
- package/console/components/app.ts +2 -0
- package/console/components/fleet.ts +14 -1
- package/console/components/machine-pane.ts +41 -2
- package/console/main.ts +13 -1
- package/console/store.ts +102 -6
- package/console/style.css +21 -0
- package/docs/agents-block.md +5 -0
- package/docs/concepts/agents-and-turns.md +478 -0
- package/docs/concepts/architecture.md +243 -0
- package/docs/concepts/charts.md +146 -0
- package/docs/concepts/composition.md +357 -0
- package/docs/concepts/converge.md +257 -0
- package/docs/concepts/durable-runs.md +189 -0
- package/docs/concepts/effects.md +658 -0
- package/docs/concepts/gates.md +208 -0
- package/docs/concepts/machines-and-workflows.md +298 -0
- package/docs/concepts/pools-and-sources.md +230 -0
- package/docs/concepts/secrets-and-trust.md +306 -0
- package/docs/concepts/the-menu.md +381 -0
- package/docs/concepts/workspaces.md +756 -0
- package/docs/get-started/a-model-decides.md +563 -0
- package/docs/get-started/an-agent-in-a-sandbox.md +383 -0
- package/docs/get-started/connect-a-model.md +248 -0
- package/docs/get-started/create-an-instance.md +194 -0
- package/docs/get-started/have-your-assistant-write-a-machine.md +993 -0
- package/docs/get-started/install.md +130 -0
- package/docs/guides/add-tools-to-the-sandbox.md +308 -0
- package/docs/guides/answer-a-gate.md +304 -0
- package/docs/guides/bind-open-parts.md +224 -0
- package/docs/guides/cancel-a-run.md +146 -0
- package/docs/guides/clean-up.md +206 -0
- package/docs/guides/cut-a-worktree.md +560 -0
- package/docs/guides/fix-a-failed-converge.md +361 -0
- package/docs/guides/give-the-cluster-git-credentials.md +222 -0
- package/docs/guides/iterate-on-a-machine-on-kind.md +190 -0
- package/docs/guides/let-an-agent-write-a-chart.md +230 -0
- package/docs/guides/look-inside-a-sandbox.md +177 -0
- package/docs/guides/mirror-the-kit-images.md +176 -0
- package/docs/guides/move-from-kind-to-a-shared-cluster.md +318 -0
- package/docs/guides/open-the-console.md +91 -0
- package/docs/guides/publish-a-machine-as-an-npm-package.md +350 -0
- package/docs/guides/push-and-sign-a-branch.md +532 -0
- package/docs/guides/run-a-chart-by-name.md +270 -0
- package/docs/guides/run-a-command-or-call-a-url.md +587 -0
- package/docs/guides/run-one-worker-per-item.md +322 -0
- package/docs/guides/set-an-agents-access-and-dials.md +420 -0
- package/docs/guides/size-a-workspace.md +217 -0
- package/docs/guides/start-a-run-from-a-run.md +237 -0
- package/docs/guides/start-a-run.md +207 -0
- package/docs/guides/upgrade-the-kit-version.md +240 -0
- package/docs/guides/use-a-hosted-provider.md +214 -0
- package/docs/guides/use-a-local-model.md +313 -0
- package/docs/guides/watch-a-run.md +349 -0
- package/docs/guides/write-a-workflow.md +318 -0
- package/docs/index.md +44 -0
- package/docs/llms.txt +237 -0
- package/docs/reference/authoring-surface/agent.md +151 -0
- package/docs/reference/authoring-surface/answer.md +156 -0
- package/docs/reference/authoring-surface/arg.md +82 -0
- package/docs/reference/authoring-surface/basic.md +62 -0
- package/docs/reference/authoring-surface/bearer.md +53 -0
- package/docs/reference/authoring-surface/branchname.md +15 -0
- package/docs/reference/authoring-surface/chartschema.md +23 -0
- package/docs/reference/authoring-surface/chartschemafor.md +48 -0
- package/docs/reference/authoring-surface/command.md +206 -0
- package/docs/reference/authoring-surface/customize.md +64 -0
- package/docs/reference/authoring-surface/defineconfig.md +41 -0
- package/docs/reference/authoring-surface/defineevent.md +114 -0
- package/docs/reference/authoring-surface/dispatch.md +126 -0
- package/docs/reference/authoring-surface/fail.md +96 -0
- package/docs/reference/authoring-surface/file.md +142 -0
- package/docs/reference/authoring-surface/frompick.md +277 -0
- package/docs/reference/authoring-surface/http.md +259 -0
- package/docs/reference/authoring-surface/isfailure.md +58 -0
- package/docs/reference/authoring-surface/isready.md +14 -0
- package/docs/reference/authoring-surface/jr2setup.md +237 -0
- package/docs/reference/authoring-surface/open.md +105 -0
- package/docs/reference/authoring-surface/openbody.md +86 -0
- package/docs/reference/authoring-surface/paramsof.md +143 -0
- package/docs/reference/authoring-surface/pool.md +186 -0
- package/docs/reference/authoring-surface/push.md +130 -0
- package/docs/reference/authoring-surface/readyof.md +21 -0
- package/docs/reference/authoring-surface/secret.md +139 -0
- package/docs/reference/authoring-surface/sentby.md +83 -0
- package/docs/reference/authoring-surface/source.md +51 -0
- package/docs/reference/authoring-surface/text.md +62 -0
- package/docs/reference/authoring-surface/type-agentdeclaration.md +27 -0
- package/docs/reference/authoring-surface/type-agentdefinition.md +80 -0
- package/docs/reference/authoring-surface/type-agentlogic.md +15 -0
- package/docs/reference/authoring-surface/type-agentslots.md +15 -0
- package/docs/reference/authoring-surface/type-answeraction.md +12 -0
- package/docs/reference/authoring-surface/type-anyframepath.md +14 -0
- package/docs/reference/authoring-surface/type-anyworktreepath.md +15 -0
- package/docs/reference/authoring-surface/type-arg.md +19 -0
- package/docs/reference/authoring-surface/type-argnames.md +12 -0
- package/docs/reference/authoring-surface/type-bindactors.md +14 -0
- package/docs/reference/authoring-surface/type-binding.md +61 -0
- package/docs/reference/authoring-surface/type-bindingof.md +12 -0
- package/docs/reference/authoring-surface/type-bodyacceptsdoor.md +15 -0
- package/docs/reference/authoring-surface/type-bodyacceptsslots.md +17 -0
- package/docs/reference/authoring-surface/type-ceilings.md +41 -0
- package/docs/reference/authoring-surface/type-chainlink.md +19 -0
- package/docs/reference/authoring-surface/type-chartaction.md +46 -0
- package/docs/reference/authoring-surface/type-chartagent.md +28 -0
- package/docs/reference/authoring-surface/type-chartevent.md +20 -0
- package/docs/reference/authoring-surface/type-chartguard.md +20 -0
- package/docs/reference/authoring-surface/type-chartinvoke.md +28 -0
- package/docs/reference/authoring-surface/type-chartjson.md +14 -0
- package/docs/reference/authoring-surface/type-chartstate.md +46 -0
- package/docs/reference/authoring-surface/type-charttext.md +40 -0
- package/docs/reference/authoring-surface/type-charttransition.md +22 -0
- package/docs/reference/authoring-surface/type-charttransitions.md +14 -0
- package/docs/reference/authoring-surface/type-chartvalue.md +15 -0
- package/docs/reference/authoring-surface/type-childat.md +12 -0
- package/docs/reference/authoring-surface/type-childslots.md +12 -0
- package/docs/reference/authoring-surface/type-commandenv.md +15 -0
- package/docs/reference/authoring-surface/type-commandinput.md +20 -0
- package/docs/reference/authoring-surface/type-commandoptions.md +56 -0
- package/docs/reference/authoring-surface/type-commandoutput.md +122 -0
- package/docs/reference/authoring-surface/type-customize.md +111 -0
- package/docs/reference/authoring-surface/type-dispatchdefinition.md +39 -0
- package/docs/reference/authoring-surface/type-dispatchinput.md +14 -0
- package/docs/reference/authoring-surface/type-dispatchopenparts.md +14 -0
- package/docs/reference/authoring-surface/type-dispatchoutput.md +72 -0
- package/docs/reference/authoring-surface/type-doorlessinput.md +19 -0
- package/docs/reference/authoring-surface/type-duration.md +15 -0
- package/docs/reference/authoring-surface/type-effectbinding.md +93 -0
- package/docs/reference/authoring-surface/type-effectlogic.md +12 -0
- package/docs/reference/authoring-surface/type-envopenparts.md +14 -0
- package/docs/reference/authoring-surface/type-eventaudience.md +27 -0
- package/docs/reference/authoring-surface/type-eventdef.md +45 -0
- package/docs/reference/authoring-surface/type-eventfrom.md +16 -0
- package/docs/reference/authoring-surface/type-eventsemantics.md +26 -0
- package/docs/reference/authoring-surface/type-execoutcome.md +34 -0
- package/docs/reference/authoring-surface/type-failslot.md +14 -0
- package/docs/reference/authoring-surface/type-failure.md +19 -0
- package/docs/reference/authoring-surface/type-failureinput.md +20 -0
- package/docs/reference/authoring-surface/type-filebody.md +37 -0
- package/docs/reference/authoring-surface/type-framepath.md +14 -0
- package/docs/reference/authoring-surface/type-frominput.md +14 -0
- package/docs/reference/authoring-surface/type-hostinjectedinput.md +56 -0
- package/docs/reference/authoring-surface/type-httpdefinition.md +104 -0
- package/docs/reference/authoring-surface/type-httpfileinput.md +20 -0
- package/docs/reference/authoring-surface/type-httpinput.md +12 -0
- package/docs/reference/authoring-surface/type-httpmethod.md +14 -0
- package/docs/reference/authoring-surface/type-httpopenparts.md +12 -0
- package/docs/reference/authoring-surface/type-httpoutput.md +95 -0
- package/docs/reference/authoring-surface/type-httprequestparts.md +33 -0
- package/docs/reference/authoring-surface/type-jr2config.md +126 -0
- package/docs/reference/authoring-surface/type-lateroutcome.md +21 -0
- package/docs/reference/authoring-surface/type-lends.md +38 -0
- package/docs/reference/authoring-surface/type-logicat.md +12 -0
- package/docs/reference/authoring-surface/type-markedif.md +12 -0
- package/docs/reference/authoring-surface/type-mergedactors.md +12 -0
- package/docs/reference/authoring-surface/type-namedsecret.md +25 -0
- package/docs/reference/authoring-surface/type-namestart.md +77 -0
- package/docs/reference/authoring-surface/type-noslotworkspaceoptions.md +27 -0
- package/docs/reference/authoring-surface/type-notworktreekeys.md +12 -0
- package/docs/reference/authoring-surface/type-openbodydeclaration.md +40 -0
- package/docs/reference/authoring-surface/type-openbodylogic.md +14 -0
- package/docs/reference/authoring-surface/type-openbodyoutput.md +42 -0
- package/docs/reference/authoring-surface/type-openbodyslot.md +18 -0
- package/docs/reference/authoring-surface/type-opencommandinput.md +22 -0
- package/docs/reference/authoring-surface/type-openeffect.md +12 -0
- package/docs/reference/authoring-surface/type-openeffectslots.md +12 -0
- package/docs/reference/authoring-surface/type-openof.md +12 -0
- package/docs/reference/authoring-surface/type-opensecret.md +23 -0
- package/docs/reference/authoring-surface/type-opensecretmark.md +12 -0
- package/docs/reference/authoring-surface/type-permissivenoslotworkspaceoptions.md +26 -0
- package/docs/reference/authoring-surface/type-permissiveworkspaceoptions.md +27 -0
- package/docs/reference/authoring-surface/type-poolmachine.md +28 -0
- package/docs/reference/authoring-surface/type-poolnextinput.md +22 -0
- package/docs/reference/authoring-surface/type-poolspec.md +60 -0
- package/docs/reference/authoring-surface/type-pushinput.md +34 -0
- package/docs/reference/authoring-surface/type-pushoptions.md +79 -0
- package/docs/reference/authoring-surface/type-pushoutput.md +149 -0
- package/docs/reference/authoring-surface/type-pushwireoutput.md +12 -0
- package/docs/reference/authoring-surface/type-quantity.md +14 -0
- package/docs/reference/authoring-surface/type-reached.md +12 -0
- package/docs/reference/authoring-surface/type-reposlot.md +70 -0
- package/docs/reference/authoring-surface/type-reposlotsof.md +16 -0
- package/docs/reference/authoring-surface/type-sandboxoptions.md +84 -0
- package/docs/reference/authoring-surface/type-secret.md +25 -0
- package/docs/reference/authoring-surface/type-sender.md +19 -0
- package/docs/reference/authoring-surface/type-sentbyguards.md +12 -0
- package/docs/reference/authoring-surface/type-size.md +85 -0
- package/docs/reference/authoring-surface/type-slothandles.md +24 -0
- package/docs/reference/authoring-surface/type-sourcenextresult.md +17 -0
- package/docs/reference/authoring-surface/type-sourcespec.md +44 -0
- package/docs/reference/authoring-surface/type-syncstate.md +12 -0
- package/docs/reference/authoring-surface/type-text.md +19 -0
- package/docs/reference/authoring-surface/type-textpart.md +24 -0
- package/docs/reference/authoring-surface/type-thinkinglevel.md +39 -0
- package/docs/reference/authoring-surface/type-toparameterizedobject.md +14 -0
- package/docs/reference/authoring-surface/type-toprovidedactor.md +14 -0
- package/docs/reference/authoring-surface/type-unknown.md +21 -0
- package/docs/reference/authoring-surface/type-usercontainer.md +77 -0
- package/docs/reference/authoring-surface/type-withoutemptyindex.md +20 -0
- package/docs/reference/authoring-surface/type-workflowevent.md +46 -0
- package/docs/reference/authoring-surface/type-workspaceaccess.md +16 -0
- package/docs/reference/authoring-surface/type-workspaced.md +115 -0
- package/docs/reference/authoring-surface/type-workspacehandles.md +22 -0
- package/docs/reference/authoring-surface/type-workspacemachine.md +29 -0
- package/docs/reference/authoring-surface/type-workspaceof.md +13 -0
- package/docs/reference/authoring-surface/type-workspaceoptions.md +27 -0
- package/docs/reference/authoring-surface/type-worktreefound.md +16 -0
- package/docs/reference/authoring-surface/type-worktreeinput.md +56 -0
- package/docs/reference/authoring-surface/type-worktreekey.md +14 -0
- package/docs/reference/authoring-surface/type-worktreeoptions.md +29 -0
- package/docs/reference/authoring-surface/type-worktreeoutput.md +45 -0
- package/docs/reference/authoring-surface/type-worktreepath.md +16 -0
- package/docs/reference/authoring-surface/type-worktreeready.md +37 -0
- package/docs/reference/authoring-surface/type-worktreerefused.md +21 -0
- package/docs/reference/authoring-surface/workspace.md +287 -0
- package/docs/reference/authoring-surface/worktree.md +71 -0
- package/docs/reference/authoring-surface.md +217 -0
- package/docs/reference/cli.md +433 -0
- package/docs/reference/config.md +765 -0
- package/docs/reference/decisions/0001-operator-owned-generic-sandbox.md +114 -0
- package/docs/reference/decisions/0002-duplex-streaming-actor.md +117 -0
- package/docs/reference/decisions/0004-worktree-provisioning-model.md +130 -0
- package/docs/reference/decisions/0005-sandbox-pod-composition.md +240 -0
- package/docs/reference/decisions/0006-agent-control-surface.md +50 -0
- package/docs/reference/decisions/0007-durable-machine-state.md +109 -0
- package/docs/reference/decisions/0008-orchestrator-as-deployed-app.md +60 -0
- package/docs/reference/decisions/0009-cli-and-instance-interface.md +275 -0
- package/docs/reference/decisions/0010-bdd-acceptance-tests.md +160 -0
- package/docs/reference/decisions/0011-workflow-defined-events.md +141 -0
- package/docs/reference/decisions/0012-workspace-wrapper-machine.md +103 -0
- package/docs/reference/decisions/0013-the-agent-reaches-its-machine-through-a-container-it-cannot-read.md +175 -0
- package/docs/reference/decisions/0014-observation-is-open-run-state-is-not.md +95 -0
- package/docs/reference/decisions/0015-authoring-surface-absorbs-the-mechanism.md +271 -0
- package/docs/reference/decisions/0016-agent-turn-mechanics-are-internal.md +126 -0
- package/docs/reference/decisions/0017-pool-over-a-source-port.md +71 -0
- package/docs/reference/decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md +111 -0
- package/docs/reference/decisions/0019-one-converging-command-against-the-current-context.md +287 -0
- package/docs/reference/decisions/0020-private-ca-trust-is-a-named-concept.md +60 -0
- package/docs/reference/decisions/0021-workspace-continuity-is-a-lease-that-answers-back.md +101 -0
- package/docs/reference/decisions/0022-observation-is-a-level-triggered-feed.md +103 -0
- package/docs/reference/decisions/0023-the-harness-prints-the-conversation.md +175 -0
- package/docs/reference/decisions/0024-an-agents-turn-ends-with-the-state-that-asked-for-it.md +436 -0
- package/docs/reference/decisions/0025-cancel-ends-a-run-stop-parks-it.md +65 -0
- package/docs/reference/decisions/0026-a-turn-that-is-over-is-never-prompted.md +62 -0
- package/docs/reference/decisions/0027-the-harness-is-jr2s-own-server-flue-retires-the-wire-stays.md +245 -0
- package/docs/reference/decisions/0028-what-an-agent-may-do-to-the-workspace-is-part-of-its-definition.md +90 -0
- package/docs/reference/decisions/0029-a-menu-is-fixed-for-a-conversation-and-a-turn-is-told-its-allowed-picks.md +154 -0
- package/docs/reference/decisions/0030-a-snapshot-names-the-machine-it-was-written-under.md +100 -0
- package/docs/reference/decisions/0031-menu-only-agents-run-on-the-instance-harness.md +193 -0
- package/docs/reference/decisions/0032-the-console-unlocks-with-the-instance-token.md +61 -0
- package/docs/reference/decisions/0033-a-machine-declares-the-input-that-starts-it.md +126 -0
- package/docs/reference/decisions/0034-the-console-renders-with-preact-and-the-server-erases-the-types.md +57 -0
- package/docs/reference/decisions/0035-a-runaway-turn-is-ended-rerolled-once-then-a-fault.md +92 -0
- package/docs/reference/decisions/0036-a-turn-compacts-its-own-context-mid-flight.md +138 -0
- package/docs/reference/decisions/0037-an-instance-builds-its-sandbox-images-jr2-injects-the-harness.md +196 -0
- package/docs/reference/decisions/0038-jr2-up-builds-every-image-it-deploys.md +170 -0
- package/docs/reference/decisions/0039-image-garbage-collects-by-reachability.md +115 -0
- package/docs/reference/decisions/0041-a-build-the-host-already-holds-is-not-spent-again.md +64 -0
- package/docs/reference/decisions/0042-ready-is-not-routable-an-admission-retries-its-connection.md +142 -0
- package/docs/reference/decisions/0043-the-kit-is-tested-as-installed-a-local-registry-stands-in-for-npm.md +170 -0
- package/docs/reference/decisions/0044-kit-images-live-at-a-canonical-home-a-self-host-mirrors-it.md +85 -0
- package/docs/reference/decisions/0045-the-platform-joins-the-image-address-and-the-cluster-chooses-it.md +82 -0
- package/docs/reference/decisions/0046-a-converge-failure-carries-its-diagnosis.md +34 -0
- package/docs/reference/decisions/0047-the-git-ssh-key-source-is-the-users-choice.md +47 -0
- package/docs/reference/decisions/0048-the-orchestrator-boots-without-its-repos.md +36 -0
- package/docs/reference/decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md +126 -0
- package/docs/reference/decisions/0050-what-code-names-config-declares-what-the-cli-names-discovery-finds.md +73 -0
- package/docs/reference/decisions/0051-a-repo-is-a-slot-on-the-workspace-and-a-cache-on-the-node.md +238 -0
- package/docs/reference/decisions/0052-a-sandbox-lands-where-an-ordinary-pod-lands-and-the-cache-follows-it.md +86 -0
- package/docs/reference/decisions/0053-a-fetch-inside-the-pod-asks-the-node-cache-and-the-cache-asks-the-remote.md +123 -0
- package/docs/reference/decisions/0054-the-kit-ships-machines-and-a-shipped-machine-leaves-its-parts-open.md +126 -0
- package/docs/reference/decisions/0055-a-release-is-a-pushed-tag-and-the-publish-guard-is-the-credential.md +107 -0
- package/docs/reference/decisions/0056-a-global-jr2-hands-off-to-the-instances-own-and-an-instance-has-one-kit-version.md +62 -0
- package/docs/reference/decisions/0057-a-turn-is-its-frame-its-dials-and-whether-it-continues.md +152 -0
- package/docs/reference/decisions/0058-a-harness-answers-the-orchestrator-alone.md +108 -0
- package/docs/reference/decisions/0059-a-harness-holds-stand-ins-and-the-custodian-holds-the-keys.md +427 -0
- package/docs/reference/decisions/0060-a-workspace-states-its-size-and-jr2-reserves-all-of-it.md +111 -0
- package/docs/reference/decisions/0061-a-memory-kill-ends-the-agents-processes-not-the-harness.md +83 -0
- package/docs/reference/decisions/0062-jr2-briefs-the-agent-on-its-seat-never-on-its-task.md +239 -0
- package/docs/reference/decisions/0063-the-orchestrator-watches-the-cluster.md +82 -0
- package/docs/reference/decisions/0064-a-workspace-waits-for-capacity.md +79 -0
- package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-a-week.md +65 -0
- package/docs/reference/decisions/0066-a-model-tier-runs-a-real-model-and-a-change-to-what-it-reads-runs-the-tier.md +552 -0
- package/docs/reference/decisions/0067-an-effect-is-an-actor-slot-and-runs-at-most-once-unless-marked-idempotent.md +458 -0
- package/docs/reference/decisions/0068-an-effector-holds-an-effects-secrets-and-signs-its-wire.md +475 -0
- package/docs/reference/decisions/0069-the-orchestrator-is-a-kit-image-and-an-instance-publishes-its-assembly.md +180 -0
- package/docs/reference/decisions/0070-a-machine-lends-its-parts-to-a-chart.md +334 -0
- package/docs/reference/decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md +183 -0
- package/docs/reference/decisions/0072-the-docs-ship-inside-the-kit-and-an-instances-agents-md-indexes-them.md +144 -0
- package/docs/reference/decisions/0073-a-machine-fails-a-run-with-fail-and-an-uncaught-failure-ends-it-failed.md +122 -0
- package/docs/reference/decisions/0074-an-unrouted-mechanism-event-is-refused-at-load-and-faults-the-run.md +76 -0
- package/docs/reference/decisions/0075-a-machine-cuts-a-worktree-and-the-workspace-only-clones.md +295 -0
- package/docs/reference/decisions/0076-an-agents-control-credential-lives-only-where-no-workspace-code-runs.md +320 -0
- package/docs/reference/decisions/0077-jr2-requires-landlock-on-every-sandbox-node.md +79 -0
- package/docs/reference/decisions.md +86 -0
- package/docs/reference/glossary.md +687 -0
- package/docs/reference/http-api.md +1386 -0
- package/docs/reference/machines.md +189 -0
- package/docs/reference/mechanism-events.md +72 -0
- package/docs/why.md +207 -0
- package/package.json +5 -3
- package/src/actor.ts +694 -106
- package/src/agent.ts +114 -38
- package/src/ambient.ts +3 -4
- package/src/assembly-checks.ts +189 -7
- package/src/cause.ts +234 -0
- package/src/chart.ts +345 -46
- package/src/charts.ts +43 -8
- package/src/config.ts +440 -178
- package/src/custodian.lua +17 -5
- package/src/custodian.ts +325 -99
- package/src/customize.ts +199 -49
- package/src/dispatch-effect.ts +945 -0
- package/src/door-compat.ts +217 -0
- package/src/durability.ts +11 -4
- package/src/effect-checks.ts +50 -3
- package/src/effect.ts +641 -128
- package/src/effector-wire.ts +165 -13
- package/src/fail.ts +222 -0
- package/src/harness-client.ts +587 -50
- package/src/harness-env.ts +33 -0
- package/src/held-secrets.ts +125 -16
- package/src/holds.ts +3 -0
- package/src/http-effect.ts +556 -58
- package/src/http.ts +480 -30
- package/src/index.ts +74 -82
- package/src/instance.ts +68 -8
- package/src/internal.ts +85 -0
- package/src/kube-client.ts +6 -3
- package/src/machine-doc.ts +24 -7
- package/src/mechanism-routes.ts +168 -0
- package/src/model-keys.generated.ts +53 -0
- package/src/model-keys.ts +42 -58
- package/src/names.ts +19 -6
- package/src/notices.ts +483 -41
- package/src/open-body.ts +242 -40
- package/src/open-effect.ts +81 -8
- package/src/open.ts +90 -6
- package/src/parts.ts +213 -30
- package/src/party.ts +101 -2
- package/src/pick.ts +497 -11
- package/src/pool.ts +282 -50
- package/src/registration.ts +133 -12
- package/src/repo-identity.ts +7 -3
- package/src/repos.ts +22 -3
- package/src/run-host.ts +665 -45
- package/src/run-output.ts +38 -0
- package/src/sandbox-effect.ts +457 -71
- package/src/sandbox-kube.ts +66 -17
- package/src/secret-placement.ts +59 -17
- package/src/server.ts +3 -0
- package/src/setup.ts +325 -62
- package/src/size.ts +121 -9
- package/src/snapshot-store.ts +54 -10
- package/src/stub-harness.ts +44 -16
- package/src/timers.ts +14 -1
- package/src/tokens.ts +107 -32
- package/src/vocabulary.ts +88 -14
- package/src/wire.ts +100 -26
- package/src/workspace.ts +771 -238
- package/src/worktree.ts +249 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: HttpOutput
|
|
3
|
+
description: "The output of an `http` Effect: what the `onDone` of its state gets as `event.output`."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `HttpOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effector-wire.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type HttpOutput = LaterOutcome | {
|
|
12
|
+
outcome: "response";
|
|
13
|
+
status: number;
|
|
14
|
+
headers: Record<string, string>;
|
|
15
|
+
contentType: string;
|
|
16
|
+
size: number;
|
|
17
|
+
body?: string | undefined;
|
|
18
|
+
truncated?: boolean | undefined;
|
|
19
|
+
} | {
|
|
20
|
+
outcome: "unknown" | "unreachable" | "refused";
|
|
21
|
+
reason: string;
|
|
22
|
+
};
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The output of an `http` Effect: what the `onDone` of its state gets as `event.output`. Every
|
|
26
|
+
outcome is output. A 4xx or 5xx status is output too. Route on `outcome`:
|
|
27
|
+
|
|
28
|
+
- `response`: an answer came back. `status` is its HTTP status. `headers`, `contentType` and
|
|
29
|
+
`size` tell about the body. `body` is there when the body is text: at most `maxBody` bytes
|
|
30
|
+
(`truncated` is `true` when jr2 cut it). A body that is not text gives only its size and
|
|
31
|
+
content type. jr2 replaces each value of an Effect secret that the Effector holds, and its
|
|
32
|
+
usual encodings, with `[secret:<name>]`, in the body and the headers.
|
|
33
|
+
- `unreachable`: the call did not go out, for example because the name did not resolve, or the
|
|
34
|
+
connection or TLS failed. `reason` tells why.
|
|
35
|
+
- `refused`: jr2 or the Effector refused the call, and nothing was sent. For example, a path
|
|
36
|
+
segment that is `.`, `..` or empty, or a request that is too large. `reason` tells why.
|
|
37
|
+
- `unknown`: the call can have gone out, but no answer came, or jr2 cannot tell after a restart.
|
|
38
|
+
`reason` tells why. jr2 does not send it again unless it is marked `idempotent`.
|
|
39
|
+
|
|
40
|
+
The union is open (`LaterOutcome`): give the rest a last arm with no guard.
|
|
41
|
+
|
|
42
|
+
**Forms**: it is one of these objects.
|
|
43
|
+
|
|
44
|
+
- Form 1: `outcome`, `status`, `headers`, `contentType`, `size`, `body`, `truncated`
|
|
45
|
+
|
|
46
|
+
- `outcome`: `"response"`
|
|
47
|
+
- `status`: `number`
|
|
48
|
+
- `headers`: `Record<string, string>`
|
|
49
|
+
- `contentType`: `string`
|
|
50
|
+
- `size`: `number`
|
|
51
|
+
- `body` (optional): `string`
|
|
52
|
+
- `truncated` (optional): `boolean`
|
|
53
|
+
- Form 2: `outcome`, `reason`
|
|
54
|
+
|
|
55
|
+
- `outcome`: `"unknown" | "unreachable" | "refused"`
|
|
56
|
+
- `reason`: `string`
|
|
57
|
+
- Form 3: `outcome`, `reason`
|
|
58
|
+
|
|
59
|
+
- `outcome`: `"(a later outcome)"`
|
|
60
|
+
- `reason` (optional): `string`
|
|
61
|
+
|
|
62
|
+
**Example**
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import { fail, http, jr2Setup, type HttpOutput } from "@jr2/orchestrator";
|
|
66
|
+
|
|
67
|
+
const ok = (output: HttpOutput): boolean => output.outcome === "response" && output.status < 300;
|
|
68
|
+
|
|
69
|
+
export const machine = jr2Setup({
|
|
70
|
+
actors: { health: http({ method: "GET", url: "https://app.example.com/healthz" }), fail: fail() },
|
|
71
|
+
}).createMachine({
|
|
72
|
+
id: "health",
|
|
73
|
+
initial: "checking",
|
|
74
|
+
states: {
|
|
75
|
+
checking: {
|
|
76
|
+
invoke: {
|
|
77
|
+
src: "health",
|
|
78
|
+
onDone: [
|
|
79
|
+
{ guard: ({ event }) => ok(event.output), target: "healthy" },
|
|
80
|
+
{ target: "unhealthy" },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
healthy: { type: "final" },
|
|
85
|
+
// Not a final state: the run ends `failed`, and `jr2 run` exits 1.
|
|
86
|
+
unhealthy: { invoke: { src: "fail", input: { reason: "the app is not healthy" } } },
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**See also**
|
|
92
|
+
|
|
93
|
+
- [Effects](../../concepts/effects.md)
|
|
94
|
+
- [Run a command or call a URL with an Effect](../../guides/run-a-command-or-call-a-url.md)
|
|
95
|
+
- [ADR-0068: An Effector holds an Effect's secrets and signs its wire](../decisions/0068-an-effector-holds-an-effects-secrets-and-signs-its-wire.md)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: HttpRequestParts
|
|
3
|
+
description: "What the `request` of an `http` definition returns: the part of the request that changes for each run."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `HttpRequestParts`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/http-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 HttpRequestParts = {
|
|
12
|
+
path?: readonly string[];
|
|
13
|
+
json?: unknown;
|
|
14
|
+
text?: string;
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
What the `request` of an `http` definition returns: the part of the request that changes for
|
|
19
|
+
each run. The definition fixes the rest.
|
|
20
|
+
|
|
21
|
+
**Fields**
|
|
22
|
+
|
|
23
|
+
- `path` (optional): `readonly string[]`
|
|
24
|
+
|
|
25
|
+
Path segments that jr2 adds to the end of the url. jr2 encodes each segment. A segment that
|
|
26
|
+
is `.`, `..` or empty gives the output `refused`, and nothing is sent.
|
|
27
|
+
- `json` (optional): `unknown`
|
|
28
|
+
|
|
29
|
+
A JSON body. Do not give `text` too. When it starts, the Effect refuses both: ``http:
|
|
30
|
+
`request` returned both json and text``.
|
|
31
|
+
- `text` (optional): `string`
|
|
32
|
+
|
|
33
|
+
A text body.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: JR2Config
|
|
3
|
+
description: "The shape of `jr2.config.ts`: the deployment facts of an Instance, which a Machine cannot carry."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `JR2Config`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/config.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Config.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type JR2Config = {
|
|
12
|
+
name?: string;
|
|
13
|
+
secrets?: readonly SecretEntry[];
|
|
14
|
+
git?: GitConfig;
|
|
15
|
+
harness?: HarnessConfig;
|
|
16
|
+
sandbox?: SandboxConfig;
|
|
17
|
+
priorityClasses?: PriorityClasses;
|
|
18
|
+
registry?: string;
|
|
19
|
+
kitRegistry?: string;
|
|
20
|
+
platforms?: readonly string[];
|
|
21
|
+
operator?: {
|
|
22
|
+
manage?: boolean;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The shape of `jr2.config.ts`: the deployment facts of an Instance, which a Machine cannot carry.
|
|
28
|
+
It holds the Instance's name, its secrets, how the cluster authenticates to Repos, what the
|
|
29
|
+
Harness can reach, where Sandboxes run, and where images go. It names no Repo, no model and no
|
|
30
|
+
Sandbox Image: a Machine names those itself.
|
|
31
|
+
|
|
32
|
+
Every field is optional, and an Instance can run with no `jr2.config.ts`. Write the file as
|
|
33
|
+
`export default defineConfig({ … })`. When the config loads, a file with no default export is
|
|
34
|
+
refused: `` <file> has no default export (use `export default defineConfig({…})`) ``. The load also
|
|
35
|
+
checks the shape of `git.credentials`, `secrets`, `harness.catalog` and `priorityClasses`. It
|
|
36
|
+
checks that `sandbox` is an object, and checks its `resources`. Each refusal names the field.
|
|
37
|
+
`jr2 up` checks the rest.
|
|
38
|
+
|
|
39
|
+
**Fields**
|
|
40
|
+
|
|
41
|
+
- `name` (optional): `string`
|
|
42
|
+
|
|
43
|
+
The Instance's name. Its Kubernetes namespace is this name (`-n` overrides it), and
|
|
44
|
+
`jr2 up` labels every object that it owns with it. Default: the name of the Instance folder.
|
|
45
|
+
- `secrets` (optional): `readonly SecretEntry[]`
|
|
46
|
+
|
|
47
|
+
Every secret of the Instance, in one list. A secret goes where something names it. A Held
|
|
48
|
+
secret goes where a `workspace()` lists it under `secrets` or an Agent's provider reads it. An
|
|
49
|
+
Effect secret goes where an Effect names it with `secret("name")`. Its `hosts` is a Held
|
|
50
|
+
secret's binding, never its placement: an entry that nothing names goes nowhere. A model API
|
|
51
|
+
key goes here, never in `harness.env`. See [`SecretEntry`](../config.md#secrets). Each entry is checked when the
|
|
52
|
+
config loads: `<file> at secrets[<i>]<path>: <problem>`, followed by the shape of an entry.
|
|
53
|
+
- `git` (optional): [`GitConfig`](../config.md#git)
|
|
54
|
+
|
|
55
|
+
How the cluster authenticates to Repos, and the fence that a per-run url must pass. It is not
|
|
56
|
+
a list of Repos: a Machine names its Repos in the Repo Slots of its `workspace()`. See
|
|
57
|
+
[`GitConfig`](../config.md#git).
|
|
58
|
+
- `harness` (optional): [`HarnessConfig`](../config.md#harness)
|
|
59
|
+
|
|
60
|
+
What the Harness can reach: a custom model provider, gateways for catalog providers, env
|
|
61
|
+
vars, and CAs. See [`HarnessConfig`](../config.md#harness).
|
|
62
|
+
- `sandbox` (optional): [`SandboxConfig`](../config.md#sandbox)
|
|
63
|
+
|
|
64
|
+
Which nodes are Sandbox nodes, and the Size of a Workspace that states none. Default: a
|
|
65
|
+
Sandbox runs wherever an ordinary pod runs, at the kit's Size. See [`SandboxConfig`](../config.md#sandbox).
|
|
66
|
+
- `priorityClasses` (optional): [`PriorityClasses`](../config.md#priorityclasses)
|
|
67
|
+
|
|
68
|
+
Existing PriorityClasses to use in place of the two that `jr2 up` creates. See
|
|
69
|
+
[`PriorityClasses`](../config.md#priorityclasses).
|
|
70
|
+
- `registry` (optional): `string`
|
|
71
|
+
|
|
72
|
+
The image registry prefix to which `jr2 up` pushes the images that it builds, such as
|
|
73
|
+
`registry.example.com/team`. It changes between deployments, so read it from `process.env`
|
|
74
|
+
(`.env`). Default: none; `jr2 up` loads the images into the kind cluster. On a cluster that is
|
|
75
|
+
not kind, `jr2 up` then refuses:
|
|
76
|
+
`` context <context> is not a kind cluster and no `registry` is configured ``.
|
|
77
|
+
- `kitRegistry` (optional): `string`
|
|
78
|
+
|
|
79
|
+
The registry from which this cluster pulls the published Kit images: a mirror for a cluster
|
|
80
|
+
that is self-hosted, air-gapped, or mirror-only. Default: none; the cluster pulls from the
|
|
81
|
+
canonical home, `ghcr.io/snapwich/jr2-harness:<version>` and the others. Set, the cluster pulls
|
|
82
|
+
the same tags from `<kitRegistry>/jr2-harness:<version>`. Fill the mirror with
|
|
83
|
+
`jr2 kit push <registry>`; `jr2 up` never pushes to it. Read it from `process.env` (`.env`).
|
|
84
|
+
- `platforms` (optional): `readonly string[]`
|
|
85
|
+
|
|
86
|
+
The platforms for which `jr2 up` builds its images, as docker platform strings, such as
|
|
87
|
+
`["linux/arm64"]`. Default: the platforms of the cluster's schedulable nodes that the kit
|
|
88
|
+
releases images for. `jr2 up` reports a node platform that it skips.
|
|
89
|
+
|
|
90
|
+
Set it when the nodes cannot tell. One case is a node group that scales up from zero. Another
|
|
91
|
+
is a set of nodes that need no image, such as an amd64 GPU group beside arm64 nodes. When you
|
|
92
|
+
set it, it replaces the default. It adds to nothing and removes from nothing. The kit releases
|
|
93
|
+
images for `linux/amd64` and `linux/arm64` only, so `jr2 up` refuses any other:
|
|
94
|
+
`` `platforms` names <platforms> — the kit releases images for linux/amd64, linux/arm64 and nothing else ``.
|
|
95
|
+
- `operator` (optional): `object`
|
|
96
|
+
|
|
97
|
+
Settings of the operator layer, for kit development.
|
|
98
|
+
|
|
99
|
+
- `manage` (optional): `boolean`
|
|
100
|
+
|
|
101
|
+
`false`: `jr2 up` does not converge the operator, and you run its controller yourself.
|
|
102
|
+
Default: `true`.
|
|
103
|
+
|
|
104
|
+
**Example**
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import { defineConfig, type JR2Config } from "@jr2/orchestrator";
|
|
108
|
+
|
|
109
|
+
const harness: JR2Config["harness"] = {
|
|
110
|
+
provider: {
|
|
111
|
+
id: "vllm",
|
|
112
|
+
api: "openai-completions",
|
|
113
|
+
baseUrl: process.env.VLLM_URL ?? "",
|
|
114
|
+
models: { "Qwen/Qwen3.6-35B-A3B": { contextWindow: 131072, maxTokens: 16384 } },
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export default defineConfig({ name: "my-instance", harness });
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**See also**
|
|
122
|
+
|
|
123
|
+
- [jr2.config.ts](../config.md)
|
|
124
|
+
- [Connect a model](../../get-started/connect-a-model.md)
|
|
125
|
+
- [Secrets and trust](../../concepts/secrets-and-trust.md)
|
|
126
|
+
- [ADR-0050: What code names, config declares; what the CLI names, discovery finds](../decisions/0050-what-code-names-config-declares-what-the-cli-names-discovery-finds.md)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: LaterOutcome
|
|
3
|
+
description: A value of `outcome` that this kit does not give.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `LaterOutcome`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effect.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Effects.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type LaterOutcome = { outcome: "(a later outcome)"; reason?: string };
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
A value of `outcome` that this kit does not give. It stands in the union so that no author can
|
|
15
|
+
write an exhaustive check, so that a later outcome is no break: route on what you know, and give
|
|
16
|
+
the rest a last arm.
|
|
17
|
+
|
|
18
|
+
**Fields**
|
|
19
|
+
|
|
20
|
+
- `outcome`: `"(a later outcome)"`
|
|
21
|
+
- `reason` (optional): `string`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Lends
|
|
3
|
+
description: The parts of the Chart wrapper that a Chart can use, by their keys in `actors`, `guards`, `actions` and `delays`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `Lends`
|
|
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 Lends = {
|
|
12
|
+
agents?: string[];
|
|
13
|
+
effects?: string[];
|
|
14
|
+
machines?: string[];
|
|
15
|
+
guards?: string[];
|
|
16
|
+
actions?: string[];
|
|
17
|
+
delays?: string[];
|
|
18
|
+
gate?: boolean;
|
|
19
|
+
fail?: boolean;
|
|
20
|
+
};
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The parts of the Chart wrapper that a Chart can use, by their keys in `actors`, `guards`,
|
|
24
|
+
`actions` and `delays`. `gate: true` lends the Gate, so that a Chart can wait for an answer from
|
|
25
|
+
outside the run. `fail: true` lends the Part that fails the run, so that a Chart can end its run
|
|
26
|
+
as a Failure ([ADR-0073](../decisions/0073-a-machine-fails-a-run-with-fail-and-an-uncaught-failure-ends-it-failed.md)): the Machine decides which ends a Chart can choose. A Chart can use no
|
|
27
|
+
other part.
|
|
28
|
+
|
|
29
|
+
**Fields**
|
|
30
|
+
|
|
31
|
+
- `agents` (optional): `string[]`
|
|
32
|
+
- `effects` (optional): `string[]`
|
|
33
|
+
- `machines` (optional): `string[]`
|
|
34
|
+
- `guards` (optional): `string[]`
|
|
35
|
+
- `actions` (optional): `string[]`
|
|
36
|
+
- `delays` (optional): `string[]`
|
|
37
|
+
- `gate` (optional): `boolean`
|
|
38
|
+
- `fail` (optional): `boolean`
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: LogicAt
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `LogicAt`
|
|
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 LogicAt<M extends AnyStateMachine, K extends string> = Extract<SlotsOf<M>, { src: K }>["logic"];
|
|
12
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MarkedIf
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `MarkedIf`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/http-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 MarkedIf<V, T> = [Extract<V, OpenSecretMark>] extends [never] ? T : T & OpenSecretMark;
|
|
12
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MergedActors
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `MergedActors`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/setup.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 MergedActors<TActors extends Record<string, UnknownActorLogic>> = Omit<JR2Actors, keyof TActors> & TActors;
|
|
12
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: NamedSecret
|
|
3
|
+
description: "A named secret, never `secret(open)`: where a definition's Open part is a whole that holds a secret — a dispatch's target (ADR-0071) — the secret is bound with it, to a name, so the mark `secret(open)` carries may not be present."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `NamedSecret`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/http-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 NamedSecret = Secret & { readonly [K in keyof OpenSecretMark]?: never };
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
A named secret, never `secret(open)`: where a definition's Open part is a whole that holds a
|
|
15
|
+
secret — a dispatch's target ([ADR-0071](../decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md)) — the secret is bound with it, to a name, so the mark
|
|
16
|
+
`secret(open)` carries may not be present. One type for the definition and the binding.
|
|
17
|
+
|
|
18
|
+
**Fields**
|
|
19
|
+
|
|
20
|
+
- `secret`: `string`
|
|
21
|
+
- `path`: `object`
|
|
22
|
+
|
|
23
|
+
- `secret`: `string`
|
|
24
|
+
- `path`: `true`
|
|
25
|
+
- `[openSecretMark]` (optional): `true`
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: NameStart
|
|
3
|
+
description: "What a Worktree's name may start with: neither `.` nor `-`, and not the end of the path."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `NameStart`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/worktree.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 NameStart =
|
|
12
|
+
| "a"
|
|
13
|
+
| "b"
|
|
14
|
+
| "c"
|
|
15
|
+
| "d"
|
|
16
|
+
| "e"
|
|
17
|
+
| "f"
|
|
18
|
+
| "g"
|
|
19
|
+
| "h"
|
|
20
|
+
| "i"
|
|
21
|
+
| "j"
|
|
22
|
+
| "k"
|
|
23
|
+
| "l"
|
|
24
|
+
| "m"
|
|
25
|
+
| "n"
|
|
26
|
+
| "o"
|
|
27
|
+
| "p"
|
|
28
|
+
| "q"
|
|
29
|
+
| "r"
|
|
30
|
+
| "s"
|
|
31
|
+
| "t"
|
|
32
|
+
| "u"
|
|
33
|
+
| "v"
|
|
34
|
+
| "w"
|
|
35
|
+
| "x"
|
|
36
|
+
| "y"
|
|
37
|
+
| "z"
|
|
38
|
+
| "A"
|
|
39
|
+
| "B"
|
|
40
|
+
| "C"
|
|
41
|
+
| "D"
|
|
42
|
+
| "E"
|
|
43
|
+
| "F"
|
|
44
|
+
| "G"
|
|
45
|
+
| "H"
|
|
46
|
+
| "I"
|
|
47
|
+
| "J"
|
|
48
|
+
| "K"
|
|
49
|
+
| "L"
|
|
50
|
+
| "M"
|
|
51
|
+
| "N"
|
|
52
|
+
| "O"
|
|
53
|
+
| "P"
|
|
54
|
+
| "Q"
|
|
55
|
+
| "R"
|
|
56
|
+
| "S"
|
|
57
|
+
| "T"
|
|
58
|
+
| "U"
|
|
59
|
+
| "V"
|
|
60
|
+
| "W"
|
|
61
|
+
| "X"
|
|
62
|
+
| "Y"
|
|
63
|
+
| "Z"
|
|
64
|
+
| "0"
|
|
65
|
+
| "1"
|
|
66
|
+
| "2"
|
|
67
|
+
| "3"
|
|
68
|
+
| "4"
|
|
69
|
+
| "5"
|
|
70
|
+
| "6"
|
|
71
|
+
| "7"
|
|
72
|
+
| "8"
|
|
73
|
+
| "9"
|
|
74
|
+
| "_";
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
What a Worktree's name may start with: neither `.` nor `-`, and not the end of the path.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: NoSlotWorkspaceOptions
|
|
3
|
+
description: The options of a `workspace()` with no Repo Slot that declares the input that starts a run.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `NoSlotWorkspaceOptions`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/workspace.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 NoSlotWorkspaceOptions<TSchema extends z.ZodObject> = Omit<SandboxOptions<never>, "repos"> & {
|
|
12
|
+
repos?: never;
|
|
13
|
+
input: TSchema;
|
|
14
|
+
};
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The options of a `workspace()` with no Repo Slot that declares the input that starts a run.
|
|
18
|
+
`repos` is left out.
|
|
19
|
+
|
|
20
|
+
**Fields**: each field of [`SandboxOptions`](type-sandboxoptions.md), except `repos`, and these:
|
|
21
|
+
|
|
22
|
+
- `repos` (optional): `never`
|
|
23
|
+
|
|
24
|
+
Not present: the Workspace has no Repo Slot. Its Agents work in `/work`.
|
|
25
|
+
- `input`: `TSchema`
|
|
26
|
+
|
|
27
|
+
The input that starts a run, as a `z.object`, as in [`WorkspaceOptions`](type-workspaceoptions.md).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: NotWorktreeKeys
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `NotWorktreeKeys`
|
|
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 NotWorktreeKeys = { cwd?: never; path?: never; branch?: never };
|
|
12
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenBodyDeclaration
|
|
3
|
+
description: "What an Open body declares: the parts that it lends a Chart, what the Agents of a Chart can have, and the limits of a Chart."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenBodyDeclaration`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Charts.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type OpenBodyDeclaration = {
|
|
12
|
+
lends: Lends;
|
|
13
|
+
allows: { models: string[]; workspace: WorkspaceAccess[] };
|
|
14
|
+
ceilings: Ceilings;
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
What an Open body declares: the parts that it lends a Chart, what the Agents of a Chart can
|
|
19
|
+
have, and the limits of a Chart. Give it to [`openBody`](openbody.md), and to `chartSchemaFor` for the
|
|
20
|
+
pick of a planner.
|
|
21
|
+
|
|
22
|
+
**Fields**
|
|
23
|
+
|
|
24
|
+
- `lends`: [`Lends`](type-lends.md)
|
|
25
|
+
|
|
26
|
+
The parts that a Chart can use.
|
|
27
|
+
- `allows`: `object`
|
|
28
|
+
|
|
29
|
+
What the Agents that a Chart adds can have: a model from `models`, and a Workspace access
|
|
30
|
+
from `workspace`. With no model, a Chart cannot add an Agent.
|
|
31
|
+
|
|
32
|
+
- `models`: `string[]`
|
|
33
|
+
- `workspace`: `WorkspaceAccess[]`
|
|
34
|
+
- `ceilings`: [`Ceilings`](type-ceilings.md)
|
|
35
|
+
|
|
36
|
+
The limits of one Chart.
|
|
37
|
+
|
|
38
|
+
**See also**
|
|
39
|
+
|
|
40
|
+
- [Charts](../../concepts/charts.md)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenBodyLogic
|
|
3
|
+
description: "The logic `openBody()` returns: actor logic that carries the brand."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenBodyLogic`
|
|
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 OpenBodyLogic = UnknownActorLogic & OpenBodySlot;
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The logic `openBody()` returns: actor logic that carries the brand.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenBodyOutput
|
|
3
|
+
description: The output of an Open body.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenBodyOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Charts.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type OpenBodyOutput =
|
|
12
|
+
| { outcome: "done"; output: unknown }
|
|
13
|
+
| { outcome: "refused"; report: string[] }
|
|
14
|
+
| { outcome: "ceiling"; ceiling: keyof Ceilings; detail: string };
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The output of an Open body. Route on `outcome` in the `onDone` of the state that invokes it:
|
|
18
|
+
|
|
19
|
+
- `done`: the Chart got to a final state. `output` is the output of the Chart.
|
|
20
|
+
- `refused`: the door refused the Chart. `report` has one line for each problem. Give it to the
|
|
21
|
+
Agent that wrote the Chart, so that it can send a corrected one.
|
|
22
|
+
- `ceiling`: the Chart got to a ceiling, and the Open body stopped it. `ceiling` names it.
|
|
23
|
+
|
|
24
|
+
**Forms**: it is one of these objects.
|
|
25
|
+
|
|
26
|
+
- Form 1: `outcome`, `output`
|
|
27
|
+
|
|
28
|
+
- `outcome`: `"done"`
|
|
29
|
+
- `output`: `unknown`
|
|
30
|
+
- Form 2: `outcome`, `report`
|
|
31
|
+
|
|
32
|
+
- `outcome`: `"refused"`
|
|
33
|
+
- `report`: `string[]`
|
|
34
|
+
- Form 3: `outcome`, `ceiling`, `detail`
|
|
35
|
+
|
|
36
|
+
- `outcome`: `"ceiling"`
|
|
37
|
+
- `ceiling`: `keyof Ceilings`
|
|
38
|
+
- `detail`: `string`
|
|
39
|
+
|
|
40
|
+
**See also**
|
|
41
|
+
|
|
42
|
+
- [Charts](../../concepts/charts.md)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenBodySlot
|
|
3
|
+
description: The brand an Open body slot carries, as `definition` marks an Agent slot (ADR-0049).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenBodySlot`
|
|
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 OpenBodySlot = { readonly openBody: OpenBodyDeclaration };
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The brand an Open body slot carries, as `definition` marks an Agent slot ([ADR-0049](../decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md)).
|
|
15
|
+
|
|
16
|
+
**Fields**
|
|
17
|
+
|
|
18
|
+
- `openBody`: [`OpenBodyDeclaration`](type-openbodydeclaration.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenCommandInput
|
|
3
|
+
description: "The input of a `command(open)`: a string for each `arg()` of the argv that the Instance binds, and with `pin`, the commit (`{ sha }`)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenCommandInput`
|
|
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 OpenCommandInput<P = false, Opt = unknown> = Readonly<Record<string, string>> &
|
|
12
|
+
([P] extends [true] ? { sha: string } : unknown) &
|
|
13
|
+
WorktreeKey<Opt>;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The input of a `command(open)`: a string for each `arg()` of the argv that the Instance binds,
|
|
17
|
+
and with `pin`, the commit (`{ sha }`). The compiler cannot check the names. When the input has
|
|
18
|
+
no string for an `arg()`, the Effect fails when it starts.
|
|
19
|
+
|
|
20
|
+
**Fields**
|
|
21
|
+
|
|
22
|
+
- `worktree` (optional): [`AnyWorktreePath`](type-anyworktreepath.md)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenEffect
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenEffect`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/open-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 OpenEffect<P extends OpenEffectPart> = { readonly [openPart]: P };
|
|
12
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OpenEffectSlots
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `OpenEffectSlots`
|
|
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 OpenEffectSlots<M extends AnyStateMachine> = Extract<SlotsOf<M>, { logic: OpenEffect<OpenEffectPart> }>["src"];
|
|
12
|
+
```
|