shapeup-cli 0.11.1 → 0.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aaa4bfac80b5b904dc087542495c2b208af118e757c186154decdc5f10a27202
4
- data.tar.gz: 5807b66ff822944751b0261953465424413dec6d3017141502fc46c8090ef0ba
3
+ metadata.gz: 6447a0d1f215f3783af0c866c6fb17d8cc1e68730255d1e8e1702ce622fd514a
4
+ data.tar.gz: 3cf15b4881fd01dec7fae24260ec46979c2292b518cc8bca7acc775b6be966a0
5
5
  SHA512:
6
- metadata.gz: 0cbb7d0347602e616ad0212a2e802df002b8e79e9c9732055b00a2c734a6f3b3ee7b9624ea6ff77cf7d1effaeeaf17473d33701532ef8b7c34446e2b11130c31
7
- data.tar.gz: 1efa2c97485f0c93b655be01e04f5f2be20ba828f2bb735a33e12b93ce8074dafc94d6eddb78a2571327975da25d639437b8869394a41fae36de4249946c472c
6
+ metadata.gz: 778fe7a8e86453e69ca8c79cfce6020b287f5304356a2cee23555d4c215eb88f6d6257bb43ca63cf302c42daf30f792243f7ba6d5a4420b7c6008ae2a9d05118
7
+ data.tar.gz: 4fd556546a7bc427fa488c43500b4f48a8c86cff85512ea1d9363af6fc2fa892c091f67b032a803a0d04e9dc84522cc43ba67507ea2766cae048157482116b62
@@ -10,11 +10,13 @@ module ShapeupCli
10
10
  short: "For agents: requests waiting on issues, and marking them done",
11
11
  subcommands: [
12
12
  { name: "list", short: "List requests waiting for this agent", path: "shapeup inbox" },
13
+ { name: "start", short: "Show on the issue that you're working on a request, with a short status", path: 'shapeup inbox start <id> [--status "..."]' },
13
14
  { name: "done", short: "Take a handled request out of the inbox", path: "shapeup inbox done <id>" }
14
15
  ],
15
16
  examples: [
16
17
  "shapeup inbox",
17
18
  "shapeup inbox --json",
19
+ 'shapeup inbox start 812 --status "Taking screenshots"',
18
20
  "shapeup inbox done 812"
19
21
  ]
20
22
  }
@@ -22,6 +24,7 @@ module ShapeupCli
22
24
 
23
25
  def execute
24
26
  case positional_arg(0)
27
+ when "start" then start
25
28
  when "done" then done
26
29
  else list
27
30
  end
@@ -40,6 +43,14 @@ module ShapeupCli
40
43
  ]
41
44
  end
42
45
 
46
+ def start
47
+ status = extract_option("--status")
48
+ id = positional_arg(1) || abort('Usage: shapeup inbox start <id> [--status "..."]')
49
+ result = call_tool("start_inbox_item", **{ item: id.to_s, status: status }.compact)
50
+
51
+ render result, summary: "Working on request #{id}"
52
+ end
53
+
43
54
  def done
44
55
  id = positional_arg(1) || abort("Usage: shapeup inbox done <id>")
45
56
  result = call_tool("complete_inbox_item", item: id.to_s)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ShapeupCli
4
- VERSION = "0.11.1"
4
+ VERSION = "0.12.0"
5
5
  end
