@introspection-ai/recipes 0.13.0 → 0.14.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 (222) hide show
  1. package/README.md +45 -58
  2. package/dist/{agent-tool.d.ts → agents.d.ts} +4 -1
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/{agent-tool.js → agents.js} +1 -1
  5. package/dist/agents.js.map +1 -0
  6. package/dist/api/extensions.d.ts +3 -0
  7. package/dist/api/extensions.d.ts.map +1 -0
  8. package/dist/api/extensions.js +2 -0
  9. package/dist/api/extensions.js.map +1 -0
  10. package/dist/api/mcp.d.ts +4 -0
  11. package/dist/api/mcp.d.ts.map +1 -0
  12. package/dist/api/mcp.js +2 -0
  13. package/dist/api/mcp.js.map +1 -0
  14. package/dist/api/session.d.ts +3 -0
  15. package/dist/api/session.d.ts.map +1 -0
  16. package/dist/api/session.js +2 -0
  17. package/dist/api/session.js.map +1 -0
  18. package/dist/child-agent.d.ts +5 -4
  19. package/dist/child-agent.d.ts.map +1 -1
  20. package/dist/child-agent.js +26 -117
  21. package/dist/child-agent.js.map +1 -1
  22. package/dist/child-session.d.ts +23 -0
  23. package/dist/child-session.d.ts.map +1 -0
  24. package/dist/child-session.js +48 -0
  25. package/dist/child-session.js.map +1 -0
  26. package/dist/extensions.d.ts +29 -0
  27. package/dist/extensions.d.ts.map +1 -0
  28. package/dist/extensions.js +119 -0
  29. package/dist/extensions.js.map +1 -0
  30. package/dist/index.d.ts +4 -13
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -13
  33. package/dist/index.js.map +1 -1
  34. package/dist/inspect.d.ts +38 -5
  35. package/dist/inspect.d.ts.map +1 -1
  36. package/dist/inspect.js +92 -41
  37. package/dist/inspect.js.map +1 -1
  38. package/dist/interactions.d.ts +18 -2
  39. package/dist/interactions.d.ts.map +1 -1
  40. package/dist/interactions.js +41 -10
  41. package/dist/interactions.js.map +1 -1
  42. package/dist/mcp-catalog.d.ts +1 -0
  43. package/dist/mcp-catalog.d.ts.map +1 -1
  44. package/dist/mcp-catalog.js +14 -6
  45. package/dist/mcp-catalog.js.map +1 -1
  46. package/dist/mcp-chunks/auth-command-ZLGYIEUY.js +273 -0
  47. package/dist/mcp-chunks/call-arguments-LU3W6D3K.js +13 -0
  48. package/dist/mcp-chunks/call-command-LKTKSYTH.js +612 -0
  49. package/dist/mcp-chunks/chunk-2U4BSDC4.js +3951 -0
  50. package/dist/mcp-chunks/chunk-2XL7MG7R.js +272 -0
  51. package/dist/mcp-chunks/chunk-3BJA27PY.js +2321 -0
  52. package/dist/mcp-chunks/chunk-4SQKWYFF.js +15 -0
  53. package/dist/mcp-chunks/chunk-5QOSCSQB.js +290 -0
  54. package/dist/mcp-chunks/chunk-6W5QFASN.js +77 -0
  55. package/dist/mcp-chunks/chunk-6XCZGU3G.js +1004 -0
  56. package/dist/mcp-chunks/chunk-7FHEBT5G.js +149 -0
  57. package/dist/mcp-chunks/chunk-7KA2VJVZ.js +114 -0
  58. package/dist/mcp-chunks/chunk-7UDVSOOF.js +138 -0
  59. package/dist/mcp-chunks/chunk-BNV3TPE4.js +66 -0
  60. package/dist/mcp-chunks/chunk-BTLAWHTA.js +129 -0
  61. package/dist/mcp-chunks/chunk-BV56DXPW.js +13 -0
  62. package/dist/mcp-chunks/chunk-BWHIA4PC.js +90 -0
  63. package/dist/mcp-chunks/chunk-BZIQOWE6.js +267 -0
  64. package/dist/mcp-chunks/chunk-D3MRAZ6H.js +16140 -0
  65. package/dist/mcp-chunks/chunk-DHBE7UBH.js +750 -0
  66. package/dist/mcp-chunks/chunk-E22DYOW5.js +251 -0
  67. package/dist/mcp-chunks/chunk-ECIVB7P4.js +139 -0
  68. package/dist/mcp-chunks/chunk-HKRJ6O36.js +1076 -0
  69. package/dist/mcp-chunks/chunk-IABRYROW.js +44 -0
  70. package/dist/mcp-chunks/chunk-J6LYIZXN.js +45 -0
  71. package/dist/mcp-chunks/chunk-L7NTQVYN.js +161 -0
  72. package/dist/mcp-chunks/chunk-LEZSACDE.js +141 -0
  73. package/dist/mcp-chunks/chunk-LKIBAYKU.js +208 -0
  74. package/dist/mcp-chunks/chunk-LNH5LAJD.js +152 -0
  75. package/dist/mcp-chunks/chunk-LQQEYD76.js +124 -0
  76. package/dist/mcp-chunks/chunk-LRKZP7DJ.js +47 -0
  77. package/dist/mcp-chunks/chunk-LS7PMWSR.js +109 -0
  78. package/dist/mcp-chunks/chunk-M3TPODXI.js +95 -0
  79. package/dist/mcp-chunks/chunk-MZ2NARG7.js +400 -0
  80. package/dist/mcp-chunks/chunk-N46NEFAF.js +45 -0
  81. package/dist/mcp-chunks/chunk-NNOEGEUZ.js +17273 -0
  82. package/dist/mcp-chunks/chunk-NRAJX5E4.js +69 -0
  83. package/dist/mcp-chunks/chunk-P3PSC54P.js +869 -0
  84. package/dist/mcp-chunks/chunk-PIIYJR44.js +6341 -0
  85. package/dist/mcp-chunks/chunk-PWYFKGKG.js +385 -0
  86. package/dist/mcp-chunks/chunk-SJCCBNZ4.js +45 -0
  87. package/dist/mcp-chunks/chunk-TATVT5IT.js +194 -0
  88. package/dist/mcp-chunks/chunk-TEUKFFQL.js +29 -0
  89. package/dist/mcp-chunks/chunk-UKYNQGNE.js +150 -0
  90. package/dist/mcp-chunks/chunk-UNKB4SBV.js +37 -0
  91. package/dist/mcp-chunks/chunk-WD6BOD24.js +138 -0
  92. package/dist/mcp-chunks/chunk-WQJZMCJN.js +73 -0
  93. package/dist/mcp-chunks/chunk-XANPGTLI.js +364 -0
  94. package/dist/mcp-chunks/chunk-XQK2JSW4.js +35 -0
  95. package/dist/mcp-chunks/chunk-YHQUTU6L.js +571 -0
  96. package/dist/mcp-chunks/chunk-YVZKMV5H.js +57 -0
  97. package/dist/mcp-chunks/cli-UV4QJZZM.js +929 -0
  98. package/dist/mcp-chunks/client-S7RQUG5U.js +13 -0
  99. package/dist/mcp-chunks/config-command-NLAGKID5.js +1101 -0
  100. package/dist/mcp-chunks/daemon-command-U242Z6VY.js +26 -0
  101. package/dist/mcp-chunks/dist-LK3SHAMX.js +6478 -0
  102. package/dist/mcp-chunks/emit-ts-command-VBXVXO6V.js +386 -0
  103. package/dist/mcp-chunks/generate-cli-runner-6CAZZA3P.js +1426 -0
  104. package/dist/mcp-chunks/inspect-cli-command-3ZORTOR7.js +111 -0
  105. package/dist/mcp-chunks/launch-YKRXHXJI.js +10 -0
  106. package/dist/mcp-chunks/lifecycle-XVKRHPH3.js +16 -0
  107. package/dist/mcp-chunks/list-command-2MEGGNFQ.js +4190 -0
  108. package/dist/mcp-chunks/output-utils-NKESLAJ6.js +12 -0
  109. package/dist/mcp-chunks/prompt-B1Yc1NPt-VGOTWJMN.js +918 -0
  110. package/dist/mcp-chunks/record-command-YXHTTTT5.js +17 -0
  111. package/dist/mcp-chunks/replay-command-25HJ6AQU.js +85 -0
  112. package/dist/mcp-chunks/resource-command-OO4NYF5C.js +97 -0
  113. package/dist/mcp-chunks/result-utils-MOHHLNM7.js +15 -0
  114. package/dist/mcp-chunks/runtime-5WJ3G25Y.js +33 -0
  115. package/dist/mcp-chunks/runtime-wrapper-RPWDIDBF.js +10 -0
  116. package/dist/mcp-chunks/serve-command-DHXJZMMN.js +3302 -0
  117. package/dist/mcp-chunks/timeouts-W2XWCCXR.js +18 -0
  118. package/dist/mcp-chunks/vault-command-PIYIUEZL.js +154 -0
  119. package/dist/mcp-daemon-client.d.ts +6 -1
  120. package/dist/mcp-daemon-client.d.ts.map +1 -1
  121. package/dist/mcp-daemon-client.js +119 -2
  122. package/dist/mcp-daemon-client.js.map +1 -1
  123. package/dist/mcp-daemon-protocol.d.ts +18 -1
  124. package/dist/mcp-daemon-protocol.d.ts.map +1 -1
  125. package/dist/mcp-daemon-protocol.js +31 -0
  126. package/dist/mcp-daemon-protocol.js.map +1 -1
  127. package/dist/mcp-daemon.js +169 -76602
  128. package/dist/mcp-daemon.js.map +1 -1
  129. package/dist/mcp-policy.d.ts +11 -0
  130. package/dist/mcp-policy.d.ts.map +1 -0
  131. package/dist/mcp-policy.js +27 -0
  132. package/dist/mcp-policy.js.map +1 -0
  133. package/dist/mcp-run-worker.js +38 -76540
  134. package/dist/mcp-tools.d.ts +39 -0
  135. package/dist/mcp-tools.d.ts.map +1 -0
  136. package/dist/mcp-tools.js +493 -0
  137. package/dist/mcp-tools.js.map +1 -0
  138. package/dist/mcp.d.ts +21 -9
  139. package/dist/mcp.d.ts.map +1 -1
  140. package/dist/mcp.js +101 -31
  141. package/dist/mcp.js.map +1 -1
  142. package/dist/model-binding.d.ts +39 -0
  143. package/dist/model-binding.d.ts.map +1 -0
  144. package/dist/model-binding.js +103 -0
  145. package/dist/model-binding.js.map +1 -0
  146. package/dist/pi-extension.d.ts +2 -22
  147. package/dist/pi-extension.d.ts.map +1 -1
  148. package/dist/pi-extension.js +296 -71
  149. package/dist/pi-extension.js.map +1 -1
  150. package/dist/recipe/resolve.d.ts +43 -20
  151. package/dist/recipe/resolve.d.ts.map +1 -1
  152. package/dist/recipe/resolve.js +215 -70
  153. package/dist/recipe/resolve.js.map +1 -1
  154. package/dist/recipe-agent.d.ts +24 -27
  155. package/dist/recipe-agent.d.ts.map +1 -1
  156. package/dist/recipe-agent.js +278 -230
  157. package/dist/recipe-agent.js.map +1 -1
  158. package/dist/recipe-check.d.ts +17 -0
  159. package/dist/recipe-check.d.ts.map +1 -0
  160. package/dist/recipe-check.js +258 -0
  161. package/dist/recipe-check.js.map +1 -0
  162. package/dist/recipe-extensions.d.ts.map +1 -1
  163. package/dist/recipe-extensions.js +0 -3
  164. package/dist/recipe-extensions.js.map +1 -1
  165. package/dist/recipe-model.d.ts +3 -1
  166. package/dist/recipe-model.d.ts.map +1 -1
  167. package/dist/recipe-model.js +15 -12
  168. package/dist/recipe-model.js.map +1 -1
  169. package/dist/recipe-package.d.ts +6 -28
  170. package/dist/recipe-package.d.ts.map +1 -1
  171. package/dist/recipe-package.js +248 -191
  172. package/dist/recipe-package.js.map +1 -1
  173. package/dist/recipe-skills.d.ts.map +1 -1
  174. package/dist/recipe-skills.js +42 -29
  175. package/dist/recipe-skills.js.map +1 -1
  176. package/dist/run-controller.d.ts +10 -9
  177. package/dist/run-controller.d.ts.map +1 -1
  178. package/dist/run-controller.js +28 -21
  179. package/dist/run-controller.js.map +1 -1
  180. package/dist/session.d.ts +40 -53
  181. package/dist/session.d.ts.map +1 -1
  182. package/dist/session.js +312 -173
  183. package/dist/session.js.map +1 -1
  184. package/dist/test-utils.d.ts +7 -7
  185. package/dist/test-utils.d.ts.map +1 -1
  186. package/dist/test-utils.js +32 -15
  187. package/dist/test-utils.js.map +1 -1
  188. package/docs/agent-composition.md +41 -35
  189. package/docs/host-api.md +201 -0
  190. package/docs/index.md +8 -14
  191. package/docs/interactions.md +12 -11
  192. package/docs/mcp-auth.md +6 -6
  193. package/docs/mcp-configuration.md +72 -24
  194. package/docs/pi-extension.md +39 -11
  195. package/docs/recipe-flow.md +9 -9
  196. package/docs/recipe-format.md +90 -41
  197. package/package.json +23 -17
  198. package/vendor/mcp-client/darwin-arm64/mcp-client +0 -0
  199. package/vendor/mcp-client/darwin-x64/mcp-client +0 -0
  200. package/vendor/mcp-client/linux-arm64/mcp-client +0 -0
  201. package/vendor/recipe-check/darwin-arm64/recipe-check +0 -0
  202. package/vendor/recipe-check/darwin-x64/recipe-check +0 -0
  203. package/vendor/recipe-check/linux-arm64/recipe-check +0 -0
  204. package/vendor/recipe-check/linux-x64/recipe-check +0 -0
  205. package/vendor/recipe-check/linux-x64-musl/recipe-check +0 -0
  206. package/vendor/recipe-check/win32-x64/recipe-check.exe +0 -0
  207. package/dist/agent-tool.d.ts.map +0 -1
  208. package/dist/agent-tool.js.map +0 -1
  209. package/dist/run.d.ts +0 -28
  210. package/dist/run.d.ts.map +0 -1
  211. package/dist/run.js +0 -84
  212. package/dist/run.js.map +0 -1
  213. package/dist/testing.d.ts +0 -25
  214. package/dist/testing.d.ts.map +0 -1
  215. package/dist/testing.js +0 -96
  216. package/dist/testing.js.map +0 -1
  217. package/docs/deployment-configuration.md +0 -65
  218. package/docs/migration.md +0 -70
  219. package/docs/python-bindings-release.md +0 -47
  220. package/docs/recipe-evals.md +0 -70
  221. package/docs/recipe-judges.md +0 -152
  222. package/docs/runtime-library.md +0 -171
