@post-print/agent-test 1.1.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +18 -66
  2. package/dist/cli.d.ts +2 -64
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +26 -691
  5. package/dist/cli.js.map +1 -1
  6. package/dist/compare-scenario.d.ts +1 -1
  7. package/dist/compare-scenario.d.ts.map +1 -1
  8. package/dist/compare-scenario.js +72 -75
  9. package/dist/compare-scenario.js.map +1 -1
  10. package/dist/failures.d.ts +5 -1
  11. package/dist/failures.d.ts.map +1 -1
  12. package/dist/failures.js +1 -1
  13. package/dist/failures.js.map +1 -1
  14. package/dist/host-login.d.ts +1 -26
  15. package/dist/host-login.d.ts.map +1 -1
  16. package/dist/host-login.js +1 -92
  17. package/dist/host-login.js.map +1 -1
  18. package/dist/index.d.ts +6 -28
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -26
  21. package/dist/index.js.map +1 -1
  22. package/dist/scenario-story.d.ts.map +1 -1
  23. package/dist/scenario-story.js +57 -39
  24. package/dist/scenario-story.js.map +1 -1
  25. package/dist/sdk/cli.d.ts +3 -0
  26. package/dist/sdk/cli.d.ts.map +1 -0
  27. package/dist/sdk/cli.js +20 -0
  28. package/dist/sdk/cli.js.map +1 -0
  29. package/dist/sdk/definitions.d.ts +22 -0
  30. package/dist/sdk/definitions.d.ts.map +1 -0
  31. package/dist/sdk/definitions.js +58 -0
  32. package/dist/sdk/definitions.js.map +1 -0
  33. package/dist/sdk/expect.d.ts +31 -0
  34. package/dist/sdk/expect.d.ts.map +1 -0
  35. package/dist/sdk/expect.js +68 -0
  36. package/dist/sdk/expect.js.map +1 -0
  37. package/dist/sdk/judge.d.ts +16 -0
  38. package/dist/sdk/judge.d.ts.map +1 -0
  39. package/dist/sdk/judge.js +82 -0
  40. package/dist/sdk/judge.js.map +1 -0
  41. package/dist/sdk/metrics.d.ts +3 -0
  42. package/dist/sdk/metrics.d.ts.map +1 -0
  43. package/dist/sdk/metrics.js +24 -0
  44. package/dist/sdk/metrics.js.map +1 -0
  45. package/dist/sdk/reporter.d.ts +12 -0
  46. package/dist/sdk/reporter.d.ts.map +1 -0
  47. package/dist/sdk/reporter.js +58 -0
  48. package/dist/sdk/reporter.js.map +1 -0
  49. package/dist/sdk/runtime.d.ts +33 -0
  50. package/dist/sdk/runtime.d.ts.map +1 -0
  51. package/dist/sdk/runtime.js +188 -0
  52. package/dist/sdk/runtime.js.map +1 -0
  53. package/dist/sdk/test.d.ts +27 -0
  54. package/dist/sdk/test.d.ts.map +1 -0
  55. package/dist/sdk/test.js +92 -0
  56. package/dist/sdk/test.js.map +1 -0
  57. package/dist/sdk/types.d.ts +75 -0
  58. package/dist/sdk/types.d.ts.map +1 -0
  59. package/dist/sdk/types.js +2 -0
  60. package/dist/sdk/types.js.map +1 -0
  61. package/dist/sdk/usage.d.ts +10 -0
  62. package/dist/sdk/usage.d.ts.map +1 -0
  63. package/dist/sdk/usage.js +13 -0
  64. package/dist/sdk/usage.js.map +1 -0
  65. package/dist/sdk/viewer-results.d.ts +43 -0
  66. package/dist/sdk/viewer-results.d.ts.map +1 -0
  67. package/dist/sdk/viewer-results.js +126 -0
  68. package/dist/sdk/viewer-results.js.map +1 -0
  69. package/dist/sdk/viewer.d.ts +11 -0
  70. package/dist/sdk/viewer.d.ts.map +1 -0
  71. package/dist/sdk/viewer.js +160 -0
  72. package/dist/sdk/viewer.js.map +1 -0
  73. package/dist/sdk/workspace.d.ts +33 -0
  74. package/dist/sdk/workspace.d.ts.map +1 -0
  75. package/dist/sdk/workspace.js +100 -0
  76. package/dist/sdk/workspace.js.map +1 -0
  77. package/dist/types.d.ts +4 -40
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/viewer/catalog.d.ts +2 -8
  80. package/dist/viewer/catalog.d.ts.map +1 -1
  81. package/dist/viewer/catalog.js +23 -128
  82. package/dist/viewer/catalog.js.map +1 -1
  83. package/dist/viewer/client.d.ts.map +1 -1
  84. package/dist/viewer/client.js +12 -12
  85. package/dist/viewer/client.js.map +1 -1
  86. package/dist/viewer/run-controller.d.ts +4 -2
  87. package/dist/viewer/run-controller.d.ts.map +1 -1
  88. package/dist/viewer/run-controller.js +297 -248
  89. package/dist/viewer/run-controller.js.map +1 -1
  90. package/dist/viewer/server.d.ts +4 -3
  91. package/dist/viewer/server.d.ts.map +1 -1
  92. package/dist/viewer/server.js +149 -112
  93. package/dist/viewer/server.js.map +1 -1
  94. package/dist/viewer/styles.d.ts +2 -0
  95. package/dist/viewer/styles.d.ts.map +1 -0
  96. package/dist/viewer/styles.js +444 -0
  97. package/dist/viewer/styles.js.map +1 -0
  98. package/dist/worker-pool.d.ts +5 -1
  99. package/dist/worker-pool.d.ts.map +1 -1
  100. package/dist/worker-pool.js +1 -1
  101. package/dist/worker-pool.js.map +1 -1
  102. package/package.json +7 -7
  103. package/dist/check.d.ts +0 -38
  104. package/dist/check.d.ts.map +0 -1
  105. package/dist/check.js +0 -169
  106. package/dist/check.js.map +0 -1
  107. package/dist/command-allowlist.d.ts +0 -9
  108. package/dist/command-allowlist.d.ts.map +0 -1
  109. package/dist/command-allowlist.js +0 -29
  110. package/dist/command-allowlist.js.map +0 -1
  111. package/dist/debug-bundle.d.ts +0 -81
  112. package/dist/debug-bundle.d.ts.map +0 -1
  113. package/dist/debug-bundle.js +0 -392
  114. package/dist/debug-bundle.js.map +0 -1
  115. package/dist/discover-suites.d.ts +0 -2
  116. package/dist/discover-suites.d.ts.map +0 -1
  117. package/dist/discover-suites.js +0 -19
  118. package/dist/discover-suites.js.map +0 -1
  119. package/dist/doctor.d.ts +0 -24
  120. package/dist/doctor.d.ts.map +0 -1
  121. package/dist/doctor.js +0 -272
  122. package/dist/doctor.js.map +0 -1
  123. package/dist/expect.d.ts +0 -59
  124. package/dist/expect.d.ts.map +0 -1
  125. package/dist/expect.js +0 -518
  126. package/dist/expect.js.map +0 -1
  127. package/dist/host-log.d.ts +0 -17
  128. package/dist/host-log.d.ts.map +0 -1
  129. package/dist/host-log.js +0 -154
  130. package/dist/host-log.js.map +0 -1
  131. package/dist/hosts.d.ts +0 -22
  132. package/dist/hosts.d.ts.map +0 -1
  133. package/dist/hosts.js +0 -84
  134. package/dist/hosts.js.map +0 -1
  135. package/dist/html-report.d.ts +0 -18
  136. package/dist/html-report.d.ts.map +0 -1
  137. package/dist/html-report.js +0 -1276
  138. package/dist/html-report.js.map +0 -1
  139. package/dist/live-isolation.d.ts +0 -82
  140. package/dist/live-isolation.d.ts.map +0 -1
  141. package/dist/live-isolation.js +0 -399
  142. package/dist/live-isolation.js.map +0 -1
  143. package/dist/live-timeout.d.ts +0 -11
  144. package/dist/live-timeout.d.ts.map +0 -1
  145. package/dist/live-timeout.js +0 -29
  146. package/dist/live-timeout.js.map +0 -1
  147. package/dist/load-adapters.d.ts +0 -13
  148. package/dist/load-adapters.d.ts.map +0 -1
  149. package/dist/load-adapters.js +0 -76
  150. package/dist/load-adapters.js.map +0 -1
  151. package/dist/load-suite.d.ts +0 -22
  152. package/dist/load-suite.d.ts.map +0 -1
  153. package/dist/load-suite.js +0 -154
  154. package/dist/load-suite.js.map +0 -1
  155. package/dist/mcp-config.d.ts +0 -13
  156. package/dist/mcp-config.d.ts.map +0 -1
  157. package/dist/mcp-config.js +0 -121
  158. package/dist/mcp-config.js.map +0 -1
  159. package/dist/preflight.d.ts +0 -3
  160. package/dist/preflight.d.ts.map +0 -1
  161. package/dist/preflight.js +0 -17
  162. package/dist/preflight.js.map +0 -1
  163. package/dist/progress.d.ts +0 -24
  164. package/dist/progress.d.ts.map +0 -1
  165. package/dist/progress.js +0 -111
  166. package/dist/progress.js.map +0 -1
  167. package/dist/record-trace.d.ts +0 -64
  168. package/dist/record-trace.d.ts.map +0 -1
  169. package/dist/record-trace.js +0 -124
  170. package/dist/record-trace.js.map +0 -1
  171. package/dist/report-preview-server.d.ts +0 -2
  172. package/dist/report-preview-server.d.ts.map +0 -1
  173. package/dist/report-preview-server.js +0 -24
  174. package/dist/report-preview-server.js.map +0 -1
  175. package/dist/report-preview.d.ts +0 -35
  176. package/dist/report-preview.d.ts.map +0 -1
  177. package/dist/report-preview.js +0 -205
  178. package/dist/report-preview.js.map +0 -1
  179. package/dist/run-suite.d.ts +0 -139
  180. package/dist/run-suite.d.ts.map +0 -1
  181. package/dist/run-suite.js +0 -1669
  182. package/dist/run-suite.js.map +0 -1
  183. package/dist/scenario-finalizer.d.ts +0 -27
  184. package/dist/scenario-finalizer.d.ts.map +0 -1
  185. package/dist/scenario-finalizer.js +0 -39
  186. package/dist/scenario-finalizer.js.map +0 -1
  187. package/dist/scenario-retry.d.ts +0 -15
  188. package/dist/scenario-retry.d.ts.map +0 -1
  189. package/dist/scenario-retry.js +0 -52
  190. package/dist/scenario-retry.js.map +0 -1
  191. package/dist/scenario-seed.d.ts +0 -13
  192. package/dist/scenario-seed.d.ts.map +0 -1
  193. package/dist/scenario-seed.js +0 -72
  194. package/dist/scenario-seed.js.map +0 -1
  195. package/dist/suite-summary.d.ts +0 -16
  196. package/dist/suite-summary.d.ts.map +0 -1
  197. package/dist/suite-summary.js +0 -218
  198. package/dist/suite-summary.js.map +0 -1
  199. package/dist/theme.d.ts +0 -96
  200. package/dist/theme.d.ts.map +0 -1
  201. package/dist/theme.js +0 -446
  202. package/dist/theme.js.map +0 -1
  203. package/dist/validate-seeds.d.ts +0 -20
  204. package/dist/validate-seeds.d.ts.map +0 -1
  205. package/dist/validate-seeds.js +0 -72
  206. package/dist/validate-seeds.js.map +0 -1
  207. package/dist/validate-suite.d.ts +0 -24
  208. package/dist/validate-suite.d.ts.map +0 -1
  209. package/dist/validate-suite.js +0 -542
  210. package/dist/validate-suite.js.map +0 -1
  211. package/dist/viewer/cli.d.ts +0 -17
  212. package/dist/viewer/cli.d.ts.map +0 -1
  213. package/dist/viewer/cli.js +0 -38
  214. package/dist/viewer/cli.js.map +0 -1
  215. package/dist/viewer/compare-metrics.d.ts +0 -30
  216. package/dist/viewer/compare-metrics.d.ts.map +0 -1
  217. package/dist/viewer/compare-metrics.js +0 -101
  218. package/dist/viewer/compare-metrics.js.map +0 -1
  219. package/dist/viewer/context-files.d.ts +0 -8
  220. package/dist/viewer/context-files.d.ts.map +0 -1
  221. package/dist/viewer/context-files.js +0 -57
  222. package/dist/viewer/context-files.js.map +0 -1
  223. package/dist/viewer/emit.d.ts +0 -7
  224. package/dist/viewer/emit.d.ts.map +0 -1
  225. package/dist/viewer/emit.js +0 -25
  226. package/dist/viewer/emit.js.map +0 -1
  227. package/dist/viewer/live-runner.d.ts +0 -27
  228. package/dist/viewer/live-runner.d.ts.map +0 -1
  229. package/dist/viewer/live-runner.js +0 -166
  230. package/dist/viewer/live-runner.js.map +0 -1
  231. package/dist/viewer/session-server.d.ts +0 -2
  232. package/dist/viewer/session-server.d.ts.map +0 -1
  233. package/dist/viewer/session-server.js +0 -71
  234. package/dist/viewer/session-server.js.map +0 -1
  235. package/dist/warnings.d.ts +0 -3
  236. package/dist/warnings.d.ts.map +0 -1
  237. package/dist/warnings.js +0 -13
  238. package/dist/warnings.js.map +0 -1
