@brunyee-studio/onus-cli 2.30.0 → 2.31.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brunyee-studio/onus-cli",
3
- "version": "2.30.0",
3
+ "version": "2.31.0",
4
4
  "description": "Official CLI and TypeScript SDK for Onus issue tracking platform",
5
5
  "keywords": [
6
6
  "agent",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: onus-cli
3
- description: Work with Onus issue tracking through the onus CLI — authenticate, fetch teams/projects/issues, create and update issues, manage comments, labels, relations, and attachments. Use when the user asks to find, list, create, update, comment on, or organize Onus issues, projects, or teams.
3
+ description: Work with Onus issue tracking through the onus CLI — authenticate, fetch teams/projects/issues, create and update issues, manage comments, labels, relations, and attachments, and consult the knowledge base (kb). Use when the user asks to find, list, create, update, comment on, or organize Onus issues, projects, or teams, or to read KB docs.
4
4
  ---
5
5
 
6
6
  # Onus CLI
@@ -16,11 +16,17 @@ onus auth status # check current auth state
16
16
  ONUS_TOKEN=<token> onus me --json # or auth via env var (ONUS_TOKEN / ONUS_API_KEY)
17
17
  onus --token <token> me --json # or per-invocation override
18
18
  onus --api-url <url> … # custom API base URL
19
+ onus auth logout # clear stored credentials
19
20
  ```
20
21
 
22
+ Explicit token overrides (`--token` or `ONUS_TOKEN` / `ONUS_API_KEY`) take
23
+ precedence over stored credentials and **fail hard with exit 3** when the API
24
+ rejects them — they are never silently rescued by the stored session.
25
+ Transparent refresh on 401 applies only to the stored config-file session.
26
+
21
27
  ## Golden rules
22
28
 
23
- - **Starting work on an issue: transition it to `in_progress` immediately.** As soon as you pick up an issue to implement it — before writing any code — run `onus issue update <ref> --status in_progress --json`. No update needed if `onus issue get <ref> --json` already shows the status is `in_progress` or `done`.
29
+ - **Starting work on an issue: transition it to `in_progress` and make sure it has an owner — you.** As soon as you pick up an issue to implement it — before writing any code — resolve your user id (`onus me --json` → `.id`), then run `onus issue update <ref> --status in_progress --assignee <userId> --json`. Self-assign only when the issue is unassigned or already assigned to you; if someone else is the assignee, leave them in place and say so. No update needed if `onus issue get <ref> --json` already shows the status is `in_progress` or `done` — but if it is `in_progress` while unassigned, still assign it to yourself.
24
30
  - Add `--json` to every command you intend to parse.
25
31
  - Multi-line text (issue descriptions, comment bodies, agent context) goes through the field's file flag — `--description-file`, `--body-file`, `--agent-context-file` — never inline in the shell command. See "Long text via file input" below.
26
32
  - Whenever referencing an Onus issue in any response, include its link: `https://onus.brunyeestudio.com/team/{TEAM}/issues/{NUM}` where `{TEAM}` is the team key (the tag before the dash in the ref, e.g. `ONUS`) and `{NUM}` is the issue number (the number after the dash). Example: for ref `ONUS-1`, `TEAM = ONUS`, `NUM = 1` → https://onus.brunyeestudio.com/team/ONUS/issues/1
@@ -44,8 +50,10 @@ onus label list --json # workspace labels (for --label ids)
44
50
  ```bash
45
51
  onus issue list --json
46
52
  onus issue list --team ONUS --status in_progress --json
53
+ onus issue list --priority high --team ONUS --json # filter by priority
47
54
  onus issue list --assignee <userId> --project <projectId> --json
48
55
  onus issue list --q "login bug" --limit 20 --json # free-text search
56
+ onus issue list --q ONUS-42 --json # display-key search
49
57
  onus issue list --cursor <cursor> --json # next page
50
58
  onus issue get ENG-42 --json # single issue by ref
51
59
  ```
@@ -82,6 +90,38 @@ onus issue update ENG-42 --remove-label <labelId> --assignee <userId> --json
82
90
  onus issue delete ENG-42 --yes # skip confirmation
83
91
  ```
84
92
 
93
+ ## Templates
94
+
95
+ Per-team reusable issue templates; `--default` marks a team's default:
96
+
97
+ ```bash
98
+ onus template list --team ONUS --json
99
+ onus template create --team ONUS --name "Bug report" --priority high --default --json
100
+ onus template get <id> --json
101
+ onus template update <id> --title "New title" --add-label <labelId> --json # alias: template edit
102
+ onus template delete <id> --yes
103
+ ```
104
+
105
+ `onus issue create --template <nameOrId>` fills omitted fields from the template.
106
+
107
+ ## Bulk operations
108
+
109
+ `issue bulk-update` / `issue bulk-comment` apply to many issues with per-item partial success:
110
+
111
+ ```bash
112
+ onus issue bulk-update ENG-42 ENG-43 --status done --json
113
+ onus issue bulk-comment ENG-42 ENG-43 --body "Deployed in v2.31" --idempotency-key run-17 --json
114
+ onus issue bulk-update --file ./items.json --json # per-item payloads; see --help for the format
115
+ ```
116
+
117
+ ## Create projects
118
+
119
+ ```bash
120
+ onus project create --name "Mobile app" --team ONUS --lead <userId> \
121
+ --description-file ./brief.md --agent-context-file AGENTS.md --json
122
+ onus project attachment list <projectId> --json
123
+ ```
124
+
85
125
  ## Long text via file input
86
126
 
87
127
  Multi-line values (issue and project descriptions, comment bodies, project
@@ -125,14 +165,28 @@ onus analytics events --team ONUS --limit 25 --json
125
165
  onus analytics query --team ONUS --query '{"type":"trends","series":[{"event":"signup"}]}' --json
126
166
  ```
127
167
 
168
+ ## Watch (live events)
169
+
170
+ ```bash
171
+ onus watch --team ONUS --type issue.status_changed,error_group.regressed --json
172
+ ```
173
+
174
+ Streams live issue/comment/error events over SSE with automatic resume.
175
+
128
176
  ## Relations, attachments, subscriptions
129
177
 
130
178
  ```bash
131
179
  onus issue relation add ENG-42 --with ENG-43 --type blocks --json # types: blocks|duplicate|related|similar
132
180
  onus issue attachment upload ENG-42 --file ./notes.md --json
181
+ onus issue relation remove ENG-42 --relation <relationId> --json
182
+ onus issue attachment upload ENG-42 --file ./notes.md --json
133
183
  onus issue attachment list ENG-42 --json
184
+ onus issue attachment download ENG-42 --attachment <attachmentId> --output ./notes.md --json
185
+ onus issue attachment delete ENG-42 --attachment <attachmentId> --json
134
186
  onus issue subscribe ENG-42 --json
187
+ onus issue unsubscribe ENG-42 --json
135
188
  onus issue link-pr ENG-42 --repo owner/repo --pr 42 --json # link a GitHub pull request
189
+ onus issue unlink-pr ENG-42 --pr-link <linkId> --json # remove a linked pull request
136
190
  ```
137
191
 
138
192
  ## Errors and ingest keys (DSN)
@@ -140,8 +194,33 @@ onus issue link-pr ENG-42 --repo owner/repo --pr 42 --json # link a GitHub pu
140
194
  ```bash
141
195
  onus dsn list --team ONUS --json # masked ingest keys for a team
142
196
  onus dsn create --team ONUS --label ci # prints the full secret exactly once
197
+ onus dsn rotate <keyId> --grace-seconds 86400 --json # old secret stays valid during the grace window
198
+ onus dsn disable <keyId> --json # reversible
199
+ onus dsn enable <keyId> --json # re-enable a disabled key
200
+ onus dsn revoke <keyId> --json # terminal
201
+ ```
202
+
203
+ ## Knowledge base (agent workflow)
204
+
205
+ Consult the KB before implementing an issue — docs (`index | area | process |
206
+ incident` kinds) describe code areas, processes, and incidents. Read-only: no
207
+ CLI command or API mutates docs.
208
+
209
+ ```bash
210
+ onus kb locate --issue <issueUuid> --json # locate first, on issue start (or --query "text"; exactly one)
211
+ onus kb get <slug> --json # then read each returned doc (also accepts UUID; ambiguous slug → exit 2)
212
+ onus kb search "<query>" --json # scored search; --mode string|semantic|hybrid|related (--doc <slug> required with related)
213
+ onus kb related <slug> --json # expand related docs
214
+ onus kb list --team ONUS --kind area --tag auth --limit 20 --cursor <cursor> --json
143
215
  ```
144
216
 
217
+ - Results carry staleness `{stale, confidence, reason}` — a `stale` doc is
218
+ planning input: verify it against current code and surface drift.
219
+ - **Surface drift, never write it.** Note stale/incorrect docs in the PR
220
+ description ("KB drift: …"); regeneration is infrastructure-led on merge —
221
+ the pipeline updates affected docs automatically after the PR merges
222
+ (human-edited docs get proposed revisions for human approval).
223
+
145
224
  ## Pull requests and issues
146
225
 
147
226
  Linking a PR to an issue means **the issue is auto-closed when the PR merges** —
@@ -176,4 +255,19 @@ Required PR flow, in order:
176
255
  - Link at most once per PR per issue; don't spam links across partially-related
177
256
  issues.
178
257
 
258
+ ## Skill management
259
+
260
+ The CLI bundles this skill and can install/update it for detected AI agents:
261
+
262
+ ```bash
263
+ onus skill install --agent claude-code codex # or --global / --copy; see --help
264
+ onus skill update # refresh installed copies to the bundled version
265
+ onus skill remove --global # alias: skill rm
266
+ ```
267
+
268
+ ## Command aliases
269
+
270
+ `issue get` = `issue view`, `issue update` = `issue edit`, `template update` = `template edit`,
271
+ `skill remove` = `skill rm`.
272
+
179
273
  Run any command with `--help` for its exact flags — e.g. `onus issue relation add --help`.