@@ -0,0 +1,364 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
2
+
3
+ // node_modules/.pnpm/mcporter@0.12.3/node_modules/mcporter/dist/cli/generate/tools.js
4
+ function resolveSchemaType(value) {
5
+ if (value === "integer") {
6
+ return "number";
7
+ }
8
+ if (value === "string" || value === "number" || value === "boolean" || value === "array" || value === "object") {
9
+ return value;
10
+ }
11
+ return void 0;
12
+ }
13
+ function resolveArrayItemType(value) {
14
+ if (value === "integer") {
15
+ return "number";
16
+ }
17
+ if (value === "string" || value === "number" || value === "boolean" || value === "object") {
18
+ return value;
19
+ }
20
+ return void 0;
21
+ }
22
+ function buildToolMetadata(tool) {
23
+ const methodName = toProxyMethodName(tool.name);
24
+ const properties = extractOptions(tool);
25
+ return {
26
+ tool,
27
+ methodName,
28
+ options: properties
29
+ };
30
+ }
31
+ function buildToolMetadataList(tools, options = {}) {
32
+ const result = tools.map((tool) => buildToolMetadata(tool));
33
+ if (options.sort !== false) {
34
+ result.sort((left, right) => left.tool.name.localeCompare(right.tool.name));
35
+ }
36
+ const methods = /* @__PURE__ */ new Map();
37
+ for (const entry of result) {
38
+ const previous = methods.get(entry.methodName);
39
+ if (previous) {
40
+ throw new Error(`Generated proxy method collision '${entry.methodName}' for tools '${previous}' and '${entry.tool.name}'.`);
41
+ }
42
+ methods.set(entry.methodName, entry.tool.name);
43
+ }
44
+ return result;
45
+ }
46
+ function buildEmbeddedSchemaMap(tools) {
47
+ const result = {};
48
+ for (const entry of tools.toSorted((left, right) => left.tool.name.localeCompare(right.tool.name))) {
49
+ if (entry.tool.inputSchema && typeof entry.tool.inputSchema === "object") {
50
+ result[entry.tool.name] = entry.tool.inputSchema;
51
+ }
52
+ }
53
+ return result;
54
+ }
55
+ function extractOptions(tool) {
56
+ const schema = tool.inputSchema;
57
+ if (!schema || typeof schema !== "object") {
58
+ return [];
59
+ }
60
+ const record = schema;
61
+ if (record.type !== "object" || typeof record.properties !== "object") {
62
+ return [];
63
+ }
64
+ const properties = record.properties;
65
+ const requiredList = Array.isArray(record.required) ? record.required : [];
66
+ return Object.entries(properties).map(([property, descriptor]) => {
67
+ const type = inferType(descriptor);
68
+ const arrayItemType = type === "array" ? inferArrayItemType(descriptor) : void 0;
69
+ const enumValues = getEnumValues(descriptor);
70
+ const defaultValue = getDescriptorDefault(descriptor);
71
+ const formatInfo = getDescriptorFormatHint(descriptor);
72
+ const placeholder = buildPlaceholder(property, type, enumValues, formatInfo?.slug);
73
+ const exampleValue = buildExampleValue(property, type, enumValues, defaultValue, arrayItemType);
74
+ return {
75
+ property,
76
+ cliName: toCliOption(property),
77
+ description: getDescriptorDescription(descriptor),
78
+ required: requiredList.includes(property),
79
+ type,
80
+ arrayItemType,
81
+ placeholder,
82
+ exampleValue,
83
+ enumValues,
84
+ defaultValue,
85
+ formatHint: formatInfo?.display
86
+ };
87
+ });
88
+ }
89
+ function getEnumValues(descriptor) {
90
+ if (!descriptor || typeof descriptor !== "object") {
91
+ return void 0;
92
+ }
93
+ const record = descriptor;
94
+ if (Array.isArray(record.enum)) {
95
+ const values = record.enum.filter((entry) => typeof entry === "string");
96
+ return values.length > 0 ? values : void 0;
97
+ }
98
+ if (record.type === "array" && typeof record.items === "object" && record.items !== null) {
99
+ const nested = record.items;
100
+ if (Array.isArray(nested.enum)) {
101
+ const values = nested.enum.filter((entry) => typeof entry === "string");
102
+ return values.length > 0 ? values : void 0;
103
+ }
104
+ }
105
+ return void 0;
106
+ }
107
+ function getDescriptorDefault(descriptor) {
108
+ if (!descriptor || typeof descriptor !== "object") {
109
+ return void 0;
110
+ }
111
+ const record = descriptor;
112
+ if (record.default !== void 0) {
113
+ return record.default;
114
+ }
115
+ if (record.type === "array" && typeof record.items === "object" && record.items !== null) {
116
+ return Array.isArray(record.default) ? record.default : void 0;
117
+ }
118
+ return void 0;
119
+ }
120
+ function buildPlaceholder(property, type, enumValues, formatSlug) {
121
+ const normalized = property.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`).replace(/_/g, "-");
122
+ if (enumValues && enumValues.length > 0) {
123
+ return `<${normalized}:${enumValues.join("|")}>`;
124
+ }
125
+ switch (type) {
126
+ case "number":
127
+ return `<${normalized}:number>`;
128
+ case "boolean":
129
+ return `<${normalized}:true|false>`;
130
+ case "array":
131
+ return `<${normalized}:value1,value2>`;
132
+ case "object":
133
+ return `<${normalized}:json>`;
134
+ default:
135
+ if (formatSlug) {
136
+ return `<${normalized}:${formatSlug}>`;
137
+ }
138
+ return `<${normalized ?? "value"}>`;
139
+ }
140
+ }
141
+ function buildExampleValue(property, type, enumValues, defaultValue, arrayItemType) {
142
+ if (enumValues && enumValues.length > 0) {
143
+ return enumValues[0];
144
+ }
145
+ if (defaultValue !== void 0) {
146
+ try {
147
+ return typeof defaultValue === "string" ? defaultValue : JSON.stringify(defaultValue);
148
+ } catch {
149
+ return void 0;
150
+ }
151
+ }
152
+ switch (type) {
153
+ case "number":
154
+ return "1";
155
+ case "boolean":
156
+ return "true";
157
+ case "array":
158
+ switch (arrayItemType) {
159
+ case "number":
160
+ return "1,2";
161
+ case "boolean":
162
+ return "true,false";
163
+ case "object":
164
+ return '[{"key":"value"}]';
165
+ default:
166
+ return "value1,value2";
167
+ }
168
+ case "object":
169
+ return '{"key":"value"}';
170
+ default:
171
+ if (property.toLowerCase().includes("path")) {
172
+ return "/path/to/file.md";
173
+ }
174
+ if (property.toLowerCase().includes("id")) {
175
+ return "example-id";
176
+ }
177
+ return void 0;
178
+ }
179
+ }
180
+ function pickExampleLiteral(option) {
181
+ if (option.type === "array") {
182
+ if (Array.isArray(option.defaultValue)) {
183
+ try {
184
+ return JSON.stringify(option.defaultValue);
185
+ } catch {
186
+ return void 0;
187
+ }
188
+ }
189
+ if (option.enumValues && option.enumValues.length > 0) {
190
+ return JSON.stringify([option.enumValues[0]]);
191
+ }
192
+ switch (option.arrayItemType) {
193
+ case "number":
194
+ return "[1, 2]";
195
+ case "boolean":
196
+ return "[true, false]";
197
+ case "object":
198
+ return '[{"key":"value"}]';
199
+ default:
200
+ break;
201
+ }
202
+ }
203
+ if (option.enumValues && option.enumValues.length > 0) {
204
+ return JSON.stringify(option.enumValues[0]);
205
+ }
206
+ if (!option.exampleValue) {
207
+ return void 0;
208
+ }
209
+ if (option.type === "array") {
210
+ const values = option.exampleValue.split(",").map((entry) => entry.trim()).filter(Boolean);
211
+ if (values.length === 0) {
212
+ return void 0;
213
+ }
214
+ return `[${values.map((entry) => JSON.stringify(entry)).join(", ")}]`;
215
+ }
216
+ if (option.type === "number" || option.type === "boolean" || option.type === "object") {
217
+ return option.exampleValue;
218
+ }
219
+ try {
220
+ const parsed = JSON.parse(option.exampleValue);
221
+ if (typeof parsed === "number" || typeof parsed === "boolean") {
222
+ return option.exampleValue;
223
+ }
224
+ } catch {
225
+ }
226
+ return JSON.stringify(option.exampleValue);
227
+ }
228
+ function buildFallbackLiteral(option) {
229
+ switch (option.type) {
230
+ case "number":
231
+ return "1";
232
+ case "boolean":
233
+ return "true";
234
+ case "array":
235
+ switch (option.arrayItemType) {
236
+ case "number":
237
+ return "[1]";
238
+ case "boolean":
239
+ return "[true]";
240
+ case "object":
241
+ return '[{"key":"value"}]';
242
+ default:
243
+ return '["value1"]';
244
+ }
245
+ case "object":
246
+ return '{"key":"value"}';
247
+ default: {
248
+ if (option.property.toLowerCase().includes("id")) {
249
+ return JSON.stringify("example-id");
250
+ }
251
+ if (option.property.toLowerCase().includes("url")) {
252
+ return JSON.stringify("https://example.com");
253
+ }
254
+ return JSON.stringify("value");
255
+ }
256
+ }
257
+ }
258
+ function inferType(descriptor) {
259
+ if (!descriptor || typeof descriptor !== "object") {
260
+ return "unknown";
261
+ }
262
+ const type = descriptor.type;
263
+ if (Array.isArray(type)) {
264
+ for (const entry of type) {
265
+ const resolved2 = resolveSchemaType(entry);
266
+ if (resolved2) {
267
+ return resolved2;
268
+ }
269
+ }
270
+ return "unknown";
271
+ }
272
+ const resolved = resolveSchemaType(type);
273
+ if (resolved) {
274
+ return resolved;
275
+ }
276
+ return "unknown";
277
+ }
278
+ function inferArrayItemType(descriptor) {
279
+ if (!descriptor || typeof descriptor !== "object") {
280
+ return "unknown";
281
+ }
282
+ const record = descriptor;
283
+ if (record.type !== "array" || !record.items || typeof record.items !== "object") {
284
+ return "unknown";
285
+ }
286
+ const items = record.items;
287
+ const itemType = items.type;
288
+ if (Array.isArray(itemType)) {
289
+ for (const entry of itemType) {
290
+ const resolved2 = resolveArrayItemType(entry);
291
+ if (resolved2) {
292
+ return resolved2;
293
+ }
294
+ }
295
+ return "unknown";
296
+ }
297
+ const resolved = resolveArrayItemType(itemType);
298
+ if (resolved) {
299
+ return resolved;
300
+ }
301
+ return "unknown";
302
+ }
303
+ function getDescriptorDescription(descriptor) {
304
+ if (typeof descriptor !== "object" || descriptor === null) {
305
+ return void 0;
306
+ }
307
+ const record = descriptor;
308
+ return typeof record.description === "string" ? record.description : void 0;
309
+ }
310
+ function getDescriptorFormatHint(descriptor) {
311
+ if (typeof descriptor !== "object" || descriptor === null) {
312
+ return void 0;
313
+ }
314
+ const record = descriptor;
315
+ const formatRaw = typeof record.format === "string" ? record.format : void 0;
316
+ const description = typeof record.description === "string" ? record.description : void 0;
317
+ const iso8601FromDescription = !formatRaw && description && /\biso[-\s]*8601\b/i.test(description) ? "iso-8601" : void 0;
318
+ const isoFormatFromDescription = !formatRaw && !iso8601FromDescription && description && /\biso\s+format\b/i.test(description) ? "iso-8601" : void 0;
319
+ const formatFromDescription = iso8601FromDescription ?? isoFormatFromDescription;
320
+ const slug = formatRaw ?? formatFromDescription;
321
+ if (!slug) {
322
+ return void 0;
323
+ }
324
+ let display;
325
+ switch (slug) {
326
+ case "date-time":
327
+ case "iso-8601":
328
+ display = "ISO 8601";
329
+ break;
330
+ case "uuid":
331
+ display = "UUID";
332
+ break;
333
+ default:
334
+ display = slug.replace(/[_-]/g, " ");
335
+ display = display.charAt(0).toUpperCase() + display.slice(1);
336
+ break;
337
+ }
338
+ return {
339
+ display: display.replace(/\b\w/g, (char) => char.toUpperCase()),
340
+ slug
341
+ };
342
+ }
343
+ function toProxyMethodName(toolName) {
344
+ return toolName.replace(/[-_](\w)/g, (_, char) => char.toUpperCase()).replace(/^(\w)/, (match) => match.toLowerCase());
345
+ }
346
+ function toCliOption(property) {
347
+ return property.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`).replace(/_/g, "-");
348
+ }
349
+ var toolsTestHelpers = {
350
+ getEnumValues,
351
+ getDescriptorDefault,
352
+ buildPlaceholder,
353
+ buildExampleValue,
354
+ pickExampleLiteral,
355
+ buildFallbackLiteral
356
+ };
357
+
358
+ export {
359
+ buildToolMetadataList,
360
+ buildEmbeddedSchemaMap,
361
+ pickExampleLiteral,
362
+ buildFallbackLiteral,
363
+ toolsTestHelpers
364
+ };
@@ -0,0 +1,35 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
2
+
3
+ // node_modules/.pnpm/mcporter@0.12.3/node_modules/mcporter/dist/cli/flag-utils.js
4
+ function extractFlags(args, keys) {
5
+ const flags = {};
6
+ let index = 0;
7
+ while (index < args.length) {
8
+ const token = args[index];
9
+ if (token === "--") {
10
+ break;
11
+ }
12
+ if (token === void 0 || !keys.includes(token)) {
13
+ index += 1;
14
+ continue;
15
+ }
16
+ const value = args[index + 1];
17
+ if (value === void 0) {
18
+ throw new Error(`Flag '${token}' requires a value.`);
19
+ }
20
+ flags[token] = value;
21
+ args.splice(index, 2);
22
+ }
23
+ return flags;
24
+ }
25
+ function expectValue(flag, value) {
26
+ if (value === void 0) {
27
+ throw new Error(`Flag '${flag}' requires a value.`);
28
+ }
29
+ return value;
30
+ }
31
+
32
+ export {
33
+ extractFlags,
34
+ expectValue
35
+ };