package/dist/doctor.js DELETED
@@ -1,272 +0,0 @@
1
- import { accessSync, constants } from "node:fs";
2
- import { createRequire } from "node:module";
3
- import { dirname, join } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { CLAUDE_AUTH_MODE_ENV, CURSOR_AUTH_MODE_ENV, CURSOR_SDK_LOGIN_HINT, DEFAULT_HOST_AUTH_MODE, getHealthStatus, getProcessAuthMode, getRegisteredAdapter, HEALTH_CHECK_PATH, hasCursorSdkAuthFile, isBuiltinAgentHost, OPENAI_AUTH_MODE_ENV, resolveClaudeAuthMode, resolveCursorAuthMode, resolveOpenaiAuthMode, } from "@post-print/agent-harness";
6
- function binOnPath(override, names) {
7
- if (override) {
8
- try {
9
- accessSync(override, constants.X_OK);
10
- return true;
11
- }
12
- catch {
13
- try {
14
- accessSync(override, constants.R_OK);
15
- return true;
16
- }
17
- catch {
18
- return false;
19
- }
20
- }
21
- }
22
- const pathEnv = process.env.PATH ?? "";
23
- const sep = process.platform === "win32" ? ";" : ":";
24
- for (const dir of pathEnv.split(sep)) {
25
- if (!dir) {
26
- continue;
27
- }
28
- for (const name of names) {
29
- try {
30
- accessSync(join(dir, name), constants.X_OK);
31
- return true;
32
- }
33
- catch {
34
- try {
35
- accessSync(join(dir, name), constants.R_OK);
36
- return true;
37
- }
38
- catch {
39
- // continue
40
- }
41
- }
42
- }
43
- }
44
- return false;
45
- }
46
- function claudeBinOnPath() {
47
- return binOnPath(process.env.CLAUDE_CODE_BIN?.trim(), process.platform === "win32" ? ["claude.exe", "claude.cmd", "claude"] : ["claude"]);
48
- }
49
- /** Local diagnostics for agent-test install and live-run readiness. */
50
- export function runDoctor(options) {
51
- const messages = [];
52
- const nodeMajor = Number(process.versions.node.split(".")[0] ?? 0);
53
- const nodeOk = nodeMajor >= 22;
54
- if (!nodeOk) {
55
- messages.push(`Node ${process.versions.node} is below the required >=22`);
56
- }
57
- else {
58
- messages.push(`Node ${process.versions.node}: OK`);
59
- }
60
- const cliPath = options?.cliPath ?? join(dirname(fileURLToPath(import.meta.url)), "cli.js");
61
- const cliCandidates = [cliPath];
62
- if (cliPath.endsWith(".js")) {
63
- cliCandidates.push(`${cliPath.slice(0, -3)}.ts`);
64
- }
65
- let cliPresent = false;
66
- let resolvedCli = cliPath;
67
- for (const candidate of cliCandidates) {
68
- try {
69
- accessSync(candidate, constants.R_OK);
70
- cliPresent = true;
71
- resolvedCli = candidate;
72
- break;
73
- }
74
- catch {
75
- // try next
76
- }
77
- }
78
- if (cliPresent) {
79
- messages.push(`CLI entry: ${resolvedCli}`);
80
- }
81
- else {
82
- messages.push(`CLI entry missing at ${cliPath} (run bun run build)`);
83
- }
84
- const require = createRequire(import.meta.url);
85
- try {
86
- require.resolve("@post-print/agent-harness");
87
- messages.push("@post-print/agent-harness: resolvable");
88
- }
89
- catch {
90
- messages.push("@post-print/agent-harness not resolvable");
91
- }
92
- let cursorSdkPresent = false;
93
- try {
94
- require.resolve("@cursor/sdk");
95
- cursorSdkPresent = true;
96
- messages.push("@cursor/sdk: installed (direct Cursor runs ready)");
97
- }
98
- catch {
99
- messages.push("@cursor/sdk not installed — required for Cursor runs (npm i -D @cursor/sdk)");
100
- }
101
- const cursorApiKeySet = Boolean(process.env.CURSOR_API_KEY?.trim());
102
- if (cursorApiKeySet) {
103
- messages.push("CURSOR_API_KEY: set");
104
- }
105
- else {
106
- messages.push("CURSOR_API_KEY unset (required for --auth-mode api-key)");
107
- }
108
- const cursorSdkAuthFilePresent = hasCursorSdkAuthFile();
109
- if (cursorSdkAuthFilePresent) {
110
- messages.push("Cursor SDK login file: present (~/.cursor/sdk/auth.json)");
111
- }
112
- else {
113
- messages.push(`Cursor SDK login file: missing (${CURSOR_SDK_LOGIN_HINT})`);
114
- }
115
- const cursorAuthMode = process.env[CURSOR_AUTH_MODE_ENV]?.trim();
116
- if (cursorAuthMode === "api-key" || cursorAuthMode === "subscription") {
117
- messages.push(`${CURSOR_AUTH_MODE_ENV}: ${cursorAuthMode}`);
118
- }
119
- else if (cursorAuthMode) {
120
- messages.push(`${CURSOR_AUTH_MODE_ENV}="${cursorAuthMode}" invalid (api-key or subscription)`);
121
- }
122
- else {
123
- const processMode = getProcessAuthMode();
124
- messages.push(processMode
125
- ? `auth mode: ${processMode} (--auth-mode)`
126
- : `auth mode: ${DEFAULT_HOST_AUTH_MODE} (default; pass --auth-mode api-key to use a key)`);
127
- }
128
- const anthropicApiKeySet = Boolean(process.env.ANTHROPIC_API_KEY?.trim());
129
- if (anthropicApiKeySet) {
130
- messages.push("ANTHROPIC_API_KEY: set");
131
- }
132
- else {
133
- messages.push("ANTHROPIC_API_KEY unset (required for CLAUDE_AUTH_MODE=api-key)");
134
- }
135
- const claudeAuthMode = process.env[CLAUDE_AUTH_MODE_ENV]?.trim();
136
- if (claudeAuthMode === "api-key" || claudeAuthMode === "subscription") {
137
- messages.push(`${CLAUDE_AUTH_MODE_ENV}: ${claudeAuthMode}`);
138
- }
139
- else if (claudeAuthMode) {
140
- messages.push(`${CLAUDE_AUTH_MODE_ENV}="${claudeAuthMode}" invalid (api-key or subscription)`);
141
- }
142
- else {
143
- const processMode = getProcessAuthMode();
144
- messages.push(processMode
145
- ? `auth mode: ${processMode} (--auth-mode)`
146
- : `auth mode: ${DEFAULT_HOST_AUTH_MODE} (default; pass --auth-mode api-key to use ANTHROPIC_API_KEY)`);
147
- }
148
- const claudeBinPresent = claudeBinOnPath();
149
- if (claudeBinPresent) {
150
- messages.push(process.env.CLAUDE_CODE_BIN?.trim()
151
- ? `Claude Code binary: ${process.env.CLAUDE_CODE_BIN.trim()}`
152
- : "Claude Code binary: claude (on PATH)");
153
- }
154
- else {
155
- messages.push("Claude Code binary not found (install Claude Code CLI or set CLAUDE_CODE_BIN for --host claude)");
156
- }
157
- const openaiApiKeySet = Boolean(process.env.OPENAI_API_KEY?.trim() || process.env.CODEX_API_KEY?.trim());
158
- if (openaiApiKeySet) {
159
- messages.push("OPENAI_API_KEY or CODEX_API_KEY: set");
160
- }
161
- else {
162
- messages.push("OPENAI_API_KEY and CODEX_API_KEY unset (required for OPENAI_AUTH_MODE=api-key)");
163
- }
164
- const openaiAuthMode = process.env[OPENAI_AUTH_MODE_ENV]?.trim();
165
- if (openaiAuthMode === "api-key" || openaiAuthMode === "subscription") {
166
- messages.push(`${OPENAI_AUTH_MODE_ENV}: ${openaiAuthMode}`);
167
- }
168
- else if (openaiAuthMode) {
169
- messages.push(`${OPENAI_AUTH_MODE_ENV}="${openaiAuthMode}" invalid (api-key or subscription)`);
170
- }
171
- else {
172
- const processMode = getProcessAuthMode();
173
- messages.push(processMode
174
- ? `auth mode: ${processMode} (--auth-mode)`
175
- : `auth mode: ${DEFAULT_HOST_AUTH_MODE} (default; pass --auth-mode api-key to use a Codex key)`);
176
- }
177
- const openaiBinPresent = binOnPath(process.env.CODEX_BIN?.trim(), process.platform === "win32" ? ["codex.exe", "codex.cmd", "codex"] : ["codex"]);
178
- if (openaiBinPresent) {
179
- messages.push(process.env.CODEX_BIN?.trim()
180
- ? `OpenAI Codex binary: ${process.env.CODEX_BIN.trim()}`
181
- : "OpenAI Codex binary: codex (on PATH)");
182
- }
183
- else {
184
- messages.push("OpenAI Codex binary not found (install Codex CLI or set CODEX_BIN for --host openai)");
185
- }
186
- const cursorLiveReady = missingAgentAuth("cursor") === undefined;
187
- const claudeLiveReady = missingAgentAuth("claude") === undefined;
188
- const openaiLiveReady = missingAgentAuth("openai") === undefined;
189
- const liveReady = cursorLiveReady || claudeLiveReady || openaiLiveReady;
190
- const health = getHealthStatus();
191
- const ok = nodeOk && cliPresent && health.ok;
192
- if (ok) {
193
- messages.push(`doctor ${HEALTH_CHECK_PATH}: package-ready`);
194
- }
195
- if (liveReady) {
196
- messages.push("doctor host: ready for at least one host");
197
- }
198
- else {
199
- messages.push("doctor host: not ready (no host credentials)");
200
- }
201
- return {
202
- ok,
203
- nodeMajor,
204
- nodeOk,
205
- cliPresent,
206
- cursorApiKeySet,
207
- cursorSdkAuthFilePresent,
208
- cursorSdkPresent,
209
- anthropicApiKeySet,
210
- claudeBinPresent,
211
- openaiApiKeySet,
212
- openaiBinPresent,
213
- liveReady,
214
- health: HEALTH_CHECK_PATH,
215
- messages,
216
- };
217
- }
218
- /** Missing credential or binary for a live host adapter. Undefined when that host can run. */
219
- export function missingAgentAuth(host) {
220
- if (!isBuiltinAgentHost(host)) {
221
- const adapter = getRegisteredAdapter(host);
222
- if (!adapter) {
223
- return `Unknown host "${host}". Register it with registerHostAdapter() or --adapter.`;
224
- }
225
- return adapter.missingAuth?.();
226
- }
227
- if (host === "claude") {
228
- try {
229
- const authMode = resolveClaudeAuthMode();
230
- if (authMode === "api-key" && !process.env.ANTHROPIC_API_KEY?.trim()) {
231
- return "--auth-mode api-key requires ANTHROPIC_API_KEY";
232
- }
233
- }
234
- catch (error) {
235
- return error instanceof Error ? error.message : String(error);
236
- }
237
- if (!claudeBinOnPath()) {
238
- return "Claude Code binary not found (install Claude Code CLI or set CLAUDE_CODE_BIN for --host claude)";
239
- }
240
- return undefined;
241
- }
242
- if (host === "openai") {
243
- try {
244
- resolveOpenaiAuthMode();
245
- }
246
- catch (error) {
247
- return error instanceof Error ? error.message : String(error);
248
- }
249
- if (!binOnPath(process.env.CODEX_BIN?.trim(), process.platform === "win32" ? ["codex.exe", "codex.cmd", "codex"] : ["codex"])) {
250
- return "OpenAI Codex binary not found (install Codex CLI or set CODEX_BIN for --host openai)";
251
- }
252
- return undefined;
253
- }
254
- try {
255
- const authMode = resolveCursorAuthMode();
256
- if (authMode === "subscription" && !hasCursorSdkAuthFile()) {
257
- return CURSOR_SDK_LOGIN_HINT;
258
- }
259
- }
260
- catch (error) {
261
- return error instanceof Error ? error.message : String(error);
262
- }
263
- const require = createRequire(import.meta.url);
264
- try {
265
- require.resolve("@cursor/sdk");
266
- }
267
- catch {
268
- return "@cursor/sdk not installed — required for Cursor runs (npm i -D @cursor/sdk)";
269
- }
270
- return undefined;
271
- }
272
- //# sourceMappingURL=doctor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/expect.d.ts DELETED
@@ -1,59 +0,0 @@
1
- import { type AgentTrace, type SkillContextMode } from "@post-print/agent-harness";
2
- import type { AssertionFailure, ScenarioRubric } from "./types.js";
3
- export interface RubricAssertOptions {
4
- /** How skills were loaded for this run — affects mustInvokeSkill strictness. */
5
- skillsMode?: SkillContextMode;
6
- }
7
- export declare class TraceAssertion {
8
- private readonly trace;
9
- private failures;
10
- constructor(trace: AgentTrace, _options?: RubricAssertOptions);
11
- get ok(): boolean;
12
- get errors(): AssertionFailure[];
13
- private messageText;
14
- /** Assistant reply text only. Tool results, commands, and artifacts do not count. */
15
- private replyHaystack;
16
- private assertionHaystack;
17
- /** mustNot ignores tool results so a required Read of a source file does not fail. */
18
- private mustNotHaystack;
19
- private patternHaystack;
20
- private push;
21
- toHaveTier(tier: ScenarioRubric["tier"]): this;
22
- /** Hands-on chat: tier from structured routing or one-line announce in transcript. */
23
- toHaveHandsOnTier(tier: ScenarioRubric["tier"]): this;
24
- toHaveReviewDepth(depth: ScenarioRubric["reviewDepth"]): this;
25
- toHaveRunCommand(fragment: string): this;
26
- toHaveRunCommandSuccessfully(fragment: string): this;
27
- /** When set, every shell statement must match one allowlist fragment. */
28
- toHaveAllowedCommands(allowlist: string[] | undefined): this;
29
- /**
30
- * Assert a tool was called. Spec is a name substring, or `name:fragment`
31
- * where fragment must appear in JSON args or the tool result.
32
- */
33
- toHaveCalledTool(spec: string): this;
34
- toHaveCalledToolsInOrder(specs: string[]): this;
35
- toHaveNotCalledTool(spec: string): this;
36
- /** Substring must appear in Read-family args or a Shell/Bash path access. */
37
- toHaveReadPath(fragment: string): this;
38
- /**
39
- * Forbidden path fragment must not appear in a *successful* Read-family tool
40
- * call. Miss / ENOENT attempts do not fail — null-arm forage seals delete
41
- * answer keys, and agents often probe the path after seeing it in suite JSON.
42
- */
43
- toHaveNotReadPath(fragment: string): this;
44
- toIncludeRoutingBlock(): this;
45
- /** Hands-off PR: ## Routing must appear before the first tool call. */
46
- toHaveRoutingBlockBeforeTools(): this;
47
- /** Hands-on chat: tier announce must appear before the first tool call. */
48
- toHaveHandsOnTierBeforeTools(tier: ScenarioRubric["tier"]): this;
49
- toHaveInvokedSkill(skillName: string): this;
50
- private skillWasInvoked;
51
- /** Which full-mode fallback pattern matched (for mustNotInvokeSkill evidence). */
52
- private skillMatchHint;
53
- toHaveNotInvokedSkill(skillName: string): this;
54
- mustInclude(text: string): this;
55
- mustNotInclude(text: string): this;
56
- }
57
- export declare function expectTrace(trace: AgentTrace, options?: RubricAssertOptions): TraceAssertion;
58
- export declare function assertRubric(trace: AgentTrace, rubric: ScenarioRubric, options?: RubricAssertOptions): AssertionFailure[];
59
- //# sourceMappingURL=expect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,UAAU,EAMf,KAAK,gBAAgB,EACrB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IACnC,gFAAgF;IAChF,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAqDD,qBAAa,cAAc;IAIzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHvB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,YACkB,KAAK,EAAE,UAAU,EAClC,QAAQ,GAAE,mBAAwB,EAC/B;IAEJ,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,IAAI,MAAM,IAAI,gBAAgB,EAAE,CAE/B;IAED,OAAO,CAAC,WAAW;IAInB,qFAAqF;IACrF,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IAezB,sFAAsF;IACtF,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,IAAI;IAIZ,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAe7C;IAED,sFAAsF;IACtF,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAgBpD;IAED,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAe5D;IAED,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiBvC;IAED,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAyBnD;IAED,yEAAyE;IACzE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAiB3D;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnC;IAED,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAoB9C;IAED,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKtC;IAED,6EAA6E;IAC7E,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAYrC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASxC;IAED,qBAAqB,IAAI,IAAI,CAe5B;IAED,uEAAuE;IACvE,6BAA6B,IAAI,IAAI,CASpC;IAED,2EAA2E;IAC3E,4BAA4B,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAY/D;IAED,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAW1C;IAED,OAAO,CAAC,eAAe;IASvB,kFAAkF;IAClF,OAAO,CAAC,cAAc;IAatB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAU7C;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAW9B;IAED,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUjC;CACD;AAmKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,cAAc,CAE5F;AAED,wBAAgB,YAAY,CAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,gBAAgB,EAAE,CAkDpB"}