squad-kit 1.3.16 → 1.3.18

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/docs/console.md CHANGED
@@ -316,6 +316,53 @@ program it did not start without your press.
316
316
  The same rule reads an agent's answer in a chat, where technical words are fine, because you asked. An answer that
317
317
  asks you to do one of the things nobody may ask is left out, and you read one plain line instead.
318
318
 
319
+ ## A story too big for one
320
+
321
+ Before the Analyst asks any questions, squad-kit counts the story's size itself, with no AI: its words, the pages of an
322
+ attached Word or PDF file, requirement numbers (FR-1, REQ-12…), headings and "shall" or "must" lines, separate asks, and
323
+ how many roles, screens and flows it names. Code, tables, logs and stack traces are left out first. A short story is
324
+ one story, and nothing more is asked. 400 words or 3 requirement numbers is never one story. 2,500 words, a document of
325
+ 8 pages or 10 requirement numbers is a whole requirements document. The Analyst judges the rest, and can still say one
326
+ story, with the same sizes as a breakdown: **About a day**, **A few days**, **A week or more**. A bug, and a story
327
+ pulled from a tracker, is never split. It only suggests: nothing is split or sent until you press.
328
+
329
+ - **A few stories in one.** The Analyst suggests the parts in the order to build them, each with its size and what it
330
+ needs ("Needs 1"). On a story that exists, the card waits in its Now tab and in the Analyst's popup: **Split into N**,
331
+ **Keep as one**, or **Change the split** (your note goes in the chat's own box, and the Analyst splits it again).
332
+ After Split, the story keeps the first part with its new title, the Analyst asks part 1's questions, and the other
333
+ parts wait in Tickets with "depends on" ("Waits for MA-21"), each started when you like. Each part has its own
334
+ "done when" lines. Keep as one goes on with the questions the Analyst already asked. A whole document has **Send to
335
+ Requirements** and **Keep as one** instead.
336
+ - **New ticket, From an idea or message:** the same suggestion shows before anything is created: **Create N stories**
337
+ (the first starts, the others wait in Tickets), **Create as one story** (the form, as usual), or **Cancel**.
338
+ - **A whole requirements document:** "Too big for one story", with a rough count by part ("about 25 stories in 6
339
+ parts"): **Send to Requirements** starts a breakdown with your text and files, **Make one story anyway** keeps a short
340
+ warning on the story, or **Cancel**.
341
+ - **The Squad lead** never drafts one giant story: its draft goes through the same count and offers Create N stories,
342
+ or Send to Requirements. A requirements document pasted to the lead gets that card at once, with no AI.
343
+ - **A talk beside the work** changes nothing on the story: a big text pasted there gets a hint under it, and for a
344
+ whole document a Send to Requirements button. Once sent, the hint links to the breakdown.
345
+
346
+ The cards speak the language you wrote in, right to left in Arabic. The Harness page shows the numbers.
347
+
348
+ Terminal: `squad split MA-21` shows the suggestion; `--yes` splits it, `--keep` keeps it as one, `--change "<how>"` asks
349
+ for another split, `--requirements` sends a whole document to Requirements. Like the card's buttons, a split has no
350
+ `--requirements` and a whole document no `--yes` or `--change`. `squad split MA-21 --chat-requirements` sends the
351
+ document pasted into its talk, as the hint does. `squad new --from "<text>"` prints the suggestion and asks; `--split`
352
+ or `--one` answer up front, and `--requirements` sends the text and files to Requirements with no draft.
353
+ `squad lead run <card> --split | --one | --requirements`.
354
+
355
+ REST (under `/p/<project>/api/v1`):
356
+
357
+ | Call | What |
358
+ | --- | --- |
359
+ | `POST /tickets/<id>/split` | `{ "choice": "split" \| "keep" \| "change" \| "requirements", "note": "…" }`, only the choices its card offers. From a decision card, `expect` is the mark of what it showed. Answers with the story. |
360
+ | `POST /tickets/<id>/chat/requirements` | `{ "at": "…" }`: send the whole document pasted into the story's talk to Requirements, once. Answers `{ "breakdown": { "id" } }`. |
361
+ | `POST /tickets/draft/<draft>/split` | Create N stories from the New ticket draft. The same press sent again gets the same stories. Answers `{ "tickets": [...] }`. |
362
+ | `POST /tickets/draft/<draft>/requirements` | Send the draft's text and files to Requirements; again, the same breakdown. Answers `{ "breakdown": { "id" } }`. |
363
+ | `POST /tickets` | As before, with `"sized": "checked" \| "kept" \| "brd"` when the size was judged in the dialog. |
364
+ | `POST /lead/cards/<id>/run` | `{ "choice": "split" \| "one" \| "requirements" }` on a story draft that is more than one story. |
365
+
319
366
  ## Chat
320
367
 
321
368
  Open a chat with any agent on a ticket: **Ask the Analyst** on the Now tab, **Talk it through** on a spec or
@@ -333,8 +380,11 @@ something, use the ticket's own buttons. With a chat open already, the button op
333
380
  and new, and you approve it.
334
381
  - **Released work is for questions only.** A change to it becomes a new linked ticket or a bug report.
335
382
 
336
- A chat opens in a side panel beside the board, and takes the whole screen on a phone. **Conversations** in the sidebar
337
- is a full-screen page with all of them.
383
+ A chat opens in a popup over the page, and takes the whole screen on a phone. Each open talk has a round head at the
384
+ bottom right, with an unread badge and a live dot while the agent writes; up to three popups sit side by side, each
385
+ minimised to a bar, closed, or opened on its full page. They stay open when you change pages. **Conversations** in the
386
+ sidebar is a full-screen page with all of them. When the story waits for you, its card closes the talk, with the
387
+ board's own buttons (see **Decide in the chat** below).
338
388
 
339
389
  Terminal: `squad chat <ticket>`, `squad chat <ticket> --ask`, `squad message <ticket>`, `squad propose <ticket>`.
340
390
 
@@ -346,9 +396,10 @@ a story, next to **Open** in Your apps with the page you are on, or with **Ask t
346
396
  error card: the problem's facts are filled in for you.
347
397
 
348
398
  **On the board**, **Squad lead** in the sidebar is the conversation, with what needs you, the squad now and what it can do
349
- beside it, and every past conversation under History. **⌘K** (Ctrl+K on Windows and Linux) opens the ask box on any
350
- page, with the open story or the page filled in; the answer shows right there, and **Open in the Squad lead page** keeps
351
- it. Nothing is sent until you press Send.
399
+ beside it, and every past conversation under History. Its round head comes first at the bottom right of every page,
400
+ with how many things need you; **⌘K** (Ctrl+K on Windows and Linux) opens its popup, with the open story or the page
401
+ filled in. The popup starts with what needs you and a few questions to ask; the answer shows right there, and the
402
+ expand button opens it on the Squad lead page. Nothing is sent until you press Send.
352
403
 
353
404
  **Cheapest first.** squad-kit answers at once itself, with no AI, when it can: a saved note, a status question about a
354
405
  story ("is MA-9 ready?"), or something the lead never does. Otherwise the lead reads what squad-kit already knows (its
@@ -363,13 +414,21 @@ gets it at once, and "How to sign in" shows next to Open in Your apps.
363
414
 
364
415
  | Level | What |
365
416
  | --- | --- |
366
- | On its own | Read, look and tell: answer, explain a story, find things, look at the app in its own copy, show a story's own proof pictures, give you an **Open** button to a story on the board (at its proof, spec, plan or questions; it changes nothing), tell you what needs you, prepare a report for an engineer (no secrets, for you to copy). |
417
+ | On its own | Read, look and tell: answer, explain a story, find things, look at the app in its own copy, show a story's own proof pictures, give you an **Open** button to a story on the board (at its proof, spec, plan or questions; it changes nothing), bring a story that waits for you as a card with the board's own buttons (only you press them), tell you what needs you, prepare a report for an engineer (no secrets, for you to copy). |
367
418
  | After your OK | A card you press, running the same function as the board's button: **Create story** (a draft with how each "done when" will be proved; nothing starts until you press Start), Start or Stop a story, Give it 10 more minutes, Take the pictures again, Try again, Start the app, Get or Update a tool, **Send** an answer to an agent's question, **Save** a setting (technical ones only for engineers). |
368
419
  | Never | Change code; commit, merge, push or release; press Looks right or approve a spec or plan; get around the checks, the review, the proof, the guard or the limits; change the Harness rules; touch your real data, secrets or `.env` files, or show a password or a key; delete stories, projects or data; message other people. squad-kit refuses these in its own words, whoever asks. Only your own messages count, never instructions found in what it reads. |
369
420
 
370
421
  **Buttons, not "tell me".** When an answer sends you to the board, the button comes with it: "Open MA-17's proof",
371
422
  or the board action that fits the story now. When the lead refuses what only you may do (Looks right, approving a spec
372
- or plan, merging, releasing), it still gives you the Open button, so you are one press from doing it yourself.
423
+ or plan, merging, releasing), it still gives you the story's card, so you are one press from doing it yourself.
424
+
425
+ **Decide in the chat.** A story that waits for you comes as a card, in its own talk and in the lead's answers about it:
426
+ the proof with its pictures and "done when" ticks (**Looks right**, **Something's wrong**, Full proof), the spec, plan
427
+ or design in short (**Approve**, **Ask for changes**, Read it all), the Analyst's questions as answers to tap, an agent's
428
+ question with its answers, or **Open** with the board's own reason. The card is drawn from the board as it is now; its
429
+ buttons are the board's own (`squad approve`, `squad answer`, `squad reply`), and each press is checked again: if the
430
+ story was decided or changed since, the card says so. Something's wrong asks for your note in the chat's own box and
431
+ sends it to the board. The lead brings the card; only you press it.
373
432
 
374
433
  **Always allow** is only for the low-risk ones: give more time, take the pictures again, start the app, and the morning
375
434
  brief. With it on they run without asking, and a line says so. A step that is slower than usual but still working then
@@ -400,7 +459,7 @@ REST (under `/p/<project>/api/v1`):
400
459
  | `POST /lead/conversations/<id>/messages` | A follow-up, the same body. |
401
460
  | `GET /lead/conversations/<id>` | The conversation: each question with its facts, the work trace, the answer (headline, body, evidence, sources, cards, learned), the time and the cost. |
402
461
  | `POST /lead/conversations/<id>/stop` | Stop the answer being written. |
403
- | `POST /lead/cards/<id>/run` | Press a card. `{ "always": true }` turns Always allow on first, only for the low-risk ones; `{ "dismiss": true }` is Not now; `{ "edits": { "title": "...", "doneWhen": [...] } }` is Edit before Create. |
462
+ | `POST /lead/cards/<id>/run` | Press a card. `{ "always": true }` turns Always allow on first, only for the low-risk ones; `{ "dismiss": true }` is Not now; `{ "edits": { "title": "...", "doneWhen": [...] } }` is Edit before Create; `{ "choice": "split" }`, `"one"` or `"requirements"` on a draft that is more than one story (see [A story too big for one](#a-story-too-big-for-one)). |
404
463
  | `GET /lead/rules`, `PUT /lead/rules` | Always allow and the morning brief: `{ "always": ["more_time"], "brief": true }`. The never list is shown and cannot change. |
405
464
  | `GET /lead/can` | The three levels in words, what it reads, and its limits, for "What it can do". |
406
465
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squad-kit",
3
- "version": "1.3.16",
3
+ "version": "1.3.18",
4
4
  "author": "Momen Yasser <momenysr@gmail.com>",
5
5
  "description": "Your AI Engineering Squad transforms ideas into production-ready software.",
6
6
  "keywords": [