@qaick/runner 0.2.0-alpha.10

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 (69) hide show
  1. package/README.md +72 -0
  2. package/package-dist/fixtures/action-catalog-v1.qaick.json +8 -0
  3. package/package-dist/fixtures/checkout-nested.qaick.json +24 -0
  4. package/package-dist/fixtures/checkout-project.qaick.json +30 -0
  5. package/package-dist/fixtures/checkout-regression.qaick.json +16 -0
  6. package/package-dist/fixtures/invalid-binding.qaick.json +13 -0
  7. package/package-dist/fixtures/parallel-project.qaick.json +41 -0
  8. package/package-dist/fixtures/studio-flow-v7.qaick.json +23 -0
  9. package/package-dist/fixtures/studio-project-v7.qaick.json +47 -0
  10. package/package-dist/package.json +80 -0
  11. package/package-dist/src/build-info.d.ts +4 -0
  12. package/package-dist/src/build-info.d.ts.map +1 -0
  13. package/package-dist/src/build-info.js +5 -0
  14. package/package-dist/src/build-info.js.map +1 -0
  15. package/package-dist/src/demo/RunnerWalkthrough.d.ts +3 -0
  16. package/package-dist/src/demo/RunnerWalkthrough.d.ts.map +1 -0
  17. package/package-dist/src/demo/RunnerWalkthrough.js +23 -0
  18. package/package-dist/src/demo/RunnerWalkthrough.js.map +1 -0
  19. package/package-dist/src/demo/runner-walkthrough.css +31 -0
  20. package/package-dist/src/runner/RunnerModule.d.ts +8 -0
  21. package/package-dist/src/runner/RunnerModule.d.ts.map +1 -0
  22. package/package-dist/src/runner/RunnerModule.js +267 -0
  23. package/package-dist/src/runner/RunnerModule.js.map +1 -0
  24. package/package-dist/src/runner/catalog.d.ts +15 -0
  25. package/package-dist/src/runner/catalog.d.ts.map +1 -0
  26. package/package-dist/src/runner/catalog.js +16 -0
  27. package/package-dist/src/runner/catalog.js.map +1 -0
  28. package/package-dist/src/runner/fixture.d.ts +5 -0
  29. package/package-dist/src/runner/fixture.d.ts.map +1 -0
  30. package/package-dist/src/runner/fixture.js +28 -0
  31. package/package-dist/src/runner/fixture.js.map +1 -0
  32. package/package-dist/src/runner/history.d.ts +15 -0
  33. package/package-dist/src/runner/history.d.ts.map +1 -0
  34. package/package-dist/src/runner/history.js +7 -0
  35. package/package-dist/src/runner/history.js.map +1 -0
  36. package/package-dist/src/runner/package-load-error.d.ts +11 -0
  37. package/package-dist/src/runner/package-load-error.d.ts.map +1 -0
  38. package/package-dist/src/runner/package-load-error.js +10 -0
  39. package/package-dist/src/runner/package-load-error.js.map +1 -0
  40. package/package-dist/src/runner/package-loader.d.ts +4 -0
  41. package/package-dist/src/runner/package-loader.d.ts.map +1 -0
  42. package/package-dist/src/runner/package-loader.js +114 -0
  43. package/package-dist/src/runner/package-loader.js.map +1 -0
  44. package/package-dist/src/runner/redaction.d.ts +7 -0
  45. package/package-dist/src/runner/redaction.d.ts.map +1 -0
  46. package/package-dist/src/runner/redaction.js +38 -0
  47. package/package-dist/src/runner/redaction.js.map +1 -0
  48. package/package-dist/src/runner/result-export.d.ts +12 -0
  49. package/package-dist/src/runner/result-export.d.ts.map +1 -0
  50. package/package-dist/src/runner/result-export.js +9 -0
  51. package/package-dist/src/runner/result-export.js.map +1 -0
  52. package/package-dist/src/runner/runtime-client-adapter.d.ts +21 -0
  53. package/package-dist/src/runner/runtime-client-adapter.d.ts.map +1 -0
  54. package/package-dist/src/runner/runtime-client-adapter.js +40 -0
  55. package/package-dist/src/runner/runtime-client-adapter.js.map +1 -0
  56. package/package-dist/src/runner/runtime-client.d.ts +24 -0
  57. package/package-dist/src/runner/runtime-client.d.ts.map +1 -0
  58. package/package-dist/src/runner/runtime-client.js +5 -0
  59. package/package-dist/src/runner/runtime-client.js.map +1 -0
  60. package/package-dist/src/runner/studio-artifact-loader.d.ts +6 -0
  61. package/package-dist/src/runner/studio-artifact-loader.d.ts.map +1 -0
  62. package/package-dist/src/runner/studio-artifact-loader.js +331 -0
  63. package/package-dist/src/runner/studio-artifact-loader.js.map +1 -0
  64. package/package-dist/src/runner/types.d.ts +81 -0
  65. package/package-dist/src/runner/types.d.ts.map +1 -0
  66. package/package-dist/src/runner/types.js +5 -0
  67. package/package-dist/src/runner/types.js.map +1 -0
  68. package/package-dist/styles.css +262 -0
  69. package/package.json +80 -0
