prose-qa 0.1.0 → 0.2.2

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 (146) hide show
  1. package/README.md +65 -502
  2. package/dist/agent/bash.d.ts +1 -1
  3. package/dist/agent/bash.d.ts.map +1 -1
  4. package/dist/agent/bash.js +23 -4
  5. package/dist/agent/bash.js.map +1 -1
  6. package/dist/agent/bash.test.js +27 -3
  7. package/dist/agent/bash.test.js.map +1 -1
  8. package/dist/agent/llm-model.d.ts.map +1 -1
  9. package/dist/agent/llm-model.js +19 -10
  10. package/dist/agent/llm-model.js.map +1 -1
  11. package/dist/agent/prompt.d.ts.map +1 -1
  12. package/dist/agent/prompt.js +10 -2
  13. package/dist/agent/prompt.js.map +1 -1
  14. package/dist/agent/prompt.test.js +0 -1
  15. package/dist/agent/prompt.test.js.map +1 -1
  16. package/dist/agent/runner.d.ts.map +1 -1
  17. package/dist/agent/runner.js +80 -12
  18. package/dist/agent/runner.js.map +1 -1
  19. package/dist/agent/runner.test.d.ts +2 -0
  20. package/dist/agent/runner.test.d.ts.map +1 -0
  21. package/dist/agent/runner.test.js +83 -0
  22. package/dist/agent/runner.test.js.map +1 -0
  23. package/dist/agent/transcript-persist.d.ts +9 -0
  24. package/dist/agent/transcript-persist.d.ts.map +1 -0
  25. package/dist/agent/transcript-persist.js +6 -0
  26. package/dist/agent/transcript-persist.js.map +1 -0
  27. package/dist/agent/transcript-persist.test.d.ts +2 -0
  28. package/dist/agent/transcript-persist.test.d.ts.map +1 -0
  29. package/dist/agent/transcript-persist.test.js +56 -0
  30. package/dist/agent/transcript-persist.test.js.map +1 -0
  31. package/dist/agent/verdict.d.ts +8 -2
  32. package/dist/agent/verdict.d.ts.map +1 -1
  33. package/dist/agent/verdict.js +49 -0
  34. package/dist/agent/verdict.js.map +1 -1
  35. package/dist/agent/verdict.test.js +85 -1
  36. package/dist/agent/verdict.test.js.map +1 -1
  37. package/dist/cli/analyze.js +7 -7
  38. package/dist/cli/analyze.js.map +1 -1
  39. package/dist/cli/help.d.ts.map +1 -1
  40. package/dist/cli/help.js +53 -17
  41. package/dist/cli/help.js.map +1 -1
  42. package/dist/cli/help.test.js +1 -0
  43. package/dist/cli/help.test.js.map +1 -1
  44. package/dist/cli/index.js +18 -1
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/cli/install-browser.d.ts +3 -0
  47. package/dist/cli/install-browser.d.ts.map +1 -0
  48. package/dist/cli/install-browser.js +42 -0
  49. package/dist/cli/install-browser.js.map +1 -0
  50. package/dist/cli/install-browser.test.d.ts +2 -0
  51. package/dist/cli/install-browser.test.d.ts.map +1 -0
  52. package/dist/cli/install-browser.test.js +19 -0
  53. package/dist/cli/install-browser.test.js.map +1 -0
  54. package/dist/cli/record.js +3 -3
  55. package/dist/cli/record.js.map +1 -1
  56. package/dist/cli/run.d.ts.map +1 -1
  57. package/dist/cli/run.js +32 -27
  58. package/dist/cli/run.js.map +1 -1
  59. package/dist/config/lightpanda.d.ts +8 -0
  60. package/dist/config/lightpanda.d.ts.map +1 -1
  61. package/dist/config/lightpanda.js +41 -4
  62. package/dist/config/lightpanda.js.map +1 -1
  63. package/dist/config/lightpanda.test.js +30 -1
  64. package/dist/config/lightpanda.test.js.map +1 -1
  65. package/dist/config/load.d.ts +4 -1
  66. package/dist/config/load.d.ts.map +1 -1
  67. package/dist/config/load.js +52 -28
  68. package/dist/config/load.js.map +1 -1
  69. package/dist/config/load.test.js +101 -13
  70. package/dist/config/load.test.js.map +1 -1
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +2 -1
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/prompt/load.d.ts +2 -2
  75. package/dist/prompt/load.d.ts.map +1 -1
  76. package/dist/prompt/load.js +4 -9
  77. package/dist/prompt/load.js.map +1 -1
  78. package/dist/redact/env-secrets.d.ts.map +1 -1
  79. package/dist/redact/env-secrets.js +1 -0
  80. package/dist/redact/env-secrets.js.map +1 -1
  81. package/dist/redact/env-secrets.test.js +3 -3
  82. package/dist/redact/env-secrets.test.js.map +1 -1
  83. package/dist/reporter/index.d.ts.map +1 -1
  84. package/dist/reporter/index.js +6 -2
  85. package/dist/reporter/index.js.map +1 -1
  86. package/dist/reporter/index.test.js +59 -1
  87. package/dist/reporter/index.test.js.map +1 -1
  88. package/dist/scenarios/globs.d.ts +3 -4
  89. package/dist/scenarios/globs.d.ts.map +1 -1
  90. package/dist/scenarios/globs.js +5 -27
  91. package/dist/scenarios/globs.js.map +1 -1
  92. package/dist/scenarios/globs.test.js +11 -29
  93. package/dist/scenarios/globs.test.js.map +1 -1
  94. package/dist/skills/loader.d.ts +8 -1
  95. package/dist/skills/loader.d.ts.map +1 -1
  96. package/dist/skills/loader.js +31 -5
  97. package/dist/skills/loader.js.map +1 -1
  98. package/dist/skills/loader.test.d.ts +2 -0
  99. package/dist/skills/loader.test.d.ts.map +1 -0
  100. package/dist/skills/loader.test.js +40 -0
  101. package/dist/skills/loader.test.js.map +1 -0
  102. package/dist/skills/on-demand.d.ts +57 -0
  103. package/dist/skills/on-demand.d.ts.map +1 -0
  104. package/dist/skills/on-demand.js +225 -0
  105. package/dist/skills/on-demand.js.map +1 -0
  106. package/dist/skills/on-demand.test.d.ts +2 -0
  107. package/dist/skills/on-demand.test.d.ts.map +1 -0
  108. package/dist/skills/on-demand.test.js +111 -0
  109. package/dist/skills/on-demand.test.js.map +1 -0
  110. package/dist/types/config.d.ts +17 -7
  111. package/dist/types/config.d.ts.map +1 -1
  112. package/dist/types/verdict.d.ts +21 -1
  113. package/dist/types/verdict.d.ts.map +1 -1
  114. package/dist/types/verdict.js +16 -0
  115. package/dist/types/verdict.js.map +1 -1
  116. package/dist/version.d.ts +3 -0
  117. package/dist/version.d.ts.map +1 -0
  118. package/dist/version.js +6 -0
  119. package/dist/version.js.map +1 -0
  120. package/package.json +9 -7
  121. package/pqa.config.ts +8 -13
  122. package/prompt/SYSTEM.md +2 -1
  123. package/scripts/install-lightpanda.mjs +161 -0
  124. package/scripts/sync-skills.mjs +110 -0
  125. package/skills/agent-browser/SKILL.md +0 -1960
  126. package/skills/agent-browser/bundled/agentcore/SKILL.md +115 -0
  127. package/skills/agent-browser/bundled/dogfood/SKILL.md +220 -0
  128. package/skills/agent-browser/bundled/dogfood/references/issue-taxonomy.md +109 -0
  129. package/skills/agent-browser/bundled/dogfood/templates/dogfood-report-template.md +53 -0
  130. package/skills/agent-browser/bundled/electron/SKILL.md +236 -0
  131. package/skills/agent-browser/bundled/slack/SKILL.md +285 -0
  132. package/skills/agent-browser/bundled/slack/references/slack-tasks.md +348 -0
  133. package/skills/agent-browser/bundled/slack/templates/slack-report-template.md +163 -0
  134. package/skills/agent-browser/bundled/vercel-sandbox/SKILL.md +280 -0
  135. package/skills/agent-browser/manifest.json +42 -0
  136. package/skills/agent-browser/references/authentication.md +303 -0
  137. package/skills/agent-browser/references/commands.md +398 -0
  138. package/skills/agent-browser/references/profiling.md +120 -0
  139. package/skills/agent-browser/references/proxy-support.md +194 -0
  140. package/skills/agent-browser/references/session-management.md +193 -0
  141. package/skills/agent-browser/references/snapshot-refs.md +219 -0
  142. package/skills/agent-browser/references/trust-boundaries.md +89 -0
  143. package/skills/agent-browser/references/video-recording.md +175 -0
  144. package/skills/agent-browser/templates/authenticated-session.sh +105 -0
  145. package/skills/agent-browser/templates/capture-workflow.sh +69 -0
  146. package/skills/agent-browser/templates/form-automation.sh +62 -0
