@noodleseed/agent-kit 0.82.0 → 0.83.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.
Files changed (40) hide show
  1. package/manifest.json +267 -267
  2. package/package.json +1 -1
  3. package/skills/claude-code/SKILL.md +1 -1
  4. package/skills/claude-code/authoring-mcp-servers/SKILL.md +1 -1
  5. package/skills/claude-code/building-mcp-apps/SKILL.md +1 -1
  6. package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +1 -1
  7. package/skills/claude-code/creating-product-agent-guides/SKILL.md +1 -1
  8. package/skills/claude-code/debugging-mcp-delivery/SKILL.md +1 -1
  9. package/skills/claude-code/deploying-mcp-services/SKILL.md +1 -1
  10. package/skills/claude-code/designing-mcp-products/SKILL.md +1 -1
  11. package/skills/claude-code/embedding-mcp-assistants/SKILL.md +1 -1
  12. package/skills/claude-code/examples/acme-discovery/README.md +6 -2
  13. package/skills/claude-code/examples/acme-discovery/src/server.ts +2 -8
  14. package/skills/claude-code/examples/acme-discovery/test/server.test.ts +1 -0
  15. package/skills/claude-code/executing-noodle-plans/SKILL.md +1 -1
  16. package/skills/claude-code/publishing-mcp-integrations/SKILL.md +1 -1
  17. package/skills/claude-code/references/embedded-assistant.md +6 -7
  18. package/skills/claude-code/references/sdk-surface.md +1 -0
  19. package/skills/claude-code/reporting-noodle-feedback/SKILL.md +1 -1
  20. package/skills/claude-code/verifying-mcp-delivery/SKILL.md +1 -1
  21. package/skills/claude-code/wrapping-existing-applications/SKILL.md +1 -1
  22. package/skills/codex/SKILL.md +1 -1
  23. package/skills/codex/authoring-mcp-servers/SKILL.md +1 -1
  24. package/skills/codex/building-mcp-apps/SKILL.md +1 -1
  25. package/skills/codex/connecting-apis-to-mcp/SKILL.md +1 -1
  26. package/skills/codex/creating-product-agent-guides/SKILL.md +1 -1
  27. package/skills/codex/debugging-mcp-delivery/SKILL.md +1 -1
  28. package/skills/codex/deploying-mcp-services/SKILL.md +1 -1
  29. package/skills/codex/designing-mcp-products/SKILL.md +1 -1
  30. package/skills/codex/embedding-mcp-assistants/SKILL.md +1 -1
  31. package/skills/codex/examples/acme-discovery/README.md +6 -2
  32. package/skills/codex/examples/acme-discovery/src/server.ts +2 -8
  33. package/skills/codex/examples/acme-discovery/test/server.test.ts +1 -0
  34. package/skills/codex/executing-noodle-plans/SKILL.md +1 -1
  35. package/skills/codex/publishing-mcp-integrations/SKILL.md +1 -1
  36. package/skills/codex/references/embedded-assistant.md +6 -7
  37. package/skills/codex/references/sdk-surface.md +1 -0
  38. package/skills/codex/reporting-noodle-feedback/SKILL.md +1 -1
  39. package/skills/codex/verifying-mcp-delivery/SKILL.md +1 -1
  40. package/skills/codex/wrapping-existing-applications/SKILL.md +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodleseed/agent-kit",
3
- "version": "0.82.0",
3
+ "version": "0.83.0",
4
4
  "private": false,
5
5
  "description": "Self-checking, self-updating agent skills for the Noodle Seed CLI. Authored in this repo by @noodle-borg/agent-kit; this is the published, independently-versioned canonical skills artifact the CLI fetches and verifies.",
6
6
  "license": "Apache-2.0",
@@ -3,7 +3,7 @@ name: noodle-seed
3
3
  description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:13ddce01769caae4 -->
6
+ <!-- noodle-skill version:0.83.0 hash:13ddce01769caae4 -->
7
7
 
8
8
  # Noodle Seed
9
9
 
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
3
3
  description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:11523cb33b9473c0 -->
6
+ <!-- noodle-skill version:0.83.0 hash:11523cb33b9473c0 -->
7
7
 
8
8
  # authoring-mcp-servers
9
9
 
@@ -3,7 +3,7 @@ name: building-mcp-apps
3
3
  description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:9fd67d4d24328e15 -->
