@jr2/orchestrator 0.5.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/console/components/app.ts +55 -15
- package/console/components/bottom-drawer.ts +259 -0
- package/console/components/drawer.ts +14 -6
- package/console/components/fleet.ts +36 -13
- package/console/components/machine-pane.ts +61 -5
- package/console/components/nav.ts +54 -8
- package/console/conversation.ts +161 -0
- package/console/login.ts +123 -0
- package/console/main.ts +600 -60
- package/console/store.ts +611 -64
- package/console/style.css +231 -0
- package/docs/agents-block.md +2 -2
- package/docs/concepts/agents-and-turns.md +142 -29
- package/docs/concepts/architecture.md +60 -34
- package/docs/concepts/callers-and-hooks.md +205 -0
- package/docs/concepts/charts.md +13 -8
- package/docs/concepts/composition.md +10 -1
- package/docs/concepts/converge.md +7 -2
- package/docs/concepts/durable-runs.md +43 -16
- package/docs/concepts/effects.md +133 -50
- package/docs/concepts/gates.md +95 -25
- package/docs/concepts/machines-and-workflows.md +14 -4
- package/docs/concepts/pools-and-sources.md +193 -17
- package/docs/concepts/secrets-and-trust.md +186 -62
- package/docs/concepts/the-menu.md +14 -0
- package/docs/concepts/workspaces.md +135 -56
- package/docs/get-started/a-model-decides.md +14 -13
- package/docs/get-started/an-agent-in-a-sandbox.md +46 -35
- package/docs/get-started/connect-a-model.md +1 -1
- package/docs/get-started/create-an-instance.md +17 -14
- package/docs/get-started/have-your-assistant-write-a-machine.md +111 -40
- package/docs/get-started/install.md +4 -0
- package/docs/guides/add-tools-to-the-sandbox.md +72 -15
- package/docs/guides/answer-a-gate-from-a-forge.md +304 -0
- package/docs/guides/answer-a-gate.md +74 -37
- package/docs/guides/bind-open-parts.md +29 -12
- package/docs/guides/call-an-mcp-tool-from-a-machine.md +572 -0
- package/docs/guides/cancel-a-run.md +26 -16
- package/docs/guides/cut-a-worktree.md +560 -0
- package/docs/guides/fix-a-failed-converge.md +19 -7
- package/docs/guides/give-a-caller-a-scope.md +203 -0
- package/docs/guides/give-an-agent-mcp-tools.md +422 -0
- package/docs/guides/iterate-on-a-machine-on-kind.md +10 -9
- package/docs/guides/let-an-agent-write-a-chart.md +14 -7
- package/docs/guides/look-inside-a-sandbox.md +115 -42
- package/docs/guides/move-from-kind-to-a-shared-cluster.md +16 -0
- package/docs/guides/open-the-console.md +63 -14
- package/docs/guides/push-and-sign-a-branch.md +67 -21
- package/docs/guides/read-a-conversation.md +225 -0
- package/docs/guides/run-a-chart-by-name.md +17 -16
- package/docs/guides/run-a-command-or-call-a-url.md +84 -41
- package/docs/guides/run-one-worker-per-item.md +34 -27
- package/docs/guides/set-an-agents-access-and-dials.md +69 -22
- package/docs/guides/size-a-workspace.md +19 -6
- package/docs/guides/start-a-run-for-each-alert.md +290 -0
- package/docs/guides/start-a-run-from-a-run.md +18 -16
- package/docs/guides/start-a-run.md +24 -18
- package/docs/guides/steer-an-agent.md +332 -0
- package/docs/guides/use-a-hosted-provider.md +7 -1
- package/docs/guides/watch-a-run.md +146 -117
- package/docs/guides/write-a-hook-kind.md +238 -0
- package/docs/guides/write-a-tool-as-an-mcp-server.md +351 -0
- package/docs/guides/write-a-workflow.md +18 -8
- package/docs/llms.txt +110 -23
- package/docs/reference/authoring-surface/agent.md +35 -12
- package/docs/reference/authoring-surface/answer.md +20 -4
- package/docs/reference/authoring-surface/arg.md +28 -6
- package/docs/reference/authoring-surface/basic.md +1 -1
- package/docs/reference/authoring-surface/bearer.md +1 -1
- package/docs/reference/authoring-surface/branchname.md +15 -0
- package/docs/reference/authoring-surface/carry.md +23 -0
- package/docs/reference/authoring-surface/chartschema.md +1 -1
- package/docs/reference/authoring-surface/chartschemafor.md +1 -1
- package/docs/reference/authoring-surface/command.md +37 -22
- package/docs/reference/authoring-surface/customize.md +4 -1
- package/docs/reference/authoring-surface/defineconfig.md +1 -1
- package/docs/reference/authoring-surface/defineevent.md +1 -1
- package/docs/reference/authoring-surface/dispatch.md +5 -4
- package/docs/reference/authoring-surface/fail.md +18 -5
- package/docs/reference/authoring-surface/file.md +37 -17
- package/docs/reference/authoring-surface/frompick.md +1 -1
- package/docs/reference/authoring-surface/gate.md +118 -0
- package/docs/reference/authoring-surface/group-agents.md +15 -0
- package/docs/reference/authoring-surface/group-charts.md +16 -0
- package/docs/reference/authoring-surface/group-composition.md +25 -0
- package/docs/reference/authoring-surface/group-config.md +17 -0
- package/docs/reference/authoring-surface/group-effects.md +48 -0
- package/docs/reference/authoring-surface/group-failure.md +13 -0
- package/docs/reference/authoring-surface/group-gates.md +16 -0
- package/docs/reference/authoring-surface/group-machine-and-events.md +15 -0
- package/docs/reference/authoring-surface/group-steering.md +12 -0
- package/docs/reference/authoring-surface/group-types-these-signatures-name.md +137 -0
- package/docs/reference/authoring-surface/group-workspaces-and-repos.md +15 -0
- package/docs/reference/authoring-surface/http.md +109 -9
- package/docs/reference/authoring-surface/isfailure.md +1 -1
- package/docs/reference/authoring-surface/isready.md +14 -0
- package/docs/reference/authoring-surface/jr2setup.md +14 -4
- package/docs/reference/authoring-surface/mcp.md +107 -0
- package/docs/reference/authoring-surface/open.md +41 -8
- package/docs/reference/authoring-surface/openbody.md +1 -1
- package/docs/reference/authoring-surface/paramsof.md +23 -5
- package/docs/reference/authoring-surface/pool.md +79 -11
- package/docs/reference/authoring-surface/push.md +31 -13
- package/docs/reference/authoring-surface/readyof.md +21 -0
- package/docs/reference/authoring-surface/reread.md +19 -0
- package/docs/reference/authoring-surface/secret.md +26 -5
- package/docs/reference/authoring-surface/sentby.md +1 -1
- package/docs/reference/authoring-surface/skip.md +22 -0
- package/docs/reference/authoring-surface/source.md +59 -4
- package/docs/reference/authoring-surface/steer.md +93 -0
- package/docs/reference/authoring-surface/text.md +1 -1
- package/docs/reference/authoring-surface/type-agentdefinition.md +16 -3
- package/docs/reference/authoring-surface/type-agentmcpserver.md +54 -0
- package/docs/reference/authoring-surface/type-agentslots.md +4 -1
- 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-bindactors.md +14 -0
- package/docs/reference/authoring-surface/type-binding.md +6 -7
- package/docs/reference/authoring-surface/type-caller.md +40 -0
- package/docs/reference/authoring-surface/type-callerrecord.md +32 -0
- package/docs/reference/authoring-surface/type-carry.md +19 -0
- package/docs/reference/authoring-surface/type-chainlink.md +3 -3
- package/docs/reference/authoring-surface/type-commandinput.md +4 -3
- package/docs/reference/authoring-surface/type-commandoptions.md +0 -22
- package/docs/reference/authoring-surface/type-commandoutput.md +23 -5
- package/docs/reference/authoring-surface/type-customize.md +20 -3
- package/docs/reference/authoring-surface/type-delivered.md +17 -0
- package/docs/reference/authoring-surface/type-deliveredevent.md +18 -0
- package/docs/reference/authoring-surface/type-dispatchdefinition.md +4 -3
- package/docs/reference/authoring-surface/type-dispatchoutput.md +9 -2
- package/docs/reference/authoring-surface/type-doorlessinput.md +19 -0
- package/docs/reference/authoring-surface/type-effectbinding.md +12 -2
- package/docs/reference/authoring-surface/type-filebody.md +4 -8
- package/docs/reference/authoring-surface/type-framepath.md +14 -0
- package/docs/reference/authoring-surface/type-gatebinding.md +15 -0
- package/docs/reference/authoring-surface/type-gatehooks.md +12 -0
- package/docs/reference/authoring-surface/type-gatelook.md +37 -0
- package/docs/reference/authoring-surface/type-gateoutcome.md +32 -0
- package/docs/reference/authoring-surface/type-gatereply.md +19 -0
- package/docs/reference/authoring-surface/type-gateslot.md +21 -0
- package/docs/reference/authoring-surface/type-gateslotinput.md +13 -0
- package/docs/reference/authoring-surface/type-gateslotparts.md +18 -0
- package/docs/reference/authoring-surface/type-gateslots.md +12 -0
- package/docs/reference/authoring-surface/type-gatetypesat.md +13 -0
- package/docs/reference/authoring-surface/type-hostinjectedinput.md +3 -5
- package/docs/reference/authoring-surface/type-httpdefinition.md +6 -3
- package/docs/reference/authoring-surface/type-httpfileinput.md +20 -0
- package/docs/reference/authoring-surface/type-httpoutput.md +8 -2
- package/docs/reference/authoring-surface/type-jr2config.md +37 -2
- package/docs/reference/authoring-surface/type-lateroutcome.md +21 -0
- package/docs/reference/authoring-surface/type-lends.md +5 -1
- package/docs/reference/authoring-surface/type-lookoutput.md +14 -0
- package/docs/reference/authoring-surface/type-mcpcalloutput.md +78 -0
- package/docs/reference/authoring-surface/type-mcpnotreturned.md +42 -0
- package/docs/reference/authoring-surface/type-mcpoptions.md +47 -0
- package/docs/reference/authoring-surface/type-mcpoutput.md +50 -0
- package/docs/reference/authoring-surface/type-mcpreadoutput.md +53 -0
- package/docs/reference/authoring-surface/type-mcpremoteserver.md +50 -0
- package/docs/reference/authoring-surface/type-mcpserver.md +41 -0
- package/docs/reference/authoring-surface/type-mcpstdioserver.md +42 -0
- package/docs/reference/authoring-surface/type-namedsecret.md +4 -4
- package/docs/reference/authoring-surface/type-namestart.md +77 -0
- package/docs/reference/authoring-surface/type-noslotworkspaceoptions.md +1 -6
- package/docs/reference/authoring-surface/type-notworktreekeys.md +12 -0
- package/docs/reference/authoring-surface/type-openbodydeclaration.md +1 -1
- package/docs/reference/authoring-surface/type-openbodyoutput.md +1 -1
- package/docs/reference/authoring-surface/type-opencommandinput.md +7 -2
- package/docs/reference/authoring-surface/type-permissivenoslotworkspaceoptions.md +1 -6
- package/docs/reference/authoring-surface/type-permissiveworkspaceoptions.md +5 -10
- package/docs/reference/authoring-surface/type-poolnextinput.md +22 -0
- package/docs/reference/authoring-surface/type-poolspec.md +11 -6
- package/docs/reference/authoring-surface/type-pushinput.md +22 -3
- package/docs/reference/authoring-surface/type-pushoutput.md +33 -8
- package/docs/reference/authoring-surface/type-pushsourcespec.md +38 -0
- package/docs/reference/authoring-surface/type-readsourcespec.md +47 -0
- package/docs/reference/authoring-surface/type-reposlot.md +6 -6
- package/docs/reference/authoring-surface/type-reread.md +18 -0
- package/docs/reference/authoring-surface/type-runsconfig.md +41 -0
- package/docs/reference/authoring-surface/type-sandboxoptions.md +11 -4
- package/docs/reference/authoring-surface/type-sender.md +26 -1
- package/docs/reference/authoring-surface/type-sendercallerfield.md +14 -0
- package/docs/reference/authoring-surface/type-size.md +1 -1
- package/docs/reference/authoring-surface/type-skip.md +19 -0
- package/docs/reference/authoring-surface/type-slothandles.md +5 -13
- package/docs/reference/authoring-surface/type-sourcehooks.md +23 -0
- package/docs/reference/authoring-surface/type-sourcein.md +25 -0
- package/docs/reference/authoring-surface/type-sourcereply.md +18 -0
- package/docs/reference/authoring-surface/type-sourcespec.md +26 -17
- package/docs/reference/authoring-surface/type-sourceverdict.md +49 -0
- package/docs/reference/authoring-surface/type-standingpoolmachine.md +12 -0
- package/docs/reference/authoring-surface/type-standingpoolspec.md +51 -0
- package/docs/reference/authoring-surface/type-steerargs.md +20 -0
- package/docs/reference/authoring-surface/type-thinkinglevel.md +1 -1
- package/docs/reference/authoring-surface/type-usercontainer.md +1 -1
- package/docs/reference/authoring-surface/type-workspaced.md +30 -9
- package/docs/reference/authoring-surface/type-workspacehandles.md +5 -6
- package/docs/reference/authoring-surface/type-workspaceoptions.md +1 -13
- 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 +66 -38
- package/docs/reference/authoring-surface/worktree.md +71 -0
- package/docs/reference/authoring-surface.md +88 -147
- package/docs/reference/cli.md +413 -74
- package/docs/reference/config.md +248 -6
- package/docs/reference/decisions/0001-operator-owned-generic-sandbox.md +10 -9
- package/docs/reference/decisions/0002-duplex-streaming-actor.md +81 -14
- package/docs/reference/decisions/0004-worktree-provisioning-model.md +27 -21
- package/docs/reference/decisions/0005-sandbox-pod-composition.md +39 -25
- package/docs/reference/decisions/0006-agent-control-surface.md +6 -3
- package/docs/reference/decisions/0007-durable-machine-state.md +1 -1
- package/docs/reference/decisions/0009-cli-and-instance-interface.md +150 -49
- package/docs/reference/decisions/0010-bdd-acceptance-tests.md +5 -3
- package/docs/reference/decisions/0011-workflow-defined-events.md +256 -12
- package/docs/reference/decisions/0012-workspace-wrapper-machine.md +39 -32
- package/docs/reference/decisions/0013-the-agent-reaches-its-machine-through-a-container-it-cannot-read.md +54 -30
- package/docs/reference/decisions/0014-observation-is-open-run-state-is-not.md +53 -27
- package/docs/reference/decisions/0015-authoring-surface-absorbs-the-mechanism.md +26 -16
- package/docs/reference/decisions/0016-agent-turn-mechanics-are-internal.md +9 -7
- package/docs/reference/decisions/0017-pool-over-a-source-port.md +226 -10
- package/docs/reference/decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md +15 -7
- package/docs/reference/decisions/0019-one-converging-command-against-the-current-context.md +53 -27
- package/docs/reference/decisions/0021-workspace-continuity-is-a-lease-that-answers-back.md +16 -2
- package/docs/reference/decisions/0022-observation-is-a-level-triggered-feed.md +4 -4
- package/docs/reference/decisions/0023-the-harness-prints-the-conversation.md +124 -43
- package/docs/reference/decisions/0024-an-agents-turn-ends-with-the-state-that-asked-for-it.md +36 -38
- package/docs/reference/decisions/0025-cancel-ends-a-run-stop-parks-it.md +10 -5
- package/docs/reference/decisions/0027-the-harness-is-jr2s-own-server-flue-retires-the-wire-stays.md +16 -7
- package/docs/reference/decisions/0028-what-an-agent-may-do-to-the-workspace-is-part-of-its-definition.md +36 -19
- package/docs/reference/decisions/0029-a-menu-is-fixed-for-a-conversation-and-a-turn-is-told-its-allowed-picks.md +18 -10
- package/docs/reference/decisions/0030-a-snapshot-names-the-machine-it-was-written-under.md +3 -2
- package/docs/reference/decisions/0031-menu-only-agents-run-on-the-instance-harness.md +23 -15
- package/docs/reference/decisions/0032-the-console-unlocks-with-a-callers-credential.md +101 -0
- package/docs/reference/decisions/0033-a-machine-declares-the-input-that-starts-it.md +22 -22
- package/docs/reference/decisions/0034-the-console-renders-with-preact-and-the-server-erases-the-types.md +6 -6
- package/docs/reference/decisions/0037-an-instance-builds-its-sandbox-images-jr2-injects-the-harness.md +13 -12
- package/docs/reference/decisions/0049-a-machine-carries-its-parts-and-composes-by-invoke.md +23 -23
- package/docs/reference/decisions/0050-what-code-names-config-declares-what-the-cli-names-discovery-finds.md +6 -1
- package/docs/reference/decisions/0051-a-repo-is-a-slot-on-the-workspace-and-a-cache-on-the-node.md +57 -46
- package/docs/reference/decisions/0052-a-sandbox-lands-where-an-ordinary-pod-lands-and-the-cache-follows-it.md +5 -0
- package/docs/reference/decisions/0053-a-fetch-inside-the-pod-asks-the-node-cache-and-the-cache-asks-the-remote.md +20 -8
- package/docs/reference/decisions/0054-the-kit-ships-machines-and-a-shipped-machine-leaves-its-parts-open.md +55 -40
- package/docs/reference/decisions/0055-a-release-is-a-pushed-tag-and-the-publish-guard-is-the-credential.md +14 -13
- package/docs/reference/decisions/0057-a-turn-is-its-frame-its-dials-and-whether-it-continues.md +31 -24
- package/docs/reference/decisions/0058-a-harness-answers-the-orchestrator-alone.md +18 -10
- package/docs/reference/decisions/0059-a-harness-holds-stand-ins-and-the-custodian-holds-the-keys.md +137 -86
- package/docs/reference/decisions/0062-jr2-briefs-the-agent-on-its-seat-never-on-its-task.md +165 -91
- package/docs/reference/decisions/0063-the-orchestrator-watches-the-cluster.md +7 -7
- package/docs/reference/decisions/0064-a-workspace-waits-for-capacity.md +2 -2
- package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-kept-for-a-set-time.md +109 -0
- package/docs/reference/decisions/0066-a-model-tier-runs-a-real-model-and-a-change-to-what-it-reads-runs-the-tier.md +53 -23
- package/docs/reference/decisions/0067-an-effect-is-an-actor-slot-and-runs-at-most-once-unless-marked-idempotent.md +221 -153
- package/docs/reference/decisions/0068-an-effector-holds-an-effects-secrets-and-signs-its-wire.md +161 -96
- package/docs/reference/decisions/0069-the-orchestrator-is-a-kit-image-and-an-instance-publishes-its-assembly.md +32 -9
- package/docs/reference/decisions/0070-a-machine-lends-its-parts-to-a-chart.md +48 -33
- package/docs/reference/decisions/0071-a-run-starts-a-run-through-a-dispatch-effect.md +56 -30
- package/docs/reference/decisions/0072-the-docs-ship-inside-the-kit-and-an-instances-agents-md-indexes-them.md +35 -25
- package/docs/reference/decisions/0073-a-machine-fails-a-run-with-fail-and-an-uncaught-failure-ends-it-failed.md +1 -1
- package/docs/reference/decisions/0075-a-machine-cuts-a-worktree-and-the-workspace-only-clones.md +296 -0
- package/docs/reference/decisions/0076-an-agents-control-credential-lives-only-where-no-workspace-code-runs.md +347 -0
- package/docs/reference/decisions/0077-jr2-requires-landlock-on-every-sandbox-node.md +79 -0
- package/docs/reference/decisions/0078-a-caller-comes-from-one-authenticator-seam-and-acts-within-its-scopes.md +285 -0
- package/docs/reference/decisions/0079-an-agent-holds-mcp-tools-a-machine-calls-them-as-an-effect-and-the-machine-is-the-approval.md +198 -0
- package/docs/reference/decisions.md +9 -4
- package/docs/reference/glossary.md +138 -45
- package/docs/reference/hooks.md +1077 -0
- package/docs/reference/http-api.md +988 -123
- package/docs/reference/machines.md +0 -1
- package/docs/why.md +7 -5
- package/package.json +10 -3
- package/src/actor.ts +194 -42
- package/src/agent.ts +56 -6
- package/src/ambient.ts +3 -5
- package/src/assembly-checks.ts +530 -4
- package/src/callers.ts +245 -0
- package/src/chart.ts +238 -26
- package/src/charts.ts +9 -2
- package/src/config.ts +566 -7
- package/src/conversations.ts +453 -0
- package/src/custodian.lua +17 -5
- package/src/custodian.ts +257 -77
- package/src/customize.ts +154 -7
- package/src/dispatch-effect.ts +142 -26
- package/src/durability.ts +2 -0
- package/src/duration.ts +20 -0
- package/src/effect-checks.ts +52 -4
- package/src/effect.ts +401 -132
- package/src/effector-wire.ts +278 -30
- package/src/fail.ts +17 -4
- package/src/gate-brand.ts +16 -0
- package/src/gate.ts +634 -48
- package/src/harness-client.ts +84 -35
- package/src/harness-env.ts +33 -0
- package/src/held-secrets.ts +197 -39
- package/src/holds.ts +5 -2
- package/src/hook-kinds/discord.ts +92 -0
- package/src/hook-kinds/door.ts +107 -0
- package/src/hook-kinds/github.ts +89 -0
- package/src/hook-kinds/gitlab.ts +72 -0
- package/src/hook-kinds/hook.ts +7 -0
- package/src/hook-kinds/index.ts +465 -0
- package/src/hook-kinds/slack.ts +151 -0
- package/src/hook-kinds/webhook.ts +113 -0
- package/src/hooks.ts +506 -0
- package/src/http-effect.ts +164 -70
- package/src/http.ts +933 -99
- package/src/index.ts +30 -5
- package/src/instance.ts +196 -26
- package/src/internal.ts +23 -3
- package/src/kube-client.ts +6 -3
- package/src/machine-doc.ts +29 -5
- package/src/mcp-effect.ts +424 -0
- package/src/model-keys.ts +24 -0
- package/src/mount-digest.ts +41 -7
- package/src/names.ts +82 -7
- package/src/notices.ts +576 -59
- package/src/open-body.ts +110 -30
- package/src/open-effect.ts +17 -4
- package/src/open.ts +40 -7
- package/src/parts.ts +125 -35
- package/src/party.ts +35 -1
- package/src/pick.ts +43 -9
- package/src/pool.ts +1172 -172
- package/src/registration.ts +249 -17
- package/src/repo-identity.ts +7 -3
- package/src/repos.ts +20 -2
- package/src/run-host.ts +1614 -190
- package/src/run-list.ts +191 -0
- package/src/sandbox-effect.ts +217 -66
- package/src/sandbox-kube.ts +116 -21
- package/src/secret-placement.ts +248 -35
- package/src/server.ts +53 -4
- package/src/setup.ts +158 -38
- package/src/snapshot-store.ts +565 -48
- package/src/steer.ts +111 -0
- package/src/stub-harness.ts +6 -2
- package/src/tokens.ts +362 -46
- package/src/vocabulary.ts +23 -4
- package/src/wire.ts +27 -10
- package/src/workspace.ts +314 -259
- package/src/worktree.ts +249 -0
- package/docs/reference/authoring-surface/type-noslotspec.md +0 -26
- package/docs/reference/authoring-surface/type-workspacespec.md +0 -37
- package/docs/reference/decisions/0032-the-console-unlocks-with-the-instance-token.md +0 -61
- package/docs/reference/decisions/0065-a-persist-survives-a-crash-and-history-is-a-week.md +0 -65
|
@@ -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`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
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`
|
|
@@ -12,6 +12,7 @@ type Lends = {
|
|
|
12
12
|
agents?: string[];
|
|
13
13
|
effects?: string[];
|
|
14
14
|
machines?: string[];
|
|
15
|
+
gates?: string[];
|
|
15
16
|
guards?: string[];
|
|
16
17
|
actions?: string[];
|
|
17
18
|
delays?: string[];
|
|
@@ -21,7 +22,9 @@ type Lends = {
|
|
|
21
22
|
```
|
|
22
23
|
|
|
23
24
|
The parts of the Chart wrapper that a Chart can use, by their keys in `actors`, `guards`,
|
|
24
|
-
`actions` and `delays`. `
|
|
25
|
+
`actions` and `delays`. `gates` lends Gate slots (`gate({ … })`) that hear a Hook, by slot name:
|
|
26
|
+
the door refuses a Chart that invokes one whose `delivers` names an event that is not in the
|
|
27
|
+
Chart's `events`. `gate: true` lends the Gate, so that a Chart can wait for an answer from
|
|
25
28
|
outside the run. `fail: true` lends the Part that fails the run, so that a Chart can end its run
|
|
26
29
|
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
30
|
other part.
|
|
@@ -31,6 +34,7 @@ other part.
|
|
|
31
34
|
- `agents` (optional): `string[]`
|
|
32
35
|
- `effects` (optional): `string[]`
|
|
33
36
|
- `machines` (optional): `string[]`
|
|
37
|
+
- `gates` (optional): `string[]`
|
|
34
38
|
- `guards` (optional): `string[]`
|
|
35
39
|
- `actions` (optional): `string[]`
|
|
36
40
|
- `delays` (optional): `string[]`
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: LookOutput
|
|
3
|
+
description: A type that the Authoring surface names.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `LookOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/gate.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 LookOutput<R> = R extends { getInitialSnapshot: (...a: never[]) => { output?: infer O } }
|
|
12
|
+
? Exclude<O, undefined>
|
|
13
|
+
: unknown;
|
|
14
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpCallOutput
|
|
3
|
+
description: "The output of an `mcp.call` Effect: what the `onDone` of its state gets as `event.output`."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpCallOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effector-wire.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpCallOutput =
|
|
12
|
+
| { outcome: "returned"; isError: boolean; text: string; structured?: unknown; truncated?: boolean }
|
|
13
|
+
| McpNotReturned;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The output of an `mcp.call` Effect: what the `onDone` of its state gets as `event.output`. Every
|
|
17
|
+
outcome is output. Route on `outcome`:
|
|
18
|
+
|
|
19
|
+
- `returned`: the server answered the call. `isError` is the tool's own `isError`: the tool ran
|
|
20
|
+
and says that it failed. `text` joins the text of the result's content; a part that is not text
|
|
21
|
+
is one line that names its type. `structured` is the result's `structuredContent`, when it has
|
|
22
|
+
one. `text` and `structured` each have the byte bound of the Effect's `maxBody`: past it, jr2
|
|
23
|
+
cuts `text`, drops `structured`, and sets `truncated`.
|
|
24
|
+
- `refused`: the request did not run. The server answered an HTTP 3xx or 4xx status (a 401 or a
|
|
25
|
+
403 included) at any step, the handshake too; it refused the handshake; or it answered the
|
|
26
|
+
request with the JSON-RPC error `-32700`, `-32600`, `-32601` or `-32602`: a request that it
|
|
27
|
+
could not read, an unknown method, an unknown tool, or bad arguments; or it answered a read with
|
|
28
|
+
`-32002`: the resource does not exist. It is also the Effector's
|
|
29
|
+
own refusal, with nothing sent: the server or its secret is not in its `effector.json`.
|
|
30
|
+
- `unreachable`: nothing of the request was sent: the name did not resolve, or the connection,
|
|
31
|
+
TLS or the handshake failed otherwise (a 5xx, the timeout, an answer that is not MCP's, a
|
|
32
|
+
revision of MCP that jr2 does not speak).
|
|
33
|
+
- `input-required`: the server asked for input, which jr2 does not give. After the error
|
|
34
|
+
`-32042`, the tool did not run. After an `elicitation/create` request, which comes while the
|
|
35
|
+
tool runs, the tool may have begun. jr2 does not send the request again: a Machine that
|
|
36
|
+
invokes the Effect again after a Gate can run a part of the tool two times.
|
|
37
|
+
- `unknown`: the request was sent and no answer came (the timeout, a reset, a stream that ended
|
|
38
|
+
first), or the server answered with a 5xx or another JSON-RPC error. The tool may have acted.
|
|
39
|
+
jr2 does not send it again unless it is marked `idempotent`.
|
|
40
|
+
|
|
41
|
+
jr2 replaces each value of an Effect secret that the Effector holds with `[secret:<name>]`, in
|
|
42
|
+
every string of the output. The union is open ([`LaterOutcome`](type-lateroutcome.md)): give the rest a last arm
|
|
43
|
+
with no guard.
|
|
44
|
+
|
|
45
|
+
**Forms**: it is one of these objects.
|
|
46
|
+
|
|
47
|
+
- Form 1: `outcome`, `isError`, `text`, `structured`, `truncated`
|
|
48
|
+
|
|
49
|
+
- `outcome`: `"returned"`
|
|
50
|
+
- `isError`: `boolean`
|
|
51
|
+
- `text`: `string`
|
|
52
|
+
- `structured` (optional): `unknown`
|
|
53
|
+
- `truncated` (optional): `boolean`
|
|
54
|
+
- Form 2: `outcome`, `reason`
|
|
55
|
+
|
|
56
|
+
- `outcome`: `"refused"`
|
|
57
|
+
- `reason`: `string`
|
|
58
|
+
- Form 3: `outcome`, `reason`
|
|
59
|
+
|
|
60
|
+
- `outcome`: `"unreachable"`
|
|
61
|
+
- `reason`: `string`
|
|
62
|
+
- Form 4: `outcome`, `reason`
|
|
63
|
+
|
|
64
|
+
- `outcome`: `"input-required"`
|
|
65
|
+
- `reason`: `string`
|
|
66
|
+
- Form 5: `outcome`, `reason`
|
|
67
|
+
|
|
68
|
+
- `outcome`: `"unknown"`
|
|
69
|
+
- `reason`: `string`
|
|
70
|
+
- Form 6: `outcome`, `reason`
|
|
71
|
+
|
|
72
|
+
- `outcome`: `"(a later outcome)"`
|
|
73
|
+
- `reason` (optional): `string`
|
|
74
|
+
|
|
75
|
+
**See also**
|
|
76
|
+
|
|
77
|
+
- [Effects](../../concepts/effects.md)
|
|
78
|
+
- [ADR-0079: An Agent holds MCP tools, a Machine calls them as an Effect, and the Machine is the approval](../decisions/0079-an-agent-holds-mcp-tools-a-machine-calls-them-as-an-effect-and-the-machine-is-the-approval.md)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpNotReturned
|
|
3
|
+
description: The outcomes that an `mcp` Effect gives besides `returned`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpNotReturned`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effector-wire.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 McpNotReturned =
|
|
12
|
+
| { outcome: "refused"; reason: string }
|
|
13
|
+
| { outcome: "unreachable"; reason: string }
|
|
14
|
+
| { outcome: "input-required"; reason: string }
|
|
15
|
+
| { outcome: "unknown"; reason: string }
|
|
16
|
+
| LaterOutcome;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The outcomes that an `mcp` Effect gives besides `returned`. Each one has a `reason` in words.
|
|
20
|
+
|
|
21
|
+
**Forms**: it is one of these objects.
|
|
22
|
+
|
|
23
|
+
- Form 1: `outcome`, `reason`
|
|
24
|
+
|
|
25
|
+
- `outcome`: `"refused"`
|
|
26
|
+
- `reason`: `string`
|
|
27
|
+
- Form 2: `outcome`, `reason`
|
|
28
|
+
|
|
29
|
+
- `outcome`: `"unreachable"`
|
|
30
|
+
- `reason`: `string`
|
|
31
|
+
- Form 3: `outcome`, `reason`
|
|
32
|
+
|
|
33
|
+
- `outcome`: `"input-required"`
|
|
34
|
+
- `reason`: `string`
|
|
35
|
+
- Form 4: `outcome`, `reason`
|
|
36
|
+
|
|
37
|
+
- `outcome`: `"unknown"`
|
|
38
|
+
- `reason`: `string`
|
|
39
|
+
- Form 5: `outcome`, `reason`
|
|
40
|
+
|
|
41
|
+
- `outcome`: `"(a later outcome)"`
|
|
42
|
+
- `reason` (optional): `string`
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpOptions
|
|
3
|
+
description: The options of an `mcp` Effect.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpOptions`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/mcp-effect.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpOptions<S extends z.ZodObject | undefined = undefined> = {
|
|
12
|
+
input?: S;
|
|
13
|
+
timeout?: Duration;
|
|
14
|
+
maxBody?: number;
|
|
15
|
+
idempotent?: boolean;
|
|
16
|
+
};
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The options of an `mcp` Effect.
|
|
20
|
+
|
|
21
|
+
**Fields**
|
|
22
|
+
|
|
23
|
+
- `input` (optional): `S`
|
|
24
|
+
|
|
25
|
+
The zod schema of the input of the Effect: what the `input` of the `invoke`, or `fromPick`,
|
|
26
|
+
gives it. For `mcp.call` the parsed input is the tool's arguments; for `mcp.prompt`, the
|
|
27
|
+
prompt's arguments, each a string. jr2 parses the input with it before the call. When it
|
|
28
|
+
starts, input that does not agree with it makes the Effect fail (its `onError` route): `mcp
|
|
29
|
+
"<slot>": its input does not match the definition's input schema — <path>: <message>`. With no
|
|
30
|
+
schema, the input of the `invoke` is the arguments as it is, and `{}` when it has none.
|
|
31
|
+
- `timeout` (optional): [`Duration`](type-duration.md)
|
|
32
|
+
|
|
33
|
+
How long jr2 waits for the answer: a number and a unit, such as `"30s"` or `"2m"`. Default:
|
|
34
|
+
the server's `timeout` in `jr2.config.ts` (60 seconds when it sets none). With no answer in
|
|
35
|
+
that time, the output is `unknown`. It refuses a value that is not a positive duration: `mcp:
|
|
36
|
+
timeout "<timeout>" is not a positive duration (like "30s", "2m")`.
|
|
37
|
+
- `maxBody` (optional): `number`
|
|
38
|
+
|
|
39
|
+
The largest number of bytes of `text`, and of `structured` as JSON, that the output keeps.
|
|
40
|
+
Default 65536. Past it, jr2 cuts `text`, drops `structured`, and sets `truncated`. It refuses
|
|
41
|
+
a value that is not a positive whole number: `mcp({ maxBody }): a positive number of bytes`.
|
|
42
|
+
- `idempotent` (optional): `boolean`
|
|
43
|
+
|
|
44
|
+
`true` when it is safe to send the request two times: the tool only reads, or it has its own
|
|
45
|
+
idempotency key. Default `false`. After an Orchestrator restart, jr2 cannot always tell if the
|
|
46
|
+
request went out. Then it sends an idempotent one again, and gives any other the output
|
|
47
|
+
`unknown`. jr2 does not read the tool's `idempotentHint`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpOutput
|
|
3
|
+
description: "The output of any `mcp` Effect: a call's, a read's or a prompt's."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effector-wire.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpOutput = McpCallOutput | McpReadOutput;
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The output of any `mcp` Effect: a call's, a read's or a prompt's.
|
|
15
|
+
|
|
16
|
+
**Forms**: it is one of these objects.
|
|
17
|
+
|
|
18
|
+
- Form 1: `outcome`, `isError`, `text`, `structured`, `truncated`
|
|
19
|
+
|
|
20
|
+
- `outcome`: `"returned"`
|
|
21
|
+
- `isError`: `boolean`
|
|
22
|
+
- `text`: `string`
|
|
23
|
+
- `structured` (optional): `unknown`
|
|
24
|
+
- `truncated` (optional): `boolean`
|
|
25
|
+
- Form 2: `outcome`, `reason`
|
|
26
|
+
|
|
27
|
+
- `outcome`: `"refused"`
|
|
28
|
+
- `reason`: `string`
|
|
29
|
+
- Form 3: `outcome`, `reason`
|
|
30
|
+
|
|
31
|
+
- `outcome`: `"unreachable"`
|
|
32
|
+
- `reason`: `string`
|
|
33
|
+
- Form 4: `outcome`, `reason`
|
|
34
|
+
|
|
35
|
+
- `outcome`: `"input-required"`
|
|
36
|
+
- `reason`: `string`
|
|
37
|
+
- Form 5: `outcome`, `reason`
|
|
38
|
+
|
|
39
|
+
- `outcome`: `"unknown"`
|
|
40
|
+
- `reason`: `string`
|
|
41
|
+
- Form 6: `outcome`, `text`, `structured`, `truncated`
|
|
42
|
+
|
|
43
|
+
- `outcome`: `"returned"`
|
|
44
|
+
- `text`: `string`
|
|
45
|
+
- `structured` (optional): `unknown`
|
|
46
|
+
- `truncated` (optional): `boolean`
|
|
47
|
+
- Form 7: `outcome`, `reason`
|
|
48
|
+
|
|
49
|
+
- `outcome`: `"(a later outcome)"`
|
|
50
|
+
- `reason` (optional): `string`
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpReadOutput
|
|
3
|
+
description: The output of an `mcp.read` or an `mcp.prompt` Effect.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpReadOutput`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/effector-wire.ts`. It is an export of `@jr2/orchestrator`, in the [Effects](group-effects.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpReadOutput =
|
|
12
|
+
| { outcome: "returned"; text: string; structured?: unknown; truncated?: boolean }
|
|
13
|
+
| McpNotReturned;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The output of an `mcp.read` or an `mcp.prompt` Effect. Its outcomes are those of
|
|
17
|
+
[`McpCallOutput`](type-mcpcalloutput.md), with no `isError`. For a read, `text` joins the text of the resource's
|
|
18
|
+
contents, and `structured` is the `contents` list: a blob is given only as its `mimeType` and its
|
|
19
|
+
size. For a prompt, `text` joins the text of the prompt's messages, and `structured` is the
|
|
20
|
+
`messages` list. Past the bound, `structured` is dropped and `truncated` is set.
|
|
21
|
+
|
|
22
|
+
**Forms**: it is one of these objects.
|
|
23
|
+
|
|
24
|
+
- Form 1: `outcome`, `reason`
|
|
25
|
+
|
|
26
|
+
- `outcome`: `"refused"`
|
|
27
|
+
- `reason`: `string`
|
|
28
|
+
- Form 2: `outcome`, `reason`
|
|
29
|
+
|
|
30
|
+
- `outcome`: `"unreachable"`
|
|
31
|
+
- `reason`: `string`
|
|
32
|
+
- Form 3: `outcome`, `reason`
|
|
33
|
+
|
|
34
|
+
- `outcome`: `"input-required"`
|
|
35
|
+
- `reason`: `string`
|
|
36
|
+
- Form 4: `outcome`, `reason`
|
|
37
|
+
|
|
38
|
+
- `outcome`: `"unknown"`
|
|
39
|
+
- `reason`: `string`
|
|
40
|
+
- Form 5: `outcome`, `text`, `structured`, `truncated`
|
|
41
|
+
|
|
42
|
+
- `outcome`: `"returned"`
|
|
43
|
+
- `text`: `string`
|
|
44
|
+
- `structured` (optional): `unknown`
|
|
45
|
+
- `truncated` (optional): `boolean`
|
|
46
|
+
- Form 6: `outcome`, `reason`
|
|
47
|
+
|
|
48
|
+
- `outcome`: `"(a later outcome)"`
|
|
49
|
+
- `reason` (optional): `string`
|
|
50
|
+
|
|
51
|
+
**See also**
|
|
52
|
+
|
|
53
|
+
- [Effects](../../concepts/effects.md)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpRemoteServer
|
|
3
|
+
description: A remote MCP server, which the Harness reaches over Streamable HTTP.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpRemoteServer`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/config.ts`. It is an export of `@jr2/orchestrator`, in the [Config](group-config.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpRemoteServer = {
|
|
12
|
+
url: string;
|
|
13
|
+
secret?: string;
|
|
14
|
+
timeout?: `${number}s` | `${number}m` | `${number}h`;
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A remote MCP server, which the Harness reaches over Streamable HTTP. An Agent that names it in its
|
|
19
|
+
`mcp` list gets the tools that its `tools` allowlist names.
|
|
20
|
+
|
|
21
|
+
A server with a `secret` needs an `https://` url, because the Custodian puts the value on TLS
|
|
22
|
+
only: `mcp.<name>.url must be an https:// URL`. A server with no secret can use `http://`. The
|
|
23
|
+
Harness sends `Authorization: Bearer <Stand-in>`, and the Custodian of each pod whose Agents name
|
|
24
|
+
the server puts the value in its place. A `secret` that the `secrets` list does not hold is
|
|
25
|
+
refused when the config loads: `<file> at mcp.<name>.secret: "<NAME>" is not an entry of secrets`.
|
|
26
|
+
Past `timeout`, the Harness cancels the call, and the model reads jr2's text.
|
|
27
|
+
|
|
28
|
+
**Fields**
|
|
29
|
+
|
|
30
|
+
- `url`: `string`
|
|
31
|
+
|
|
32
|
+
Its Streamable HTTP endpoint: `https://` when it has a `secret`.
|
|
33
|
+
- `secret` (optional): `string`
|
|
34
|
+
|
|
35
|
+
A name of the `secrets` list: its bearer token. With no `hosts`, that entry is bound to the
|
|
36
|
+
url's host, in `authorization`. Default: none.
|
|
37
|
+
- `timeout` (optional): `` `${number}s` | `${number}m` | `${number}h` ``
|
|
38
|
+
|
|
39
|
+
How long one call can run, such as `"90s"`. Default `"60s"`.
|
|
40
|
+
|
|
41
|
+
**Example**
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import { defineConfig } from "@jr2/orchestrator";
|
|
45
|
+
|
|
46
|
+
export default defineConfig({
|
|
47
|
+
secrets: [{ name: "SLACK_ACME_TOKEN", value: process.env.SLACK_ACME_TOKEN }],
|
|
48
|
+
mcp: { "slack-acme": { url: "https://mcp.slack.example/mcp", secret: "SLACK_ACME_TOKEN" } },
|
|
49
|
+
});
|
|
50
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpServer
|
|
3
|
+
description: "One MCP server of the Instance: a `McpRemoteServer` (`url`) or a `McpStdioServer` (`command`)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpServer`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/config.ts`. It is an export of `@jr2/orchestrator`, in the [Config](group-config.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpServer = McpRemoteServer | McpStdioServer;
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
One MCP server of the Instance: a [`McpRemoteServer`](type-mcpremoteserver.md) (`url`) or a [`McpStdioServer`](type-mcpstdioserver.md)
|
|
15
|
+
(`command`).
|
|
16
|
+
|
|
17
|
+
**Forms**: it is one of these objects.
|
|
18
|
+
|
|
19
|
+
- Form 1: `url`, `secret`, `timeout`
|
|
20
|
+
|
|
21
|
+
- `url`: `string`
|
|
22
|
+
|
|
23
|
+
Its Streamable HTTP endpoint: `https://` when it has a `secret`.
|
|
24
|
+
- `secret` (optional): `string`
|
|
25
|
+
|
|
26
|
+
A name of the `secrets` list: its bearer token. With no `hosts`, that entry is bound to the
|
|
27
|
+
url's host, in `authorization`. Default: none.
|
|
28
|
+
- `timeout` (optional): `` `${number}s` | `${number}m` | `${number}h` ``
|
|
29
|
+
|
|
30
|
+
How long one call can run, such as `"90s"`. Default `"60s"`.
|
|
31
|
+
- Form 2: `command`, `args`, `timeout`
|
|
32
|
+
|
|
33
|
+
- `command`: `string`
|
|
34
|
+
|
|
35
|
+
A program of the Sandbox Image.
|
|
36
|
+
- `args` (optional): `readonly string[]`
|
|
37
|
+
|
|
38
|
+
Its arguments.
|
|
39
|
+
- `timeout` (optional): `` `${number}s` | `${number}m` | `${number}h` ``
|
|
40
|
+
|
|
41
|
+
How long one call can run, such as `"90s"`. Default `"60s"`.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: McpStdioServer
|
|
3
|
+
description: "A stdio MCP server: a program of the Sandbox Image that the Harness starts for each Agent conversation, through jr2's spawner, inside the Agent's confinement."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `McpStdioServer`
|
|
7
|
+
|
|
8
|
+
Type, in `@jr2/orchestrator/src/config.ts`. It is an export of `@jr2/orchestrator`, in the [Config](group-config.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
type McpStdioServer = {
|
|
12
|
+
command: string;
|
|
13
|
+
args?: readonly string[];
|
|
14
|
+
timeout?: `${number}s` | `${number}m` | `${number}h`;
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A stdio MCP server: a program of the Sandbox Image that the Harness starts for each Agent
|
|
19
|
+
conversation, through jr2's spawner, inside the Agent's confinement. It is Workspace code: its env
|
|
20
|
+
holds only the Stand-ins that the `workspace()` grants, so it has no `secret` of its own. A
|
|
21
|
+
`"none"` Agent cannot name one, because its Turns run on the Instance Harness, where no Workspace
|
|
22
|
+
code runs.
|
|
23
|
+
|
|
24
|
+
**Fields**
|
|
25
|
+
|
|
26
|
+
- `command`: `string`
|
|
27
|
+
|
|
28
|
+
A program of the Sandbox Image.
|
|
29
|
+
- `args` (optional): `readonly string[]`
|
|
30
|
+
|
|
31
|
+
Its arguments.
|
|
32
|
+
- `timeout` (optional): `` `${number}s` | `${number}m` | `${number}h` ``
|
|
33
|
+
|
|
34
|
+
How long one call can run, such as `"90s"`. Default `"60s"`.
|
|
35
|
+
|
|
36
|
+
**Example**
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { defineConfig } from "@jr2/orchestrator";
|
|
40
|
+
|
|
41
|
+
export default defineConfig({ mcp: { notes: { command: "notes-mcp", args: ["--root", "/work"] } } });
|
|
42
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: NamedSecret
|
|
3
|
-
description:
|
|
3
|
+
description: A secret bound to a name, never `secret(open)`.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# `NamedSecret`
|
|
@@ -11,9 +11,9 @@ Type, in `@jr2/orchestrator/src/http-effect.ts`. The signature of an export, or
|
|
|
11
11
|
type NamedSecret = Secret & { readonly [K in keyof OpenSecretMark]?: never };
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
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
|
|
16
|
-
`secret(open)` carries may not be present. One type for the definition and the binding.
|
|
14
|
+
A secret bound to a name, never `secret(open)`. Where a definition's Open part is a whole that
|
|
15
|
+
holds a 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
|
|
16
|
+
mark `secret(open)` carries may not be present. One type for the definition and the binding.
|
|
17
17
|
|
|
18
18
|
**Fields**
|
|
19
19
|
|
|
@@ -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.
|
|
@@ -11,12 +11,11 @@ Type, in `@jr2/orchestrator/src/workspace.ts`. The signature of an export, or a
|
|
|
11
11
|
type NoSlotWorkspaceOptions<TSchema extends z.ZodObject> = Omit<SandboxOptions<never>, "repos"> & {
|
|
12
12
|
repos?: never;
|
|
13
13
|
input: TSchema;
|
|
14
|
-
spec?: (args: { input: WithoutEmptyIndex<z.infer<TSchema>> & HostInjectedInput }) => NoSlotSpec;
|
|
15
14
|
};
|
|
16
15
|
```
|
|
17
16
|
|
|
18
17
|
The options of a `workspace()` with no Repo Slot that declares the input that starts a run.
|
|
19
|
-
`repos` is left out
|
|
18
|
+
`repos` is left out.
|
|
20
19
|
|
|
21
20
|
**Fields**: each field of [`SandboxOptions`](type-sandboxoptions.md), except `repos`, and these:
|
|
22
21
|
|
|
@@ -26,7 +25,3 @@ The options of a `workspace()` with no Repo Slot that declares the input that st
|
|
|
26
25
|
- `input`: `TSchema`
|
|
27
26
|
|
|
28
27
|
The input that starts a run, as a `z.object`, as in [`WorkspaceOptions`](type-workspaceoptions.md).
|
|
29
|
-
- `spec` (optional): `(args: { input: WithoutEmptyIndex<z.infer<TSchema>> & HostInjectedInput; }) => NoSlotSpec`
|
|
30
|
-
|
|
31
|
-
A function from the run input to the Workspace's [`NoSlotSpec`](type-noslotspec.md): only `workGroup`.
|
|
32
|
-
Default: no `workGroup`.
|
|
@@ -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
|
+
```
|
|
@@ -5,7 +5,7 @@ description: "What an Open body declares: the parts that it lends a Chart, what
|
|
|
5
5
|
|
|
6
6
|
# `OpenBodyDeclaration`
|
|
7
7
|
|
|
8
|
-
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`,
|
|
8
|
+
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`, in the [Charts](group-charts.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
11
|
type OpenBodyDeclaration = {
|
|
@@ -5,7 +5,7 @@ description: The output of an Open body.
|
|
|
5
5
|
|
|
6
6
|
# `OpenBodyOutput`
|
|
7
7
|
|
|
8
|
-
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`,
|
|
8
|
+
Type, in `@jr2/orchestrator/src/open-body.ts`. It is an export of `@jr2/orchestrator`, in the [Charts](group-charts.md) group of the [Authoring surface](../authoring-surface.md) page.
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
11
|
type OpenBodyOutput =
|
|
@@ -8,10 +8,15 @@ description: "The input of a `command(open)`: a string for each `arg()` of the a
|
|
|
8
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
9
|
|
|
10
10
|
```ts
|
|
11
|
-
type OpenCommandInput<P = false> = Readonly<Record<string, string>> &
|
|
12
|
-
([P] extends [true] ? { sha: string } : unknown)
|
|
11
|
+
type OpenCommandInput<P = false, Opt = unknown> = Readonly<Record<string, string>> &
|
|
12
|
+
([P] extends [true] ? { sha: string } : unknown) &
|
|
13
|
+
WorktreeKey<Opt>;
|
|
13
14
|
```
|
|
14
15
|
|
|
15
16
|
The input of a `command(open)`: a string for each `arg()` of the argv that the Instance binds,
|
|
16
17
|
and with `pin`, the commit (`{ sha }`). The compiler cannot check the names. When the input has
|
|
17
18
|
no string for an `arg()`, the Effect fails when it starts.
|
|
19
|
+
|
|
20
|
+
**Fields**
|
|
21
|
+
|
|
22
|
+
- `worktree` (optional): [`AnyWorktreePath`](type-anyworktreepath.md)
|
|
@@ -8,10 +8,9 @@ description: "The options of a `workspace()` with no Repo Slot and no `input`: i
|
|
|
8
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
9
|
|
|
10
10
|
```ts
|
|
11
|
-
type PermissiveNoSlotWorkspaceOptions
|
|
11
|
+
type PermissiveNoSlotWorkspaceOptions = Omit<SandboxOptions<never>, "repos"> & {
|
|
12
12
|
repos?: never;
|
|
13
13
|
input?: never;
|
|
14
|
-
spec?: (args: { input: TInput }) => NoSlotSpec;
|
|
15
14
|
};
|
|
16
15
|
```
|
|
17
16
|
|
|
@@ -25,7 +24,3 @@ The options of a `workspace()` with no Repo Slot and no `input`: it starts with
|
|
|
25
24
|
- `input` (optional): `never`
|
|
26
25
|
|
|
27
26
|
Not present: a `workspace()` without `input` starts with any input.
|
|
28
|
-
- `spec` (optional): `(args: { input: TInput; }) => NoSlotSpec`
|
|
29
|
-
|
|
30
|
-
A function from the input to the Workspace's [`NoSlotSpec`](type-noslotspec.md): only `workGroup`. Default:
|
|
31
|
-
no `workGroup`.
|