@noodleseed/one 0.158.0 → 0.160.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/dist/commands/deploy-first-flow.d.ts +1 -1
- package/dist/commands/deploy-first-flow.d.ts.map +1 -1
- package/dist/commands/deploy-first-flow.js +4 -193
- package/dist/commands/deploy-first-flow.js.map +1 -1
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +25 -1
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-preflight-command.d.ts +8 -0
- package/dist/commands/deploy-preflight-command.d.ts.map +1 -0
- package/dist/commands/deploy-preflight-command.js +78 -0
- package/dist/commands/deploy-preflight-command.js.map +1 -0
- package/dist/commands/deploy-preflight-output.d.ts +18 -0
- package/dist/commands/deploy-preflight-output.d.ts.map +1 -0
- package/dist/commands/deploy-preflight-output.js +176 -0
- package/dist/commands/deploy-preflight-output.js.map +1 -0
- package/dist/commands/deploy-preflight.d.ts +6 -1
- package/dist/commands/deploy-preflight.d.ts.map +1 -1
- package/dist/commands/deploy-preflight.js +24 -0
- package/dist/commands/deploy-preflight.js.map +1 -1
- package/dist/commands/deploy-target.d.ts +1 -0
- package/dist/commands/deploy-target.d.ts.map +1 -1
- package/dist/commands/deploy-target.js +9 -8
- package/dist/commands/deploy-target.js.map +1 -1
- package/dist/openapi-import.d.ts.map +1 -1
- package/dist/openapi-import.js +51 -23
- package/dist/openapi-import.js.map +1 -1
- package/dist/plugin-mode/build-readiness-recorder.d.ts.map +1 -1
- package/dist/plugin-mode/build-readiness-recorder.js +3 -0
- package/dist/plugin-mode/build-readiness-recorder.js.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.d.ts +120 -1
- package/dist/plugin-mode/plugin-operation-contract.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.js +32 -1
- package/dist/plugin-mode/plugin-operation-contract.js.map +1 -1
- package/dist/plugin-mode/plugin-operation-tools.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-tools.js +47 -2
- package/dist/plugin-mode/plugin-operation-tools.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-verification-ref.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-deployment.js +85 -68
- package/node_modules/@noodle-borg/control-plane/dist/contracts.d.ts +5 -0
- package/node_modules/@noodle-borg/control-plane/dist/contracts.js +9 -0
- package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.d.ts +16 -1
- package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.js +18 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +1 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
- package/node_modules/@noodle-borg/openapi-import/dist/index.js +76 -53
- package/node_modules/@noodle-borg/openapi-import/dist/request-body.js +125 -0
- package/node_modules/@noodle-borg/openapi-import/dist/request-input.js +139 -0
- package/node_modules/@noodle-borg/openapi-import/dist/response-schema.js +17 -4
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +21 -11
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/package.json +2 -2
|
@@ -8,6 +8,53 @@ export declare const cloudTargetInputSchema: z.ZodObject<{
|
|
|
8
8
|
environment: z.ZodString;
|
|
9
9
|
}, z.core.$strict>;
|
|
10
10
|
export type CloudTargetInput = z.infer<typeof cloudTargetInputSchema>;
|
|
11
|
+
export declare const preflightInputSchema: z.ZodObject<{
|
|
12
|
+
workspaceHandle: z.ZodString;
|
|
13
|
+
org: z.ZodString;
|
|
14
|
+
app: z.ZodString;
|
|
15
|
+
environment: z.ZodString;
|
|
16
|
+
version: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
export declare const preflightReportSchema: z.ZodObject<{
|
|
19
|
+
ok: z.ZodLiteral<true>;
|
|
20
|
+
ready: z.ZodBoolean;
|
|
21
|
+
ownerSubject: z.ZodOptional<z.ZodString>;
|
|
22
|
+
target: z.ZodObject<{
|
|
23
|
+
org: z.ZodString;
|
|
24
|
+
app: z.ZodString;
|
|
25
|
+
env: z.ZodString;
|
|
26
|
+
appState: z.ZodEnum<{
|
|
27
|
+
existing: "existing";
|
|
28
|
+
"will-create": "will-create";
|
|
29
|
+
}>;
|
|
30
|
+
environmentState: z.ZodEnum<{
|
|
31
|
+
existing: "existing";
|
|
32
|
+
"will-create": "will-create";
|
|
33
|
+
}>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
config: z.ZodObject<{
|
|
36
|
+
ready: z.ZodBoolean;
|
|
37
|
+
missingSecrets: z.ZodArray<z.ZodString>;
|
|
38
|
+
missingVariables: z.ZodArray<z.ZodString>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
errors: z.ZodArray<z.ZodObject<{
|
|
41
|
+
code: z.ZodString;
|
|
42
|
+
path: z.ZodString;
|
|
43
|
+
message: z.ZodString;
|
|
44
|
+
}, z.core.$strip>>;
|
|
45
|
+
published: z.ZodLiteral<false>;
|
|
46
|
+
serverVersion: z.ZodString;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export declare const preflightDiagnosticsSchema: z.ZodObject<{
|
|
49
|
+
missingSecrets: z.ZodArray<z.ZodString>;
|
|
50
|
+
missingVariables: z.ZodArray<z.ZodString>;
|
|
51
|
+
actions: z.ZodArray<z.ZodString>;
|
|
52
|
+
errors: z.ZodArray<z.ZodObject<{
|
|
53
|
+
code: z.ZodString;
|
|
54
|
+
path: z.ZodString;
|
|
55
|
+
message: z.ZodString;
|
|
56
|
+
}, z.core.$strip>>;
|
|
57
|
+
}, z.core.$strip>;
|
|
11
58
|
export declare const setupInputSchema: z.ZodObject<{
|
|
12
59
|
workspaceHandle: z.ZodString;
|
|
13
60
|
mode: z.ZodEnum<{
|
|
@@ -131,6 +178,7 @@ export declare const feedbackSubmitInputSchema: z.ZodObject<{
|
|
|
131
178
|
declare const operationDataSchema: z.ZodObject<{
|
|
132
179
|
operation: z.ZodEnum<{
|
|
133
180
|
link: "link";
|
|
181
|
+
preflight: "preflight";
|
|
134
182
|
initialize: "initialize";
|
|
135
183
|
reconcile: "reconcile";
|
|
136
184
|
"set-variable": "set-variable";
|
|
@@ -191,12 +239,43 @@ declare const operationDataSchema: z.ZodObject<{
|
|
|
191
239
|
"local-synthetic": "local-synthetic";
|
|
192
240
|
}>;
|
|
193
241
|
}, z.core.$strip>>;
|
|
242
|
+
preflight: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
ok: z.ZodLiteral<true>;
|
|
244
|
+
ready: z.ZodBoolean;
|
|
245
|
+
ownerSubject: z.ZodOptional<z.ZodString>;
|
|
246
|
+
target: z.ZodObject<{
|
|
247
|
+
org: z.ZodString;
|
|
248
|
+
app: z.ZodString;
|
|
249
|
+
env: z.ZodString;
|
|
250
|
+
appState: z.ZodEnum<{
|
|
251
|
+
existing: "existing";
|
|
252
|
+
"will-create": "will-create";
|
|
253
|
+
}>;
|
|
254
|
+
environmentState: z.ZodEnum<{
|
|
255
|
+
existing: "existing";
|
|
256
|
+
"will-create": "will-create";
|
|
257
|
+
}>;
|
|
258
|
+
}, z.core.$strip>;
|
|
259
|
+
config: z.ZodObject<{
|
|
260
|
+
ready: z.ZodBoolean;
|
|
261
|
+
missingSecrets: z.ZodArray<z.ZodString>;
|
|
262
|
+
missingVariables: z.ZodArray<z.ZodString>;
|
|
263
|
+
}, z.core.$strip>;
|
|
264
|
+
errors: z.ZodArray<z.ZodObject<{
|
|
265
|
+
code: z.ZodString;
|
|
266
|
+
path: z.ZodString;
|
|
267
|
+
message: z.ZodString;
|
|
268
|
+
}, z.core.$strip>>;
|
|
269
|
+
published: z.ZodLiteral<false>;
|
|
270
|
+
serverVersion: z.ZodString;
|
|
271
|
+
}, z.core.$strip>>;
|
|
194
272
|
}, z.core.$strict>;
|
|
195
273
|
export declare const operationResultSchema: z.ZodObject<{
|
|
196
274
|
ok: z.ZodBoolean;
|
|
197
275
|
data: z.ZodOptional<z.ZodObject<{
|
|
198
276
|
operation: z.ZodEnum<{
|
|
199
277
|
link: "link";
|
|
278
|
+
preflight: "preflight";
|
|
200
279
|
initialize: "initialize";
|
|
201
280
|
reconcile: "reconcile";
|
|
202
281
|
"set-variable": "set-variable";
|
|
@@ -257,6 +336,36 @@ export declare const operationResultSchema: z.ZodObject<{
|
|
|
257
336
|
"local-synthetic": "local-synthetic";
|
|
258
337
|
}>;
|
|
259
338
|
}, z.core.$strip>>;
|
|
339
|
+
preflight: z.ZodOptional<z.ZodObject<{
|
|
340
|
+
ok: z.ZodLiteral<true>;
|
|
341
|
+
ready: z.ZodBoolean;
|
|
342
|
+
ownerSubject: z.ZodOptional<z.ZodString>;
|
|
343
|
+
target: z.ZodObject<{
|
|
344
|
+
org: z.ZodString;
|
|
345
|
+
app: z.ZodString;
|
|
346
|
+
env: z.ZodString;
|
|
347
|
+
appState: z.ZodEnum<{
|
|
348
|
+
existing: "existing";
|
|
349
|
+
"will-create": "will-create";
|
|
350
|
+
}>;
|
|
351
|
+
environmentState: z.ZodEnum<{
|
|
352
|
+
existing: "existing";
|
|
353
|
+
"will-create": "will-create";
|
|
354
|
+
}>;
|
|
355
|
+
}, z.core.$strip>;
|
|
356
|
+
config: z.ZodObject<{
|
|
357
|
+
ready: z.ZodBoolean;
|
|
358
|
+
missingSecrets: z.ZodArray<z.ZodString>;
|
|
359
|
+
missingVariables: z.ZodArray<z.ZodString>;
|
|
360
|
+
}, z.core.$strip>;
|
|
361
|
+
errors: z.ZodArray<z.ZodObject<{
|
|
362
|
+
code: z.ZodString;
|
|
363
|
+
path: z.ZodString;
|
|
364
|
+
message: z.ZodString;
|
|
365
|
+
}, z.core.$strip>>;
|
|
366
|
+
published: z.ZodLiteral<false>;
|
|
367
|
+
serverVersion: z.ZodString;
|
|
368
|
+
}, z.core.$strip>>;
|
|
260
369
|
}, z.core.$strict>>;
|
|
261
370
|
error: z.ZodOptional<z.ZodObject<{
|
|
262
371
|
code: z.ZodString;
|
|
@@ -307,6 +416,16 @@ export declare const operationResultSchema: z.ZodObject<{
|
|
|
307
416
|
"local-synthetic": "local-synthetic";
|
|
308
417
|
}>;
|
|
309
418
|
}, z.core.$strip>>;
|
|
419
|
+
preflight: z.ZodOptional<z.ZodObject<{
|
|
420
|
+
missingSecrets: z.ZodArray<z.ZodString>;
|
|
421
|
+
missingVariables: z.ZodArray<z.ZodString>;
|
|
422
|
+
actions: z.ZodArray<z.ZodString>;
|
|
423
|
+
errors: z.ZodArray<z.ZodObject<{
|
|
424
|
+
code: z.ZodString;
|
|
425
|
+
path: z.ZodString;
|
|
426
|
+
message: z.ZodString;
|
|
427
|
+
}, z.core.$strip>>;
|
|
428
|
+
}, z.core.$strip>>;
|
|
310
429
|
}, z.core.$strict>>;
|
|
311
430
|
}, z.core.$strict>;
|
|
312
431
|
export declare const READ_ONLY: {
|
|
@@ -336,6 +455,6 @@ export declare function targetData(target: CloudTargetInput): {
|
|
|
336
455
|
environment: string;
|
|
337
456
|
};
|
|
338
457
|
export declare function operationSuccess(message: string, data: z.infer<typeof operationDataSchema>): CallToolResult;
|
|
339
|
-
export declare function operationFailure(code: string, message: string, command: string, next?: string, setup?: BootstrapStatus): CallToolResult;
|
|
458
|
+
export declare function operationFailure(code: string, message: string, command: string, next?: string, setup?: BootstrapStatus, preflight?: z.infer<typeof preflightDiagnosticsSchema>): CallToolResult;
|
|
340
459
|
export {};
|
|
341
460
|
//# sourceMappingURL=plugin-operation-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-operation-contract.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-operation-contract.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,gCAAgC,CAAC;AAa7F,eAAO,MAAM,sBAAsB;;;;;kBAA+B,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,oBAAoB;;;;;;kBAE/B,CAAC;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa/B,CAAC;AACJ,eAAO,MAAM,0BAA0B;;;;;;;;;iBAarC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;kBAM3B,CAAC;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;kBAK1B,CAAC;AACH,eAAO,MAAM,mBAAmB;;;;;;;kBAI9B,CAAC;AACH,eAAO,MAAM,iBAAiB;;;;;;;kBAI5B,CAAC;AA0BH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAiC,CAAC;AACzE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAGpC,CAAC;AAQH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBvB,CAAC;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoB9B,CAAC;AAEL,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AACX,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AACX,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAavE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAElE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB;;;;;EAOlD;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GACxC,cAAc,CAKhB;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,eAAe,EACvB,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GACrD,cAAc,CAgBhB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { SERVER_VERSION_PATTERN } from '@noodle-borg/module';
|
|
1
2
|
import { CONFIG_NAME_PATTERN, SLUG_PATTERN } from '@noodle-borg/service/local';
|
|
3
|
+
import { deployPreflightResponseSchema } from '@noodle-borg/wire-contracts';
|
|
2
4
|
import { z } from 'zod';
|
|
3
5
|
import { bootstrapStatusSchema } from '../project-bootstrap-report.js';
|
|
4
6
|
const handleSchema = z.string().regex(/^[A-Za-z0-9_-]{22,128}$/);
|
|
@@ -12,6 +14,31 @@ const targetFields = {
|
|
|
12
14
|
environment: slugSchema,
|
|
13
15
|
};
|
|
14
16
|
export const cloudTargetInputSchema = z.strictObject(targetFields);
|
|
17
|
+
export const preflightInputSchema = cloudTargetInputSchema.extend({
|
|
18
|
+
version: z.string().regex(SERVER_VERSION_PATTERN).max(64).optional(),
|
|
19
|
+
});
|
|
20
|
+
export const preflightReportSchema = deployPreflightResponseSchema
|
|
21
|
+
.extend({
|
|
22
|
+
published: z.literal(false),
|
|
23
|
+
serverVersion: z.string(),
|
|
24
|
+
})
|
|
25
|
+
.refine((value) => value.ready &&
|
|
26
|
+
value.config.ready &&
|
|
27
|
+
value.errors.length === 0 &&
|
|
28
|
+
value.config.missingSecrets.length === 0 &&
|
|
29
|
+
value.config.missingVariables.length === 0, 'preflight success requires consistent readiness');
|
|
30
|
+
export const preflightDiagnosticsSchema = z.object({
|
|
31
|
+
missingSecrets: z.array(configNameSchema).max(256),
|
|
32
|
+
missingVariables: z.array(configNameSchema).max(256),
|
|
33
|
+
actions: z.array(z.string().startsWith('noodle ').max(2048)).max(512),
|
|
34
|
+
errors: z
|
|
35
|
+
.array(z.object({
|
|
36
|
+
code: z.string().max(128),
|
|
37
|
+
path: z.string().max(1024),
|
|
38
|
+
message: z.string().max(2048),
|
|
39
|
+
}))
|
|
40
|
+
.max(256),
|
|
41
|
+
});
|
|
15
42
|
export const setupInputSchema = z.strictObject({
|
|
16
43
|
workspaceHandle: handleSchema,
|
|
17
44
|
mode: z.enum(['initialize', 'reconcile']),
|
|
@@ -73,6 +100,7 @@ const targetDataSchema = z.strictObject({
|
|
|
73
100
|
});
|
|
74
101
|
const operationDataSchema = z.strictObject({
|
|
75
102
|
operation: z.enum([
|
|
103
|
+
'preflight',
|
|
76
104
|
'initialize',
|
|
77
105
|
'reconcile',
|
|
78
106
|
'link',
|
|
@@ -86,6 +114,7 @@ const operationDataSchema = z.strictObject({
|
|
|
86
114
|
name: configNameSchema.optional(),
|
|
87
115
|
reference: z.string().max(200).optional(),
|
|
88
116
|
setup: bootstrapStatusSchema.optional(),
|
|
117
|
+
preflight: preflightReportSchema.optional(),
|
|
89
118
|
});
|
|
90
119
|
export const operationResultSchema = z
|
|
91
120
|
.strictObject({
|
|
@@ -98,6 +127,7 @@ export const operationResultSchema = z
|
|
|
98
127
|
command: z.string().optional(),
|
|
99
128
|
next: z.string().optional(),
|
|
100
129
|
setup: bootstrapStatusSchema.optional(),
|
|
130
|
+
preflight: preflightDiagnosticsSchema.optional(),
|
|
101
131
|
})
|
|
102
132
|
.optional(),
|
|
103
133
|
})
|
|
@@ -156,7 +186,7 @@ export function operationSuccess(message, data) {
|
|
|
156
186
|
structuredContent: { ok: true, data },
|
|
157
187
|
};
|
|
158
188
|
}
|
|
159
|
-
export function operationFailure(code, message, command, next, setup) {
|
|
189
|
+
export function operationFailure(code, message, command, next, setup, preflight) {
|
|
160
190
|
return {
|
|
161
191
|
isError: true,
|
|
162
192
|
content: [{ type: 'text', text: message }],
|
|
@@ -168,6 +198,7 @@ export function operationFailure(code, message, command, next, setup) {
|
|
|
168
198
|
command,
|
|
169
199
|
...(next === undefined ? {} : { next }),
|
|
170
200
|
...(setup === undefined ? {} : { setup }),
|
|
201
|
+
...(preflight === undefined ? {} : { preflight }),
|
|
171
202
|
},
|
|
172
203
|
},
|
|
173
204
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-operation-contract.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-contract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin-operation-contract.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-operation-tools.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-operation-tools.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK9E,OAAO,KAAK,EAGV,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,gBAAgB,EAkBtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,KAAK,gBAAgB,EACrB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAIxC,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CACtE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CA+C5E;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CA+KnF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAyBzE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAErC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAEpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAW7E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { normalizeDeployVersion } from '@noodle-borg/deploy-client';
|
|
1
2
|
import { bootstrapStatusSchema } from '../project-bootstrap-report.js';
|
|
2
|
-
import { CLOUD_MUTATION, feedbackPreviewInputSchema, feedbackSubmitInputSchema, LOCAL_MUTATION, linkInputSchema, operationFailure, operationResultSchema, operationSuccess, publicTargetFlags, READ_ONLY, secretInputSchema, setupInputSchema, targetData, targetFlags, variableInputSchema, } from './plugin-operation-contract.js';
|
|
3
|
+
import { CLOUD_MUTATION, feedbackPreviewInputSchema, feedbackSubmitInputSchema, LOCAL_MUTATION, linkInputSchema, operationFailure, operationResultSchema, operationSuccess, preflightDiagnosticsSchema, preflightInputSchema, preflightReportSchema, publicTargetFlags, READ_ONLY, secretInputSchema, setupInputSchema, targetData, targetFlags, variableInputSchema, } from './plugin-operation-contract.js';
|
|
3
4
|
export { cloudTargetInputSchema, } from './plugin-operation-contract.js';
|
|
4
5
|
const PLUGIN_SECRET_INPUT_ENVIRONMENT = 'NOODLE_PLUGIN_SECRET_INPUT';
|
|
5
6
|
export function registerSetupProjectTool(options) {
|
|
@@ -40,6 +41,41 @@ export function registerSetupProjectTool(options) {
|
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
export function registerCloudConfigurationTools(options) {
|
|
44
|
+
options.server.registerTool('preflight_build', {
|
|
45
|
+
title: 'Inspect deployment readiness',
|
|
46
|
+
description: 'Check the authored project against an explicit hosted target using existing access. Does not link, configure, upload or publish; reports all available prerequisite findings.',
|
|
47
|
+
inputSchema: preflightInputSchema,
|
|
48
|
+
outputSchema: operationResultSchema,
|
|
49
|
+
annotations: { ...READ_ONLY, openWorldHint: true },
|
|
50
|
+
}, async (input) => {
|
|
51
|
+
const denied = options.assertScope(input.workspaceHandle);
|
|
52
|
+
if (denied !== undefined)
|
|
53
|
+
return denied;
|
|
54
|
+
const args = [
|
|
55
|
+
'preflight',
|
|
56
|
+
...deployCommandArgs(input),
|
|
57
|
+
...(input.version === undefined ? [] : ['--version', input.version]),
|
|
58
|
+
];
|
|
59
|
+
const command = `noodle deploy ${args.join(' ')}`;
|
|
60
|
+
const result = await runPublic(options, { command: 'deploy', args }, command);
|
|
61
|
+
if (!result.ok)
|
|
62
|
+
return result.failure;
|
|
63
|
+
const report = preflightReportSchema.safeParse(result.data);
|
|
64
|
+
if (!report.success ||
|
|
65
|
+
report.data.target.org !== input.org ||
|
|
66
|
+
report.data.target.app !== input.app ||
|
|
67
|
+
report.data.target.env !== input.environment ||
|
|
68
|
+
(input.version !== undefined &&
|
|
69
|
+
report.data.serverVersion !== normalizeDeployVersion(input.version))) {
|
|
70
|
+
return operationFailure('invalid_preflight_report', 'The command did not return consistent readiness for the requested target.', command, command);
|
|
71
|
+
}
|
|
72
|
+
return operationSuccess('Preflight ready. Nothing was published; backend operations and host behavior require separate verification.', {
|
|
73
|
+
operation: 'preflight',
|
|
74
|
+
command,
|
|
75
|
+
target: targetData(input),
|
|
76
|
+
preflight: report.data,
|
|
77
|
+
});
|
|
78
|
+
});
|
|
43
79
|
options.server.registerTool('link_cloud_project', {
|
|
44
80
|
title: 'Link cloud project',
|
|
45
81
|
description: 'Validate live organization access, write one exact project link, and confirm the saved target.',
|
|
@@ -273,9 +309,18 @@ async function runPublic(options, request, publicCommand) {
|
|
|
273
309
|
'The public Noodle command did not complete successfully.';
|
|
274
310
|
const upstreamNext = stringProperty(error, 'next');
|
|
275
311
|
const next = upstreamNext?.startsWith('noodle ') ? upstreamNext : publicCommand;
|
|
312
|
+
const detail = recordProperty(error, 'detail');
|
|
313
|
+
const preflight = request.command === 'deploy' && request.args[0] === 'preflight'
|
|
314
|
+
? preflightDiagnosticsSchema.safeParse({
|
|
315
|
+
missingSecrets: recordProperty(detail, 'missingSecrets'),
|
|
316
|
+
missingVariables: recordProperty(detail, 'missingVariables'),
|
|
317
|
+
actions: recordProperty(detail, 'actions'),
|
|
318
|
+
errors: recordProperty(error, 'errors'),
|
|
319
|
+
})
|
|
320
|
+
: undefined;
|
|
276
321
|
return {
|
|
277
322
|
ok: false,
|
|
278
|
-
failure: operationFailure(code, message, publicCommand, next),
|
|
323
|
+
failure: operationFailure(code, message, publicCommand, next, undefined, preflight?.success ? preflight.data : undefined),
|
|
279
324
|
};
|
|
280
325
|
}
|
|
281
326
|
function parseEnvelope(stdout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-operation-tools.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-operation-tools.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-operation-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,7 +104,7 @@ export const BUNDLED_EXAMPLE_FILES = [
|
|
|
104
104
|
{ relPath: "examples/stateful-draft/test/draft-card.test.tsx", content: "// @vitest-environment happy-dom\nimport { act } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { afterEach, beforeEach, expect, it, vi } from 'vitest';\n\nconst callTool = vi.fn();\nconst followUp = vi.fn();\nconst initial = {\n value: { title: 'Team launch', audience: 'New teammates', goal: 'Complete their first project' },\n revision: 4,\n status: 'active',\n};\nlet entry: unknown = initial;\nvi.mock('../src/helpers.js', () => ({\n useToolInfo: () => ({ structuredContent: entry }),\n useCallTool: () => ({ callTool }),\n useSendFollowUpMessage: () => followUp,\n}));\n\nimport DraftCard from '../src/views/draft-card.js';\n\nlet host: HTMLDivElement;\nlet root: ReturnType<typeof createRoot>;\nbeforeEach(async () => {\n vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);\n callTool.mockReset();\n followUp.mockReset();\n entry = initial;\n host = document.createElement('div');\n document.body.append(host);\n root = createRoot(host);\n await act(async () => root.render(<DraftCard />));\n});\nafterEach(() => {\n act(() => root.unmount());\n host.remove();\n});\nfunction button(label: string) {\n const found = [...host.querySelectorAll('button')].find((entry) => entry.textContent === label);\n if (!found) throw new Error(`Missing button: ${label}`);\n return found;\n}\n\nit('saves using the server revision and displays only the returned result', async () => {\n callTool.mockResolvedValue({ structuredContent: { ...initial, revision: 8 } });\n await act(async () => button('Save brief').click());\n expect(callTool).toHaveBeenCalledWith({ ...initial.value, expectedRevision: 4 });\n expect(host.textContent).toContain('Your brief is saved.');\n expect(button('Continue with an account').disabled).toBe(false);\n});\n\nit('shows a proposed brief without pretending it is already saved', async () => {\n entry = { value: {}, revision: 0, status: 'active', proposal: initial.value };\n await act(async () => root.render(<DraftCard />));\n expect(host.querySelector('input')?.value).toBe('Team launch');\n expect(button('Continue with an account').disabled).toBe(true);\n callTool.mockResolvedValue({ structuredContent: { ...initial, revision: 1 } });\n await act(async () => button('Save brief').click());\n expect(callTool).toHaveBeenCalledWith({ ...initial.value, expectedRevision: 0 });\n});\n\nit('does not invent a save when confirmation is pending or the response is missing', async () => {\n callTool.mockResolvedValue({});\n await act(async () => button('Save brief').click());\n expect(host.textContent).not.toContain('Your brief is saved.');\n expect(host.textContent).toContain('No save was confirmed.');\n});\n\nit('retains edits on a stale write and requires a reload before another save', async () => {\n callTool.mockResolvedValue({ isError: true });\n await act(async () => button('Save brief').click());\n expect(host.querySelector('input')?.value).toBe('Team launch');\n expect(button('Save brief').disabled).toBe(true);\n expect(host.textContent).toContain('Reload saved');\n callTool.mockResolvedValue({ structuredContent: { ...initial, revision: 7 } });\n await act(async () => button('Reload saved').click());\n await act(async () => button('Save brief').click());\n expect(callTool).toHaveBeenLastCalledWith({ ...initial.value, expectedRevision: 7 });\n});\n\nit('keeps continuing separate from saving and makes no project-creation claim', async () => {\n await act(async () => button('Continue with an account').click());\n expect(callTool).not.toHaveBeenCalled();\n expect(followUp).toHaveBeenCalledWith({\n prompt: 'I would like to continue with my saved brief in an account.',\n });\n expect(host.textContent).not.toContain('Project created');\n});\n" },
|
|
105
105
|
{ relPath: "examples/stateful-draft/test/server.test.ts", content: "import { fileURLToPath } from 'node:url';\nimport { validate } from '@noodleseed/one';\nimport { describe, expect, it } from 'vitest';\nimport app from '../src/server.js';\n\ndescribe('stateful draft onboarding reference', () => {\n it('reads and saves authoritative state instead of a widget-only copy', async () => {\n const manifest = await app.toManifest();\n expect(manifest.tools.find((entry) => entry.name === 'open_draft')?.fulfilment.steps).toEqual([\n expect.objectContaining({ use: 'state.read_state', args: { handle: 'draft' } }),\n ]);\n expect(manifest.tools.find((entry) => entry.name === 'save_draft')).toMatchObject({\n annotations: { readOnlyHint: false, confirm: true },\n fulfilment: {\n steps: [\n expect.objectContaining({\n use: 'state.patch_state',\n args: {\n handle: 'draft',\n expectedRevision: '${input.expectedRevision}',\n value: {\n title: '${input.title}',\n audience: '${input.audience}',\n goal: '${input.goal}',\n },\n },\n }),\n ],\n },\n });\n });\n\n it('limits anonymous access and transfers only an expiring draft after verified login', async () => {\n const manifest = await app.toManifest();\n expect(manifest.state?.handles.draft).toMatchObject({\n scope: 'caller',\n ttlSeconds: 86400,\n claimOnAuthentication: true,\n });\n expect(manifest.server.assistant?.surfaces?.map((surface) => surface.mode)).toEqual([\n 'mixed',\n 'authenticated',\n ]);\n const continued = manifest.tools.find((entry) => entry.name === 'continue_draft');\n expect(continued?.annotations?.readOnlyHint).toBe(true);\n expect(continued?.fulfilment.output).toMatchObject({ accountId: '${user.id}' });\n expect(continued?.fulfilment.steps).toEqual([\n expect.objectContaining({ use: 'state.read_state', args: { handle: 'draft' } }),\n ]);\n });\n\n it('compiles through the public validator, including anonymous action confirmation', async () => {\n const result = await validate({\n manifestPath: fileURLToPath(new URL('../src/server.ts', import.meta.url)),\n });\n expect(result.ok, JSON.stringify(result.ok ? [] : result.errors)).toBe(true);\n });\n});\n" },
|
|
106
106
|
{ relPath: "examples/stateful-draft/vitest.config.ts", content: "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n oxc: { jsx: { runtime: 'automatic' } },\n test: { include: ['test/**/*.test.{ts,tsx}'], testTimeout: 30_000, maxWorkers: 2 },\n});\n" },
|
|
107
|
-
{ relPath: "examples/weather/README.md", content: "# Weather Briefing\n\nTwo declarative tools that show the runtime's breadth working together, with **no auth and no API\nkeys**. The `weather_briefing` tool takes a city name and runs a **three-step flow**:\n\nCapability slots: HTTP connector authoring, ordered fulfilment flows, query/response mapping,\n**list-returning connector output** (a connector that returns a live, variable-length array), and\nsandboxed compute, including an explicit least-privilege per-operation response-size bound.\n\nFor a different API with an OpenAPI document, start with `noodle import openapi <file>` in a separate\ndirectory.
|
|
107
|
+
{ relPath: "examples/weather/README.md", content: "# Weather Briefing\n\nTwo declarative tools that show the runtime's breadth working together, with **no auth and no API\nkeys**. The `weather_briefing` tool takes a city name and runs a **three-step flow**:\n\nCapability slots: HTTP connector authoring, ordered fulfilment flows, query/response mapping,\n**list-returning connector output** (a connector that returns a live, variable-length array), and\nsandboxed compute, including an explicit least-privilege per-operation response-size bound.\n\nFor a different API with an OpenAPI document, start with `noodle import openapi <file>` in a separate\ndirectory. It preserves supported typed JSON bodies and scalar parameters; unsupported input encodings\nstop import instead of dropping fields. Its offline test establishes the contract, not live behavior; follow the\n[connector guide](https://docs.noodleseed.dev/docs/guides/connectors) before replacing this curated flow.\n\n1. **`geo.search`** → geocode the city to coordinates (Open-Meteo Geocoding API)\n2. **`forecast.current`** → fetch current weather for those coordinates (Open-Meteo Forecast API)\n3. **`brief.summarize`** → derive a human-readable briefing in a **WASM/QuickJS compute sandbox**\n\nThe second tool, `search_places`, shows a connector returning a **live, variable-length list**: it binds\nthe whole Open-Meteo geocoding `results` array with `${response.results}`, then narrows each match to\n`{ id, label }` in a compute connector — the \"search → a list of options the model can pick from\"\npattern. Narrowing lives in compute because a `${...}` response mapping cannot iterate an array and a\ntool's Zod output does not strip fields at runtime.\n\nIt exercises, in one TypeScript-authored app:\n\n- **Server-level branding** with semantic tokens carried through the runtime artifact for any generated\n app surface.\n- **Ordered flow execution** with outputs threaded between steps (`${steps.geo.latitude}` → next step).\n- **Two HTTP connectors on two different hosts**, each with its own egress allowlist.\n- **Query parameters** (`query: [...]`) and a constant query baked into the path (`?current_weather=true`).\n- **Deep response mapping** with the `${...}` language — single-element indexing\n (`${response.results[0].latitude}`, `${response.current_weather.temperature}`) **and** whole-array\n binding (`${response.results}` returns the entire list verbatim).\n- **A list-returning connector + compute narrowing** — `geo.search_list` binds the whole `results`\n array; `places.narrow` reduces each element to `{ id, label }` and normalizes the no-results case\n to `[]`.\n- **A per-operation transport bound** — `search_list` sets\n `limits: { maxResponseBytes: 256 * 1024 }`, tightening this known-small endpoint below the 1 MiB default.\n The authoring ceiling is 6 MiB, but grant only the bytes representative evidence proves this operation\n needs.\n- **Sandboxed compute** (no network/fs/env/clock) turning raw numbers into conditions + advice.\n- **Typed input/output schemas** emitted as JSON Schema 2020-12.\n\n## APIs that require form-urlencoded search bodies\n\nThe live Open-Meteo calls above are GET requests. For APIs whose search endpoint is a POST expecting\n`application/x-www-form-urlencoded`, keep authoring a request object and select the encoding explicitly:\n\n```ts\nsearch_quotes: {\n type: 'read',\n method: 'POST',\n path: '/quotes/search',\n requestEncoding: 'form-urlencoded',\n input: z.object({\n fromAirportId: z.string(),\n categories: z.array(z.string()),\n }),\n request: {\n 'from airport id': '${args.fromAirportId}',\n 'aircraft[categories]': '${args.categories}',\n },\n // output and response mapping omitted\n},\n```\n\nNoodle builds a `URLSearchParams` body: spaces and punctuation in field names are encoded normally, while\neach array or nested object is JSON-stringified into its individual form field. Do not pre-encode the body\nor set `Content-Type` manually; the connector owns both.\n\n## Run it locally\n\nBefore an authorized hosted deployment, inspect this project's inputs with your project-local CLI:\n`noodle deploy preflight --org <org> --app weather --env staging --version 1 --json`.\nThis requires existing hosted access but does not publish or call the weather backend. Its readiness result\ndoes not replace the local and hosted representative-call checks below.\n\nFrom the repo root, with the workspace built (`pnpm build`):\n\n```bash\n: # 1. boot the local loopback dev server\nnode packages/cli/dist/cli.js dev examples/weather/src/server.ts --app weather\n\n: # 2. in another shell, call the printed local endpoint\nURL=http://127.0.0.1:<port>/o/local/weather/dev/mcp\ncurl -s \"$URL\" \\\n -H 'content-type: application/json' \\\n -H 'accept: application/json, text/event-stream' \\\n -H 'mcp-protocol-version: 2025-11-25' \\\n -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"weather_briefing\",\"arguments\":{\"city\":\"Paris\"}}}'\n```\n\nExample result (live data, abbreviated):\n\n```json\n{\n \"place\": \"Paris\", \"country\": \"France\",\n \"temperature_c\": 25.1, \"windspeed_kmh\": 8.3,\n \"conditions\": \"overcast\",\n \"headline\": \"Paris, France: 25°C, overcast.\",\n \"advice\": \"Comfortable conditions — no special prep needed.\"\n}\n```\n\nTry other cities (`Reykjavik`, `Singapore`, `Denver`) to see the conditions and advice change.\n\nCall `search_places` to see the **list-returning** tool — one query, many matches:\n\n```bash\ncurl -s \"$URL\" \\\n -H 'content-type: application/json' \\\n -H 'accept: application/json, text/event-stream' \\\n -H 'mcp-protocol-version: 2025-11-25' \\\n -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"search_places\",\"arguments\":{\"query\":\"Springfield\"}}}'\n```\n\n```json\n{\n \"places\": [\n { \"id\": \"4951788\", \"label\": \"Springfield, Massachusetts, United States\" },\n { \"id\": \"4250542\", \"label\": \"Springfield, Illinois, United States\" },\n { \"id\": \"4508722\", \"label\": \"Springfield, Ohio, United States\" }\n ]\n}\n```\n" },
|
|
108
108
|
{ relPath: "examples/weather/noodle.json", content: "{\n \"entrypoint\": \"src/server.ts\",\n \"name\": \"weather\"\n}\n" },
|
|
109
109
|
{ relPath: "examples/weather/package.json", content: "{\n \"name\": \"weather\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"vitest run\",\n \"validate\": \"noodle validate\",\n \"dev\": \"noodle dev\",\n \"deploy\": \"noodle deploy\"\n },\n \"devDependencies\": {\n \"@noodleseed/one\": \"latest\",\n \"vitest\": \"latest\"\n }\n}\n" },
|
|
110
110
|
{ relPath: "examples/weather/src/server.ts", content: "import { connector, server, tool, z } from '@noodleseed/one';\n\n// The same Weather Briefing server, authored in TypeScript with the Noodle authoring SDK.\n//\n// The SDK owns the *manifest*: the tool, its Zod-typed input/output schemas, and the flow — which you\n// write as ordinary code in `fulfil` and the SDK records symbolically into ordered steps.\n//\n// HTTP and compute connectors are authored here too, so the public developer entrypoint is one\n// self-contained server.ts. The SDK still compiles this to internal manifest/catalog data for the runtime.\n\nconst geocoding = connector('open_meteo_geocoding')\n .version('1.0.0')\n .http({\n baseUrl: 'https://geocoding-api.open-meteo.com',\n allowedOrigins: ['https://geocoding-api.open-meteo.com'],\n operations: {\n search: {\n type: 'read',\n method: 'GET',\n path: '/v1/search',\n query: ['name'],\n input: z.object({ name: z.string() }),\n output: z.object({\n latitude: z.number(),\n longitude: z.number(),\n place: z.string().optional(),\n country: z.string().optional(),\n }),\n response: {\n latitude: '${response.results[0].latitude}',\n longitude: '${response.results[0].longitude}',\n place: '${response.results[0].name}',\n country: '${response.results[0].country}',\n },\n },\n // A LIST-returning read. `${response.results}` binds the WHOLE array verbatim — a\n // variable-length list of place objects — with no pagination (Open-Meteo returns every match in\n // one page). Contrast the `search` op above, which indexes a single element (`results[0]`). To\n // reduce each element to a few fields, narrow it in the `geo_places` compute connector below: a\n // response mapping cannot iterate an array, and a tool's Zod output does not strip fields at\n // runtime.\n search_list: {\n type: 'read',\n method: 'GET',\n path: '/v1/search',\n query: ['name', 'count'],\n // This endpoint is intentionally small; tighten its allowance below the 1 MiB default.\n limits: { maxResponseBytes: 256 * 1024 },\n input: z.object({ name: z.string(), count: z.number().optional() }),\n output: z.object({ results: z.array(z.unknown()).optional() }),\n response: {\n results: '${response.results}',\n },\n },\n },\n });\n\nconst forecast = connector('open_meteo_forecast')\n .version('1.0.0')\n .http({\n baseUrl: 'https://api.open-meteo.com',\n allowedOrigins: ['https://api.open-meteo.com'],\n operations: {\n current: {\n type: 'read',\n method: 'GET',\n path: '/v1/forecast?current_weather=true',\n query: ['latitude', 'longitude'],\n input: z.object({ latitude: z.number(), longitude: z.number() }),\n output: z.object({\n temperature: z.number().optional(),\n windspeed: z.number().optional(),\n weathercode: z.number().optional(),\n }),\n response: {\n temperature: '${response.current_weather.temperature}',\n windspeed: '${response.current_weather.windspeed}',\n weathercode: '${response.current_weather.weathercode}',\n },\n },\n },\n });\n\nconst brief = connector('weather_brief')\n .version('1.0.0')\n .compute('summarize', {\n type: 'read',\n input: z.object({\n place: z.string(),\n country: z.string().optional(),\n temperature: z.number(),\n windspeed: z.number(),\n weathercode: z.number(),\n }),\n output: z.object({\n conditions: z.string(),\n headline: z.string(),\n advice: z.string(),\n }),\n // A real function — type-checked here, serialized to source and run in the sandbox. It must be\n // self-contained: no imports, no closure over outer variables, synchronous.\n run: (input) => {\n const codes: Record<number, string> = {\n 0: 'clear sky',\n 1: 'mainly clear',\n 2: 'partly cloudy',\n 3: 'overcast',\n 45: 'fog',\n 48: 'depositing rime fog',\n 51: 'light drizzle',\n 53: 'moderate drizzle',\n 55: 'dense drizzle',\n 61: 'slight rain',\n 63: 'moderate rain',\n 65: 'heavy rain',\n 71: 'slight snow',\n 73: 'moderate snow',\n 75: 'heavy snow',\n 77: 'snow grains',\n 80: 'slight rain showers',\n 81: 'moderate rain showers',\n 82: 'violent rain showers',\n 85: 'slight snow showers',\n 86: 'heavy snow showers',\n 95: 'thunderstorm',\n 96: 'thunderstorm with hail',\n 99: 'thunderstorm with heavy hail',\n };\n const code = Number(input.weathercode);\n const conditions = codes[code] || 'unknown conditions';\n const temp = Math.round(Number(input.temperature));\n const wind = Math.round(Number(input.windspeed));\n const where = input.country ? `${input.place}, ${input.country}` : input.place;\n const headline = `${where}: ${temp}°C, ${conditions}.`;\n const tips: string[] = [];\n if (temp <= 0) tips.push(\"bundle up, it's freezing\");\n else if (temp <= 10) tips.push('wear a warm coat');\n else if (temp >= 28) tips.push(\"stay hydrated, it's hot\");\n if (code >= 95) tips.push('thunderstorms expected — seek shelter');\n else if (code >= 71 && code <= 86 && code !== 80 && code !== 81 && code !== 82)\n tips.push('snow — dress warm and tread carefully');\n else if (code >= 51 && code <= 82) tips.push('bring an umbrella');\n if (wind >= 30) tips.push('expect strong winds');\n const advice = tips.length\n ? `${tips.join('; ')}.`\n : 'Comfortable conditions — no special prep needed.';\n return { conditions, headline, advice };\n },\n });\n\n// Narrowing a live list to `{ id, label }` summaries is the ONE reshape a response mapping cannot do\n// (the `${...}` language has no per-item iteration) and a tool's Zod output does not enforce at runtime\n// — so it happens here, in a sandboxed compute connector (a connector is HTTP or compute, not both).\n// This also normalizes the no-results case (Open-Meteo omits `results` when nothing matches) to `[]`.\nconst placeNarrow = connector('geo_places')\n .version('1.0.0')\n .compute('narrow', {\n type: 'read',\n input: z.object({ results: z.unknown().optional() }),\n output: z.object({ places: z.array(z.unknown()) }),\n // Self-contained: no imports, no closure over outer variables, synchronous.\n run: (input) => {\n const raw = input.results;\n const list = Array.isArray(raw) ? raw : [];\n const places = list.map((entry) => {\n const parts = [entry.name, entry.admin1, entry.country].filter(\n (part) => typeof part === 'string' && part.length > 0,\n );\n const id =\n entry.id !== undefined && entry.id !== null\n ? String(entry.id)\n : `${entry.latitude},${entry.longitude}`;\n return { id, label: parts.join(', ') };\n });\n return { places };\n },\n });\n\nexport default server(\n 'weather_briefing',\n {\n title: 'Weather Briefing',\n version: '1.0.0',\n use: { geo: geocoding, forecast, brief, places: placeNarrow },\n branding: {\n name: 'Weather Briefing',\n accent: '#0284C7',\n radius: 'md',\n density: 'comfortable',\n },\n },\n [\n tool('weather_briefing', {\n title: 'Weather briefing',\n description:\n 'Look up a city, fetch its current weather, and return a human-readable briefing. Runs a ' +\n 'three-step flow: geocode the city, fetch the forecast, then derive the briefing in a sandboxed compute step.',\n input: z.object({\n city: z.string(),\n }),\n output: z.object({\n place: z.string(),\n country: z.string(),\n temperature_c: z.number(),\n windspeed_kmh: z.number(),\n conditions: z.string(),\n headline: z.string(),\n advice: z.string(),\n }),\n fulfil: ({ input, connectors }) => {\n const located = connectors.geo.search({ name: input.city });\n const weather = connectors.forecast.current({\n latitude: located.latitude,\n longitude: located.longitude,\n });\n const briefing = connectors.brief.summarize({\n place: located.place,\n country: located.country,\n temperature: weather.temperature,\n windspeed: weather.windspeed,\n weathercode: weather.weathercode,\n });\n return {\n place: located.place,\n country: located.country,\n temperature_c: weather.temperature,\n windspeed_kmh: weather.windspeed,\n conditions: briefing.conditions,\n headline: briefing.headline,\n advice: briefing.advice,\n };\n },\n }),\n // A connector that returns a live, variable-length LIST: search a place name, get back the\n // matching locations as `{ id, label }` options the model can resolve against. The HTTP op binds\n // the whole array; the compute connector narrows each element to the two fields the model speaks\n // from. Append new tools AFTER existing ones so `tools[0]` stays stable for host harnesses.\n tool('search_places', {\n title: 'Search places',\n description:\n 'Search a place name and return the matching locations as a list of { id, label } options.',\n // Bound the list at the source: `limit` is capped in the schema and passed through to the\n // upstream `count` parameter, so the model can never pull an unbounded page into its context.\n // `noodle check` reports an unbounded array output as `tool_design_output_bounds`.\n input: z.object({\n query: z.string(),\n limit: z.number().int().min(1).max(10).default(5),\n }),\n output: z.object({\n places: z.array(z.object({ id: z.string(), label: z.string() })),\n }),\n fulfil: ({ input, connectors }) => {\n const found = connectors.geo.search_list({ name: input.query, count: input.limit });\n const narrowed = connectors.places.narrow({ results: found.results });\n return { places: narrowed.places };\n },\n }),\n ],\n);\n" },
|
|
@@ -20,7 +20,7 @@ function bootstrapRouterBody() {
|
|
|
20
20
|
'',
|
|
21
21
|
'Use the first available branch:',
|
|
22
22
|
'',
|
|
23
|
-
'1. **Readiness MCP.** When `noodle-readiness` is available, call the supported `noodle-readiness` tools yourself. Prefer `noodle-readiness.setup_project`, validation, test, check, configuration, and deployment functions because they return structured decisions and own the compatible CLI plus isolated host profile.',
|
|
23
|
+
'1. **Readiness MCP.** When `noodle-readiness` is available, call the supported `noodle-readiness` tools yourself. Prefer `noodle-readiness.setup_project`, validation, test, check, `preflight_build`, configuration, and deployment functions because they return structured decisions and own the compatible CLI plus isolated host profile. `preflight_build` inspects an explicit target with existing access; it does not link, configure or publish, and a passing report is not deployment evidence.',
|
|
24
24
|
'2. **Inline execution.** When `noodle-readiness` is unavailable but the host provides a command-execution workspace, run the packaged launcher yourself with the exact arguments of the corresponding public `noodle` command. From this skill directory, run `node scripts/noodle-plugin.mjs <args>`.',
|
|
25
25
|
' Add `--json` whenever the public command supports it. Parse the structured result before continuing. Never display, narrate, or ask the user to run the launcher command or its installation path; report only the corresponding public `noodle ...` command and task-level outcome.',
|
|
26
26
|
'3. **No local execution.** When `noodle-readiness` is unavailable and there is no command-execution workspace, do not claim that setup, validation, testing, configuration, or deployment ran. Explain that Noodle Seed authoring needs a coding workspace with command execution. The remote `noodle-developer` MCP may still inspect an existing hosted app; it cannot replace local authoring or readiness.',
|
|
@@ -39,7 +39,7 @@ export function renderAuthoringWorkflowReference() {
|
|
|
39
39
|
'## Input paths',
|
|
40
40
|
'',
|
|
41
41
|
'1. **Website scrape** — if the user gives a URL, scrape it for surface hints (products, services, hours, contact, pricing). Stop there: the URL does not reveal CRM, booking systems, custom APIs, auth model, eligibility rules, quoting logic, or approval flows. Those live in the business systems and the owner’s head — ask.',
|
|
42
|
-
'2. **OpenAPI import** — `noodle import openapi <file>` writes a pinned project at `src/server.ts`, shared operation/tool schemas, managed auth references, and an offline contract test. It does not install dependencies or call the backend. Follow its README, run `agent:check`, and add a reviewed sandbox-operation test; compile success is not live integration proof. Review
|
|
42
|
+
'2. **OpenAPI import** — `noodle import openapi <file>` writes a pinned project at `src/server.ts`, shared operation/tool schemas, managed auth references, and an offline contract test. Supported JSON bodies become typed `input.body`, sent unchanged; unsupported request constraints/encodings stop import before writes. It does not install dependencies or call the backend. Follow its README, run `agent:check`, and add a reviewed sandbox-operation test; compile success is not live integration proof. Review auth warnings before deployment. Modified files are preserved unless `--force` is explicit.',
|
|
43
43
|
'3. **Upstream MCP import** — `noodle import mcp <url> --name <slug> --output <dir>` discovers `tools/list` once, validates and freezes tool schemas into TypeScript, and writes a secret-free drift snapshot. Upstream annotations are untrusted, so generated tools remain destructive confirmed actions until an author verifies and narrows them. Use `--header-env <header>=<ENV_NAME>` for import-only auth and `--check` for classified, non-mutating drift detection. Runtime never performs discovery.',
|
|
44
44
|
'Both imports use `src/server.ts` as the declared entrypoint, include an offline compile test and `.env.example`, and write files only. Install the pinned dependencies, run the generated checks, then `noodle agents setup --apply`. Never treat generated contract tests as customer authentication or business-workflow evidence.',
|
|
45
45
|
'4. **User interview** — Noodle does not interview; you do. Cover custom APIs/integrations, eligibility rules, quoting/approval logic, and private schemas (SQL DDL or JSON samples for custom `connector` declarations). Ask for concrete examples and sample payloads; do not guess a schema from a URL or invent endpoints.',
|
|
@@ -172,13 +172,14 @@ export function renderInspectHostedReference() {
|
|
|
172
172
|
'',
|
|
173
173
|
'## Authority boundary',
|
|
174
174
|
'',
|
|
175
|
-
'This route is read-only.
|
|
175
|
+
'This route is read-only. `deploy preflight` inspects authored deployment inputs with existing access; it is not `deploy` publication. This route never authorizes `login`, `logout`, `link`, `target set`, hosted secret/variable/config/access changes, publication, `rollback`, host configuration writes, or directory submission. If evidence shows one of those actions is needed, report the exact proposed action and target, then stop for a new explicit user request.',
|
|
176
176
|
'',
|
|
177
177
|
'## Workflow',
|
|
178
178
|
'',
|
|
179
179
|
'1. Resolve the requested org, app, environment, and deployment from existing non-secret context. Do not change the effective target to make inspection easier.',
|
|
180
180
|
'2. Choose the narrowest read-only command: `noodle target show`, `noodle status`, `noodle inspect`, `noodle smoke`, `noodle metrics --agent-output`, `noodle events --json`, `noodle logs`, or `noodle audit`.',
|
|
181
181
|
'3. Prefer machine output when the selected command supports it. Record the target, revision/deployment ID, timestamp, result, and any request ID without exposing secrets or customer payloads.',
|
|
182
|
+
'For authored deployment readiness, select `deploy preflight` from the generated CLI command reference and supply the intended target. It does not configure, import dotenv, upload assets, save a retry key or publish. Routine login refresh may renew credentials. Missing-config actions are suggestions requiring separate authorization. A ready report is not backend, host or deployment evidence; publication always checks again.',
|
|
182
183
|
'4. When the installed Developer MCP is available, call `get_context` to read the signed-in user’s current organizations and roles. Resolve the intended organization from the request or project context, then pass that explicit `org` to every scoped inspection or diagnosis tool. Never infer a remote default, and never ask the user to preselect organizations during OAuth. Treat the connection as live evidence gathering, not mutation authority.',
|
|
183
184
|
'5. If a command fails, distinguish missing authentication/access from unhealthy application behavior. Do not repair, relink, redeploy, rotate config, or roll back under this route.',
|
|
184
185
|
'',
|
|
@@ -145,7 +145,7 @@ export function skillRouterBody(_target) {
|
|
|
145
145
|
'',
|
|
146
146
|
'Apply this precedence when wording overlaps: concrete failure evidence takes the debugging route; an explicit request to create, revise, regenerate, or recover an app product skill takes `creating-product-agent-guides`; an MCP App/UI outcome takes the App route; an existing application with no stable, usable API or specification takes `wrapping-existing-applications`; only when all four API-evidence inputs exist—an API base URL, authentication scheme, representative safe read, and observed response—use `connecting-apis-to-mcp`; missing, stale, inaccessible, undocumented-only, or otherwise unusable evidence remains in `wrapping-existing-applications`; both integration routes take precedence over generic server building; hosted inspection is debugging read-only; hosted mutation requires the explicitly requested deployment route.',
|
|
147
147
|
'',
|
|
148
|
-
'Negative routing examples: “Inspect hosted logs/status” → `inspect-hosted` (read-only). “Prepare for deployment” → the applicable build or verification route
|
|
148
|
+
'Negative routing examples: “Inspect hosted logs/status” → `inspect-hosted` (read-only). “Prepare for deployment” → the applicable build or verification route; with existing access it may inspect `deploy preflight`, then stop with a handoff. Preparation does not authorize `link`, hosted config, publication, rollback, host writes, or submission. “Keep this local” → a build or verification route, never a hosted route.',
|
|
149
149
|
'',
|
|
150
150
|
...routeTableLines(),
|
|
151
151
|
'',
|
|
@@ -62,6 +62,7 @@ export function renderVerifyAndRecoverReference() {
|
|
|
62
62
|
'- Real API: distinguish authentication, reachability, legitimate empty results, and broken response mappings before changing code.',
|
|
63
63
|
'- App: repair the cited contract or state in `noodle check --json`, then confirm it in devtools before attempting a host.',
|
|
64
64
|
'- Host/deployment/production: confirm revision, target, identity, and configuration independently; do not infer one from another.',
|
|
65
|
+
'- Authored deploy readiness: with existing access and the intended target, inspect `noodle deploy preflight --json` through the installed execution transport (`noodle-readiness.preflight_build` for plugin users). It never configures or publishes. Use all returned findings; proposed configuration commands require separate authorization. Readiness is not a backend call or hosted journey.',
|
|
65
66
|
'- Repeated external failure: preserve passing evidence and report the sanitized failure, required authority or external state, owner, and exact next action.',
|
|
66
67
|
'',
|
|
67
68
|
'## Stop conditions',
|