@noodleseed/agent-kit 0.35.0 → 0.37.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 +75 -15
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +1 -1
- package/skills/claude-code/examples/customer-auth/README.md +7 -0
- package/skills/claude-code/examples/gmail-multi-account/README.md +46 -0
- package/skills/claude-code/examples/gmail-multi-account/noodle.json +4 -0
- package/skills/claude-code/examples/gmail-multi-account/package.json +16 -0
- package/skills/claude-code/examples/gmail-multi-account/src/server.ts +485 -0
- package/skills/claude-code/examples/gmail-multi-account/test/server.test.ts +271 -0
- package/skills/claude-code/examples/gmail-multi-account/vitest.config.ts +28 -0
- package/skills/claude-code/references/authoring-workflow.md +3 -1
- package/skills/claude-code/references/compile-errors.md +4 -0
- package/skills/claude-code/references/embedded-assistant.md +2 -1
- package/skills/claude-code/references/examples.md +1 -0
- package/skills/claude-code/references/sdk-surface.md +6 -0
- package/skills/codex/SKILL.md +1 -1
- package/skills/codex/examples/customer-auth/README.md +7 -0
- package/skills/codex/examples/gmail-multi-account/README.md +46 -0
- package/skills/codex/examples/gmail-multi-account/noodle.json +4 -0
- package/skills/codex/examples/gmail-multi-account/package.json +16 -0
- package/skills/codex/examples/gmail-multi-account/src/server.ts +485 -0
- package/skills/codex/examples/gmail-multi-account/test/server.test.ts +271 -0
- package/skills/codex/examples/gmail-multi-account/vitest.config.ts +28 -0
- package/skills/codex/references/authoring-workflow.md +3 -1
- package/skills/codex/references/compile-errors.md +4 -0
- package/skills/codex/references/embedded-assistant.md +2 -1
- package/skills/codex/references/examples.md +1 -0
- package/skills/codex/references/sdk-surface.md +6 -0
package/manifest.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"packageVersion": "0.
|
|
2
|
+
"packageVersion": "0.37.0",
|
|
3
3
|
"files": [
|
|
4
4
|
{
|
|
5
5
|
"path": "skills/codex/SKILL.md",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "f2ddee1369a4855613526eb5368ce0eae364f85efa1067639050695bf4bbfa49",
|
|
7
7
|
"agentTarget": "codex"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"path": "skills/codex/references/sdk-surface.md",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "ff74db13656d8ca9c932225eb841ad76206e41d72253c3897f109c0f9710c5ea",
|
|
12
12
|
"agentTarget": "codex"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "skills/codex/references/compile-errors.md",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "786dcbb3a06b4f7826726ea59b76515b9907d31c2c3dd4e6f81198ad85ec9184",
|
|
27
27
|
"agentTarget": "codex"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "skills/codex/references/authoring-workflow.md",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "9f7c6fda964d2c54aca10141332c95f82dcaae6d53f6ae32f120e9dc8b0224a0",
|
|
37
37
|
"agentTarget": "codex"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"path": "skills/codex/references/embedded-assistant.md",
|
|
41
|
-
"sha256": "
|
|
41
|
+
"sha256": "7fc7dc9fa345c9e7f616d66d230db350a868db8e7fccb0b807354da218e85e0a",
|
|
42
42
|
"agentTarget": "codex"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
"path": "skills/codex/references/examples.md",
|
|
101
|
-
"sha256": "
|
|
101
|
+
"sha256": "98a1ce82b038000798240b7ca4ca0ce2c43a4e6589fd6b59590afe30c102aa56",
|
|
102
102
|
"agentTarget": "codex"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
},
|
|
279
279
|
{
|
|
280
280
|
"path": "skills/codex/examples/customer-auth/README.md",
|
|
281
|
-
"sha256": "
|
|
281
|
+
"sha256": "e836885125aa31a5586509858ae5ebfabd23c6d5c931d1abd7cb62521a3fbc49",
|
|
282
282
|
"agentTarget": "codex"
|
|
283
283
|
},
|
|
284
284
|
{
|
|
@@ -351,6 +351,36 @@
|
|
|
351
351
|
"sha256": "d1c579d0987aeb67fc08a351f81c619eb02cadbd664ed77b8bab00573acc768a",
|
|
352
352
|
"agentTarget": "codex"
|
|
353
353
|
},
|
|
354
|
+
{
|
|
355
|
+
"path": "skills/codex/examples/gmail-multi-account/README.md",
|
|
356
|
+
"sha256": "eeee6f15435702d24131f7d7e64b05e41fe65cd467bd7b37d97a0c6aa2af46a6",
|
|
357
|
+
"agentTarget": "codex"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"path": "skills/codex/examples/gmail-multi-account/noodle.json",
|
|
361
|
+
"sha256": "9f3c9cb28f0ff26757e022fecdc9bcaa008e77bbccc6949df0cc879af5ebf166",
|
|
362
|
+
"agentTarget": "codex"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"path": "skills/codex/examples/gmail-multi-account/package.json",
|
|
366
|
+
"sha256": "d0fb8fd281954915e105d1949e079ff9919e04204da520fd7b41c6320750e467",
|
|
367
|
+
"agentTarget": "codex"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"path": "skills/codex/examples/gmail-multi-account/src/server.ts",
|
|
371
|
+
"sha256": "2bb185b724ea69b02be94b2694a6864ee878065889973b3b52ad9293eab3e88e",
|
|
372
|
+
"agentTarget": "codex"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"path": "skills/codex/examples/gmail-multi-account/test/server.test.ts",
|
|
376
|
+
"sha256": "b248a6fbda6e7d30aadd316e4e244aff963ca4a31fcd08977675ef6653ad0ff5",
|
|
377
|
+
"agentTarget": "codex"
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"path": "skills/codex/examples/gmail-multi-account/vitest.config.ts",
|
|
381
|
+
"sha256": "29acd34abc3452647c912d06b55a27f6600a4fe42b68d94b3ea822d34bfe3842",
|
|
382
|
+
"agentTarget": "codex"
|
|
383
|
+
},
|
|
354
384
|
{
|
|
355
385
|
"path": "skills/codex/examples/hello/README.md",
|
|
356
386
|
"sha256": "82fbbaa49e6eae064fffb4ea59a45a17cf350075780ff3e386b92b7f72a8201d",
|
|
@@ -403,12 +433,12 @@
|
|
|
403
433
|
},
|
|
404
434
|
{
|
|
405
435
|
"path": "skills/claude-code/SKILL.md",
|
|
406
|
-
"sha256": "
|
|
436
|
+
"sha256": "f2ddee1369a4855613526eb5368ce0eae364f85efa1067639050695bf4bbfa49",
|
|
407
437
|
"agentTarget": "claude-code"
|
|
408
438
|
},
|
|
409
439
|
{
|
|
410
440
|
"path": "skills/claude-code/references/sdk-surface.md",
|
|
411
|
-
"sha256": "
|
|
441
|
+
"sha256": "ff74db13656d8ca9c932225eb841ad76206e41d72253c3897f109c0f9710c5ea",
|
|
412
442
|
"agentTarget": "claude-code"
|
|
413
443
|
},
|
|
414
444
|
{
|
|
@@ -423,7 +453,7 @@
|
|
|
423
453
|
},
|
|
424
454
|
{
|
|
425
455
|
"path": "skills/claude-code/references/compile-errors.md",
|
|
426
|
-
"sha256": "
|
|
456
|
+
"sha256": "786dcbb3a06b4f7826726ea59b76515b9907d31c2c3dd4e6f81198ad85ec9184",
|
|
427
457
|
"agentTarget": "claude-code"
|
|
428
458
|
},
|
|
429
459
|
{
|
|
@@ -433,12 +463,12 @@
|
|
|
433
463
|
},
|
|
434
464
|
{
|
|
435
465
|
"path": "skills/claude-code/references/authoring-workflow.md",
|
|
436
|
-
"sha256": "
|
|
466
|
+
"sha256": "9f7c6fda964d2c54aca10141332c95f82dcaae6d53f6ae32f120e9dc8b0224a0",
|
|
437
467
|
"agentTarget": "claude-code"
|
|
438
468
|
},
|
|
439
469
|
{
|
|
440
470
|
"path": "skills/claude-code/references/embedded-assistant.md",
|
|
441
|
-
"sha256": "
|
|
471
|
+
"sha256": "7fc7dc9fa345c9e7f616d66d230db350a868db8e7fccb0b807354da218e85e0a",
|
|
442
472
|
"agentTarget": "claude-code"
|
|
443
473
|
},
|
|
444
474
|
{
|
|
@@ -498,7 +528,7 @@
|
|
|
498
528
|
},
|
|
499
529
|
{
|
|
500
530
|
"path": "skills/claude-code/references/examples.md",
|
|
501
|
-
"sha256": "
|
|
531
|
+
"sha256": "98a1ce82b038000798240b7ca4ca0ce2c43a4e6589fd6b59590afe30c102aa56",
|
|
502
532
|
"agentTarget": "claude-code"
|
|
503
533
|
},
|
|
504
534
|
{
|
|
@@ -678,7 +708,7 @@
|
|
|
678
708
|
},
|
|
679
709
|
{
|
|
680
710
|
"path": "skills/claude-code/examples/customer-auth/README.md",
|
|
681
|
-
"sha256": "
|
|
711
|
+
"sha256": "e836885125aa31a5586509858ae5ebfabd23c6d5c931d1abd7cb62521a3fbc49",
|
|
682
712
|
"agentTarget": "claude-code"
|
|
683
713
|
},
|
|
684
714
|
{
|
|
@@ -751,6 +781,36 @@
|
|
|
751
781
|
"sha256": "d1c579d0987aeb67fc08a351f81c619eb02cadbd664ed77b8bab00573acc768a",
|
|
752
782
|
"agentTarget": "claude-code"
|
|
753
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"path": "skills/claude-code/examples/gmail-multi-account/README.md",
|
|
786
|
+
"sha256": "eeee6f15435702d24131f7d7e64b05e41fe65cd467bd7b37d97a0c6aa2af46a6",
|
|
787
|
+
"agentTarget": "claude-code"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"path": "skills/claude-code/examples/gmail-multi-account/noodle.json",
|
|
791
|
+
"sha256": "9f3c9cb28f0ff26757e022fecdc9bcaa008e77bbccc6949df0cc879af5ebf166",
|
|
792
|
+
"agentTarget": "claude-code"
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"path": "skills/claude-code/examples/gmail-multi-account/package.json",
|
|
796
|
+
"sha256": "d0fb8fd281954915e105d1949e079ff9919e04204da520fd7b41c6320750e467",
|
|
797
|
+
"agentTarget": "claude-code"
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"path": "skills/claude-code/examples/gmail-multi-account/src/server.ts",
|
|
801
|
+
"sha256": "2bb185b724ea69b02be94b2694a6864ee878065889973b3b52ad9293eab3e88e",
|
|
802
|
+
"agentTarget": "claude-code"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"path": "skills/claude-code/examples/gmail-multi-account/test/server.test.ts",
|
|
806
|
+
"sha256": "b248a6fbda6e7d30aadd316e4e244aff963ca4a31fcd08977675ef6653ad0ff5",
|
|
807
|
+
"agentTarget": "claude-code"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"path": "skills/claude-code/examples/gmail-multi-account/vitest.config.ts",
|
|
811
|
+
"sha256": "29acd34abc3452647c912d06b55a27f6600a4fe42b68d94b3ea822d34bfe3842",
|
|
812
|
+
"agentTarget": "claude-code"
|
|
813
|
+
},
|
|
754
814
|
{
|
|
755
815
|
"path": "skills/claude-code/examples/hello/README.md",
|
|
756
816
|
"sha256": "82fbbaa49e6eae064fffb4ea59a45a17cf350075780ff3e386b92b7f72a8201d",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.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 @@ name: noodle-seed
|
|
|
3
3
|
description: Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.37.0 hash:75dd0f6f85b04858 -->
|
|
7
7
|
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
@@ -29,6 +29,13 @@ callback.
|
|
|
29
29
|
|
|
30
30
|
## How delegated customer credentials are used
|
|
31
31
|
|
|
32
|
+
This flagship uses the legacy Firebase provider bridge because it is runnable today. That is distinct from
|
|
33
|
+
Core-v2 account-selecting connector aliases: those declare catalog `credentialProfiles` and bind each alias
|
|
34
|
+
with `bind(connector, { profile, connection })`. Hosted bound `managedSecret(...)` connections are runnable;
|
|
35
|
+
bound `externalExchange()` and `clientCredentials(...)` currently compile as portable metadata but fail
|
|
36
|
+
closed before secret or network access until their provider slice lands. Do not replace this example's
|
|
37
|
+
working delegated-session-cookie path with either unsupported bound exchange source.
|
|
38
|
+
|
|
32
39
|
The example has two declarations that work together:
|
|
33
40
|
|
|
34
41
|
```ts
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Gmail multi-account automation
|
|
2
|
+
|
|
3
|
+
**Owns:** The flagship proof that one reusable connector can be bound to multiple independently
|
|
4
|
+
authenticated accounts inside one MCP server.
|
|
5
|
+
|
|
6
|
+
This fictional example binds `gmailConnector()` twice through separate `externalExchange()` logical
|
|
7
|
+
connections. Public tools always accept `accounts: [...]`; reads accept either account or the canonical
|
|
8
|
+
personal-then-work pair, while mutations accept exactly one account and require runtime confirmation.
|
|
9
|
+
|
|
10
|
+
Capability slot: **reusable connector + independently authenticated multi-account bindings**. It is distinct
|
|
11
|
+
from `customer-auth`, which owns authentication of the MCP caller rather than downstream connector accounts.
|
|
12
|
+
|
|
13
|
+
The labels `personal@example.com` and `work@example.com` are static display labels, not provider identities.
|
|
14
|
+
The deployment-owned credential provider maps each logical connection to its real Google authorization.
|
|
15
|
+
No Google client, provider account id, token, or real email address belongs in this project.
|
|
16
|
+
|
|
17
|
+
## Safety and API boundary
|
|
18
|
+
|
|
19
|
+
- Search, message/thread reads, draft reads, and vacation-setting reads may target one or both accounts.
|
|
20
|
+
- Draft creation/update/send, label changes, archive, raw send, trash, and vacation updates target one account.
|
|
21
|
+
- Every mutation is prepared against the exact selected binding and must be confirmed before dispatch.
|
|
22
|
+
- `send_message.raw` and draft `raw` are RFC 2822 MIME bytes encoded with base64url. This example does not
|
|
23
|
+
pretend that `to`/`subject`/`body` strings are sufficient to encode Unicode MIME correctly.
|
|
24
|
+
- Vacation `startTime`/`endTime` schemas enforce only digit-shaped 1–19 character epoch-millisecond strings.
|
|
25
|
+
When both are supplied, Gmail's backend remains authoritative for the required `startTime < endTime`
|
|
26
|
+
relationship; this example does not claim cross-field JSON Schema validation.
|
|
27
|
+
- Trash is reversible. Permanent message/thread/draft deletion, delegation, forwarding/sharing settings,
|
|
28
|
+
and unrestricted raw HTTP requests are intentionally absent.
|
|
29
|
+
|
|
30
|
+
## Local checks
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
noodle validate
|
|
34
|
+
noodle test
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The committed tests compile hermetic fake connector responses. They never contact Gmail or load OAuth
|
|
38
|
+
credentials. A real deployment additionally needs an operator-provided external credential exchange
|
|
39
|
+
endpoint for each logical connection.
|
|
40
|
+
|
|
41
|
+
## Personal automation skill
|
|
42
|
+
|
|
43
|
+
The source skill is [`skills/personal-email-automation/SKILL.md`](skills/personal-email-automation/SKILL.md).
|
|
44
|
+
Validate it with the standard skill validator before distribution. The source skill is shipped as part of
|
|
45
|
+
this example; canonical export of an app and its skill as an installable Codex plugin remains roadmap work
|
|
46
|
+
and is not currently provided by Noodle Seed.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gmail-multi-account",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "vitest run",
|
|
8
|
+
"validate": "noodle validate",
|
|
9
|
+
"dev": "noodle dev",
|
|
10
|
+
"deploy": "noodle deploy"
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@noodleseed/one": "latest",
|
|
14
|
+
"vitest": "latest"
|
|
15
|
+
}
|
|
16
|
+
}
|