squad-kit 1.2.1 → 1.3.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.
Files changed (25) hide show
  1. package/README.md +9 -5
  2. package/SECURITY.md +51 -14
  3. package/dist/cli.js +1094 -46127
  4. package/dist/console-ui/assets/index-DqDPMvqu.css +1 -0
  5. package/dist/console-ui/assets/index-iFT5f2Y0.js +669 -0
  6. package/dist/console-ui/index.html +2 -2
  7. package/package.json +1 -2
  8. package/CHANGELOG.md +0 -1157
  9. package/dist/console-ui/assets/index-CzFTrbcF.js +0 -637
  10. package/dist/console-ui/assets/index-kEkCko25.css +0 -1
  11. package/dist/console-ui/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  12. package/dist/console-ui/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  13. package/dist/console-ui/assets/jetbrains-mono-cyrillic-600-normal-EVf6-Yzo.woff2 +0 -0
  14. package/dist/console-ui/assets/jetbrains-mono-cyrillic-ext-400-normal-C_uLvvQ5.woff2 +0 -0
  15. package/dist/console-ui/assets/jetbrains-mono-cyrillic-ext-500-normal-C9ShMxGR.woff2 +0 -0
  16. package/dist/console-ui/assets/jetbrains-mono-cyrillic-ext-600-normal-Dj6eZy5f.woff2 +0 -0
  17. package/dist/console-ui/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  18. package/dist/console-ui/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  19. package/dist/console-ui/assets/jetbrains-mono-greek-600-normal-H7WoG9Et.woff2 +0 -0
  20. package/dist/console-ui/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  21. package/dist/console-ui/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  22. package/dist/console-ui/assets/jetbrains-mono-latin-ext-600-normal-BfB_LPfz.woff2 +0 -0
  23. package/dist/console-ui/assets/jetbrains-mono-vietnamese-400-normal-ByoDsISC.woff2 +0 -0
  24. package/dist/console-ui/assets/jetbrains-mono-vietnamese-500-normal-BvH7FW2L.woff2 +0 -0
  25. package/dist/console-ui/assets/jetbrains-mono-vietnamese-600-normal-Dtizs43-.woff2 +0 -0
package/README.md CHANGED
@@ -79,9 +79,11 @@ all your projects:
79
79
  Keep the terminal open while you work. Press Ctrl-C there to stop squad-kit. The squad picks up where it was
80
80
  the next time you run `squad`.
81
81
 
82
- ## Add a project
82
+ ## Start or add a project
83
83
 
84
- On Home, press **Add project** and pick a folder in the folder browser. Or open a terminal in the folder and
84
+ Have only a BRD or an idea? On Home, press **New project**: squad-kit makes the folder and the squad starts from what you gave.
85
+
86
+ Already have a project? Press **Add project** and pick a folder in the folder browser. Or open a terminal in the folder and
85
87
  run:
86
88
 
