callman-core 1.9.0 → 1.10.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 (60) hide show
  1. package/ai-packs/feature-policy.md +26 -0
  2. package/ai-packs/pm-api.md +213 -0
  3. package/ai-packs/sandbox-globals.md +20 -0
  4. package/ai-packs/templating.md +104 -0
  5. package/dist/index.d.ts +5 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/request/executeRequest.d.ts.map +1 -1
  10. package/dist/request/executeRequest.js +10 -2
  11. package/dist/request/executeRequest.js.map +1 -1
  12. package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -1
  13. package/dist/scenario-runner/adapters/helpers/request-helpers.js +8 -2
  14. package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
  15. package/dist/scenario-runner/adapters/script-executor.js +3 -3
  16. package/dist/scenario-runner/adapters/script-executor.js.map +1 -1
  17. package/dist/script/features/log.d.ts.map +1 -1
  18. package/dist/script/features/log.js +23 -4
  19. package/dist/script/features/log.js.map +1 -1
  20. package/dist/script/isolated-runner.d.ts +11 -0
  21. package/dist/script/isolated-runner.d.ts.map +1 -0
  22. package/dist/script/isolated-runner.js +172 -0
  23. package/dist/script/isolated-runner.js.map +1 -0
  24. package/dist/script/pm-api-metadata.d.ts +19 -0
  25. package/dist/script/pm-api-metadata.d.ts.map +1 -0
  26. package/dist/script/pm-api-metadata.js +264 -0
  27. package/dist/script/pm-api-metadata.js.map +1 -0
  28. package/dist/script/scope.d.ts +2 -0
  29. package/dist/script/scope.d.ts.map +1 -1
  30. package/dist/script/scope.js +4 -0
  31. package/dist/script/scope.js.map +1 -1
  32. package/dist/script/worker-entry.d.ts +2 -0
  33. package/dist/script/worker-entry.d.ts.map +1 -0
  34. package/dist/script/worker-entry.js +79 -0
  35. package/dist/script/worker-entry.js.map +1 -0
  36. package/dist/utils/jsonc.d.ts +2 -0
  37. package/dist/utils/jsonc.d.ts.map +1 -0
  38. package/dist/utils/jsonc.js +101 -0
  39. package/dist/utils/jsonc.js.map +1 -0
  40. package/dist-cjs/index.js +11 -1
  41. package/dist-cjs/index.js.map +1 -1
  42. package/dist-cjs/request/executeRequest.js +10 -2
  43. package/dist-cjs/request/executeRequest.js.map +1 -1
  44. package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +8 -2
  45. package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
  46. package/dist-cjs/scenario-runner/adapters/script-executor.js +3 -3
  47. package/dist-cjs/scenario-runner/adapters/script-executor.js.map +1 -1
  48. package/dist-cjs/script/features/log.js +23 -4
  49. package/dist-cjs/script/features/log.js.map +1 -1
  50. package/dist-cjs/script/isolated-runner.js +209 -0
  51. package/dist-cjs/script/isolated-runner.js.map +1 -0
  52. package/dist-cjs/script/pm-api-metadata.js +267 -0
  53. package/dist-cjs/script/pm-api-metadata.js.map +1 -0
  54. package/dist-cjs/script/scope.js +5 -1
  55. package/dist-cjs/script/scope.js.map +1 -1
  56. package/dist-cjs/script/worker-entry.js +81 -0
  57. package/dist-cjs/script/worker-entry.js.map +1 -0
  58. package/dist-cjs/utils/jsonc.js +105 -0
  59. package/dist-cjs/utils/jsonc.js.map +1 -0
  60. package/package.json +8 -3
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ // JSONC → JSON sanitizer.
3
+ //
4
+ // Users write request bodies in the JSON editor with `//` line comments and
5
+ // `/* */` block comments (and sometimes leave a trailing comma after
6
+ // commenting out the last field). Those are convenient while editing but are
7
+ // NOT valid JSON, so they must be stripped before the body is sent or the
8
+ // server rejects the payload. `sanitizeJsonBody` removes both comment styles
9
+ // and any resulting trailing commas while preserving string contents
10
+ // verbatim (so a `//` or `,}` inside a string value — e.g. a URL — survives).
11
+ //
12
+ // The scan is string-literal- and escape-aware; it never uses regexes that
13
+ // could misfire inside string values.
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.sanitizeJsonBody = void 0;
16
+ const stripComments = (input) => {
17
+ let out = "";
18
+ let inString = false;
19
+ let escaped = false;
20
+ for (let i = 0; i < input.length; i += 1) {
21
+ const char = input[i];
22
+ const next = input[i + 1];
23
+ if (inString) {
24
+ out += char;
25
+ if (escaped) {
26
+ escaped = false;
27
+ }
28
+ else if (char === "\\") {
29
+ escaped = true;
30
+ }
31
+ else if (char === '"') {
32
+ inString = false;
33
+ }
34
+ continue;
35
+ }
36
+ if (char === '"') {
37
+ inString = true;
38
+ out += char;
39
+ continue;
40
+ }
41
+ // Line comment: skip until (but keep) the newline.
42
+ if (char === "/" && next === "/") {
43
+ i += 1;
44
+ while (i + 1 < input.length && input[i + 1] !== "\n") {
45
+ i += 1;
46
+ }
47
+ continue;
48
+ }
49
+ // Block comment: skip until the closing */.
50
+ if (char === "/" && next === "*") {
51
+ i += 2;
52
+ while (i < input.length && !(input[i] === "*" && input[i + 1] === "/")) {
53
+ i += 1;
54
+ }
55
+ i += 1; // land on the '/', loop's i+=1 moves past it
56
+ continue;
57
+ }
58
+ out += char;
59
+ }
60
+ return out;
61
+ };
62
+ const stripTrailingCommas = (input) => {
63
+ let out = "";
64
+ let inString = false;
65
+ let escaped = false;
66
+ for (let i = 0; i < input.length; i += 1) {
67
+ const char = input[i];
68
+ if (inString) {
69
+ out += char;
70
+ if (escaped) {
71
+ escaped = false;
72
+ }
73
+ else if (char === "\\") {
74
+ escaped = true;
75
+ }
76
+ else if (char === '"') {
77
+ inString = false;
78
+ }
79
+ continue;
80
+ }
81
+ if (char === '"') {
82
+ inString = true;
83
+ out += char;
84
+ continue;
85
+ }
86
+ if (char === ",") {
87
+ // Look ahead past whitespace; if the next meaningful char closes an
88
+ // object/array, this comma is trailing — drop it.
89
+ let j = i + 1;
90
+ while (j < input.length && /\s/.test(input[j])) {
91
+ j += 1;
92
+ }
93
+ if (input[j] === "}" || input[j] === "]") {
94
+ continue;
95
+ }
96
+ }
97
+ out += char;
98
+ }
99
+ return out;
100
+ };
101
+ // Strip JSON comments and trailing commas. Returns clean JSON text; a body
102
+ // with no comments/trailing commas is returned effectively unchanged.
103
+ const sanitizeJsonBody = (input) => stripTrailingCommas(stripComments(input));
104
+ exports.sanitizeJsonBody = sanitizeJsonBody;
105
+ //# sourceMappingURL=jsonc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/utils/jsonc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "callman-core",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "main": "dist-cjs/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,11 +10,14 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js",
12
12
  "require": "./dist-cjs/index.js"
13
- }
13
+ },
14
+ "./package.json": "./package.json",
15
+ "./ai-packs/*": "./ai-packs/*"
14
16
  },
15
17
  "files": [
16
18
  "dist",
17
- "dist-cjs"
19
+ "dist-cjs",
20
+ "ai-packs"
18
21
  ],
19
22
  "scripts": {
20
23
  "build": "npm run build:esm && npm run build:cjs && npm run postbuild:cjs",
@@ -22,6 +25,8 @@
22
25
  "build:cjs": "tsc -p tsconfig.cjs.json",
23
26
  "postbuild:cjs": "node -e \"require('node:fs').writeFileSync('dist-cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}\\n')\"",
24
27
  "sample": "node samples/runSample.mjs",
28
+ "ai:packs": "npm run build && node scripts/generate-ai-packs.mjs",
29
+ "ai:packs:check": "npm run ai:packs && git diff --exit-code -- ai-packs",
25
30
  "test": "npm run build && node --test tests/*.test.mjs"
26
31
  },
27
32
  "dependencies": {