@noodleseed/agent-kit 0.27.0 → 0.28.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 +9 -9
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +1 -1
- package/skills/claude-code/examples/acme-tasks/src/server.ts +11 -7
- package/skills/claude-code/examples/customer-auth/src/server.ts +5 -3
- package/skills/claude-code/references/embedded-assistant.md +4 -2
- package/skills/codex/SKILL.md +1 -1
- package/skills/codex/examples/acme-tasks/src/server.ts +11 -7
- package/skills/codex/examples/customer-auth/src/server.ts +5 -3
- package/skills/codex/references/embedded-assistant.md +4 -2
package/manifest.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"packageVersion": "0.
|
|
2
|
+
"packageVersion": "0.28.0",
|
|
3
3
|
"files": [
|
|
4
4
|
{
|
|
5
5
|
"path": "skills/codex/SKILL.md",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "46a6304e7263dc8d466e8a63cbfa8e236e81c12d32ac248d75114ea07696baae",
|
|
7
7
|
"agentTarget": "codex"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "skills/codex/references/embedded-assistant.md",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "16ef1df5ad641f6b36fa9530f920c3588f77f929c4d609fe4aeffd0dc11abc94",
|
|
37
37
|
"agentTarget": "codex"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
"path": "skills/codex/examples/acme-tasks/src/server.ts",
|
|
231
|
-
"sha256": "
|
|
231
|
+
"sha256": "514cca681ffd5f686364cb2d3b8ab27c9145b1aa1e2bf22d665fa1935ac55ce6",
|
|
232
232
|
"agentTarget": "codex"
|
|
233
233
|
},
|
|
234
234
|
{
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
},
|
|
269
269
|
{
|
|
270
270
|
"path": "skills/codex/examples/customer-auth/src/server.ts",
|
|
271
|
-
"sha256": "
|
|
271
|
+
"sha256": "cbc7647ad0c67860020f9b5a7ebbb1ac8ca817d619184821fbcbf7970291f05a",
|
|
272
272
|
"agentTarget": "codex"
|
|
273
273
|
},
|
|
274
274
|
{
|
|
@@ -378,7 +378,7 @@
|
|
|
378
378
|
},
|
|
379
379
|
{
|
|
380
380
|
"path": "skills/claude-code/SKILL.md",
|
|
381
|
-
"sha256": "
|
|
381
|
+
"sha256": "0c0dd5641e72b641a87e4814eb6d0b8e46e3c9bb23abfe213763a2a36777f6d5",
|
|
382
382
|
"agentTarget": "claude-code"
|
|
383
383
|
},
|
|
384
384
|
{
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
},
|
|
409
409
|
{
|
|
410
410
|
"path": "skills/claude-code/references/embedded-assistant.md",
|
|
411
|
-
"sha256": "
|
|
411
|
+
"sha256": "16ef1df5ad641f6b36fa9530f920c3588f77f929c4d609fe4aeffd0dc11abc94",
|
|
412
412
|
"agentTarget": "claude-code"
|
|
413
413
|
},
|
|
414
414
|
{
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
},
|
|
604
604
|
{
|
|
605
605
|
"path": "skills/claude-code/examples/acme-tasks/src/server.ts",
|
|
606
|
-
"sha256": "
|
|
606
|
+
"sha256": "514cca681ffd5f686364cb2d3b8ab27c9145b1aa1e2bf22d665fa1935ac55ce6",
|
|
607
607
|
"agentTarget": "claude-code"
|
|
608
608
|
},
|
|
609
609
|
{
|
|
@@ -643,7 +643,7 @@
|
|
|
643
643
|
},
|
|
644
644
|
{
|
|
645
645
|
"path": "skills/claude-code/examples/customer-auth/src/server.ts",
|
|
646
|
-
"sha256": "
|
|
646
|
+
"sha256": "cbc7647ad0c67860020f9b5a7ebbb1ac8ca817d619184821fbcbf7970291f05a",
|
|
647
647
|
"agentTarget": "claude-code"
|
|
648
648
|
},
|
|
649
649
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.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",
|
|
@@ -55,6 +55,7 @@ export default server(
|
|
|
55
55
|
[
|
|
56
56
|
// Flow 2 — Prioritize / Today: render the list so the human triages and the model can speak to it.
|
|
57
57
|
tool('list_today', {
|
|
58
|
+
title: 'Show today’s tasks',
|
|
58
59
|
description: 'Show today’s Acme Tasks and render the task-list widget.',
|
|
59
60
|
annotations: readOnly,
|
|
60
61
|
input: z.object({ focus: z.string().default('today') }),
|
|
@@ -86,11 +87,12 @@ export default server(
|
|
|
86
87
|
}),
|
|
87
88
|
// Flow 1 — Capture: add a task from natural language ("remind me to email the vendor").
|
|
88
89
|
tool('add_task', {
|
|
90
|
+
title: 'Add a task',
|
|
89
91
|
description: 'Capture a new Acme task with a title and priority.',
|
|
90
92
|
annotations: localWrite,
|
|
91
93
|
input: z.object({
|
|
92
|
-
title: z.string(),
|
|
93
|
-
priority: priority.default('medium'),
|
|
94
|
+
title: z.string().meta({ title: 'Task' }),
|
|
95
|
+
priority: priority.default('medium').meta({ title: 'Priority' }),
|
|
94
96
|
}),
|
|
95
97
|
output: z.object({
|
|
96
98
|
status: z.string(),
|
|
@@ -105,11 +107,12 @@ export default server(
|
|
|
105
107
|
}),
|
|
106
108
|
// Flow 3 — Complete: mark a task done. Model-visible so the model can complete on request.
|
|
107
109
|
tool('complete_task', {
|
|
108
|
-
|
|
110
|
+
title: 'Complete task',
|
|
111
|
+
description: 'This will mark the selected task complete for everyone using Acme Tasks.',
|
|
109
112
|
annotations: confirmedWrite,
|
|
110
113
|
input: z.object({
|
|
111
|
-
task: z.string(),
|
|
112
|
-
title: z.string().min(1),
|
|
114
|
+
task: z.string().meta({ title: 'Task ID' }),
|
|
115
|
+
title: z.string().min(1).meta({ title: 'Task' }),
|
|
113
116
|
}),
|
|
114
117
|
output: z.object({
|
|
115
118
|
status: z.string(),
|
|
@@ -122,12 +125,13 @@ export default server(
|
|
|
122
125
|
}),
|
|
123
126
|
// Flow 2 helper (widget-only): re-prioritize a task from the list widget.
|
|
124
127
|
tool('set_priority', {
|
|
128
|
+
title: 'Change task priority',
|
|
125
129
|
visibility: ['app'],
|
|
126
130
|
description: 'Re-prioritize a task from the list widget.',
|
|
127
131
|
annotations: widgetWrite,
|
|
128
132
|
input: z.object({
|
|
129
|
-
task: z.string(),
|
|
130
|
-
priority,
|
|
133
|
+
task: z.string().meta({ title: 'Task ID' }),
|
|
134
|
+
priority: priority.meta({ title: 'New priority' }),
|
|
131
135
|
}),
|
|
132
136
|
output: z.object({
|
|
133
137
|
status: z.string(),
|
|
@@ -115,11 +115,12 @@ export default server(
|
|
|
115
115
|
},
|
|
116
116
|
[
|
|
117
117
|
tool('list_org_apps', {
|
|
118
|
+
title: 'List organization apps',
|
|
118
119
|
description: 'List NoodleSeed.com apps for an organization from the dev app API.',
|
|
119
120
|
input: z.object({
|
|
120
|
-
org_id: z.string(),
|
|
121
|
-
skip: z.number().int().min(0).optional(),
|
|
122
|
-
limit: z.number().int().min(1).max(100).optional(),
|
|
121
|
+
org_id: z.string().meta({ title: 'Organization' }),
|
|
122
|
+
skip: z.number().int().min(0).optional().meta({ title: 'Starting item' }),
|
|
123
|
+
limit: z.number().int().min(1).max(100).optional().meta({ title: 'Maximum results' }),
|
|
123
124
|
}),
|
|
124
125
|
output: z.object({
|
|
125
126
|
result: z.unknown(),
|
|
@@ -137,6 +138,7 @@ export default server(
|
|
|
137
138
|
},
|
|
138
139
|
}),
|
|
139
140
|
tool('list_my_organizations', {
|
|
141
|
+
title: 'List my organizations',
|
|
140
142
|
description: 'List the NoodleSeed.com organizations the signed-in customer belongs to.',
|
|
141
143
|
contextProvider: true,
|
|
142
144
|
input: z.object({}),
|
|
@@ -59,7 +59,7 @@ Use `noodle commands --json` before proposing command flags; do not invent flags
|
|
|
59
59
|
|
|
60
60
|
## Customize the presentation
|
|
61
61
|
|
|
62
|
-
Keep identity and semantic light/dark colors in the one server-level `branding` block. Put assistant-only structure in the bounded `presentation` object; it accepts curated primitives rather than raw HTML, CSS, SVG, class names, or callbacks:
|
|
62
|
+
Keep portable identity and semantic light/dark colors in the one server-level `branding` block. Put assistant-only structure in the bounded `presentation` object; it accepts curated primitives rather than raw HTML, CSS, SVG, class names, or callbacks:
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
65
|
assistant: embeddedAssistant({
|
|
@@ -82,7 +82,9 @@ assistant: embeddedAssistant({
|
|
|
82
82
|
|
|
83
83
|
The Atlas-style product treatment above is the maximum deployment-configurable presentation. The bounded surface covers panel treatment, launcher icon/size/session pulse, header mark/status badge, composer controls, and message treatment; it does not accept custom header actions, structured empty-state layouts, footers, spectacle variants/effects, or tenant code.
|
|
84
84
|
|
|
85
|
-
Omitted fields retain the
|
|
85
|
+
Omitted fields retain the quiet premium baseline. For exact application-owned color roles, pass the typed React `appearance={{ light: { panel: { surface, text, border }, composer: {...}, confirmation: {...}, primaryButton: {...} }, dark: {...} }}` prop or assign the same object to `element.appearance`. It covers canvas, panel, header, messages, composer, suggestions, confirmation, buttons, launcher, code, and the MCP App frame. Exact colors are preserved and low contrast emits `assistant-appearance-warning`. Precedence is host appearance object, host slots/public `--ns-assistant-*` variables, deployed semantic presentation, then defaults. Prefer `server.ts` configuration first so every embedding app receives the same assistant after redeploy.
|
|
86
|
+
|
|
87
|
+
Give every business action a portable `tool(..., { title: "Complete task", description: "This will mark the task complete for everyone.", input: z.object({ task: z.string().meta({ title: "Task" }) }) })` title. The standard confirmation uses the tool title/description plus schema field `title`, `description`, and `format`; it shows Confirm and Don't proceed and keeps technical action details secondary. Do not put JSON or implementation names in business-facing copy.
|
|
86
88
|
|
|
87
89
|
## Configure and deploy
|
|
88
90
|
|
package/skills/codex/SKILL.md
CHANGED
|
@@ -55,6 +55,7 @@ export default server(
|
|
|
55
55
|
[
|
|
56
56
|
// Flow 2 — Prioritize / Today: render the list so the human triages and the model can speak to it.
|
|
57
57
|
tool('list_today', {
|
|
58
|
+
title: 'Show today’s tasks',
|
|
58
59
|
description: 'Show today’s Acme Tasks and render the task-list widget.',
|
|
59
60
|
annotations: readOnly,
|
|
60
61
|
input: z.object({ focus: z.string().default('today') }),
|
|
@@ -86,11 +87,12 @@ export default server(
|
|
|
86
87
|
}),
|
|
87
88
|
// Flow 1 — Capture: add a task from natural language ("remind me to email the vendor").
|
|
88
89
|
tool('add_task', {
|
|
90
|
+
title: 'Add a task',
|
|
89
91
|
description: 'Capture a new Acme task with a title and priority.',
|
|
90
92
|
annotations: localWrite,
|
|
91
93
|
input: z.object({
|
|
92
|
-
title: z.string(),
|
|
93
|
-
priority: priority.default('medium'),
|
|
94
|
+
title: z.string().meta({ title: 'Task' }),
|
|
95
|
+
priority: priority.default('medium').meta({ title: 'Priority' }),
|
|
94
96
|
}),
|
|
95
97
|
output: z.object({
|
|
96
98
|
status: z.string(),
|
|
@@ -105,11 +107,12 @@ export default server(
|
|
|
105
107
|
}),
|
|
106
108
|
// Flow 3 — Complete: mark a task done. Model-visible so the model can complete on request.
|
|
107
109
|
tool('complete_task', {
|
|
108
|
-
|
|
110
|
+
title: 'Complete task',
|
|
111
|
+
description: 'This will mark the selected task complete for everyone using Acme Tasks.',
|
|
109
112
|
annotations: confirmedWrite,
|
|
110
113
|
input: z.object({
|
|
111
|
-
task: z.string(),
|
|
112
|
-
title: z.string().min(1),
|
|
114
|
+
task: z.string().meta({ title: 'Task ID' }),
|
|
115
|
+
title: z.string().min(1).meta({ title: 'Task' }),
|
|
113
116
|
}),
|
|
114
117
|
output: z.object({
|
|
115
118
|
status: z.string(),
|
|
@@ -122,12 +125,13 @@ export default server(
|
|
|
122
125
|
}),
|
|
123
126
|
// Flow 2 helper (widget-only): re-prioritize a task from the list widget.
|
|
124
127
|
tool('set_priority', {
|
|
128
|
+
title: 'Change task priority',
|
|
125
129
|
visibility: ['app'],
|
|
126
130
|
description: 'Re-prioritize a task from the list widget.',
|
|
127
131
|
annotations: widgetWrite,
|
|
128
132
|
input: z.object({
|
|
129
|
-
task: z.string(),
|
|
130
|
-
priority,
|
|
133
|
+
task: z.string().meta({ title: 'Task ID' }),
|
|
134
|
+
priority: priority.meta({ title: 'New priority' }),
|
|
131
135
|
}),
|
|
132
136
|
output: z.object({
|
|
133
137
|
status: z.string(),
|
|
@@ -115,11 +115,12 @@ export default server(
|
|
|
115
115
|
},
|
|
116
116
|
[
|
|
117
117
|
tool('list_org_apps', {
|
|
118
|
+
title: 'List organization apps',
|
|
118
119
|
description: 'List NoodleSeed.com apps for an organization from the dev app API.',
|
|
119
120
|
input: z.object({
|
|
120
|
-
org_id: z.string(),
|
|
121
|
-
skip: z.number().int().min(0).optional(),
|
|
122
|
-
limit: z.number().int().min(1).max(100).optional(),
|
|
121
|
+
org_id: z.string().meta({ title: 'Organization' }),
|
|
122
|
+
skip: z.number().int().min(0).optional().meta({ title: 'Starting item' }),
|
|
123
|
+
limit: z.number().int().min(1).max(100).optional().meta({ title: 'Maximum results' }),
|
|
123
124
|
}),
|
|
124
125
|
output: z.object({
|
|
125
126
|
result: z.unknown(),
|
|
@@ -137,6 +138,7 @@ export default server(
|
|
|
137
138
|
},
|
|
138
139
|
}),
|
|
139
140
|
tool('list_my_organizations', {
|
|
141
|
+
title: 'List my organizations',
|
|
140
142
|
description: 'List the NoodleSeed.com organizations the signed-in customer belongs to.',
|
|
141
143
|
contextProvider: true,
|
|
142
144
|
input: z.object({}),
|
|
@@ -59,7 +59,7 @@ Use `noodle commands --json` before proposing command flags; do not invent flags
|
|
|
59
59
|
|
|
60
60
|
## Customize the presentation
|
|
61
61
|
|
|
62
|
-
Keep identity and semantic light/dark colors in the one server-level `branding` block. Put assistant-only structure in the bounded `presentation` object; it accepts curated primitives rather than raw HTML, CSS, SVG, class names, or callbacks:
|
|
62
|
+
Keep portable identity and semantic light/dark colors in the one server-level `branding` block. Put assistant-only structure in the bounded `presentation` object; it accepts curated primitives rather than raw HTML, CSS, SVG, class names, or callbacks:
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
65
|
assistant: embeddedAssistant({
|
|
@@ -82,7 +82,9 @@ assistant: embeddedAssistant({
|
|
|
82
82
|
|
|
83
83
|
The Atlas-style product treatment above is the maximum deployment-configurable presentation. The bounded surface covers panel treatment, launcher icon/size/session pulse, header mark/status badge, composer controls, and message treatment; it does not accept custom header actions, structured empty-state layouts, footers, spectacle variants/effects, or tenant code.
|
|
84
84
|
|
|
85
|
-
Omitted fields retain the
|
|
85
|
+
Omitted fields retain the quiet premium baseline. For exact application-owned color roles, pass the typed React `appearance={{ light: { panel: { surface, text, border }, composer: {...}, confirmation: {...}, primaryButton: {...} }, dark: {...} }}` prop or assign the same object to `element.appearance`. It covers canvas, panel, header, messages, composer, suggestions, confirmation, buttons, launcher, code, and the MCP App frame. Exact colors are preserved and low contrast emits `assistant-appearance-warning`. Precedence is host appearance object, host slots/public `--ns-assistant-*` variables, deployed semantic presentation, then defaults. Prefer `server.ts` configuration first so every embedding app receives the same assistant after redeploy.
|
|
86
|
+
|
|
87
|
+
Give every business action a portable `tool(..., { title: "Complete task", description: "This will mark the task complete for everyone.", input: z.object({ task: z.string().meta({ title: "Task" }) }) })` title. The standard confirmation uses the tool title/description plus schema field `title`, `description`, and `format`; it shows Confirm and Don't proceed and keeps technical action details secondary. Do not put JSON or implementation names in business-facing copy.
|
|
86
88
|
|
|
87
89
|
## Configure and deploy
|
|
88
90
|
|