callman-core 1.30.0 → 1.32.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/ai-packs/db-queries.md +1 -1
- package/ai-packs/scenario-nodes.md +33 -14
- package/dist/ai/prompts/scenario.d.ts.map +1 -1
- package/dist/ai/prompts/scenario.js +3 -2
- package/dist/ai/prompts/scenario.js.map +1 -1
- package/dist/ai/prompts/scenarioNodeReference.d.ts.map +1 -1
- package/dist/ai/prompts/scenarioNodeReference.js +56 -15
- package/dist/ai/prompts/scenarioNodeReference.js.map +1 -1
- package/dist/host/db/db-query-reference.js +1 -1
- package/dist/host/db/db-query-reference.js.map +1 -1
- package/dist/host/db/mongoAdapter.d.ts +1 -0
- package/dist/host/db/mongoAdapter.d.ts.map +1 -1
- package/dist/host/db/mongoAdapter.js +21 -0
- package/dist/host/db/mongoAdapter.js.map +1 -1
- package/dist/host/db/queryExecutor.js +2 -2
- package/dist/host/db/queryExecutor.js.map +1 -1
- package/dist/host/index.d.ts +1 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +1 -1
- package/dist/host/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/scenario-runner/adapters/index.d.ts +1 -0
- package/dist/scenario-runner/adapters/index.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/index.js +1 -0
- package/dist/scenario-runner/adapters/index.js.map +1 -1
- package/dist/scenario-runner/adapters/kafka-executor.d.ts +5 -0
- package/dist/scenario-runner/adapters/kafka-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/kafka-executor.js +12 -3
- package/dist/scenario-runner/adapters/kafka-executor.js.map +1 -1
- package/dist/scenario-runner/adapters/types.d.ts +1 -0
- package/dist/scenario-runner/adapters/types.d.ts.map +1 -1
- package/dist/scenario-runner/index.d.ts +3 -0
- package/dist/scenario-runner/index.d.ts.map +1 -1
- package/dist/scenario-runner/index.js +5 -0
- package/dist/scenario-runner/index.js.map +1 -1
- package/dist/scenario-runner/kafkaEvent.d.ts +3 -0
- package/dist/scenario-runner/kafkaEvent.d.ts.map +1 -0
- package/dist/scenario-runner/kafkaEvent.js +18 -0
- package/dist/scenario-runner/kafkaEvent.js.map +1 -0
- package/dist/scenario-runner/nodePolicy.d.ts +8 -1
- package/dist/scenario-runner/nodePolicy.d.ts.map +1 -1
- package/dist/scenario-runner/nodePolicy.js +50 -0
- package/dist/scenario-runner/nodePolicy.js.map +1 -1
- package/dist/scenario-runner/runScenario.d.ts.map +1 -1
- package/dist/scenario-runner/runScenario.js +39 -22
- package/dist/scenario-runner/runScenario.js.map +1 -1
- package/dist/scenario-runner/scenarioReference.d.ts +45 -0
- package/dist/scenario-runner/scenarioReference.d.ts.map +1 -0
- package/dist/scenario-runner/scenarioReference.js +151 -0
- package/dist/scenario-runner/scenarioReference.js.map +1 -0
- package/dist/scenario-runner/types.d.ts +5 -0
- package/dist/scenario-runner/types.d.ts.map +1 -1
- package/dist/ui-test/commands.d.ts +54 -0
- package/dist/ui-test/commands.d.ts.map +1 -0
- package/dist/ui-test/commands.js +436 -0
- package/dist/ui-test/commands.js.map +1 -0
- package/dist/ui-test/flow-lint.d.ts +43 -0
- package/dist/ui-test/flow-lint.d.ts.map +1 -0
- package/dist/ui-test/flow-lint.js +229 -0
- package/dist/ui-test/flow-lint.js.map +1 -0
- package/dist-cjs/ai/prompts/scenario.js +3 -2
- package/dist-cjs/ai/prompts/scenario.js.map +1 -1
- package/dist-cjs/ai/prompts/scenarioNodeReference.js +56 -15
- package/dist-cjs/ai/prompts/scenarioNodeReference.js.map +1 -1
- package/dist-cjs/host/db/db-query-reference.js +1 -1
- package/dist-cjs/host/db/db-query-reference.js.map +1 -1
- package/dist-cjs/host/db/mongoAdapter.js +23 -1
- package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
- package/dist-cjs/host/db/queryExecutor.js +1 -1
- package/dist-cjs/host/db/queryExecutor.js.map +1 -1
- package/dist-cjs/host/index.js +3 -2
- package/dist-cjs/host/index.js.map +1 -1
- package/dist-cjs/index.js +2 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/index.js +9 -3
- package/dist-cjs/scenario-runner/adapters/index.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js +15 -4
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/index.js +21 -1
- package/dist-cjs/scenario-runner/index.js.map +1 -1
- package/dist-cjs/scenario-runner/kafkaEvent.js +22 -0
- package/dist-cjs/scenario-runner/kafkaEvent.js.map +1 -0
- package/dist-cjs/scenario-runner/nodePolicy.js +53 -1
- package/dist-cjs/scenario-runner/nodePolicy.js.map +1 -1
- package/dist-cjs/scenario-runner/runScenario.js +38 -21
- package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
- package/dist-cjs/scenario-runner/scenarioReference.js +159 -0
- package/dist-cjs/scenario-runner/scenarioReference.js.map +1 -0
- package/dist-cjs/ui-test/commands.js +441 -0
- package/dist-cjs/ui-test/commands.js.map +1 -0
- package/dist-cjs/ui-test/flow-lint.js +235 -0
- package/dist-cjs/ui-test/flow-lint.js.map +1 -0
- package/package.json +3 -1
package/ai-packs/db-queries.md
CHANGED
|
@@ -20,7 +20,7 @@ const res = await pm.db.query({
|
|
|
20
20
|
pm.expect(res.rowCount).to.be.above(0); // existence check
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: "before"|"after"`.
|
|
23
|
+
Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: "before"|"after"`. The command text is MongoDB Extended JSON (relaxed): `{ "$oid": "…" }`, `{ "$date": "2026-01-01T00:00:00Z" }`, `{ "$numberDecimal": "9.99" }` and `{ "$numberLong": "…" }` become real BSON values anywhere in the command; a 24-hex string in a filter is also coerced to ObjectId. Rows are in `res.rows`; write ops surface counts in `res.rowCount`.
|
|
24
24
|
|
|
25
25
|
## PostgreSQL / MySQL / Oracle (SQL)
|
|
26
26
|
`query` is plain SQL text. Because `pm.db.query` binds no params, inline the value and quote strings yourself (or use a `{{token}}`):
|
|
@@ -49,7 +49,7 @@ Compact form (what the MCP scenario tools take):
|
|
|
49
49
|
}
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
- Node `{ id?, type, label?, config?, position? }`. `id` defaults to n1, n2, …; `position` is
|
|
52
|
+
- Node `{ id?, type, label?, config?, position? }`. `id` defaults to n1, n2, …; when `position` is omitted the node is placed after the node it is connected from, clear of every existing node.
|
|
53
53
|
- `config` is deep-merged over the type's defaults (the Default column): objects merge key by key, arrays and scalars replace the default whole. Send only what you change — but an array you send (headers, checks, steps, rules, assignments) must be complete.
|
|
54
54
|
- Edge `{ id?, source, target, type? }`, `type` = `default` (or omitted) | `yes` | `no` | `error`. Edges have no label.
|
|
55
55
|
- `priority`: critical | high | medium | low. `environments[].variables`: `{ key, value, enabled? }[]`.
|
|
@@ -86,7 +86,7 @@ Shared by condition, assertion, poll, websocket expect steps and `end.loopExitRu
|
|
|
86
86
|
- Operand `{ mode: "runtime" | "literal", valueType: "string" | "number" | "boolean" | "null" | "array", value, extract? }`. runtime: `value` is a bare path. literal: a JSON number for number, true/false for boolean, null for null, a JSON array for array.
|
|
87
87
|
- Binary operators: equals, not_equals, strict_equals, strict_not_equals, greater_than, less_than, greater_or_equal, less_or_equal, between, contains, not_contains, starts_with, ends_with, regex, in, not_in, contains_row, set_equals_unordered. `between` takes [min, max]; `in` / `not_in` an array; `regex` a JS regex source; `contains_row` checks that an array of rows has one matching every key of an object (a JSON-object string literal or a runtime path); `set_equals_unordered` compares two arrays as multisets.
|
|
88
88
|
- Unary operators (no `right`): exists, not_exists, is_empty, not_empty, is_null, not_null.
|
|
89
|
-
- `extract` `{ type: "jsonpath" | "regex", expression, flags?, group?, select?: "first" | "all" }` is applied to the resolved value first; a failed extraction behaves as not-exists.
|
|
89
|
+
- `extract` `{ type: "jsonpath" | "regex", expression, flags?, group?, select?: "first" | "all" }` is applied to the resolved value first; a failed extraction behaves as not-exists. JSONPath runs without script evaluation: `$.a.b`, `$['x-id']`, `$.items[*].id`, `$..id` and slices work; filter expressions (`[?(@.x == 1)]`) are rejected — filter in a script node.
|
|
90
90
|
|
|
91
91
|
Example: `{ "id": "r1", "type": "rule", "left": { "mode": "runtime", "valueType": "number", "value": "CreateOrder.status" }, "operator": "equals", "right": { "mode": "literal", "valueType": "number", "value": 201 } }`
|
|
92
92
|
|
|
@@ -102,10 +102,13 @@ Each rule's `rules` object may use ONLY these keys (omit the rest):
|
|
|
102
102
|
|
|
103
103
|
## Execution policy
|
|
104
104
|
|
|
105
|
-
Every node except condition takes `executionPolicy: { onFailure: "stop" | "continue", retry: { enabled, maxAttempts (0..100), delayMs (0..3600000), backoffMultiplier? (1..10), maxDelayMs? (0..3600000) } }` — onFailure and retry.enabled / maxAttempts / delayMs are required when you send the stored form.
|
|
105
|
+
Every node except condition takes `executionPolicy: { onFailure: "stop" | "continue", retry: { enabled, maxAttempts (0..100), delayMs (0..3600000), backoffMultiplier? (1..10), maxDelayMs? (0..3600000) }, expectFailure?: { messagePattern? } }` — onFailure and retry.enabled / maxAttempts / delayMs are required when you send the stored form.
|
|
106
106
|
- `maxAttempts` counts every attempt (an enabled retry makes at least 2). Delay before retry n = min(maxDelayMs, delayMs × backoffMultiplier^(n−1)). No policy = stop, no retry.
|
|
107
107
|
- stop: a failure ends the run; continue: the run goes on along the normal edges.
|
|
108
108
|
- `error` edges from the failing node win over both: the run follows them instead of the normal edges (after the retries).
|
|
109
|
+
- How the run ends: `success` only when no node failed. A failure that continued or was routed through an `error` edge marks that node `failed_continued` and the run ends `completed_with_failures` — never `success`. A stop failure ends it `failed`.
|
|
110
|
+
- `expectFailure: { messagePattern? }` turns the node into a negative test (`request`, `db`, `redis`, `kafka`, `websocket`, `script`, `assertion`, `poll`, `ai`, `notification`): an attempt that FAILS with a message matching `messagePattern` (a JS regex, ≤500 chars; omitted = any failure) makes the node succeed — normal edges run, the run can end `success`, and the output is `<Label>.expectedFailure.message`. An attempt that succeeds, or fails with another message, is a failure (retry and onFailure apply as usual, so retry can wait for something to start failing). Use it for absence checks (a Kafka event that must not appear, a poll that must time out, a request that must be refused). On a db node a non-empty `expectError` wins.
|
|
111
|
+
- Example: `"executionPolicy": { "onFailure": "stop", "retry": { "enabled": false, "maxAttempts": 0, "delayMs": 0 }, "expectFailure": { "messagePattern": "timed out" } }`.
|
|
109
112
|
|
|
110
113
|
## Node types
|
|
111
114
|
|
|
@@ -148,14 +151,14 @@ One query on a workspace connection of type `database`.
|
|
|
148
151
|
| Field | Type | Default | Req | Notes |
|
|
149
152
|
| --- | --- | --- | --- | --- |
|
|
150
153
|
| `connectionId` | string | `""` | run | `""` = not chosen yet: saved, but the run fails. |
|
|
151
|
-
| `query` | string (1..100000) | `"SELECT *\nFROM users\nWHERE id = {{env.userId}}"` | yes | Mongo: a
|
|
154
|
+
| `query` | string (1..100000) | `"SELECT *\nFROM users\nWHERE id = {{env.userId}}"` | yes | Mongo: a command object as MongoDB Extended JSON (relaxed) text (`{"collection":"orders","operation":"findOne","filter":{…}}`) — `{"$date":"2026-01-01T00:00:00Z"}`, `{"$oid":"…"}`, `{"$numberDecimal":"9.99"}` and `{"$numberLong":"…"}` become real BSON values; plain whole numbers are sent as int32/double (a `$numberLong` beyond 2^53 loses precision). A 24-hex string in `filter` is also matched as an ObjectId. SQL: plain SQL. Per-engine details: the DB query reference. The default is a placeholder — always send your own. |
|
|
152
155
|
| `params` | string[] (≤200) | — | | Positional binds, template-resolved: `$1` (Postgres), `?` (MySQL), `@p1…` (SQL Server). |
|
|
153
156
|
| `typedParams` | {value, type?}[] (≤200) | — | | Wins over params. type auto \| text \| int \| numeric \| boolean \| date \| timestamp \| json \| null: null binds SQL NULL, boolean a real boolean, the rest stay strings (cast in SQL). |
|
|
154
157
|
| `useSession` | boolean | — | | Postgres only: join the run's shared session (scenario-level `dbSettings.transactionMode`: none \| rollback \| commit). |
|
|
155
158
|
| `expectError` | {sqlState?, messagePattern?} | — | | Negative test: the node passes only if the query FAILS with that SQLSTATE and/or a message matching the regex. |
|
|
156
159
|
| `executionPolicy` | ExecutionPolicy | stop, no retry | | See Execution policy. |
|
|
157
160
|
|
|
158
|
-
Output: `<Label>.rows`, `<Label>.rowCount`; the rows are also `db.result`.
|
|
161
|
+
Output: `<Label>.rows`, `<Label>.rowCount`; the rows are also `db.result`. With `expectError` met: `<Label>.expectedError` {sqlState, message}, rows empty.
|
|
159
162
|
|
|
160
163
|
```json
|
|
161
164
|
{"id":"check","type":"db","label":"CheckOrder","config":{"connectionId":"<database connection id>","query":"SELECT status FROM orders WHERE id = $1","params":["{{CreateOrder.body.id}}"]}}
|
|
@@ -184,15 +187,24 @@ Consume (wait for a matching message) or publish, on a connection of type `kafka
|
|
|
184
187
|
| `connectionId` | string | `""` | run | |
|
|
185
188
|
| `topic` | string (1..500) | `""` | yes | |
|
|
186
189
|
| `mode` | consume \| publish | `"consume"` | | |
|
|
187
|
-
| `matchMode` | regex \| rules | `"regex"` | | consume. |
|
|
188
|
-
| `rules` | string[] | `[]` | | consume. regex: rules[0] is a regex tested against the whole message. rules: every entry is ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains) and all must hold, e.g. `kafkaEvent.orderId == '{{CreateOrder.body.id}}'`. Empty = the first message captured. |
|
|
190
|
+
| `matchMode` | regex \| rules | `"regex"` | | consume. The default is regex — when you write comparisons, set `"rules"` or rules[0] is read as a regex. |
|
|
191
|
+
| `rules` | string[] | `[]` | | consume. regex: rules[0] is a regex tested against the whole message. rules: every entry is ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains) and all must hold, e.g. `kafkaEvent.orderId == '{{CreateOrder.body.id}}'`. Empty = the first message captured (the node stops listening at that message). |
|
|
192
|
+
| `captureTimeoutMs` | integer 1000..120000 | 5000 (engine) | | consume. How long ONE attempt listens; capped by the host's per-node timeout (60 s on a default server). Retry multiplies it. |
|
|
189
193
|
| `publishValueFormat` | json \| raw | `"json"` | | publish. json fails the node when messageValue is not valid JSON after templating. |
|
|
190
194
|
| `messageKey` | string | `""` | | publish. |
|
|
191
195
|
| `messageValue` | string (≤1000000) | `""` | | publish payload, template-resolved. |
|
|
192
196
|
| `messageHeaders` | {key, value, enabled?}[] | `[]` | | publish. |
|
|
193
197
|
| `executionPolicy` | ExecutionPolicy | continue, retry ×3 every 2000 ms | | See Execution policy. |
|
|
194
198
|
|
|
195
|
-
Output: consume: the matched message — a JSON message's keys at the top level plus `meta` {value, text, key, partition, offset, timestamp, headers};
|
|
199
|
+
Output: consume: the matched message — a JSON-object message's keys at the top level plus `meta` {value, text, key, topic, partition, offset, timestamp, headers}; any other message (array, number, text) has those fields at the top level instead, without `meta`. Also `kafkaEvent.*`. publish: {topic, partition, offset, timestamp}.
|
|
200
|
+
|
|
201
|
+
**Where consuming starts.** A consume node sees records whose Kafka timestamp is at or after the scenario run's start — messages produced before the run are never seen, messages produced earlier in the same run (by a publish node or by the system under test) are. Timestamps are the producer's clock, so allow for skew. Messages from earlier loop iterations or foreach items of the same run can match too — make the rules specific (an id from this iteration).
|
|
202
|
+
|
|
203
|
+
**How long it waits.** One attempt listens for `captureTimeoutMs` (default 5000 ms) and stops early at the first matching message. The default executionPolicy is continue with retry ×3 every 2000 ms, so a node waits about 3 × 5 s + 2 × 2 s ≈ 19 s in total before failing. For a slow consumer raise `captureTimeoutMs` (and/or retry) rather than adding wait nodes.
|
|
204
|
+
|
|
205
|
+
**How rules read the message.** Rules are evaluated against the event shape above, NOT with JSONPath: each side is a plain dotted path (`kafkaEvent.orderId`, `kafkaEvent.meta.headers.traceparent`, `kafkaEvent.items[0].sku`) or a template. Header and key names with dashes work as plain dotted paths: `kafkaEvent.meta.headers.x-correlation-id == '{{CorrId}}'`. Brackets (`headers['x-id']`) and `$.` paths are not resolved — they compare as literal text and never match. A path segment that contains an operator word (`x-contains-id`) splits the rule at that word; avoid it or read it in a script node. Headers are UTF-8 strings; a header repeated on one record is joined with `, `. A topic, partition or offset is under `meta` (`kafkaEvent.meta.offset` is a string).
|
|
206
|
+
|
|
207
|
+
**Expecting no message.** A consume node FAILS when nothing matches in time. To assert that an event is NOT published, give the node `executionPolicy.expectFailure: {}` (see Execution policy) — the timeout then counts as success.
|
|
196
208
|
|
|
197
209
|
```json
|
|
198
210
|
{"id":"event","type":"kafka","label":"OrderCreated","config":{"connectionId":"<kafka connection id>","topic":"orders","mode":"consume","matchMode":"rules","rules":["kafkaEvent.orderId == '{{CreateOrder.body.id}}'"]}}
|
|
@@ -427,17 +439,24 @@ Output: Its inner nodes publish under their own labels.
|
|
|
427
439
|
```
|
|
428
440
|
|
|
429
441
|
### scenario-ref
|
|
430
|
-
|
|
442
|
+
Links another scenario (shared setup / teardown) without copying it by hand: the node embeds a snapshot of the linked scenario's graph, and the run executes that snapshot.
|
|
431
443
|
|
|
432
444
|
| Field | Type | Default | Req | Notes |
|
|
433
445
|
| --- | --- | --- | --- | --- |
|
|
434
|
-
| `
|
|
435
|
-
| `
|
|
436
|
-
| `
|
|
437
|
-
| `
|
|
446
|
+
| `scenario` | string (compact form only) | — | yes | The scenario to link, by name or id. The server copies its current graph in (fresh ids) and adds its environments' missing variables to this scenario. Re-send it to re-sync. |
|
|
447
|
+
| `referencedScenarioId` | string | — | yes | Stored form. With `nodes: []` the server fills the snapshot (and the fields below) from that scenario. |
|
|
448
|
+
| `referencedScenarioVersion` | integer \| null | — | | Stored form; filled by the server. |
|
|
449
|
+
| `referencedScenarioName / lastSyncedAt` | string | — | | Stored form; filled by the server. |
|
|
450
|
+
| `nodes / edges` | stored node[] / stored edge[] | — | | The snapshot. Send `[]` to have it filled; a non-empty snapshot (as read) is kept as is. |
|
|
438
451
|
| `executionPolicy` | ExecutionPolicy | stop, no retry (engine) | | See Execution policy. |
|
|
439
452
|
|
|
440
|
-
Output: Its inner nodes publish under their own labels.
|
|
453
|
+
Output: Its inner nodes publish under their own labels — mind label clashes with this scenario's own nodes.
|
|
454
|
+
|
|
455
|
+
The linked scenario must be in the same workspace and readable by you. A scenario cannot link itself, nor a scenario whose graph links it back.
|
|
456
|
+
|
|
457
|
+
```json
|
|
458
|
+
{"id":"setup","type":"scenario-ref","label":"Setup","config":{"scenario":"Shared login setup"}}
|
|
459
|
+
```
|
|
441
460
|
|
|
442
461
|
## Graph rules
|
|
443
462
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../../src/ai/prompts/scenario.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,2BAA2B,iLAiB9B,CAAC;AAwCX,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAqBD,eAAO,MAAM,yBAAyB,GACpC,UAAS,gCAAqC,KAC7C,
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../../src/ai/prompts/scenario.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,2BAA2B,iLAiB9B,CAAC;AAwCX,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAqBD,eAAO,MAAM,yBAAyB,GACpC,UAAS,gCAAqC,KAC7C,MAyFW,CAAC;AAEf,eAAO,MAAM,uBAAuB,GAAI,OAAO,mBAAmB,KAAG,MA+CpE,CAAC"}
|
|
@@ -47,7 +47,7 @@ const NODE_NOTES = {
|
|
|
47
47
|
// Supported command list is derived from the runtime specs so it can
|
|
48
48
|
// never drift from what the runtime actually accepts.
|
|
49
49
|
`Run Redis commands on a stored connection. REQUIRED: connectionId (type=redis) + ≥1 non-empty entry in \`commands\`. Each entry is ONE command string; supported commands: ${Object.keys(REDIS_COMMAND_SPECS).join(", ")} — e.g. "GET order:{{CreateOrder.orderId}}", "HGETALL user:{{env.userId}}" or "SET key {{env.value}}". SCAN is Callman-managed: \`SCAN pattern [count]\` returns {keys,count,truncated}. Output exposed under the label + as redis.result.`,
|
|
50
|
-
kafka: "Consume OR publish (config.mode). CONSUME (mode:\"consume\"): REQUIRED connectionId (type=kafka) + topic + a matcher with ≥1 non-empty rule. TWO matchModes: (a) matchMode:\"regex\" → rules[0] is a single REGEX tested against the whole message, e.g. rules:[\"order.created\"]. (b) matchMode:\"rules\" → rules is a LIST OF EXPRESSIONS, each ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains), ALL must be true. Reference the captured event as kafkaEvent.<field>: for a JSON message its JSON keys are top-level, e.g. rules:[\"kafkaEvent.event == 'order.created'\", \"kafkaEvent.orderId == '{{CreateOrder.orderId}}'\"]. NEVER leave rules empty. PUBLISH (mode:\"publish\"): REQUIRED connectionId + topic + messageValue; optional messageKey, publishValueFormat \"json\"|\"raw\" (json validates the payload as JSON), messageHeaders:[{key,value,enabled:true}].",
|
|
50
|
+
kafka: "Consume OR publish (config.mode). CONSUME (mode:\"consume\"): REQUIRED connectionId (type=kafka) + topic + a matcher with ≥1 non-empty rule. TWO matchModes: (a) matchMode:\"regex\" → rules[0] is a single REGEX tested against the whole message, e.g. rules:[\"order.created\"]. (b) matchMode:\"rules\" → rules is a LIST OF EXPRESSIONS, each ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains), ALL must be true. Reference the captured event as kafkaEvent.<field>: for a JSON message its JSON keys are top-level, e.g. rules:[\"kafkaEvent.event == 'order.created'\", \"kafkaEvent.orderId == '{{CreateOrder.orderId}}'\"]. Rules are plain dotted paths, NOT JSONPath: headers are kafkaEvent.meta.headers.<name> (dashes are fine: kafkaEvent.meta.headers.x-correlation-id); never use brackets or $. A consume node only sees messages produced after the run started; one attempt listens captureTimeoutMs (default 5000, 1000..120000) — raise it for slow events. NEVER leave rules empty. PUBLISH (mode:\"publish\"): REQUIRED connectionId + topic + messageValue; optional messageKey, publishValueFormat \"json\"|\"raw\" (json validates the payload as JSON), messageHeaders:[{key,value,enabled:true}].",
|
|
51
51
|
condition: "The ONLY branching node and the ONLY node WITHOUT executionPolicy. Must have EXACTLY one outgoing edge type \"yes\" and one \"no\". TWO modes: mode:\"builder\" (default) uses rootGroup { operator:\"AND\"|\"OR\", children:[ rule | nested group ] } where each rule is { id, type:\"rule\", left, operator, right } (operands per the OPERANDS section); mode:\"expert\" uses expertExpression (ONLY read when mode is \"expert\"), a single string whose operands are {{path}} tokens — a bare path is a parse error — like \"{{Login.status}} == 200 && {{Login.body.token}} != ''\". Prefer builder mode.",
|
|
52
52
|
assertion: "Pass/fail checkpoint (does NOT branch; on failure executionPolicy decides stop/continue). config.matchMode:\"all\" (every enabled check passes) | \"any\" (≥1 passes). checks:[{ id, name, enabled:true, rule }] with ≥1 enabled check — each rule is { id, type:\"rule\", left, operator, right } (operands per the OPERANDS section).",
|
|
53
53
|
script: "JS sandbox (Postman pm.*). REQUIRED: non-empty, syntactically-valid `script`; its `return` value is exposed downstream by the node label. Optional timeoutMs (default 3000). Can pm.environment.set(...), pm.expect(...), pm.test(...), and await pm.db.query / pm.redis.command (same formats as the DB & REDIS section) for logic a plain db/redis node can't express.",
|
|
@@ -114,6 +114,7 @@ export const buildScenarioSystemPrompt = (options = {}) => [
|
|
|
114
114
|
'{ "id": string (unique), "type": <one below>, "position": { "x": number, "y": number }, "data": { "label": string, "config": { ... } } }',
|
|
115
115
|
`- \`label\` is REQUIRED, non-empty, UNIQUE across the scenario, and must NOT be a reserved name (${RESERVED_SCENARIO_LABELS.map((label) => `"${label}"`).join(", ")}) — the engine drops such a node's output. Downstream nodes read a node's output by its label: {{Login.data.token}}.`,
|
|
116
116
|
"- Every config EXCEPT `condition` carries an `executionPolicy` object (see defaults below).",
|
|
117
|
+
"- NEGATIVE checks (\"this must NOT happen / must fail\"): set executionPolicy.expectFailure = { messagePattern?: regex } on the node (request, db, redis, kafka, websocket, script, assertion, poll, ai, notification) — it then PASSES only when it fails (e.g. a Kafka consume that must time out). Do not model them with error edges: an error-routed failure always ends the run completed_with_failures.",
|
|
117
118
|
"- position: the app AUTO-ARRANGES the whole graph (top-to-bottom flow, branches fanned out side-by-side, centered, never overlapping), so layout is NOT your concern — just give each node any distinct {x,y} (e.g. step y by 150). Focus on correct edges + config, not coordinates. Model the flow by EDGES (branches, merges), not by stacking every node in one long line.",
|
|
118
119
|
"",
|
|
119
120
|
"EDGES — { \"id\": string, \"source\": <node id>, \"target\": <node id>, \"type\"?: \"default\" | \"yes\" | \"no\" | \"error\" }.",
|
|
@@ -144,7 +145,7 @@ export const buildScenarioSystemPrompt = (options = {}) => [
|
|
|
144
145
|
"- Numeric example — “the order total is 40”: left { mode:\"runtime\", valueType:\"number\", value:\"CreateOrder.body.total\" }, operator:\"equals\", right { mode:\"literal\", valueType:\"number\", value:40 }.",
|
|
145
146
|
"- Text example — “the order body status is created”: left { mode:\"runtime\", valueType:\"string\", value:\"CreateOrder.body.status\" }, operator:\"equals\", right { mode:\"literal\", valueType:\"string\", value:\"created\" }.",
|
|
146
147
|
"- Operators: equals, not_equals, strict_equals, strict_not_equals, greater_than, less_than, greater_or_equal, less_or_equal, between (right = array of 2 numbers), contains, not_contains, starts_with, ends_with, regex, in, not_in (right = array). UNARY (no right operand): exists, not_exists, is_empty, not_empty, is_null, not_null.",
|
|
147
|
-
"- Optional operand `extract` — { type:\"jsonpath\"|\"regex\", expression, flags?, group?, select?:\"first\"|\"all\" } — applied to the RESOLVED operand value before valueType coercion. Use it when a dotted path can't reach the value (
|
|
148
|
+
"- Optional operand `extract` — { type:\"jsonpath\"|\"regex\", expression, flags?, group?, select?:\"first\"|\"all\" } — applied to the RESOLVED operand value before valueType coercion. Use it when a dotted path can't reach the value (wildcards, recursive descent, bracket names with dashes, or pulling a fragment out of a string). JSONPath runs without script evaluation: filters such as [?(@.x==1)] are NOT supported — filter in a script node. Example: left { mode:\"runtime\", valueType:\"string\", value:\"CreateOrder.body\", extract:{ type:\"jsonpath\", expression:\"$.items[*].id\", select:\"all\" } }. Regex: expression is a JS regex source (e.g. \"ord-(\\\\d+)\"), optional flags (subset of \"gimsuy\") and group (capture group index). select:\"all\" yields an array of every match. A failed extraction behaves as not-exists.",
|
|
148
149
|
"",
|
|
149
150
|
"CONNECTIONS — never invent ids. Use a connectionId ONLY from the AVAILABLE CONNECTIONS list in the user message (matching the node's type: db→database, redis→redis, kafka→kafka, notification→slack). If the needed connection isn't listed, still create the node with connectionId \"\" and tell the user in `reply` to pick a connection.",
|
|
150
151
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../src/ai/prompts/scenario.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,wEAAwE;AACxE,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,oEAAoE;AACpE,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,yCAAyC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,iFAAiF;AACjF,gFAAgF;AAChF,mCAAmC;AACnC,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS;IACT,IAAI;IACJ,OAAO;IACP,OAAO;IACP,WAAW;IACX,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,WAAW;IACX,IAAI;IACJ,MAAM;IACN,cAAc;IACd,YAAY;IACZ,KAAK;CACG,CAAC;AAEX,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,kDAAkD;AAClD,MAAM,UAAU,GAA2B;IACzC,OAAO,EACL,syEAAsyE;IAExyE,EAAE,EAAE,oaAAoa;IACxa,KAAK;IACH,qEAAqE;IACrE,sDAAsD;IACtD,8KAA8K,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,4OAA4O;IACvc,KAAK,EACH,
|
|
1
|
+
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../src/ai/prompts/scenario.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarioNodeReference.d.ts","sourceRoot":"","sources":["../../../src/ai/prompts/scenarioNodeReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scenarioNodeReference.d.ts","sourceRoot":"","sources":["../../../src/ai/prompts/scenarioNodeReference.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAw2BD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,UAAS,kCAAuC,KAC/C,MAyGF,CAAC;AAGF,eAAO,MAAM,6BAA6B,EAAE,SAAS,gBAAgB,EAAoB,CAAC"}
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
import { CONDITION_OPERATOR_META } from "../../scenario-runner/condition.js";
|
|
15
15
|
import { DEFAULT_AI_MAX_TOKENS, DEFAULT_AI_TIMEOUT_MS, DEFAULT_FOREACH_MAX_ITERATIONS, DEFAULT_WS_CLOSE_CODE, DEFAULT_WS_CONNECT_TIMEOUT_MS, DEFAULT_WS_EXPECT_TIMEOUT_MS, MAX_AI_MAX_TOKENS, MAX_AI_PROMPT_LENGTH, MAX_AI_RESPONSE_EXAMPLE_LENGTH, MAX_AI_TIMEOUT_MS, MAX_END_LOOP_ITERATIONS, MAX_FOREACH_ITERATIONS, MAX_POLL_ATTEMPTS, MAX_WS_CONNECT_TIMEOUT_MS, MAX_WS_EXPECT_TIMEOUT_MS, MAX_WS_STEPS, MAX_WS_WAIT_DURATION_MS, } from "../../scenario-runner/graphTraversal.js";
|
|
16
16
|
import { RESERVED_SCENARIO_LABELS } from "../../scenario-runner/labels.js";
|
|
17
|
+
import { KAFKA_DEFAULT_CAPTURE_TIMEOUT_MS, KAFKA_MAX_CAPTURE_TIMEOUT_MS, KAFKA_MIN_CAPTURE_TIMEOUT_MS, } from "../../scenario-runner/adapters/kafka-executor.js";
|
|
18
|
+
import { EXPECT_FAILURE_PATTERN_MAX_LENGTH, SCENARIO_EXPECT_FAILURE_NODE_TYPES, } from "../../scenario-runner/nodePolicy.js";
|
|
17
19
|
import { REDIS_COMMAND_SPECS } from "../../host/redis/redisService.js";
|
|
18
20
|
import { RESERVED_LABEL_NAMES } from "../../script/scope.js";
|
|
19
21
|
import { CONTRACT_RULES_SPEC } from "./fragments.js";
|
|
@@ -225,7 +227,7 @@ const NODE_DOCS = [
|
|
|
225
227
|
field: "query",
|
|
226
228
|
type: "string (1..100000)",
|
|
227
229
|
req: "yes",
|
|
228
|
-
notes: "Mongo: a
|
|
230
|
+
notes: "Mongo: a command object as MongoDB Extended JSON (relaxed) text (`{\"collection\":\"orders\",\"operation\":\"findOne\",\"filter\":{…}}`) — `{\"$date\":\"2026-01-01T00:00:00Z\"}`, `{\"$oid\":\"…\"}`, `{\"$numberDecimal\":\"9.99\"}` and `{\"$numberLong\":\"…\"}` become real BSON values; plain whole numbers are sent as int32/double (a `$numberLong` beyond 2^53 loses precision). A 24-hex string in `filter` is also matched as an ObjectId. SQL: plain SQL. Per-engine details: the DB query reference. The default is a placeholder — always send your own.",
|
|
229
231
|
},
|
|
230
232
|
{
|
|
231
233
|
field: "params",
|
|
@@ -248,7 +250,7 @@ const NODE_DOCS = [
|
|
|
248
250
|
notes: "Negative test: the node passes only if the query FAILS with that SQLSTATE and/or a message matching the regex.",
|
|
249
251
|
},
|
|
250
252
|
],
|
|
251
|
-
output: "`<Label>.rows`, `<Label>.rowCount`; the rows are also `db.result`.",
|
|
253
|
+
output: "`<Label>.rows`, `<Label>.rowCount`; the rows are also `db.result`. With `expectError` met: `<Label>.expectedError` {sqlState, message}, rows empty.",
|
|
252
254
|
example: {
|
|
253
255
|
id: "check",
|
|
254
256
|
type: "db",
|
|
@@ -290,11 +292,21 @@ const NODE_DOCS = [
|
|
|
290
292
|
{ field: "connectionId", type: "string", req: "run" },
|
|
291
293
|
{ field: "topic", type: "string (1..500)", req: "yes" },
|
|
292
294
|
{ field: "mode", type: "consume | publish" },
|
|
293
|
-
{
|
|
295
|
+
{
|
|
296
|
+
field: "matchMode",
|
|
297
|
+
type: "regex | rules",
|
|
298
|
+
notes: "consume. The default is regex — when you write comparisons, set `\"rules\"` or rules[0] is read as a regex.",
|
|
299
|
+
},
|
|
294
300
|
{
|
|
295
301
|
field: "rules",
|
|
296
302
|
type: "string[]",
|
|
297
|
-
notes: "consume. regex: rules[0] is a regex tested against the whole message. rules: every entry is ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains) and all must hold, e.g. `kafkaEvent.orderId == '{{CreateOrder.body.id}}'`. Empty = the first message captured.",
|
|
303
|
+
notes: "consume. regex: rules[0] is a regex tested against the whole message. rules: every entry is ONE comparison `left op right` (op ==, !=, ===, !==, >, <, >=, <=, contains) and all must hold, e.g. `kafkaEvent.orderId == '{{CreateOrder.body.id}}'`. Empty = the first message captured (the node stops listening at that message).",
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
field: "captureTimeoutMs",
|
|
307
|
+
type: `integer ${KAFKA_MIN_CAPTURE_TIMEOUT_MS}..${KAFKA_MAX_CAPTURE_TIMEOUT_MS}`,
|
|
308
|
+
shownDefault: `${KAFKA_DEFAULT_CAPTURE_TIMEOUT_MS} (engine)`,
|
|
309
|
+
notes: "consume. How long ONE attempt listens; capped by the host's per-node timeout (60 s on a default server). Retry multiplies it.",
|
|
298
310
|
},
|
|
299
311
|
{
|
|
300
312
|
field: "publishValueFormat",
|
|
@@ -305,7 +317,13 @@ const NODE_DOCS = [
|
|
|
305
317
|
{ field: "messageValue", type: "string (≤1000000)", notes: "publish payload, template-resolved." },
|
|
306
318
|
{ field: "messageHeaders", type: KV_ROWS, notes: "publish." },
|
|
307
319
|
],
|
|
308
|
-
output: "consume: the matched message — a JSON message's keys at the top level plus `meta` {value, text, key, partition, offset, timestamp, headers};
|
|
320
|
+
output: "consume: the matched message — a JSON-object message's keys at the top level plus `meta` {value, text, key, topic, partition, offset, timestamp, headers}; any other message (array, number, text) has those fields at the top level instead, without `meta`. Also `kafkaEvent.*`. publish: {topic, partition, offset, timestamp}.",
|
|
321
|
+
notes: [
|
|
322
|
+
"**Where consuming starts.** A consume node sees records whose Kafka timestamp is at or after the scenario run's start — messages produced before the run are never seen, messages produced earlier in the same run (by a publish node or by the system under test) are. Timestamps are the producer's clock, so allow for skew. Messages from earlier loop iterations or foreach items of the same run can match too — make the rules specific (an id from this iteration).",
|
|
323
|
+
`**How long it waits.** One attempt listens for \`captureTimeoutMs\` (default ${KAFKA_DEFAULT_CAPTURE_TIMEOUT_MS} ms) and stops early at the first matching message. The default executionPolicy is continue with retry ×3 every 2000 ms, so a node waits about 3 × 5 s + 2 × 2 s ≈ 19 s in total before failing. For a slow consumer raise \`captureTimeoutMs\` (and/or retry) rather than adding wait nodes.`,
|
|
324
|
+
"**How rules read the message.** Rules are evaluated against the event shape above, NOT with JSONPath: each side is a plain dotted path (`kafkaEvent.orderId`, `kafkaEvent.meta.headers.traceparent`, `kafkaEvent.items[0].sku`) or a template. Header and key names with dashes work as plain dotted paths: `kafkaEvent.meta.headers.x-correlation-id == '{{CorrId}}'`. Brackets (`headers['x-id']`) and `$.` paths are not resolved — they compare as literal text and never match. A path segment that contains an operator word (`x-contains-id`) splits the rule at that word; avoid it or read it in a script node. Headers are UTF-8 strings; a header repeated on one record is joined with `, `. A topic, partition or offset is under `meta` (`kafkaEvent.meta.offset` is a string).",
|
|
325
|
+
"**Expecting no message.** A consume node FAILS when nothing matches in time. To assert that an event is NOT published, give the node `executionPolicy.expectFailure: {}` (see Execution policy) — the timeout then counts as success.",
|
|
326
|
+
],
|
|
309
327
|
example: {
|
|
310
328
|
id: "event",
|
|
311
329
|
type: "kafka",
|
|
@@ -746,15 +764,35 @@ const NODE_DOCS = [
|
|
|
746
764
|
},
|
|
747
765
|
{
|
|
748
766
|
type: "scenario-ref",
|
|
749
|
-
summary: "
|
|
767
|
+
summary: "Links another scenario (shared setup / teardown) without copying it by hand: the node embeds a snapshot of the linked scenario's graph, and the run executes that snapshot.",
|
|
750
768
|
fields: [
|
|
751
|
-
{
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
769
|
+
{
|
|
770
|
+
field: "scenario",
|
|
771
|
+
type: "string (compact form only)",
|
|
772
|
+
req: "yes",
|
|
773
|
+
shownDefault: "—",
|
|
774
|
+
notes: "The scenario to link, by name or id. The server copies its current graph in (fresh ids) and adds its environments' missing variables to this scenario. Re-send it to re-sync.",
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
field: "referencedScenarioId",
|
|
778
|
+
type: "string",
|
|
779
|
+
req: "yes",
|
|
780
|
+
notes: "Stored form. With `nodes: []` the server fills the snapshot (and the fields below) from that scenario.",
|
|
781
|
+
},
|
|
782
|
+
{ field: "referencedScenarioVersion", type: "integer | null", notes: "Stored form; filled by the server." },
|
|
783
|
+
{ field: "referencedScenarioName / lastSyncedAt", type: "string", notes: "Stored form; filled by the server." },
|
|
784
|
+
{ field: "nodes / edges", type: "stored node[] / stored edge[]", notes: "The snapshot. Send `[]` to have it filled; a non-empty snapshot (as read) is kept as is." },
|
|
755
785
|
],
|
|
756
|
-
output: "Its inner nodes publish under their own labels.",
|
|
757
|
-
|
|
786
|
+
output: "Its inner nodes publish under their own labels — mind label clashes with this scenario's own nodes.",
|
|
787
|
+
notes: [
|
|
788
|
+
"The linked scenario must be in the same workspace and readable by you. A scenario cannot link itself, nor a scenario whose graph links it back.",
|
|
789
|
+
],
|
|
790
|
+
example: {
|
|
791
|
+
id: "setup",
|
|
792
|
+
type: "scenario-ref",
|
|
793
|
+
label: "Setup",
|
|
794
|
+
config: { scenario: "Shared login setup" },
|
|
795
|
+
},
|
|
758
796
|
},
|
|
759
797
|
];
|
|
760
798
|
const renderNodeSection = (node, defaultConfigFor) => {
|
|
@@ -809,7 +847,7 @@ export const renderScenarioNodeReference = (options = {}) => {
|
|
|
809
847
|
}, null, 2),
|
|
810
848
|
"```",
|
|
811
849
|
"",
|
|
812
|
-
"- Node `{ id?, type, label?, config?, position? }`. `id` defaults to n1, n2, …; `position` is
|
|
850
|
+
"- Node `{ id?, type, label?, config?, position? }`. `id` defaults to n1, n2, …; when `position` is omitted the node is placed after the node it is connected from, clear of every existing node.",
|
|
813
851
|
"- `config` is deep-merged over the type's defaults (the Default column): objects merge key by key, arrays and scalars replace the default whole. Send only what you change — but an array you send (headers, checks, steps, rules, assignments) must be complete.",
|
|
814
852
|
"- Edge `{ id?, source, target, type? }`, `type` = `default` (or omitted) | `yes` | `no` | `error`. Edges have no label.",
|
|
815
853
|
"- `priority`: critical | high | medium | low. `environments[].variables`: `{ key, value, enabled? }[]`.",
|
|
@@ -846,7 +884,7 @@ export const renderScenarioNodeReference = (options = {}) => {
|
|
|
846
884
|
"- Operand `{ mode: \"runtime\" | \"literal\", valueType: \"string\" | \"number\" | \"boolean\" | \"null\" | \"array\", value, extract? }`. runtime: `value` is a bare path. literal: a JSON number for number, true/false for boolean, null for null, a JSON array for array.",
|
|
847
885
|
`- Binary operators: ${binaryOperators.join(", ")}. \`between\` takes [min, max]; \`in\` / \`not_in\` an array; \`regex\` a JS regex source; \`contains_row\` checks that an array of rows has one matching every key of an object (a JSON-object string literal or a runtime path); \`set_equals_unordered\` compares two arrays as multisets.`,
|
|
848
886
|
`- Unary operators (no \`right\`): ${unaryOperators.join(", ")}.`,
|
|
849
|
-
"- `extract` `{ type: \"jsonpath\" | \"regex\", expression, flags?, group?, select?: \"first\" | \"all\" }` is applied to the resolved value first; a failed extraction behaves as not-exists.",
|
|
887
|
+
"- `extract` `{ type: \"jsonpath\" | \"regex\", expression, flags?, group?, select?: \"first\" | \"all\" }` is applied to the resolved value first; a failed extraction behaves as not-exists. JSONPath runs without script evaluation: `$.a.b`, `$['x-id']`, `$.items[*].id`, `$..id` and slices work; filter expressions (`[?(@.x == 1)]`) are rejected — filter in a script node.",
|
|
850
888
|
"",
|
|
851
889
|
"Example: `{ \"id\": \"r1\", \"type\": \"rule\", \"left\": { \"mode\": \"runtime\", \"valueType\": \"number\", \"value\": \"CreateOrder.status\" }, \"operator\": \"equals\", \"right\": { \"mode\": \"literal\", \"valueType\": \"number\", \"value\": 201 } }`",
|
|
852
890
|
"",
|
|
@@ -856,10 +894,13 @@ export const renderScenarioNodeReference = (options = {}) => {
|
|
|
856
894
|
"",
|
|
857
895
|
"## Execution policy",
|
|
858
896
|
"",
|
|
859
|
-
"Every node except condition takes `executionPolicy: { onFailure: \"stop\" | \"continue\", retry: { enabled, maxAttempts (0..100), delayMs (0..3600000), backoffMultiplier? (1..10), maxDelayMs? (0..3600000) } }` — onFailure and retry.enabled / maxAttempts / delayMs are required when you send the stored form.",
|
|
897
|
+
"Every node except condition takes `executionPolicy: { onFailure: \"stop\" | \"continue\", retry: { enabled, maxAttempts (0..100), delayMs (0..3600000), backoffMultiplier? (1..10), maxDelayMs? (0..3600000) }, expectFailure?: { messagePattern? } }` — onFailure and retry.enabled / maxAttempts / delayMs are required when you send the stored form.",
|
|
860
898
|
"- `maxAttempts` counts every attempt (an enabled retry makes at least 2). Delay before retry n = min(maxDelayMs, delayMs × backoffMultiplier^(n−1)). No policy = stop, no retry.",
|
|
861
899
|
"- stop: a failure ends the run; continue: the run goes on along the normal edges.",
|
|
862
900
|
"- `error` edges from the failing node win over both: the run follows them instead of the normal edges (after the retries).",
|
|
901
|
+
"- How the run ends: `success` only when no node failed. A failure that continued or was routed through an `error` edge marks that node `failed_continued` and the run ends `completed_with_failures` — never `success`. A stop failure ends it `failed`.",
|
|
902
|
+
`- \`expectFailure: { messagePattern? }\` turns the node into a negative test (${SCENARIO_EXPECT_FAILURE_NODE_TYPES.map(code).join(", ")}): an attempt that FAILS with a message matching \`messagePattern\` (a JS regex, ≤${EXPECT_FAILURE_PATTERN_MAX_LENGTH} chars; omitted = any failure) makes the node succeed — normal edges run, the run can end \`success\`, and the output is \`<Label>.expectedFailure.message\`. An attempt that succeeds, or fails with another message, is a failure (retry and onFailure apply as usual, so retry can wait for something to start failing). Use it for absence checks (a Kafka event that must not appear, a poll that must time out, a request that must be refused). On a db node a non-empty \`expectError\` wins.`,
|
|
903
|
+
"- Example: `\"executionPolicy\": { \"onFailure\": \"stop\", \"retry\": { \"enabled\": false, \"maxAttempts\": 0, \"delayMs\": 0 }, \"expectFailure\": { \"messagePattern\": \"timed out\" } }`.",
|
|
863
904
|
"",
|
|
864
905
|
"## Node types",
|
|
865
906
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarioNodeReference.js","sourceRoot":"","sources":["../../../src/ai/prompts/scenarioNodeReference.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scenarioNodeReference.js","sourceRoot":"","sources":["../../../src/ai/prompts/scenarioNodeReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ export const renderDbQueryReference = () => [
|
|
|
38
38
|
"pm.expect(res.rowCount).to.be.above(0); // existence check",
|
|
39
39
|
"```",
|
|
40
40
|
"",
|
|
41
|
-
"Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: \"before\"|\"after\"`.
|
|
41
|
+
"Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: \"before\"|\"after\"`. The command text is MongoDB Extended JSON (relaxed): `{ \"$oid\": \"…\" }`, `{ \"$date\": \"2026-01-01T00:00:00Z\" }`, `{ \"$numberDecimal\": \"9.99\" }` and `{ \"$numberLong\": \"…\" }` become real BSON values anywhere in the command; a 24-hex string in a filter is also coerced to ObjectId. Rows are in `res.rows`; write ops surface counts in `res.rowCount`.",
|
|
42
42
|
"",
|
|
43
43
|
"## PostgreSQL / MySQL / Oracle (SQL)",
|
|
44
44
|
"`query` is plain SQL text. Because `pm.db.query` binds no params, inline the value and quote strings yourself (or use a `{{token}}`):",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-query-reference.js","sourceRoot":"","sources":["../../../src/host/db/db-query-reference.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,qBAAqB;AACrB,+EAA+E;AAC/E,kEAAkE;AAClE,iEAAiE;AACjE,sEAAsE;AACtE,+DAA+D;AAC/D,2EAA2E;AAC3E,wEAAwE;AACxE,yFAAyF;AACzF,oFAAoF;AACpF,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD;IACE,yEAAyE;IACzE,EAAE;IACF,uZAAuZ;IACvZ,EAAE;IACF,YAAY;IACZ,oLAAoL;IACpL,EAAE;IACF,OAAO;IACP,kCAAkC;IAClC,iCAAiC;IACjC,sBAAsB;IACtB,2BAA2B;IAC3B,0BAA0B;IAC1B,sNAAsN;IACtN,8CAA8C;IAC9C,OAAO;IACP,KAAK;IACL,8DAA8D;IAC9D,KAAK;IACL,EAAE;IACF,
|
|
1
|
+
{"version":3,"file":"db-query-reference.js","sourceRoot":"","sources":["../../../src/host/db/db-query-reference.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,qBAAqB;AACrB,+EAA+E;AAC/E,kEAAkE;AAClE,iEAAiE;AACjE,sEAAsE;AACtE,+DAA+D;AAC/D,2EAA2E;AAC3E,wEAAwE;AACxE,yFAAyF;AACzF,oFAAoF;AACpF,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD;IACE,yEAAyE;IACzE,EAAE;IACF,uZAAuZ;IACvZ,EAAE;IACF,YAAY;IACZ,oLAAoL;IACpL,EAAE;IACF,OAAO;IACP,kCAAkC;IAClC,iCAAiC;IACjC,sBAAsB;IACtB,2BAA2B;IAC3B,0BAA0B;IAC1B,sNAAsN;IACtN,8CAA8C;IAC9C,OAAO;IACP,KAAK;IACL,8DAA8D;IAC9D,KAAK;IACL,EAAE;IACF,iyBAAiyB;IACjyB,EAAE;IACF,sCAAsC;IACtC,uIAAuI;IACvI,EAAE;IACF,OAAO;IACP,mDAAmD;IACnD,iCAAiC;IACjC,sBAAsB;IACtB,2DAA2D;IAC3D,KAAK;IACL,yCAAyC;IACzC,KAAK;IACL,EAAE;IACF,qQAAqQ;IACrQ,EAAE;IACF,uBAAuB;IACvB,sQAAsQ;IACtQ,EAAE;IACF,QAAQ;IACR,0FAA0F;IAC1F,KAAK;IACL,EAAE;IACF,+BAA+B;IAC/B,gRAAgR;IAChR,EAAE;IACF,6XAA6X;IAC7X,EAAE;IACF,OAAO;IACP,0FAA0F;IAC1F,oCAAoC;IACpC,kFAAkF;IAClF,KAAK;CACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DbConnection } from "./types.js";
|
|
2
2
|
export declare const __setMongoDriverForTests: (driver: any | null) => void;
|
|
3
|
+
export declare const parseMongoCommandText: (text: string) => Promise<unknown>;
|
|
3
4
|
export declare const withMongoClient: <T>(connection: DbConnection, fn: (client: any, databaseName: string) => Promise<T>) => Promise<T>;
|
|
4
5
|
export declare const testMongoConnection: (connection: DbConnection) => Promise<void>;
|
|
5
6
|
export declare const executeMongoQuery: (connection: DbConnection, query: unknown) => Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoAdapter.d.ts","sourceRoot":"","sources":["../../../src/host/db/mongoAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C,eAAO,MAAM,wBAAwB,GAAI,QAAQ,GAAG,GAAG,IAAI,KAAG,IAE7D,CAAC;
|
|
1
|
+
{"version":3,"file":"mongoAdapter.d.ts","sourceRoot":"","sources":["../../../src/host/db/mongoAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C,eAAO,MAAM,wBAAwB,GAAI,QAAQ,GAAG,GAAG,IAAI,KAAG,IAE7D,CAAC;AAwfF,eAAO,MAAM,qBAAqB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAMzE,CAAC;AAsDF,eAAO,MAAM,eAAe,GAAU,CAAC,EACrC,YAAY,YAAY,EACxB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KACpD,OAAO,CAAC,CAAC,CASX,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,IAAI,CAWhF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,YAAY,EACxB,OAAO,OAAO,KACb,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA0K/C,CAAC"}
|
|
@@ -349,7 +349,28 @@ const writeResult = (metadata, rowCount) => ({
|
|
|
349
349
|
rowCount,
|
|
350
350
|
});
|
|
351
351
|
const OBJECTID_HEX_PATTERN = /^[a-f\d]{24}$/i;
|
|
352
|
+
// Values Extended JSON already turned into driver types (ObjectId, Long,
|
|
353
|
+
// Decimal128 …), dates and regexes pass through untouched — rebuilding them
|
|
354
|
+
// key by key would turn them into plain objects.
|
|
355
|
+
const isMongoNativeValue = (value) => value instanceof Date ||
|
|
356
|
+
value instanceof RegExp ||
|
|
357
|
+
(typeof value === "object" && value !== null && "_bsontype" in value);
|
|
358
|
+
// Mongo command text is MongoDB Extended JSON (relaxed): {"$date": …},
|
|
359
|
+
// {"$numberLong": "…"}, {"$numberDecimal": "…"}, {"$oid": …} become real BSON
|
|
360
|
+
// values. EJSON comes from the loaded driver's own BSON so its types match
|
|
361
|
+
// the driver (bson refuses values from another major). Plain JSON parses the
|
|
362
|
+
// same as before; whole numbers stay JS numbers (int32/double on the wire).
|
|
363
|
+
export const parseMongoCommandText = async (text) => {
|
|
364
|
+
const driver = await loadMongoDriver();
|
|
365
|
+
const ejson = driver?.BSON?.EJSON;
|
|
366
|
+
return ejson && typeof ejson.parse === "function"
|
|
367
|
+
? ejson.parse(text, { relaxed: true })
|
|
368
|
+
: JSON.parse(text);
|
|
369
|
+
};
|
|
352
370
|
const coerceMongoFilterValue = (value, ObjectId) => {
|
|
371
|
+
if (isMongoNativeValue(value)) {
|
|
372
|
+
return value;
|
|
373
|
+
}
|
|
353
374
|
if (typeof value === "string" && OBJECTID_HEX_PATTERN.test(value)) {
|
|
354
375
|
try {
|
|
355
376
|
return new ObjectId(value);
|