@noodleseed/agent-kit 0.33.0 → 0.34.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/README.md +2 -4
- package/manifest.json +17 -17
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +4 -4
- package/skills/claude-code/references/authoring-workflow.md +2 -2
- package/skills/claude-code/references/cli-commands.md +2 -12
- package/skills/claude-code/references/compile-errors.md +2 -2
- package/skills/claude-code/references/deploy-and-ops.md +0 -5
- package/skills/claude-code/references/embedded-assistant.md +3 -3
- package/skills/claude-code/references/feedback.md +15 -7
- package/skills/claude-code/references/widgets-and-apps.md +1 -1
- package/skills/codex/SKILL.md +4 -4
- package/skills/codex/references/authoring-workflow.md +2 -2
- package/skills/codex/references/cli-commands.md +2 -12
- package/skills/codex/references/compile-errors.md +2 -2
- package/skills/codex/references/deploy-and-ops.md +0 -5
- package/skills/codex/references/embedded-assistant.md +3 -3
- package/skills/codex/references/feedback.md +15 -7
- package/skills/codex/references/widgets-and-apps.md +1 -1
package/README.md
CHANGED
|
@@ -8,10 +8,8 @@ into a project's `.agents/` and `.claude/` skill directories via `noodle agents
|
|
|
8
8
|
|
|
9
9
|
## Contents
|
|
10
10
|
|
|
11
|
-
- `skills/codex/` — the Codex (Codex CLI / AGENTS.md) skill: a `SKILL.md` router plus
|
|
12
|
-
`references/*.md`
|
|
13
|
-
authoring-workflow, connect-an-api, experience-design, widgets-and-apps, test-in-hosts,
|
|
14
|
-
troubleshooting, deploy-and-ops, publishing, chatgpt-compliance, examples).
|
|
11
|
+
- `skills/codex/` — the Codex (Codex CLI / AGENTS.md) skill: a `SKILL.md` router plus versioned
|
|
12
|
+
`references/*.md` guidance for the SDK, CLI, workflow, UX, testing, deployment, governance, and examples.
|
|
15
13
|
- `skills/claude-code/` — the Claude Code skill, same hierarchical tree.
|
|
16
14
|
- `manifest.json` — `{ packageVersion, files: [{ path, sha256, agentTarget }] }`. The CLI verifies every
|
|
17
15
|
file's sha256 against this manifest before writing it into a user's project; a mismatch refuses the
|
package/manifest.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"packageVersion": "0.
|
|
2
|
+
"packageVersion": "0.34.0",
|
|
3
3
|
"files": [
|
|
4
4
|
{
|
|
5
5
|
"path": "skills/codex/SKILL.md",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "6b00524e90bc7ddc31e615ff1ebb90836aead8503ed711bbd3fab45e9ac115fc",
|
|
7
7
|
"agentTarget": "codex"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "skills/codex/references/cli-commands.md",
|
|
16
|
-
"sha256": "
|
|
16
|
+
"sha256": "f5adf195aab7ebf4c9de84e21feb99d6d5e9f0c8034fb44ef53d2ed24bd58b63",
|
|
17
17
|
"agentTarget": "codex"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
@@ -23,17 +23,17 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "skills/codex/references/compile-errors.md",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "1c9c3e58f1263838484d033ef9aa4a0efd6a1696091fd5c1b41686e1b87ac41a",
|
|
27
27
|
"agentTarget": "codex"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "skills/codex/references/authoring-workflow.md",
|
|
31
|
-
"sha256": "
|
|
31
|
+
"sha256": "5e64b735675bacdff9e893c03c6a30751844325854540e8952a1092cf57b1b98",
|
|
32
32
|
"agentTarget": "codex"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "skills/codex/references/embedded-assistant.md",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "5147837446ccde5937da5deee2a19d54c207858e02e18db919105a9fcbe0dc68",
|
|
37
37
|
"agentTarget": "codex"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"path": "skills/codex/references/widgets-and-apps.md",
|
|
51
|
-
"sha256": "
|
|
51
|
+
"sha256": "a5fd322a6428c02763524cc004f8f28560f228e60cca7dd3cd419ce0ecee8fe5",
|
|
52
52
|
"agentTarget": "codex"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"path": "skills/codex/references/deploy-and-ops.md",
|
|
66
|
-
"sha256": "
|
|
66
|
+
"sha256": "d7e69158ba8e2b92cccea183c55cb42b1be091516a5a4ea9af94c900d285aa15",
|
|
67
67
|
"agentTarget": "codex"
|
|
68
68
|
},
|
|
69
69
|
{
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
"path": "skills/codex/references/feedback.md",
|
|
86
|
-
"sha256": "
|
|
86
|
+
"sha256": "890bb6d9af2a150ef243728f310036fb76c3c27e420a0d7c5feb62fa456b4f00",
|
|
87
87
|
"agentTarget": "codex"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
@@ -383,7 +383,7 @@
|
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
385
|
"path": "skills/claude-code/SKILL.md",
|
|
386
|
-
"sha256": "
|
|
386
|
+
"sha256": "fe1c89cb5087de6dd67a02754a7b7553d42c26501b795ec243659e66c0585c7d",
|
|
387
387
|
"agentTarget": "claude-code"
|
|
388
388
|
},
|
|
389
389
|
{
|
|
@@ -393,7 +393,7 @@
|
|
|
393
393
|
},
|
|
394
394
|
{
|
|
395
395
|
"path": "skills/claude-code/references/cli-commands.md",
|
|
396
|
-
"sha256": "
|
|
396
|
+
"sha256": "f5adf195aab7ebf4c9de84e21feb99d6d5e9f0c8034fb44ef53d2ed24bd58b63",
|
|
397
397
|
"agentTarget": "claude-code"
|
|
398
398
|
},
|
|
399
399
|
{
|
|
@@ -403,17 +403,17 @@
|
|
|
403
403
|
},
|
|
404
404
|
{
|
|
405
405
|
"path": "skills/claude-code/references/compile-errors.md",
|
|
406
|
-
"sha256": "
|
|
406
|
+
"sha256": "1c9c3e58f1263838484d033ef9aa4a0efd6a1696091fd5c1b41686e1b87ac41a",
|
|
407
407
|
"agentTarget": "claude-code"
|
|
408
408
|
},
|
|
409
409
|
{
|
|
410
410
|
"path": "skills/claude-code/references/authoring-workflow.md",
|
|
411
|
-
"sha256": "
|
|
411
|
+
"sha256": "5e64b735675bacdff9e893c03c6a30751844325854540e8952a1092cf57b1b98",
|
|
412
412
|
"agentTarget": "claude-code"
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
415
|
"path": "skills/claude-code/references/embedded-assistant.md",
|
|
416
|
-
"sha256": "
|
|
416
|
+
"sha256": "5147837446ccde5937da5deee2a19d54c207858e02e18db919105a9fcbe0dc68",
|
|
417
417
|
"agentTarget": "claude-code"
|
|
418
418
|
},
|
|
419
419
|
{
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
},
|
|
429
429
|
{
|
|
430
430
|
"path": "skills/claude-code/references/widgets-and-apps.md",
|
|
431
|
-
"sha256": "
|
|
431
|
+
"sha256": "a5fd322a6428c02763524cc004f8f28560f228e60cca7dd3cd419ce0ecee8fe5",
|
|
432
432
|
"agentTarget": "claude-code"
|
|
433
433
|
},
|
|
434
434
|
{
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
445
|
"path": "skills/claude-code/references/deploy-and-ops.md",
|
|
446
|
-
"sha256": "
|
|
446
|
+
"sha256": "d7e69158ba8e2b92cccea183c55cb42b1be091516a5a4ea9af94c900d285aa15",
|
|
447
447
|
"agentTarget": "claude-code"
|
|
448
448
|
},
|
|
449
449
|
{
|
|
@@ -463,7 +463,7 @@
|
|
|
463
463
|
},
|
|
464
464
|
{
|
|
465
465
|
"path": "skills/claude-code/references/feedback.md",
|
|
466
|
-
"sha256": "
|
|
466
|
+
"sha256": "890bb6d9af2a150ef243728f310036fb76c3c27e420a0d7c5feb62fa456b4f00",
|
|
467
467
|
"agentTarget": "claude-code"
|
|
468
468
|
},
|
|
469
469
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.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",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
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
|
-
version: 0.33.0
|
|
5
|
-
hash: 9e69b4cf0440dc2d
|
|
6
4
|
---
|
|
7
5
|
|
|
6
|
+
<!-- noodle-skill version:0.34.0 hash:a26379cb2c3369a6 -->
|
|
7
|
+
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
10
10
|
Build, validate, test, deploy, and operate Noodle Seed MCP servers and apps authored in TypeScript with the `noodle` CLI. Author from the configured entrypoint (usually `server.ts`); keep the authoring surface TypeScript-only.
|
|
@@ -51,11 +51,11 @@ Scan all of these during discovery; open in full the ones your task touches:
|
|
|
51
51
|
- `references/publishing.md` — submit to the ChatGPT apps directory and Claude connectors directory.
|
|
52
52
|
- `references/chatgpt-compliance.md` — the OpenAI Apps SDK pre-submission checklist (beyond the metadata gate): conversational value, helpful-UI-only, in-chat completion, UI guidelines, domain guardrails, privacy.
|
|
53
53
|
- `references/examples.md` — flagship example index and a canonical `server.ts`.
|
|
54
|
-
- `references/feedback.md` —
|
|
54
|
+
- `references/feedback.md` — draft sanitized product feedback, show the user the exact command, and submit only after explicit user approval.
|
|
55
55
|
|
|
56
56
|
## Product feedback
|
|
57
57
|
|
|
58
|
-
When you discover a bug, missing capability, misleading doc, or improvement idea
|
|
58
|
+
When you discover a bug, missing capability, misleading doc, or improvement idea, draft one sanitized `noodle feedback` command per finding. Show the user the exact command and ask for explicit user approval. Do not run or submit it until approval is given. Follow `references/feedback.md`; never include customer code, secrets, personal data, or identifying project details.
|
|
59
59
|
|
|
60
60
|
## Safety
|
|
61
61
|
|
|
@@ -233,7 +233,7 @@ The model never sees a task id from the user; `find_tasks` returns `{ id, title
|
|
|
233
233
|
|
|
234
234
|
## Invocation context
|
|
235
235
|
|
|
236
|
-
Every executable invocation receives one immutable server-authoritative temporal snapshot.
|
|
236
|
+
Every executable invocation receives one immutable server-authoritative temporal snapshot. TypeScript authoring does not create a hidden context tool. Use `server(..., { context })` for locale/time-zone defaults and trusted ambient facts, and designate one normal zero-input tool with `contextProvider: true` when the model needs portable application context. The embedded host preloads it per turn; Claude, ChatGPT, and other MCP hosts call it normally.
|
|
237
237
|
|
|
238
238
|
```ts
|
|
239
239
|
context: {
|
|
@@ -251,7 +251,7 @@ context: {
|
|
|
251
251
|
},
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts.
|
|
254
|
+
Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts. Ambient/model-visible context is capped at 16 KiB serialized JSON, depth 8, and 128 entries per container; credential-shaped keys are rejected.
|
|
255
255
|
|
|
256
256
|
## Ask for structured missing input
|
|
257
257
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# noodle CLI commands
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Developer-facing `noodle` commands, grouped by area. Local authoring commands (`validate`, `test`, `dev`, `tools`, `resources`, `prompts`) need no login or link. Discover the exact command surface for the installed release with `noodle commands --json`.
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
@@ -11,7 +11,6 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
11
11
|
- Managed config
|
|
12
12
|
- Governance & observability
|
|
13
13
|
- CLI maintenance
|
|
14
|
-
- Deprecated
|
|
15
14
|
|
|
16
15
|
## Authoring & validation
|
|
17
16
|
|
|
@@ -64,7 +63,6 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
64
63
|
| `noodle logout` | Clear saved credentials. |
|
|
65
64
|
| `noodle whoami` | Print the current authenticated user. |
|
|
66
65
|
| `noodle feedback` | Send sanitized product feedback (bug, idea, docs gap) to the Noodle Seed team. |
|
|
67
|
-
| `noodle list` | Removed — promoted to `deployments list` (prints the recovery pointer and exits 2). |
|
|
68
66
|
| `noodle github` | Connect, inspect, or disconnect the GitHub repository behind an app’s GitHub-native deploys (`connect`/`status`/`disconnect`; `connect` opens a browser install, `--repo` for headless). |
|
|
69
67
|
| `noodle target` | Show or set the deployment target (local\|cloud\|other). |
|
|
70
68
|
|
|
@@ -87,13 +85,11 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
87
85
|
| Command | What it does |
|
|
88
86
|
| :-- | :-- |
|
|
89
87
|
| `noodle audit` | Operator governance audit status and event queries. |
|
|
90
|
-
| `noodle billing` | Super-admin preview of the explicit legacy billing-account migration without writing data (`billing migration preview`). |
|
|
91
88
|
| `noodle logs` | View service/deployment logs. |
|
|
92
89
|
| `noodle metrics` | MCP analytics for a deployed server (volume, sessions, latency percentiles, two-tier errors, tools, clients). Agents: `noodle metrics --agent-output` for a health verdict + next actions. |
|
|
93
90
|
| `noodle events` | The per-request MCP event stream with status/tool/client filters; `--session <id>` replays one session in order. Agents: add `--json` and filter (`--status tool_error\|mcp_error`) when debugging. |
|
|
94
91
|
| `noodle alerts` | Analytics alert rules (`add\|list\|remove\|test`): an edge-triggered webhook fires when error share, error count, calls, or p95 latency breaches. Webhook URLs are stored server-side and shown redacted. |
|
|
95
92
|
| `noodle policy` | Manage policy (status/list/show/effective/simulate/suspend/quota/rate/...). |
|
|
96
|
-
| `noodle platform-auth` | Run aggregate-only super-admin WorkOS inventory, import, reconciliation, rollout, rollback, and finalization operations. |
|
|
97
93
|
|
|
98
94
|
## CLI maintenance
|
|
99
95
|
|
|
@@ -103,10 +99,4 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
103
99
|
| `noodle version` | Print the installed CLI version. |
|
|
104
100
|
| `noodle commands` | Print the machine-readable command catalog (`--json`) or a compact human list. Agents: `noodle commands --json` for every command, subcommand, flag, and exit code without reading source. |
|
|
105
101
|
| `noodle features` | Print the versioned Claude, ChatGPT, and Embedded compatibility registry (`--json` or `--markdown`). |
|
|
106
|
-
| `noodle update` | Check for, install, or safely repair the CLI update. Agents: `noodle update --check --json`, then `noodle update --yes --json`; add `--repair` only when the check reports `repairSafe: true`. |
|
|
107
|
-
|
|
108
|
-
## Deprecated
|
|
109
|
-
|
|
110
|
-
| Command | What it does |
|
|
111
|
-
| :-- | :-- |
|
|
112
|
-
| `noodle keys` | Removed: this command no longer exists; hosted access is identity-based. |
|
|
102
|
+
| `noodle update` | Check for, install, or safely repair the CLI update. Agents: `noodle update --check --json`, then `noodle update --yes --json`; add `--repair` only when the check reports `repairSafe: true`. |
|
|
@@ -13,12 +13,12 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
|
|
|
13
13
|
|
|
14
14
|
| Code | Fix |
|
|
15
15
|
| :-- | :-- |
|
|
16
|
-
| `invalid_context_provider` | Designate at most one normal
|
|
16
|
+
| `invalid_context_provider` | Designate at most one normal tool with `contextProvider: true`, and give it an empty object input schema. |
|
|
17
17
|
| `yaml_parse_error` | Author in TypeScript; this means the compiled manifest was malformed — re-run from server.ts, do not hand-edit manifest data. |
|
|
18
18
|
| `invalid_shape` | A field has the wrong type or structure; match the shape the compiler reports under `path` against the SDK builder you used. |
|
|
19
19
|
| `invalid_name` | Rename the identifier to match the allowed pattern (lowercase, no spaces/reserved characters) cited at `path`. |
|
|
20
20
|
| `duplicate_name` | Two tools/components share a name; give each a unique name at the cited `path`. |
|
|
21
|
-
| `reserved_name` |
|
|
21
|
+
| `reserved_name` | Rename the reserved identifier and use one explicit zero-input tool with `contextProvider: true` when the model needs application context. |
|
|
22
22
|
| `unsupported_manifest_version` | Update the SDK/CLI so the emitted manifest version is supported; do not pin an old manifest shape. |
|
|
23
23
|
| `reserved_for_future_version` | The verb at `path` (currently `compute` as a flow step) is reserved for a future core version; express the step with `use` (a connector operation), `map` (a pure mapping), or the shipped `ctx.elicit` input primitive instead. |
|
|
24
24
|
| `invalid_operation_ref` | Fix the connector operation reference to `alias.operation` for an operation that exists on that connector. |
|
|
@@ -64,10 +64,6 @@ Once deployed, register the server as a tool in a host with `noodle connect <hos
|
|
|
64
64
|
|
|
65
65
|
Manage runtime config with `noodle secrets` / `noodle variables` (scoped org/app/env). Operators use `noodle logs`, `noodle audit`, and `noodle policy` for logs, governance audit, and policy.
|
|
66
66
|
|
|
67
|
-
## Billing migration preview
|
|
68
|
-
|
|
69
|
-
`noodle billing migration preview [--file <mapping.json>]` is a super-admin, read-only inventory and validation command for legacy organizations. It never creates billing accounts, links organizations, or changes entitlements, and there is no apply command. Keep real mapping files outside the repository. The versioned file must classify production apps for every organization: `linkState: "unlinked"` selects a current owner subject under the fixed hosted issuer `https://accounts.google.com`, while `linkState: "linked"` asserts the exact current billing-account ID and link version. Inventory apps with `noodle apps list --archived --json` so archive state is visible. A blocked preview exits 1 even though the JSON response is a successful preview envelope; inspect `data.preview.blockers` and resolve every blocker before a future cutover workflow exists.
|
|
70
|
-
|
|
71
67
|
## Agent-safe CLI recipes
|
|
72
68
|
|
|
73
69
|
Use explicit flags in headless runs so commands never wait for a prompt:
|
|
@@ -83,7 +79,6 @@ noodle validate --json
|
|
|
83
79
|
noodle test --json
|
|
84
80
|
noodle deploy --json
|
|
85
81
|
noodle smoke --json
|
|
86
|
-
noodle billing migration preview --json
|
|
87
82
|
noodle agents doctor --json
|
|
88
83
|
```
|
|
89
84
|
|
|
@@ -180,7 +180,7 @@ context: {
|
|
|
180
180
|
},
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. For model-visible application context in every host, designate one normal zero-input tool with `contextProvider: true`; the embedded host preloads it per turn and external hosts call it normally.
|
|
183
|
+
The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. For model-visible application context in every host, designate one normal zero-input tool with `contextProvider: true`; the embedded host preloads it per turn and external hosts call it normally. Keep ambient facts compact: the platform caps serialized JSON at 16 KiB, depth 8, and 128 entries per container, and rejects credential-shaped keys.
|
|
184
184
|
|
|
185
185
|
## Structured missing input
|
|
186
186
|
|
|
@@ -304,7 +304,7 @@ if (pendingId) {
|
|
|
304
304
|
- Signed-out session exchange returns `401`.
|
|
305
305
|
- The browser network/DOM/storage contains no client secret or model key.
|
|
306
306
|
- The local and production origins match `allowedOrigins` character-for-character.
|
|
307
|
-
- At the manifest/runtime boundary and in TypeScript action helpers, only `confirm: true` enables confirmation; omitted or `false` preserves
|
|
307
|
+
- At the manifest/runtime boundary and in TypeScript action helpers, only `confirm: true` enables confirmation; omitted or `false` preserves direct execution. Action hints alone never enforce approval; `annotations.action({ confirm: false })` is equivalent to omission.
|
|
308
308
|
- An expired turn re-exchanges once; interaction decisions never auto-retry. An explicit same-decision repeat returns the stored outcome without executing again.
|
|
309
309
|
- Accept, decline, and cancel are single-use. Only accept executes; the server ignores replacement tool arguments.
|
|
310
310
|
- Wrong-origin and malformed-origin requests fail closed.
|
|
@@ -328,6 +328,6 @@ if (pendingId) {
|
|
|
328
328
|
| Relative dates use the wrong day or time zone | No verified user preference and the browser hint is missing/stale | Pass saved `preferences` from the backend; provide a fresh per-turn `clientContext` in a headless renderer |
|
|
329
329
|
| The model invents a team/holiday after context lookup fails | The ambient provider returned invalid data or its read-only connector failed (`ambientStatus: unavailable`) | Fix the provider/connector; treat unavailable ambient facts as missing, never prompt instructions |
|
|
330
330
|
| Decline/cancel reports `unsupported_service` | The session came from a legacy service with no `endpoints.interactions` | Upgrade the service; legacy `toolConfirmations` supports accept only |
|
|
331
|
-
| Behavior does not change after `noodle deploy` |
|
|
331
|
+
| Behavior does not change after `noodle deploy` | The client is not following the tenant's active deployment | Restart the client session and confirm the selected tenant and deployment |
|
|
332
332
|
| A delegated connector returns `credential_unavailable` / `caller_identity_not_customer` | The calling surface has no verified customer identity (or an old session minted before the platform carried the resource audience) | Verify `customerAuth` is configured, the backend passes the verified `user`, and run `noodle auth doctor --live` |
|
|
333
333
|
| Deploy fails with `unsupported_delegated_provider` | `delegatedOAuth.provider` only supports the managed `firebase`/`microsoft` bridges | Use `auth.kind: "delegatedTokenExchange"` for your own token endpoint (see authoring-workflow.md) |
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
# Send product feedback
|
|
2
2
|
|
|
3
|
-
When you — the coding agent — discover a way Noodle Seed could be better,
|
|
3
|
+
When you — the coding agent — discover a way Noodle Seed could be better, prepare one sanitized feedback proposal. Feedback crosses the customer project boundary and lands in Noodle Seed’s private tracker, so the user must make an informed choice. Show the user the exact command and ask for explicit user approval. Do not run or submit it until approval is given.
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
|
-
- When to
|
|
7
|
+
- When to propose feedback
|
|
8
|
+
- Approval workflow
|
|
8
9
|
- The command
|
|
9
10
|
- Choose the structured fields
|
|
10
11
|
- Sanitization rules (hard requirements)
|
|
11
12
|
- Minimal repro guidance
|
|
12
13
|
- After you submit
|
|
13
14
|
|
|
14
|
-
## When to
|
|
15
|
+
## When to propose feedback
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
Draft one `noodle feedback` proposal per distinct finding when you:
|
|
17
18
|
|
|
18
19
|
- hit a CLI or SDK error that cost you retries, or whose message/`fix`/`next` guidance misled you;
|
|
19
20
|
- discover a missing capability you had to work around (in the CLI, SDK, widgets, connectors, deploy lane, console, or docs);
|
|
@@ -21,7 +22,14 @@ Send one `noodle feedback` per distinct finding whenever you:
|
|
|
21
22
|
- notice confusing command output, a broken `--json` envelope, or a wrong exit code;
|
|
22
23
|
- have a concrete idea that would make authoring or operating apps faster.
|
|
23
24
|
|
|
24
|
-
Do not batch several findings into one
|
|
25
|
+
Do not batch several findings into one proposal, and do not re-propose the same finding in the same session.
|
|
26
|
+
|
|
27
|
+
## Approval workflow
|
|
28
|
+
|
|
29
|
+
1. Draft and sanitize the title, message, labels, and exact shell command.
|
|
30
|
+
2. Show the user the exact command and explain that it sends the shown content plus CLI version, OS/platform, and Node version to Noodle Seed’s private tracker.
|
|
31
|
+
3. Ask for explicit user approval. Do not run, submit, or send anything until the user clearly approves that exact proposal.
|
|
32
|
+
4. After approval, run it once. If authentication is missing, report that feedback was not sent and offer the normal `noodle login` path; never sign in or retry without direction.
|
|
25
33
|
|
|
26
34
|
## The command
|
|
27
35
|
|
|
@@ -31,7 +39,7 @@ noodle feedback "resources list --json omits the truncated flag the docs promise
|
|
|
31
39
|
--type fix --severity P2 --area cli --json
|
|
32
40
|
```
|
|
33
41
|
|
|
34
|
-
The message is required (1–4000 chars). Pass `--json` and parse the envelope: success is `{ok:true,data:{reference,labels}}`; a `429` means the per-user hourly budget (5) is spent —
|
|
42
|
+
This is an example only; build the exact command for the finding and show it before execution. The message is required (1–4000 chars). Pass `--json` and parse the envelope: success is `{ok:true,data:{reference,labels}}`; a `429` means the per-user hourly budget (5) is spent — report that it was not sent and never retry-loop. The CLI attaches only the disclosed light diagnostics automatically: CLI version, OS/platform, Node version. Nothing else is collected.
|
|
35
43
|
|
|
36
44
|
## Choose the structured fields
|
|
37
45
|
|
|
@@ -64,4 +72,4 @@ Repro: applies to every connector whose response mapping references a nested arr
|
|
|
64
72
|
|
|
65
73
|
## After you submit
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
Only after explicit user approval and a successful command, the returned `reference` (e.g. `fb-142`) is confirmation; mention it briefly so the user knows what was sent. Feedback goes to a private tracker — there is no public issue link, and no follow-up action is needed. Continue the user’s task immediately; feedback must never block or slow their work.
|
|
@@ -18,7 +18,7 @@ Use `tool(name, { description, input, output, fulfil, view })` for a model-visib
|
|
|
18
18
|
|
|
19
19
|
Generated widgets, official examples, and agent-authored MCP Apps must start with `@noodleseed/one/react` primitives and semantic tokens. Custom React/CSS or third-party components remain valid when the kit lacks the required behavior or the developer explicitly requests them.
|
|
20
20
|
|
|
21
|
-
`noodle init my-app` defaults to the
|
|
21
|
+
`noodle init my-app` defaults to the SaaS profile: federated OIDC placeholders, one explicit context-provider tool, MCP App UI, resource, prompt, state contract, branding, handoff, and embedded assistant. Begin by replacing the IdP/audience/domain placeholders. Use `--template widget`, `hello`, or `http-api` only when that narrower profile is intentional.
|
|
22
22
|
|
|
23
23
|
The default composition rule is: build the smallest useful conversational surface. Inline has one purpose, one primary action, and at most two visible actions. Use progressive disclosure or a later conversational turn for secondary detail; request fullscreen only when the user asks or the task genuinely needs it. Never use nested scrolling. At 280px and wider, the widget must remain one-column, readable, touch-safe, and free of horizontal overflow. Remove secondary chrome before shrinking essential content.
|
|
24
24
|
|
package/skills/codex/SKILL.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
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
|
-
version: 0.33.0
|
|
5
|
-
hash: 7228bf705097483b
|
|
6
4
|
---
|
|
7
5
|
|
|
6
|
+
<!-- noodle-skill version:0.34.0 hash:25832eb0ac3cd277 -->
|
|
7
|
+
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
10
10
|
Build, validate, test, deploy, and operate Noodle Seed MCP servers and apps authored in TypeScript with the `noodle` CLI. Author from the configured entrypoint (usually `server.ts`); keep the authoring surface TypeScript-only.
|
|
@@ -51,11 +51,11 @@ Scan all of these during discovery; open in full the ones your task touches:
|
|
|
51
51
|
- `references/publishing.md` — submit to the ChatGPT apps directory and Claude connectors directory.
|
|
52
52
|
- `references/chatgpt-compliance.md` — the OpenAI Apps SDK pre-submission checklist (beyond the metadata gate): conversational value, helpful-UI-only, in-chat completion, UI guidelines, domain guardrails, privacy.
|
|
53
53
|
- `references/examples.md` — flagship example index and a canonical `server.ts`.
|
|
54
|
-
- `references/feedback.md` —
|
|
54
|
+
- `references/feedback.md` — draft sanitized product feedback, show the user the exact command, and submit only after explicit user approval.
|
|
55
55
|
|
|
56
56
|
## Product feedback
|
|
57
57
|
|
|
58
|
-
When you discover a bug, missing capability, misleading doc, or improvement idea
|
|
58
|
+
When you discover a bug, missing capability, misleading doc, or improvement idea, draft one sanitized `noodle feedback` command per finding. Show the user the exact command and ask for explicit user approval. Do not run or submit it until approval is given. Follow `references/feedback.md`; never include customer code, secrets, personal data, or identifying project details.
|
|
59
59
|
|
|
60
60
|
## Safety
|
|
61
61
|
|
|
@@ -233,7 +233,7 @@ The model never sees a task id from the user; `find_tasks` returns `{ id, title
|
|
|
233
233
|
|
|
234
234
|
## Invocation context
|
|
235
235
|
|
|
236
|
-
Every executable invocation receives one immutable server-authoritative temporal snapshot.
|
|
236
|
+
Every executable invocation receives one immutable server-authoritative temporal snapshot. TypeScript authoring does not create a hidden context tool. Use `server(..., { context })` for locale/time-zone defaults and trusted ambient facts, and designate one normal zero-input tool with `contextProvider: true` when the model needs portable application context. The embedded host preloads it per turn; Claude, ChatGPT, and other MCP hosts call it normally.
|
|
237
237
|
|
|
238
238
|
```ts
|
|
239
239
|
context: {
|
|
@@ -251,7 +251,7 @@ context: {
|
|
|
251
251
|
},
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts.
|
|
254
|
+
Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts. Ambient/model-visible context is capped at 16 KiB serialized JSON, depth 8, and 128 entries per container; credential-shaped keys are rejected.
|
|
255
255
|
|
|
256
256
|
## Ask for structured missing input
|
|
257
257
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# noodle CLI commands
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Developer-facing `noodle` commands, grouped by area. Local authoring commands (`validate`, `test`, `dev`, `tools`, `resources`, `prompts`) need no login or link. Discover the exact command surface for the installed release with `noodle commands --json`.
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
@@ -11,7 +11,6 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
11
11
|
- Managed config
|
|
12
12
|
- Governance & observability
|
|
13
13
|
- CLI maintenance
|
|
14
|
-
- Deprecated
|
|
15
14
|
|
|
16
15
|
## Authoring & validation
|
|
17
16
|
|
|
@@ -64,7 +63,6 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
64
63
|
| `noodle logout` | Clear saved credentials. |
|
|
65
64
|
| `noodle whoami` | Print the current authenticated user. |
|
|
66
65
|
| `noodle feedback` | Send sanitized product feedback (bug, idea, docs gap) to the Noodle Seed team. |
|
|
67
|
-
| `noodle list` | Removed — promoted to `deployments list` (prints the recovery pointer and exits 2). |
|
|
68
66
|
| `noodle github` | Connect, inspect, or disconnect the GitHub repository behind an app’s GitHub-native deploys (`connect`/`status`/`disconnect`; `connect` opens a browser install, `--repo` for headless). |
|
|
69
67
|
| `noodle target` | Show or set the deployment target (local\|cloud\|other). |
|
|
70
68
|
|
|
@@ -87,13 +85,11 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
87
85
|
| Command | What it does |
|
|
88
86
|
| :-- | :-- |
|
|
89
87
|
| `noodle audit` | Operator governance audit status and event queries. |
|
|
90
|
-
| `noodle billing` | Super-admin preview of the explicit legacy billing-account migration without writing data (`billing migration preview`). |
|
|
91
88
|
| `noodle logs` | View service/deployment logs. |
|
|
92
89
|
| `noodle metrics` | MCP analytics for a deployed server (volume, sessions, latency percentiles, two-tier errors, tools, clients). Agents: `noodle metrics --agent-output` for a health verdict + next actions. |
|
|
93
90
|
| `noodle events` | The per-request MCP event stream with status/tool/client filters; `--session <id>` replays one session in order. Agents: add `--json` and filter (`--status tool_error\|mcp_error`) when debugging. |
|
|
94
91
|
| `noodle alerts` | Analytics alert rules (`add\|list\|remove\|test`): an edge-triggered webhook fires when error share, error count, calls, or p95 latency breaches. Webhook URLs are stored server-side and shown redacted. |
|
|
95
92
|
| `noodle policy` | Manage policy (status/list/show/effective/simulate/suspend/quota/rate/...). |
|
|
96
|
-
| `noodle platform-auth` | Run aggregate-only super-admin WorkOS inventory, import, reconciliation, rollout, rollback, and finalization operations. |
|
|
97
93
|
|
|
98
94
|
## CLI maintenance
|
|
99
95
|
|
|
@@ -103,10 +99,4 @@ Every `noodle` command, grouped by area. Local authoring commands (`validate`, `
|
|
|
103
99
|
| `noodle version` | Print the installed CLI version. |
|
|
104
100
|
| `noodle commands` | Print the machine-readable command catalog (`--json`) or a compact human list. Agents: `noodle commands --json` for every command, subcommand, flag, and exit code without reading source. |
|
|
105
101
|
| `noodle features` | Print the versioned Claude, ChatGPT, and Embedded compatibility registry (`--json` or `--markdown`). |
|
|
106
|
-
| `noodle update` | Check for, install, or safely repair the CLI update. Agents: `noodle update --check --json`, then `noodle update --yes --json`; add `--repair` only when the check reports `repairSafe: true`. |
|
|
107
|
-
|
|
108
|
-
## Deprecated
|
|
109
|
-
|
|
110
|
-
| Command | What it does |
|
|
111
|
-
| :-- | :-- |
|
|
112
|
-
| `noodle keys` | Removed: this command no longer exists; hosted access is identity-based. |
|
|
102
|
+
| `noodle update` | Check for, install, or safely repair the CLI update. Agents: `noodle update --check --json`, then `noodle update --yes --json`; add `--repair` only when the check reports `repairSafe: true`. |
|
|
@@ -13,12 +13,12 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
|
|
|
13
13
|
|
|
14
14
|
| Code | Fix |
|
|
15
15
|
| :-- | :-- |
|
|
16
|
-
| `invalid_context_provider` | Designate at most one normal
|
|
16
|
+
| `invalid_context_provider` | Designate at most one normal tool with `contextProvider: true`, and give it an empty object input schema. |
|
|
17
17
|
| `yaml_parse_error` | Author in TypeScript; this means the compiled manifest was malformed — re-run from server.ts, do not hand-edit manifest data. |
|
|
18
18
|
| `invalid_shape` | A field has the wrong type or structure; match the shape the compiler reports under `path` against the SDK builder you used. |
|
|
19
19
|
| `invalid_name` | Rename the identifier to match the allowed pattern (lowercase, no spaces/reserved characters) cited at `path`. |
|
|
20
20
|
| `duplicate_name` | Two tools/components share a name; give each a unique name at the cited `path`. |
|
|
21
|
-
| `reserved_name` |
|
|
21
|
+
| `reserved_name` | Rename the reserved identifier and use one explicit zero-input tool with `contextProvider: true` when the model needs application context. |
|
|
22
22
|
| `unsupported_manifest_version` | Update the SDK/CLI so the emitted manifest version is supported; do not pin an old manifest shape. |
|
|
23
23
|
| `reserved_for_future_version` | The verb at `path` (currently `compute` as a flow step) is reserved for a future core version; express the step with `use` (a connector operation), `map` (a pure mapping), or the shipped `ctx.elicit` input primitive instead. |
|
|
24
24
|
| `invalid_operation_ref` | Fix the connector operation reference to `alias.operation` for an operation that exists on that connector. |
|
|
@@ -64,10 +64,6 @@ Once deployed, register the server as a tool in a host with `noodle connect <hos
|
|
|
64
64
|
|
|
65
65
|
Manage runtime config with `noodle secrets` / `noodle variables` (scoped org/app/env). Operators use `noodle logs`, `noodle audit`, and `noodle policy` for logs, governance audit, and policy.
|
|
66
66
|
|
|
67
|
-
## Billing migration preview
|
|
68
|
-
|
|
69
|
-
`noodle billing migration preview [--file <mapping.json>]` is a super-admin, read-only inventory and validation command for legacy organizations. It never creates billing accounts, links organizations, or changes entitlements, and there is no apply command. Keep real mapping files outside the repository. The versioned file must classify production apps for every organization: `linkState: "unlinked"` selects a current owner subject under the fixed hosted issuer `https://accounts.google.com`, while `linkState: "linked"` asserts the exact current billing-account ID and link version. Inventory apps with `noodle apps list --archived --json` so archive state is visible. A blocked preview exits 1 even though the JSON response is a successful preview envelope; inspect `data.preview.blockers` and resolve every blocker before a future cutover workflow exists.
|
|
70
|
-
|
|
71
67
|
## Agent-safe CLI recipes
|
|
72
68
|
|
|
73
69
|
Use explicit flags in headless runs so commands never wait for a prompt:
|
|
@@ -83,7 +79,6 @@ noodle validate --json
|
|
|
83
79
|
noodle test --json
|
|
84
80
|
noodle deploy --json
|
|
85
81
|
noodle smoke --json
|
|
86
|
-
noodle billing migration preview --json
|
|
87
82
|
noodle agents doctor --json
|
|
88
83
|
```
|
|
89
84
|
|
|
@@ -180,7 +180,7 @@ context: {
|
|
|
180
180
|
},
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. For model-visible application context in every host, designate one normal zero-input tool with `contextProvider: true`; the embedded host preloads it per turn and external hosts call it normally.
|
|
183
|
+
The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. For model-visible application context in every host, designate one normal zero-input tool with `contextProvider: true`; the embedded host preloads it per turn and external hosts call it normally. Keep ambient facts compact: the platform caps serialized JSON at 16 KiB, depth 8, and 128 entries per container, and rejects credential-shaped keys.
|
|
184
184
|
|
|
185
185
|
## Structured missing input
|
|
186
186
|
|
|
@@ -304,7 +304,7 @@ if (pendingId) {
|
|
|
304
304
|
- Signed-out session exchange returns `401`.
|
|
305
305
|
- The browser network/DOM/storage contains no client secret or model key.
|
|
306
306
|
- The local and production origins match `allowedOrigins` character-for-character.
|
|
307
|
-
- At the manifest/runtime boundary and in TypeScript action helpers, only `confirm: true` enables confirmation; omitted or `false` preserves
|
|
307
|
+
- At the manifest/runtime boundary and in TypeScript action helpers, only `confirm: true` enables confirmation; omitted or `false` preserves direct execution. Action hints alone never enforce approval; `annotations.action({ confirm: false })` is equivalent to omission.
|
|
308
308
|
- An expired turn re-exchanges once; interaction decisions never auto-retry. An explicit same-decision repeat returns the stored outcome without executing again.
|
|
309
309
|
- Accept, decline, and cancel are single-use. Only accept executes; the server ignores replacement tool arguments.
|
|
310
310
|
- Wrong-origin and malformed-origin requests fail closed.
|
|
@@ -328,6 +328,6 @@ if (pendingId) {
|
|
|
328
328
|
| Relative dates use the wrong day or time zone | No verified user preference and the browser hint is missing/stale | Pass saved `preferences` from the backend; provide a fresh per-turn `clientContext` in a headless renderer |
|
|
329
329
|
| The model invents a team/holiday after context lookup fails | The ambient provider returned invalid data or its read-only connector failed (`ambientStatus: unavailable`) | Fix the provider/connector; treat unavailable ambient facts as missing, never prompt instructions |
|
|
330
330
|
| Decline/cancel reports `unsupported_service` | The session came from a legacy service with no `endpoints.interactions` | Upgrade the service; legacy `toolConfirmations` supports accept only |
|
|
331
|
-
| Behavior does not change after `noodle deploy` |
|
|
331
|
+
| Behavior does not change after `noodle deploy` | The client is not following the tenant's active deployment | Restart the client session and confirm the selected tenant and deployment |
|
|
332
332
|
| A delegated connector returns `credential_unavailable` / `caller_identity_not_customer` | The calling surface has no verified customer identity (or an old session minted before the platform carried the resource audience) | Verify `customerAuth` is configured, the backend passes the verified `user`, and run `noodle auth doctor --live` |
|
|
333
333
|
| Deploy fails with `unsupported_delegated_provider` | `delegatedOAuth.provider` only supports the managed `firebase`/`microsoft` bridges | Use `auth.kind: "delegatedTokenExchange"` for your own token endpoint (see authoring-workflow.md) |
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
# Send product feedback
|
|
2
2
|
|
|
3
|
-
When you — the coding agent — discover a way Noodle Seed could be better,
|
|
3
|
+
When you — the coding agent — discover a way Noodle Seed could be better, prepare one sanitized feedback proposal. Feedback crosses the customer project boundary and lands in Noodle Seed’s private tracker, so the user must make an informed choice. Show the user the exact command and ask for explicit user approval. Do not run or submit it until approval is given.
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
|
-
- When to
|
|
7
|
+
- When to propose feedback
|
|
8
|
+
- Approval workflow
|
|
8
9
|
- The command
|
|
9
10
|
- Choose the structured fields
|
|
10
11
|
- Sanitization rules (hard requirements)
|
|
11
12
|
- Minimal repro guidance
|
|
12
13
|
- After you submit
|
|
13
14
|
|
|
14
|
-
## When to
|
|
15
|
+
## When to propose feedback
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
Draft one `noodle feedback` proposal per distinct finding when you:
|
|
17
18
|
|
|
18
19
|
- hit a CLI or SDK error that cost you retries, or whose message/`fix`/`next` guidance misled you;
|
|
19
20
|
- discover a missing capability you had to work around (in the CLI, SDK, widgets, connectors, deploy lane, console, or docs);
|
|
@@ -21,7 +22,14 @@ Send one `noodle feedback` per distinct finding whenever you:
|
|
|
21
22
|
- notice confusing command output, a broken `--json` envelope, or a wrong exit code;
|
|
22
23
|
- have a concrete idea that would make authoring or operating apps faster.
|
|
23
24
|
|
|
24
|
-
Do not batch several findings into one
|
|
25
|
+
Do not batch several findings into one proposal, and do not re-propose the same finding in the same session.
|
|
26
|
+
|
|
27
|
+
## Approval workflow
|
|
28
|
+
|
|
29
|
+
1. Draft and sanitize the title, message, labels, and exact shell command.
|
|
30
|
+
2. Show the user the exact command and explain that it sends the shown content plus CLI version, OS/platform, and Node version to Noodle Seed’s private tracker.
|
|
31
|
+
3. Ask for explicit user approval. Do not run, submit, or send anything until the user clearly approves that exact proposal.
|
|
32
|
+
4. After approval, run it once. If authentication is missing, report that feedback was not sent and offer the normal `noodle login` path; never sign in or retry without direction.
|
|
25
33
|
|
|
26
34
|
## The command
|
|
27
35
|
|
|
@@ -31,7 +39,7 @@ noodle feedback "resources list --json omits the truncated flag the docs promise
|
|
|
31
39
|
--type fix --severity P2 --area cli --json
|
|
32
40
|
```
|
|
33
41
|
|
|
34
|
-
The message is required (1–4000 chars). Pass `--json` and parse the envelope: success is `{ok:true,data:{reference,labels}}`; a `429` means the per-user hourly budget (5) is spent —
|
|
42
|
+
This is an example only; build the exact command for the finding and show it before execution. The message is required (1–4000 chars). Pass `--json` and parse the envelope: success is `{ok:true,data:{reference,labels}}`; a `429` means the per-user hourly budget (5) is spent — report that it was not sent and never retry-loop. The CLI attaches only the disclosed light diagnostics automatically: CLI version, OS/platform, Node version. Nothing else is collected.
|
|
35
43
|
|
|
36
44
|
## Choose the structured fields
|
|
37
45
|
|
|
@@ -64,4 +72,4 @@ Repro: applies to every connector whose response mapping references a nested arr
|
|
|
64
72
|
|
|
65
73
|
## After you submit
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
Only after explicit user approval and a successful command, the returned `reference` (e.g. `fb-142`) is confirmation; mention it briefly so the user knows what was sent. Feedback goes to a private tracker — there is no public issue link, and no follow-up action is needed. Continue the user’s task immediately; feedback must never block or slow their work.
|
|
@@ -18,7 +18,7 @@ Use `tool(name, { description, input, output, fulfil, view })` for a model-visib
|
|
|
18
18
|
|
|
19
19
|
Generated widgets, official examples, and agent-authored MCP Apps must start with `@noodleseed/one/react` primitives and semantic tokens. Custom React/CSS or third-party components remain valid when the kit lacks the required behavior or the developer explicitly requests them.
|
|
20
20
|
|
|
21
|
-
`noodle init my-app` defaults to the
|
|
21
|
+
`noodle init my-app` defaults to the SaaS profile: federated OIDC placeholders, one explicit context-provider tool, MCP App UI, resource, prompt, state contract, branding, handoff, and embedded assistant. Begin by replacing the IdP/audience/domain placeholders. Use `--template widget`, `hello`, or `http-api` only when that narrower profile is intentional.
|
|
22
22
|
|
|
23
23
|
The default composition rule is: build the smallest useful conversational surface. Inline has one purpose, one primary action, and at most two visible actions. Use progressive disclosure or a later conversational turn for secondary detail; request fullscreen only when the user asks or the task genuinely needs it. Never use nested scrolling. At 280px and wider, the widget must remain one-column, readable, touch-safe, and free of horizontal overflow. Remove secondary chrome before shrinking essential content.
|
|
24
24
|
|