callman-core 1.27.0 → 1.28.1

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 (186) hide show
  1. package/ai-packs/db-queries.md +10 -1
  2. package/ai-packs/diagram-components.md +373 -0
  3. package/ai-packs/scenario-nodes.md +451 -0
  4. package/dist/ai/index.d.ts +1 -0
  5. package/dist/ai/index.d.ts.map +1 -1
  6. package/dist/ai/index.js +1 -0
  7. package/dist/ai/index.js.map +1 -1
  8. package/dist/ai/prompts/scenario.d.ts.map +1 -1
  9. package/dist/ai/prompts/scenario.js +9 -8
  10. package/dist/ai/prompts/scenario.js.map +1 -1
  11. package/dist/ai/prompts/scenarioNodeReference.d.ts +16 -0
  12. package/dist/ai/prompts/scenarioNodeReference.d.ts.map +1 -0
  13. package/dist/ai/prompts/scenarioNodeReference.js +882 -0
  14. package/dist/ai/prompts/scenarioNodeReference.js.map +1 -0
  15. package/dist/curl/bodyFormat.d.ts +4 -0
  16. package/dist/curl/bodyFormat.d.ts.map +1 -0
  17. package/dist/curl/bodyFormat.js +80 -0
  18. package/dist/curl/bodyFormat.js.map +1 -0
  19. package/dist/curl/index.d.ts +5 -0
  20. package/dist/curl/index.d.ts.map +1 -0
  21. package/dist/curl/index.js +4 -0
  22. package/dist/curl/index.js.map +1 -0
  23. package/dist/curl/parseCurl.d.ts +4 -0
  24. package/dist/curl/parseCurl.d.ts.map +1 -0
  25. package/dist/curl/parseCurl.js +288 -0
  26. package/dist/curl/parseCurl.js.map +1 -0
  27. package/dist/curl/rows.d.ts +6 -0
  28. package/dist/curl/rows.d.ts.map +1 -0
  29. package/dist/curl/rows.js +23 -0
  30. package/dist/curl/rows.js.map +1 -0
  31. package/dist/curl/types.d.ts +21 -0
  32. package/dist/curl/types.d.ts.map +1 -0
  33. package/dist/curl/types.js +6 -0
  34. package/dist/curl/types.js.map +1 -0
  35. package/dist/diagram/componentCatalog.d.ts +31 -0
  36. package/dist/diagram/componentCatalog.d.ts.map +1 -0
  37. package/dist/diagram/componentCatalog.data.d.ts +3 -0
  38. package/dist/diagram/componentCatalog.data.d.ts.map +1 -0
  39. package/dist/diagram/componentCatalog.data.js +287 -0
  40. package/dist/diagram/componentCatalog.data.js.map +1 -0
  41. package/dist/diagram/componentCatalog.js +71 -0
  42. package/dist/diagram/componentCatalog.js.map +1 -0
  43. package/dist/diagram/edgeSemantics.d.ts +28 -0
  44. package/dist/diagram/edgeSemantics.d.ts.map +1 -0
  45. package/dist/diagram/edgeSemantics.js +78 -0
  46. package/dist/diagram/edgeSemantics.js.map +1 -0
  47. package/dist/diagram/elkGraph.d.ts +80 -0
  48. package/dist/diagram/elkGraph.d.ts.map +1 -0
  49. package/dist/diagram/elkGraph.js +283 -0
  50. package/dist/diagram/elkGraph.js.map +1 -0
  51. package/dist/diagram/index.d.ts +7 -0
  52. package/dist/diagram/index.d.ts.map +1 -0
  53. package/dist/diagram/index.js +13 -0
  54. package/dist/diagram/index.js.map +1 -0
  55. package/dist/diagram/migrations.d.ts +3 -0
  56. package/dist/diagram/migrations.d.ts.map +1 -0
  57. package/dist/diagram/migrations.js +33 -0
  58. package/dist/diagram/migrations.js.map +1 -0
  59. package/dist/diagram/normalize.d.ts +4 -0
  60. package/dist/diagram/normalize.d.ts.map +1 -0
  61. package/dist/diagram/normalize.js +68 -0
  62. package/dist/diagram/normalize.js.map +1 -0
  63. package/dist/diagram/schema.d.ts +116 -0
  64. package/dist/diagram/schema.d.ts.map +1 -0
  65. package/dist/diagram/schema.js +135 -0
  66. package/dist/diagram/schema.js.map +1 -0
  67. package/dist/http-file/detect.d.ts +12 -0
  68. package/dist/http-file/detect.d.ts.map +1 -0
  69. package/dist/http-file/detect.js +108 -0
  70. package/dist/http-file/detect.js.map +1 -0
  71. package/dist/http-file/flatImport.d.ts +33 -0
  72. package/dist/http-file/flatImport.d.ts.map +1 -0
  73. package/dist/http-file/flatImport.js +102 -0
  74. package/dist/http-file/flatImport.js.map +1 -0
  75. package/dist/http-file/index.d.ts +4 -0
  76. package/dist/http-file/index.d.ts.map +1 -0
  77. package/dist/http-file/index.js +7 -0
  78. package/dist/http-file/index.js.map +1 -0
  79. package/dist/http-file/parseHttpFile.d.ts +13 -0
  80. package/dist/http-file/parseHttpFile.d.ts.map +1 -0
  81. package/dist/http-file/parseHttpFile.js +154 -0
  82. package/dist/http-file/parseHttpFile.js.map +1 -0
  83. package/dist/index.d.ts +4 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +8 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/request/requestBody.d.ts +55 -0
  88. package/dist/request/requestBody.d.ts.map +1 -0
  89. package/dist/request/requestBody.js +198 -0
  90. package/dist/request/requestBody.js.map +1 -0
  91. package/dist/runner/requestRunner.d.ts.map +1 -1
  92. package/dist/runner/requestRunner.js +127 -43
  93. package/dist/runner/requestRunner.js.map +1 -1
  94. package/dist/runner/runCollection.d.ts +1 -1
  95. package/dist/runner/runCollection.d.ts.map +1 -1
  96. package/dist/runner/runCollection.js +9 -2
  97. package/dist/runner/runCollection.js.map +1 -1
  98. package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts +2 -1
  99. package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -1
  100. package/dist/scenario-runner/adapters/helpers/request-helpers.js +8 -40
  101. package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
  102. package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
  103. package/dist/scenario-runner/adapters/request-executor.js +2 -29
  104. package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
  105. package/dist/scenario-runner/index.d.ts +1 -0
  106. package/dist/scenario-runner/index.d.ts.map +1 -1
  107. package/dist/scenario-runner/index.js +1 -0
  108. package/dist/scenario-runner/index.js.map +1 -1
  109. package/dist/scenario-runner/labels.d.ts +3 -0
  110. package/dist/scenario-runner/labels.d.ts.map +1 -0
  111. package/dist/scenario-runner/labels.js +20 -0
  112. package/dist/scenario-runner/labels.js.map +1 -0
  113. package/dist/scenario-runner/runScenario.d.ts.map +1 -1
  114. package/dist/scenario-runner/runScenario.js +4 -11
  115. package/dist/scenario-runner/runScenario.js.map +1 -1
  116. package/dist/script/legacy.d.ts.map +1 -1
  117. package/dist/script/legacy.js +24 -9
  118. package/dist/script/legacy.js.map +1 -1
  119. package/dist/types/index.d.ts +18 -1
  120. package/dist/types/index.d.ts.map +1 -1
  121. package/dist/variables/resolver.d.ts.map +1 -1
  122. package/dist/variables/resolver.js +27 -5
  123. package/dist/variables/resolver.js.map +1 -1
  124. package/dist-cjs/ai/index.js +4 -1
  125. package/dist-cjs/ai/index.js.map +1 -1
  126. package/dist-cjs/ai/prompts/scenario.js +9 -8
  127. package/dist-cjs/ai/prompts/scenario.js.map +1 -1
  128. package/dist-cjs/ai/prompts/scenarioNodeReference.js +886 -0
  129. package/dist-cjs/ai/prompts/scenarioNodeReference.js.map +1 -0
  130. package/dist-cjs/curl/bodyFormat.js +85 -0
  131. package/dist-cjs/curl/bodyFormat.js.map +1 -0
  132. package/dist-cjs/curl/index.js +15 -0
  133. package/dist-cjs/curl/index.js.map +1 -0
  134. package/dist-cjs/curl/parseCurl.js +293 -0
  135. package/dist-cjs/curl/parseCurl.js.map +1 -0
  136. package/dist-cjs/curl/rows.js +30 -0
  137. package/dist-cjs/curl/rows.js.map +1 -0
  138. package/dist-cjs/curl/types.js +7 -0
  139. package/dist-cjs/curl/types.js.map +1 -0
  140. package/dist-cjs/diagram/componentCatalog.data.js +290 -0
  141. package/dist-cjs/diagram/componentCatalog.data.js.map +1 -0
  142. package/dist-cjs/diagram/componentCatalog.js +79 -0
  143. package/dist-cjs/diagram/componentCatalog.js.map +1 -0
  144. package/dist-cjs/diagram/edgeSemantics.js +86 -0
  145. package/dist-cjs/diagram/edgeSemantics.js.map +1 -0
  146. package/dist-cjs/diagram/elkGraph.js +293 -0
  147. package/dist-cjs/diagram/elkGraph.js.map +1 -0
  148. package/dist-cjs/diagram/index.js +33 -0
  149. package/dist-cjs/diagram/index.js.map +1 -0
  150. package/dist-cjs/diagram/migrations.js +37 -0
  151. package/dist-cjs/diagram/migrations.js.map +1 -0
  152. package/dist-cjs/diagram/normalize.js +73 -0
  153. package/dist-cjs/diagram/normalize.js.map +1 -0
  154. package/dist-cjs/diagram/schema.js +144 -0
  155. package/dist-cjs/diagram/schema.js.map +1 -0
  156. package/dist-cjs/http-file/detect.js +113 -0
  157. package/dist-cjs/http-file/detect.js.map +1 -0
  158. package/dist-cjs/http-file/flatImport.js +109 -0
  159. package/dist-cjs/http-file/flatImport.js.map +1 -0
  160. package/dist-cjs/http-file/index.js +21 -0
  161. package/dist-cjs/http-file/index.js.map +1 -0
  162. package/dist-cjs/http-file/parseHttpFile.js +160 -0
  163. package/dist-cjs/http-file/parseHttpFile.js.map +1 -0
  164. package/dist-cjs/index.js +14 -1
  165. package/dist-cjs/index.js.map +1 -1
  166. package/dist-cjs/request/requestBody.js +206 -0
  167. package/dist-cjs/request/requestBody.js.map +1 -0
  168. package/dist-cjs/runner/requestRunner.js +127 -43
  169. package/dist-cjs/runner/requestRunner.js.map +1 -1
  170. package/dist-cjs/runner/runCollection.js +9 -2
  171. package/dist-cjs/runner/runCollection.js.map +1 -1
  172. package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +7 -42
  173. package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
  174. package/dist-cjs/scenario-runner/adapters/request-executor.js +3 -30
  175. package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
  176. package/dist-cjs/scenario-runner/index.js +4 -1
  177. package/dist-cjs/scenario-runner/index.js.map +1 -1
  178. package/dist-cjs/scenario-runner/labels.js +24 -0
  179. package/dist-cjs/scenario-runner/labels.js.map +1 -0
  180. package/dist-cjs/scenario-runner/runScenario.js +4 -11
  181. package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
  182. package/dist-cjs/script/legacy.js +24 -9
  183. package/dist-cjs/script/legacy.js.map +1 -1
  184. package/dist-cjs/variables/resolver.js +27 -5
  185. package/dist-cjs/variables/resolver.js.map +1 -1
  186. package/package.json +1 -1
