create-stitchkit 0.4.4 → 0.5.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/CHANGELOG.md +53 -0
- package/UPGRADING.md +65 -0
- package/examples/repository/packages/backend/src/surface.snapshot.json +2 -2
- package/package.json +2 -2
- package/template/bun.lock +23 -16
- package/template/package.json +4 -4
- package/templates/agent/package.json +3 -3
- package/templates/agent/src/runtime.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,59 @@ step is overwritten by the next release.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.5.0] — 2026-09-01
|
|
16
|
+
|
|
17
|
+
### ⚠️ Breaking changes
|
|
18
|
+
|
|
19
|
+
**Who must act:** two audiences. Anyone holding a generated **Agent** project
|
|
20
|
+
changes one key in one object, and nothing reports it when it goes wrong.
|
|
21
|
+
**Everyone** re-reads the Zod item: an API that accepted a timestamp without
|
|
22
|
+
seconds stops accepting it, which is a change in what your endpoints admit, not
|
|
23
|
+
in what your code compiles to.
|
|
24
|
+
|
|
25
|
+
- **The Agent approval policy keys `edit_file`, not `apply_patch`.** Stitchkit
|
|
26
|
+
0.71.0 replaced `apply_patch` with a one-call `edit_file`, and `toolApproval`
|
|
27
|
+
names tools by string. A key matching no tool is not an error — an unlisted
|
|
28
|
+
tool falls through to "no approval required", so the effect of leaving the old
|
|
29
|
+
name is not that editing breaks. It is that editing stops asking: the one tool
|
|
30
|
+
the policy existed to gate now runs unattended, and the only visible sign is an
|
|
31
|
+
approval prompt that never appears.
|
|
32
|
+
`// before: toolApproval: { apply_patch: 'user-approval' }` →
|
|
33
|
+
`// after: toolApproval: { edit_file: 'user-approval' }`
|
|
34
|
+
|
|
35
|
+
- **Zod 4.5 makes seconds mandatory in `z.iso.datetime()`.** The template moves
|
|
36
|
+
to `zod@4.5.4`, and the tightening travels with it: `2026-08-08T00:15Z`
|
|
37
|
+
validated before and is refused now. Nothing in the generated code changes —
|
|
38
|
+
what changes is the set of inputs your API accepts, so a client that omitted
|
|
39
|
+
seconds starts receiving `BAD_REQUEST`. If you need the old latitude, say so
|
|
40
|
+
in the schema rather than by holding the version back:
|
|
41
|
+
`// before: z.iso.datetime()` → `// after: z.iso.datetime() // seconds now required`
|
|
42
|
+
The same release regenerates the committed **surface snapshots**: 4.5 encodes
|
|
43
|
+
a nullable as `type: ['string','null']` where 4.4 wrote `anyOf`, so every
|
|
44
|
+
affected shape fingerprint moves. A project of your own carrying
|
|
45
|
+
`surface.snapshot.json` regenerates it with `bun run surface:snapshot` and
|
|
46
|
+
reviews the diff — the hashes move, the operations do not.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- **The generated project targets the published `stitchkit@0.71.0` line.** The
|
|
51
|
+
catalog target and the frozen lockfile move together, so a fresh scaffold
|
|
52
|
+
receives `edit_file`, `list_directory`, `glob`, the typed coding-tool refusals
|
|
53
|
+
a model can act on, the context usage a step reports, and the peer-free
|
|
54
|
+
`stitchkit/telegram` leaf.
|
|
55
|
+
- **The whole toolchain moves to its current releases** — Zod 4.5.4 (see the
|
|
56
|
+
breaking note above), Biome 2.5.11, `@types/node` 26.4.0, and `ai` 7.0.87 in
|
|
57
|
+
the Agent template. One Zod resolves across the repository and both templates,
|
|
58
|
+
which is now a gate rather than a coincidence: two minors of Zod are two
|
|
59
|
+
incompatible type systems, and the error that surfaces names neither Zod nor
|
|
60
|
+
the file that moved it.
|
|
61
|
+
- **The Agent approval policy is exhaustive again.** 0.71.0 added
|
|
62
|
+
`list_directory` and `glob`; both are read-only and both were therefore
|
|
63
|
+
running under the framework's default rather than under the project's own
|
|
64
|
+
policy. They are now named `'approved'` beside `read_file` and `search_files`.
|
|
65
|
+
Nothing about what happens changes — what changes is that the file says so,
|
|
66
|
+
which is the whole reason the map is written out rather than defaulted.
|
|
67
|
+
|
|
15
68
|
## [0.4.4] — 2026-08-30
|
|
16
69
|
|
|
17
70
|
### Changed
|
package/UPGRADING.md
CHANGED
|
@@ -60,6 +60,71 @@ the first scaffolder release with a migration channel of its own.
|
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
63
|
+
## Released migration: 0.5.0
|
|
64
|
+
|
|
65
|
+
### the approval policy names a tool that no longer exists
|
|
66
|
+
|
|
67
|
+
One code edit, and one thing to do to a machine that was left mid-question.
|
|
68
|
+
|
|
69
|
+
1. **Rename the key.** In `src/runtime.ts`, inside `loop.toolApproval`, replace
|
|
70
|
+
`apply_patch: 'user-approval'` with `edit_file: 'user-approval'`. While you
|
|
71
|
+
are in that object, add `list_directory: 'approved'` and `glob: 'approved'`
|
|
72
|
+
beside `read_file` and `search_files` — 0.71.0 added both, they are read-only,
|
|
73
|
+
and an unlisted tool is governed by the framework's default rather than by
|
|
74
|
+
this file.
|
|
75
|
+
|
|
76
|
+
Do this **before** you start the upgraded agent, not after. The failure mode
|
|
77
|
+
is silent in the direction that costs you: a key matching no tool does not
|
|
78
|
+
raise, it simply stops gating, so the first edit after the upgrade is applied
|
|
79
|
+
without asking and looks exactly like an edit you approved.
|
|
80
|
+
|
|
81
|
+
2. **Operator step — a durable session left waiting on the old tool cannot be
|
|
82
|
+
answered.** If an agent was interrupted while a `apply_patch` approval was
|
|
83
|
+
pending, that approval names a call for a tool the framework no longer
|
|
84
|
+
defines: approving it cannot execute anything, and the run will not move.
|
|
85
|
+
Interrupt that run, or drop the local state directory — `.stitchkit/` holds
|
|
86
|
+
`agent.sqlite`, the approval secret and the TUI logs, all of it local and
|
|
87
|
+
regenerated on the next start. There is nothing durable in it that a server
|
|
88
|
+
owns.
|
|
89
|
+
|
|
90
|
+
A session with no pending approval needs none of this and resumes normally.
|
|
91
|
+
|
|
92
|
+
3. **The framework's own move is separate.** Going from a `0.70.x` line to
|
|
93
|
+
`0.71.0` is a Stitchkit upgrade with its own breaking notes — the coding-tool
|
|
94
|
+
surface changed for anyone calling it directly, not only through this
|
|
95
|
+
template. Read
|
|
96
|
+
[`docs/guide/upgrading.md`](../../docs/guide/upgrading.md), section
|
|
97
|
+
`Released migration: 0.71.0`.
|
|
98
|
+
|
|
99
|
+
### the timestamp your API accepts got narrower
|
|
100
|
+
|
|
101
|
+
Zod moved to 4.5, and `z.iso.datetime()` now requires seconds. This is not a
|
|
102
|
+
code change — it is a change in what your endpoints admit, and it arrives the
|
|
103
|
+
moment you install.
|
|
104
|
+
|
|
105
|
+
1. **Decide before you deploy, not after.** If any client sends
|
|
106
|
+
`2026-08-08T00:15Z`, it now receives `BAD_REQUEST` where it used to receive
|
|
107
|
+
`200`. Search your schemas for `z.iso.datetime()` and check who fills those
|
|
108
|
+
fields. A machine-to-machine caller you control is a one-line fix on its
|
|
109
|
+
side; a caller you do not control is a decision, and the honest form of it is
|
|
110
|
+
an explicit schema that accepts what you mean to accept — not a pinned Zod
|
|
111
|
+
version, which only moves the same day to a later one.
|
|
112
|
+
|
|
113
|
+
2. **Regenerate your surface snapshot in the same commit.** 4.5 encodes a
|
|
114
|
+
nullable as `type: ["string","null"]` where 4.4 wrote `anyOf`, so the shape
|
|
115
|
+
fingerprints in `packages/backend/src/surface.snapshot.json` move without any
|
|
116
|
+
operation changing. Run `bun run surface:snapshot` and read the diff: only
|
|
117
|
+
`inputShape` / `outputShape` values may differ. If an operation appeared,
|
|
118
|
+
vanished, or changed its HTTP or tool exposure, that is **your** change and
|
|
119
|
+
Zod did not cause it.
|
|
120
|
+
|
|
121
|
+
3. **Move one Zod, not several.** If your project vendors or links packages that
|
|
122
|
+
depend on Zod themselves, they must resolve the same minor. Two minors are
|
|
123
|
+
two incompatible type systems, and what surfaces is
|
|
124
|
+
`TS2589: Type instantiation is excessively deep` in a file you did not touch.
|
|
125
|
+
No operator step: nothing about a running machine changes.
|
|
126
|
+
|
|
127
|
+
|
|
63
128
|
## Released migration: 0.4.1
|
|
64
129
|
|
|
65
130
|
### a release refuses a stale artifact, and cleanup is bounded
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"hasInput": false,
|
|
7
7
|
"hasOutput": true,
|
|
8
8
|
"inputShape": null,
|
|
9
|
-
"outputShape": "
|
|
9
|
+
"outputShape": "05d1386c30d82f6a",
|
|
10
10
|
"http": [
|
|
11
11
|
{
|
|
12
12
|
"method": "GET",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"hasInput": false,
|
|
27
27
|
"hasOutput": true,
|
|
28
28
|
"inputShape": null,
|
|
29
|
-
"outputShape": "
|
|
29
|
+
"outputShape": "05d1386c30d82f6a",
|
|
30
30
|
"http": [
|
|
31
31
|
{
|
|
32
32
|
"method": "POST",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-stitchkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Create a production-shaped Stitchkit application",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Max Listov <maxlistov@gmail.com>",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"@types/react": "^19.2.18",
|
|
84
84
|
"ai": "^7.0.84",
|
|
85
85
|
"react": "^19.2.8",
|
|
86
|
-
"stitchkit": "0.
|
|
86
|
+
"stitchkit": "0.71.0",
|
|
87
87
|
"typescript": "^7.0.2"
|
|
88
88
|
},
|
|
89
89
|
"engines": {
|
package/template/bun.lock
CHANGED
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"@app/config": "workspace:*",
|
|
12
12
|
"@app/shared": "workspace:*",
|
|
13
13
|
"@axe-core/playwright": "^4.13.0",
|
|
14
|
-
"@biomejs/biome": "^2.5.
|
|
14
|
+
"@biomejs/biome": "^2.5.11",
|
|
15
15
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
16
16
|
"@playwright/test": "^1.62.1",
|
|
17
17
|
"@types/bun": "^1.4.0",
|
|
18
|
-
"@types/node": "^26.
|
|
18
|
+
"@types/node": "^26.4.0",
|
|
19
19
|
"oxc-parser": "^0.147.0",
|
|
20
20
|
"socket.io-client": "^4.8.3",
|
|
21
21
|
"stitchkit": "catalog:",
|
|
22
22
|
"typescript": "^7.0.2",
|
|
23
|
-
"zod": "^4.4
|
|
23
|
+
"zod": "^4.5.4",
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
26
|
"packages/backend": {
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
},
|
|
141
141
|
"catalog": {
|
|
142
|
-
"stitchkit": "^0.
|
|
142
|
+
"stitchkit": "^0.71.0",
|
|
143
143
|
},
|
|
144
144
|
"packages": {
|
|
145
145
|
"@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.63", "", { "dependencies": { "@ai-sdk/provider": "4.0.7", "@ai-sdk/provider-utils": "5.0.29", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-D7BogSRg61QfTdr7AEcYn9h0I/e4QHvFXwIV1RW+DZZGJu1wSiX2cH06szZSYyKi7Eat50V4s4J8vggZUEs7eg=="],
|
|
@@ -168,23 +168,23 @@
|
|
|
168
168
|
|
|
169
169
|
"@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="],
|
|
170
170
|
|
|
171
|
-
"@biomejs/biome": ["@biomejs/biome@2.5.
|
|
171
|
+
"@biomejs/biome": ["@biomejs/biome@2.5.11", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.5.11", "@biomejs/cli-darwin-x64": "2.5.11", "@biomejs/cli-linux-arm64": "2.5.11", "@biomejs/cli-linux-arm64-musl": "2.5.11", "@biomejs/cli-linux-x64": "2.5.11", "@biomejs/cli-linux-x64-musl": "2.5.11", "@biomejs/cli-win32-arm64": "2.5.11", "@biomejs/cli-win32-x64": "2.5.11" }, "bin": { "biome": "bin/biome" } }, "sha512-Tj0dnkLPdW0ASjHfj2D/ZkkvPU2wrFmnE1jWTD2xzV1ycapV1DutbYXk4NDnR3rYTi1ZCbNFD4G2gRMEY65WaA=="],
|
|
172
172
|
|
|
173
|
-
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.5.
|
|
173
|
+
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.5.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-6SGZxoKbXvUjMn1t6A98HqWISPnGNbYs0R/Rt2JarmXBSev+lva4QxUMWEBX9lX1Wo1XTJ78uk5xVDtG58SRZg=="],
|
|
174
174
|
|
|
175
|
-
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.5.
|
|
175
|
+
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.5.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-nYkXY7tLBEgnGbYapDKAyKzgt44ZEyG+AKalvTXtCWKYgepI9dw327q+cVgedxm+Udi1ZzHKUyZrIusHi/KQbw=="],
|
|
176
176
|
|
|
177
|
-
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.5.
|
|
177
|
+
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.5.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-3PVLSTD9RR73rvVPt5G3T1gc+ycggWEGfTD7RvzzbtcDPD27NxgxBbAFfpm7DXJKW6VLHWE1lLMGvFt2Qxjcow=="],
|
|
178
178
|
|
|
179
|
-
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.5.
|
|
179
|
+
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.5.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-qhyZUMyCbWYFV2bAwRNVvfMVZ+hv7WYl6mossGrxC+uiQQXhvsuWWU8zz6jYX0mChZd9MgQZbm4vozTmG/5iGw=="],
|
|
180
180
|
|
|
181
|
-
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.5.
|
|
181
|
+
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.5.11", "", { "os": "linux", "cpu": "x64" }, "sha512-JOytptlsgM33B2MMFUg8iBrb4IKpbD5JnJrSeYiaFEeAj4vuXx0iQSQZ4qK7sqyMtfjZxxPdNdMZZVL4y/mFyA=="],
|
|
182
182
|
|
|
183
|
-
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.5.
|
|
183
|
+
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.5.11", "", { "os": "linux", "cpu": "x64" }, "sha512-oRRlrchG5EfrEL/EmtT1qUjSNHk3/5LGeZhQqADBBAJF1b1ET6964xEKe7aGlGARzDfza8H/seEsFJl7S6Ql9w=="],
|
|
184
184
|
|
|
185
|
-
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.5.
|
|
185
|
+
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.5.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-e49E6K9hzH/ohJNx8Y26mY8HaV4I4ZViIeoqhKsmoXLKHhQnMeBAVqCgsGf2Wa3lXlS7RkporDXMHHWkzvZzFw=="],
|
|
186
186
|
|
|
187
|
-
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.5.
|
|
187
|
+
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.5.11", "", { "os": "win32", "cpu": "x64" }, "sha512-QSQr/KjOgXA7OzXJUWS+oguKyAZ3Q0l/lnlDGbu397eKo83atuWUjBPJrsqbKNF6CARGw8XXJLGzpHC8Ryhd4Q=="],
|
|
188
188
|
|
|
189
189
|
"@electric-sql/pglite": ["@electric-sql/pglite@0.4.3", "", {}, "sha512-ichuWTgtd4mOM1G4SpyGJa5trT03lWbMypDV0fUXUCXg5hiHqVAz/bZyV68NqmkLB7WcYmj1RMJVSp8HV/v/ZQ=="],
|
|
190
190
|
|
|
@@ -620,7 +620,7 @@
|
|
|
620
620
|
|
|
621
621
|
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
|
|
622
622
|
|
|
623
|
-
"@types/node": ["@types/node@26.
|
|
623
|
+
"@types/node": ["@types/node@26.4.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ=="],
|
|
624
624
|
|
|
625
625
|
"@types/pg": ["@types/pg@8.23.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A=="],
|
|
626
626
|
|
|
@@ -1118,7 +1118,7 @@
|
|
|
1118
1118
|
|
|
1119
1119
|
"std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
|
|
1120
1120
|
|
|
1121
|
-
"stitchkit": ["stitchkit@0.
|
|
1121
|
+
"stitchkit": ["stitchkit@0.71.0", "", { "dependencies": { "ky": "^2.0.2" }, "peerDependencies": { "@modelcontextprotocol/ext-apps": "^1.7.2", "@modelcontextprotocol/server": "^2.0.0", "@openrouter/ai-sdk-provider": "^3.0.0", "@opentelemetry/api": "^1.9.0", "@socket.io/bun-engine": "^0.1.1", "@socket.io/component-emitter": "^3.1.2", "@tanstack/react-query": ">=5", "@types/bun": "^1.3.14", "ai": "^7.0.0", "grammy": "^1.45.1", "react": ">=18", "react-query-kit": "^3.3.3", "socket.io": "^4.8.3", "socket.io-client": "^4.8.3", "srvx": "^0.12.5", "zod": "^4.4.3" }, "optionalPeers": ["@modelcontextprotocol/ext-apps", "@modelcontextprotocol/server", "@openrouter/ai-sdk-provider", "@opentelemetry/api", "@socket.io/bun-engine", "@socket.io/component-emitter", "@tanstack/react-query", "@types/bun", "ai", "grammy", "react", "react-query-kit", "socket.io", "socket.io-client", "srvx"] }, "sha512-HXqTD1Sv534rWt+KKJV1Gp535NTRzbGFxNMuRAvo9TzuU0kZxBDF18gu+WexF9O8Z4jkhlfvTjXeRy/oQrnHwA=="],
|
|
1122
1122
|
|
|
1123
1123
|
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
|
|
1124
1124
|
|
|
@@ -1186,10 +1186,13 @@
|
|
|
1186
1186
|
|
|
1187
1187
|
"zeptomatch": ["zeptomatch@2.1.0", "", { "dependencies": { "grammex": "^3.1.11", "graphmatch": "^1.1.0" } }, "sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA=="],
|
|
1188
1188
|
|
|
1189
|
-
"zod": ["zod@4.4
|
|
1189
|
+
"zod": ["zod@4.5.4", "", {}, "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA=="],
|
|
1190
1190
|
|
|
1191
1191
|
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
|
|
1192
1192
|
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1193
1196
|
"@prisma/adapter-pg/@types/pg": ["@types/pg@8.21.0", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-AYdtudzabjLZgVgRZmAnU8bAnVUXzuJX2IYHeSIiIHm68olD+LgQYCGWdtcNYnP0uq9c4S4NibVG3Ni7VbKW7Q=="],
|
|
1194
1197
|
|
|
1195
1198
|
"@prisma/adapter-pg/pg": ["pg@8.22.0", "", { "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA=="],
|
|
@@ -1220,6 +1223,8 @@
|
|
|
1220
1223
|
|
|
1221
1224
|
"@types/cors/@types/node": ["@types/node@26.2.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg=="],
|
|
1222
1225
|
|
|
1226
|
+
"@types/pg/@types/node": ["@types/node@26.3.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw=="],
|
|
1227
|
+
|
|
1223
1228
|
"@types/ws/@types/node": ["@types/node@26.2.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg=="],
|
|
1224
1229
|
|
|
1225
1230
|
"@visx/vendor/@types/d3-array": ["@types/d3-array@3.0.3", "", {}, "sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ=="],
|
|
@@ -1236,6 +1241,8 @@
|
|
|
1236
1241
|
|
|
1237
1242
|
"accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
|
|
1238
1243
|
|
|
1244
|
+
"bun-types/@types/node": ["@types/node@26.3.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw=="],
|
|
1245
|
+
|
|
1239
1246
|
"engine.io/@types/node": ["@types/node@26.2.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg=="],
|
|
1240
1247
|
|
|
1241
1248
|
"pg-types/postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="],
|
package/template/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"packages/*"
|
|
8
8
|
],
|
|
9
9
|
"catalog": {
|
|
10
|
-
"stitchkit": "^0.
|
|
10
|
+
"stitchkit": "^0.71.0"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"dev": "bun scripts/dev.ts",
|
|
@@ -42,16 +42,16 @@
|
|
|
42
42
|
"@app/config": "workspace:*",
|
|
43
43
|
"@app/shared": "workspace:*",
|
|
44
44
|
"@axe-core/playwright": "^4.13.0",
|
|
45
|
-
"@biomejs/biome": "^2.5.
|
|
45
|
+
"@biomejs/biome": "^2.5.11",
|
|
46
46
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
47
47
|
"@playwright/test": "^1.62.1",
|
|
48
48
|
"@types/bun": "^1.4.0",
|
|
49
|
-
"@types/node": "^26.
|
|
49
|
+
"@types/node": "^26.4.0",
|
|
50
50
|
"oxc-parser": "^0.147.0",
|
|
51
51
|
"socket.io-client": "^4.8.3",
|
|
52
52
|
"stitchkit": "catalog:",
|
|
53
53
|
"typescript": "^7.0.2",
|
|
54
|
-
"zod": "^4.4
|
|
54
|
+
"zod": "^4.5.4"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"bun": ">=1.2.0",
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"build": "bun build src/index.ts --outdir dist --target bun --packages external"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"stitchkit-tui": "file:../../../tui",
|
|
20
19
|
"@openrouter/ai-sdk-provider": "^3.0.0",
|
|
21
|
-
"ai": "^7.0.
|
|
20
|
+
"ai": "^7.0.87",
|
|
22
21
|
"stitchkit": "file:../../../core",
|
|
23
|
-
"
|
|
22
|
+
"stitchkit-tui": "file:../../../tui",
|
|
23
|
+
"zod": "4.5.4"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
@@ -118,9 +118,11 @@ export async function createStarterHarness(
|
|
|
118
118
|
toolApproval: {
|
|
119
119
|
read_file: 'approved',
|
|
120
120
|
search_files: 'approved',
|
|
121
|
+
list_directory: 'approved',
|
|
122
|
+
glob: 'approved',
|
|
121
123
|
read_resource: 'approved',
|
|
122
124
|
write_file: 'user-approval',
|
|
123
|
-
|
|
125
|
+
edit_file: 'user-approval',
|
|
124
126
|
run_command: 'user-approval',
|
|
125
127
|
},
|
|
126
128
|
toolApprovalSecret: await persistentApprovalSecret(stateDirectory),
|