jjhub 0.1.13 → 0.1.14
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/dist/cli/jjhub.mjs +2319 -840
- package/package.json +1 -1
- package/skills/jjhub-cli/SKILL.md +52 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jjhub",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "jjhub — GitHub CLI with Jujutsu-native superpowers: stable change IDs, stacks, platform-wide undo, and conflicts that wait, layered over plain GitHub repos by a JJHub server.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jjhub": "./dist/cli/jjhub.mjs"
|
|
@@ -68,6 +68,10 @@ change land <changeId> [--force] waits for real CI triggered by its own re
|
|
|
68
68
|
re-syncs a behind branch, then merges; --force bypasses
|
|
69
69
|
change split <changeId> <newTitle>
|
|
70
70
|
change checks <changeId> list GitHub check runs for a change
|
|
71
|
+
change actions <changeId> show bounded GitHub Actions workflow and job evidence
|
|
72
|
+
change deployments <changeId> show bounded GitHub deployment evidence
|
|
73
|
+
change security <changeId> show bounded GitHub code-scanning evidence
|
|
74
|
+
change issues <changeId> show linked GitHub issue context for a change
|
|
71
75
|
|
|
72
76
|
stack create <title> [--id x] [--changes CHG-1,CHG-2]
|
|
73
77
|
stack list
|
|
@@ -75,6 +79,7 @@ stack land <stackId> [--force] same check-run gate as change land
|
|
|
75
79
|
stack delete <stackId> disband — members become loose changes (undoable)
|
|
76
80
|
stack reorder <stackId> <changeId,changeId,...>
|
|
77
81
|
stack checks <stackId> every member's GitHub check runs, one batched round trip
|
|
82
|
+
stack issues <stackId> linked issue and external-blocker summary for a stack
|
|
78
83
|
|
|
79
84
|
bookmark list
|
|
80
85
|
bookmark delete <name> [--force] --force required for the default (trunk) bookmark
|
|
@@ -100,7 +105,7 @@ auth sessions list your live sessions; auth revoke <id>
|
|
|
100
105
|
auth logout forget the saved connection/token
|
|
101
106
|
auth status who the saved credential authenticates as
|
|
102
107
|
|
|
103
|
-
mcp serve MCP server over stdio (
|
|
108
|
+
mcp serve MCP server over stdio (77 tools) for agent clients
|
|
104
109
|
mcp serve --http <port> the same tools over Streamable HTTP (POST /)
|
|
105
110
|
acp serve Agent Client Protocol agent over stdio (Zed's agent
|
|
106
111
|
panel, ...) — every operation as a slash command
|
|
@@ -112,6 +117,20 @@ daemon <localRepoPath> [--once] [--interval 5] [--engine auto|subprocess|isomorp
|
|
|
112
117
|
daemon start [alias|localRepoPath] [--interval 5] [--engine ...] [--two-way]
|
|
113
118
|
spawn the same sync as a detached background process
|
|
114
119
|
daemon stop [alias] | daemon status [alias]
|
|
120
|
+
|
|
121
|
+
topology <localRepoPath> [--engine subprocess]
|
|
122
|
+
inspect explicit local remote/bookmark topology; never selects or rewrites a push route
|
|
123
|
+
|
|
124
|
+
revset <localRepoPath> <expression> [--engine subprocess]
|
|
125
|
+
evaluate the installed jj binary's revset in exactly the named workspace;
|
|
126
|
+
this is local, read-only discovery rather than a server-side approximation
|
|
127
|
+
|
|
128
|
+
content preview <localRepoPath> <split|absorb|squash|duplicate|restore>
|
|
129
|
+
--source <jj-change-id> [--destination <jj-change-id>] [--path <relative-path>]...
|
|
130
|
+
content apply <localRepoPath> <split|absorb|squash|duplicate|restore>
|
|
131
|
+
same selection plus --expected-operation <jj-operation-id> returned by preview
|
|
132
|
+
local-only jj content curation; checked against jj's immutable policy and
|
|
133
|
+
never implemented as a browser patch transform
|
|
115
134
|
```
|
|
116
135
|
|
|
117
136
|
Anything else (`pr`, `issue`, ...) is passed through to `gh` — e.g. `jjhub pr view 7`. `jjhub auth`
|
|
@@ -126,12 +145,12 @@ vars needed. `jjhub auth status` confirms what's currently in effect.
|
|
|
126
145
|
|
|
127
146
|
### Identity & permissions (issue #43: GitHub-federated)
|
|
128
147
|
|
|
129
|
-
A JJHub user
|
|
148
|
+
A JJHub user is a GitHub account. `jjhub auth login` runs an OAuth device flow against the
|
|
130
149
|
JJHub server's own authorization server: open the printed URL, sign in with GitHub, confirm
|
|
131
150
|
the code, and the CLI saves a JJHub-issued OAuth token. Every mutation is attributed to that
|
|
132
151
|
identity (visible in `jjhub op log`).
|
|
133
152
|
|
|
134
|
-
What you can do on a repo is asked of GitHub
|
|
153
|
+
What you can do on a repo is asked of GitHub live at request time (cached ~60s):
|
|
135
154
|
GitHub `admin` → owner, `maintain`/`write` → writer, `triage`/`read` → reader. There is no
|
|
136
155
|
internal membership table and nothing to manage in JJHub — manage collaborators on GitHub.
|
|
137
156
|
|
|
@@ -195,11 +214,40 @@ npm run jjhub -- daemon . --once # one-shot sync; omit --once to loop every
|
|
|
195
214
|
npm run jjhub -- op log # verify the sync landed as a new operation
|
|
196
215
|
```
|
|
197
216
|
|
|
217
|
+
### Discover local jj changes with a revset
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
npm run jjhub -- revset . 'mutable() & descendants(@-)'
|
|
221
|
+
npm run jjhub -- revset . 'bookmarks() | remote_bookmarks()' --json
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
The expression is passed to the installed `jj` binary as one argument, never
|
|
225
|
+
through a shell. The workspace path is explicit because `@`, aliases, and
|
|
226
|
+
immutable boundaries are facts about that specific local workspace. This first
|
|
227
|
+
read-only form does not send local commits or filesystem paths to JJHub.
|
|
228
|
+
|
|
229
|
+
### Curate local change content
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
npm run jjhub -- content preview . split \
|
|
233
|
+
--source <jj-change-id> --title "Extract validation" --path src/checkout.ts
|
|
234
|
+
npm run jjhub -- content apply . split \
|
|
235
|
+
--source <jj-change-id> --title "Extract validation" --path src/checkout.ts \
|
|
236
|
+
--expected-operation <operation-id-from-preview>
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
The non-interactive local surface delegates `split`, `absorb`, `squash`,
|
|
240
|
+
`duplicate`, and `restore` to the installed jj binary with structured argument
|
|
241
|
+
arrays. A preview's jj operation id is mandatory for apply, and immutable
|
|
242
|
+
targets are refused without `--ignore-immutable`. `--path` selects complete
|
|
243
|
+
relative paths; interactive hunk selection remains jj's configured diff editor.
|
|
244
|
+
Run `jjhub daemon . --once` afterwards to reconcile the local graph.
|
|
245
|
+
|
|
198
246
|
### Resolve a conflict
|
|
199
247
|
|
|
200
248
|
```bash
|
|
201
249
|
npm run jjhub -- conflict list # note the conflict id
|
|
202
|
-
npm run jjhub -- conflict resolve
|
|
250
|
+
npm run jjhub -- conflict resolve <conflict-id> left # or: right | edited | preserve_unresolved
|
|
203
251
|
npm run jjhub -- conflict list # confirm it now reads Resolved
|
|
204
252
|
```
|
|
205
253
|
|