@noodleseed/agent-kit 0.99.0 → 0.100.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 +377 -377
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +1 -1
- package/skills/claude-code/authoring-mcp-servers/SKILL.md +1 -1
- package/skills/claude-code/authoring-mcp-servers/references/authoring-workflow.md +7 -0
- package/skills/claude-code/authoring-mcp-servers/references/sdk-surface.md +1 -0
- package/skills/claude-code/building-mcp-apps/SKILL.md +1 -1
- package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +1 -1
- package/skills/claude-code/connecting-apis-to-mcp/references/authoring-workflow.md +7 -0
- package/skills/claude-code/creating-product-agent-guides/SKILL.md +1 -1
- package/skills/claude-code/debugging-mcp-delivery/SKILL.md +1 -1
- package/skills/claude-code/deploying-mcp-services/SKILL.md +1 -1
- package/skills/claude-code/deploying-mcp-services/references/cli-commands.md +1 -0
- package/skills/claude-code/designing-mcp-products/SKILL.md +1 -1
- package/skills/claude-code/designing-mcp-products/references/authoring-workflow.md +7 -0
- package/skills/claude-code/embedding-mcp-assistants/SKILL.md +1 -1
- package/skills/claude-code/embedding-mcp-assistants/references/authoring-workflow.md +7 -0
- package/skills/claude-code/embedding-mcp-assistants/references/embedded-assistant.md +1 -1
- package/skills/claude-code/examples/acme-bistro/README.md +4 -0
- package/skills/claude-code/examples/acme-bistro/src/server.ts +14 -1
- package/skills/claude-code/examples/acme-bistro/test/server.test.ts +10 -0
- package/skills/claude-code/examples/stateful-draft/README.md +3 -0
- package/skills/claude-code/examples/stateful-draft/src/server.ts +0 -1
- package/skills/claude-code/executing-noodle-plans/SKILL.md +1 -1
- package/skills/claude-code/publishing-mcp-integrations/SKILL.md +1 -1
- package/skills/claude-code/references/authoring-workflow.md +7 -0
- package/skills/claude-code/references/cli-commands.md +1 -0
- package/skills/claude-code/references/compile-errors.md +2 -1
- package/skills/claude-code/references/embedded-assistant.md +1 -1
- package/skills/claude-code/references/sdk-surface.md +1 -0
- package/skills/claude-code/reporting-noodle-feedback/SKILL.md +1 -1
- package/skills/claude-code/verifying-mcp-delivery/SKILL.md +1 -1
- package/skills/claude-code/wrapping-existing-applications/SKILL.md +1 -1
- package/skills/claude-code/wrapping-existing-applications/references/authoring-workflow.md +7 -0
- package/skills/codex/SKILL.md +1 -1
- package/skills/codex/authoring-mcp-servers/SKILL.md +1 -1
- package/skills/codex/authoring-mcp-servers/references/authoring-workflow.md +7 -0
- package/skills/codex/authoring-mcp-servers/references/sdk-surface.md +1 -0
- package/skills/codex/building-mcp-apps/SKILL.md +1 -1
- package/skills/codex/connecting-apis-to-mcp/SKILL.md +1 -1
- package/skills/codex/connecting-apis-to-mcp/references/authoring-workflow.md +7 -0
- package/skills/codex/creating-product-agent-guides/SKILL.md +1 -1
- package/skills/codex/debugging-mcp-delivery/SKILL.md +1 -1
- package/skills/codex/deploying-mcp-services/SKILL.md +1 -1
- package/skills/codex/deploying-mcp-services/references/cli-commands.md +1 -0
- package/skills/codex/designing-mcp-products/SKILL.md +1 -1
- package/skills/codex/designing-mcp-products/references/authoring-workflow.md +7 -0
- package/skills/codex/embedding-mcp-assistants/SKILL.md +1 -1
- package/skills/codex/embedding-mcp-assistants/references/authoring-workflow.md +7 -0
- package/skills/codex/embedding-mcp-assistants/references/embedded-assistant.md +1 -1
- package/skills/codex/examples/acme-bistro/README.md +4 -0
- package/skills/codex/examples/acme-bistro/src/server.ts +14 -1
- package/skills/codex/examples/acme-bistro/test/server.test.ts +10 -0
- package/skills/codex/examples/stateful-draft/README.md +3 -0
- package/skills/codex/examples/stateful-draft/src/server.ts +0 -1
- package/skills/codex/executing-noodle-plans/SKILL.md +1 -1
- package/skills/codex/publishing-mcp-integrations/SKILL.md +1 -1
- package/skills/codex/references/authoring-workflow.md +7 -0
- package/skills/codex/references/cli-commands.md +1 -0
- package/skills/codex/references/compile-errors.md +2 -1
- package/skills/codex/references/embedded-assistant.md +1 -1
- package/skills/codex/references/sdk-surface.md +1 -0
- package/skills/codex/reporting-noodle-feedback/SKILL.md +1 -1
- package/skills/codex/verifying-mcp-delivery/SKILL.md +1 -1
- package/skills/codex/wrapping-existing-applications/SKILL.md +1 -1
- package/skills/codex/wrapping-existing-applications/references/authoring-workflow.md +7 -0
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
- Tests
|
|
18
18
|
- Secrets and variables
|
|
19
19
|
- Embedded assistant
|
|
20
|
+
- Managed collections
|
|
20
21
|
- Boundaries
|
|
21
22
|
|
|
22
23
|
## Input paths
|
|
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
|
|
|
441
442
|
|
|
442
443
|
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
443
444
|
|
|
445
|
+
## Managed collections
|
|
446
|
+
|
|
447
|
+
Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
|
|
448
|
+
|
|
449
|
+
This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
|
|
450
|
+
|
|
444
451
|
## Boundaries
|
|
445
452
|
|
|
446
453
|
Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
|
|
@@ -3,7 +3,7 @@ name: embedding-mcp-assistants
|
|
|
3
3
|
description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:d554d661ed7ac7be -->
|
|
7
7
|
|
|
8
8
|
# embedding-mcp-assistants
|
|
9
9
|
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
- Tests
|
|
18
18
|
- Secrets and variables
|
|
19
19
|
- Embedded assistant
|
|
20
|
+
- Managed collections
|
|
20
21
|
- Boundaries
|
|
21
22
|
|
|
22
23
|
## Input paths
|
|
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
|
|
|
441
442
|
|
|
442
443
|
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
443
444
|
|
|
445
|
+
## Managed collections
|
|
446
|
+
|
|
447
|
+
Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
|
|
448
|
+
|
|
449
|
+
This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
|
|
450
|
+
|
|
444
451
|
## Boundaries
|
|
445
452
|
|
|
446
453
|
Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
|
|
@@ -224,7 +224,7 @@ Set `webmcp: { enabled: true }` on the assistant to let a browser agent reach th
|
|
|
224
224
|
|
|
225
225
|
Set `continuity: { enabled: true }` on a public or mixed access surface to let an anonymous visitor keep the conversation they can see when they navigate to another page of the same site. Off unless set, and refused on an authenticated surface, which reattaches through a backend-verified sign-in instead. It restores the visible text on a fresh session and never the old one: no tool authority, no share of a spent turn budget, and no pending confirmation carried across, so an unanswered confirmation stays unanswered. `windowSeconds` defaults to 300 with a 600 ceiling, `maxRestores` to 3 with a ceiling of 10, and 0 for either disables continuity outright; an operator may lower what you declare and can never raise it. The handle lives in `sessionStorage` so it dies with the tab, is single-use, and is valid only for the embed, origin, and visitor it was issued to. Declare it when a marketing site spreads one conversation across several pages; leave it off when anonymous conversation text should not survive a navigation at all.
|
|
226
226
|
|
|
227
|
-
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
|
|
227
|
+
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 out of the default review. `behavior.showConfirmationDetails` defaults to `false`; set it to `true` only when the audience needs the collapsed Additional details disclosure. The complete business review and decisions remain, `confirm: true` still suspends until acceptance, and headless/BYO `data-confirmation` stays unchanged. Do not put JSON or implementation names in business-facing copy.
|
|
228
228
|
|
|
229
229
|
## Configure and deploy
|
|
230
230
|
|
|
@@ -6,6 +6,10 @@ completes in chat — only **payment** hands off, via a signed checkout deep lin
|
|
|
6
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
|
+
It also declares a reusable `guest_requests` managed-collection schema. In this foundation slice the
|
|
10
|
+
declaration compiles schema intent only: storage lifecycle, access, and a public submit route are bound by
|
|
11
|
+
the hosting service separately, and no submit tool is generated.
|
|
12
|
+
|
|
9
13
|
Capability slot: **end-to-end in-chat transaction + payment-only handoff**, plus a worked **design-first**
|
|
10
14
|
deliverable set (`design/` — a UX Document, a single-file HTML wireframe with an embedded OpenAI Apps SDK
|
|
11
15
|
compliance audit, and a Recommended API contract). It sets the quality bar the `noodle-seed` skill's
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { annotations, server, tool, z } from '@noodleseed/one';
|
|
1
|
+
import { annotations, managedCollection, 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
|
|
@@ -28,6 +28,17 @@ const menuItemOutput = z.object({
|
|
|
28
28
|
kind: z.string(),
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
+
const guestRequests = managedCollection('guest_requests', {
|
|
32
|
+
title: 'Guest requests',
|
|
33
|
+
description: 'Guest service requests that restaurant staff can review and resolve.',
|
|
34
|
+
schemaVersion: 1,
|
|
35
|
+
record: z.object({
|
|
36
|
+
locationReference: z.string().min(1).max(120),
|
|
37
|
+
requestType: z.enum(['reservation_help', 'accessibility', 'dietary_question', 'other']),
|
|
38
|
+
summary: z.string().min(1).max(1000),
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
|
|
31
42
|
// Tool annotations for host planners: the menu read is read-only; cart edits are local writes; checkout
|
|
32
43
|
// opens an external (payment) link.
|
|
33
44
|
const readOnly = annotations.readOnly();
|
|
@@ -52,6 +63,8 @@ export default server(
|
|
|
52
63
|
handoff: {
|
|
53
64
|
allowedDomains: ['https://pay.acme.example', 'https://acme.example'],
|
|
54
65
|
},
|
|
66
|
+
// Reusable business-record intent. Storage, lifecycle, access, and public intake bind separately.
|
|
67
|
+
collections: [guestRequests],
|
|
55
68
|
},
|
|
56
69
|
[
|
|
57
70
|
tool('show_menu', {
|
|
@@ -18,4 +18,14 @@ describe('acme-bistro example', () => {
|
|
|
18
18
|
expect(text).toContain('add_to_cart');
|
|
19
19
|
expect(text).toContain('create_checkout');
|
|
20
20
|
});
|
|
21
|
+
|
|
22
|
+
it('declares reusable guest-request record intent without generating a submit tool', async () => {
|
|
23
|
+
const manifest = await app.toManifest();
|
|
24
|
+
expect(manifest.server.collections).toEqual([
|
|
25
|
+
expect.objectContaining({ name: 'guest_requests', schemaVersion: 1 }),
|
|
26
|
+
]);
|
|
27
|
+
expect(manifest.tools).not.toContainEqual(
|
|
28
|
+
expect.objectContaining({ name: 'submit_guest_requests' }),
|
|
29
|
+
);
|
|
30
|
+
});
|
|
21
31
|
});
|
|
@@ -103,6 +103,9 @@ that an arbitrary new anonymous visit can recover the conversation.
|
|
|
103
103
|
The save is a connector-backed side effect on a public/mixed surface, so it has `confirm: true`. Previewing
|
|
104
104
|
the brief has no side effect and needs neither signup nor confirmation. Do not add a confirmation to each
|
|
105
105
|
conversational answer or treat confirmation as proof of identity.
|
|
106
|
+
The example relies on the managed confirmation default: reviewers see the complete business brief and
|
|
107
|
+
decision controls without connector mechanics. Enable `showConfirmationDetails` only for an audience that
|
|
108
|
+
needs those technical details.
|
|
106
109
|
|
|
107
110
|
## Validate before a customer pilot
|
|
108
111
|
|
|
@@ -133,7 +133,6 @@ export default server(
|
|
|
133
133
|
assistant: embeddedAssistant({
|
|
134
134
|
model: noodleManaged(),
|
|
135
135
|
privacyUrl: 'https://noodleseed.com/privacy',
|
|
136
|
-
behavior: { showConfirmationDetails: false },
|
|
137
136
|
access: [
|
|
138
137
|
publicWebsite({
|
|
139
138
|
origins: ['http://localhost:3001'],
|
|
@@ -3,7 +3,7 @@ name: executing-noodle-plans
|
|
|
3
3
|
description: "Use when the user asks to execute an approved, decision-complete implementation plan for a Noodle Seed project task by task with test-first changes, review, recovery, and final verification."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:6a9f132ddb79352e -->
|
|
7
7
|
|
|
8
8
|
# Execute a Noodle Seed implementation plan
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: publishing-mcp-integrations
|
|
|
3
3
|
description: "Use when preparing, reviewing, or submitting a Noodle Seed MCP integration to a host or app directory."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:0ccafb222038f553 -->
|
|
7
7
|
|
|
8
8
|
# publishing-mcp-integrations
|
|
9
9
|
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
- Tests
|
|
18
18
|
- Secrets and variables
|
|
19
19
|
- Embedded assistant
|
|
20
|
+
- Managed collections
|
|
20
21
|
- Boundaries
|
|
21
22
|
|
|
22
23
|
## Input paths
|
|
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
|
|
|
441
442
|
|
|
442
443
|
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
443
444
|
|
|
445
|
+
## Managed collections
|
|
446
|
+
|
|
447
|
+
Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
|
|
448
|
+
|
|
449
|
+
This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
|
|
450
|
+
|
|
444
451
|
## Boundaries
|
|
445
452
|
|
|
446
453
|
Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
|
|
@@ -61,6 +61,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
|
|
|
61
61
|
| `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
|
|
62
62
|
| `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
|
|
63
63
|
| `noodle service` | Query hosted service capabilities. |
|
|
64
|
+
| `noodle solutions` | Install managed solutions and operate their grants, records, activity, exports, and deletion. |
|
|
64
65
|
| `noodle login` | Authenticate with Noodle Seed Cloud. |
|
|
65
66
|
| `noodle logout` | Clear saved credentials. |
|
|
66
67
|
| `noodle whoami` | Print the current authenticated user. |
|
|
@@ -18,7 +18,7 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
|
|
|
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` | Rename the reserved identifier; `__noodleIntent`
|
|
21
|
+
| `reserved_name` | Rename the reserved identifier; `__noodleIntent` and future managed-collection `submit_<name>` tools are platform-owned, while application context uses one explicit zero-input tool with `contextProvider: true`. |
|
|
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. |
|
|
@@ -58,6 +58,7 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
|
|
|
58
58
|
| `state_secret_field` | Remove the secret-shaped field from widget/handle state; secrets must never be stored in state or sent to widgets. |
|
|
59
59
|
| `invalid_knowledge` | Fix the `knowledge()` declaration: documents must be existing UTF-8 `.md`/`.txt` files inside the project root (no symlinks), within the 100-file / 1 MiB / 25 MiB bounds, and sites need an exact HTTPS origin plus at least one include glob. |
|
|
60
60
|
| `knowledge_unhashed` | Compile from the project root (`noodle validate`/`noodle dev`) so declared knowledge documents can be read and hashed. |
|
|
61
|
+
| `invalid_managed_collection` | Fix the `managedCollection()` declaration: use a bounded, closed Zod object without credential, payment-card, government-identity, health, or biometric field names. |
|
|
61
62
|
| `unknown_connector_alias` | The tool calls a connector alias not declared in `use`/`provides`; add it or fix the alias (see `suggestions`). |
|
|
62
63
|
| `connector_not_in_catalog` | The referenced connector is not in the resolved catalog; add it to the project connectors or correct the reference. |
|
|
63
64
|
| `unknown_operation` | The connector has no such operation; use an operation declared on that connector (see `didYouMean`/`suggestions`). |
|
|
@@ -224,7 +224,7 @@ Set `webmcp: { enabled: true }` on the assistant to let a browser agent reach th
|
|
|
224
224
|
|
|
225
225
|
Set `continuity: { enabled: true }` on a public or mixed access surface to let an anonymous visitor keep the conversation they can see when they navigate to another page of the same site. Off unless set, and refused on an authenticated surface, which reattaches through a backend-verified sign-in instead. It restores the visible text on a fresh session and never the old one: no tool authority, no share of a spent turn budget, and no pending confirmation carried across, so an unanswered confirmation stays unanswered. `windowSeconds` defaults to 300 with a 600 ceiling, `maxRestores` to 3 with a ceiling of 10, and 0 for either disables continuity outright; an operator may lower what you declare and can never raise it. The handle lives in `sessionStorage` so it dies with the tab, is single-use, and is valid only for the embed, origin, and visitor it was issued to. Declare it when a marketing site spreads one conversation across several pages; leave it off when anonymous conversation text should not survive a navigation at all.
|
|
226
226
|
|
|
227
|
-
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
|
|
227
|
+
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 out of the default review. `behavior.showConfirmationDetails` defaults to `false`; set it to `true` only when the audience needs the collapsed Additional details disclosure. The complete business review and decisions remain, `confirm: true` still suspends until acceptance, and headless/BYO `data-confirmation` stays unchanged. Do not put JSON or implementation names in business-facing copy.
|
|
228
228
|
|
|
229
229
|
## Configure and deploy
|
|
230
230
|
|
|
@@ -3,7 +3,7 @@ name: reporting-noodle-feedback
|
|
|
3
3
|
description: "Use when a Noodle Seed bug, misleading instruction, missing capability, or concrete product improvement should be proposed to the user."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:660cc6ad9469d90f -->
|
|
7
7
|
|
|
8
8
|
# reporting-noodle-feedback
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: verifying-mcp-delivery
|
|
|
3
3
|
description: "Use when proving a Noodle Seed MCP project works at a named compile, local, connector, App, host, deployment, or production evidence level."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:292253cbaed9a3c5 -->
|
|
7
7
|
|
|
8
8
|
# verifying-mcp-delivery
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: wrapping-existing-applications
|
|
|
3
3
|
description: "Use when an existing application has no stable usable API and needs a read-only, identity-first Noodle Seed integration plan before implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.100.0 hash:379ab9f64878f1fe -->
|
|
7
7
|
|
|
8
8
|
# wrapping-existing-applications
|
|
9
9
|
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
- Tests
|
|
18
18
|
- Secrets and variables
|
|
19
19
|
- Embedded assistant
|
|
20
|
+
- Managed collections
|
|
20
21
|
- Boundaries
|
|
21
22
|
|
|
22
23
|
## Input paths
|
|
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
|
|
|
441
442
|
|
|
442
443
|
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
443
444
|
|
|
445
|
+
## Managed collections
|
|
446
|
+
|
|
447
|
+
Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
|
|
448
|
+
|
|
449
|
+
This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
|
|
450
|
+
|
|
444
451
|
## Boundaries
|
|
445
452
|
|
|
446
453
|
Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
|