orkestrator 2.22.3 → 2.24.0-alpha

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 CHANGED
@@ -1,11 +1,33 @@
1
1
  # Orkestrator backend and client
2
2
 
3
- The `orkestrator` executable has two modes:
3
+ The `orkestrator` executable has three modes:
4
4
 
5
5
  - **Service** — `orkestrator`, `orkestrator serve …`, or the historical
6
6
  `orkestrator --host … --port …` forms run the backend in the foreground.
7
7
  - **Client** — `orkestrator <group> <command> …` talks to a backend that is
8
8
  already running. Client commands never start a backend.
9
+ - **Problem report** — `orkestrator --fix AGENT` opens a coding agent to
10
+ collect diagnostics and draft a GitHub issue.
11
+
12
+ ## Reporting a problem
13
+
14
+ Something wrong with Orkestrator? Let a coding agent help you report it:
15
+
16
+ ```bash
17
+ bunx orkestrator --fix claude # or codex, opencode
18
+ ```
19
+
20
+ Instead of starting Orkestrator, this opens that agent's interactive session
21
+ with instructions to ask what went wrong, read Orkestrator's logs and version
22
+ details on this machine, and draft a GitHub issue for
23
+ `orkestrator-ai/orkestrator-v2`. The agent is told to stay read-only, redact
24
+ credentials and personal details, and file only after you approve the draft
25
+ (through `gh`, or by giving you the new-issue link). It works in a new
26
+ temporary directory and saves the draft there as `issue.md`.
27
+
28
+ The agent on `PATH` is used; otherwise the copy Orkestrator installed. Pass
29
+ `--data-dir DIR` when the backend uses a non-default data directory. Run
30
+ `orkestrator --fix --help` for details.
9
31
 
10
32
  Run the Orkestrator backend service without installing the desktop application:
11
33
 
@@ -105,6 +127,7 @@ RUN_ID=$(jq -er '.result.runId' launch.json)
105
127
  SESSION=$(jq -er '.result.sessionId' launch.json)
106
128
  orkestrator run wait "$RUN_ID" --timeout 30m --json
107
129
  orkestrator session transcript "$SESSION" --limit 20 --json > transcript.json
130
+ orkestrator changes view "$ENV" --json > changes.json
108
131
  orkestrator environment exec "$ENV" --wait -- bun test
109
132
  ```
110
133
 
@@ -146,5 +169,10 @@ fixture project/environment lifecycle through the installed client, confirms
146
169
  only one backend ran, and stops it. It needs network access, which is why it is
147
170
  a publish gate rather than part of `mise run test`.
148
171
 
172
+ The npm dist-tag follows the version's update channel: `2.23.0` publishes as
173
+ `latest`, `2.23.0-beta` as `beta` and `2.23.0-alpha` as `alpha`, so
174
+ `bunx orkestrator` only ever gets a stable release. Try a prerelease with
175
+ `bunx orkestrator@beta` or `bunx orkestrator@alpha`.
176
+
149
177
  `dist/client.js` is the client bundle the launcher imports first; it must stay
150
178
  free of backend imports so client commands never initialize a service.
@@ -7,8 +7,8 @@ const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "
7
7
  const manifest = await Bun.file(path.join(packageRoot, "package.json")).json();
8
8
  const version = typeof manifest.version === "string" ? manifest.version : "0.0.0";
9
9
 
10
- // Decide service versus client before the backend is imported: help, version
11
- // and client commands must never initialize storage, listeners, or bridges.
10
+ // Decide service versus client before the backend is imported: help, version,
11
+ // --fix and client commands must never initialize storage, listeners, or bridges.
12
12
  const client = await import("../dist/client.js");
13
13
  const argv = process.argv.slice(2);
14
14
  const invocation = client.classifyInvocation(argv);
@@ -27,6 +27,9 @@ if (invocation.mode === "serve") {
27
27
  await import("../dist/main.js");
28
28
  } else if (invocation.mode === "client") {
29
29
  process.exitCode = await client.runClientProcess(invocation.argv, version);
30
+ } else if (invocation.mode === "fix") {
31
+ // Opens a coding agent to help report a problem; no backend is started.
32
+ process.exitCode = await client.runFixProcess(invocation.argv, version);
30
33
  } else {
31
34
  process.exitCode = client.renderInvocationError(argv, invocation.message);
32
35
  }