@noodleseed/one 0.7.0 → 0.8.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 (58) hide show
  1. package/dist/banner.d.ts +11 -0
  2. package/dist/banner.d.ts.map +1 -0
  3. package/dist/banner.js +183 -0
  4. package/dist/banner.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +6 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/deploy-ops.d.ts.map +1 -1
  9. package/dist/commands/deploy-ops.js +24 -1
  10. package/dist/commands/deploy-ops.js.map +1 -1
  11. package/dist/commands/project-setup.d.ts +1 -1
  12. package/dist/commands/project-setup.d.ts.map +1 -1
  13. package/dist/commands/project-setup.js +7 -2
  14. package/dist/commands/project-setup.js.map +1 -1
  15. package/dist/commands/shared.d.ts.map +1 -1
  16. package/dist/commands/shared.js +2 -0
  17. package/dist/commands/shared.js.map +1 -1
  18. package/dist/dev.d.ts.map +1 -1
  19. package/dist/dev.js +9 -1
  20. package/dist/dev.js.map +1 -1
  21. package/dist/first-run-entry.d.ts +2 -0
  22. package/dist/first-run-entry.d.ts.map +1 -0
  23. package/dist/first-run-entry.js +36 -0
  24. package/dist/first-run-entry.js.map +1 -0
  25. package/dist/first-run.d.ts +26 -0
  26. package/dist/first-run.d.ts.map +1 -0
  27. package/dist/first-run.js +439 -0
  28. package/dist/first-run.js.map +1 -0
  29. package/dist/gradient.d.ts +46 -0
  30. package/dist/gradient.d.ts.map +1 -0
  31. package/dist/gradient.js +87 -0
  32. package/dist/gradient.js.map +1 -0
  33. package/dist/openapi-import.d.ts.map +1 -1
  34. package/dist/openapi-import.js +47 -8
  35. package/dist/openapi-import.js.map +1 -1
  36. package/dist/prompts.d.ts +61 -0
  37. package/dist/prompts.d.ts.map +1 -0
  38. package/dist/prompts.js +209 -0
  39. package/dist/prompts.js.map +1 -0
  40. package/dist/status.d.ts +58 -0
  41. package/dist/status.d.ts.map +1 -0
  42. package/dist/status.js +106 -0
  43. package/dist/status.js.map +1 -0
  44. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  46. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  47. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  48. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  49. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  50. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts +4 -0
  51. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts.map +1 -1
  52. package/node_modules/@noodle-borg/openapi-import/dist/index.js +27 -1
  53. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  54. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.d.ts +50 -0
  55. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.d.ts.map +1 -0
  56. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.js +227 -0
  57. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.js.map +1 -0
  58. package/package.json +2 -2
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Response-schema import: converts an operation's OpenAPI `responses` block into a bounded,
3
+ * typed output tree (`OpenApiImportSchema`) used to render tool-level Zod/JSON-Schema output.
4
+ * Parsed documents are untrusted: bounded depth/node budgets, no external `$ref` dereferencing,
5
+ * and no network fetches — external refs are a structured, repairable import error.
6
+ */
7
+ export const MAX_RESPONSE_SCHEMA_DEPTH = 8;
8
+ export const MAX_RESPONSE_SCHEMA_NODES = 200;
9
+ const UNKNOWN = { kind: 'unknown' };
10
+ const UNSUPPORTED_COMPOSITIONS = ['oneOf', 'anyOf', 'allOf', 'not'];
11
+ /**
12
+ * Picks the best 2xx `application/json` schema from an operation's `responses` block and
13
+ * converts it. Returns `undefined` (with warnings pushed to the context) when the operation
14
+ * has no typeable JSON response; throws only for external `$ref`s.
15
+ */
16
+ export function importResponseSchema(responses, ctx) {
17
+ if (!isRecord(responses))
18
+ return undefined;
19
+ const statusKey = pickSuccessStatus(Object.keys(responses));
20
+ if (statusKey === undefined) {
21
+ if (jsonMediaSchema(contentOf(responses.default)) !== undefined) {
22
+ ctx.warnings.push(`${ctx.operationName}: only a "default" response declares a JSON schema; output left untyped`);
23
+ }
24
+ return undefined;
25
+ }
26
+ const content = contentOf(responses[statusKey]);
27
+ if (content === undefined)
28
+ return undefined;
29
+ const schema = jsonMediaSchema(content);
30
+ if (schema === undefined) {
31
+ ctx.warnings.push(`${ctx.operationName}: ${statusKey} response has no application/json content; output left untyped`);
32
+ return undefined;
33
+ }
34
+ const state = { nodes: 0, boundWarned: false };
35
+ const converted = convertSchema(schema, ctx, state, 0, new Set());
36
+ return converted.kind === 'unknown' ? undefined : converted;
37
+ }
38
+ /** Maps a schema tree's top-level kind to the flat connector output field type. */
39
+ export function kindToFieldType(schema) {
40
+ if (schema.kind === 'unknown' || schema.nullable === true)
41
+ return 'object';
42
+ return schema.kind;
43
+ }
44
+ /** Renders the schema tree as JSON Schema for a manifest tool `outputSchema` value subtree. */
45
+ export function toOutputJsonSchema(schema) {
46
+ switch (schema.kind) {
47
+ case 'string':
48
+ return withNullable({ type: 'string', ...(schema.enum !== undefined ? { enum: [...schema.enum] } : {}) }, schema.nullable);
49
+ case 'number':
50
+ return withNullable({ type: 'number' }, schema.nullable);
51
+ case 'boolean':
52
+ return withNullable({ type: 'boolean' }, schema.nullable);
53
+ case 'array':
54
+ return withNullable({ type: 'array', items: toOutputJsonSchema(schema.items) }, schema.nullable);
55
+ case 'object': {
56
+ if (schema.properties.length === 0)
57
+ return withNullable({ type: 'object' }, schema.nullable);
58
+ const required = schema.properties
59
+ .filter((property) => property.required)
60
+ .map((property) => property.name);
61
+ return withNullable({
62
+ type: 'object',
63
+ properties: Object.fromEntries(schema.properties.map((property) => [
64
+ property.name,
65
+ toOutputJsonSchema(property.schema),
66
+ ])),
67
+ ...(required.length > 0 ? { required } : {}),
68
+ }, schema.nullable);
69
+ }
70
+ case 'unknown':
71
+ return {};
72
+ }
73
+ }
74
+ function convertSchema(raw, ctx, state, depth, visitedRefs) {
75
+ if (!isRecord(raw))
76
+ return UNKNOWN;
77
+ state.nodes += 1;
78
+ if (depth > MAX_RESPONSE_SCHEMA_DEPTH || state.nodes > MAX_RESPONSE_SCHEMA_NODES) {
79
+ if (!state.boundWarned) {
80
+ state.boundWarned = true;
81
+ ctx.warnings.push(`${ctx.operationName}: response schema exceeds the import depth/size bound (depth ${MAX_RESPONSE_SCHEMA_DEPTH}, ${MAX_RESPONSE_SCHEMA_NODES} nodes); deeper parts left untyped`);
82
+ }
83
+ return UNKNOWN;
84
+ }
85
+ if (typeof raw.$ref === 'string') {
86
+ return convertRef(raw.$ref, ctx, state, depth, visitedRefs);
87
+ }
88
+ for (const keyword of UNSUPPORTED_COMPOSITIONS) {
89
+ if (raw[keyword] !== undefined) {
90
+ ctx.warnings.push(`${ctx.operationName}: response schema uses unsupported "${keyword}"; that part is left untyped`);
91
+ return UNKNOWN;
92
+ }
93
+ }
94
+ const normalized = normalizeType(raw, ctx);
95
+ if (normalized === undefined)
96
+ return UNKNOWN;
97
+ const { type, nullable } = normalized;
98
+ const nullableSpread = nullable ? { nullable: true } : {};
99
+ switch (type) {
100
+ case 'string': {
101
+ const enumValues = stringEnum(raw.enum);
102
+ return {
103
+ kind: 'string',
104
+ ...nullableSpread,
105
+ ...(enumValues !== undefined ? { enum: enumValues } : {}),
106
+ };
107
+ }
108
+ case 'number':
109
+ case 'integer':
110
+ return { kind: 'number', ...nullableSpread };
111
+ case 'boolean':
112
+ return { kind: 'boolean', ...nullableSpread };
113
+ case 'array':
114
+ return {
115
+ kind: 'array',
116
+ ...nullableSpread,
117
+ items: raw.items === undefined
118
+ ? UNKNOWN
119
+ : convertSchema(raw.items, ctx, state, depth + 1, visitedRefs),
120
+ };
121
+ case 'object': {
122
+ const properties = isRecord(raw.properties) ? raw.properties : {};
123
+ const required = new Set(Array.isArray(raw.required)
124
+ ? raw.required.filter((name) => typeof name === 'string')
125
+ : []);
126
+ return {
127
+ kind: 'object',
128
+ ...nullableSpread,
129
+ properties: Object.entries(properties).map(([name, propertySchema]) => ({
130
+ name,
131
+ required: required.has(name),
132
+ schema: convertSchema(propertySchema, ctx, state, depth + 1, visitedRefs),
133
+ })),
134
+ };
135
+ }
136
+ default:
137
+ ctx.warnings.push(`${ctx.operationName}: response schema type "${type}" is not supported; that part is left untyped`);
138
+ return UNKNOWN;
139
+ }
140
+ }
141
+ function convertRef(ref, ctx, state, depth, visitedRefs) {
142
+ if (!ref.startsWith('#')) {
143
+ throw new Error(`import openapi: operation "${ctx.operationName}" response schema references external $ref "${ref}"; ` +
144
+ 'external references are not fetched during import — bundle the document into one file ' +
145
+ '(e.g. `npx @redocly/cli bundle`) and re-run');
146
+ }
147
+ const prefix = '#/components/schemas/';
148
+ if (!ref.startsWith(prefix)) {
149
+ ctx.warnings.push(`${ctx.operationName}: response schema $ref "${ref}" is not a component schema reference; that part is left untyped`);
150
+ return UNKNOWN;
151
+ }
152
+ const name = ref.slice(prefix.length);
153
+ if (visitedRefs.has(name)) {
154
+ ctx.warnings.push(`${ctx.operationName}: response schema $ref "${ref}" is circular; the repeated part is left untyped`);
155
+ return UNKNOWN;
156
+ }
157
+ const target = ctx.componentSchemas[name];
158
+ if (target === undefined) {
159
+ ctx.warnings.push(`${ctx.operationName}: response schema $ref "${ref}" does not resolve; that part is left untyped`);
160
+ return UNKNOWN;
161
+ }
162
+ return convertSchema(target, ctx, state, depth, new Set([...visitedRefs, name]));
163
+ }
164
+ function normalizeType(raw, ctx) {
165
+ const nullable30 = raw.nullable === true;
166
+ if (typeof raw.type === 'string')
167
+ return { type: raw.type, nullable: nullable30 };
168
+ if (Array.isArray(raw.type)) {
169
+ const entries = raw.type.filter((entry) => typeof entry === 'string');
170
+ const nonNull = entries.filter((entry) => entry !== 'null');
171
+ const nullable = nullable30 || nonNull.length < entries.length;
172
+ if (nonNull.length === 1 && nonNull[0] !== undefined) {
173
+ return { type: nonNull[0], nullable };
174
+ }
175
+ ctx.warnings.push(`${ctx.operationName}: response schema type array [${entries.join(', ')}] is not supported; that part is left untyped`);
176
+ return undefined;
177
+ }
178
+ if (isRecord(raw.properties))
179
+ return { type: 'object', nullable: nullable30 };
180
+ if (raw.items !== undefined)
181
+ return { type: 'array', nullable: nullable30 };
182
+ return undefined;
183
+ }
184
+ function stringEnum(value) {
185
+ if (!Array.isArray(value) || value.length === 0)
186
+ return undefined;
187
+ if (!value.every((entry) => typeof entry === 'string'))
188
+ return undefined;
189
+ return value;
190
+ }
191
+ function pickSuccessStatus(keys) {
192
+ if (keys.includes('200'))
193
+ return '200';
194
+ const numeric = keys
195
+ .filter((key) => /^2\d\d$/.test(key))
196
+ .sort((a, b) => Number(a) - Number(b))[0];
197
+ if (numeric !== undefined)
198
+ return numeric;
199
+ return keys.find((key) => key.toUpperCase() === '2XX');
200
+ }
201
+ function contentOf(response) {
202
+ if (!isRecord(response) || !isRecord(response.content))
203
+ return undefined;
204
+ return response.content;
205
+ }
206
+ function jsonMediaSchema(content) {
207
+ if (content === undefined)
208
+ return undefined;
209
+ for (const [mediaType, media] of Object.entries(content)) {
210
+ const bare = mediaType.split(';')[0]?.trim().toLowerCase() ?? '';
211
+ if (bare === 'application/json' || /^application\/[\w.-]+\+json$/.test(bare)) {
212
+ if (isRecord(media) && media.schema !== undefined)
213
+ return media.schema;
214
+ }
215
+ }
216
+ return undefined;
217
+ }
218
+ function withNullable(schema, nullable) {
219
+ if (nullable !== true)
220
+ return schema;
221
+ const type = schema.type;
222
+ return { ...schema, type: [type, 'null'] };
223
+ }
224
+ function isRecord(value) {
225
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
226
+ }
227
+ //# sourceMappingURL=response-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-schema.js","sourceRoot":"","sources":["../src/response-schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodleseed/one",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "private": false,
5
5
  "description": "Noodle CLI by Noodle Seed — author, run, and deploy declarative MCP servers.",
6
6
  "license": "Apache-2.0",
@@ -155,5 +155,5 @@
155
155
  "@types/node": "24.13.1"
156
156
  },
157
157
  "optionalDependencies": {},
158
- "gitHead": "fd05904a16465e534613b67ed12cd0703b303052"
158
+ "gitHead": "e719ecf73f1efef0ed75f688fa8e8a63740dca28"
159
159
  }