@uchibeke/gallivant 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +26 -0
- package/LICENSE +204 -0
- package/README.md +239 -2
- package/SECURITY.md +19 -0
- package/bin/gallivant.mjs +261 -0
- package/bin/package-plugin.mjs +16 -0
- package/bin/release-live.mjs +29 -0
- package/bin/release-package.mjs +23 -0
- package/bin/session-runtime.mjs +13 -0
- package/bin/task-delivery-state.mjs +12 -0
- package/docs/README.md +72 -0
- package/docs/agent-setup.md +228 -0
- package/docs/app.md +111 -0
- package/docs/architecture.md +265 -0
- package/docs/chains.md +102 -0
- package/docs/codex-cloud.md +284 -0
- package/docs/commands.md +649 -0
- package/docs/config.md +437 -0
- package/docs/execution.md +796 -0
- package/docs/guardrails.md +311 -0
- package/docs/install.md +398 -0
- package/docs/launch.md +45 -0
- package/docs/learning.md +369 -0
- package/docs/network-recovery.md +101 -0
- package/docs/openai-agents.md +457 -0
- package/docs/prd.md +246 -0
- package/docs/preparation.md +110 -0
- package/docs/release-qualification.md +196 -0
- package/docs/releasing.md +149 -0
- package/docs/runtime-environment.md +113 -0
- package/docs/task-delivery.md +476 -0
- package/docs/tasks.md +739 -0
- package/lib/aport.mjs +95 -0
- package/lib/attribution.mjs +95 -0
- package/lib/block.mjs +89 -0
- package/lib/capabilities.mjs +3 -0
- package/lib/chains.mjs +222 -0
- package/lib/codex_cloud.mjs +160 -0
- package/lib/codex_cloud_config.mjs +20 -0
- package/lib/codex_cloud_input.mjs +49 -0
- package/lib/codex_cloud_result.mjs +74 -0
- package/lib/commands/doctor.mjs +466 -0
- package/lib/commands/init.mjs +245 -0
- package/lib/commands/learn.mjs +54 -0
- package/lib/commands/new.mjs +47 -0
- package/lib/commands/ready.mjs +45 -0
- package/lib/commands/register.mjs +249 -0
- package/lib/commands/resume.mjs +224 -0
- package/lib/commands/serve.mjs +349 -0
- package/lib/commands/start.mjs +247 -0
- package/lib/commands/start_services.mjs +22 -0
- package/lib/commands/status.mjs +150 -0
- package/lib/commands/task.mjs +73 -0
- package/lib/commands/up.mjs +228 -0
- package/lib/commands/why.mjs +143 -0
- package/lib/config.mjs +461 -0
- package/lib/context.mjs +102 -0
- package/lib/control.mjs +202 -0
- package/lib/control_contract.mjs +16 -0
- package/lib/coordinator.mjs +19 -0
- package/lib/credential.mjs +161 -0
- package/lib/daemon.mjs +156 -0
- package/lib/deliverable.mjs +357 -0
- package/lib/events.mjs +261 -0
- package/lib/executable.mjs +31 -0
- package/lib/execution.mjs +707 -0
- package/lib/execution_contract.mjs +15 -0
- package/lib/execution_input.mjs +4 -0
- package/lib/execution_io.mjs +94 -0
- package/lib/execution_journal.mjs +69 -0
- package/lib/execution_preparation.mjs +29 -0
- package/lib/execution_result.mjs +266 -0
- package/lib/fs.mjs +140 -0
- package/lib/gh.mjs +289 -0
- package/lib/git.mjs +434 -0
- package/lib/harness.mjs +521 -0
- package/lib/harness_log.mjs +432 -0
- package/lib/hash.mjs +16 -0
- package/lib/identity.mjs +98 -0
- package/lib/learning.mjs +654 -0
- package/lib/learning_contract.mjs +2 -0
- package/lib/learning_data.mjs +135 -0
- package/lib/learning_input.mjs +111 -0
- package/lib/learning_qualification.mjs +67 -0
- package/lib/learning_signer.mjs +151 -0
- package/lib/learning_store.mjs +88 -0
- package/lib/log.mjs +53 -0
- package/lib/network_diagnostics.mjs +64 -0
- package/lib/network_recovery.mjs +42 -0
- package/lib/notify.mjs +58 -0
- package/lib/openai_agents.mjs +373 -0
- package/lib/openai_agents_config.mjs +14 -0
- package/lib/openai_agents_http.mjs +87 -0
- package/lib/openai_agents_input.mjs +15 -0
- package/lib/openai_agents_sources.mjs +112 -0
- package/lib/owner_delivery.mjs +443 -0
- package/lib/plugin_package.mjs +340 -0
- package/lib/prd.mjs +635 -0
- package/lib/preparation_agents.mjs +33 -0
- package/lib/preparation_codex.mjs +212 -0
- package/lib/probe.mjs +126 -0
- package/lib/prompt.mjs +238 -0
- package/lib/provider_health.mjs +55 -0
- package/lib/public-format.mjs +31 -0
- package/lib/public_output.mjs +49 -0
- package/lib/release_package.mjs +154 -0
- package/lib/repository_files.mjs +86 -0
- package/lib/run.mjs +385 -0
- package/lib/run_log.mjs +94 -0
- package/lib/runtime-environment.mjs +87 -0
- package/lib/runtime_dependencies.mjs +15 -0
- package/lib/runtime_node.mjs +107 -0
- package/lib/runtime_state.mjs +174 -0
- package/lib/sources/index.mjs +27 -0
- package/lib/sources/prd.mjs +50 -0
- package/lib/start_contract.mjs +37 -0
- package/lib/state.mjs +246 -0
- package/lib/task_allowance.mjs +31 -0
- package/lib/task_completion.mjs +61 -0
- package/lib/task_contract.mjs +450 -0
- package/lib/task_delivery.mjs +219 -0
- package/lib/task_delivery_cancel.mjs +34 -0
- package/lib/task_delivery_contract.mjs +61 -0
- package/lib/task_delivery_mcp.mjs +40 -0
- package/lib/task_delivery_store.mjs +43 -0
- package/lib/task_delivery_view.mjs +88 -0
- package/lib/task_environment.mjs +281 -0
- package/lib/task_prepare.mjs +224 -0
- package/lib/task_store.mjs +38 -0
- package/lib/tasks.mjs +513 -0
- package/lib/tick.mjs +1654 -0
- package/lib/time.mjs +36 -0
- package/lib/tracker/assets.mjs +43 -0
- package/lib/tracker/pages.mjs +320 -0
- package/lib/tracker/runs.mjs +102 -0
- package/lib/tracker/stream.mjs +74 -0
- package/lib/tracker_process.mjs +107 -0
- package/lib/verification_sandbox.mjs +181 -0
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +605 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +156 -0
- package/node_modules/smol-toml/dist/error.d.ts +37 -0
- package/node_modules/smol-toml/dist/error.js +67 -0
- package/node_modules/smol-toml/dist/extract.js +289 -0
- package/node_modules/smol-toml/dist/index.cjs +770 -0
- package/node_modules/smol-toml/dist/index.d.ts +44 -0
- package/node_modules/smol-toml/dist/index.js +34 -0
- package/node_modules/smol-toml/dist/parse.d.ts +73 -0
- package/node_modules/smol-toml/dist/parse.js +164 -0
- package/node_modules/smol-toml/dist/primitive.js +151 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +32 -0
- package/node_modules/smol-toml/dist/stringify.js +219 -0
- package/node_modules/smol-toml/dist/struct.js +156 -0
- package/node_modules/smol-toml/dist/util.d.ts +43 -0
- package/node_modules/smol-toml/dist/util.js +57 -0
- package/node_modules/smol-toml/package.json +68 -0
- package/npm-shrinkwrap.json +1823 -0
- package/package.json +105 -4
- package/templates/claude-settings.json +18 -0
- package/templates/passport.gallivant.json +83 -0
- package/templates/plugin/bundled-runtime.json +26 -0
- package/templates/plugin/schemas/mcp.schema.json +120 -0
- package/templates/plugin/schemas/plugin.schema.json +65 -0
- package/templates/plugin/task-delivery.SKILL.md +60 -0
- package/templates/prd.md +32 -0
- package/templates/tracker/tracker.css +301 -0
- package/templates/tracker/tracker.js +721 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Let an agent set up Gallivant
|
|
2
|
+
|
|
3
|
+
Give the prompt below to your coding agent. It can inspect prerequisites, run
|
|
4
|
+
the published setup command, read the resulting report and validate a first task.
|
|
5
|
+
You handle account login and any required trust prompts. Setup does not need
|
|
6
|
+
access to every private repository, and running the setup command does not start
|
|
7
|
+
a paid session.
|
|
8
|
+
|
|
9
|
+
Start with **Codex or Claude and one repository**. Those are the harnesses supported
|
|
10
|
+
by `gallivant init`. [Hosted Agents API](openai-agents.md) uses an explicit config
|
|
11
|
+
instead; [other harnesses](../README.md#harness-support) have different setup and
|
|
12
|
+
capability boundaries. An installed binary alone does not establish working model
|
|
13
|
+
access or safe unattended operation.
|
|
14
|
+
|
|
15
|
+
## Prompt to give your agent
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Set up Gallivant on this machine using its current docs:
|
|
19
|
+
https://github.com/uchibeke/gallivant/blob/main/docs/agent-setup.md
|
|
20
|
+
https://github.com/uchibeke/gallivant/blob/main/docs/install.md
|
|
21
|
+
|
|
22
|
+
Inspect the installed version, operating system, Node architecture, existing
|
|
23
|
+
Gallivant config and target repository before changing anything. Use the actual
|
|
24
|
+
CLI --help and the docs matching the installed version. Prefer an already working
|
|
25
|
+
Codex or Claude setup. Preserve existing credentials, settings, running jobs,
|
|
26
|
+
worktrees and uncommitted changes. Report proposed config changes without secrets.
|
|
27
|
+
|
|
28
|
+
From inside the target checkout, run the published setup command:
|
|
29
|
+
npx --yes @uchibeke/gallivant init --harness codex (or --harness claude), then
|
|
30
|
+
read its report. Do not clone the Gallivant repository or install it globally
|
|
31
|
+
unless I ask. If the command stops because gh or the harness is signed out, tell
|
|
32
|
+
me the exact login command it printed and wait; do not sign in for me. Do not
|
|
33
|
+
overwrite an existing config, weaken security settings, install hooks, change
|
|
34
|
+
repository protections or elevate privileges without my authorization. Never ask
|
|
35
|
+
me to paste API keys or tokens into this conversation. Use the provider's login
|
|
36
|
+
flow or a private credential file instead.
|
|
37
|
+
|
|
38
|
+
Ask only for missing decisions: target repository and checkout, approved base
|
|
39
|
+
branch, preferred available harness, first task scope, and allowed spending.
|
|
40
|
+
A setup request alone does not authorize inference, pushes or PR creation.
|
|
41
|
+
Prepare and validate a written brief without starting it unless I have authorized
|
|
42
|
+
the first run. Plain-language task preparation also uses inference.
|
|
43
|
+
|
|
44
|
+
Finish with a short report: installed version/path, config path, selected harness,
|
|
45
|
+
repository/base, doctor results, reviewer and completion evaluator settings,
|
|
46
|
+
remaining blockers, and the exact command to start the validated first task.
|
|
47
|
+
If I authorized that task, start it once, verify the saved run identity and status,
|
|
48
|
+
and give me its dashboard or SSH-tunnel instructions. Do not claim a running or
|
|
49
|
+
completed task unless observed. Do not merge, publish, deploy or alter accounts.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If the user already provided those decisions and permissions, reuse them. Do not
|
|
53
|
+
ask for the same approval again. This guide does not authorize any particular
|
|
54
|
+
provider, repository, spend or broader machine change by itself.
|
|
55
|
+
|
|
56
|
+
## 1. Inspect before installing
|
|
57
|
+
|
|
58
|
+
Use the user's shell and package manager; no path to a particular person's home
|
|
59
|
+
is required. The coordinator supports macOS and Linux with Node 22 or newer.
|
|
60
|
+
Linux needs `ps` from `procps`/`procps-ng`. Harnesses and hosted artifact verification
|
|
61
|
+
have their own sandbox prerequisites; see [installation](install.md).
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
node --version
|
|
65
|
+
node -p 'process.platform + " " + process.arch'
|
|
66
|
+
npm --version
|
|
67
|
+
git --version
|
|
68
|
+
gh --version
|
|
69
|
+
jq --version
|
|
70
|
+
command -v gallivant
|
|
71
|
+
gh auth status
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
A missing command is a prerequisite to fix, not a reason to disable a guardrail.
|
|
75
|
+
Use the distribution's supported package instructions. Check the chosen harness
|
|
76
|
+
version/login using its CLI; `gallivant doctor` performs Gallivant's compatibility
|
|
77
|
+
and configuration checks after setup. Do not print credential files or tokens.
|
|
78
|
+
|
|
79
|
+
Inspect the target checkout separately from the Gallivant installation:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
cd /path/to/target-repository
|
|
83
|
+
git status --short
|
|
84
|
+
git remote -v
|
|
85
|
+
git branch --show-current
|
|
86
|
+
git config --get user.name
|
|
87
|
+
git config --get user.email
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Replace the path with the actual authorized checkout. Do not reset, clean,
|
|
91
|
+
automatically commit, or switch a dirty checkout. Confirm which GitHub repository
|
|
92
|
+
and base branch the task should use; the current branch is not necessarily the
|
|
93
|
+
approved PR target. Account login and Git identity belong to the user.
|
|
94
|
+
|
|
95
|
+
## 2. Run the setup command
|
|
96
|
+
|
|
97
|
+
Use the [current installation instructions](install.md#2-the-command). After
|
|
98
|
+
GitHub and the selected harness are signed in, from inside the target checkout:
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
npx --yes @uchibeke/gallivant init --harness codex # or: --harness claude
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`npx` runs the published package on demand; it installs nothing globally and
|
|
105
|
+
does not clone this repository. `init` is noninteractive. It refuses, writing
|
|
106
|
+
nothing, when the directory is not a GitHub checkout, `gh` or the harness is
|
|
107
|
+
signed out, or the login cannot push to the repository; report the printed
|
|
108
|
+
command to the user instead of working around it. Otherwise it creates
|
|
109
|
+
`~/.gallivant/config.json` (mode 600) when none exists, records the current
|
|
110
|
+
repository in `repos` once, creates the worktrees directory and prints the
|
|
111
|
+
`doctor` report. Exit status `1` means checks remain, not that setup failed.
|
|
112
|
+
|
|
113
|
+
With an existing config, `init` keeps every key as written and adds only the
|
|
114
|
+
current repository. Do not edit unrelated keys. The normal path is
|
|
115
|
+
`~/.gallivant/config.json`; use `$GALLIVANT_HOME/config.json` if that variable is
|
|
116
|
+
already set. Pass `--worktrees /absolute/path` only on first creation; later
|
|
117
|
+
runs refuse a different directory.
|
|
118
|
+
|
|
119
|
+
If the user prefers a persistent command, `npm install -g @uchibeke/gallivant`
|
|
120
|
+
is the documented option; ask before installing globally. Avoid `sudo npm
|
|
121
|
+
install`; use a user-owned Node installation or prefix. Do not silently replace
|
|
122
|
+
a different installed version while its daemon is running.
|
|
123
|
+
|
|
124
|
+
Before a real run, finish the [harness guardrail setup](install.md#7-aport-on-claude-code)
|
|
125
|
+
for the selected harness. Some steps require human interaction: for example,
|
|
126
|
+
Codex's initial `/hooks` trust prompt cannot be automated. Report such a blocker
|
|
127
|
+
instead of changing the enforcement level or bypassing it.
|
|
128
|
+
|
|
129
|
+
`init` records the repository without a base branch; its pull requests target
|
|
130
|
+
the default branch unless the user chooses otherwise with `start --base` or a
|
|
131
|
+
`{ "repo", "base" }` entry, following [configuration](config.md#the-base-branch).
|
|
132
|
+
Review the config diff without printing credentials. Confirm these decisions
|
|
133
|
+
before dispatch:
|
|
134
|
+
|
|
135
|
+
| Decision | What must be established |
|
|
136
|
+
|---|---|
|
|
137
|
+
| Repository access | The run can read/push the intended repository; use a selected-repository token where appropriate. Public-only work does not require private-repository access. |
|
|
138
|
+
| Base protections | Required PR/ruleset protections exist. `doctor` suggests repairs; it does not authorize changing organization policy. |
|
|
139
|
+
| Review | The default Codex GitHub reviewer is installed for this repo, another supported reviewer is configured, or the user explicitly chose `reviewer: null` for CI and trusted human feedback. |
|
|
140
|
+
| Completion evaluator | Default APort hosted confirmation needs network access. A local evaluator is an explicit user choice, not an automatic workaround for a failure. |
|
|
141
|
+
| Cost | Confirm `max_iterations`, provider budget controls and allowed spend. `max_budget_usd` is a native per-run dollar cap for Claude; other local harnesses have no equivalent enforced dollar cap. |
|
|
142
|
+
|
|
143
|
+
Run `gallivant doctor` (or `npx --yes @uchibeke/gallivant doctor`) again and
|
|
144
|
+
report every failure. Do not treat “signed in (API unchecked)” as proof of
|
|
145
|
+
inference access. `doctor` without extra flags checks
|
|
146
|
+
configuration, credentials and repository access without launching a model run.
|
|
147
|
+
`doctor --probe` launches a real Claude sandbox test when Claude is configured;
|
|
148
|
+
`doctor --send` sends a real notification. Use those only when authorized.
|
|
149
|
+
|
|
150
|
+
## 3. Validate a first task without inference
|
|
151
|
+
|
|
152
|
+
In the target checkout, use a new task name that does not already exist:
|
|
153
|
+
|
|
154
|
+
```sh
|
|
155
|
+
gallivant new first-docs-task
|
|
156
|
+
# Edit docs/prds/first-docs-task.md to describe the agreed task.
|
|
157
|
+
gallivant ready docs/prds/first-docs-task.md --check
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
With no `--harness` flag, `new` uses the first configured harness. If several are
|
|
161
|
+
configured, pass `--harness` with the harness agreed during setup.
|
|
162
|
+
|
|
163
|
+
Fill every required section with repository-specific facts. Pick a small useful
|
|
164
|
+
change, such as documenting existing test commands, with concrete acceptance
|
|
165
|
+
criteria and verification. The template deliberately contains placeholders;
|
|
166
|
+
validation must fail until they are replaced. [The PRD contract](prd.md) lists the
|
|
167
|
+
rules. Expected result: every rule says `ok` and exit status is `0`.
|
|
168
|
+
|
|
169
|
+
`ready --check` reads and validates locally without loading credentials, starting
|
|
170
|
+
a daemon or invoking a model. This is a useful stopping point when setup is
|
|
171
|
+
approved but implementation is not. Do not mark a failing brief ready manually.
|
|
172
|
+
|
|
173
|
+
If paid preparation is authorized, [natural-language task intake](tasks.md) can
|
|
174
|
+
write the brief instead. Use `task inspect` and returned revision/question IDs to
|
|
175
|
+
continue that same task; do not resubmit it simply because clarification is needed.
|
|
176
|
+
|
|
177
|
+
## 4. Start once, when authorized
|
|
178
|
+
|
|
179
|
+
Record readiness, then dispatch the validated brief against the approved branch:
|
|
180
|
+
|
|
181
|
+
```sh
|
|
182
|
+
gallivant ready docs/prds/first-docs-task.md
|
|
183
|
+
gallivant start docs/prds/first-docs-task.md --base YOUR_APPROVED_BASE
|
|
184
|
+
gallivant status --json
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Replace `YOUR_APPROVED_BASE` with the actual branch. `ready` can contact the
|
|
188
|
+
configured completion evaluator and updates the brief; `start` launches paid work
|
|
189
|
+
and permits repository changes, pushes and PR creation within that task.
|
|
190
|
+
It also starts/reuses the daemon and dashboard, and attempts to open the browser.
|
|
191
|
+
Do not launch a second `up` process.
|
|
192
|
+
|
|
193
|
+
For a headless machine, use `start ... --no-open`. Reach the loopback dashboard
|
|
194
|
+
through SSH instead of exposing it publicly:
|
|
195
|
+
|
|
196
|
+
```sh
|
|
197
|
+
# On your own computer; replace user@host with the coordinator's SSH destination.
|
|
198
|
+
ssh -N -L 8791:127.0.0.1:8791 user@host
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Then open `http://127.0.0.1:8791` locally. Substitute the reported port if configured
|
|
202
|
+
differently. `--no-server` skips the dashboard while keeping task monitoring.
|
|
203
|
+
Keep the coordinator awake and online; there is no automatic reboot/login service
|
|
204
|
+
installer. Startup is not a system service installation.
|
|
205
|
+
|
|
206
|
+
Save the reported task/run handle, worktree and status. If startup returns an error,
|
|
207
|
+
inspect `status` and `why HANDLE` before retrying: work may have started before a
|
|
208
|
+
service or browser failed. Diagnose network problems with
|
|
209
|
+
[the bounded network check](network-recovery.md). Send corrections with
|
|
210
|
+
`say HANDLE --note "..."`; use `resume HANDLE` for a stopped execution and
|
|
211
|
+
`recheck HANDLE` for an eligible PR review check. Neither is a blind retry for
|
|
212
|
+
unknown provider state.
|
|
213
|
+
|
|
214
|
+
`cancel HANDLE` fences further dispatch and requests provider cancellation;
|
|
215
|
+
confirm its status. `down` stops monitoring/dashboard services but **leaves active
|
|
216
|
+
agent processes running**. A ready-for-human result still requires the owner's
|
|
217
|
+
review and merge.
|
|
218
|
+
|
|
219
|
+
## What setup verification proves
|
|
220
|
+
|
|
221
|
+
The package's `npm run test:install` check packs the tarball and runs the
|
|
222
|
+
README's `npx` setup command against it from a disposable repository, with
|
|
223
|
+
fixture `gh` and `codex` commands and a throwaway home. It proves which binary
|
|
224
|
+
ran, the config and directory permissions, repository registration, repeat
|
|
225
|
+
safety and the printed next steps. It does not use a real account, invoke a
|
|
226
|
+
model or certify a provider's current availability. A first authorized
|
|
227
|
+
end-to-end task is still needed to verify the user's actual repository
|
|
228
|
+
permissions, provider entitlement, sandbox, CI and review integration.
|
package/docs/app.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# The app and the orchestration boundary
|
|
2
|
+
|
|
3
|
+
Gallivant has a local browser dashboard, a CLI, and a shared task-delivery API.
|
|
4
|
+
They use the same task state and review coordinator. The dashboard shows what is
|
|
5
|
+
running, what needs attention and why; you can send a correction or resume an
|
|
6
|
+
existing run without finding its terminal session.
|
|
7
|
+
|
|
8
|
+
For a first run, use [installation](install.md) and [natural-language tasks](tasks.md).
|
|
9
|
+
The work can be code, documentation, research or another verifiable repository
|
|
10
|
+
artifact. GitHub pull requests remain the delivery surface; arbitrary browser
|
|
11
|
+
chores, email delivery and deployments are not separate supported task targets.
|
|
12
|
+
|
|
13
|
+
## Start the dashboard
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
gallivant start
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This ensures the daemon and dashboard are running, then opens the browser at
|
|
20
|
+
`http://127.0.0.1:8791`. `gallivant serve` uses the same startup path. Pass
|
|
21
|
+
`--no-open` to keep it in the background, `--no-server` to omit the dashboard,
|
|
22
|
+
or `--no-daemon` when you manage the coordinator separately. See
|
|
23
|
+
[commands](commands.md) for port selection, foreground mode and service ownership.
|
|
24
|
+
The dashboard is a local control surface, not a publicly exposed server.
|
|
25
|
+
|
|
26
|
+
## Work with an existing run
|
|
27
|
+
|
|
28
|
+
The dashboard and run sidebar share the CLI's status model. A run page shows
|
|
29
|
+
its current state, stop reason, PR link, session history and streamed logs.
|
|
30
|
+
History can be loaded without redispatching work. Provider capabilities, saved
|
|
31
|
+
execution state and artifact summaries are exposed through the same tracker;
|
|
32
|
+
reading a page does not poll a provider or incur inference.
|
|
33
|
+
|
|
34
|
+
Run actions have different effects:
|
|
35
|
+
|
|
36
|
+
| Action | Effect |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Recheck PR | Ask the coordinator to refresh GitHub checks/review state and apply its normal readiness rules. |
|
|
39
|
+
| Resume agent | Continue the existing task on its current approved instructions. |
|
|
40
|
+
| Message agent | Send an operator correction to the existing session, including after a PR is ready for review. |
|
|
41
|
+
| Cancel task | Request cancellation through the shared provider-aware control path. |
|
|
42
|
+
|
|
43
|
+
The message composer is separate from the fixed actions. Normally a message waits
|
|
44
|
+
for active work to settle. Local providers with interrupt support offer an explicit
|
|
45
|
+
interrupt option; hosted providers expose only the controls they implement.
|
|
46
|
+
Requests are queued, and the daemon must be running to apply them. Messages keep
|
|
47
|
+
the brief, permissions and consumed budget; they do not authorize a new scope,
|
|
48
|
+
merge or deployment. Changing the delivery contract requires the explicit
|
|
49
|
+
resnapshot flow. Closed or merged PRs require a new task.
|
|
50
|
+
|
|
51
|
+
The current dashboard controls existing registered runs. Prepare new work through
|
|
52
|
+
`gallivant task` or `new` → `ready` → `start`. The exported
|
|
53
|
+
[task-delivery package](task-delivery.md) lets an authenticated host provide its own
|
|
54
|
+
intake UI/MCP surface without implementing another runner. That package is not
|
|
55
|
+
evidence that a hosted service or plugin integration is deployed.
|
|
56
|
+
|
|
57
|
+
## The browser boundary
|
|
58
|
+
|
|
59
|
+
GET routes read saved state. One `POST /api/run/control` route queues a bounded
|
|
60
|
+
operator request under the shared mutation lock; the daemon performs the action.
|
|
61
|
+
The POST requires a loopback peer, a loopback Host with the actual serving port,
|
|
62
|
+
an exact same-origin header and the server's CSRF token. Remote readers receive
|
|
63
|
+
no control token. There is no arbitrary shell command route.
|
|
64
|
+
|
|
65
|
+
These checks resist cross-origin requests and DNS rebinding; they are not
|
|
66
|
+
multi-user authentication or isolation from another process running as the same
|
|
67
|
+
OS user. Keep the standalone tracker on loopback. A server mounting the tracker
|
|
68
|
+
owns its authentication and bind address. Do not expose it through an unauthenticated
|
|
69
|
+
proxy. CSP, HTML escaping and text-only log insertion protect rendering of
|
|
70
|
+
repository, reviewer and agent-controlled text.
|
|
71
|
+
|
|
72
|
+
`mount(ctx, {base})` lets an existing dashboard, including Command Center, delegate
|
|
73
|
+
a path prefix. The tracker provides SSE logs with a bounded initial tail,
|
|
74
|
+
`Last-Event-ID` continuation and explicit history gaps. The CLI, standalone UI and
|
|
75
|
+
mounted UI retain one coordinator and one set of run identities.
|
|
76
|
+
|
|
77
|
+
## Local and hosted harnesses
|
|
78
|
+
|
|
79
|
+
Five local CLI adapters and OpenAI Agents API are implemented. Claude, Codex and
|
|
80
|
+
Agents API also have bounded natural-language preparation. Codex Cloud has a
|
|
81
|
+
transport but new dispatch is unavailable until the chosen environment can be
|
|
82
|
+
verified against the intended repository. [Configuration](config.md#execution-providers)
|
|
83
|
+
and the provider guides distinguish implemented capability, account access and
|
|
84
|
+
live qualification.
|
|
85
|
+
|
|
86
|
+
A hosted harness moves implementation compute off the device; it does not move
|
|
87
|
+
Gallivant's coordinator, GitHub publication or local verification. If this machine
|
|
88
|
+
sleeps, orchestration waits for it to return. Running the coordinator on a Node
|
|
89
|
+
host you operate requires its durable state and appropriate verification isolation.
|
|
90
|
+
Gallivant does not currently sell or provision that host for you.
|
|
91
|
+
|
|
92
|
+
Provider credentials and models belong to the selected harness/provider setup.
|
|
93
|
+
A subscription, API key or dashboard connection is not automatically usable by a
|
|
94
|
+
different transport. Costs depend on provider pricing, caching, task duration and
|
|
95
|
+
review rounds; Gallivant does not promise that API use is cheaper than a subscription.
|
|
96
|
+
See [execution](execution.md) for cost visibility and limits.
|
|
97
|
+
|
|
98
|
+
## Product decisions and future work
|
|
99
|
+
|
|
100
|
+
Gallivant owns the delivery contract, session ownership, retry bounds, review
|
|
101
|
+
feedback and completion evidence. Harnesses own tool execution and context
|
|
102
|
+
management. Adding a provider extends that boundary; it does not add a second
|
|
103
|
+
agent loop. Thin CLI adapters and durable hosted transports share the same review
|
|
104
|
+
state machine even though their execution details differ.
|
|
105
|
+
|
|
106
|
+
Earlier product exploration proposed a native desktop wrapper, managed hosting,
|
|
107
|
+
per-round harness routing and bundled provider plans. These remain possible
|
|
108
|
+
future directions, not capabilities enabled by this release. A desktop shell
|
|
109
|
+
would add conveniences such as an application icon; the browser dashboard already
|
|
110
|
+
provides run controls. Any future routing must preserve explicit provider consent,
|
|
111
|
+
authority, continuity and budget ownership rather than silently switching a run.
|