87
89
  ```bash
@@ -138,7 +140,9 @@ The step-by-step guide is in [Getting started](docs/getting-started.md).
138
140
  - **The Builder works in a sandbox** where the computer allows it: its copy only, no keys or `.env` files, and only
139
141
  the package registries and websites you allow.
140
142
  - **The project's own commands run in a guard** on Mac and Linux: the tests, the setup and the app work normally, but
141
- can't read your keys, your sign-ins or squad-kit's own files.
143
+ can't read the usual places for keys and sign-ins, or squad-kit's own files. The guard stops accidents and most bad
144
+ behaviour. It is not a wall against code built on purpose to break out, so use squad-kit on projects you trust and read
145
+ what the Builder changes.
142
146
  - **Agents get fixed tools, no free commands**, for screenshots, the app and the checks. squad-kit checks each
143
147
  request and does the job itself.
144
148
 
@@ -210,7 +214,7 @@ writes one line in the ticket's activity.
210
214
  - squad-kit picks a **model level** for each role and step from the project's **Quality** setting: **Best**
211
215
  (the default) builds and reviews on the strongest model, **Balanced** builds on it at medium effort, and
212
216
  **Thrifty** builds on a lighter one. **Fast** stays for screenshots and small helpers. The team or each person
213
- can change single steps on the **Squad and AI** page.
217
+ can change single steps on the **Harness** page.
214
218
  - The board shows **what each ticket and each role used**, the way you pay. On a Claude subscription it says the
215
219
  work is included in your plan, and shows its size and its value at API prices (a value, not a bill). With an API
216
220
  key it shows real dollars, against a budget per ticket and per month.
@@ -221,7 +225,7 @@ writes one line in the ticket's activity.
221
225
 
222
226
  - [Getting started](docs/getting-started.md): your first hour, from install to a release.
223
227
  - [Moving to 1.0](docs/migrating-to-1.0.md): from squad-kit 0.x, and from early 1.0 boards.
224
- - [The app](docs/console.md): Home, the board, the ticket drawer, Squad and AI, and Settings.
228
+ - [The app](docs/console.md): Home, the board, the ticket drawer, the Harness page and Settings.
225
229
  - [From a BRD to a built product](docs/requirements.md): upload a requirements document, approve the breakdown,
226
230
  send it to Azure DevOps and let the squad build it.
227
231
  - [CHANGELOG](CHANGELOG.md): what changed in each version.
package/SECURITY.md CHANGED
@@ -39,25 +39,63 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
39
39
  (mode `0600` on POSIX), never in the project folder or in git. A project moved from 0.x has its
40
40
  `.squad/secrets.yaml` moved there once. To run your app, squad-kit copies your project's `.env` files into its own
41
41
  copy of the code in `~/.squad-kit/projects/<id>/apps/` (mode `0600`), never anywhere else.
42
- - **Agents never see your secrets.** No agent may read squad-kit's secret files, and the commands squad-kit runs for
42
+ - **Agents are kept from your secrets.** No agent may read squad-kit's secret files, and the commands squad-kit runs for
43
43
  you (tests, setup and release) start without the AI and tracker keys.
44
+ - **Local files stay out of agents' reach.** An engineer can name files git does not carry, like `.env.dev`. Each one goes
45
+ in a story's copy for the project's own tests and app, and agents are refused it by its exact path. The project's own
46
+ commands can still read it, and a test the Builder wrote is one of those. So stories use values kept for them on this
47
+ computer: give them local test values, never real ones. A file with secrets that is already in git is not covered.
48
+ - **Docker stays closed, with one opening.** Project commands cannot reach Docker. squad-kit opens that one socket for its own
49
+ `docker compose up`, from the project's settings, when an engineer locked every compose file the command names. A story
50
+ cannot change those files. What runs inside the containers is the story's code, and the image builds run its Dockerfile.
44
51
  - **Agents stay in their lane.** Every step runs with the permissions it needs and no more: the Builder edits only its
45
52
  own copy of the code, the Tester cannot change code, and no agent may change the instruction files the next session
46
53
  would follow, squad-kit's own `.squad/` folder, or git history. squad-kit checks after each step and puts back what
47
54
  an agent changed outside its lane. Text from trackers and pasted messages reaches agents as data, never as orders.
48
55
  - **Agents get fixed tools, no free commands.** For screenshots, the app and the checks, an agent presses one of
49
56
  squad-kit's tools. squad-kit checks every field, does the job itself, and refuses and logs what breaks a check.
50
- - **The project's own commands run in a guard** on Mac and Linux: the tests, setup, the app and the release pipeline
51
- can't read your keys, sign-ins, browser profiles, squad-kit's own folder or the `.env` files in your project folder.
52
- They can't change the copy's link to git or git's own folder either, so nothing they write can make squad-kit's own
53
- git, which runs outside the guard, start a program of theirs.
54
- - **The project's commit hooks run in the same guard, once, on a stand-in.** They look at the change on a branch of
55
- their own, so a hook cannot move a real branch, plant a hook, change a git setting or reach another ticket. The real
56
- commit is made after, outside the guard, with your signature if your git signs.
57
- **Known gap, being closed next:** while they run, hooks share git's store of objects, so a hook built to do harm could
58
- change a file stored there. A project with no commit hooks is not affected.
57
+ - **The project's own commands run in a guard** on Mac and Linux: the tests, setup, the app, the release pipeline and the
58
+ commit hooks. **The guard stops accidents and most bad behaviour, but it is not a wall against code built on purpose to
59
+ break out.** On a Mac its rules start from allowing everything and block a list. Use squad-kit on projects and tickets you
60
+ trust, and read what the Builder changes.
61
+
62
+ What it stops:
63
+ - Reading the usual places for keys and sign-ins (`~/.ssh`, `~/.aws`, `~/.gnupg`, `~/.azure`, `~/.kube`, `~/.docker`, the
64
+ GitHub and cloud sign-ins, the keys into a runtime's virtual machine, an `.npmrc` with a token), browser profiles and
65
+ squad-kit's own folder. A place it does not know about is not hidden.
66
+ - Reading the `.env` files in your project folder. On a Mac, all of them. On Linux, the ones it finds 3 folders down when
67
+ a command starts, outside folders such as `node_modules`.
68
+ - Writing outside its copy, the proof folder, the temp folder and the package caches. `~/.cache` and
69
+ `~/Library/Caches` stay read only: your own tools run programs from there. The copy cannot be moved, and git's own
70
+ folder cannot be changed or moved, so nothing written there can make squad-kit's own git start a program.
71
+ - Reaching a container runtime. A container can mount any folder, so a command that reaches Docker could read everything
72
+ above. Connections to the sockets of Docker Desktop, colima, lima, Rancher Desktop, OrbStack, Finch and Podman are
73
+ refused where the guard knows them. A runtime that listens somewhere else is not covered. **1.2.0 and 1.2.1 did not
74
+ have this**: there, a command could read hidden files through Docker when Docker was running. If a project's own tests
75
+ need Docker, an engineer can allow its socket's folder in Settings, knowing that this opens what the guard hides.
76
+ - Signalling other programs. On a Mac a signal reaches only what the command started. On Linux other programs are not
77
+ visible at all.
78
+
79
+ What it does not stop:
80
+ - **The network.** A command can reach the network, so what it can read it can send.
81
+ - **Other local services.** On a Mac a command can still talk to other services on this computer, and to programs that
82
+ listen on a local port. On Linux it can reach your session's bus and gpg agent under `/run/user`, and Docker's own port
83
+ if you turned that on (on a Mac, ports 2375 and 2376 are refused).
84
+ - **Other programs' environments, on a Mac.** A command can read the environment of your other programs, so keys you
85
+ exported in a shell can be seen. Use squad-kit's sign-ins, not exported keys.
86
+ - **An ssh agent.** A command cannot read a key loaded in it, but it can ask the agent to use it.
87
+ - **What a command leaves running, on a Mac.** A process that leaves its group lives on after the command, with the same
88
+ guard around it, and can change the copy's files.
89
+ - **The project's commit hooks run once, on a throwaway git folder.** squad-kit makes that folder outside the project for
90
+ each run. It reads git's store of objects and writes only its own. Its settings are squad-kit's, with your branch by its
91
+ real name and the repo's own filters, which run only in the guard. On Mac and Linux the real git folder stays read only to
92
+ the hooks, all of it: objects, branches, settings, the stash and the hooks. Only two things come out: the files in the
93
+ copy and the commit's words. squad-kit's own git then stages the files and makes the real commit, outside the guard, with
94
+ your signature if your git signs. So nothing a hook puts in its git folder reaches the real store, and squad-kit's git
95
+ never reads a setting a hook wrote. The folder goes after each run, and at the next start after a crash. A hook that
96
+ reaches past it to the real folder can read there, and its writes are refused.
59
97
  - **squad-kit runs no other hook.** Every other git it runs has hooks off: it does not run a project's `pre-push`,
60
- `post-merge`, `post-checkout` or `post-commit` outside that one commit (a `post-commit` runs on the stand-in). The
98
+ `post-merge`, `post-checkout` or `post-commit` outside that one commit (a `post-commit` runs on the throwaway folder). The
61
99
  project's own checks have already run in the guard by then. Pushing from your own terminal still runs your hooks.
62
100
  A project that uses Git LFS still gets its large files uploaded: a push runs squad-kit's own small `pre-push`, kept in
63
101
  its own folder, which does only that.
@@ -65,9 +103,8 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
65
103
  (`diff.external`, textconv), and it never looks inside a nested repo. Programs named in your own git settings for the
66
104
  network, credentials, filters and merges stay on (`core.sshCommand`, git-lfs): they need a line in a settings file,
67
105
  and neither the guard nor an agent's sandbox can write those files.
68
- - **Windows is less protected and not fully tested yet.** There, the agents' own commands and the project's own
69
- commands have no guard, so they can reach other files on the computer, squad-kit's own too. Use it on projects you
70
- trust. Settings says so.
106
+ - **Windows has no guard and is not fully tested yet.** There, the agents' own commands and the project's own commands
107
+ can reach other files on the computer, squad-kit's own too. Use it on projects you trust. Settings says so.
71
108
  - **The engine owns git and the release.** Agents never merge, push or grade their own work.
72
109
  - **The npm package is built and published by GitHub Actions** from a release tag, with npm trusted publishing (no
73
110
  npm token exists) and a signed provenance statement you can check on npmjs.com.