delegation-layer 0.3.0 → 0.4.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 +4 -2
- package/package.json +1 -1
- package/plugins/delegation-layer/.claude-plugin/plugin.json +1 -1
- package/plugins/delegation-layer/.codex-plugin/plugin.json +1 -1
- package/plugins/delegation-layer/skills/agent-integration/SKILL.md +16 -8
- package/plugins/delegation-layer/skills/agent-integration/evals/evals.json +23 -3
- package/plugins/delegation-layer/skills/agent-integration/examples/json-results.md +5 -2
- package/plugins/delegation-layer/skills/agent-integration/examples/managed-workspace.md +25 -10
- package/plugins/delegation-layer/skills/agent-integration/examples/read-only-task.md +3 -1
- package/plugins/delegation-layer/skills/agent-integration/references/ccr.md +5 -4
- package/plugins/delegation-layer/skills/agent-integration/references/collaboration.md +2 -2
- package/plugins/delegation-layer/skills/agent-integration/references/command-reference.md +69 -33
- package/plugins/delegation-layer/skills/agent-integration/references/continuation.md +7 -4
- package/plugins/delegation-layer/skills/agent-integration/references/interaction.md +6 -5
- package/plugins/delegation-layer/skills/agent-integration/references/result-handling.md +7 -4
- package/plugins/delegation-layer/skills/agent-integration/references/routing-rule.json +1 -1
- package/plugins/delegation-layer/skills/agent-integration/references/workspaces.md +18 -14
- package/plugins/delegation-layer/skills/agent-integration/scripts/delegate-routing-context.sh +2 -2
- package/scripts/installer/routing-store.mjs +79 -46
- package/skills/agent-integration/SKILL.md +16 -8
- package/skills/agent-integration/evals/evals.json +23 -3
- package/skills/agent-integration/examples/json-results.md +5 -2
- package/skills/agent-integration/examples/managed-workspace.md +25 -10
- package/skills/agent-integration/examples/read-only-task.md +3 -1
- package/skills/agent-integration/references/ccr.md +5 -4
- package/skills/agent-integration/references/collaboration.md +2 -2
- package/skills/agent-integration/references/command-reference.md +69 -33
- package/skills/agent-integration/references/continuation.md +7 -4
- package/skills/agent-integration/references/interaction.md +6 -5
- package/skills/agent-integration/references/result-handling.md +7 -4
- package/skills/agent-integration/references/routing-rule.json +1 -1
- package/skills/agent-integration/references/workspaces.md +18 -14
- package/skills/agent-integration/scripts/delegate-routing-context.sh +2 -2
|
@@ -24,13 +24,15 @@ The main skill owns [root selection](../SKILL.md#3-prepare-separate-paths-and-a-
|
|
|
24
24
|
| `schedule` | [Recurring definitions](#schedules), [history and execution evidence](#schedule-history-and-execution) | None |
|
|
25
25
|
| `scheduler serve/status/stop` (when supported), `scheduler run` | [User-started host and compatibility runtime](#scheduler-runtime) | Due occurrences use normal dispatch; status/stop do not launch providers |
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
The commands below use the CLI default and omit `--root`. The advanced override
|
|
28
|
+
syntax is `delegate --root ABS COMMAND ...`; use it only for an explicitly
|
|
29
|
+
supplied or already recorded custom or historical root, preserved exactly under
|
|
30
|
+
the main skill's [root rule](../SKILL.md#3-prepare-separate-paths-and-a-finite-brief).
|
|
29
31
|
|
|
30
32
|
## Dispatch
|
|
31
33
|
|
|
32
34
|
```text
|
|
33
|
-
delegate
|
|
35
|
+
delegate dispatch [--auto | --provider ID] --brief FILE \
|
|
34
36
|
--cwd ABS [--id TASK_ID] [--permission MODE] [--budget DURATION] \
|
|
35
37
|
[--model MODEL] [--effort EFFORT] [--native-timeout DURATION] \
|
|
36
38
|
[--interactive] [--review-target TARGET] [--resume-task TASK_ID] \
|
|
@@ -170,8 +172,8 @@ setup, even when there is no matching Team or project default.
|
|
|
170
172
|
After a task record is created, inspect the same ID and root:
|
|
171
173
|
|
|
172
174
|
```sh
|
|
173
|
-
delegate
|
|
174
|
-
delegate
|
|
175
|
+
delegate status TASK_ID --json
|
|
176
|
+
delegate collect TASK_ID --watch 5s --json
|
|
175
177
|
```
|
|
176
178
|
|
|
177
179
|
Dispatch/status/collect optionally expose top-level `team`, the admitted
|
|
@@ -198,18 +200,18 @@ another create to obtain a running scheduler.
|
|
|
198
200
|
See [definition and host results](result-handling.md#schedule-definition-and-host-results).
|
|
199
201
|
|
|
200
202
|
```text
|
|
201
|
-
delegate
|
|
203
|
+
delegate schedule create --brief FILE --cwd ABS \
|
|
202
204
|
[--auto | --provider ID] --cron 'MIN HOUR DOM MONTH DOW' \
|
|
203
205
|
[--timezone ZONE] [--id SCHEDULE_ID] [--model MODEL] [--effort EFFORT] \
|
|
204
206
|
[--permission MODE] [--budget DURATION] [--native-timeout DURATION] \
|
|
205
207
|
[--review-target TARGET] \
|
|
206
208
|
[--team-scope user|project --team TEAM_ID --member MEMBER_ID] \
|
|
207
209
|
[--project-root ABS] --json
|
|
208
|
-
delegate
|
|
209
|
-
delegate
|
|
210
|
-
delegate
|
|
211
|
-
delegate
|
|
212
|
-
delegate
|
|
210
|
+
delegate schedule list [--after SCHEDULE_ID] [--limit N] --json
|
|
211
|
+
delegate schedule show SCHEDULE_ID --json
|
|
212
|
+
delegate schedule pause SCHEDULE_ID --json
|
|
213
|
+
delegate schedule resume SCHEDULE_ID --json
|
|
214
|
+
delegate schedule delete SCHEDULE_ID --json
|
|
213
215
|
```
|
|
214
216
|
|
|
215
217
|
- Requested provider options remain as supplied, including omissions. Creation
|
|
@@ -245,9 +247,10 @@ delegate --root ROOT schedule delete SCHEDULE_ID --json
|
|
|
245
247
|
history. Pause/delete do not cancel an active occurrence or require a live
|
|
246
248
|
host. Create/resume preserve the saved definition even when the host is
|
|
247
249
|
absent, starting, in backoff or otherwise not confirmed ready.
|
|
248
|
-
-
|
|
249
|
-
empty; show/state commands report not found. List
|
|
250
|
-
100, including paused/deleted definitions. Use the
|
|
250
|
+
- Among schedule management commands, only create initializes absent storage.
|
|
251
|
+
An absent store lists as empty; show/state commands report not found. List
|
|
252
|
+
defaults to 50 rows, at most 100, including paused/deleted definitions. Use the
|
|
253
|
+
returned cursor to page.
|
|
251
254
|
- Create/state responses are compact. Show returns saved requested choices and
|
|
252
255
|
brief metadata, not brief contents, with a 2 MiB response limit. Keep the ID
|
|
253
256
|
when output or storage reports uncertainty; inspect it with show rather than
|
|
@@ -265,8 +268,8 @@ timestamp range has a distinct range error, not a claim of permanent invalidity.
|
|
|
265
268
|
### Schedule history and execution
|
|
266
269
|
|
|
267
270
|
```text
|
|
268
|
-
delegate
|
|
269
|
-
delegate
|
|
271
|
+
delegate schedule history SCHEDULE_ID [--before RFC3339Nano] [--limit N] --json
|
|
272
|
+
delegate schedule execution TASK_ID --json
|
|
270
273
|
```
|
|
271
274
|
|
|
272
275
|
`history` returns occurrence summaries and compact skipped intervals together,
|
|
@@ -292,22 +295,49 @@ Missing task files and corrupt evidence are distinct; see
|
|
|
292
295
|
[scheduled result handling](result-handling.md#scheduled-execution-results)
|
|
293
296
|
for freshness, no-result states, response bounds, exit codes and recovery.
|
|
294
297
|
|
|
298
|
+
## Supervisor owner control
|
|
299
|
+
|
|
300
|
+
```sh
|
|
301
|
+
delegate supervisor stop-owner --json
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Use only when the installed build advertises this command. Preserve the explicit
|
|
305
|
+
root for work bound to a custom or historical root. This command contacts one
|
|
306
|
+
existing infrastructure owner; it does not initialize, repair or start one.
|
|
307
|
+
It leaves Pueue and admitted tasks running. Startup, accepted operations and
|
|
308
|
+
unresolved cleanup can make the owner busy.
|
|
309
|
+
|
|
310
|
+
The `supervisor_owner` response separates `state` (`serving_released`,
|
|
311
|
+
`not_initialized`, `busy` or `unknown`) from `process_closure` (`closed`,
|
|
312
|
+
`pending` or `unknown`). A released owner can remain alive as the sole waiter for
|
|
313
|
+
its daemon; serving release is not proof of process exit or root quiescence.
|
|
314
|
+
The optional `process` value (`pid`, `start_token`) identifies the validated
|
|
315
|
+
selected `startup`; it does not establish liveness. It is omitted when no owner
|
|
316
|
+
was selected or validated. Observe that exact incarnation after daemon shutdown;
|
|
317
|
+
a new root-selected stop can address a newer owner.
|
|
318
|
+
An absent root reports `not_initialized` with unknown process closure.
|
|
319
|
+
Exit `0` reports the observed release or uninitialized state, `3` reports busy,
|
|
320
|
+
and `1` reports a control or observation fault. Preserve an uncertain result;
|
|
321
|
+
the command does not resend an uncertain stop request. Human output exposes
|
|
322
|
+
the same separate observations.
|
|
323
|
+
|
|
295
324
|
## Scheduler runtime
|
|
296
325
|
|
|
297
326
|
Check `delegate help` for the installed build's command surface. Use `serve`,
|
|
298
327
|
`status` and `stop` only when that help advertises them; prefer `serve` for managed
|
|
299
|
-
recovery. The signatures below describe the current command surface.
|
|
300
|
-
same
|
|
328
|
+
recovery. The signatures below describe the current command surface. They use
|
|
329
|
+
the same CLI default as ordinary schedule commands; preserve an explicit custom
|
|
330
|
+
or historical root when the schedule is bound to one.
|
|
301
331
|
|
|
302
332
|
```text
|
|
303
|
-
delegate
|
|
304
|
-
delegate
|
|
305
|
-
delegate
|
|
306
|
-
delegate
|
|
333
|
+
delegate scheduler serve
|
|
334
|
+
delegate scheduler status
|
|
335
|
+
delegate scheduler stop
|
|
336
|
+
delegate scheduler run [--pueue-config ABS] [--json]
|
|
307
337
|
```
|
|
308
338
|
|
|
309
339
|
If installed help offers only `scheduler run`, the user runs
|
|
310
|
-
`delegate
|
|
340
|
+
`delegate scheduler run` in an independent terminal or tmux pane and
|
|
311
341
|
leaves it in the foreground. Ctrl-C in its original pane stops it; it has no
|
|
312
342
|
automatic child restart. Keep the saved schedule ID and inspect
|
|
313
343
|
[history and execution](#schedule-history-and-execution) for actual occurrences.
|
|
@@ -332,9 +362,13 @@ When present, `scheduler.serve_command` preserves spaces and shell metacharacter
|
|
|
332
362
|
as separate arguments. Human output also prints JSON argv, not an unquoted shell string.
|
|
333
363
|
Preserve those boundaries; see the [scheduler response fields](result-handling.md#schedule-definition-and-host-results).
|
|
334
364
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
365
|
+
Explicit `serve` may initialize absent scheduler storage through the same
|
|
366
|
+
scheduler owner lease used by `schedule create`. It can become ready with no
|
|
367
|
+
definitions; later creates reach that running host without a restart. Existing
|
|
368
|
+
root identity and data stay in place; invalid existing storage fails explicitly.
|
|
369
|
+
Passive reads and low-level `run` do not initialize absent storage. A second host
|
|
370
|
+
or competing `run` cannot acquire the same root's ownership. The host uses its
|
|
371
|
+
retained launch context and the saved requested provider choices. For
|
|
338
372
|
Team-targeted schedules, new occurrences read the pinned catalog's latest Member
|
|
339
373
|
defaults through normal admission; existing task IDs retain saved settings. Use
|
|
340
374
|
the intended user configuration context, or a different catalog instance fails
|
|
@@ -452,8 +486,8 @@ A checkpoint is Git-content evidence, not a provider outcome.
|
|
|
452
486
|
## Providers and capabilities
|
|
453
487
|
|
|
454
488
|
```sh
|
|
455
|
-
delegate
|
|
456
|
-
delegate
|
|
489
|
+
delegate providers --json
|
|
490
|
+
delegate capabilities --provider PROVIDER_ID --json
|
|
457
491
|
```
|
|
458
492
|
|
|
459
493
|
`providers` returns `schema_version: 1` and a sorted `providers` array.
|
|
@@ -479,9 +513,11 @@ Inspection-backed admission can return `status: "ready"` with
|
|
|
479
513
|
`verification: "runtime"` after its probe. Managed runtime-only admission
|
|
480
514
|
keeps the catalog projection; its supervised worker checks compatibility before
|
|
481
515
|
provider execution. Collect the created task to establish the result.
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
or
|
|
516
|
+
Provider versions are optional diagnostics. Historical executable-digest members
|
|
517
|
+
remain readable as recorded data. Do not depend on these fields or calculate new
|
|
518
|
+
executable fingerprints for diagnostics or admission. Required behavior and the
|
|
519
|
+
selected installed executable govern compatibility. Live acceptance remains separate (`not_run`,
|
|
520
|
+
`passed`, or `blocked`); a blocked prerequisite is unresolved.
|
|
485
521
|
|
|
486
522
|
## Choosing models and effort
|
|
487
523
|
|
|
@@ -490,7 +526,7 @@ them. Keep defaults when no explicit choice is needed. Resolve a natural-languag
|
|
|
490
526
|
name through native discovery:
|
|
491
527
|
|
|
492
528
|
```sh
|
|
493
|
-
delegate
|
|
529
|
+
delegate models \
|
|
494
530
|
--provider PROVIDER_ID --cwd ABSOLUTE_WORKSPACE --json
|
|
495
531
|
```
|
|
496
532
|
|
|
@@ -533,7 +569,7 @@ reason codes and return no model facts.
|
|
|
533
569
|
Use static preflight when readiness was requested, not before every task:
|
|
534
570
|
|
|
535
571
|
```sh
|
|
536
|
-
delegate
|
|
572
|
+
delegate preflight \
|
|
537
573
|
--provider PROVIDER_ID --cwd ABSOLUTE_WORKSPACE \
|
|
538
574
|
--permission REQUESTED_MODE --json
|
|
539
575
|
```
|
|
@@ -22,7 +22,7 @@ When `status` or `collect` reports a timed-out turn with:
|
|
|
22
22
|
run:
|
|
23
23
|
|
|
24
24
|
```sh
|
|
25
|
-
delegate
|
|
25
|
+
delegate continue \
|
|
26
26
|
--task PREDECESSOR_TASK_ID \
|
|
27
27
|
--brief FOLLOW_UP_BRIEF \
|
|
28
28
|
--budget 30m \
|
|
@@ -35,8 +35,11 @@ indefinitely for a publication that the interrupted turn cannot complete.
|
|
|
35
35
|
|
|
36
36
|
The follow-up brief is optional. If it is omitted, Delegation Layer reuses the
|
|
37
37
|
validated predecessor brief. A successful continuation returns a new task ID
|
|
38
|
-
and links it to the predecessor. Observe and collect the new ID separately.
|
|
39
|
-
|
|
38
|
+
and links it to the predecessor. Observe and collect the new ID separately.
|
|
39
|
+
Follow the main skill's [root rule](../SKILL.md#3-prepare-separate-paths-and-a-finite-brief):
|
|
40
|
+
ordinary continuation omits `--root` in the same user/configuration context;
|
|
41
|
+
an explicit custom or recorded historical root must be retained exactly, even
|
|
42
|
+
if a returned command hint omits it. Permission is inherited; do not
|
|
40
43
|
add `--permission` to `continue`. Apply
|
|
41
44
|
[task creation](result-handling.md#task-creation) before retrying or observing.
|
|
42
45
|
Any authorized admission retry remains the argv-equivalent `continue`;
|
|
@@ -85,7 +88,7 @@ observe that successor instead; if its creation is uncertain, follow the
|
|
|
85
88
|
`workspace.id` from the task response; never guess an ID or path:
|
|
86
89
|
|
|
87
90
|
```sh
|
|
88
|
-
delegate
|
|
91
|
+
delegate workspace status \
|
|
89
92
|
WORKSPACE_ID --watch 30s --json
|
|
90
93
|
```
|
|
91
94
|
|
|
@@ -62,7 +62,7 @@ question. A printed question alone is not a pending reply request.
|
|
|
62
62
|
together with the exact answers. Submit the reply:
|
|
63
63
|
|
|
64
64
|
```sh
|
|
65
|
-
delegate
|
|
65
|
+
delegate reply "$task_id" \
|
|
66
66
|
--request "$request_id" --answers "$answers_file" \
|
|
67
67
|
--id "$message_id" --json
|
|
68
68
|
```
|
|
@@ -70,9 +70,10 @@ question. A printed question alone is not a pending reply request.
|
|
|
70
70
|
6. Keep collecting. A receipt is not task completion. Only the task's
|
|
71
71
|
authoritative `outcome` establishes the final result.
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
Follow the main skill's [root rule](../SKILL.md#3-prepare-separate-paths-and-a-finite-brief)
|
|
74
|
+
for dispatch, collection, reply, and steering. The examples use the CLI default;
|
|
75
|
+
preserve an explicit custom or recorded historical root for all of them.
|
|
76
|
+
The variables stand for actual values saved from this task;
|
|
76
77
|
reassign them in each shell invocation if your tool does not preserve variables.
|
|
77
78
|
A pending response without questions means keep collecting, not inspect OS
|
|
78
79
|
processes or dispatch a replacement task.
|
|
@@ -86,7 +87,7 @@ reply IDs and earlier steering IDs. Submit it; for a lost response, follow the
|
|
|
86
87
|
[delivery rules](#interpret-delivery-precisely) with the same ID and content:
|
|
87
88
|
|
|
88
89
|
```sh
|
|
89
|
-
delegate
|
|
90
|
+
delegate steer "$task_id" \
|
|
90
91
|
--brief "$guidance_file" --id "$steering_message_id" --json
|
|
91
92
|
```
|
|
92
93
|
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Read response fields independently. A successful control command is not a
|
|
4
4
|
successful provider result.
|
|
5
|
+
Examples use the CLI default under the main skill's
|
|
6
|
+
[root rule](../SKILL.md#3-prepare-separate-paths-and-a-finite-brief); preserve an
|
|
7
|
+
explicit custom or recorded historical root on related commands.
|
|
5
8
|
|
|
6
9
|
## Task control response
|
|
7
10
|
|
|
@@ -49,7 +52,7 @@ this table to each dispatch or continuation attempt separately, in order:
|
|
|
49
52
|
| Response | Next action |
|
|
50
53
|
|---|---|
|
|
51
54
|
| Usage error, no JSON response | Correct the reported syntax using Delegate help or `providers --json`, then invoke that request again. Parsing failed before admission. |
|
|
52
|
-
| `task_record: not_created`, `failure.code: supervisor_upgrade_required`, and `failure.next_action: run_supervisor_migrate` | Run `delegate --root "<the exact absolute
|
|
55
|
+
| `task_record: not_created`, `failure.code: supervisor_upgrade_required`, and `failure.next_action: run_supervisor_migrate` | Run `delegate supervisor migrate --json` once in the same user/configuration context for ordinary default-root work. If the failed command used an explicit custom or recorded historical root, run `delegate --root "<the exact absolute root used by the failed command>" supervisor migrate --json` instead. Retry the exact original admission argv once only after `supervisor_control.state: migrated` and `supervisor_control.next_action: retry_dispatch`; otherwise stop and report the migration response. A failed `continue` must be retried as the same `continue`; never replace it with a fresh `dispatch` or a direct provider call. |
|
|
53
56
|
| `task_record: not_created` and `failure.next_action: correct_request` | Correct that request and retry it. |
|
|
54
57
|
| `task_record: not_created`, `failure.code: workspace_provision_pending` or `workspace_busy`, and `failure.next_action: watch_workspace` | Follow [managed workspace recovery](#managed-workspace-results) using the same root and workspace. Once ready, retry the exact admission command and inputs. A failed `continue` remains that same `continue`, never a new dispatch. |
|
|
55
58
|
| `task_record: not_created`, `failure.code: resource_pressure`, `failure.next_action: retry_later`, and `failure.retry_after_seconds: 30` | Delegate checked the host and confirmed resource pressure, so no ordinary task record was created and no provider task is running for this attempt. Do not poll or observe a task. Choose one: report the refusal and stop, or wait at least 30 seconds in the foreground and retry the exact original admission argv once. A `continue` stays that same `continue`. If the retry is refused again, report and stop. Never loop, retry in the background, schedule a retry, or run Pueue or process commands. The 30 seconds is advice, not a guarantee that the retry will pass. |
|
|
@@ -192,7 +195,7 @@ keep `schedule.id` even if the command exits nonzero. The separate top-level
|
|
|
192
195
|
For `start_required`, both `schedule.next_action` and `scheduler.next_action`
|
|
193
196
|
carry that guidance. `scheduler.serve_command` is JSON argv, including the
|
|
194
197
|
resolved executable and exact root. Human output also prints JSON argv after
|
|
195
|
-
`run independently (argv)
|
|
198
|
+
`run independently (argv):`. For example, a returned root containing spaces:
|
|
196
199
|
|
|
197
200
|
```text
|
|
198
201
|
run independently (argv): ["/installation with spaces/delegate","--root","/state with spaces","scheduler","serve"]
|
|
@@ -280,7 +283,7 @@ For an older released occurrence whose publication is unfinished, use the
|
|
|
280
283
|
existing collection command with the same root and task ID:
|
|
281
284
|
|
|
282
285
|
```sh
|
|
283
|
-
delegate
|
|
286
|
+
delegate collect TASK_ID --watch 0s --json
|
|
284
287
|
```
|
|
285
288
|
|
|
286
289
|
Follow its own response and exit using [observation guidance](#observe-and-collect).
|
|
@@ -390,7 +393,7 @@ When Delegate returns `failure.next_action: "recheck"`, use the same root and
|
|
|
390
393
|
exact task ID:
|
|
391
394
|
|
|
392
395
|
```sh
|
|
393
|
-
delegate
|
|
396
|
+
delegate recheck TASK_ID --json
|
|
394
397
|
```
|
|
395
398
|
|
|
396
399
|
This command checks the already sealed evidence with an explicitly compatible
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"For work assigned to an external agent, model, or separate harness session, load the installed agent-integration skill before choosing tools and use Delegate. This includes research, implementation, testing, review, consultation, comparison, and debate, including external collaboration you choose. Discover destinations through Delegate. Preserve requested model IDs, effort, and permissions; do not guess ambiguous model identifiers. For task commands,
|
|
1
|
+
"For work assigned to an external agent, model, or separate harness session, load the installed agent-integration skill before choosing tools and use Delegate. This includes research, implementation, testing, review, consultation, comparison, and debate, including external collaboration you choose. Discover destinations through Delegate. Preserve requested model IDs, effort, and permissions; do not guess ambiguous model identifiers. For ordinary task, schedule, observation, interaction, and continuation commands, omit --root and let the CLI resolve its default in the same user/configuration context, independently of project cwd. Never assemble a default path, use a sample path or shell fallback, or treat ambient DELEGATE_ROOT as authority. Only pass --root for an explicitly user-supplied or already recorded custom or historical root; preserve that exact path for every command concerning its work. Do not search other roots for an old task or invent per-task or per-project roots. Keep each concurrent request and its response associated separately. Capture each dispatch response and exit status once; after task_record created, observe that task ID. Never dispatch again merely to recover output or inspect its exit status. Naming a CLI identifies the destination, not a request to bypass Delegate. Earlier assistant-generated direct-launch workflows do not override this preference. Native same-harness subagents remain available unless a separate session is requested. Respect an explicit user choice of another integration; otherwise do not substitute provider CLIs, plugins, or APIs after a Delegate blocker. Before observing or retrying an admission, read the installed skill's references/result-handling.md#task-creation and apply its creation decisions. It owns the narrow same-root migration, workspace-wait, and resource-refusal exceptions before the generic not_created stop rule. Preserve the original admission intent: dispatch remains dispatch and continue remains continue; never replace a failed continue with a fresh dispatch or direct provider call. A stop_and_report failure ends that attempt, not diagnosis: follow references/result-handling.md#failure-diagnosis without another generic troubleshooting request. Inspect bounded returned evidence and relevant authorized local read-only facts, distinguish supported causes from uncertainty, and propose a concrete next step. Do not poll unknown/uncreated tasks, expose credentials or unrestricted output, retry uncertain work, change setup/permissions or substitute destinations without authorization covering that action. Continue other independent requests. Keep collection in the foreground until completion or a reported blocker unless the user requested detachment. Pending work is observed through Delegate status, collect, or events, not OS process searches or supervisor commands. Merely discussing or configuring a tool is not delegation."
|
|
@@ -7,6 +7,10 @@ or attaches to a managed workspace (`--isolation git-worktree` or
|
|
|
7
7
|
`--workspace ID`), or creates or removes a [Git checkpoint](#git-checkpoints).
|
|
8
8
|
|
|
9
9
|
This reference is self-contained guidance for using managed workspaces.
|
|
10
|
+
Commands use the CLI default under the main skill's
|
|
11
|
+
[root rule](../SKILL.md#3-prepare-separate-paths-and-a-finite-brief). For a workspace
|
|
12
|
+
or checkpoint in an explicit custom or recorded historical root, pass that
|
|
13
|
+
exact `--root` on every related command.
|
|
10
14
|
|
|
11
15
|
Provider-native permissions still apply inside an isolated checkout. A provider
|
|
12
16
|
may edit files but be unable to stage or commit because linked-worktree Git
|
|
@@ -41,7 +45,7 @@ row ending or a provider outcome alone is not closure evidence.
|
|
|
41
45
|
Create a managed workspace from a committed source base:
|
|
42
46
|
|
|
43
47
|
```text
|
|
44
|
-
delegate
|
|
48
|
+
delegate dispatch --isolation git-worktree --cwd ABS \
|
|
45
49
|
[--base REV] [--workspace-budget DURATION] ... --json
|
|
46
50
|
```
|
|
47
51
|
|
|
@@ -55,7 +59,7 @@ removing that source does not block capture, release, or forget. A request that
|
|
|
55
59
|
workspace uses its recorded checkout and source identity:
|
|
56
60
|
|
|
57
61
|
```text
|
|
58
|
-
delegate
|
|
62
|
+
delegate dispatch --workspace WORKSPACE_ID ... --json
|
|
59
63
|
```
|
|
60
64
|
|
|
61
65
|
Public `--workspace` cannot be combined with `--cwd`, `--base`, or
|
|
@@ -80,11 +84,11 @@ made no write outside the promised content scope.
|
|
|
80
84
|
The CLI currently exposes these managed-workspace commands:
|
|
81
85
|
|
|
82
86
|
```text
|
|
83
|
-
delegate
|
|
84
|
-
delegate
|
|
85
|
-
delegate
|
|
86
|
-
delegate
|
|
87
|
-
delegate
|
|
87
|
+
delegate workspace list [--after ID] [--limit 1..50] --json
|
|
88
|
+
delegate workspace status ID [--operation OP] [--watch DURATION] --json
|
|
89
|
+
delegate workspace exec ID --budget DURATION --json -- ARGV...
|
|
90
|
+
delegate workspace release ID [--discard] [--budget DURATION] --json
|
|
91
|
+
delegate workspace forget ID [--budget DURATION] --json
|
|
88
92
|
```
|
|
89
93
|
|
|
90
94
|
`workspace exec` passes `ARGV...` directly to the supervised helper; the
|
|
@@ -110,7 +114,7 @@ must not mutate the predecessor's immutable records. A retained workspace can be
|
|
|
110
114
|
read-only review by attaching its ID, for example:
|
|
111
115
|
|
|
112
116
|
```text
|
|
113
|
-
delegate
|
|
117
|
+
delegate dispatch --provider codex:review \
|
|
114
118
|
--workspace WORKSPACE_ID --review-target TARGET --brief ABS_BRIEF \
|
|
115
119
|
--permission read-only --budget 1h --json
|
|
116
120
|
```
|
|
@@ -183,11 +187,11 @@ fixed Delegate values; trailers carry the checkpoint ID and request digest.
|
|
|
183
187
|
This is unrelated to a provider continuation `mode: "checkpoint"`.
|
|
184
188
|
|
|
185
189
|
```text
|
|
186
|
-
delegate
|
|
187
|
-
delegate
|
|
188
|
-
delegate
|
|
189
|
-
delegate
|
|
190
|
-
delegate
|
|
190
|
+
delegate checkpoint create --cwd ABS [--budget DURATION] --json
|
|
191
|
+
delegate checkpoint create --workspace ID [--budget DURATION] --json
|
|
192
|
+
delegate checkpoint status CHECKPOINT_ID [--operation OP] [--watch DURATION] --json
|
|
193
|
+
delegate checkpoint list [--after CHECKPOINT_ID] [--limit 1..50] --json
|
|
194
|
+
delegate checkpoint remove CHECKPOINT_ID [--budget DURATION] --json
|
|
191
195
|
```
|
|
192
196
|
|
|
193
197
|
- `create` names exactly one target: `--cwd` for an absolute ordinary Git
|
|
@@ -232,7 +236,7 @@ Save every response and exit code once; follow
|
|
|
232
236
|
the same repository as `--cwd`, normally the source the Lead already uses:
|
|
233
237
|
|
|
234
238
|
```text
|
|
235
|
-
delegate
|
|
239
|
+
delegate dispatch --auto --brief ABS_BRIEF --cwd ABS_SOURCE \
|
|
236
240
|
--isolation git-worktree --base COMMIT_OID \
|
|
237
241
|
--permission workspace-write --budget 30m --json
|
|
238
242
|
```
|
|
@@ -5,11 +5,11 @@ case "${1:-}" in
|
|
|
5
5
|
SessionStart|SubagentStart) event=$1 ;;
|
|
6
6
|
*) printf '%s\n' 'Expected SessionStart or SubagentStart.' >&2; exit 2 ;;
|
|
7
7
|
esac
|
|
8
|
-
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
8
|
+
script_dir=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)
|
|
9
9
|
rule_file="$script_dir/../references/routing-rule.json"
|
|
10
10
|
# Read before emitting anything so a missing asset cannot produce partial JSON.
|
|
11
11
|
rule=$(cat "$rule_file")
|
|
12
|
-
skill_file="$(CDPATH= cd -- "$script_dir/.." && pwd)/SKILL.md"
|
|
12
|
+
skill_file="$(CDPATH='' cd -- "$script_dir/.." && pwd)/SKILL.md"
|
|
13
13
|
DELEGATE_ROUTING_EVENT="$event" DELEGATE_ROUTING_RULE="$rule" DELEGATE_ROUTING_SKILL="$skill_file" awk '
|
|
14
14
|
BEGIN {
|
|
15
15
|
# Paths are task data, not shell code. Escape every JSON control character.
|