@@ -1 +1 @@
1
- {"version":3,"file":"env-secrets.d.ts","sourceRoot":"","sources":["../../src/redact/env-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,cAAc,EACd,OAAO,EACR,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAAC;IAC/D,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IACvD,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC;CAC9D;AA0BD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAqEb;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAEhD"}
1
+ {"version":3,"file":"env-secrets.d.ts","sourceRoot":"","sources":["../../src/redact/env-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,cAAc,EACd,OAAO,EACR,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAAC;IAC/D,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IACvD,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC;CAC9D;AA0BD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAsEb;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAEhD"}
@@ -62,6 +62,7 @@ export function createEnvRedactor(env, sensitiveNames, options = {}) {
62
62
  reason: redact(c.reason),
63
63
  evidence: c.evidence?.map(redact),
64
64
  })),
65
+ ...(verdict.stats ? { stats: verdict.stats } : {}),
65
66
  };
66
67
  }
67
68
  function redactScenarioResult(result) {
@@ -1 +1 @@
1
- {"version":3,"file":"env-secrets.js","sourceRoot":"","sources":["../../src/redact/env-secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-secrets.js","sourceRoot":"","sources":["../../src/redact/env-secrets.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { describe, it } from "node:test";
3
- import { resolveSensitiveEnvVars } from "../config/load.js";
3
+ import { PQA_LLM_API_KEY, resolveSensitiveEnvVars } from "../config/load.js";
4
4
  import { createEnvRedactor } from "./env-secrets.js";
5
5
  const baseConfig = {
6
6
  llm: { provider: "fireworks", model: "test" },
@@ -78,7 +78,7 @@ describe("resolveSensitiveEnvVars", () => {
78
78
  envVars: ["PQA_TEST_EMAIL", "PQA_TEST_PASSWORD"],
79
79
  });
80
80
  assert.deepEqual(names, [
81
- "FIREWORKS_API_KEY",
81
+ PQA_LLM_API_KEY,
82
82
  "PQA_TEST_EMAIL",
83
83
  "PQA_TEST_PASSWORD",
84
84
  ]);
@@ -89,7 +89,7 @@ describe("resolveSensitiveEnvVars", () => {
89
89
  envVars: ["PQA_TEST_EMAIL"],
90
90
  sensitiveEnvVars: ["PQA_TEST_PASSWORD"],
91
91
  });
92
- assert.deepEqual(names, ["FIREWORKS_API_KEY", "PQA_TEST_PASSWORD"]);
92
+ assert.deepEqual(names, [PQA_LLM_API_KEY, "PQA_TEST_PASSWORD"]);
93
93
  });
94
94
  it("omits LLM API key env var for ollama", () => {
95
95
  const names = resolveSensitiveEnvVars({
@@ -1 +1 @@
1
- {"version":3,"file":"env-secrets.test.js","sourceRoot":"","sources":["../../src/redact/env-secrets.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-secrets.test.js","sourceRoot":"","sources":["../../src/redact/env-secrets.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,EACxC,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAYN;AAuBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAgB3E;AA+ED,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,cAAc,EAAE,GACxB,SAAS,CAmBX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,EACxC,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAMN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI,CAiBN;AAuBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAgB3E;AA+ED,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,cAAc,EAAE,GACxB,SAAS,CAmBX"}
@@ -1,6 +1,6 @@
1
1
  import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import path from "node:path";
3
- import { getTranscriptBashEntries } from "../agent/verdict.js";
3
+ import { enrichVerdictWithStats, getTranscriptBashEntries } from "../agent/verdict.js";
4
4
  export function createRunId() {
5
5
  return new Date().toISOString().replace(/[:.]/g, "-");
6
6
  }
@@ -31,7 +31,11 @@ export function writeScenarioTranscript(artifactDir, result, redactor) {
31
31
  const safe = redactor ? redactor.redactScenarioResult(result) : result;
32
32
  writeFileSync(path.join(artifactDir, "transcript.json"), `${JSON.stringify(safe.transcript, null, 2)}\n`);
33
33
  if (safe.verdict) {
34
- writeFileSync(path.join(artifactDir, "verdict.json"), `${JSON.stringify(safe.verdict, null, 2)}\n`);
34
+ const verdict = enrichVerdictWithStats(safe.verdict, safe.transcript, {
35
+ durationMs: safe.durationMs,
36
+ healing: safe.healing,
37
+ }) ?? safe.verdict;
38
+ writeFileSync(path.join(artifactDir, "verdict.json"), `${JSON.stringify(verdict, null, 2)}\n`);
35
39
  }
36
40
  }
37
41
  function scenarioStatusClass(status) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,YAAoB;IACtE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,MAAiB,EACjB,QAAsB;IAEtB,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACnB,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvD,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAChC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3C,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,UAAwC,EACxC,QAAsB;IAEtB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3E,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EACzC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,MAAsB,EACtB,QAAsB;IAEtB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EACzC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAChD,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,OAAO,GACX,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YACpD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;QACrB,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACtC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAgC;IAEhC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA6B;IAC5D,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAU;IAClC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAyB;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,cAAc,WAAW,yBAAyB,CAAC,CAAC,MAAM,WAAW,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;IAC5K,CAAC,CAAC;SACD,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO;;;MAGH,KAAK;;aAEE,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB;IACnC,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,WAAW,GACf,CAAC,CAAC,OAAO,EAAE,WAAW;aACnB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CACrG;aACA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC;aAChD,KAAK,CAAC,CAAC,EAAE,CAAC;aACV,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,gBAAgB,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,eAAe,CAClH;aACA,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI;YAClC,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO;YAC7B,CAAC,CAAC,oCAAoC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,aAAa,uBAAuB,CAAC,CAAC,OAAO,CAAC,eAAe,MAAM;YAChL,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,4BAA4B,WAAW;cACtC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,MAAM,UAAU,YAAY;aAC7E,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;UACnC,aAAa;UACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;UAC5D,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;UAC1D,WAAW,CAAC,CAAC,CAAC,OAAO,WAAW,OAAO,CAAC,CAAC,CAAC,EAAE;UAC5C,IAAI;iBACG,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;sBAIa,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;eAmB/B,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;OAChC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,WAAW;IACX,IAAI;;QAEA,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,SAAe,EACf,OAAyB;IAEzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAErE,OAAO;QACL,KAAK;QACL,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;QAClC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,OAAO;QACP,OAAO,EAAE;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM;YACN,MAAM;YACN,MAAM;YACN,OAAO;SACR;KACF,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
4
4
  import path from "node:path";
5
5
  import { describe, it } from "node:test";
6
6
  import { createEnvRedactor } from "../redact/env-secrets.js";
7
- import { buildReport, renderScenarioSummaryHtml, writeTranscript } from "./index.js";
7
+ import { buildReport, renderScenarioSummaryHtml, writeScenarioTranscript, writeTranscript, } from "./index.js";
8
8
  function stubResult(scenario, status) {
9
9
  return {
10
10
  scenario,
@@ -33,6 +33,64 @@ describe("renderScenarioSummaryHtml", () => {
33
33
  assert.equal(renderScenarioSummaryHtml([]), "");
34
34
  });
35
35
  });
36
+ describe("writeScenarioTranscript", () => {
37
+ it("writes verdict.json with harness-computed stats", () => {
38
+ const artifactDir = mkdtempSync(path.join(tmpdir(), "pqa-verdict-"));
39
+ writeScenarioTranscript(artifactDir, {
40
+ scenario: "hello-world",
41
+ filePath: "scenarios/hello-world.md",
42
+ status: "pass",
43
+ durationMs: 12_750,
44
+ verdict: {
45
+ status: "pass",
46
+ checkpoints: [
47
+ {
48
+ assertion: "page shows Hello",
49
+ pass: true,
50
+ reason: "heading visible",
51
+ },
52
+ ],
53
+ summary: "All checkpoints passed",
54
+ },
55
+ transcript: {
56
+ entries: [
57
+ {
58
+ type: "message",
59
+ role: "user",
60
+ content: "go",
61
+ at: "2026-01-01T00:00:00.000Z",
62
+ },
63
+ {
64
+ type: "message",
65
+ role: "assistant",
66
+ content: '[tool bash] {"command":"agent-browser snapshot -i"}',
67
+ at: "2026-01-01T00:00:05.000Z",
68
+ durationMs: 5000,
69
+ },
70
+ {
71
+ type: "bash",
72
+ command: "agent-browser snapshot -i",
73
+ stdout: "ok",
74
+ stderr: "",
75
+ exitCode: 0,
76
+ durationMs: 200,
77
+ at: "2026-01-01T00:00:05.000Z",
78
+ },
79
+ ],
80
+ },
81
+ healing: {
82
+ used: false,
83
+ recoveryTurns: 0,
84
+ scenarioRetries: 0,
85
+ },
86
+ });
87
+ const written = JSON.parse(readFileSync(path.join(artifactDir, "verdict.json"), "utf8"));
88
+ assert.equal(written.stats.durationMs, 12_750);
89
+ assert.equal(written.stats.llmTurns, 1);
90
+ assert.equal(written.stats.userTurns, 1);
91
+ assert.equal(written.stats.toolCalls, 1);
92
+ });
93
+ });
36
94
  describe("writeTranscript", () => {
37
95
  it("redacts sensitive env values when a redactor is provided", () => {
38
96
  const artifactDir = mkdtempSync(path.join(tmpdir(), "pqa-transcript-"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/reporter/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/reporter/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import type { PqaConfig } from "../types/config.js";
2
2
  export declare const DEFAULT_SCENARIOS_DIR = "scenarios";
3
3
  export declare function scenarioDiscoveryGlob(scenariosDir: string): string;
4
- /** Expand directory paths (e.g. `pqa/`) into file globs. */
4
+ /** Expand directory paths (e.g. `scenarios/`) into file globs. */
5
5
  export declare function expandScenarioPatterns(patterns: string[]): string[];
6
- export declare function inferScenariosDirFromPatterns(patterns: string[]): string | undefined;
7
- export declare function resolveScenariosDir(config: PqaConfig, patterns: string[], cwd?: string): string;
8
- export declare function resolveRunGlobs(config: PqaConfig, patterns: string[], cwd?: string): {
6
+ export declare function resolveScenariosDir(config: PqaConfig): string;
7
+ export declare function resolveRunGlobs(config: PqaConfig, patterns: string[]): {
9
8
  scenariosDir: string;
10
9
  discoveryGlob: string;
11
10
  runGlobs: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"globs.d.ts","sourceRoot":"","sources":["../../src/scenarios/globs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOnE;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAKpF;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,SAAgB,GAClB,MAAM,CAeR;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,SAAgB,GAClB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yFAAyF;IACzF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CASA"}
1
+ {"version":3,"file":"globs.d.ts","sourceRoot":"","sources":["../../src/scenarios/globs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOnE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yFAAyF;IACzF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CASA"}
@@ -1,10 +1,8 @@
1
- import { existsSync } from "node:fs";
2
- import path from "node:path";
3
1
  export const DEFAULT_SCENARIOS_DIR = "scenarios";
4
2
  export function scenarioDiscoveryGlob(scenariosDir) {
5
3
  return `${scenariosDir.replace(/\/$/, "")}/**/*.md`;
6
4
  }
7
- /** Expand directory paths (e.g. `pqa/`) into file globs. */
5
+ /** Expand directory paths (e.g. `scenarios/`) into file globs. */
8
6
  export function expandScenarioPatterns(patterns) {
9
7
  return patterns.map((pattern) => {
10
8
  if (!pattern.includes("*") && !pattern.endsWith(".md")) {
@@ -13,31 +11,11 @@ export function expandScenarioPatterns(patterns) {
13
11
  return pattern;
14
12
  });
15
13
  }
16
- export function inferScenariosDirFromPatterns(patterns) {
17
- const first = patterns[0]?.trim();
18
- if (!first)
19
- return undefined;
20
- const segments = first.split("/").filter((segment) => segment && segment !== ".");
21
- return segments[0] || undefined;
14
+ export function resolveScenariosDir(config) {
15
+ return (config.scenariosDir ?? DEFAULT_SCENARIOS_DIR).replace(/\/$/, "");
22
16
  }
23
- export function resolveScenariosDir(config, patterns, cwd = process.cwd()) {
24
- if (config.scenariosDir) {
25
- return config.scenariosDir.replace(/\/$/, "");
26
- }
27
- const inferred = inferScenariosDirFromPatterns(patterns);
28
- if (inferred) {
29
- return inferred;
30
- }
31
- if (existsSync(path.join(cwd, DEFAULT_SCENARIOS_DIR))) {
32
- return DEFAULT_SCENARIOS_DIR;
33
- }
34
- if (existsSync(path.join(cwd, "pqa"))) {
35
- return "pqa";
36
- }
37
- return DEFAULT_SCENARIOS_DIR;
38
- }
39
- export function resolveRunGlobs(config, patterns, cwd = process.cwd()) {
40
- const scenariosDir = resolveScenariosDir(config, patterns, cwd);
17
+ export function resolveRunGlobs(config, patterns) {
18
+ const scenariosDir = resolveScenariosDir(config);
41
19
  const discoveryGlob = scenarioDiscoveryGlob(scenariosDir);
42
20
  const runGlobs = patterns.length > 0
43
21
  ? expandScenarioPatterns(patterns)
@@ -1 +1 @@
1
- {"version":3,"file":"globs.js","sourceRoot":"","sources":["../../src/scenarios/globs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;AACtD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAkB;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,QAAkB,EAClB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,QAAkB,EAClB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAQnB,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,QAAQ,GACZ,QAAQ,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACrE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"globs.js","sourceRoot":"","sources":["../../src/scenarios/globs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;AACtD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,QAAkB;IAQlB,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,QAAQ,GACZ,QAAQ,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACrE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAChE,CAAC"}
@@ -1,45 +1,27 @@
1
1
  import assert from "node:assert/strict";
2
- import { mkdtempSync, mkdirSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import path from "node:path";
5
2
  import { describe, it } from "node:test";
6
- import { DEFAULT_SCENARIOS_DIR, expandScenarioPatterns, inferScenariosDirFromPatterns, resolveRunGlobs, resolveScenariosDir, scenarioDiscoveryGlob, } from "./globs.js";
3
+ import { DEFAULT_SCENARIOS_DIR, expandScenarioPatterns, resolveRunGlobs, resolveScenariosDir, } from "./globs.js";
7
4
  const baseConfig = {};
8
5
  describe("expandScenarioPatterns", () => {
9
6
  it("expands directory paths into markdown globs", () => {
10
- assert.deepEqual(expandScenarioPatterns(["pqa/"]), ["pqa/**/*.md"]);
11
- assert.deepEqual(expandScenarioPatterns(["pqa"]), ["pqa/**/*.md"]);
12
- assert.deepEqual(expandScenarioPatterns(["pqa/**/*.md"]), ["pqa/**/*.md"]);
13
- });
14
- });
15
- describe("inferScenariosDirFromPatterns", () => {
16
- it("uses the first path segment as the scenarios root", () => {
17
- assert.equal(inferScenariosDirFromPatterns(["pqa/**/*.md"]), "pqa");
18
- assert.equal(inferScenariosDirFromPatterns(["pqa/pilar/p1/*.md"]), "pqa");
19
- assert.equal(inferScenariosDirFromPatterns(["./pqa/pilar-smoke.md"]), "pqa");
7
+ assert.deepEqual(expandScenarioPatterns(["scenarios/"]), ["scenarios/**/*.md"]);
8
+ assert.deepEqual(expandScenarioPatterns(["scenarios"]), ["scenarios/**/*.md"]);
9
+ assert.deepEqual(expandScenarioPatterns(["scenarios/**/*.md"]), ["scenarios/**/*.md"]);
20
10
  });
21
11
  });
22
12
  describe("resolveScenariosDir", () => {
23
- it("prefers config.scenariosDir when set", () => {
24
- assert.equal(resolveScenariosDir({ scenariosDir: "custom" }, []), "custom");
25
- });
26
- it("auto-detects pqa/ when scenarios/ is missing", () => {
27
- const cwd = mkdtempSync(path.join(tmpdir(), "pqa-globs-"));
28
- mkdirSync(path.join(cwd, "pqa"));
29
- assert.equal(resolveScenariosDir(baseConfig, [], cwd), "pqa");
13
+ it("uses config.scenariosDir when set", () => {
14
+ assert.equal(resolveScenariosDir({ scenariosDir: "custom" }), "custom");
30
15
  });
31
- it("defaults to scenarios when neither directory exists", () => {
32
- const cwd = mkdtempSync(path.join(tmpdir(), "pqa-globs-"));
33
- assert.equal(resolveScenariosDir(baseConfig, [], cwd), DEFAULT_SCENARIOS_DIR);
16
+ it("defaults to scenarios when omitted from config", () => {
17
+ assert.equal(resolveScenariosDir(baseConfig), DEFAULT_SCENARIOS_DIR);
34
18
  });
35
19
  });
36
20
  describe("resolveRunGlobs", () => {
37
21
  it("uses discovery glob for auth lookup and expanded patterns for filtering", () => {
38
- const cwd = mkdtempSync(path.join(tmpdir(), "pqa-globs-"));
39
- mkdirSync(path.join(cwd, "pqa"));
40
- const { discoveryGlob, runGlobs, searchGlobs } = resolveRunGlobs(baseConfig, ["pqa/"], cwd);
41
- assert.equal(discoveryGlob, scenarioDiscoveryGlob("pqa"));
42
- assert.deepEqual(runGlobs, ["pqa/**/*.md"]);
22
+ const { discoveryGlob, runGlobs, searchGlobs } = resolveRunGlobs({ scenariosDir: "scenarios" }, ["scenarios/smoke/"]);
23
+ assert.equal(discoveryGlob, "scenarios/**/*.md");
24
+ assert.deepEqual(runGlobs, ["scenarios/smoke/**/*.md"]);
43
25
  assert.deepEqual(searchGlobs, runGlobs);
44
26
  });
45
27
  it("uses config.scenariosDir when no patterns are provided", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"globs.test.js","sourceRoot":"","sources":["../../src/scenarios/globs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"globs.test.js","sourceRoot":"","sources":["../../src/scenarios/globs.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,GAAG,EAAe,CAAC;AAEnC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/E,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,CACV,mBAAmB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAe,CAAC,EAC5D,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,eAAe,CAC9D,EAAE,YAAY,EAAE,WAAW,EAAe,EAC1C,CAAC,kBAAkB,CAAC,CACrB,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAe,CAAC;QAC/D,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,10 +1,17 @@
1
1
  import { type Skill, type SkillCatalogEntry } from "../types/skill.js";
2
+ /** Vendored agent-browser skill always injected into the system prompt. */
3
+ export declare const CORE_SKILL_NAME = "core";
4
+ export declare function loadBundledCoreSkill(cwd: string): Skill;
2
5
  export declare function discoverSkills(dirs: string[], cwd: string): Skill[];
6
+ /** Skill names always preloaded: bundled core + config skills.preloads. */
7
+ export declare function resolveBaseSkillNames(preloads?: string[]): string[];
3
8
  export declare function catalog(skills: Skill[]): SkillCatalogEntry[];
4
9
  export declare function getSkill(skills: Skill[], name: string): Skill | undefined;
5
10
  export declare function requireSkills(skills: Skill[], names: string[]): Skill[];
6
11
  export declare function mergeSkillNames(...groups: string[][]): string[];
7
12
  export declare function resolveSkills(catalog: Skill[], ...nameGroups: string[][]): Skill[];
8
- export declare function buildSkillPrompt(skills: Skill[]): string;
13
+ export declare function buildSkillPrompt(skills: Skill[], options?: {
14
+ onDemandCatalog?: string;
15
+ }): string;
9
16
  export declare function verifyBundledSkill(cwd: string): void;
10
17
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAyC3B,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAiBnE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAE5D;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzE;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,MAAM,EAAE,GACd,KAAK,EAAE,CAQT;AAED,wBAAgB,eAAe,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAW/D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,KAAK,EAAE,EAChB,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,GACxB,KAAK,EAAE,CAET;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAOxD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAWpD"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAM3B,2EAA2E;AAC3E,eAAO,MAAM,eAAe,SAAS,CAAC;AAsCtC,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CASvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAsBnE;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAE5D;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzE;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,MAAM,EAAE,GACd,KAAK,EAAE,CAQT;AAED,wBAAgB,eAAe,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAW/D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,KAAK,EAAE,EAChB,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,GACxB,KAAK,EAAE,CAET;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAiBpD"}
@@ -4,6 +4,9 @@ import matter from "gray-matter";
4
4
  import { SkillFrontmatterSchema, } from "../types/skill.js";
5
5
  import { resolveBundledPath } from "../paths.js";
6
6
  const SKILL_FILE = "SKILL.md";
7
+ const BUNDLED_CORE_SKILL_DIR = path.join("skills", "agent-browser");
8
+ /** Vendored agent-browser skill always injected into the system prompt. */
9
+ export const CORE_SKILL_NAME = "core";
7
10
  function findSkillDirs(root) {
8
11
  const results = [];
9
12
  if (!existsSync(root))
@@ -38,6 +41,14 @@ function parseSkillDir(dir) {
38
41
  body: body.trim(),
39
42
  };
40
43
  }
44
+ export function loadBundledCoreSkill(cwd) {
45
+ const dir = resolveBundledPath(cwd, BUNDLED_CORE_SKILL_DIR);
46
+ const skillPath = path.join(dir, SKILL_FILE);
47
+ if (!existsSync(skillPath)) {
48
+ throw new Error("skills/agent-browser/SKILL.md missing. Run: npm ci (or npm install) in the prose-qa package.");
49
+ }
50
+ return parseSkillDir(dir);
51
+ }
41
52
  export function discoverSkills(dirs, cwd) {
42
53
  const seen = new Set();
43
54
  const skills = [];
@@ -53,8 +64,16 @@ export function discoverSkills(dirs, cwd) {
53
64
  skills.push(skill);
54
65
  }
55
66
  }
67
+ const core = loadBundledCoreSkill(cwd);
68
+ if (!seen.has(core.name)) {
69
+ skills.unshift(core);
70
+ }
56
71
  return skills;
57
72
  }
73
+ /** Skill names always preloaded: bundled core + config skills.preloads. */
74
+ export function resolveBaseSkillNames(preloads = []) {
75
+ return mergeSkillNames([CORE_SKILL_NAME], preloads);
76
+ }
58
77
  export function catalog(skills) {
59
78
  return skills.map(({ body: _body, ...entry }) => entry);
60
79
  }
@@ -84,15 +103,22 @@ export function mergeSkillNames(...groups) {
84
103
  export function resolveSkills(catalog, ...nameGroups) {
85
104
  return requireSkills(catalog, mergeSkillNames(...nameGroups));
86
105
  }
87
- export function buildSkillPrompt(skills) {
88
- return skills
89
- .map((s) => `## Skill: ${s.name}\n\n${s.body}`)
90
- .join("\n\n---\n\n");
106
+ export function buildSkillPrompt(skills, options) {
107
+ const blocks = skills.map((s) => `## Skill: ${s.name}\n\n${s.body}`);
108
+ if (options?.onDemandCatalog?.trim()) {
109
+ blocks.push(options.onDemandCatalog.trim());
110
+ }
111
+ return blocks.join("\n\n---\n\n");
91
112
  }
92
113
  export function verifyBundledSkill(cwd) {
93
- const skillPath = path.join(resolveBundledPath(cwd, "skills"), "agent-browser", "SKILL.md");
114
+ const skillDir = path.join(resolveBundledPath(cwd, "skills"), "agent-browser");
115
+ const skillPath = path.join(skillDir, "SKILL.md");
94
116
  if (!existsSync(skillPath)) {
95
117
  throw new Error("skills/agent-browser/SKILL.md missing. Run: npm ci (or npm install) in the prose-qa package.");
96
118
  }
119
+ const manifestPath = path.join(skillDir, "manifest.json");
120
+ if (!existsSync(manifestPath)) {
121
+ throw new Error("skills/agent-browser/manifest.json missing. Run: pqa skills sync (or npm install).");
122
+ }
97
123
  }
98
124
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../src/skills/loader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import assert from "node:assert/strict";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { describe, it } from "node:test";
5
+ import { CORE_SKILL_NAME, discoverSkills, loadBundledCoreSkill, resolveBaseSkillNames, } from "./loader.js";
6
+ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
7
+ describe("loadBundledCoreSkill", () => {
8
+ it("loads the vendored agent-browser core skill", () => {
9
+ const core = loadBundledCoreSkill(repoRoot);
10
+ assert.equal(core.name, CORE_SKILL_NAME);
11
+ assert.ok(core.body.length > 0);
12
+ assert.match(core.dir, /skills[/\\]agent-browser$/);
13
+ });
14
+ });
15
+ describe("discoverSkills", () => {
16
+ it("always includes core even when skills.dirs is empty", () => {
17
+ const skills = discoverSkills([], repoRoot);
18
+ assert.equal(skills[0]?.name, CORE_SKILL_NAME);
19
+ assert.ok(skills.some((s) => s.name === CORE_SKILL_NAME));
20
+ });
21
+ it("discovers custom skills from configured dirs", () => {
22
+ const skills = discoverSkills(["skills"], repoRoot);
23
+ assert.ok(skills.some((s) => s.name === CORE_SKILL_NAME));
24
+ assert.ok(skills.some((s) => s.name === "prose-qa"));
25
+ });
26
+ });
27
+ describe("resolveBaseSkillNames", () => {
28
+ it("always includes core before configured preloads", () => {
29
+ assert.deepEqual(resolveBaseSkillNames([]), [CORE_SKILL_NAME]);
30
+ assert.deepEqual(resolveBaseSkillNames(["prose-qa"]), [
31
+ CORE_SKILL_NAME,
32
+ "prose-qa",
33
+ ]);
34
+ assert.deepEqual(resolveBaseSkillNames([CORE_SKILL_NAME, "prose-qa"]), [
35
+ CORE_SKILL_NAME,
36
+ "prose-qa",
37
+ ]);
38
+ });
39
+ });
40
+ //# sourceMappingURL=loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/skills/loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,OAAO,CACR,CAAC;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;YACpD,eAAe;YACf,UAAU;SACX,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,EAAE;YACrE,eAAe;YACf,UAAU;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}