@markjaquith/agency 3.7.0 → 3.9.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 +32 -23
- package/package.json +1 -1
- package/src/act-schema.ts +3 -0
- package/src/cli-parser.ts +12 -4
- package/src/commands/act-actions.ts +799 -29
- package/src/commands/act.ts +9 -20
- package/src/commands/archive.ts +17 -9
- package/src/commands/sync.ts +2 -1
- package/src/commands/work.ts +11 -14
- package/src/services/ArchiveService.ts +25 -7
- package/src/services/SyncService.ts +6 -9
package/README.md
CHANGED
|
@@ -616,18 +616,21 @@ handoffs restore the terminal before starting the interactive worker, then reope
|
|
|
616
616
|
the TUI when the worker returns. A configured
|
|
617
617
|
external chooser continues to offer goals and **Browse items** through that chooser.
|
|
618
618
|
|
|
619
|
-
| Goal | Choose in `act` | Discovery/action ID
|
|
620
|
-
| ------------------------------------ | ------------------------------------------------------------------------------------------------- |
|
|
621
|
-
|
|
|
622
|
-
| Create
|
|
623
|
-
| Split work | Add a phase / split this task; name the existing work's first phase | `split`
|
|
624
|
-
| Work on a task or phase | Work on this item | `work`
|
|
625
|
-
| Move from investigation to execution | Create implementation follow-up | `handoff`
|
|
626
|
-
| Review someone else's work | Review a PR, or a remote branch/commit | `review`, `review-ref`
|
|
627
|
-
| Close finished work | Close or reopen work → complete without a PR, drop abandoned work, refresh a merged PR, or reopen | `complete`, `drop`, `sync`, `reopen`
|
|
628
|
-
|
|
|
629
|
-
|
|
|
630
|
-
|
|
|
619
|
+
| Goal | Choose in `act` | Discovery/action ID |
|
|
620
|
+
| ------------------------------------ | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
621
|
+
| Manage repositories | Add, link, set up, materialize, fetch, verify, rename, update, unlink, or remove aliases | `repo-add`, `repo-link`, `repo-setup`, `repo-materialize`, `repo-fetch`, `repo-verify`, `repo-rename`, `repo-remote`, `repo-unlink`, `repo-remove` |
|
|
622
|
+
| Create work | Create a standard task, multi-phase task, investigation, epic, or a task inside an epic | `task-create`, `multi-phase-create`, `investigation-create`, `epic-create`, `task-create-in-epic` |
|
|
623
|
+
| Split work | Add a phase / split this task; name the existing work's first phase | `split` |
|
|
624
|
+
| Work on a task or phase | Work on this item | `work` |
|
|
625
|
+
| Move from investigation to execution | Create implementation follow-up | `handoff` |
|
|
626
|
+
| Review someone else's work | Review a PR, or a remote branch/commit | `review`, `review-ref` |
|
|
627
|
+
| Close finished work | Close or reopen work → complete without a PR, drop abandoned work, refresh a merged PR, or reopen | `complete`, `drop`, `sync`, `reopen` |
|
|
628
|
+
| Publish or update PR status | Push without a PR, refresh provider state, create a PR, mark a GitHub PR ready, or close it | `push`, `sync`, `pr`, `pr-ready`, `pr-close` |
|
|
629
|
+
| Maintain review work | Fetch and repin a review task to its current source | `review-refresh` |
|
|
630
|
+
| Organize work | Rename an item, move a task into/out of an epic, or add/remove a sibling dependency | `rename`, `move-to-epic`, `remove-from-epic`, `dependency-add`, `dependency-remove` |
|
|
631
|
+
| Archive terminal work | Archive | `archive` |
|
|
632
|
+
| See work status | See current or ready work | `current-work`, `ready-work` |
|
|
633
|
+
| Check or refresh the workbase | Validate, diagnose, reconcile all state, or inspect/update managed integration files | `validate`, `doctor`, `sync-all`, `integration-status`, `integration-sync` |
|
|
631
634
|
|
|
632
635
|
After creating a task, phase, review, or implementation follow-up, choose **Work
|
|
633
636
|
on the new item now** or **Finish**. Only choosing Work prepares checkouts and
|
|
@@ -663,6 +666,8 @@ For agents, `--json` never prompts or executes. Its compact, runtime-validated
|
|
|
663
666
|
result includes workbase actions and repository aliases, current working items,
|
|
664
667
|
and matching targets with readiness, document revisions, available `actions`,
|
|
665
668
|
and `blockedActions` with reasons. `--action` filters discovery to one scenario.
|
|
669
|
+
Every action includes a concise `description`, Nerd Font `icon`, and semantic
|
|
670
|
+
hex `color`, in addition to its label and availability.
|
|
666
671
|
Targets and current working items share the same identity and metadata fields:
|
|
667
672
|
`id`, `kind`, `key`, `status`, `description`, `repo` (the declared main repository,
|
|
668
673
|
when present), `repositories`, `readiness`, and `revision`. Descriptions retain
|
|
@@ -770,9 +775,11 @@ structured `changes`, `warnings`, `unresolved`, and per-execution evidence. The
|
|
|
770
775
|
default mode applies safe reconciliation transitions; `--dry-run` is explicitly
|
|
771
776
|
observational.
|
|
772
777
|
|
|
773
|
-
Pass `<task-id>` to scope reconciliation to one task and its repositories.
|
|
774
|
-
|
|
775
|
-
|
|
778
|
+
Pass `<task-id>` to scope reconciliation to one task and its repositories. With
|
|
779
|
+
no target, invocation inside an epic, task, or phase scopes to that current item;
|
|
780
|
+
invocation at the workbase root retains whole-workbase scope. A multi-phase task
|
|
781
|
+
scope includes all of its phases; add `[phase-id]` to select one phase. Scoped
|
|
782
|
+
sync does not query, materialize, or reconcile unrelated work.
|
|
776
783
|
|
|
777
784
|
`agency sync` performs only these safe transitions:
|
|
778
785
|
|
|
@@ -1098,15 +1105,16 @@ agency archive task <task-id> [--dry-run] [--json]
|
|
|
1098
1105
|
agency archive tasks [--dry-run] [--json]
|
|
1099
1106
|
agency archive phase <task-id> <phase-id> [--dry-run] [--json]
|
|
1100
1107
|
agency archive <path> [--dry-run] [--json]
|
|
1108
|
+
agency archive [--dry-run] [--json]
|
|
1101
1109
|
agency restore epic <epic-id> [--dry-run] [--json]
|
|
1102
1110
|
agency restore task <task-id> [--dry-run] [--json]
|
|
1103
1111
|
agency restore phase <task-id> <phase-id> [--dry-run] [--json]
|
|
1104
1112
|
```
|
|
1105
1113
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1114
|
+
With no target, `agency archive` infers the active epic, task, or phase containing
|
|
1115
|
+
the current directory. An existing path within one of those items is inferred
|
|
1116
|
+
the same way. Collection roots are ambiguous, and paths outside active work item
|
|
1117
|
+
trees are rejected. Archived work keeps its hierarchy under
|
|
1110
1118
|
`archive/`. Epic archiving includes its
|
|
1111
1119
|
listed tasks. A task can be archived only when its effective status is terminal
|
|
1112
1120
|
(`done` or `dropped`). Multi-phase task status is derived from its phases, every
|
|
@@ -1140,10 +1148,11 @@ agency pr create <task-id> [phase-id] [--draft] [--title <title>] [--head <branc
|
|
|
1140
1148
|
agency pr [args...]
|
|
1141
1149
|
```
|
|
1142
1150
|
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1151
|
+
Inside an epic, task, or phase, `agency work` defaults to that current item.
|
|
1152
|
+
At the workbase root it presents the full hierarchy in the native OpenTUI
|
|
1153
|
+
selector or the configured external chooser. An explicit directory can target a
|
|
1154
|
+
different item. Outside a workbase, Agency first presents the registered
|
|
1155
|
+
workbases, then the selected workbase's hierarchy.
|
|
1147
1156
|
|
|
1148
1157
|
Agency automatically uses the first available agent in this order: `opencode2`,
|
|
1149
1158
|
`opencode`, then `claude`. `--opencode` and `--claude` remain aliases for
|
package/package.json
CHANGED
package/src/act-schema.ts
CHANGED
|
@@ -6,6 +6,9 @@ const Argv = Schema.Array(Schema.String)
|
|
|
6
6
|
const Action = Schema.Struct({
|
|
7
7
|
id: Schema.String,
|
|
8
8
|
label: Schema.optional(Schema.String),
|
|
9
|
+
description: Schema.String,
|
|
10
|
+
icon: Schema.String,
|
|
11
|
+
color: Schema.String,
|
|
9
12
|
available: Schema.Boolean,
|
|
10
13
|
blockedReason: Schema.optional(Schema.NullOr(Schema.String)),
|
|
11
14
|
inputs: Schema.optional(
|
package/src/cli-parser.ts
CHANGED
|
@@ -499,7 +499,14 @@ const commands = {
|
|
|
499
499
|
usage: "agency task status <id> <status> [options] [--json]",
|
|
500
500
|
minArgs: 2,
|
|
501
501
|
maxArgs: 2,
|
|
502
|
-
options: [
|
|
502
|
+
options: [
|
|
503
|
+
"json",
|
|
504
|
+
"task",
|
|
505
|
+
"if-revision",
|
|
506
|
+
"no-pull-request",
|
|
507
|
+
"summary",
|
|
508
|
+
"evidence-url",
|
|
509
|
+
],
|
|
503
510
|
},
|
|
504
511
|
update: {
|
|
505
512
|
usage: "agency task update <id> [options] [--json]",
|
|
@@ -630,6 +637,7 @@ const commands = {
|
|
|
630
637
|
"json",
|
|
631
638
|
"task",
|
|
632
639
|
"phase",
|
|
640
|
+
"if-revision",
|
|
633
641
|
"no-pull-request",
|
|
634
642
|
"summary",
|
|
635
643
|
"evidence-url",
|
|
@@ -689,7 +697,7 @@ const commands = {
|
|
|
689
697
|
},
|
|
690
698
|
},
|
|
691
699
|
archive: {
|
|
692
|
-
usage: "agency archive
|
|
700
|
+
usage: "agency archive [path|list|show|epic|task|tasks|phase]",
|
|
693
701
|
options: {
|
|
694
702
|
...outputOptions,
|
|
695
703
|
...entitySelectorOptions,
|
|
@@ -699,8 +707,8 @@ const commands = {
|
|
|
699
707
|
repository: { type: "string", multiple: true },
|
|
700
708
|
},
|
|
701
709
|
command: {
|
|
702
|
-
usage: "agency archive
|
|
703
|
-
minArgs:
|
|
710
|
+
usage: "agency archive [path] [--dry-run] [--json]",
|
|
711
|
+
minArgs: 0,
|
|
704
712
|
maxArgs: 1,
|
|
705
713
|
options: ["dry-run", "json"],
|
|
706
714
|
},
|