@quireco/cli 0.0.5 → 0.0.8

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
@@ -28,40 +28,44 @@ vp pack
28
28
  node dist/quire.mjs --help
29
29
  ```
30
30
 
31
- ## Workspace target (`quire env`)
31
+ ## Project runbook
32
32
 
33
- `quire env` manages the workspace target that tells Quire what application to investigate. Configure the default target once, then `investigate` will pick it up automatically:
33
+ Project-specific target guidance lives in `.quire/runbook.md`. The runbook is a committed Markdown file for deployments, local URLs, mobile app IDs, verification commands, safety rules, setup scripts, test accounts, and runner requirements. Quire does not pre-classify every run as web, mobile, or code before the agent starts; it gives the agent the runbook path, caller context, runtime capabilities, and request so the agent can resolve the target or report the smallest missing context.
34
34
 
35
- ```bash
36
- quire env init --web # prompt for a web target
37
- quire env init --web --base-url http://localhost:3000 # non-interactive web target
38
- quire env init --mobile --ios # scaffold a mobile target
39
- quire env # print the resolved target
40
- quire env --json # machine-readable form
35
+ Create or refresh the runbook with:
41
36
 
42
- quire env set platform=ios provider=local appId=com.example.app
43
- quire env set kind=mobile platform=android # switch web → mobile
44
- quire env unset device
37
+ ```bash
38
+ quire setup
45
39
  ```
46
40
 
47
- Named environments live under `.quire/environments/<name>.json` and are selected with `--env`:
41
+ A typical runbook includes sections like:
48
42
 
49
- ```bash
50
- quire env init --web --env local
51
- quire env init --web --env prod --base-url https://app.example.com
52
- quire "Verify checkout" --env prod
53
- ```
43
+ ```markdown
44
+ # Quire runbook
45
+
46
+ ## How to choose a target
54
47
 
55
- `set` accepts one or more `key=value` pairs and validates the result against the schema before writing. Valid keys depend on `kind`:
48
+ If the user says prod, use the production deployment in read-only mode.
49
+ If the user asks for local verification, use the provided URL or `$QUIRE_WEB_URL`.
50
+ Do not guess ports or app IDs.
56
51
 
57
- - **Web**: `baseUrl`
58
- - **Mobile**: `platform` (`ios`/`android`), `provider`, `device`, `appiumUrl`, `url`, `appId`, `appPath`
52
+ ## Deployments
59
53
 
60
- Setting `kind=mobile` (or `kind=web`) switches the union shape and drops incompatible fields. Use `quire env init --force` to start over from a stub.
54
+ ### dev
55
+
56
+ URL: https://dev.example.com
57
+ Safe for test accounts.
58
+
59
+ ## Verification procedures
60
+
61
+ Run `vp check` for static checks and `vp test` for unit tests.
62
+ ```
63
+
64
+ The removed `quire env` command now prints a migration message that points to `.quire/runbook.md`.
61
65
 
62
66
  ## Doctor
63
67
 
64
- `quire doctor` diagnoses the current setup before you start an investigation. It checks identity (auth + model broker), workspace (`.quire/environment.json` + target reachability), and run state (runs root writable, no stuck runs):
68
+ `quire doctor` diagnoses the current setup before you start an investigation. It checks identity (auth + model broker), workspace runbook state, and run state (runs root writable, no stuck runs):
65
69
 
66
70
  ```bash
67
71
  quire doctor # human-readable report, grouped by section
@@ -69,9 +73,7 @@ quire doctor --json # structured report for agents/CI
69
73
  quire doctor --strict # exit non-zero on warnings as well as failures
70
74
  ```
71
75
 
72
- Each check has a stable `id` (e.g. `auth.present`, `target.web.reachable`, `target.mobile.device`) so coding agents can act on specific failures without parsing prose. Failing checks include a `fix.command` you can run to resolve them. Exit code is `0` when all checks pass (or only warnings in non-strict mode) and `1` otherwise.
73
-
74
- Target reachability runs by default: web environments are probed with a HEAD request, iOS local environments check `xcrun simctl list devices booted`, Android local checks `adb devices`, and Appium providers ping `/status`.
76
+ Each check has a stable `id` (e.g. `auth.present`, `auth.valid`, `runbook.present`, `runbook.readable`, `runs.rootWritable`) so coding agents can act on specific failures without parsing prose. Failing checks include a `fix.command` you can run to resolve them. Exit code is `0` when all checks pass (or only warnings in non-strict mode) and `1` otherwise.
75
77
 
76
78
  ## Investigations
77
79
 
@@ -93,48 +95,55 @@ Coding agents and scripts should use `--json`. JSON mode returns a durable run h
93
95
 
94
96
  ```bash
95
97
  quire investigate "Reproduce the checkout crash" --json
96
- cat issue.md | quire investigate --stdin --json
97
- quire report <run-id> --wait --json
98
+ cat issue.md | quire investigate --json
99
+ quire status <run-id> --json
100
+ quire watch <run-id>
101
+ ```
102
+
103
+ Continue a previous session when the first run needs more context or a retry:
104
+
105
+ ```bash
106
+ quire continue <run-id> "Use the seeded buyer account and retry checkout"
107
+ printf 'Fixture account: buyer@example.com\n' | quire continue <run-id> --json
98
108
  ```