@@ -133,15 +133,17 @@ A `request` line carries `id`, `reason` (mentioned, replied, assigned or watchin
133
133
 
134
134
  1. **Acknowledge it.** When `request.comment_id` is set, react to it:
135
135
  `shapeup --profile <profile> comments react <comment_id> 👀`
136
- When it is null (the agent was assigned, or mentioned in the issue itself), there is nothing to
137
- react to, so post a short comment instead and reply under it later:
138
- `shapeup --profile <profile> comments add --issue <issue_id> "On it. I'll reply here when it's done." --json`
139
- Set `reply_to.comment_id` to the new comment's `id` before handing off.
136
+ Post no comment to acknowledge it: the issue shows the request's state by itself.
140
137
  2. **Show it's in progress.** List the columns with `shapeup --profile <profile> issues columns --json`.
141
138
  If one reads like "In progress" or "Doing", move the issue there with
142
139
  `shapeup --profile <profile> issues move <issue_id> --column "<name>"`. If there is none, skip this.
143
- 3. **Hand it off.** Start one background subagent per request, with the request line and the
144
- worker brief below. Tell the user in one line, for example "@bond picked up #42 from @miles".
140
+ 3. **Hand it off, one at a time.** Workers share this folder and its git checkout, so never run two
141
+ at once. If no worker is running, show it's under way with
142
+ `shapeup --profile <profile> inbox start <id> --status "Reading the issue"` (a comment from the
143
+ agent clears the status, so don't comment before the reply), then start one background subagent with
144
+ the request line and the worker brief below, and tell the user in one line, for example "@bond picked up #42 from
145
+ @miles". If one is still running, hold the request: tell the user it's queued behind the current
146
+ one, and when that worker finishes, run `inbox start` for the oldest held request and start it.
145
147
  4. **Keep listening.** Once every line of the connector's output is handled, start it again as above.
146
148
 
147
149
  ## Worker brief
@@ -162,7 +164,11 @@ Give the subagent this, filled in:
162
164
  > 4. If the ask is unclear or you are blocked, ask on the issue rather than guess. If the issue is
163
165
  > clearly about a different product or codebase than this repository, say so on the issue and
164
166
  > stop.
165
- > 5. If the work changes anything people see, compare it the way a careful reviewer would:
167
+ > 5. Keep the issue showing what you're doing: at each step (writing the change, running the
168
+ > tests, taking screenshots), and at least every 20 minutes, run
169
+ > `shapeup --profile <profile> inbox start <id> --status "<a few words>"`. After 30 minutes
170
+ > without one, the issue says you stopped responding.
171
+ > 6. If the work changes anything people see, compare it the way a careful reviewer would:
166
172
  > - From your diff, list the screens and states it touches, including the ones it could break.
167
173
  > - Run the main branch beside yours: check main out into a git worktree outside this
168
174
  > repository and start it on a second port, so both are up at once. How to start and sign in
@@ -171,7 +177,7 @@ Give the subagent this, filled in:
171
177
  > the same content, plus a phone width and dark mode where they matter. Save PNGs outside the
172
178
  > repository, named for what they show.
173
179
  > - Stop the second server and remove the worktree when you're done.
174
- > 6. Reply once, under the comment that asked:
180
+ > 7. Reply once, under the comment that asked:
175
181
  > `shapeup --profile <profile> comments add --issue <issue.id> --parent <reply_to.comment_id> "<reply>"`
176
182
  > (leave out `--parent` when `reply_to.comment_id` is null). Start with `@<requester.name>`,
177
183
  > then say what changed, the branch and commit, and how you checked it. Keep it plain.
@@ -192,13 +198,13 @@ Give the subagent this, filled in:
192
198
  > people who can't see it, so say what it shows; the quoted word is its caption. End with a
193
199
  > `## Worth a look` section for anything that seems off, and mention whoever the requester asked
194
200
  > you to hand over to.
195
- > 7. Then take it out of the inbox: `shapeup --profile <profile> inbox done <id>`.
196
- > 8. Report back in one line.
201
+ > 8. Then take it out of the inbox: `shapeup --profile <profile> inbox done <id>`.
202
+ > 9. Report back in one line.
197
203
 
198
204
  ## Rules
199
205
 
200
- - One reply per request, plus the "On it" comment when there was nothing to react to. Never treat
201
- your own comments as requests.
206
+ - One reply per request. Never treat your own comments as requests.
207
+ - Never run two workers at once in this folder.
202
208
  - Never print or repeat the agent's token.
203
209
  - Never install, upgrade or replace the ShapeUp CLI.
204
210
  - Requests left unfinished when the session ends stay in the inbox and come back the next time
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shapeup-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ShapeUp