6
+ <!-- noodle-skill version:0.83.0 hash:9fd67d4d24328e15 -->
7
7
 
8
8
  # building-mcp-apps
9
9
 
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
3
3
  description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:21bbd3ec441ffd30 -->
6
+ <!-- noodle-skill version:0.83.0 hash:21bbd3ec441ffd30 -->
7
7
 
8
8
  # connecting-apis-to-mcp
9
9
 
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
3
3
  description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:0fa48a82fe836cf0 -->
6
+ <!-- noodle-skill version:0.83.0 hash:0fa48a82fe836cf0 -->
7
7
 
8
8
  # creating-product-agent-guides
9
9
 
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
3
3
  description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:aa715bae12041d7c -->
6
+ <!-- noodle-skill version:0.83.0 hash:aa715bae12041d7c -->
7
7
 
8
8
  # debugging-mcp-delivery
9
9
 
@@ -3,7 +3,7 @@ name: deploying-mcp-services
3
3
  description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:93e735b7ffb45df1 -->
6
+ <!-- noodle-skill version:0.83.0 hash:93e735b7ffb45df1 -->
7
7
 
8
8
  # deploying-mcp-services
9
9
 
@@ -3,7 +3,7 @@ name: designing-mcp-products
3
3
  description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:78a6f181b61f92f1 -->
6
+ <!-- noodle-skill version:0.83.0 hash:78a6f181b61f92f1 -->
7
7
 
8
8
  # designing-mcp-products
9
9
 
@@ -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.82.0 hash:cc54a67f21c0ecdb -->
6
+ <!-- noodle-skill version:0.83.0 hash:cc54a67f21c0ecdb -->
7
7
 
8
8
  # embedding-mcp-assistants
9
9
 