@@ -0,0 +1,154 @@
1
+ // Importer for the VS Code REST Client / JetBrains ".http" (aka ".rest")
2
+ // format: requests separated by `###`, each with a `METHOD url` line, header
3
+ // lines, a blank line, then a body. `{{var}}` references map straight onto
4
+ // callman's templating, so no rewriting is needed.
5
+ //
6
+ // File variables (`@name = value` lines before a request line) are returned
7
+ // as-is in `variables`, NOT substituted into the requests: both clients
8
+ // resolve `{{name}}` at send time, which is exactly what callman does once
9
+ // the caller puts the variables in an environment. A value that references
10
+ // another variable (`@url = {{host}}/api`) stays a template too — callman's
11
+ // resolver expands nested tokens.
12
+ import { inferBodyStateFromRaw } from "../curl/bodyFormat.js";
13
+ import { filledRows, queryRowsFromUrl } from "../curl/rows.js";
14
+ import { stripUrlQuery } from "../utils/urlQuery.js";
15
+ import { collectionNameFromFileName, toPersistedRequestBody, } from "./flatImport.js";
16
+ const REQUEST_LINE = /^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE|CONNECT)\s+(\S.*)$/i;
17
+ // Split on `###` delimiter lines. Any trailing text on the delimiter line
18
+ // (`### Get user`) becomes the block title. Content before the first `###`
19
+ // is its own (untitled) block, since many .http files omit the leading one.
20
+ const splitBlocks = (text) => {
21
+ const blocks = [];
22
+ let title = "";
23
+ let lines = [];
24
+ let started = false;
25
+ const push = () => {
26
+ if (started)
27
+ blocks.push({ title, lines });
28
+ };
29
+ for (const raw of text.split(/\r?\n/)) {
30
+ const delimiter = raw.match(/^\s*###+(.*)$/);
31
+ if (delimiter) {
32
+ push();
33
+ title = delimiter[1].trim();
34
+ lines = [];
35
+ started = true;
36
+ }
37
+ else {
38
+ started = true;
39
+ lines.push(raw);
40
+ }
41
+ }
42
+ push();
43
+ return blocks;
44
+ };
45
+ // `@base = https://api.example.com` — a file variable definition line.
46
+ const FILE_VARIABLE_LINE = /^@([\w-]+)\s*=(.*)$/;
47
+ const parseBlock = (block) => {
48
+ const headers = [];
49
+ const variables = [];
50
+ let name = block.title;
51
+ let index = 0;
52
+ // Skip leading comments, capturing an explicit `# @name foo` if present,
53
+ // and collect file-variable definitions.
54
+ for (; index < block.lines.length; index += 1) {
55
+ const line = block.lines[index].trim();
56
+ if (!line)
57
+ continue;
58
+ if (line.startsWith("#") || line.startsWith("//")) {
59
+ const nameMatch = line.match(/@name\s*=?\s*(.+)$/);
60
+ if (nameMatch && !name)
61
+ name = nameMatch[1].trim();
62
+ continue;
63
+ }
64
+ const variable = line.match(FILE_VARIABLE_LINE);
65
+ if (variable) {
66
+ variables.push({ key: variable[1], value: variable[2].trim(), enabled: true });
67
+ continue;
68
+ }
69
+ break;
70
+ }
71
+ if (index >= block.lines.length)
72
+ return { request: null, variables };
73
+ // Request line: `METHOD url [HTTP/1.1]` or a bare url (defaults to GET).
74
+ const requestLine = block.lines[index].trim().replace(/\s+HTTP\/[\d.]+$/i, "");
75
+ const match = requestLine.match(REQUEST_LINE);
76
+ let method;
77
+ let url;
78
+ if (match) {
79
+ method = match[1].toUpperCase();
80
+ url = match[2].trim();
81
+ }
82
+ else if (/^(https?:\/\/|\{\{)/i.test(requestLine)) {
83
+ method = "GET";
84
+ url = requestLine;
85
+ }
86
+ else {
87
+ return { request: null, variables };
88
+ }
89
+ index += 1;
90
+ // Header lines up to the first blank line.
91
+ for (; index < block.lines.length; index += 1) {
92
+ const line = block.lines[index];
93
+ if (!line.trim()) {
94
+ index += 1;
95
+ break;
96
+ }
97
+ const separator = line.indexOf(":");
98
+ if (separator > 0) {
99
+ headers.push({
100
+ key: line.slice(0, separator).trim(),
101
+ value: line.slice(separator + 1).trim(),
102
+ enabled: true,
103
+ });
104
+ }
105
+ }
106
+ const bodyRaw = block.lines.slice(index).join("\n").trim();
107
+ if (!name)
108
+ name = `${method} ${url}`;
109
+ return { request: { name, method, url, headers, bodyRaw }, variables };
110
+ };
111
+ export const parseHttpRequests = (text) => splitBlocks(text)
112
+ .map((block) => parseBlock(block).request)
113
+ .filter((request) => request !== null);
114
+ // Every `@name = value` file variable, in file order. A name defined twice
115
+ // keeps its first position and its LAST value (a later definition overrides
116
+ // an earlier one for the requests below it; one environment can hold only
117
+ // one value).
118
+ export const parseHttpVariables = (text) => {
119
+ const byKey = new Map();
120
+ for (const block of splitBlocks(text)) {
121
+ for (const variable of parseBlock(block).variables) {
122
+ const existing = byKey.get(variable.key);
123
+ if (existing)
124
+ existing.value = variable.value;
125
+ else
126
+ byKey.set(variable.key, variable);
127
+ }
128
+ }
129
+ return [...byKey.values()];
130
+ };
131
+ export const parseHttpFile = (fileName, text) => {
132
+ const parsed = parseHttpRequests(text);
133
+ if (parsed.length === 0) {
134
+ throw new Error("No requests found in the .http file");
135
+ }
136
+ const variables = parseHttpVariables(text);
137
+ return {
138
+ collectionName: collectionNameFromFileName(fileName, "Imported HTTP file"),
139
+ ...(variables.length > 0 ? { variables } : {}),
140
+ requests: parsed.map((request) => {
141
+ const bodyState = inferBodyStateFromRaw(request.bodyRaw, request.headers);
142
+ return {
143
+ name: request.name,
144
+ method: request.method,
145
+ url: stripUrlQuery(request.url),
146
+ // Strip blank rows — the backend rejects headers/query with empty keys.
147
+ headers: filledRows(request.headers),
148
+ query: filledRows(queryRowsFromUrl(request.url)),
149
+ body: toPersistedRequestBody(bodyState),
150
+ };
151
+ }),
152
+ };
153
+ };
154
+ //# sourceMappingURL=parseHttpFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseHttpFile.js","sourceRoot":"","sources":["../../src/http-file/parseHttpFile.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { runCollection } from "./runner/runCollection.js";
2
2
  export { runRequest } from "./runner/requestRunner.js";
3
3
  export { runRequestWithDataset } from "./runner/runRequestWithDataset.js";
4
4
  export { executeRequest } from "./request/executeRequest.js";
5
+ export { contentTypeForRawLanguage, describeRequestBody, persistedBodyToWire, readRequestBodyEnvelope, type RequestBodyEnvelope, type RequestBodyFormEntry, type WireRequestBody, } from "./request/requestBody.js";
5
6
  export { resolveOAuth2Token, buildOAuth2TokenRequest, OAuth2Error, type OAuth2HttpRequest, type OAuth2HttpResponse, type OAuth2HttpPost, type OAuth2TokenCacheEntry, } from "./request/oauth2.js";
6
7
  export { isXmlContentType, parseXml, looksLikeXml, XML_PARSER_OPTIONS, type ParseXmlResult, } from "./utils/xml.js";
7
8
  export { sanitizeJsonBody } from "./utils/jsonc.js";
@@ -29,6 +30,9 @@ export { applySoapRequestTransforms, type SoapRequestConfig, type SoapRuntimeReq
29
30
  export { buildWsSecurityHeader, injectWsSecurityHeader, type WsSecurityConfig, type WsSecurityHeaderParts, } from "./soap/wsSecurity.js";
30
31
  export { SOAP_11_ENVELOPE_TEMPLATE, SOAP_12_ENVELOPE_TEMPLATE, getSoapEnvelopeTemplate, } from "./soap/envelope.js";
31
32
  export * from "./ai/index.js";
33
+ export * from "./curl/index.js";
34
+ export * from "./http-file/index.js";
35
+ export * from "./diagram/index.js";
32
36
  export * from "./ui-test/compose.js";
33
37
  export * from "./scenario-runner/index.js";
34
38
  export * from "./host/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,9 @@ export { runCollection } from "./runner/runCollection.js";
2
2
  export { runRequest } from "./runner/requestRunner.js";
3
3
  export { runRequestWithDataset } from "./runner/runRequestWithDataset.js";
4
4
  export { executeRequest } from "./request/executeRequest.js";
5
+ // Persisted request body → wire form (raw text / urlencoded / multipart text
6
+ // fields / none), shared by runRequest and the scenario request executor.
7
+ export { contentTypeForRawLanguage, describeRequestBody, persistedBodyToWire, readRequestBodyEnvelope, } from "./request/requestBody.js";
5
8
  export { resolveOAuth2Token, buildOAuth2TokenRequest, OAuth2Error, } from "./request/oauth2.js";
6
9
  export { isXmlContentType, parseXml, looksLikeXml, XML_PARSER_OPTIONS, } from "./utils/xml.js";
7
10
  export { sanitizeJsonBody } from "./utils/jsonc.js";
@@ -30,6 +33,11 @@ export { SOAP_11_ENVELOPE_TEMPLATE, SOAP_12_ENVELOPE_TEMPLATE, getSoapEnvelopeTe
30
33
  // extraction (jsonRepair) — one source for backend hosted generation and
31
34
  // desktop local-CLI generation.
32
35
  export * from "./ai/index.js";
36
+ // Import parsers (cURL, .http) + format detection and the diagram document
37
+ // contract — shared by the desktop, the MCP server and the backend.
38
+ export * from "./curl/index.js";
39
+ export * from "./http-file/index.js";
40
+ export * from "./diagram/index.js";
33
41
  export * from "./ui-test/compose.js";
34
42
  export * from "./scenario-runner/index.js";
35
43
  export * from "./host/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,GAKZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA8BnF,OAAO,EACL,eAAe,GAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAwB,MAAM,6BAA6B,CAAC;AAC3F,kDAAkD;AAClD,OAAO,EACL,0BAA0B,GAG3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,8EAA8E;AAC9E,yEAAyE;AACzE,gCAAgC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,6EAA6E;AAC7E,0EAA0E;AAC1E,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,GAKZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA8BnF,OAAO,EACL,eAAe,GAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAwB,MAAM,6BAA6B,CAAC;AAC3F,kDAAkD;AAClD,OAAO,EACL,0BAA0B,GAG3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,8EAA8E;AAC9E,yEAAyE;AACzE,gCAAgC;AAChC,cAAc,eAAe,CAAC;AAC9B,2EAA2E;AAC3E,oEAAoE;AACpE,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { RequestBodyMode } from "../curl/types.js";
2
+ export interface RequestBodyFormEntry {
3
+ key: string;
4
+ value: string;
5
+ enabled?: boolean;
6
+ type?: "text" | "file";
7
+ }
8
+ export interface RequestBodyEnvelope {
9
+ mode: RequestBodyMode;
10
+ raw?: string;
11
+ rawLanguage?: string;
12
+ formEntries?: RequestBodyFormEntry[];
13
+ }
14
+ export interface WireRequestBody {
15
+ /**
16
+ * How the body was read: an envelope mode, or `"value"` for a plain JSON
17
+ * value (which is passed through untouched).
18
+ */
19
+ mode: RequestBodyMode | "value";
20
+ /**
21
+ * What the HTTP driver sends: `undefined` (no body), the raw text, the
22
+ * urlencoded string (`a=1&b=2`), a `FormData` of the text fields, or the
23
+ * plain value unchanged.
24
+ */
25
+ data: unknown;
26
+ /**
27
+ * The Content-Type the body implies (`application/xml`,
28
+ * `application/x-www-form-urlencoded`, …). Absent for no body, plain values
29
+ * and multipart — the driver writes the multipart boundary itself.
30
+ */
31
+ contentType?: string;
32
+ /** The input headers with Content-Type reconciled against the body. */
33
+ headers: Record<string, string>;
34
+ /**
35
+ * Keys of enabled multipart FILE parts. They are NOT in `data`: file bytes
36
+ * need a fixture store, which only scenario hosts have.
37
+ */
38
+ fileParts: string[];
39
+ }
40
+ export declare const contentTypeForRawLanguage: (language: string | undefined) => string;
41
+ export declare const readRequestBodyEnvelope: (body: unknown) => RequestBodyEnvelope | null;
42
+ export declare const buildFormBody: (mode: "formdata" | "urlencoded", entries: readonly RequestBodyFormEntry[], resolve?: (text: string) => string) => URLSearchParams | FormData;
43
+ /**
44
+ * Map a persisted request body to its wire form. `resolve` (optional) is
45
+ * applied to the raw text and to form keys/values so `{{var}}` templates
46
+ * resolve inside them; plain values are returned untouched (resolve them
47
+ * yourself — `runRequest` does, deep, as it always has).
48
+ *
49
+ * Multipart FILE parts are not sent (see `WireRequestBody.fileParts`).
50
+ */
51
+ export declare const persistedBodyToWire: (body: unknown, headers?: Record<string, string>, options?: {
52
+ resolve?: (text: string) => string;
53
+ }) => WireRequestBody;
54
+ export declare const describeRequestBody: (body: unknown) => unknown;
55
+ //# sourceMappingURL=requestBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestBody.d.ts","sourceRoot":"","sources":["../../src/request/requestBody.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAyBD,eAAO,MAAM,yBAAyB,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,MAYxE,CAAC;AAIF,eAAO,MAAM,uBAAuB,GAAI,MAAM,OAAO,KAAG,mBAAmB,GAAG,IA6B7E,CAAC;AAKF,eAAO,MAAM,aAAa,GACxB,MAAM,UAAU,GAAG,YAAY,EAC/B,SAAS,SAAS,oBAAoB,EAAE,EACxC,UAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,KACjD,eAAe,GAAG,QAOpB,CAAC;AAyBF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,OAAO,EACb,UAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,UAAS;IAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAAO,KACnD,eA2DF,CAAC;AAMF,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,KAAG,OAwBnD,CAAC"}
@@ -0,0 +1,198 @@
1
+ // Persisted request body → what actually goes on the wire. ONE mapping for
2
+ // every host that sends a SAVED request: the collection runner
3
+ // (`runRequest`, used by callme-cli and callman-mcp) and the scenario request
4
+ // executor share the raw Content-Type table and the form builder below.
5
+ //
6
+ // Saved requests keep their body in the persisted shape (see
7
+ // `toPersistedRequestBody` / the desktop's `serializeBodyState`):
8
+ // - a plain JSON value (object, array, string, …) — sent as-is;
9
+ // - `{ mode: "raw", raw, rawLanguage }` — non-JSON raw text (xml/text/html);
10
+ // - `{ mode: "formdata" | "urlencoded", formEntries: [{ key, value, enabled, type? }] }`;
11
+ // - `{ mode: "none" }` — no body.
12
+ // Handing the envelope itself to the HTTP driver sent it as JSON
13
+ // (`{"mode":"raw","raw":"<a/>",...}`), which no server can parse.
14
+ //
15
+ // Isomorphic: `FormData` / `URLSearchParams` exist in Node 18+ and the
16
+ // browser, so this module is safe in the Electron renderer too.
17
+ import { sniffRawBodyLanguage } from "../curl/bodyFormat.js";
18
+ import { sanitizeJsonBody } from "../utils/jsonc.js";
19
+ const FORM_URLENCODED = "application/x-www-form-urlencoded";
20
+ // Keys a scenario-shaped body state carries next to `mode`; a `{mode:"none"}`
21
+ // with anything else is somebody's JSON payload, not an empty body.
22
+ const BODY_STATE_KEYS = new Set(["mode", "raw", "rawLanguage", "formEntries"]);
23
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
24
+ const isJsonContentType = (contentType) => /\bjson\b/i.test(contentType);
25
+ const isValidJsonText = (text) => {
26
+ try {
27
+ JSON.parse(sanitizeJsonBody(text));
28
+ return true;
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ };
34
+ // Auto Content-Type for a raw body sub-format. Keeps parity with the
35
+ // desktop request builder so an XML/text/html body is not mislabelled as
36
+ // JSON (which would make a server's JSON parser reject it).
37
+ export const contentTypeForRawLanguage = (language) => {
38
+ switch (language) {
39
+ case "xml":
40
+ return "application/xml";
41
+ case "html":
42
+ return "text/html";
43
+ case "text":
44
+ return "text/plain";
45
+ case "json":
46
+ default:
47
+ return "application/json";
48
+ }
49
+ };
50
+ // Recognise the structured persisted shapes; `null` means "a plain value".
51
+ // Same structural tests as the desktop's `inferBodyState`.
52
+ export const readRequestBodyEnvelope = (body) => {
53
+ if (!isRecord(body) || typeof body.mode !== "string") {
54
+ return null;
55
+ }
56
+ if (body.mode === "raw" && typeof body.raw === "string") {
57
+ return {
58
+ mode: "raw",
59
+ raw: body.raw,
60
+ ...(typeof body.rawLanguage === "string" ? { rawLanguage: body.rawLanguage } : {}),
61
+ };
62
+ }
63
+ if ((body.mode === "formdata" || body.mode === "urlencoded") &&
64
+ Array.isArray(body.formEntries)) {
65
+ return {
66
+ mode: body.mode,
67
+ formEntries: body.formEntries.filter(isRecord).map((entry) => ({
68
+ key: typeof entry.key === "string" ? entry.key : "",
69
+ value: entry.value === undefined || entry.value === null ? "" : String(entry.value),
70
+ ...(typeof entry.enabled === "boolean" ? { enabled: entry.enabled } : {}),
71
+ ...(entry.type === "text" || entry.type === "file" ? { type: entry.type } : {}),
72
+ })),
73
+ };
74
+ }
75
+ if (body.mode === "none" && Object.keys(body).every((key) => BODY_STATE_KEYS.has(key))) {
76
+ return { mode: "none" };
77
+ }
78
+ return null;
79
+ };
80
+ // Enabled, keyed TEXT rows of a form body, with keys/values resolved.
81
+ // `append` keeps duplicate keys — valid form semantics an object map cannot
82
+ // express.
83
+ export const buildFormBody = (mode, entries, resolve = (text) => text) => {
84
+ const form = mode === "urlencoded" ? new URLSearchParams() : new FormData();
85
+ for (const entry of entries) {
86
+ if (entry.enabled === false || !entry.key.trim() || entry.type === "file")
87
+ continue;
88
+ form.append(resolve(entry.key), resolve(entry.value));
89
+ }
90
+ return form;
91
+ };
92
+ const findHeaderKey = (headers, name) => Object.keys(headers).find((key) => key.toLowerCase() === name);
93
+ // Set the implied Content-Type when none is present. An existing JSON type is
94
+ // also replaced when the body is demonstrably not JSON: callme-cli and
95
+ // callman-mcp default every bodied request to `application/json` before core
96
+ // sees it, and a urlencoded or XML body under that header is rejected by the
97
+ // server's JSON parser. Any other explicit type is the user's call.
98
+ const reconcileContentType = (headers, contentType, bodyIsJson) => {
99
+ const existingKey = findHeaderKey(headers, "content-type");
100
+ if (!existingKey) {
101
+ return { ...headers, "Content-Type": contentType };
102
+ }
103
+ if (!bodyIsJson && isJsonContentType(headers[existingKey] ?? "")) {
104
+ return { ...headers, [existingKey]: contentType };
105
+ }
106
+ return headers;
107
+ };
108
+ /**
109
+ * Map a persisted request body to its wire form. `resolve` (optional) is
110
+ * applied to the raw text and to form keys/values so `{{var}}` templates
111
+ * resolve inside them; plain values are returned untouched (resolve them
112
+ * yourself — `runRequest` does, deep, as it always has).
113
+ *
114
+ * Multipart FILE parts are not sent (see `WireRequestBody.fileParts`).
115
+ */
116
+ export const persistedBodyToWire = (body, headers = {}, options = {}) => {
117
+ const resolve = options.resolve ?? ((text) => text);
118
+ const envelope = readRequestBodyEnvelope(body);
119
+ if (!envelope) {
120
+ return { mode: "value", data: body, headers, fileParts: [] };
121
+ }
122
+ if (envelope.mode === "none") {
123
+ return { mode: "none", data: undefined, headers, fileParts: [] };
124
+ }
125
+ if (envelope.mode === "raw") {
126
+ const text = resolve(envelope.raw ?? "");
127
+ if (!text.trim()) {
128
+ return { mode: "raw", data: "", headers, fileParts: [] };
129
+ }
130
+ // An envelope saved without a language gets the desktop's sniff.
131
+ const language = envelope.rawLanguage ?? sniffRawBodyLanguage(text);
132
+ const contentType = contentTypeForRawLanguage(language);
133
+ return {
134
+ mode: "raw",
135
+ data: text,
136
+ contentType,
137
+ headers: reconcileContentType(headers, contentType, language === "json" || isValidJsonText(text)),
138
+ fileParts: [],
139
+ };
140
+ }
141
+ const entries = envelope.formEntries ?? [];
142
+ const fileParts = entries
143
+ .filter((entry) => entry.type === "file" && entry.enabled !== false && entry.key.trim())
144
+ .map((entry) => entry.key);
145
+ if (envelope.mode === "urlencoded") {
146
+ return {
147
+ mode: "urlencoded",
148
+ data: buildFormBody("urlencoded", entries, resolve).toString(),
149
+ contentType: FORM_URLENCODED,
150
+ headers: reconcileContentType(headers, FORM_URLENCODED, false),
151
+ fileParts,
152
+ };
153
+ }
154
+ // Multipart Content-Type must come from the driver — a user-set header
155
+ // carries no (or a stale) boundary and breaks the receiving parser.
156
+ const multipartHeaders = { ...headers };
157
+ const contentTypeKey = findHeaderKey(multipartHeaders, "content-type");
158
+ if (contentTypeKey)
159
+ delete multipartHeaders[contentTypeKey];
160
+ return {
161
+ mode: "formdata",
162
+ data: buildFormBody("formdata", entries, resolve),
163
+ headers: multipartHeaders,
164
+ fileParts,
165
+ };
166
+ };
167
+ // Serialisable picture of a wire body for reports (a scenario step's
168
+ // `resolvedInput`, a collection run's `result.request`). Multipart bodies are
169
+ // described part by part rather than copied, and anything non-JSON collapses
170
+ // to a label.
171
+ export const describeRequestBody = (body) => {
172
+ if (body === null || body === undefined)
173
+ return null;
174
+ if (typeof body === "string")
175
+ return body;
176
+ if (typeof FormData !== "undefined" && body instanceof FormData) {
177
+ const parts = [];
178
+ body.forEach((value, key) => {
179
+ parts.push({
180
+ key,
181
+ value: typeof value === "string"
182
+ ? value
183
+ : `[file${value.name ? `: ${value.name}` : ""}]`,
184
+ });
185
+ });
186
+ return { mode: "formdata", parts };
187
+ }
188
+ if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) {
189
+ return body.toString();
190
+ }
191
+ if (typeof body === "object") {
192
+ if (ArrayBuffer.isView(body) || body instanceof ArrayBuffer)
193
+ return "[binary]";
194
+ return body;
195
+ }
196
+ return String(body);
197
+ };
198
+ //# sourceMappingURL=requestBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestBody.js","sourceRoot":"","sources":["../../src/request/requestBody.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requestRunner.d.ts","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAGV,eAAe,EACf,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AA0P3B,eAAO,MAAM,UAAU,GACrB,OAAO,eAAe,KACrB,OAAO,CAAC,gBAAgB,CA2K1B,CAAC"}
1
+ {"version":3,"file":"requestRunner.d.ts","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAKV,eAAe,EACf,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAgV3B,eAAO,MAAM,UAAU,GACrB,OAAO,eAAe,KACrB,OAAO,CAAC,gBAAgB,CAuM1B,CAAC"}