99
109
 
100
- `investigate` carries a deliberately small flag surface everything that describes the target (platform, provider, device, app id, etc.) lives in `.quire/environment.json` via `quire env`. The run-level flags are:
110
+ `continue` starts a new linked run, forks the prior harness-native session when available, and injects the previous transcript, handoff, evidence summary, and new caller context. The original run remains immutable.
111
+
112
+ `investigate` carries a deliberately small flag surface. Target context belongs in the prompt, `--url`, `$QUIRE_WEB_URL`, and `.quire/runbook.md`. Piped stdin is read automatically when stdin is a pipe or redirected file. If a positional prompt is also present, the prompt steers the piped context. The run-level flags are:
101
113
 
102
- - `--stdin` reads plain-text investigation context from stdin. If a positional prompt is also present, stdin is treated as additional context.
103
114
  - `--json` reserves stdout for the started run handle JSON only and uses automation-safe fail-fast behavior.
104
115
  - `--detach` starts the run without attaching to the live log.
105
- - `--watch` attaches to the live run log after starting the investigation. Human mode watches by default; this is mainly useful with `--json`. Ctrl-C detaches.
106
- - `--headed` shows the browser window for web targets.
107
- - `--url <url>` overrides the configured web `baseUrl` for one run.
108
- - `--env <name>` uses `.quire/environments/<name>.json` instead of the default `.quire/environment.json`.
116
+ - `--headed` shows the browser window when browser automation is used.
117
+ - `--url <url>` provides an explicit caller-context URL for one run. It does not force the run to be a web target; the agent still resolves what the URL means from the request and runbook.
109
118
 
110
- Top-level shortcuts mirror the most common run subcommands:
119
+ The top-level prompt form and the explicit investigate command are equivalent:
111
120
 
112
121
  ```bash
113
- quire watch <run-id> # alias for `quire runs watch`
114
- quire report <run-id> # alias for `quire runs report`
115
- quire handoff <run-id> # alias for `quire runs handoff`
122
+ quire "Verify checkout before I approve this PR"
123
+ quire investigate "Verify checkout before I approve this PR"
116
124
  ```
117
125
 
118
- Less common run operations stay under the canonical `runs` namespace: `quire runs status|cancel|list ...`.
126
+ Run lifecycle operations are top-level verbs: `quire status <run-id>`, `quire watch <run-id>`, `quire cancel <run-id>`, and `quire sync <run-id>`. The plural `quire runs` command lists recent runs.
119
127
 
120
- Each run writes `metadata.json`, `report.json`, `handoff.md`, and raw `emit-report.json` under `~/.quire/runs/<workspace-key>/<run-id>/` by default. Set `QUIRE_RUNS_DIR` to override the run-artifact root.
128
+ Each run writes a small artifact contract under `~/.local/share/quire/runs/<workspace-key>/<run-id>/` by default:
121
129
 
122
- `report.json` is the structured source of truth. The stable top-level fields include:
130
+ ```text
131
+ run/
132
+ status.json
133
+ progress.jsonl
134
+ handoff.md
135
+ evidence/
136
+ .harness-sessions/
137
+ <session-id>.jsonl
138
+ ```
123
139
 
124
- - `triage`, `summary`, `confidence`, and `likelyCause`
125
- - `evidence[]` with optional run-local artifact paths
126
- - `reproductionSteps[]` and `journeysTried[]`
127
- - `environment.notes[]` and `environment.blockers[]`
128
- - `codeReferences[]` with likely edit targets, optional symbols/lines, rationale, and confidence
129
- - `verification.commands[]` and `verification.manualSteps[]` with expected outcomes
130
- - `recommendedActions[]` and `suspectedFiles[]` for backwards-compatible summaries
140
+ Set `QUIRE_RUNS_DIR` to override the run-artifact root. `status.json` is Quire-owned operational state: lifecycle status, run metadata, request metadata, sync state, harness-session pointers, and final handoff/result JSON. `progress.jsonl` is the user-visible narrated timeline that powers `quire watch` and synced case events. `handoff.md` is the durable user-facing output. `evidence/` contains artifacts referenced by the progress stream or handoff. Harness-native transcripts live in hidden `.harness-sessions/` files and are referenced from `status.json`; they are private implementation state, not the public Quire run ledger.
131
141
 
132
- Use `quire runs report <run-id> --wait --json` when another agent needs the full structured payload.
133
- Use `quire runs handoff <run-id> --wait` when a human or coding agent needs a compact markdown brief with summary, evidence, likely source files, verification commands, and a ready-to-use next prompt.
142
+ Local investigations run the Pi agent loop on your machine. Quire prefers local Pi/OpenAI Codex provider auth when it is configured, then local GitHub Copilot auth, then Quire Credits through Quire's authenticated broker. Quire-owned provider auth is read from `~/.local/share/quire/model-auth.json` by default, with compatibility fallback to Pi's existing auth file. Set `QUIRE_MODEL_AUTH_PATH` to override the Quire-owned model auth file. `quire login` associates local runs with your Quire account for identity, wallet access, run upload, and future hosted workflows; personal model-provider auth remains a separate local-provider concern.
134
143
 
