@noodleseed/agent-kit 0.16.0 → 0.18.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/manifest.json +49 -49
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +1 -1
- package/skills/claude-code/examples/acme-bistro/README.md +1 -1
- package/skills/claude-code/examples/acme-bistro/design/UX-Document.md +4 -4
- package/skills/claude-code/examples/acme-bistro/design/api-contract.md +3 -3
- package/skills/claude-code/examples/acme-bistro/design/wireframe.html +3 -3
- package/skills/claude-code/examples/acme-bistro/src/server.ts +8 -6
- package/skills/claude-code/examples/acme-discovery/README.md +1 -1
- package/skills/claude-code/examples/acme-discovery/design/UX-Document.md +3 -3
- package/skills/claude-code/examples/acme-discovery/design/wireframe.html +2 -2
- package/skills/claude-code/examples/acme-discovery/src/server.ts +6 -5
- package/skills/claude-code/examples/acme-tasks/README.md +30 -1
- package/skills/claude-code/examples/acme-tasks/design/UX-Document.md +2 -2
- package/skills/claude-code/examples/acme-tasks/design/wireframe.html +6 -6
- package/skills/claude-code/examples/acme-tasks/src/server.ts +6 -5
- package/skills/claude-code/examples/food-ordering/src/server.ts +46 -56
- package/skills/claude-code/examples/weather/src/server.ts +29 -41
- package/skills/claude-code/references/authoring-workflow.md +15 -10
- package/skills/claude-code/references/cli-commands.md +1 -0
- package/skills/claude-code/references/compile-errors.md +2 -2
- package/skills/claude-code/references/connect-an-api.md +2 -2
- package/skills/claude-code/references/experience-design.md +1 -1
- package/skills/claude-code/references/sdk-surface.md +16 -16
- package/skills/claude-code/references/troubleshooting.md +2 -2
- package/skills/claude-code/references/widgets-and-apps.md +9 -8
- package/skills/codex/SKILL.md +1 -1
- package/skills/codex/examples/acme-bistro/README.md +1 -1
- package/skills/codex/examples/acme-bistro/design/UX-Document.md +4 -4
- package/skills/codex/examples/acme-bistro/design/api-contract.md +3 -3
- package/skills/codex/examples/acme-bistro/design/wireframe.html +3 -3
- package/skills/codex/examples/acme-bistro/src/server.ts +8 -6
- package/skills/codex/examples/acme-discovery/README.md +1 -1
- package/skills/codex/examples/acme-discovery/design/UX-Document.md +3 -3
- package/skills/codex/examples/acme-discovery/design/wireframe.html +2 -2
- package/skills/codex/examples/acme-discovery/src/server.ts +6 -5
- package/skills/codex/examples/acme-tasks/README.md +30 -1
- package/skills/codex/examples/acme-tasks/design/UX-Document.md +2 -2
- package/skills/codex/examples/acme-tasks/design/wireframe.html +6 -6
- package/skills/codex/examples/acme-tasks/src/server.ts +6 -5
- package/skills/codex/examples/food-ordering/src/server.ts +46 -56
- package/skills/codex/examples/weather/src/server.ts +29 -41
- package/skills/codex/references/authoring-workflow.md +15 -10
- package/skills/codex/references/cli-commands.md +1 -0
- package/skills/codex/references/compile-errors.md +2 -2
- package/skills/codex/references/connect-an-api.md +2 -2
- package/skills/codex/references/experience-design.md +1 -1
- package/skills/codex/references/sdk-surface.md +16 -16
- package/skills/codex/references/troubleshooting.md +2 -2
- package/skills/codex/references/widgets-and-apps.md +9 -8
package/manifest.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"packageVersion": "0.
|
|
2
|
+
"packageVersion": "0.18.0",
|
|
3
3
|
"files": [
|
|
4
4
|
{
|
|
5
5
|
"path": "skills/codex/SKILL.md",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "e1cdb0f5fcf165fbb759e78398c495b488ec0293ff8d8d6961aee964bffd064d",
|
|
7
7
|
"agentTarget": "codex"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"path": "skills/codex/references/sdk-surface.md",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "f19560c3232558eb692dc4ff0cee74850ebca9029f95272233e734aa3854faba",
|
|
12
12
|
"agentTarget": "codex"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "skills/codex/references/cli-commands.md",
|
|
16
|
-
"sha256": "
|
|
16
|
+
"sha256": "3a6df9f9a1311843d929c06698a87695fe8e4197d4c6ca64b2768c2990386557",
|
|
17
17
|
"agentTarget": "codex"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
@@ -23,27 +23,27 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "skills/codex/references/compile-errors.md",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "de43b81d6b9c1a065aa1905fdb469e518e50e80bf34306964593e608649f6868",
|
|
27
27
|
"agentTarget": "codex"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "skills/codex/references/authoring-workflow.md",
|
|
31
|
-
"sha256": "
|
|
31
|
+
"sha256": "23d0ced0b18aea19cf7714f744ea3ac2bbc4ff046b63e54440abb43182736717",
|
|
32
32
|
"agentTarget": "codex"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "skills/codex/references/connect-an-api.md",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "497221256ebb78300b5e4055daff3f222052a7b78fb829fd24171668dd7fc0fa",
|
|
37
37
|
"agentTarget": "codex"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"path": "skills/codex/references/experience-design.md",
|
|
41
|
-
"sha256": "
|
|
41
|
+
"sha256": "40c5d7081f4c81cca5a7a2cfabe2e0fa8818eaabfd0214539765b70b6750d3cb",
|
|
42
42
|
"agentTarget": "codex"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"path": "skills/codex/references/widgets-and-apps.md",
|
|
46
|
-
"sha256": "
|
|
46
|
+
"sha256": "5cb7142e25574150d9b8e9b1261d63f76ad56a8a0b5260dc24afe9e92cc6f454",
|
|
47
47
|
"agentTarget": "codex"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"path": "skills/codex/references/troubleshooting.md",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "0fac5c07a9707ffeb88860905f351c58b567dcae1337ea9ac044cf5df8c8afef",
|
|
57
57
|
"agentTarget": "codex"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
@@ -78,22 +78,22 @@
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"path": "skills/codex/examples/acme-bistro/README.md",
|
|
81
|
-
"sha256": "
|
|
81
|
+
"sha256": "d94f67f7518208cba14920c26ed8aaa1546b496d96e55645e85b5d75a1a64127",
|
|
82
82
|
"agentTarget": "codex"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
"path": "skills/codex/examples/acme-bistro/design/UX-Document.md",
|
|
86
|
-
"sha256": "
|
|
86
|
+
"sha256": "b4627bbd31764f2432a408efdad3ffeba138ac5bac3ac483afbd97d33f0c37f3",
|
|
87
87
|
"agentTarget": "codex"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
"path": "skills/codex/examples/acme-bistro/design/api-contract.md",
|
|
91
|
-
"sha256": "
|
|
91
|
+
"sha256": "52b3a77db550ceb4126f0c3742b23606414a6b75f532f41f56c12d907949e744",
|
|
92
92
|
"agentTarget": "codex"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"path": "skills/codex/examples/acme-bistro/design/wireframe.html",
|
|
96
|
-
"sha256": "
|
|
96
|
+
"sha256": "25bb48e8f2634b6c7fc0a773ca2d5c4678f11f813e96784ac4cf99cb34b84d49",
|
|
97
97
|
"agentTarget": "codex"
|
|
98
98
|
},
|
|
99
99
|
{
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
"path": "skills/codex/examples/acme-bistro/src/server.ts",
|
|
116
|
-
"sha256": "
|
|
116
|
+
"sha256": "3f707b40fdf84ab2e8738367a2e0cccaf075a07aa945801ffb3a534f98ee1dcd",
|
|
117
117
|
"agentTarget": "codex"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
@@ -138,17 +138,17 @@
|
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
"path": "skills/codex/examples/acme-discovery/README.md",
|
|
141
|
-
"sha256": "
|
|
141
|
+
"sha256": "c909d5d18a0889b44ce63cb9e02c969243be1bba85454f1181c64809b1160b97",
|
|
142
142
|
"agentTarget": "codex"
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"path": "skills/codex/examples/acme-discovery/design/UX-Document.md",
|
|
146
|
-
"sha256": "
|
|
146
|
+
"sha256": "186be2e58210f7dc76a3305b5b7b47357236586a8f5648c3a88f5367933dfa56",
|
|
147
147
|
"agentTarget": "codex"
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
"path": "skills/codex/examples/acme-discovery/design/wireframe.html",
|
|
151
|
-
"sha256": "
|
|
151
|
+
"sha256": "6b1098c755c0a4bb8d477cec40b6dbf34e12e236dc6b1a7b438ff069bd84ea18",
|
|
152
152
|
"agentTarget": "codex"
|
|
153
153
|
},
|
|
154
154
|
{
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
"path": "skills/codex/examples/acme-discovery/src/server.ts",
|
|
171
|
-
"sha256": "
|
|
171
|
+
"sha256": "3a8d1285b375b6e650db95033af0f1cb0c8f5468a6a454e4cbcc8aaae7f6ff9d",
|
|
172
172
|
"agentTarget": "codex"
|
|
173
173
|
},
|
|
174
174
|
{
|
|
@@ -193,17 +193,17 @@
|
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
"path": "skills/codex/examples/acme-tasks/README.md",
|
|
196
|
-
"sha256": "
|
|
196
|
+
"sha256": "ce9f7748d0258f70471f6f8d26771acde6f9025de54f90640f46a8219fba1359",
|
|
197
197
|
"agentTarget": "codex"
|
|
198
198
|
},
|
|
199
199
|
{
|
|
200
200
|
"path": "skills/codex/examples/acme-tasks/design/UX-Document.md",
|
|
201
|
-
"sha256": "
|
|
201
|
+
"sha256": "9eb6fda14200bb7a2f67a2b2bb8b2e0b7914c98a7da8e272dc2707110f0ef027",
|
|
202
202
|
"agentTarget": "codex"
|
|
203
203
|
},
|
|
204
204
|
{
|
|
205
205
|
"path": "skills/codex/examples/acme-tasks/design/wireframe.html",
|
|
206
|
-
"sha256": "
|
|
206
|
+
"sha256": "be5a9803eaaff93ee0ceb8afadc5dedf1df0c0712fc32b226c441b6d310af39e",
|
|
207
207
|
"agentTarget": "codex"
|
|
208
208
|
},
|
|
209
209
|
{
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
225
|
"path": "skills/codex/examples/acme-tasks/src/server.ts",
|
|
226
|
-
"sha256": "
|
|
226
|
+
"sha256": "3876daf95af0e55d245e641b5e91a7cdd40bdccb6a4f0bd50c65a462ac98d37d",
|
|
227
227
|
"agentTarget": "codex"
|
|
228
228
|
},
|
|
229
229
|
{
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
},
|
|
269
269
|
{
|
|
270
270
|
"path": "skills/codex/examples/food-ordering/src/server.ts",
|
|
271
|
-
"sha256": "
|
|
271
|
+
"sha256": "1b1329c99af4798072b69979f1f0861c3b3587b237df46d3cf7b923060f134cb",
|
|
272
272
|
"agentTarget": "codex"
|
|
273
273
|
},
|
|
274
274
|
{
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
},
|
|
339
339
|
{
|
|
340
340
|
"path": "skills/codex/examples/weather/src/server.ts",
|
|
341
|
-
"sha256": "
|
|
341
|
+
"sha256": "95cd3a2ef47be898469d40d109f3fb89ac6e59a34fd8ad600c80dfe2908d4598",
|
|
342
342
|
"agentTarget": "codex"
|
|
343
343
|
},
|
|
344
344
|
{
|
|
@@ -348,17 +348,17 @@
|
|
|
348
348
|
},
|
|
349
349
|
{
|
|
350
350
|
"path": "skills/claude-code/SKILL.md",
|
|
351
|
-
"sha256": "
|
|
351
|
+
"sha256": "dcb8ef876ceb10b803ab653404789851ea58dbef06877f8e2920cf9ae08a3d94",
|
|
352
352
|
"agentTarget": "claude-code"
|
|
353
353
|
},
|
|
354
354
|
{
|
|
355
355
|
"path": "skills/claude-code/references/sdk-surface.md",
|
|
356
|
-
"sha256": "
|
|
356
|
+
"sha256": "f19560c3232558eb692dc4ff0cee74850ebca9029f95272233e734aa3854faba",
|
|
357
357
|
"agentTarget": "claude-code"
|
|
358
358
|
},
|
|
359
359
|
{
|
|
360
360
|
"path": "skills/claude-code/references/cli-commands.md",
|
|
361
|
-
"sha256": "
|
|
361
|
+
"sha256": "3a6df9f9a1311843d929c06698a87695fe8e4197d4c6ca64b2768c2990386557",
|
|
362
362
|
"agentTarget": "claude-code"
|
|
363
363
|
},
|
|
364
364
|
{
|
|
@@ -368,27 +368,27 @@
|
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
"path": "skills/claude-code/references/compile-errors.md",
|
|
371
|
-
"sha256": "
|
|
371
|
+
"sha256": "de43b81d6b9c1a065aa1905fdb469e518e50e80bf34306964593e608649f6868",
|
|
372
372
|
"agentTarget": "claude-code"
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
"path": "skills/claude-code/references/authoring-workflow.md",
|
|
376
|
-
"sha256": "
|
|
376
|
+
"sha256": "23d0ced0b18aea19cf7714f744ea3ac2bbc4ff046b63e54440abb43182736717",
|
|
377
377
|
"agentTarget": "claude-code"
|
|
378
378
|
},
|
|
379
379
|
{
|
|
380
380
|
"path": "skills/claude-code/references/connect-an-api.md",
|
|
381
|
-
"sha256": "
|
|
381
|
+
"sha256": "497221256ebb78300b5e4055daff3f222052a7b78fb829fd24171668dd7fc0fa",
|
|
382
382
|
"agentTarget": "claude-code"
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
385
|
"path": "skills/claude-code/references/experience-design.md",
|
|
386
|
-
"sha256": "
|
|
386
|
+
"sha256": "40c5d7081f4c81cca5a7a2cfabe2e0fa8818eaabfd0214539765b70b6750d3cb",
|
|
387
387
|
"agentTarget": "claude-code"
|
|
388
388
|
},
|
|
389
389
|
{
|
|
390
390
|
"path": "skills/claude-code/references/widgets-and-apps.md",
|
|
391
|
-
"sha256": "
|
|
391
|
+
"sha256": "5cb7142e25574150d9b8e9b1261d63f76ad56a8a0b5260dc24afe9e92cc6f454",
|
|
392
392
|
"agentTarget": "claude-code"
|
|
393
393
|
},
|
|
394
394
|
{
|
|
@@ -398,7 +398,7 @@
|
|
|
398
398
|
},
|
|
399
399
|
{
|
|
400
400
|
"path": "skills/claude-code/references/troubleshooting.md",
|
|
401
|
-
"sha256": "
|
|
401
|
+
"sha256": "0fac5c07a9707ffeb88860905f351c58b567dcae1337ea9ac044cf5df8c8afef",
|
|
402
402
|
"agentTarget": "claude-code"
|
|
403
403
|
},
|
|
404
404
|
{
|
|
@@ -423,22 +423,22 @@
|
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
425
|
"path": "skills/claude-code/examples/acme-bistro/README.md",
|
|
426
|
-
"sha256": "
|
|
426
|
+
"sha256": "d94f67f7518208cba14920c26ed8aaa1546b496d96e55645e85b5d75a1a64127",
|
|
427
427
|
"agentTarget": "claude-code"
|
|
428
428
|
},
|
|
429
429
|
{
|
|
430
430
|
"path": "skills/claude-code/examples/acme-bistro/design/UX-Document.md",
|
|
431
|
-
"sha256": "
|
|
431
|
+
"sha256": "b4627bbd31764f2432a408efdad3ffeba138ac5bac3ac483afbd97d33f0c37f3",
|
|
432
432
|
"agentTarget": "claude-code"
|
|
433
433
|
},
|
|
434
434
|
{
|
|
435
435
|
"path": "skills/claude-code/examples/acme-bistro/design/api-contract.md",
|
|
436
|
-
"sha256": "
|
|
436
|
+
"sha256": "52b3a77db550ceb4126f0c3742b23606414a6b75f532f41f56c12d907949e744",
|
|
437
437
|
"agentTarget": "claude-code"
|
|
438
438
|
},
|
|
439
439
|
{
|
|
440
440
|
"path": "skills/claude-code/examples/acme-bistro/design/wireframe.html",
|
|
441
|
-
"sha256": "
|
|
441
|
+
"sha256": "25bb48e8f2634b6c7fc0a773ca2d5c4678f11f813e96784ac4cf99cb34b84d49",
|
|
442
442
|
"agentTarget": "claude-code"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
@@ -458,7 +458,7 @@
|
|
|
458
458
|
},
|
|
459
459
|
{
|
|
460
460
|
"path": "skills/claude-code/examples/acme-bistro/src/server.ts",
|
|
461
|
-
"sha256": "
|
|
461
|
+
"sha256": "3f707b40fdf84ab2e8738367a2e0cccaf075a07aa945801ffb3a534f98ee1dcd",
|
|
462
462
|
"agentTarget": "claude-code"
|
|
463
463
|
},
|
|
464
464
|
{
|
|
@@ -483,17 +483,17 @@
|
|
|
483
483
|
},
|
|
484
484
|
{
|
|
485
485
|
"path": "skills/claude-code/examples/acme-discovery/README.md",
|
|
486
|
-
"sha256": "
|
|
486
|
+
"sha256": "c909d5d18a0889b44ce63cb9e02c969243be1bba85454f1181c64809b1160b97",
|
|
487
487
|
"agentTarget": "claude-code"
|
|
488
488
|
},
|
|
489
489
|
{
|
|
490
490
|
"path": "skills/claude-code/examples/acme-discovery/design/UX-Document.md",
|
|
491
|
-
"sha256": "
|
|
491
|
+
"sha256": "186be2e58210f7dc76a3305b5b7b47357236586a8f5648c3a88f5367933dfa56",
|
|
492
492
|
"agentTarget": "claude-code"
|
|
493
493
|
},
|
|
494
494
|
{
|
|
495
495
|
"path": "skills/claude-code/examples/acme-discovery/design/wireframe.html",
|
|
496
|
-
"sha256": "
|
|
496
|
+
"sha256": "6b1098c755c0a4bb8d477cec40b6dbf34e12e236dc6b1a7b438ff069bd84ea18",
|
|
497
497
|
"agentTarget": "claude-code"
|
|
498
498
|
},
|
|
499
499
|
{
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
},
|
|
514
514
|
{
|
|
515
515
|
"path": "skills/claude-code/examples/acme-discovery/src/server.ts",
|
|
516
|
-
"sha256": "
|
|
516
|
+
"sha256": "3a8d1285b375b6e650db95033af0f1cb0c8f5468a6a454e4cbcc8aaae7f6ff9d",
|
|
517
517
|
"agentTarget": "claude-code"
|
|
518
518
|
},
|
|
519
519
|
{
|
|
@@ -538,17 +538,17 @@
|
|
|
538
538
|
},
|
|
539
539
|
{
|
|
540
540
|
"path": "skills/claude-code/examples/acme-tasks/README.md",
|
|
541
|
-
"sha256": "
|
|
541
|
+
"sha256": "ce9f7748d0258f70471f6f8d26771acde6f9025de54f90640f46a8219fba1359",
|
|
542
542
|
"agentTarget": "claude-code"
|
|
543
543
|
},
|
|
544
544
|
{
|
|
545
545
|
"path": "skills/claude-code/examples/acme-tasks/design/UX-Document.md",
|
|
546
|
-
"sha256": "
|
|
546
|
+
"sha256": "9eb6fda14200bb7a2f67a2b2bb8b2e0b7914c98a7da8e272dc2707110f0ef027",
|
|
547
547
|
"agentTarget": "claude-code"
|
|
548
548
|
},
|
|
549
549
|
{
|
|
550
550
|
"path": "skills/claude-code/examples/acme-tasks/design/wireframe.html",
|
|
551
|
-
"sha256": "
|
|
551
|
+
"sha256": "be5a9803eaaff93ee0ceb8afadc5dedf1df0c0712fc32b226c441b6d310af39e",
|
|
552
552
|
"agentTarget": "claude-code"
|
|
553
553
|
},
|
|
554
554
|
{
|
|
@@ -568,7 +568,7 @@
|
|
|
568
568
|
},
|
|
569
569
|
{
|
|
570
570
|
"path": "skills/claude-code/examples/acme-tasks/src/server.ts",
|
|
571
|
-
"sha256": "
|
|
571
|
+
"sha256": "3876daf95af0e55d245e641b5e91a7cdd40bdccb6a4f0bd50c65a462ac98d37d",
|
|
572
572
|
"agentTarget": "claude-code"
|
|
573
573
|
},
|
|
574
574
|
{
|
|
@@ -613,7 +613,7 @@
|
|
|
613
613
|
},
|
|
614
614
|
{
|
|
615
615
|
"path": "skills/claude-code/examples/food-ordering/src/server.ts",
|
|
616
|
-
"sha256": "
|
|
616
|
+
"sha256": "1b1329c99af4798072b69979f1f0861c3b3587b237df46d3cf7b923060f134cb",
|
|
617
617
|
"agentTarget": "claude-code"
|
|
618
618
|
},
|
|
619
619
|
{
|
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
},
|
|
684
684
|
{
|
|
685
685
|
"path": "skills/claude-code/examples/weather/src/server.ts",
|
|
686
|
-
"sha256": "
|
|
686
|
+
"sha256": "95cd3a2ef47be898469d40d109f3fb89ac6e59a34fd8ad600c80dfe2908d4598",
|
|
687
687
|
"agentTarget": "claude-code"
|
|
688
688
|
},
|
|
689
689
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Self-checking, self-updating agent skills for the Noodle Seed CLI. Authored in this repo by @noodle-borg/agent-kit; this is the published, independently-versioned canonical skills artifact the CLI fetches and verifies.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
A Noodle MCP App for **Acme Bistro**, a fictional restaurant. It is the flagship for the **end-to-end
|
|
4
4
|
transaction** pattern: the customer browses the menu and builds the order *in chat*, and the order
|
|
5
5
|
completes in chat — only **payment** hands off, via a signed checkout deep link (the card never touches
|
|
6
|
-
the app). It pairs a `
|
|
6
|
+
the app). It pairs a view-backed `tool` menu/cart with app-only `tool` cart helpers and a model-visible
|
|
7
7
|
`create_checkout` tool backed by `handoff.allowedDomains`.
|
|
8
8
|
|
|
9
9
|
Capability slot: **end-to-end in-chat transaction + payment-only handoff**, plus a worked **design-first**
|
|
@@ -204,7 +204,7 @@ APP: [tool: create_checkout {customer:"Guest",
|
|
|
204
204
|
|
|
205
205
|
## 5. UI Widget Specifications
|
|
206
206
|
|
|
207
|
-
> The widget is authored as a Noodle Seed React `view` (`
|
|
207
|
+
> The widget is authored as a Noodle Seed React `view` (`tool` → `MenuCart`), styled with **vanilla CSS cascade layers** so it inherits the host's light/dark theme and adapts to ChatGPT's surface. Compliance is verified with `noodle check --target chatgpt`.
|
|
208
208
|
|
|
209
209
|
### 5.1 Design System Compliance
|
|
210
210
|
|
|
@@ -250,20 +250,20 @@ Modes deliberately **not** used: no Carousel (a single flat menu doesn't need on
|
|
|
250
250
|
|
|
251
251
|
## 6. Tool Definitions (App Backend)
|
|
252
252
|
|
|
253
|
-
### ★ Tool 1: `show_menu` — `
|
|
253
|
+
### ★ Tool 1: `show_menu` — `tool`
|
|
254
254
|
**Input:** `{ customer?: string = "Guest" }`
|
|
255
255
|
**Output:** `{ status, customer, items[] }` where each item is `{ id, name, price, kind }`.
|
|
256
256
|
**Renders:** the `MenuCart` widget.
|
|
257
257
|
**Annotations:** read-only.
|
|
258
258
|
**Triggers:** any menu / ordering intent ("show me Acme's menu", "order from Acme").
|
|
259
259
|
|
|
260
|
-
### Tool 2: `add_to_cart` — `
|
|
260
|
+
### Tool 2: `add_to_cart` — `tool`
|
|
261
261
|
**Input:** `{ customer?, item: <menu id> = "stone_pizza", quantity?: int ≥1 = 1, notes?: string }`
|
|
262
262
|
**Output:** `{ status, item, quantity, notes }`.
|
|
263
263
|
**Annotations:** local write (non-destructive).
|
|
264
264
|
**Triggers:** natural-language additions ("add two margheritas", "and a lemon tart"). Widget-facing helper — reflects NL selections into the visible cart.
|
|
265
265
|
|
|
266
|
-
### Tool 3: `remove_from_cart` — `
|
|
266
|
+
### Tool 3: `remove_from_cart` — `tool`
|
|
267
267
|
**Input:** `{ customer?, item: <menu id> = "stone_pizza" }`
|
|
268
268
|
**Output:** `{ status, item }`.
|
|
269
269
|
**Annotations:** local write (non-destructive).
|
|
@@ -8,9 +8,9 @@ The app maps to four tools:
|
|
|
8
8
|
|
|
9
9
|
| Tool | Kind | Job |
|
|
10
10
|
|------|------|-----|
|
|
11
|
-
| `show_menu` | `
|
|
12
|
-
| `add_to_cart` | `
|
|
13
|
-
| `remove_from_cart` | `
|
|
11
|
+
| `show_menu` | `tool` (read-only) | Return the menu + render the `MenuCart` widget |
|
|
12
|
+
| `add_to_cart` | `tool` (local write) | Reflect a natural-language addition into the visible cart |
|
|
13
|
+
| `remove_from_cart` | `tool` (local write) | Remove one unit of an item |
|
|
14
14
|
| `create_checkout` | model-visible `tool` (open-link) | Mint the signed, expiring payment link |
|
|
15
15
|
|
|
16
16
|
Menu item IDs are the stable enum: `stone_pizza`, `roast_bowl`, `house_salad`, `lemon_tart`, `sparkling`.
|
|
@@ -496,13 +496,13 @@
|
|
|
496
496
|
<div class="api-panel-header">Browse & Build (Steps 1–3)</div>
|
|
497
497
|
<div class="api-step">
|
|
498
498
|
<div class="api-step-label">Step 1 — Show the menu</div>
|
|
499
|
-
<div class="api-endpoint"><span class="kind read">READ</span><span class="path">show_menu</span><span class="desc">—
|
|
499
|
+
<div class="api-endpoint"><span class="kind read">READ</span><span class="path">show_menu</span><span class="desc">— tool + view. Returns the 5-item menu and renders MenuCart.</span></div>
|
|
500
500
|
<div class="api-note"><strong>Design intent:</strong> the menu is small and static, so it ships in one read — no pagination, no follow-up call. The <code>items[]</code> array is the model's only source of dish names and prices.</div>
|
|
501
501
|
</div>
|
|
502
502
|
<div class="api-step">
|
|
503
503
|
<div class="api-step-label">Steps 2–3 — Build & edit the cart</div>
|
|
504
|
-
<div class="api-endpoint"><span class="kind write">WRITE</span><span class="path">add_to_cart</span><span class="desc">—
|
|
505
|
-
<div class="api-endpoint"><span class="kind write">WRITE</span><span class="path">remove_from_cart</span><span class="desc">—
|
|
504
|
+
<div class="api-endpoint"><span class="kind write">WRITE</span><span class="path">add_to_cart</span><span class="desc">— tool + app visibility. Reflects a natural-language addition (item + quantity) into the visible cart.</span></div>
|
|
505
|
+
<div class="api-endpoint"><span class="kind write">WRITE</span><span class="path">remove_from_cart</span><span class="desc">— tool + app visibility. Removes one unit; the widget's − button calls the same tool.</span></div>
|
|
506
506
|
<div class="api-note"><strong>Natural-language parsing:</strong> "two margheritas and a lemon tart" becomes <code>add_to_cart{item:"stone_pizza",quantity:2}</code> + <code>add_to_cart{item:"lemon_tart",quantity:1}</code> — the model fills the fields; no UI round-trip. The running total is summed live in the widget (React), not in a tool.</div>
|
|
507
507
|
</div>
|
|
508
508
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { annotations, server, tool,
|
|
1
|
+
import { annotations, server, tool, z } from '@noodleseed/one';
|
|
2
2
|
|
|
3
3
|
// Acme Bistro is a fictional restaurant. This app is deliberately END-TO-END: the customer browses the
|
|
4
4
|
// menu and builds the order in chat, and the order completes in chat — only *payment* hands off, via a
|
|
@@ -52,7 +52,7 @@ export default server(
|
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
54
|
[
|
|
55
|
-
|
|
55
|
+
tool('show_menu', {
|
|
56
56
|
description: 'Show the Acme Bistro menu and render the ordering widget.',
|
|
57
57
|
annotations: readOnly,
|
|
58
58
|
input: z.object({ customer: z.string().default('Guest') }),
|
|
@@ -66,8 +66,8 @@ export default server(
|
|
|
66
66
|
customer: input.customer,
|
|
67
67
|
items: menu,
|
|
68
68
|
}),
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
viewTitle: 'Order at Acme Bistro',
|
|
70
|
+
viewDescription: 'Browse the menu, build an order in chat, and hand off to pay.',
|
|
71
71
|
invoking: 'Loading the menu…',
|
|
72
72
|
invoked: 'Menu ready',
|
|
73
73
|
domain: 'https://order.acme.example',
|
|
@@ -82,7 +82,8 @@ export default server(
|
|
|
82
82
|
},
|
|
83
83
|
}),
|
|
84
84
|
// Widget-only cart edits — the model fills the item from natural language ("add two margheritas").
|
|
85
|
-
|
|
85
|
+
tool('add_to_cart', {
|
|
86
|
+
visibility: ['app'],
|
|
86
87
|
description: 'Add a menu item to the Acme Bistro order from the widget.',
|
|
87
88
|
annotations: localWrite,
|
|
88
89
|
input: z.object({
|
|
@@ -104,7 +105,8 @@ export default server(
|
|
|
104
105
|
notes: input.notes,
|
|
105
106
|
}),
|
|
106
107
|
}),
|
|
107
|
-
|
|
108
|
+
tool('remove_from_cart', {
|
|
109
|
+
visibility: ['app'],
|
|
108
110
|
description: 'Remove a menu item from the Acme Bistro order.',
|
|
109
111
|
annotations: localWrite,
|
|
110
112
|
input: z.object({
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
A Noodle MCP App for **Acme Getaways**, a fictional travel brand. It is the flagship for the
|
|
4
4
|
**top-of-funnel discovery → handoff** pattern: discovery and configuration happen inside ChatGPT; the
|
|
5
5
|
booking/transaction happens off-app on Acme's own site, reached through a signed, attributable handoff
|
|
6
|
-
deep link. It pairs a `
|
|
6
|
+
deep link. It pairs a `tool` discovery carousel with a model-visible `create_handoff` tool and
|
|
7
7
|
server-level `handoff.allowedDomains`.
|
|
8
8
|
|
|
9
9
|
Capability slots: top-of-funnel funnel discipline, discovery carousel widget, `create_handoff` deep-link
|
|
@@ -202,7 +202,7 @@ Inside the widget, **Continue on Acme** calls `create_handoff(destination="coral
|
|
|
202
202
|
|
|
203
203
|
## 5. UI Widget Specifications (OpenAI Apps SDK Compliant)
|
|
204
204
|
|
|
205
|
-
> The app has **one** widget, `DiscoveryCarousel`, authored as a React `view` on the `discover_getaways` `
|
|
205
|
+
> The app has **one** widget, `DiscoveryCarousel`, authored as a React `view` on the `discover_getaways` `tool`. It follows the OpenAI Apps SDK UI Guidelines (system fonts, monochrome outlined icons, WCAG AA, ≤2 actions per card, no nested scroll). Styling uses Noodle Seed's server-level `branding` tokens and CSS cascade layers — not app-specific global CSS. Acme's accent teal is restricted to the primary CTA, the logo mark, and the "Shortlisted" state only.
|
|
206
206
|
|
|
207
207
|
### 5.1 Design System Compliance
|
|
208
208
|
|
|
@@ -378,8 +378,8 @@ The demo's arc: *a vague mood → four real, priced, reasoned getaways → one s
|
|
|
378
378
|
```
|
|
379
379
|
ChatGPT ──tool calls──► Noodle Seed runtime (server 'acme_discovery')
|
|
380
380
|
│ app-owned curated catalog (static data)
|
|
381
|
-
├──► discover_getaways (
|
|
382
|
-
├──► shortlist_getaway (
|
|
381
|
+
├──► discover_getaways (tool → DiscoveryCarousel)
|
|
382
|
+
├──► shortlist_getaway (tool, local write)
|
|
383
383
|
├──► create_handoff (open-link → signed Acme deep link)
|
|
384
384
|
└──► React view bundle (DiscoveryCarousel, branding tokens, CSP)
|
|
385
385
|
│
|
|
@@ -585,14 +585,14 @@
|
|
|
585
585
|
<div class="api-step">
|
|
586
586
|
<div class="an">1</div>
|
|
587
587
|
<div class="ac">
|
|
588
|
-
<div class="tool">discover_getaways<span class="kind">
|
|
588
|
+
<div class="tool">discover_getaways<span class="kind">tool + view</span></div>
|
|
589
589
|
<div class="api-note">In <code>{ vibe, month, travelers }</code> → out <code>{ status, vibe, month, travelers, options[] }</code> and renders <code>DiscoveryCarousel</code>. Returns the <strong>full curated catalog verbatim</strong> (4 destinations); the model narrates fit. Host status: "Finding getaways…" → "Getaways ready". <code>read-only</code>.</div>
|
|
590
590
|
</div>
|
|
591
591
|
</div>
|
|
592
592
|
<div class="api-step">
|
|
593
593
|
<div class="an">2</div>
|
|
594
594
|
<div class="ac">
|
|
595
|
-
<div class="tool">shortlist_getaway<span class="kind">
|
|
595
|
+
<div class="tool">shortlist_getaway<span class="kind">tool + app visibility</span></div>
|
|
596
596
|
<div class="api-note">In <code>{ destination, note }</code> → out <code>{ status, destination, note }</code>. Called from inside the carousel when a card's <strong>Shortlist</strong> is tapped; updates widget view-state. <code>local-action</code>, non-destructive — not a booking.</div>
|
|
597
597
|
</div>
|
|
598
598
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { annotations, server, tool,
|
|
1
|
+
import { annotations, server, tool, z } from '@noodleseed/one';
|
|
2
2
|
|
|
3
3
|
// Acme Getaways is a fictional travel brand. This app is deliberately top-of-funnel: discovery and
|
|
4
4
|
// configuration happen inside ChatGPT; the booking/transaction happens off-app on Acme's own site,
|
|
@@ -115,7 +115,7 @@ export default server(
|
|
|
115
115
|
},
|
|
116
116
|
},
|
|
117
117
|
[
|
|
118
|
-
|
|
118
|
+
tool('discover_getaways', {
|
|
119
119
|
description:
|
|
120
120
|
'Suggest Acme Getaways destinations for a vibe and month and render a discovery carousel.',
|
|
121
121
|
annotations: readOnly,
|
|
@@ -136,7 +136,7 @@ export default server(
|
|
|
136
136
|
travelers: input.travelers,
|
|
137
137
|
options: catalog,
|
|
138
138
|
}),
|
|
139
|
-
|
|
139
|
+
viewTitle: 'Discover getaways',
|
|
140
140
|
// ChatGPT host status copy (openai/toolInvocation/*) — required for widget-opening tools.
|
|
141
141
|
invoking: 'Finding getaways…',
|
|
142
142
|
invoked: 'Getaways ready',
|
|
@@ -145,7 +145,7 @@ export default server(
|
|
|
145
145
|
component: 'discovery-carousel',
|
|
146
146
|
entry: './views/discovery-carousel.tsx',
|
|
147
147
|
},
|
|
148
|
-
|
|
148
|
+
viewDescription:
|
|
149
149
|
'A top-of-funnel discovery carousel: pick a destination, then hand off to Acme to book.',
|
|
150
150
|
csp: {
|
|
151
151
|
connectDomains: ['https://acme.example'],
|
|
@@ -180,7 +180,8 @@ export default server(
|
|
|
180
180
|
handoffUrl: `https://book.acme.example/plan?dest=${input.destination}&month=${input.month}&pax=${input.travelers}&src=chatgpt`,
|
|
181
181
|
}),
|
|
182
182
|
}),
|
|
183
|
-
|
|
183
|
+
tool('shortlist_getaway', {
|
|
184
|
+
visibility: ['app'],
|
|
184
185
|
description: 'Record the traveler’s shortlisted destination from the discovery widget.',
|
|
185
186
|
annotations: localWrite,
|
|
186
187
|
input: z.object({
|
|
@@ -7,7 +7,7 @@ in one `TaskList` widget. It shows the "identify and prioritize the flows first,
|
|
|
7
7
|
the `noodle-seed` skill's `references/experience-design.md` teaches.
|
|
8
8
|
|
|
9
9
|
Capability slots: prioritized multi-flow app design, a two-way (read + write) in-chat pattern, a task-list
|
|
10
|
-
widget with `
|
|
10
|
+
widget with `tool` helpers, and a worked **design-first** artifact (the flow spec + wireframe
|
|
11
11
|
below). A real deployment would connect the user's account with the end-user auth pattern — see
|
|
12
12
|
[`../customer-auth/README.md`](../customer-auth/README.md); this example seeds a list so the focus stays
|
|
13
13
|
on the flows.
|
|
@@ -76,5 +76,34 @@ noodle deploy --access owner-only
|
|
|
76
76
|
noodle open
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
## Optional in-product assistant
|
|
80
|
+
|
|
81
|
+
The same task tools can also sit inside Acme's authenticated web app. Add an `assistant` option to this
|
|
82
|
+
server without creating a second tool set:
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
assistant: embeddedAssistant({
|
|
86
|
+
model: openAICompatible({
|
|
87
|
+
baseUrl: variable('ASSISTANT_MODEL_BASE_URL'),
|
|
88
|
+
model: variable('ASSISTANT_MODEL'),
|
|
89
|
+
apiKey: secret('ASSISTANT_MODEL_API_KEY'),
|
|
90
|
+
}),
|
|
91
|
+
allowedOrigins: ['https://tasks.example.com'],
|
|
92
|
+
appearance: {
|
|
93
|
+
brand: { name: 'Acme Tasks Assistant' },
|
|
94
|
+
theme: {
|
|
95
|
+
defaultMode: 'auto',
|
|
96
|
+
light: { accent: '#3157D5' },
|
|
97
|
+
dark: { accent: '#9FB4FF' },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
}),
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The customer backend exchanges its authenticated user through `@noodleseed/assistant/server`; the browser
|
|
104
|
+
uses the Web Component or React wrapper and never receives the embed client or model secret. Validate with
|
|
105
|
+
`noodle check --target embedded-assistant`, then create the backend credential with
|
|
106
|
+
`noodle assistant clients create` after deployment.
|
|
107
|
+
|
|
79
108
|
This example has no connector secrets and does not include tokens, caller-key mechanisms, or
|
|
80
109
|
`.env.noodle` values. All tasks are fictional seed data.
|