@ishlabs/cli 0.17.7 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -54
- package/dist/commands/ask.d.ts +4 -4
- package/dist/commands/ask.js +66 -66
- package/dist/commands/chat.js +10 -10
- package/dist/commands/config.js +1 -1
- package/dist/commands/docs.js +1 -1
- package/dist/commands/iteration.js +57 -57
- package/dist/commands/mcp.d.ts +23 -0
- package/dist/commands/mcp.js +676 -0
- package/dist/commands/person.d.ts +5 -0
- package/dist/commands/{profile.js → person.js} +197 -162
- package/dist/commands/source.d.ts +6 -2
- package/dist/commands/source.js +35 -30
- package/dist/commands/study-analyze.d.ts +1 -1
- package/dist/commands/study-analyze.js +3 -3
- package/dist/commands/study-participant.d.ts +8 -0
- package/dist/commands/{study-tester.js → study-participant.js} +50 -50
- package/dist/commands/study-run.d.ts +6 -6
- package/dist/commands/study-run.js +341 -290
- package/dist/commands/study.js +106 -72
- package/dist/commands/workspace.js +13 -13
- package/dist/connect.js +5 -5
- package/dist/index.js +6 -4
- package/dist/lib/accessibility-profile.d.ts +1 -1
- package/dist/lib/accessibility-profile.js +1 -1
- package/dist/lib/alias-hydrate.js +4 -4
- package/dist/lib/alias-store.d.ts +5 -5
- package/dist/lib/alias-store.js +8 -8
- package/dist/lib/api-client.d.ts +1 -1
- package/dist/lib/api-client.js +1 -1
- package/dist/lib/billing.d.ts +11 -11
- package/dist/lib/billing.js +16 -16
- package/dist/lib/chat-endpoint-templates.js +1 -1
- package/dist/lib/command-helpers.d.ts +18 -18
- package/dist/lib/command-helpers.js +49 -37
- package/dist/lib/docs.js +570 -387
- package/dist/lib/enums.d.ts +2 -2
- package/dist/lib/enums.js +2 -2
- package/dist/lib/local-sim/browser.d.ts +1 -1
- package/dist/lib/local-sim/browser.js +1 -1
- package/dist/lib/local-sim/debug-report.d.ts +2 -2
- package/dist/lib/local-sim/debug-report.js +3 -3
- package/dist/lib/local-sim/loop.d.ts +5 -5
- package/dist/lib/local-sim/loop.js +38 -38
- package/dist/lib/local-sim/types.d.ts +12 -12
- package/dist/lib/mcp-clients.d.ts +51 -0
- package/dist/lib/mcp-clients.js +175 -0
- package/dist/lib/modality.d.ts +10 -10
- package/dist/lib/modality.js +46 -46
- package/dist/lib/output.d.ts +16 -15
- package/dist/lib/output.js +291 -226
- package/dist/lib/profile-sources.d.ts +64 -16
- package/dist/lib/profile-sources.js +91 -30
- package/dist/lib/skill-content.js +216 -168
- package/dist/lib/study-events.d.ts +3 -3
- package/dist/lib/study-events.js +1 -1
- package/dist/lib/study-inputs.d.ts +11 -1
- package/dist/lib/study-inputs.js +68 -17
- package/dist/lib/study-participants.d.ts +32 -0
- package/dist/lib/study-participants.js +12 -0
- package/dist/lib/types.d.ts +104 -34
- package/package.json +1 -1
- package/dist/commands/profile.d.ts +0 -5
- package/dist/commands/study-tester.d.ts +0 -8
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ish
|
|
2
2
|
|
|
3
|
-
CLI tool for [Ish](https://ishlabs.io) — run studies, send asks, and expose your localhost for AI
|
|
3
|
+
CLI tool for [Ish](https://ishlabs.io) — run studies, send asks, and expose your localhost for AI participant sessions.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -49,27 +49,27 @@ Test plan is available at `/Users/felixweiland/ish-cli-test-plan.md`.
|
|
|
49
49
|
|
|
50
50
|
## Concepts
|
|
51
51
|
|
|
52
|
-
Two top-level research primitives, both consume reusable
|
|
52
|
+
Two top-level research primitives, both consume reusable people:
|
|
53
53
|
|
|
54
54
|
```
|
|
55
55
|
Workspace (= product, top-level container)
|
|
56
56
|
│
|
|
57
|
-
├──
|
|
57
|
+
├── People ← reusable personas
|
|
58
58
|
│ └── Audience Sources (images/PDFs/audio/video/text transcripts that seed generation)
|
|
59
59
|
│
|
|
60
60
|
├── Study ─────────────── "structured research artifact"
|
|
61
61
|
│ ├── modality (interactive | text | video | audio | image | document)
|
|
62
62
|
│ ├── content-type (for non-interactive studies: email | social_post | ad | etc.)
|
|
63
|
-
│ ├── assignments (tasks the
|
|
64
|
-
│ ├── questionnaire (questions
|
|
63
|
+
│ ├── assignments (tasks the participant does)
|
|
64
|
+
│ ├── questionnaire (questions participants answer — text, slider, likert, choice)
|
|
65
65
|
│ └── Iterations ← the unit of execution within a study
|
|
66
|
-
│ └──
|
|
66
|
+
│ └── Participants ← instance of a Person inside this Iteration
|
|
67
67
|
│ └── Interactions / results
|
|
68
68
|
│
|
|
69
69
|
└── Ask ──────────────── "lightweight reaction artifact"
|
|
70
|
-
├── Audience (
|
|
70
|
+
├── Audience (participants, fixed at creation, max 5 rounds per ask)
|
|
71
71
|
└── Rounds ← the unit of execution within an ask
|
|
72
|
-
└── Responses (per-
|
|
72
|
+
└── Responses (per-participant reactions to a variant)
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
**The two primary run verbs:**
|
|
@@ -79,7 +79,7 @@ Workspace (= product, top-level container)
|
|
|
79
79
|
| Default | Run the latest iteration on the active study | Append a round to the active ask |
|
|
80
80
|
| Fresh setup | Create the iteration first: `ish iteration create …` | `--new` (creates ask + round 1 in one shot) |
|
|
81
81
|
| Specific target | `--iteration <id>` | Pass the ask id as positional arg |
|
|
82
|
-
| Audience | `--
|
|
82
|
+
| Audience | `--person <ids>`, `--sample <N>`, `--all`, or demographic filters (`--country`, `--gender`, `--min-age`, `--max-age`, `--search`, `--visibility`) — else reuse iteration's participants | `--person <ids>`, `--sample <N>`, `--all-simulatable`, or demographic filters (with `--new`) |
|
|
83
83
|
|
|
84
84
|
## Commands
|
|
85
85
|
|
|
@@ -95,36 +95,36 @@ ish upgrade --release 0.8.1 # pin a specific release
|
|
|
95
95
|
|
|
96
96
|
`ish upgrade` only works on standalone-binary installs (curl/Homebrew). On npm-installed CLIs (`npm install -g @ishlabs/cli`) it refuses with a pointer to `npm install -g @ishlabs/cli@latest` — overwriting `node` would break every other Node tool.
|
|
97
97
|
|
|
98
|
-
### Workspaces, studies, iterations,
|
|
98
|
+
### Workspaces, studies, iterations, people, configs (CRUD groups)
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
ish workspace list | create | get | update | delete | use | info
|
|
102
102
|
ish workspace site-access status | basic-auth | cookie | login | affirm-public | clear
|
|
103
103
|
ish study list | create | generate | get | results | update | delete | use
|
|
104
104
|
ish iteration list | create | get | update | delete
|
|
105
|
-
ish
|
|
105
|
+
ish person list | create | generate | get | update | delete
|
|
106
106
|
ish source upload | get | delete
|
|
107
107
|
ish config list | create | get | schema | update | delete
|
|
108
108
|
ish chat endpoint list | create | get | update | delete | use | init | test
|
|
109
109
|
ish secret list | set | delete
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
`ish workspace info` reports `studies_used / studies_max /
|
|
112
|
+
`ish workspace info` reports `studies_used / studies_max / participants_used / participants_max / tier` so an agent can branch on plan caps before a destructive call returns `error_code: usage_limit_reached`.
|
|
113
113
|
|
|
114
114
|
`ish chat endpoint` configures HTTP-bot endpoints for chat-modality studies (auto-detect from a curl example, smoke-test, edit). `ish secret` is the per-workspace KV store referenced from chatbot endpoint headers via `{{secret:KEY}}` placeholders. Run `ish docs get-page guides/chat` for the end-to-end recipe.
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
Participants live as a nested group on a study (low-level — usually created via `study run`):
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
|
-
ish study
|
|
120
|
-
ish study
|
|
119
|
+
ish study participant <id> # show participant details and results
|
|
120
|
+
ish study participant create | batch-create | delete # low-level escape hatches
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
`use` saves an active workspace/study/ask to `~/.ish/config.json` so you don't repeat `--workspace`/`--study`/`--ask` on every command. Aliases like `w-6ec`, `s-b2c`, `a-…`, `i-…`, `
|
|
123
|
+
`use` saves an active workspace/study/ask to `~/.ish/config.json` so you don't repeat `--workspace`/`--study`/`--ask` on every command. Aliases like `w-6ec`, `s-b2c`, `a-…`, `i-…`, `pt-…` work anywhere an ID is expected.
|
|
124
124
|
|
|
125
125
|
### Define a study — `ish study create`
|
|
126
126
|
|
|
127
|
-
A study locks in the persistent shape: modality, optional content-type taxonomy, the tasks
|
|
127
|
+
A study locks in the persistent shape: modality, optional content-type taxonomy, the tasks participants do (`--assignment`), and the questionnaire they answer (`--question` or `--questionnaire`). The actual URL or file lives on an iteration (next step).
|
|
128
128
|
|
|
129
129
|
```bash
|
|
130
130
|
# Interactive study, one assignment + a single-question questionnaire:
|
|
@@ -178,7 +178,7 @@ ish iteration create --image-urls ./post.png \
|
|
|
178
178
|
|
|
179
179
|
### Configure site access — `ish workspace site-access`
|
|
180
180
|
|
|
181
|
-
For studies that target a gated URL (HTTP basic auth, a session-cookie wall like Vercel preview protection, or a login form), set credentials on the workspace once.
|
|
181
|
+
For studies that target a gated URL (HTTP basic auth, a session-cookie wall like Vercel preview protection, or a login form), set credentials on the workspace once. Participants reuse them whenever a study points at a matching origin. Credentials are encrypted at rest; the CLI never reads them back, only checks whether each method is configured.
|
|
182
182
|
|
|
183
183
|
```bash
|
|
184
184
|
# Show what's configured:
|
|
@@ -190,7 +190,7 @@ ish workspace site-access basic-auth --username alice --password hunter2
|
|
|
190
190
|
# Session cookie (Vercel preview, Lovable, etc.):
|
|
191
191
|
ish workspace site-access cookie --name session --value abc123
|
|
192
192
|
|
|
193
|
-
# Login form — credentials the
|
|
193
|
+
# Login form — credentials the participant types into the page:
|
|
194
194
|
ish workspace site-access login --username demo --password demo
|
|
195
195
|
|
|
196
196
|
# Mark the site as public (silences the "credentials needed?" check):
|
|
@@ -209,19 +209,19 @@ printf %s "$STAGING_PW" | ish workspace site-access basic-auth --username alice
|
|
|
209
209
|
|
|
210
210
|
### Run a study — `ish study run`
|
|
211
211
|
|
|
212
|
-
Picks the latest iteration on the study (or `--iteration <id>`), creates
|
|
212
|
+
Picks the latest iteration on the study (or `--iteration <id>`), creates participants (explicit `--person`, demographic-filtered sample, or reusing the iteration's existing participants), and dispatches simulations. If the study has no iterations, run `ish iteration create` first.
|
|
213
213
|
|
|
214
214
|
```bash
|
|
215
|
-
# Run the latest iteration, reusing its
|
|
215
|
+
# Run the latest iteration, reusing its participants (after `study use`):
|
|
216
216
|
ish study run -y
|
|
217
217
|
|
|
218
|
-
# Run
|
|
219
|
-
ish study run --
|
|
218
|
+
# Run with explicit people:
|
|
219
|
+
ish study run --person p-795,p-af2
|
|
220
220
|
|
|
221
|
-
# Sample 3 Swedish
|
|
221
|
+
# Sample 3 Swedish people aged 35–50 from the workspace pool:
|
|
222
222
|
ish study run --country SE --min-age 35 --max-age 50 --sample 3
|
|
223
223
|
|
|
224
|
-
# Run with every female
|
|
224
|
+
# Run with every female person in the workspace:
|
|
225
225
|
ish study run --gender female --all
|
|
226
226
|
|
|
227
227
|
# Run a specific iteration:
|
|
@@ -238,28 +238,28 @@ ish study run --wait --timeout 600
|
|
|
238
238
|
ish study run --local --headed --slow-mo 500
|
|
239
239
|
```
|
|
240
240
|
|
|
241
|
-
**Audience flags** (shared with `ish ask`): `--
|
|
241
|
+
**Audience flags** (shared with `ish ask`): `--person <ids>` for explicit IDs, or any of `--country`, `--gender`, `--min-age`, `--max-age`, `--search`, `--visibility` paired with `--sample <N>` or `--all` to seed from the workspace pool. Mutually exclusive with `--person`.
|
|
242
242
|
|
|
243
243
|
**Other study verbs (low-level):**
|
|
244
244
|
|
|
245
245
|
```bash
|
|
246
246
|
ish study poll --study <id> # one-shot progress
|
|
247
|
-
ish study poll <
|
|
247
|
+
ish study poll <participant_id> # single participant status
|
|
248
248
|
ish study wait --study <id> # block until all done
|
|
249
249
|
ish study wait --iteration <id> # block on one iteration
|
|
250
|
-
ish study wait <
|
|
251
|
-
ish study cancel <
|
|
250
|
+
ish study wait <participant_id> --timeout 600 # block on one participant
|
|
251
|
+
ish study cancel <participant_id> # cancel a running sim
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
`<
|
|
254
|
+
`<participant_id>` is a participant alias (`pt-...`) or UUID. Get them from `ish study run --json`'s `participant_aliases[]` / `participant_ids[]` arrays:
|
|
255
255
|
|
|
256
256
|
```bash
|
|
257
|
-
ish study run --study s-b2c -y --json | jq -r '.
|
|
257
|
+
ish study run --study s-b2c -y --json | jq -r '.participant_aliases[]' # → pt-072, pt-1ed, ...
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
### Run an ask — `ish ask run`
|
|
261
261
|
|
|
262
|
-
Smart wrapper around the ask flow. With `--new`, creates a fresh ask + round 1 (
|
|
262
|
+
Smart wrapper around the ask flow. With `--new`, creates a fresh ask + round 1 (people from `--person`, `--sample`, `--all-simulatable`, or any demographic filter — `--country`, `--gender`, `--min-age`, `--max-age`, `--search`, `--visibility`). Without `--new`, appends a new round to the active or specified ask.
|
|
263
263
|
|
|
264
264
|
```bash
|
|
265
265
|
# Append a round to the active ask:
|
|
@@ -270,25 +270,25 @@ ish ask run --prompt "And now which?" \
|
|
|
270
270
|
ish ask run a-6ec --prompt "Round 2" \
|
|
271
271
|
--variant text:"A" --variant text:"B"
|
|
272
272
|
|
|
273
|
-
# Create a fresh ask with round 1, sample 30
|
|
273
|
+
# Create a fresh ask with round 1, sample 30 people, wait for results:
|
|
274
274
|
ish ask run --new --name "tagline AB" \
|
|
275
275
|
--prompt "Which sounds better?" \
|
|
276
276
|
--variant text:"Short and punchy." \
|
|
277
277
|
--variant text:"A longer, descriptive line." \
|
|
278
278
|
--sample 30 --wants-pick --wait
|
|
279
279
|
|
|
280
|
-
# Demographic-filtered sample (Swedish
|
|
280
|
+
# Demographic-filtered sample (Swedish people aged 35–50):
|
|
281
281
|
ish ask run --new --name "SE 35-50" \
|
|
282
282
|
--prompt "Which sounds better?" \
|
|
283
283
|
--variant text:"A" --variant text:"B" \
|
|
284
284
|
--country SE --min-age 35 --max-age 50 --sample 10 --wants-pick
|
|
285
285
|
|
|
286
|
-
# Image comparison from local files (auto-uploaded), explicit
|
|
286
|
+
# Image comparison from local files (auto-uploaded), explicit people:
|
|
287
287
|
ish ask run --new --name "hero shots" \
|
|
288
288
|
--prompt "Which feels premium?" \
|
|
289
289
|
--variant image:./hero-a.png::label=A \
|
|
290
290
|
--variant image:./hero-b.png::label=B \
|
|
291
|
-
--
|
|
291
|
+
--person p-d4e,p-a17 --wants-ratings
|
|
292
292
|
|
|
293
293
|
# Text from a markdown file + JSON questionnaire:
|
|
294
294
|
ish ask run --new --name "newsletter" \
|
|
@@ -306,15 +306,15 @@ ish ask run --new --name "newsletter" \
|
|
|
306
306
|
]
|
|
307
307
|
```
|
|
308
308
|
|
|
309
|
-
**
|
|
309
|
+
**People flags** (`--person`, `--sample`, `--all-simulatable`, `--country`, `--gender`, `--min-age`, `--max-age`, `--search`, `--visibility`, `--name`, `--description`, `--workspace`) only apply with `--new` — the people are fixed at ask creation.
|
|
310
310
|
|
|
311
311
|
**`--visibility` values** (same set everywhere it's accepted):
|
|
312
312
|
|
|
313
313
|
| Value | Selects |
|
|
314
314
|
|---|---|
|
|
315
|
-
| `workspace` |
|
|
316
|
-
| `shared` | Community-published
|
|
317
|
-
| `platform` | Admin-curated
|
|
315
|
+
| `workspace` | People owned by your workspace (default scope). |
|
|
316
|
+
| `shared` | Community-published people visible across workspaces. |
|
|
317
|
+
| `platform` | Admin-curated people from the platform pool. |
|
|
318
318
|
|
|
319
319
|
Old values `private` (now `workspace`) and `public` (now `platform`) keep working until the next release; the server logs a deprecation warning and maps them to the new vocabulary.
|
|
320
320
|
|
|
@@ -327,26 +327,26 @@ ish ask results [id] [--round <n>]
|
|
|
327
327
|
ish ask wait [id] [--round <n>] [--timeout <s>]
|
|
328
328
|
ish ask add-round [id] --prompt … --variant … # explicit form of `run`
|
|
329
329
|
ish ask add-questions [id] --round <n> --questions ./qs.json
|
|
330
|
-
ish ask add-
|
|
330
|
+
ish ask add-people [id] --person … # extend people for one round
|
|
331
331
|
ish ask create … # explicit form of `run --new`
|
|
332
332
|
ish ask update | archive | unarchive | delete | use
|
|
333
333
|
```
|
|
334
334
|
|
|
335
|
-
### Generate
|
|
335
|
+
### Generate people
|
|
336
336
|
|
|
337
|
-
`ish
|
|
337
|
+
`ish person generate` runs the same generation flow used in the web UI: an LLM reads your description and any uploaded sources (transcripts, customer records, audio interviews, screenshots) and returns either a single person or a group of people.
|
|
338
338
|
|
|
339
339
|
```bash
|
|
340
|
-
# 5
|
|
341
|
-
ish
|
|
340
|
+
# 5 people from a written brief:
|
|
341
|
+
ish person generate \
|
|
342
342
|
--description "Tech-savvy millennials in the US who use mobile banking" \
|
|
343
343
|
--count 5
|
|
344
344
|
|
|
345
|
-
# One
|
|
346
|
-
ish
|
|
345
|
+
# One person from a transcript — the file is uploaded automatically:
|
|
346
|
+
ish person generate --source ./interviews/sarah.txt --count 1
|
|
347
347
|
|
|
348
348
|
# Audio call with a written brief, diarized:
|
|
349
|
-
ish
|
|
349
|
+
ish person generate \
|
|
350
350
|
--description "Voices behind support tickets" \
|
|
351
351
|
--source ./call.mp3 --diarize --count 3
|
|
352
352
|
```
|
|
@@ -355,12 +355,12 @@ For explicit control over uploads — e.g. reusing the same source across multip
|
|
|
355
355
|
|
|
356
356
|
```bash
|
|
357
357
|
ish source upload ./call.mp3 --diarize
|
|
358
|
-
# →
|
|
358
|
+
# → ps-3a4 (status: processed)
|
|
359
359
|
|
|
360
|
-
ish
|
|
360
|
+
ish person generate --source ps-3a4 --propose-count
|
|
361
361
|
# → { proposed_count: 4, rationale: "..." }
|
|
362
362
|
|
|
363
|
-
ish
|
|
363
|
+
ish person generate --source ps-3a4 --count 4
|
|
364
364
|
```
|
|
365
365
|
|
|
366
366
|
### Chat-modality studies — `ish chat`
|
|
@@ -387,10 +387,10 @@ ish chat endpoint test ep-abc -m "Hello"
|
|
|
387
387
|
ish chat endpoint test ep-abc -m "Tell me more" --conversation-id "$CID" # stateful threading
|
|
388
388
|
|
|
389
389
|
# Run a chat-modality study using the saved endpoint (existing study verbs).
|
|
390
|
-
# Audience size lives on study run via --sample / --all / --
|
|
390
|
+
# Audience size lives on study run via --sample / --all / --person.
|
|
391
391
|
ish study create --modality chat --endpoint ep-abc --name "Sign-up Q1" --assignment "Sign up:Try to sign up"
|
|
392
392
|
ish study run --study stu-xyz --sample 5 --wait
|
|
393
|
-
ish study results stu-xyz --json | jq '.
|
|
393
|
+
ish study results stu-xyz --json | jq '.participants'
|
|
394
394
|
```
|
|
395
395
|
|
|
396
396
|
Local bots (`localhost` / `127.0.0.1` / `0.0.0.0`) auto-flag `is_tunnel_backed=true` on `init`; pair with `ish connect <port>` in another shell. Override with `--tunnel-backed` / `--no-tunnel-backed`.
|
|
@@ -413,7 +413,7 @@ ish disconnect --json # graceful shutdown of an active tunne
|
|
|
413
413
|
ISH_TOKEN=YOUR_TOKEN ish connect 8080
|
|
414
414
|
```
|
|
415
415
|
|
|
416
|
-
Foreground `connect` is long-running — keep it open while
|
|
416
|
+
Foreground `connect` is long-running — keep it open while participants run. The tunnel URL prints prominently after "Connected"; pass `--json` for one-line machine-readable output (`{"status":"connected","tunnel_url":"...","local_port":3000,"registered":true}`). The `--detach` form forks after the first successful heartbeat and returns immediately, tracking PID + URL in `~/.ish/connect.lock` so `connect status` and `disconnect` find it later.
|
|
417
417
|
|
|
418
418
|
Destructive verbs in `--json` mode (e.g. `chat endpoint delete`, `study delete`) require an explicit `--yes`; the rejection envelope carries `error_kind: "ConfirmationRequired"` and an `example` field with the same command + `--yes` appended, so an agent can recover without re-reading the help text.
|
|
419
419
|
|
package/dist/commands/ask.d.ts
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* ish ask — Create and run asks (multi-round surveys with variants).
|
|
3
3
|
*/
|
|
4
4
|
import type { Command } from "commander";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ParticipantSubset } from "../lib/types.js";
|
|
6
6
|
/**
|
|
7
7
|
* Parse the `--subset-round <n> --subset-variant <variant_id>` pair into
|
|
8
|
-
* an `
|
|
8
|
+
* an `ParticipantSubset` payload (Pattern B). Both flags must be passed
|
|
9
9
|
* together or neither — half a subset is a misconfiguration the agent
|
|
10
10
|
* should fix before dispatch, not a silent fallthrough to the full
|
|
11
|
-
*
|
|
11
|
+
* participant list.
|
|
12
12
|
*
|
|
13
13
|
* Returns `undefined` when neither flag is set; throws when only one is
|
|
14
14
|
* set or when `--subset-round` isn't a positive integer.
|
|
15
15
|
*/
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function parseParticipantSubset(subsetRound: string | undefined, subsetVariant: string | undefined): ParticipantSubset | undefined;
|
|
17
17
|
export declare function registerAskCommands(program: Command): void;
|