package/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # QAick Runner
2
+
3
+ Standalone execution application for QAick artifacts.
4
+
5
+ Runner is developed independently from QAick Studio. Studio produces durable
6
+ QAick execution packages; Runner loads, configures, executes and reports their
7
+ execution evidence.
8
+
9
+ ## Alpha 1
10
+
11
+ The first slice establishes Runner's own application shell and execution UI.
12
+ The engine and package protocol will be added behind this UI boundary.
13
+
14
+ ## Design references
15
+
16
+ - [Runner Alpha 1 plan](docs/runner-plan-alpha-1.md)
17
+ - [Runner Alpha 2 plan](docs/runner-plan-alpha-2.md)
18
+ - [Runner package contract](docs/runner-package-contract-alpha-1.md)
19
+ - [Runner Alpha 1 acceptance record](docs/runner-acceptance-alpha-1.md)
20
+ - [Runner UI draft prototype](docs/runner-alpha-1-draft.html)
21
+ - [Runner UI draft image](docs/assets/runner-alpha-1-ui-draft.png)
22
+ - [Deployment guide](docs/deployment.md)
23
+
24
+ ## Run locally
25
+
26
+ Install dependencies, then start the Vite development server:
27
+
28
+ ```bash
29
+ npm install
30
+ npm run dev
31
+ ```
32
+
33
+ Open the local URL printed by Vite, usually `http://localhost:5173`.
34
+
35
+ To create and preview a production build:
36
+
37
+ ```bash
38
+ npm run build
39
+ npm run preview
40
+ ```
41
+
42
+ To verify from a clean dependency installation, run `npm run verify:clean`.
43
+
44
+ To open the Studio-style Runner feature demo, click **View demo** in the Runner shell or open `http://localhost:5173/?demo`. The walkthrough uses selectable steps, a simulated Runner screen, callouts, and Next/Back navigation without changing the loaded package.
45
+
46
+ The visible loop hierarchy demo is stored at
47
+ [`fixtures/checkout-nested.qaick.json`](fixtures/checkout-nested.qaick.json). It is also preloaded in the app as **Customer Checkout · Loop Demo**.
48
+
49
+ Runner also accepts Studio schema 7 Flow artifact envelopes (`artifactKind: "flow"`). A representative fixture is [`fixtures/studio-flow-v7.qaick.json`](fixtures/studio-flow-v7.qaick.json). Operation catalog resolution and a canonical artifact exported directly from Studio remain conformance work.
50
+
51
+ HTTP Actions with `http.*` identifiers are executed in the browser through `fetch`. The target API must allow browser CORS requests; successful responses are captured as `status`, `body`, and `headers` outputs.
52
+
53
+ If Runner reports that a Studio project uses an outdated schema, open that project in QAick Studio, save it, and load the newly saved file in Runner.
54
+ # QAick Runner
55
+
56
+ QAick Runner is a reusable execution and evidence UI for QAick packages. The
57
+ published package exposes the Runner module for host applications and keeps the
58
+ standalone Vite application in this repository.
59
+
60
+ ## Package usage
61
+
62
+ Install the published package and its peer dependencies, then import the
63
+ module, host adapter, and stylesheet through the stable exports:
64
+
65
+ ```tsx
66
+ import { RunnerModule } from '@qaick/runner/runner-module';
67
+ import { createRunnerRuntimeClient } from '@qaick/runner/runtime-client-adapter';
68
+ import '@qaick/runner/styles.css';
69
+ ```
70
+
71
+ `RunnerModule` receives a host-provided `RunnerRuntimeClient`. The package does
72
+ not create an Electron host or choose a transport for the consuming application.
@@ -0,0 +1,8 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "catalogId": "qaick-local-actions",
4
+ "actions": [
5
+ { "id": "catalog.lookup-order", "name": "Catalog Lookup Order" },
6
+ { "id": "catalog.persist-result", "name": "Catalog Persist Result" }
7
+ ]
8
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "packageId": "checkout-nested",
4
+ "target": { "kind": "flow", "id": "customer-checkout-nested", "name": "Customer Checkout · Loop Demo" },
5
+ "definitions": [
6
+ { "id": "customer-checkout-nested", "kind": "flow", "name": "Customer Checkout · Loop Demo" },
7
+ { "id": "in-memory.approve-payment", "kind": "action", "name": "Create Payment" },
8
+ { "id": "in-memory.verify-payment", "kind": "action", "name": "Verify Payment" },
9
+ { "id": "in-memory.check-settlement", "kind": "action", "name": "Check Settlement" }
10
+ ],
11
+ "steps": [
12
+ {
13
+ "id": "checkout-sequence",
14
+ "name": "Checkout Loop",
15
+ "kind": "control-block",
16
+ "action": "control.sequence",
17
+ "output": {},
18
+ "control": { "type": "repeat", "iterations": 3, "onError": "stop" },
19
+ "children": [
20
+ { "id": "create-payment", "name": "Create Payment", "action": "in-memory.approve-payment", "bindings": { "customerId": "$inputs.customerId", "orderId": "$inputs.orderId" }, "output": { "paymentId": "PAY-932112" } }
21
+ ]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "packageId": "checkout-project",
4
+ "target": { "kind": "project", "id": "checkout-project", "name": "Checkout Regression Project" },
5
+ "definitions": [
6
+ { "id": "checkout-project", "kind": "project", "name": "Checkout Regression Project" },
7
+ { "id": "prepare-payment", "kind": "flow", "name": "Prepare Payment" },
8
+ { "id": "verify-settlement", "kind": "flow", "name": "Verify Settlement" },
9
+ { "id": "in-memory.approve-payment", "kind": "action", "name": "Create Payment" },
10
+ { "id": "in-memory.verify-payment", "kind": "action", "name": "Verify Payment" }
11
+ ],
12
+ "steps": [],
13
+ "flows": [
14
+ {
15
+ "id": "prepare-payment",
16
+ "name": "Prepare Payment",
17
+ "outputBindings": { "checkoutPayment": "$outputs.paymentId" },
18
+ "steps": [
19
+ { "id": "create-payment", "name": "Create Payment", "action": "in-memory.approve-payment", "bindings": { "customerId": "$inputs.customerId", "orderId": "$inputs.orderId" }, "output": { "paymentId": "PAY-932112" } }
20
+ ]
21
+ },
22
+ {
23
+ "id": "verify-settlement",
24
+ "name": "Verify Settlement",
25
+ "steps": [
26
+ { "id": "verify-payment", "name": "Verify Payment", "action": "in-memory.verify-payment", "bindings": { "paymentId": "$inputs.checkoutPayment" }, "output": { "status": "APPROVED" } }
27
+ ]
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "packageId": "checkout-regression",
4
+ "target": { "kind": "flow", "id": "customer-checkout", "name": "Customer Checkout" },
5
+ "definitions": [
6
+ { "id": "customer-checkout", "kind": "flow", "name": "Customer Checkout" },
7
+ { "id": "in-memory.approve-payment", "kind": "action", "name": "Create Payment" },
8
+ { "id": "in-memory.verify-payment", "kind": "action", "name": "Verify Payment" },
9
+ { "id": "in-memory.check-settlement", "kind": "action", "name": "Check Settlement" }
10
+ ],
11
+ "steps": [
12
+ { "id": "create-payment", "name": "Create Payment", "action": "in-memory.approve-payment", "bindings": { "customerId": "$inputs.customerId", "orderId": "$inputs.orderId" }, "output": { "paymentId": "PAY-932112" } },
13
+ { "id": "verify-payment", "name": "Verify Payment", "action": "in-memory.verify-payment", "bindings": { "paymentId": "$steps.create-payment.paymentId" }, "output": { "status": "APPROVED" } },
14
+ { "id": "check-settlement", "name": "Check Settlement", "action": "in-memory.check-settlement", "bindings": { "paymentStatus": "$steps.verify-payment.status" }, "output": { "settlement": "PENDING" } }
15
+ ]
16
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "packageId": "invalid-binding",
4
+ "target": { "kind": "flow", "id": "invalid-flow", "name": "Invalid Binding" },
5
+ "definitions": [
6
+ { "id": "invalid-flow", "kind": "flow", "name": "Invalid Binding" },
7
+ { "id": "test.invalid", "kind": "action", "name": "Invalid Action" }
8
+ ],
9
+ "requiredInputs": [],
10
+ "steps": [
11
+ { "id": "invalid-step", "name": "Invalid Action", "action": "test.invalid", "bindings": { "value": "$steps.deleted-step.value" }, "output": {} }
12
+ ]
13
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "packageId": "parallel-project",
4
+ "target": { "kind": "project", "id": "parallel-project", "name": "Parallel Project" },
5
+ "definitions": [
6
+ { "id": "parallel-project", "kind": "project", "name": "Parallel Project" },
7
+ { "id": "parallel-flow", "kind": "flow", "name": "Parallel Flow" },
8
+ { "id": "test.parallel.left", "kind": "action", "name": "Left branch" },
9
+ { "id": "test.parallel.right", "kind": "action", "name": "Right branch" }
10
+ ],
11
+ "steps": [],
12
+ "flows": [
13
+ {
14
+ "id": "parallel-flow",
15
+ "name": "Parallel Flow",
16
+ "requiredInputs": [],
17
+ "steps": [
18
+ {
19
+ "id": "parallel-work",
20
+ "name": "Parallel work",
21
+ "action": "control.parallel",
22
+ "kind": "control-block",
23
+ "output": {},
24
+ "control": {
25
+ "type": "parallel",
26
+ "join": "all",
27
+ "merge": "collect",
28
+ "branches": [
29
+ { "id": "left", "name": "Left", "condition": true, "children": [{ "id": "left-step", "name": "Left branch", "action": "test.parallel.left", "output": { "left": true } }] },
30
+ { "id": "right", "name": "Right", "condition": true, "children": [{ "id": "right-step", "name": "Right branch", "action": "test.parallel.right", "output": { "right": true } }] }
31
+ ]
32
+ },
33
+ "children": [
34
+ { "id": "left-step", "name": "Left branch", "action": "test.parallel.left", "output": { "left": true } },
35
+ { "id": "right-step", "name": "Right branch", "action": "test.parallel.right", "output": { "right": true } }
36
+ ]
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "artifactKind": "flow",
3
+ "schemaVersion": 7,
4
+ "flow": {
5
+ "id": "studio-checkout",
6
+ "name": "Studio Checkout",
7
+ "nodes": [
8
+ {
9
+ "id": "create-payment-node",
10
+ "type": "action",
11
+ "clientId": "checkout-project",
12
+ "actionId": "create-payment",
13
+ "label": "Create Payment",
14
+ "delaySeconds": { "type": "literal", "value": 0.01 },
15
+ "inputs": { "amount": { "type": "literal", "value": 42 } },
16
+ "position": { "x": 0, "y": 0 }
17
+ }
18
+ ],
19
+ "edges": [],
20
+ "inputs": [],
21
+ "outputs": []
22
+ }
23
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": 7,
3
+ "project": {
4
+ "id": "studio-project",
5
+ "name": "Studio Project",
6
+ "flowReferences": [
7
+ { "source": "project", "flowId": "prepare-flow" },
8
+ { "source": "project", "flowId": "verify-flow" }
9
+ ],
10
+ "actions": [],
11
+ "operations": [
12
+ {
13
+ "id": "verify-operation",
14
+ "name": "Verify Operation",
15
+ "nodes": [
16
+ { "id": "verify-action", "type": "action", "clientId": "studio-project", "actionId": "verify-nested", "label": "Verify Nested", "inputs": {}, "position": { "x": 0, "y": 0 } }
17
+ ],
18
+ "edges": [],
19
+ "inputs": [],
20
+ "outputs": []
21
+ }
22
+ ],
23
+ "variables": [],
24
+ "flows": [
25
+ {
26
+ "id": "prepare-flow",
27
+ "name": "Prepare Flow",
28
+ "nodes": [
29
+ { "id": "prepare-step", "type": "action", "clientId": "studio-project", "actionId": "prepare", "label": "Prepare", "inputs": { "orderId": { "type": "literal", "value": "ORD-1" } }, "position": { "x": 0, "y": 0 } }
30
+ ],
31
+ "edges": [],
32
+ "inputs": [],
33
+ "outputs": []
34
+ },
35
+ {
36
+ "id": "verify-flow",
37
+ "name": "Verify Flow",
38
+ "nodes": [
39
+ { "id": "verify-step", "type": "operation", "operationId": "verify-operation", "label": "Verify", "inputs": {}, "position": { "x": 0, "y": 0 } }
40
+ ],
41
+ "edges": [],
42
+ "inputs": [],
43
+ "outputs": []
44
+ }
45
+ ]
46
+ }
47
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "@qaick/runner",
3
+ "description": "Reusable QAick Runner module and standalone execution application.",
4
+ "version": "0.2.0-alpha.10",
5
+ "type": "module",
6
+ "files": [
7
+ "package-dist",
8
+ "README.md"
9
+ ],
10
+ "main": "./package-dist/src/runner/RunnerModule.js",
11
+ "types": "./package-dist/src/runner/RunnerModule.d.ts",
12
+ "publishConfig": {
13
+ "access": "public",
14
+ "tag": "alpha"
15
+ },
16
+ "exports": {
17
+ ".": {
18
+ "types": "./package-dist/src/runner/RunnerModule.d.ts",
19
+ "import": "./package-dist/src/runner/RunnerModule.js"
20
+ },
21
+ "./runner-module": {
22
+ "types": "./package-dist/src/runner/RunnerModule.d.ts",
23
+ "import": "./package-dist/src/runner/RunnerModule.js"
24
+ },
25
+ "./runtime-client-adapter": {
26
+ "types": "./package-dist/src/runner/runtime-client-adapter.d.ts",
27
+ "import": "./package-dist/src/runner/runtime-client-adapter.js"
28
+ },
29
+ "./styles.css": "./package-dist/styles.css",
30
+ "./package.json": "./package.json"
31
+ },
32
+ "scripts": {
33
+ "dev": "vite",
34
+ "build": "tsc -b && vite build",
35
+ "build:package": "node scripts/build-package.mjs",
36
+ "check:package": "npm run build:package && node scripts/check-package.mjs",
37
+ "pack:check": "npm run build:package && npm pack --dry-run",
38
+ "pack:tarball": "npm run build:package && npm pack",
39
+ "publish:alpha": "npm run check:package && npm publish --tag alpha",
40
+ "package:standalone": "npm run build && node scripts/package-standalone.mjs",
41
+ "smoke": "node scripts/smoke-check.mjs",
42
+ "smoke:deployment": "node scripts/smoke-check.mjs --deployment",
43
+ "lint": "oxlint",
44
+ "verify": "npm test && npm run build && npm run smoke && npm run lint",
45
+ "verify:clean": "npm ci && npm run verify",
46
+ "build:cloudflare": "npm run build",
47
+ "deploy:cloudflare": "npx wrangler deploy",
48
+ "deploy:cloudflare:preview": "npx wrangler versions upload",
49
+ "deploy": "npm run deploy:cloudflare",
50
+ "preview": "vite preview",
51
+ "test": "vitest run",
52
+ "typecheck": "tsc -b"
53
+ },
54
+ "dependencies": {
55
+ "@qaick/contract": "0.2.10",
56
+ "@qaick/executor": "0.1.0-alpha.1",
57
+ "@qaick/http-executor": "0.1.0-alpha.1",
58
+ "@qaick/runtime": "0.1.0-alpha.2",
59
+ "zustand": "^5.0.15"
60
+ },
61
+ "peerDependencies": {
62
+ "react": ">=19.0.0",
63
+ "react-dom": ">=19.0.0"
64
+ },
65
+ "devDependencies": {
66
+ "@vitejs/plugin-react": "^6.1.1",
67
+ "@testing-library/dom": "^10.4.2",
68
+ "@testing-library/react": "^16.3.3",
69
+ "@types/node": "^24.13.3",
70
+ "@types/react": "^19.2.18",
71
+ "@types/react-dom": "^19.2.7",
72
+ "jsdom": "^30.0.1",
73
+ "oxlint": "^1.81.0",
74
+ "react": "^19.2.8",
75
+ "react-dom": "^19.2.8",
76
+ "typescript": "~6.0.2",
77
+ "vite": "^8.3.0",
78
+ "vitest": "^5.0.0"
79
+ }
80
+ }
@@ -0,0 +1,4 @@
1
+ export declare const RUNNER_VERSION: string;
2
+ export declare const RUNNER_BUILD_ID: any;
3
+ export declare const RUNNER_BUILD_LABEL: string;
4
+ //# sourceMappingURL=build-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../src/build-info.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAAsB,CAAC;AAClD,eAAO,MAAM,eAAe,KAAwD,CAAC;AACrF,eAAO,MAAM,kBAAkB,QAA4C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import packageJson from '../package.json';
2
+ export const RUNNER_VERSION = packageJson.version;
3
+ export const RUNNER_BUILD_ID = import.meta.env.VITE_BUILD_ID ?? import.meta.env.MODE;
4
+ export const RUNNER_BUILD_LABEL = `v${RUNNER_VERSION} · ${RUNNER_BUILD_ID}`;
5
+ //# sourceMappingURL=build-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../src/build-info.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,cAAc,MAAM,eAAe,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import './runner-walkthrough.css';
2
+ export declare function RunnerWalkthrough(): import("react").JSX.Element;
3
+ //# sourceMappingURL=RunnerWalkthrough.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunnerWalkthrough.d.ts","sourceRoot":"","sources":["../../../src/demo/RunnerWalkthrough.tsx"],"names":[],"mappings":"AACA,OAAO,0BAA0B,CAAC;AA+BlC,wBAAgB,iBAAiB,gCAIhC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import './runner-walkthrough.css';
4
+ const steps = [
5
+ { id: 'overview', title: 'Runner overview', action: 'Start with the loaded execution package.', detail: 'Runner loads a durable QAick artifact, lets you choose a target, executes it, and presents structured evidence.' },
6
+ { id: 'package', title: 'Load and select a package', action: 'Choose a Project or Flow target.', detail: 'The package selector lists the available target. Load package accepts the serialized file produced by Studio.' },
7
+ { id: 'configure', title: 'Configure a run', action: 'Set environment, timeout and inputs.', detail: 'Invocation inputs and runtime values are supplied at execution time without changing the saved artifact.' },
8
+ { id: 'preflight', title: 'Pre-run validation', action: 'Validate before invoking adapters.', detail: 'Runner reports missing bindings, outputs, runtime values and contract issues before a normal run can cause side effects.' },
9
+ { id: 'hierarchy', title: 'Observe execution hierarchy', action: 'Follow Operations, loops and branches.', detail: 'Nested rows preserve invocation paths. Loops stay visible as one canvas with iteration progress and per-iteration outputs.' },
10
+ { id: 'events', title: 'Inspect event evidence', action: 'Search and filter the event log.', detail: 'Filter lifecycle, step, parallel and failure events, then search messages and step names for the relevant execution detail.' },
11
+ { id: 'results', title: 'Inspect and export results', action: 'Review Run History and export JSON.', detail: 'Recent runs are persisted in the browser. Each result can be exported as portable JSON for later analysis.' }
12
+ ];
13
+ function Balloon({ className, title, children }) { return _jsxs("div", { className: `runner-demo-balloon ${className}`, children: [_jsx("strong", { children: title }), _jsx("span", { children: children })] }); }
14
+ function RunnerScreen({ step }) {
15
+ const focus = step.id === 'overview' ? 'focus-all' : `focus-${step.id}`;
16
+ return _jsxs("div", { className: `runner-demo-screen ${focus}`, children: [_jsxs("div", { className: "runner-demo-top", children: [_jsx("b", { children: "QAick Runner" }), _jsx("span", { children: "Alpha 1" }), _jsx("span", { className: "runner-demo-menu", children: "Execution Package\u3000 Projects\u3000 Flows\u3000 Run History" }), _jsx("span", { children: "\u2193 Customer Checkout" }), _jsx("button", { children: "Pre-run validation" })] }), _jsxs("div", { className: "runner-demo-body", children: [_jsxs("div", { className: "runner-demo-nav", children: [_jsx("b", { children: "Execution" }), _jsx("b", { children: "Projects" }), _jsx("b", { children: "Flows" }), _jsx("b", { children: "History" })] }), _jsxs("div", { className: "runner-demo-left", children: [_jsx("small", { children: "PACKAGE" }), _jsx("strong", { children: "checkout-project.qaick.json" }), _jsx("button", { children: "Open demo" }), _jsx("small", { children: "TARGET" }), _jsx("div", { className: "is-selected", children: "Customer Checkout" }), _jsx("small", { children: "CONFIGURATION" }), _jsx("div", { children: "Environment\u3000test" }), _jsx("div", { children: "Timeout\u3000none" }), _jsx("div", { children: "Inputs\u30003 values" })] }), _jsxs("div", { className: "runner-demo-main", children: [_jsxs("div", { className: "runner-demo-heading", children: [_jsx("small", { children: "LIVE EXECUTION" }), _jsx("b", { children: "Customer Checkout" }), _jsx("span", { children: "\u25CF completed" })] }), _jsxs("div", { className: "runner-demo-rows", children: [_jsxs("div", { className: "runner-demo-row operation", children: [_jsx("i", { children: "\u2713" }), _jsx("b", { children: "Create Payment Context" }), _jsx("em", { children: "operation \u00B7 finished \u00B7 142 ms" })] }), _jsxs("div", { className: "runner-demo-loop", children: [_jsxs("header", { children: [_jsx("i", { children: "\u21BB" }), _jsx("b", { children: "Ten checkout checks" }), _jsx("span", { children: "LOOP \u00B7 10 / 10 \u00B7 1.7 s" })] }), _jsxs("div", { className: "runner-demo-row nested", children: [_jsx("i", { children: "\u2713" }), _jsx("b", { children: "Get Payment Status" }), _jsx("em", { children: "action \u00B7 finished \u00B7 48 ms" })] }), _jsxs("div", { className: "runner-demo-row nested alt", children: [_jsx("i", { children: "\u2713" }), _jsx("b", { children: "Verify Record" }), _jsx("em", { children: "action \u00B7 finished \u00B7 34 ms" })] }), _jsx("div", { className: "runner-demo-bar", children: _jsx("span", { style: { width: '100%' } }) })] }), _jsxs("div", { className: "runner-demo-row operation", children: [_jsx("i", { children: "\u2713" }), _jsx("b", { children: "Verify Settlement" }), _jsx("em", { children: "operation \u00B7 finished \u00B7 86 ms" })] })] })] }), _jsxs("div", { className: "runner-demo-right", children: [_jsx("b", { children: step.id === 'preflight' ? 'Pre-run validation' : step.id === 'events' ? 'Event Log' : step.id === 'results' ? 'Run History' : 'Execution Details' }), step.id === 'preflight' ? _jsxs(_Fragment, { children: [_jsx("div", { className: "demo-error", children: "\u2713 0 issues found" }), _jsx("small", { children: "Adapters have not been invoked." })] }) : step.id === 'events' ? _jsxs(_Fragment, { children: [_jsx("div", { className: "demo-filter", children: "Search events\u3000\u3000Failures \u25BE" }), _jsx("div", { className: "demo-event", children: "STEP_FINISHED\u3000Verify Record" }), _jsx("div", { className: "demo-event", children: "PARALLEL_PROGRESS\u300010 / 10" })] }) : step.id === 'results' ? _jsxs(_Fragment, { children: [_jsx("div", { className: "demo-history", children: "Customer Checkout\u3000completed" }), _jsx("div", { className: "demo-history", children: "Export result JSON\u3000\u2197" })] }) : _jsxs(_Fragment, { children: [_jsx("small", { children: "Run outcome" }), _jsx("strong", { children: "COMPLETED" }), _jsx("small", { children: "Outputs" }), _jsx("div", { className: "demo-output", children: "paymentId = pay_demo" })] })] })] }), _jsxs("div", { className: "runner-demo-bottom", children: [_jsx("b", { children: step.id === 'preflight' ? 'PRE-RUN VALIDATION' : 'RUN RESULT' }), _jsx("span", { children: step.id === 'events' ? '3 events shown' : step.id === 'results' ? '2 stored runs' : 'Ready' })] }), _jsx("div", { className: "runner-demo-callouts", children: step.id === 'overview' ? _jsxs(_Fragment, { children: [_jsx(Balloon, { className: "demo-callout-left", title: "Package", children: "Load serialized artifacts here." }), _jsx(Balloon, { className: "demo-callout-canvas", title: "Execution hierarchy", children: "Observe nested steps and loops." }), _jsx(Balloon, { className: "demo-callout-right", title: "Inspector", children: "Inspect structured evidence." })] }) : _jsx(Balloon, { className: `demo-callout-${step.id}`, title: step.title, children: step.detail }) })] });
17
+ }
18
+ export function RunnerWalkthrough() {
19
+ const [index, setIndex] = useState(0);
20
+ const step = steps[index];
21
+ return _jsxs("main", { className: "runner-demo", children: [_jsxs("div", { className: "runner-demo-title", children: [_jsxs("div", { children: [_jsx("strong", { children: "QAick Runner" }), _jsx("span", { children: "Feature walkthrough" })] }), _jsx("a", { href: "/", children: "Exit demo" })] }), _jsxs("section", { className: "runner-demo-content", children: [_jsxs("div", { className: "runner-demo-copy", children: [_jsxs("small", { children: ["RUNNER WALKTHROUGH \u00B7 ", index + 1, " / ", steps.length] }), _jsx("h1", { children: step.title }), _jsx("h2", { children: step.action }), _jsx("p", { children: step.detail }), _jsx("nav", { "aria-label": "Runner walkthrough steps", children: steps.map((item, itemIndex) => _jsxs("button", { className: itemIndex === index ? 'active' : '', onClick: () => setIndex(itemIndex), children: [_jsx("span", { children: String(itemIndex + 1).padStart(2, '0') }), item.title] }, item.id)) })] }), _jsxs("div", { className: "runner-demo-stage", children: [_jsx(RunnerScreen, { step: step }), _jsxs("div", { className: "runner-demo-controls", children: [_jsx("button", { onClick: () => setIndex(value => Math.max(0, value - 1)), disabled: index === 0, children: "\u2190 Back" }), _jsx("span", { children: step.action }), _jsx("button", { onClick: () => setIndex(value => Math.min(steps.length - 1, value + 1)), disabled: index === steps.length - 1, children: "Next \u2192" })] })] })] })] });
22
+ }
23
+ //# sourceMappingURL=RunnerWalkthrough.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunnerWalkthrough.js","sourceRoot":"","sources":["../../../src/demo/RunnerWalkthrough.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ .runner-demo { min-height: 100vh; padding: 24px 32px 34px; box-sizing: border-box; background: #edf2f8; color: #243654; }
2
+ .runner-demo-title { display: flex; align-items: center; justify-content: space-between; max-width: 1420px; margin: 0 auto 24px; }
3
+ .runner-demo-title div { display: flex; align-items: baseline; gap: 14px; }
4
+ .runner-demo-title strong { color: #2563eb; font-size: 21px; }
5
+ .runner-demo-title span { color: #75849b; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
6
+ .runner-demo-title a { color: #3d6095; font-size: 12px; text-decoration: none; }
7
+ .runner-demo-content { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 28px; max-width: 1420px; margin: auto; }
8
+ .runner-demo-copy { padding: 12px 0; }
9
+ .runner-demo-copy > small { color: #4b79bd; font-size: 10px; font-weight: 700; letter-spacing: .1em; }
10
+ .runner-demo-copy h1 { margin: 14px 0 8px; color: #243654; font-size: 27px; font-weight: 650; }
11
+ .runner-demo-copy h2 { margin: 0 0 12px; color: #4d6587; font-size: 14px; font-weight: 550; }
12
+ .runner-demo-copy p { margin: 0 0 24px; color: #6b7b94; font-size: 13px; line-height: 1.6; }
13
+ .runner-demo-copy nav { display: grid; gap: 4px; }
14
+ .runner-demo-copy nav button { display: grid; grid-template-columns: 28px 1fr; gap: 8px; padding: 9px 8px; border: 0; border-radius: 5px; background: transparent; color: #6b7b94; text-align: left; cursor: pointer; font-size: 12px; }
15
+ .runner-demo-copy nav button span { color: #a4b0c2; font-family: monospace; }
16
+ .runner-demo-copy nav button.active { background: #dce9fc; color: #245bc5; font-weight: 650; }
17
+ .runner-demo-copy nav button.active span { color: #245bc5; }
18
+ .runner-demo-stage { min-width: 0; }
19
+ .runner-demo-screen { position: relative; overflow: hidden; min-height: 590px; border: 1px solid #cbd6e5; border-radius: 8px; background: #f8fafc; box-shadow: 0 12px 28px rgb(38 67 106 / 10%); }
20
+ .runner-demo-top { display: flex; align-items: center; gap: 15px; height: 42px; padding: 0 14px; border-bottom: 1px solid #dce3ef; background: #fff; color: #74839a; font-size: 10px; }
21
+ .runner-demo-top b { color: #2563eb; font-size: 13px; }.runner-demo-top span:nth-child(2) { color: #96a3b7; }.runner-demo-menu { flex: 1; color: #52637e; }.runner-demo-top button { padding: 6px 9px; border: 1px solid #cbd6e5; border-radius: 4px; background: #fff; color: #30558f; font-size: 10px; }
22
+ .runner-demo-body { display: grid; grid-template-columns: 40px 190px minmax(0, 1fr) 220px; min-height: 510px; }
23
+ .runner-demo-nav { display: grid; align-content: start; gap: 18px; padding-top: 18px; border-right: 1px solid #dce3ef; background: #f1f4f8; }.runner-demo-nav b { padding: 7px 3px; color: #7d8ba1; font-size: 9px; text-align: center; writing-mode: vertical-rl; transform: rotate(180deg); }.runner-demo-nav b:first-child { color: #2563eb; background: #e5efff; }
24
+ .runner-demo-left, .runner-demo-right { padding: 17px 13px; border-right: 1px solid #dce3ef; background: #fbfcfe; color: #52637e; font-size: 11px; }.runner-demo-right { border-right: 0; border-left: 1px solid #dce3ef; }.runner-demo-left small, .runner-demo-right small { display: block; margin: 0 0 7px; color: #8491a7; font-size: 9px; letter-spacing: .08em; }.runner-demo-left strong { display: block; margin-bottom: 14px; overflow-wrap: anywhere; color: #2d4264; font-size: 11px; }.runner-demo-left div { margin: 5px -6px; padding: 7px 6px; }.runner-demo-left div.is-selected { background: #e6efff; color: #255bc4; }.runner-demo-left button { display: block; margin: 0 0 18px; padding: 5px 7px; border: 1px solid #cbd6e5; border-radius: 4px; background: #fff; color: #315b96; font-size: 10px; }
25
+ .runner-demo-main { padding: 20px 18px; background: #f6f8fb; }.runner-demo-heading { display: flex; align-items: baseline; gap: 9px; margin-bottom: 20px; }.runner-demo-heading small { color: #6e87aa; font-size: 9px; letter-spacing: .08em; }.runner-demo-heading b { color: #263b5c; font-size: 16px; }.runner-demo-heading span { margin-left: auto; color: #29805a; font-size: 10px; }.runner-demo-rows { display: grid; gap: 9px; }.runner-demo-row { display: grid; grid-template-columns: 20px 1fr auto; align-items: center; gap: 7px; padding: 12px 13px; border: 1px solid #d7e0ec; border-radius: 6px; background: #fff; }.runner-demo-row i { color: #319266; font-style: normal; }.runner-demo-row b { color: #314969; font-size: 12px; }.runner-demo-row em { color: #8491a7; font-size: 10px; font-style: normal; }.runner-demo-loop { padding: 9px; border: 1px solid #9db9de; border-radius: 7px; background: #eaf2ff; }.runner-demo-loop header { display: flex; align-items: center; gap: 8px; padding: 4px; color: #315b96; font-size: 11px; }.runner-demo-loop header i { color: #2563eb; font-style: normal; }.runner-demo-loop header span { margin-left: auto; font-size: 9px; }.runner-demo-row.nested { margin-top: 6px; padding: 8px 10px; border-color: #cbdcf2; }.runner-demo-row.nested.alt { background: #f5f9ff; }.runner-demo-bar { height: 4px; margin: 9px 2px 2px; border-radius: 4px; background: #cbdcf2; }.runner-demo-bar span { display: block; height: 100%; border-radius: inherit; background: #4c8ed4; }
26
+ .runner-demo-right > b { display: block; margin-bottom: 20px; color: #344b6c; font-size: 13px; }.runner-demo-right > strong { display: block; margin: 4px 0 20px; color: #288158; font-size: 18px; }.demo-output, .demo-history, .demo-event, .demo-filter { margin: 8px 0; padding: 8px; border: 1px solid #dce3ef; border-radius: 4px; background: #fff; color: #52637e; font-size: 10px; }.demo-error { margin: 8px 0; color: #288158; font-size: 13px; }.demo-filter { color: #70829d; }.demo-event { font-family: monospace; }.demo-history { color: #315b96; }
27
+ .runner-demo-bottom { display: flex; justify-content: space-between; padding: 10px 14px; border-top: 1px solid #dce3ef; background: #f1f4f8; color: #70809a; font-size: 10px; }.runner-demo-bottom b { color: #52637e; }
28
+ .runner-demo-callouts { position: absolute; inset: 0; pointer-events: none; }.runner-demo-balloon { position: absolute; width: max-content; max-width: 190px; padding: 7px 10px; border: 1px solid #7da8df; border-radius: 999px; background: rgb(255 255 255 / 88%); color: #4d6587; box-shadow: 0 3px 10px rgb(38 67 106 / 10%); font-size: 10px; }.runner-demo-balloon strong { display: block; color: #245bc5; font-size: 10px; }.runner-demo-balloon span { display: none; }.demo-callout-left { top: 85px; left: 48px; }.demo-callout-canvas { top: 92px; left: 52%; }.demo-callout-right { top: 118px; right: 12px; }.demo-callout-package, .demo-callout-configure { top: 130px; left: 45px; }.demo-callout-preflight { top: 82px; right: 25px; }.demo-callout-hierarchy { top: 215px; left: 48%; }.demo-callout-events { bottom: 80px; right: 18px; }.demo-callout-results { top: 105px; right: 18px; }
29
+ .runner-demo-controls { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 12px; color: #718097; font-size: 11px; }.runner-demo-controls button { padding: 7px 12px; border: 1px solid #cbd6e5; border-radius: 5px; background: #fff; color: #30558f; cursor: pointer; }.runner-demo-controls button:disabled { cursor: default; opacity: .45; }
30
+ @media (max-width: 1050px) { .runner-demo-content { grid-template-columns: 210px minmax(0, 1fr); }.runner-demo-body { grid-template-columns: 34px 160px minmax(0, 1fr); }.runner-demo-right { display: none; } }
31
+ @media (max-width: 720px) { .runner-demo { padding: 16px; }.runner-demo-content { display: block; }.runner-demo-copy { margin-bottom: 20px; }.runner-demo-copy nav { display: flex; overflow-x: auto; }.runner-demo-copy nav button { min-width: 145px; }.runner-demo-menu { display: none; }.runner-demo-body { grid-template-columns: 34px 150px minmax(0, 1fr); }.runner-demo-left { padding: 12px 8px; }.runner-demo-main { padding: 12px 8px; }.runner-demo-row { grid-template-columns: 18px 1fr; }.runner-demo-row em { grid-column: 2; }.runner-demo-balloon { display: none; } }
@@ -0,0 +1,8 @@
1
+ import type { RunnerRuntimeClient } from './runtime-client';
2
+ export interface RunnerModuleProps {
3
+ client: RunnerRuntimeClient;
4
+ showDemo?: boolean;
5
+ onExit?: () => void;
6
+ }
7
+ export declare function RunnerModule({ client, showDemo, onExit }: RunnerModuleProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=RunnerModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunnerModule.d.ts","sourceRoot":"","sources":["../../../src/runner/RunnerModule.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAe5D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AASD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAoC,EAAE,MAAM,EAAE,EAAE,iBAAiB,+BAEvG"}