135
- Local investigations run the Pi agent loop on your machine. Quire prefers local Pi/OpenAI Codex provider auth when it is configured, then falls back to Quire Credits through Quire's authenticated broker. Quire-owned provider auth is read from `~/.quire/model-auth.json` by default, with compatibility fallback to Pi's existing auth file. Set `QUIRE_MODEL_AUTH_PATH` to override the Quire-owned model auth file. `quire login` associates local runs with your Quire account for identity, wallet access, run upload, and future hosted workflows; personal model-provider auth remains a separate local-provider concern.
144
+ The investigation runtime defaults to GPT-5.5 with medium thinking effort for local ChatGPT/Codex auth, local GitHub Copilot auth, and Quire Credits brokered through Cloudflare AI Gateway.
136
145
 
137
- The investigation runtime defaults to GPT-5.5 with medium thinking effort for both local ChatGPT/Codex auth and Quire Credits brokered through Cloudflare AI Gateway.
146
+ Authenticated runs fetch remote Quire run add-ons at startup. Run add-ons can include an Agent Skills-compatible skill pack, a Quire MCP gateway configured in the web app, and non-authoritative team or user guidance. The CLI-owned run instructions, safety contract, progress protocol, and handoff protocol remain authoritative. Quire includes the `agent-browser` skill by default, then layers dashboard-uploaded skills on top. The CLI downloads skill ZIPs only when the server hash changes, verifies them, unpacks them under `~/.local/share/quire/skill-packs/`, and attaches the unpacked root to Pi through native `additionalSkillPaths` so skills follow Pi's normal progressive-disclosure behavior. If an MCP gateway is present, the CLI exposes it as the Pi custom tool `quire_mcp_call`; tool execution is brokered through the authenticated Quire API and is limited to safe allowlisted tools. Run metadata records run-instruction ids/hashes, run add-on ids/hashes, skill pack id/hash/source, and MCP gateway id/hash/tool metadata, not raw prompts, raw skill instructions, resource files, provider credentials, or API tokens.
138
147
 
139
148
  Use `quire connect chatgpt` when you want Quire to connect ChatGPT/Codex subscription auth without using the Pi CLI first:
140
149
 
@@ -145,6 +154,14 @@ quire connect chatgpt --no-open
145
154
 
146
155
  This starts Pi's OpenAI Codex OAuth flow and writes Pi-compatible credentials to Quire's local model-auth store. Existing Pi users do not need this step because Quire still reads Pi's existing auth file as a fallback.
147
156
 
157
+ Use `quire connect copilot` when you want Quire to connect GitHub Copilot subscription auth. Pass `--github-enterprise <url-or-domain>` for GitHub Enterprise, or omit it for the interactive prompt and press Enter for github.com.
158
+
159
+ ```bash
160
+ quire connect copilot
161
+ quire connect copilot --github-enterprise company.ghe.com
162
+ quire connect copilot --github-enterprise company.ghe.com --json
163
+ ```
164
+
148
165
  Web investigations use the `agent-browser` package bundled with `@quireco/cli`; a separate global `agent-browser` install is not required. A usable Chrome/Chromium installation is still required for local browser automation unless the run uses an external browser provider or explicit executable path.
149
166
 
150
167
  Remote agents can use an environment-scoped API token instead of browser login:
@@ -179,7 +196,7 @@ Use `quire whoami --json` to check the authenticated account and hosted model-so
179
196
  "modelId": "gpt-4.1-mini",
180
197
  "status": "succeeded",
181
198
  "totalTokens": 13,
182
- "runId": "run_123",
199
+ "runId": "run_9x4mdq7p2h8kc6nv4apz",
183
200
  "createdAt": "2026-05-18T06:00:00.000Z"
184
201
  }
185
202
  ]
@@ -188,26 +205,3 @@ Use `quire whoami --json` to check the authenticated account and hosted model-so
188
205
  ```
189
206
 
190
207
  The hosted status is a redacted summary from Quire's server-side model-source API. It does not include provider credentials, sealed envelopes, raw tokens, prompts, or completions. Local `quire investigate` can use local Pi/OpenAI auth when configured; Quire Credits and hosted/Slack-triggered execution use Quire-managed billing.
191
-
192
- Example web environment (write with `quire env init --web` and edit via `quire env set`):
193
-
194
- ```json
195
- {
196
- "version": 1,
197
- "app": { "kind": "web", "baseUrl": "http://localhost:3000" }
198
- }
199
- ```
200
-
201
- Example mobile environment:
202
-
203
- ```json
204
- {
205
- "version": 1,
206
- "app": {
207
- "kind": "mobile",
208
- "platform": "ios",
209
- "provider": "local",
210
- "appId": "com.example.app"
211
- }
212
- }
213
- ```