@@ -26,6 +26,9 @@ access: publicWebsite({
26
26
  ```
27
27
 
28
28
  There is no second tool set and no second app — one `server.ts`, projected onto another front door.
29
+ The flagship selects `model: noodleManaged()`, so an enrolled hosted deployment needs no customer model
30
+ endpoint, name, or key and its artifact remains provider-neutral. Sponsored beta enrollment is exact to the
31
+ org/app/environment and fails closed outside that cohort; `openAICompatible(...)` remains the BYO alternative.
29
32
  The surface `instructions` add only the website-specific voice and goal; shared product truth stays in
30
33
  `server.instructions`. This public guidance is injected into public assistant turns, never MCP
31
34
  `initialize` or another assistant surface.
@@ -105,5 +108,6 @@ noodle deploy --access owner-only
105
108
  noodle open
106
109
  ```
107
110
 
108
- This example has no connector secrets and does not include tokens, caller-key mechanisms, or
109
- `.env.noodle` values. All destinations, prices, and URLs are fictional.
111
+ This example has no connector or model secrets and does not include tokens, caller-key mechanisms, or
112
+ `.env.noodle` values. Hosted `noodleManaged()` inference requires Noodle to enroll the exact target before
113
+ serving; local validation and tool calls do not. All destinations, prices, and URLs are fictional.
@@ -3,13 +3,11 @@ import {
3
3
  embeddedAssistant,
4
4
  file,
5
5
  knowledge,
6
- openAICompatible,
6
+ noodleManaged,
7
7
  publicWebsite,
8
- secret,
9
8
  server,
10
9
  site,
11
10
  tool,
12
- variable,
13
11
  z,
14
12
  } from '@noodleseed/one';
15
13
 
@@ -249,11 +247,7 @@ export default server(
249
247
  // one glance, and closed by default when a tool is added to the server later. The knowledge
250
248
  // component projects its generated search capability the same way a tool does.
251
249
  assistant: embeddedAssistant({
252
- model: openAICompatible({
253
- baseUrl: variable('ASSISTANT_MODEL_BASE_URL'),
254
- model: variable('ASSISTANT_MODEL'),
255
- apiKey: secret('ASSISTANT_MODEL_API_KEY'),
256
- }),
250
+ model: noodleManaged(),
257
251
  access: publicWebsite({
258
252
  origins: ['https://getaways.acme.example'],
259
253
  capabilities: [destinations, discoverGetaways, createHandoff, shortlistGetaway],
@@ -24,6 +24,7 @@ describe('acme-discovery example', () => {
24
24
 
25
25
  it('gives the public website a consultative surface-specific goal', async () => {
26
26
  const manifest = await app.toManifest();
27
+ expect(manifest.server.assistant?.model).toEqual({ kind: 'noodle-managed' });
27
28
  expect(manifest.server.assistant?.surfaces?.[0]?.instructions).toContain(
28
29
  'friendly, consultative travel guide',
29
30
  );
@@ -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.82.0 hash:6a9f132ddb79352e -->
6
+ <!-- noodle-skill version:0.83.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.82.0 hash:efffbf82007f935d -->
6
+ <!-- noodle-skill version:0.83.0 hash:efffbf82007f935d -->
7
7
 
8
8
  # publishing-mcp-integrations
9
9
 
@@ -29,7 +29,8 @@ Keep every credential and identity layer separate:
29
29
  | Owner | Values | Destination |
30
30
  | --- | --- | --- |
31
31
  | Noodle operator | Login, selected org/app/env | Plugin-managed CLI profile and explicit target; never the SaaS runtime |
32
- | Noodle deployment | `ASSISTANT_MODEL_BASE_URL`, `ASSISTANT_MODEL`, `ASSISTANT_MODEL_API_KEY` | `noodle variables set` / `noodle secrets set`; never the SaaS environment |
32
+ | Noodle-managed model | No authored provider, model id, URL, or key | Hosted operator state; available only when Noodle has enrolled the exact org/app/env |
33
+ | Operator-provided model | `ASSISTANT_MODEL_BASE_URL`, `ASSISTANT_MODEL`, `ASSISTANT_MODEL_API_KEY` | `noodle variables set` / `noodle secrets set`; never the SaaS environment |
33
34
  | Connector/delegated exchange | Connector credentials and any customer-owned token-exchange client | Noodle managed configuration plus the matching customer backend secret manager |
34
35
  | SaaS backend | `NOODLE_SERVICE_URL`, `NOODLE_ASSISTANT_CLIENT_ID`, `NOODLE_ASSISTANT_CLIENT_SECRET`, `PUBLIC_APP_ORIGIN` | Backend-only environment or secret manager; never browser code or public-prefixed variables |
35
36
  | Browser | Short-lived assistant session only | In memory; never a client secret, model key, connector credential, or raw application session |
@@ -48,11 +49,7 @@ Use the same server tools in the embed; do not create a second tool set. Declare
48
49
  branding: { name: "Acme", accent: "#3157D5" },
49
50
  context: { defaults: { locale: "en-GB", timeZone: "Europe/London" } },
50
51
  assistant: embeddedAssistant({
51
- model: openAICompatible({
52
- baseUrl: variable("ASSISTANT_MODEL_BASE_URL"),
53
- model: variable("ASSISTANT_MODEL"),
54
- apiKey: secret("ASSISTANT_MODEL_API_KEY"),
55
- }),
52
+ model: noodleManaged(),
56
53
  access: authenticatedWebsite({
57
54
  origins: ["http://localhost:3000", "https://app.example.com"],
58
55
  }),
@@ -60,6 +57,8 @@ assistant: embeddedAssistant({
60
57
  }),
61
58
  ```
62
59
 
60
+ `noodleManaged()` is the zero-configuration Cloud path: the public artifact contains only `{ kind: "noodle-managed" }`. It never exposes a provider or model identifier, and it fails closed unless Noodle has enrolled that exact deployment target. For a customer- or self-hosted model, replace it with `openAICompatible({ baseUrl: variable("ASSISTANT_MODEL_BASE_URL"), model: variable("ASSISTANT_MODEL"), apiKey: secret("ASSISTANT_MODEL_API_KEY") })`; that remains the portable BYO path.
61
+
63
62
  Origins are exact: scheme, host, and optional port, with no path, trailing slash, or wildcard. Production origins must be HTTPS; plain HTTP is accepted only for loopback development origins (`http://localhost:<port>`, `http://127.0.0.1:<port>`). `noodle dev` serves the MCP project, not the embedding SaaS. For a public surface it also prints a process-local Embed ID and script; mount that script on the separately running loopback website to test anonymous mint, chat, widgets, and confirmation. The local ID is ephemeral, while a hosted deploy provisions the stable ID behind durable admission counters.
64
63
 
65
64
  ## Product workflow guidance
@@ -166,7 +165,7 @@ Local MCP authoring and tests need no account, but an external browser embed nee
166
165
  noodle deploy --org <org> --app <app> --env <env>
167
166
  ```
168
167
 
169
- Deploy preflights the complete target before upload. In an interactive terminal it collects all missing model variables and secrets, then continues. In a non-interactive run it reports every missing name and safe `noodle variables set ... --from-env` / `noodle secrets set ... --from-env` action; perform every action and repeat the same deploy command. Values never appear in the preflight report or resume state. Do not put these model values in the embedding SaaS environment. A production deployment may omit a local origin; include a loopback origin only when local browser integration is required.
168
+ Deploy preflights the complete target before upload. `noodleManaged()` has no customer model variables or secrets; enrollment is hosted operator state and an unenrolled target fails closed at serving time. `openAICompatible()` preflight collects or reports every missing model variable and secret with safe `noodle variables set ... --from-env` / `noodle secrets set ... --from-env` actions. Values never appear in the preflight report or resume state. Do not put BYO model values in the embedding SaaS environment. A production deployment may omit a local origin; include a loopback origin only when local browser integration is required.
170
169
 
171
170
  ## Access modes and customer auth
172
171
 
@@ -65,6 +65,7 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
65
65
  - `knowledge`
66
66
  - `managedSecret`
67
67
  - `meilisearch`
68
+ - `noodleManaged`
68
69
  - `openAICompatible`
69
70
  - `publicWebsite`
70
71
  - `site`
@@ -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.82.0 hash:0f404109f4845683 -->
6
+ <!-- noodle-skill version:0.83.0 hash:0f404109f4845683 -->
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.82.0 hash:6ef6ef551e26b78e -->
6
+ <!-- noodle-skill version:0.83.0 hash:6ef6ef551e26b78e -->
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.82.0 hash:eccc3c158dcafba8 -->
6
+ <!-- noodle-skill version:0.83.0 hash:eccc3c158dcafba8 -->
7
7
 
8
8
  # wrapping-existing-applications
9
9
 
@@ -3,7 +3,7 @@ name: noodle-seed
3
3
  description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:13ddce01769caae4 -->
6
+ <!-- noodle-skill version:0.83.0 hash:13ddce01769caae4 -->
7
7
 
8
8
  # Noodle Seed
9
9
 
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
3
3
  description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:11523cb33b9473c0 -->
6
+ <!-- noodle-skill version:0.83.0 hash:11523cb33b9473c0 -->
7
7
 
8
8
  # authoring-mcp-servers
9
9
 
@@ -3,7 +3,7 @@ name: building-mcp-apps
3
3
  description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:9fd67d4d24328e15 -->
6
+ <!-- noodle-skill version:0.83.0 hash:9fd67d4d24328e15 -->
7
7
 
8
8
  # building-mcp-apps
9
9
 
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
3
3
  description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:21bbd3ec441ffd30 -->
6
+ <!-- noodle-skill version:0.83.0 hash:21bbd3ec441ffd30 -->
7
7
 
8
8
  # connecting-apis-to-mcp
9
9
 
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
3
3
  description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:0fa48a82fe836cf0 -->
6
+ <!-- noodle-skill version:0.83.0 hash:0fa48a82fe836cf0 -->
7
7
 
8
8
  # creating-product-agent-guides
9
9
 
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
3
3
  description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:aa715bae12041d7c -->
6
+ <!-- noodle-skill version:0.83.0 hash:aa715bae12041d7c -->
7
7
 
8
8
  # debugging-mcp-delivery
9
9
 
@@ -3,7 +3,7 @@ name: deploying-mcp-services
3
3
  description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:93e735b7ffb45df1 -->
6
+ <!-- noodle-skill version:0.83.0 hash:93e735b7ffb45df1 -->
7
7
 
8
8
  # deploying-mcp-services
9
9
 
@@ -3,7 +3,7 @@ name: designing-mcp-products
3
3
  description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.82.0 hash:78a6f181b61f92f1 -->
6
+ <!-- noodle-skill version:0.83.0 hash:78a6f181b61f92f1 -->
7
7
 
8
8
  # designing-mcp-products
9
9
 
@@ -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.82.0 hash:cc54a67f21c0ecdb -->
6
+ <!-- noodle-skill version:0.83.0 hash:cc54a67f21c0ecdb -->
7
7
 
8
8
  # embedding-mcp-assistants
9
9
 
@@ -26,6 +26,9 @@ access: publicWebsite({
26
26
  ```
27
27
 
28
28
  There is no second tool set and no second app — one `server.ts`, projected onto another front door.
29
+ The flagship selects `model: noodleManaged()`, so an enrolled hosted deployment needs no customer model
30
+ endpoint, name, or key and its artifact remains provider-neutral. Sponsored beta enrollment is exact to the
31
+ org/app/environment and fails closed outside that cohort; `openAICompatible(...)` remains the BYO alternative.
29
32
  The surface `instructions` add only the website-specific voice and goal; shared product truth stays in
30
33
  `server.instructions`. This public guidance is injected into public assistant turns, never MCP
31
34
  `initialize` or another assistant surface.
@@ -105,5 +108,6 @@ noodle deploy --access owner-only
105
108
  noodle open
106
109
  ```
107
110
 
108
- This example has no connector secrets and does not include tokens, caller-key mechanisms, or
109
- `.env.noodle` values. All destinations, prices, and URLs are fictional.
111
+ This example has no connector or model secrets and does not include tokens, caller-key mechanisms, or
112
+ `.env.noodle` values. Hosted `noodleManaged()` inference requires Noodle to enroll the exact target before
113
+ serving; local validation and tool calls do not. All destinations, prices, and URLs are fictional.
@@ -3,13 +3,11 @@ import {
3
3
  embeddedAssistant,
4
4
  file,
5
5
  knowledge,
6
- openAICompatible,
6
+ noodleManaged,
7
7
  publicWebsite,
8
- secret,
9
8
  server,
10
9
  site,
11
10
  tool,
12
- variable,
13
11
  z,
14
12
  } from '@noodleseed/one';
15
13
 
@@ -249,11 +247,7 @@ export default server(
249
247
  // one glance, and closed by default when a tool is added to the server later. The knowledge
250
248
  // component projects its generated search capability the same way a tool does.
251
249
  assistant: embeddedAssistant({
252
- model: openAICompatible({
253
- baseUrl: variable('ASSISTANT_MODEL_BASE_URL'),
254
- model: variable('ASSISTANT_MODEL'),
255
- apiKey: secret('ASSISTANT_MODEL_API_KEY'),
256
- }),
250
+ model: noodleManaged(),
257
251
  access: publicWebsite({
258
252
  origins: ['https://getaways.acme.example'],
259
253
  capabilities: [destinations, discoverGetaways, createHandoff, shortlistGetaway],
@@ -24,6 +24,7 @@ describe('acme-discovery example', () => {
24
24
 
25
25
  it('gives the public website a consultative surface-specific goal', async () => {
26
26
  const manifest = await app.toManifest();
27
+ expect(manifest.server.assistant?.model).toEqual({ kind: 'noodle-managed' });
27
28
  expect(manifest.server.assistant?.surfaces?.[0]?.instructions).toContain(
28
29
  'friendly, consultative travel guide',
29
30
  );
@@ -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.82.0 hash:6a9f132ddb79352e -->
6
+ <!-- noodle-skill version:0.83.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.82.0 hash:efffbf82007f935d -->
6
+ <!-- noodle-skill version:0.83.0 hash:efffbf82007f935d -->
7
7
 
8
8
  # publishing-mcp-integrations
9
9
 
@@ -29,7 +29,8 @@ Keep every credential and identity layer separate:
29
29
  | Owner | Values | Destination |
30
30
  | --- | --- | --- |
31
31
  | Noodle operator | Login, selected org/app/env | Plugin-managed CLI profile and explicit target; never the SaaS runtime |
32
- | Noodle deployment | `ASSISTANT_MODEL_BASE_URL`, `ASSISTANT_MODEL`, `ASSISTANT_MODEL_API_KEY` | `noodle variables set` / `noodle secrets set`; never the SaaS environment |
32
+ | Noodle-managed model | No authored provider, model id, URL, or key | Hosted operator state; available only when Noodle has enrolled the exact org/app/env |
33
+ | Operator-provided model | `ASSISTANT_MODEL_BASE_URL`, `ASSISTANT_MODEL`, `ASSISTANT_MODEL_API_KEY` | `noodle variables set` / `noodle secrets set`; never the SaaS environment |
33
34
  | Connector/delegated exchange | Connector credentials and any customer-owned token-exchange client | Noodle managed configuration plus the matching customer backend secret manager |
34
35
  | SaaS backend | `NOODLE_SERVICE_URL`, `NOODLE_ASSISTANT_CLIENT_ID`, `NOODLE_ASSISTANT_CLIENT_SECRET`, `PUBLIC_APP_ORIGIN` | Backend-only environment or secret manager; never browser code or public-prefixed variables |
35
36
  | Browser | Short-lived assistant session only | In memory; never a client secret, model key, connector credential, or raw application session |
@@ -48,11 +49,7 @@ Use the same server tools in the embed; do not create a second tool set. Declare
48
49
  branding: { name: "Acme", accent: "#3157D5" },
49
50
  context: { defaults: { locale: "en-GB", timeZone: "Europe/London" } },
50
51
  assistant: embeddedAssistant({
51
- model: openAICompatible({
52
- baseUrl: variable("ASSISTANT_MODEL_BASE_URL"),
53
- model: variable("ASSISTANT_MODEL"),
54
- apiKey: secret("ASSISTANT_MODEL_API_KEY"),
55
- }),
52
+ model: noodleManaged(),
56
53
  access: authenticatedWebsite({
57
54
  origins: ["http://localhost:3000", "https://app.example.com"],
58
55
  }),
@@ -60,6 +57,8 @@ assistant: embeddedAssistant({
60
57
  }),
61
58
  ```
62
59
 
60
+ `noodleManaged()` is the zero-configuration Cloud path: the public artifact contains only `{ kind: "noodle-managed" }`. It never exposes a provider or model identifier, and it fails closed unless Noodle has enrolled that exact deployment target. For a customer- or self-hosted model, replace it with `openAICompatible({ baseUrl: variable("ASSISTANT_MODEL_BASE_URL"), model: variable("ASSISTANT_MODEL"), apiKey: secret("ASSISTANT_MODEL_API_KEY") })`; that remains the portable BYO path.
61
+
63
62
  Origins are exact: scheme, host, and optional port, with no path, trailing slash, or wildcard. Production origins must be HTTPS; plain HTTP is accepted only for loopback development origins (`http://localhost:<port>`, `http://127.0.0.1:<port>`). `noodle dev` serves the MCP project, not the embedding SaaS. For a public surface it also prints a process-local Embed ID and script; mount that script on the separately running loopback website to test anonymous mint, chat, widgets, and confirmation. The local ID is ephemeral, while a hosted deploy provisions the stable ID behind durable admission counters.
64
63
 
65
64
  ## Product workflow guidance
@@ -166,7 +165,7 @@ Local MCP authoring and tests need no account, but an external browser embed nee
166
165
  noodle deploy --org <org> --app <app> --env <env>
167
166
  ```
168
167
 
169
- Deploy preflights the complete target before upload. In an interactive terminal it collects all missing model variables and secrets, then continues. In a non-interactive run it reports every missing name and safe `noodle variables set ... --from-env` / `noodle secrets set ... --from-env` action; perform every action and repeat the same deploy command. Values never appear in the preflight report or resume state. Do not put these model values in the embedding SaaS environment. A production deployment may omit a local origin; include a loopback origin only when local browser integration is required.
168
+ Deploy preflights the complete target before upload. `noodleManaged()` has no customer model variables or secrets; enrollment is hosted operator state and an unenrolled target fails closed at serving time. `openAICompatible()` preflight collects or reports every missing model variable and secret with safe `noodle variables set ... --from-env` / `noodle secrets set ... --from-env` actions. Values never appear in the preflight report or resume state. Do not put BYO model values in the embedding SaaS environment. A production deployment may omit a local origin; include a loopback origin only when local browser integration is required.
170
169
 
171
170
  ## Access modes and customer auth
172
171
 
@@ -65,6 +65,7 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
65
65
  - `knowledge`
66
66
  - `managedSecret`
67
67
  - `meilisearch`
68
+ - `noodleManaged`
68
69
  - `openAICompatible`
69
70
  - `publicWebsite`
70
71
  - `site`
@@ -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.82.0 hash:0f404109f4845683 -->
6
+ <!-- noodle-skill version:0.83.0 hash:0f404109f4845683 -->
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.82.0 hash:6ef6ef551e26b78e -->
6
+ <!-- noodle-skill version:0.83.0 hash:6ef6ef551e26b78e -->
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.82.0 hash:eccc3c158dcafba8 -->
6
+ <!-- noodle-skill version:0.83.0 hash:eccc3c158dcafba8 -->
7
7
 
8
8
  # wrapping-existing-applications
9
9