praxis-agent 0.1.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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +534 -0
  3. package/dist/application/background-agent-manager.d.ts +66 -0
  4. package/dist/application/background-agent-manager.d.ts.map +1 -0
  5. package/dist/application/background-agent-manager.js +362 -0
  6. package/dist/application/background-agent-manager.js.map +1 -0
  7. package/dist/application/background-bash-manager.d.ts +54 -0
  8. package/dist/application/background-bash-manager.d.ts.map +1 -0
  9. package/dist/application/background-bash-manager.js +354 -0
  10. package/dist/application/background-bash-manager.js.map +1 -0
  11. package/dist/application/background-task-id.d.ts +5 -0
  12. package/dist/application/background-task-id.d.ts.map +1 -0
  13. package/dist/application/background-task-id.js +25 -0
  14. package/dist/application/background-task-id.js.map +1 -0
  15. package/dist/application/claude-project-purge.d.ts +50 -0
  16. package/dist/application/claude-project-purge.d.ts.map +1 -0
  17. package/dist/application/claude-project-purge.js +459 -0
  18. package/dist/application/claude-project-purge.js.map +1 -0
  19. package/dist/application/managed-worktree.d.ts +15 -0
  20. package/dist/application/managed-worktree.d.ts.map +1 -0
  21. package/dist/application/managed-worktree.js +127 -0
  22. package/dist/application/managed-worktree.js.map +1 -0
  23. package/dist/application/model-compactor.d.ts +8 -0
  24. package/dist/application/model-compactor.d.ts.map +1 -0
  25. package/dist/application/model-compactor.js +70 -0
  26. package/dist/application/model-compactor.js.map +1 -0
  27. package/dist/application/scheduled-prompt-manager.d.ts +69 -0
  28. package/dist/application/scheduled-prompt-manager.d.ts.map +1 -0
  29. package/dist/application/scheduled-prompt-manager.js +387 -0
  30. package/dist/application/scheduled-prompt-manager.js.map +1 -0
  31. package/dist/application/session-service.d.ts +142 -0
  32. package/dist/application/session-service.d.ts.map +1 -0
  33. package/dist/application/session-service.js +1690 -0
  34. package/dist/application/session-service.js.map +1 -0
  35. package/dist/application/session-worktree.d.ts +55 -0
  36. package/dist/application/session-worktree.d.ts.map +1 -0
  37. package/dist/application/session-worktree.js +311 -0
  38. package/dist/application/session-worktree.js.map +1 -0
  39. package/dist/application/subagent-service.d.ts +98 -0
  40. package/dist/application/subagent-service.d.ts.map +1 -0
  41. package/dist/application/subagent-service.js +1305 -0
  42. package/dist/application/subagent-service.js.map +1 -0
  43. package/dist/application/tool-use-summary.d.ts +8 -0
  44. package/dist/application/tool-use-summary.d.ts.map +1 -0
  45. package/dist/application/tool-use-summary.js +53 -0
  46. package/dist/application/tool-use-summary.js.map +1 -0
  47. package/dist/application/top-level-agent-manager.d.ts +58 -0
  48. package/dist/application/top-level-agent-manager.d.ts.map +1 -0
  49. package/dist/application/top-level-agent-manager.js +907 -0
  50. package/dist/application/top-level-agent-manager.js.map +1 -0
  51. package/dist/application/workflow-manager.d.ts +61 -0
  52. package/dist/application/workflow-manager.d.ts.map +1 -0
  53. package/dist/application/workflow-manager.js +582 -0
  54. package/dist/application/workflow-manager.js.map +1 -0
  55. package/dist/application/workflow-meta.d.ts +18 -0
  56. package/dist/application/workflow-meta.d.ts.map +1 -0
  57. package/dist/application/workflow-meta.js +146 -0
  58. package/dist/application/workflow-meta.js.map +1 -0
  59. package/dist/application/workflow-runtime.d.ts +29 -0
  60. package/dist/application/workflow-runtime.d.ts.map +1 -0
  61. package/dist/application/workflow-runtime.js +176 -0
  62. package/dist/application/workflow-runtime.js.map +1 -0
  63. package/dist/application/workflow-worktree.d.ts +9 -0
  64. package/dist/application/workflow-worktree.d.ts.map +1 -0
  65. package/dist/application/workflow-worktree.js +11 -0
  66. package/dist/application/workflow-worktree.js.map +1 -0
  67. package/dist/cli/agents-dashboard.d.ts +37 -0
  68. package/dist/cli/agents-dashboard.d.ts.map +1 -0
  69. package/dist/cli/agents-dashboard.js +408 -0
  70. package/dist/cli/agents-dashboard.js.map +1 -0
  71. package/dist/cli/controls.d.ts +15 -0
  72. package/dist/cli/controls.d.ts.map +1 -0
  73. package/dist/cli/controls.js +219 -0
  74. package/dist/cli/controls.js.map +1 -0
  75. package/dist/cli/debug.d.ts +13 -0
  76. package/dist/cli/debug.d.ts.map +1 -0
  77. package/dist/cli/debug.js +37 -0
  78. package/dist/cli/debug.js.map +1 -0
  79. package/dist/cli/interactive.d.ts +63 -0
  80. package/dist/cli/interactive.d.ts.map +1 -0
  81. package/dist/cli/interactive.js +600 -0
  82. package/dist/cli/interactive.js.map +1 -0
  83. package/dist/cli/protocol.d.ts +251 -0
  84. package/dist/cli/protocol.d.ts.map +1 -0
  85. package/dist/cli/protocol.js +2146 -0
  86. package/dist/cli/protocol.js.map +1 -0
  87. package/dist/cli.d.ts +116 -0
  88. package/dist/cli.d.ts.map +1 -0
  89. package/dist/cli.js +3901 -0
  90. package/dist/cli.js.map +1 -0
  91. package/dist/compatibility/claude/compaction.d.ts +19 -0
  92. package/dist/compatibility/claude/compaction.d.ts.map +1 -0
  93. package/dist/compatibility/claude/compaction.js +82 -0
  94. package/dist/compatibility/claude/compaction.js.map +1 -0
  95. package/dist/compatibility/claude/context.d.ts +24 -0
  96. package/dist/compatibility/claude/context.d.ts.map +1 -0
  97. package/dist/compatibility/claude/context.js +92 -0
  98. package/dist/compatibility/claude/context.js.map +1 -0
  99. package/dist/compatibility/claude/dynamic-context.d.ts +20 -0
  100. package/dist/compatibility/claude/dynamic-context.d.ts.map +1 -0
  101. package/dist/compatibility/claude/dynamic-context.js +168 -0
  102. package/dist/compatibility/claude/dynamic-context.js.map +1 -0
  103. package/dist/compatibility/claude/file-history.d.ts +14 -0
  104. package/dist/compatibility/claude/file-history.d.ts.map +1 -0
  105. package/dist/compatibility/claude/file-history.js +340 -0
  106. package/dist/compatibility/claude/file-history.js.map +1 -0
  107. package/dist/compatibility/claude/file-resources.d.ts +28 -0
  108. package/dist/compatibility/claude/file-resources.d.ts.map +1 -0
  109. package/dist/compatibility/claude/file-resources.js +168 -0
  110. package/dist/compatibility/claude/file-resources.js.map +1 -0
  111. package/dist/compatibility/claude/fork.d.ts +9 -0
  112. package/dist/compatibility/claude/fork.d.ts.map +1 -0
  113. package/dist/compatibility/claude/fork.js +225 -0
  114. package/dist/compatibility/claude/fork.js.map +1 -0
  115. package/dist/compatibility/claude/history.d.ts +4 -0
  116. package/dist/compatibility/claude/history.d.ts.map +1 -0
  117. package/dist/compatibility/claude/history.js +86 -0
  118. package/dist/compatibility/claude/history.js.map +1 -0
  119. package/dist/compatibility/claude/ownership.d.ts +87 -0
  120. package/dist/compatibility/claude/ownership.d.ts.map +1 -0
  121. package/dist/compatibility/claude/ownership.js +100 -0
  122. package/dist/compatibility/claude/ownership.js.map +1 -0
  123. package/dist/compatibility/claude/paths.d.ts +17 -0
  124. package/dist/compatibility/claude/paths.d.ts.map +1 -0
  125. package/dist/compatibility/claude/paths.js +54 -0
  126. package/dist/compatibility/claude/paths.js.map +1 -0
  127. package/dist/compatibility/claude/pr-links.d.ts +25 -0
  128. package/dist/compatibility/claude/pr-links.d.ts.map +1 -0
  129. package/dist/compatibility/claude/pr-links.js +80 -0
  130. package/dist/compatibility/claude/pr-links.js.map +1 -0
  131. package/dist/compatibility/claude/projection.d.ts +11 -0
  132. package/dist/compatibility/claude/projection.d.ts.map +1 -0
  133. package/dist/compatibility/claude/projection.js +325 -0
  134. package/dist/compatibility/claude/projection.js.map +1 -0
  135. package/dist/compatibility/claude/schema.d.ts +18 -0
  136. package/dist/compatibility/claude/schema.d.ts.map +1 -0
  137. package/dist/compatibility/claude/schema.js +983 -0
  138. package/dist/compatibility/claude/schema.js.map +1 -0
  139. package/dist/compatibility/claude/shared-resources.d.ts +51 -0
  140. package/dist/compatibility/claude/shared-resources.d.ts.map +1 -0
  141. package/dist/compatibility/claude/shared-resources.js +382 -0
  142. package/dist/compatibility/claude/shared-resources.js.map +1 -0
  143. package/dist/compatibility/claude/sidechain.d.ts +50 -0
  144. package/dist/compatibility/claude/sidechain.d.ts.map +1 -0
  145. package/dist/compatibility/claude/sidechain.js +90 -0
  146. package/dist/compatibility/claude/sidechain.js.map +1 -0
  147. package/dist/compatibility/claude/tool-links.d.ts +13 -0
  148. package/dist/compatibility/claude/tool-links.d.ts.map +1 -0
  149. package/dist/compatibility/claude/tool-links.js +61 -0
  150. package/dist/compatibility/claude/tool-links.js.map +1 -0
  151. package/dist/compatibility/claude/translation.d.ts +71 -0
  152. package/dist/compatibility/claude/translation.d.ts.map +1 -0
  153. package/dist/compatibility/claude/translation.js +443 -0
  154. package/dist/compatibility/claude/translation.js.map +1 -0
  155. package/dist/compatibility/claude/workflow-replay.d.ts +10 -0
  156. package/dist/compatibility/claude/workflow-replay.d.ts.map +1 -0
  157. package/dist/compatibility/claude/workflow-replay.js +66 -0
  158. package/dist/compatibility/claude/workflow-replay.js.map +1 -0
  159. package/dist/compatibility/claude/workflow.d.ts +33 -0
  160. package/dist/compatibility/claude/workflow.d.ts.map +1 -0
  161. package/dist/compatibility/claude/workflow.js +76 -0
  162. package/dist/compatibility/claude/workflow.js.map +1 -0
  163. package/dist/core/compaction.d.ts +16 -0
  164. package/dist/core/compaction.d.ts.map +1 -0
  165. package/dist/core/compaction.js +2 -0
  166. package/dist/core/compaction.js.map +1 -0
  167. package/dist/core/context-budget.d.ts +28 -0
  168. package/dist/core/context-budget.d.ts.map +1 -0
  169. package/dist/core/context-budget.js +108 -0
  170. package/dist/core/context-budget.js.map +1 -0
  171. package/dist/core/context.d.ts +16 -0
  172. package/dist/core/context.d.ts.map +1 -0
  173. package/dist/core/context.js +13 -0
  174. package/dist/core/context.js.map +1 -0
  175. package/dist/core/runtime.d.ts +394 -0
  176. package/dist/core/runtime.d.ts.map +1 -0
  177. package/dist/core/runtime.js +507 -0
  178. package/dist/core/runtime.js.map +1 -0
  179. package/dist/core/usage.d.ts +26 -0
  180. package/dist/core/usage.d.ts.map +1 -0
  181. package/dist/core/usage.js +133 -0
  182. package/dist/core/usage.js.map +1 -0
  183. package/dist/extensions/claude-extension-tools.d.ts +16 -0
  184. package/dist/extensions/claude-extension-tools.d.ts.map +1 -0
  185. package/dist/extensions/claude-extension-tools.js +78 -0
  186. package/dist/extensions/claude-extension-tools.js.map +1 -0
  187. package/dist/extensions/claude-extensions.d.ts +41 -0
  188. package/dist/extensions/claude-extensions.d.ts.map +1 -0
  189. package/dist/extensions/claude-extensions.js +270 -0
  190. package/dist/extensions/claude-extensions.js.map +1 -0
  191. package/dist/hooks/claude-hook-tools.d.ts +26 -0
  192. package/dist/hooks/claude-hook-tools.d.ts.map +1 -0
  193. package/dist/hooks/claude-hook-tools.js +129 -0
  194. package/dist/hooks/claude-hook-tools.js.map +1 -0
  195. package/dist/hooks/claude-hooks.d.ts +87 -0
  196. package/dist/hooks/claude-hooks.d.ts.map +1 -0
  197. package/dist/hooks/claude-hooks.js +411 -0
  198. package/dist/hooks/claude-hooks.js.map +1 -0
  199. package/dist/maintenance/doctor.d.ts +33 -0
  200. package/dist/maintenance/doctor.d.ts.map +1 -0
  201. package/dist/maintenance/doctor.js +391 -0
  202. package/dist/maintenance/doctor.js.map +1 -0
  203. package/dist/maintenance/self-update.d.ts +31 -0
  204. package/dist/maintenance/self-update.d.ts.map +1 -0
  205. package/dist/maintenance/self-update.js +81 -0
  206. package/dist/maintenance/self-update.js.map +1 -0
  207. package/dist/mcp/claude-mcp-management.d.ts +28 -0
  208. package/dist/mcp/claude-mcp-management.d.ts.map +1 -0
  209. package/dist/mcp/claude-mcp-management.js +169 -0
  210. package/dist/mcp/claude-mcp-management.js.map +1 -0
  211. package/dist/mcp/claude-mcp-oauth.d.ts +113 -0
  212. package/dist/mcp/claude-mcp-oauth.d.ts.map +1 -0
  213. package/dist/mcp/claude-mcp-oauth.js +1053 -0
  214. package/dist/mcp/claude-mcp-oauth.js.map +1 -0
  215. package/dist/mcp/claude-mcp-tools.d.ts +98 -0
  216. package/dist/mcp/claude-mcp-tools.d.ts.map +1 -0
  217. package/dist/mcp/claude-mcp-tools.js +1246 -0
  218. package/dist/mcp/claude-mcp-tools.js.map +1 -0
  219. package/dist/mcp/praxis-mcp-server.d.ts +35 -0
  220. package/dist/mcp/praxis-mcp-server.d.ts.map +1 -0
  221. package/dist/mcp/praxis-mcp-server.js +520 -0
  222. package/dist/mcp/praxis-mcp-server.js.map +1 -0
  223. package/dist/permissions/claude-auto-classifier.d.ts +20 -0
  224. package/dist/permissions/claude-auto-classifier.d.ts.map +1 -0
  225. package/dist/permissions/claude-auto-classifier.js +140 -0
  226. package/dist/permissions/claude-auto-classifier.js.map +1 -0
  227. package/dist/permissions/claude-permission-resolver.d.ts +30 -0
  228. package/dist/permissions/claude-permission-resolver.d.ts.map +1 -0
  229. package/dist/permissions/claude-permission-resolver.js +334 -0
  230. package/dist/permissions/claude-permission-resolver.js.map +1 -0
  231. package/dist/persistence/claude-job-store.d.ts +68 -0
  232. package/dist/persistence/claude-job-store.d.ts.map +1 -0
  233. package/dist/persistence/claude-job-store.js +311 -0
  234. package/dist/persistence/claude-job-store.js.map +1 -0
  235. package/dist/persistence/claude-scheduled-task-store.d.ts +29 -0
  236. package/dist/persistence/claude-scheduled-task-store.d.ts.map +1 -0
  237. package/dist/persistence/claude-scheduled-task-store.js +163 -0
  238. package/dist/persistence/claude-scheduled-task-store.js.map +1 -0
  239. package/dist/persistence/claude-sidechain-store.d.ts +18 -0
  240. package/dist/persistence/claude-sidechain-store.d.ts.map +1 -0
  241. package/dist/persistence/claude-sidechain-store.js +107 -0
  242. package/dist/persistence/claude-sidechain-store.js.map +1 -0
  243. package/dist/persistence/claude-task-store.d.ts +72 -0
  244. package/dist/persistence/claude-task-store.d.ts.map +1 -0
  245. package/dist/persistence/claude-task-store.js +440 -0
  246. package/dist/persistence/claude-task-store.js.map +1 -0
  247. package/dist/persistence/claude-transcript-store.d.ts +85 -0
  248. package/dist/persistence/claude-transcript-store.d.ts.map +1 -0
  249. package/dist/persistence/claude-transcript-store.js +385 -0
  250. package/dist/persistence/claude-transcript-store.js.map +1 -0
  251. package/dist/persistence/claude-workflow-store.d.ts +41 -0
  252. package/dist/persistence/claude-workflow-store.d.ts.map +1 -0
  253. package/dist/persistence/claude-workflow-store.js +263 -0
  254. package/dist/persistence/claude-workflow-store.js.map +1 -0
  255. package/dist/persistence/in-memory-sidechain-store.d.ts +12 -0
  256. package/dist/persistence/in-memory-sidechain-store.d.ts.map +1 -0
  257. package/dist/persistence/in-memory-sidechain-store.js +30 -0
  258. package/dist/persistence/in-memory-sidechain-store.js.map +1 -0
  259. package/dist/persistence/in-memory-transcript-store.d.ts +15 -0
  260. package/dist/persistence/in-memory-transcript-store.d.ts.map +1 -0
  261. package/dist/persistence/in-memory-transcript-store.js +95 -0
  262. package/dist/persistence/in-memory-transcript-store.js.map +1 -0
  263. package/dist/platform/atomic-write.d.ts +5 -0
  264. package/dist/platform/atomic-write.d.ts.map +1 -0
  265. package/dist/platform/atomic-write.js +25 -0
  266. package/dist/platform/atomic-write.js.map +1 -0
  267. package/dist/platform/bounded-process-runner.d.ts +28 -0
  268. package/dist/platform/bounded-process-runner.d.ts.map +1 -0
  269. package/dist/platform/bounded-process-runner.js +209 -0
  270. package/dist/platform/bounded-process-runner.js.map +1 -0
  271. package/dist/platform/claude-version.d.ts +5 -0
  272. package/dist/platform/claude-version.d.ts.map +1 -0
  273. package/dist/platform/claude-version.js +17 -0
  274. package/dist/platform/claude-version.js.map +1 -0
  275. package/dist/platform/command-shell.d.ts +3 -0
  276. package/dist/platform/command-shell.d.ts.map +1 -0
  277. package/dist/platform/command-shell.js +15 -0
  278. package/dist/platform/command-shell.js.map +1 -0
  279. package/dist/platform/exclusive-file-lease.d.ts +15 -0
  280. package/dist/platform/exclusive-file-lease.d.ts.map +1 -0
  281. package/dist/platform/exclusive-file-lease.js +265 -0
  282. package/dist/platform/exclusive-file-lease.js.map +1 -0
  283. package/dist/platform/sensitive-data.d.ts +8 -0
  284. package/dist/platform/sensitive-data.d.ts.map +1 -0
  285. package/dist/platform/sensitive-data.js +138 -0
  286. package/dist/platform/sensitive-data.js.map +1 -0
  287. package/dist/platform/tmux-worktree.d.ts +30 -0
  288. package/dist/platform/tmux-worktree.d.ts.map +1 -0
  289. package/dist/platform/tmux-worktree.js +138 -0
  290. package/dist/platform/tmux-worktree.js.map +1 -0
  291. package/dist/plugins/claude-plugin-eval-discovery.d.ts +20 -0
  292. package/dist/plugins/claude-plugin-eval-discovery.d.ts.map +1 -0
  293. package/dist/plugins/claude-plugin-eval-discovery.js +128 -0
  294. package/dist/plugins/claude-plugin-eval-discovery.js.map +1 -0
  295. package/dist/plugins/claude-plugin-eval-graders.d.ts +49 -0
  296. package/dist/plugins/claude-plugin-eval-graders.d.ts.map +1 -0
  297. package/dist/plugins/claude-plugin-eval-graders.js +137 -0
  298. package/dist/plugins/claude-plugin-eval-graders.js.map +1 -0
  299. package/dist/plugins/claude-plugin-eval-runner.d.ts +50 -0
  300. package/dist/plugins/claude-plugin-eval-runner.d.ts.map +1 -0
  301. package/dist/plugins/claude-plugin-eval-runner.js +189 -0
  302. package/dist/plugins/claude-plugin-eval-runner.js.map +1 -0
  303. package/dist/plugins/claude-plugin-eval-schema.d.ts +80 -0
  304. package/dist/plugins/claude-plugin-eval-schema.d.ts.map +1 -0
  305. package/dist/plugins/claude-plugin-eval-schema.js +436 -0
  306. package/dist/plugins/claude-plugin-eval-schema.js.map +1 -0
  307. package/dist/plugins/claude-plugin-eval.d.ts +66 -0
  308. package/dist/plugins/claude-plugin-eval.d.ts.map +1 -0
  309. package/dist/plugins/claude-plugin-eval.js +438 -0
  310. package/dist/plugins/claude-plugin-eval.js.map +1 -0
  311. package/dist/plugins/claude-plugin-maintenance.d.ts +39 -0
  312. package/dist/plugins/claude-plugin-maintenance.d.ts.map +1 -0
  313. package/dist/plugins/claude-plugin-maintenance.js +336 -0
  314. package/dist/plugins/claude-plugin-maintenance.js.map +1 -0
  315. package/dist/plugins/claude-plugin-marketplace.d.ts +97 -0
  316. package/dist/plugins/claude-plugin-marketplace.d.ts.map +1 -0
  317. package/dist/plugins/claude-plugin-marketplace.js +1433 -0
  318. package/dist/plugins/claude-plugin-marketplace.js.map +1 -0
  319. package/dist/plugins/claude-plugin-mcpb.d.ts +71 -0
  320. package/dist/plugins/claude-plugin-mcpb.d.ts.map +1 -0
  321. package/dist/plugins/claude-plugin-mcpb.js +885 -0
  322. package/dist/plugins/claude-plugin-mcpb.js.map +1 -0
  323. package/dist/plugins/claude-plugin-runtime.d.ts +120 -0
  324. package/dist/plugins/claude-plugin-runtime.d.ts.map +1 -0
  325. package/dist/plugins/claude-plugin-runtime.js +1263 -0
  326. package/dist/plugins/claude-plugin-runtime.js.map +1 -0
  327. package/dist/providers/anthropic-compatible.d.ts +35 -0
  328. package/dist/providers/anthropic-compatible.d.ts.map +1 -0
  329. package/dist/providers/anthropic-compatible.js +733 -0
  330. package/dist/providers/anthropic-compatible.js.map +1 -0
  331. package/dist/providers/environment.d.ts +14 -0
  332. package/dist/providers/environment.d.ts.map +1 -0
  333. package/dist/providers/environment.js +67 -0
  334. package/dist/providers/environment.js.map +1 -0
  335. package/dist/providers/fallback-provider.d.ts +17 -0
  336. package/dist/providers/fallback-provider.d.ts.map +1 -0
  337. package/dist/providers/fallback-provider.js +70 -0
  338. package/dist/providers/fallback-provider.js.map +1 -0
  339. package/dist/providers/openai-compatible.d.ts +30 -0
  340. package/dist/providers/openai-compatible.d.ts.map +1 -0
  341. package/dist/providers/openai-compatible.js +409 -0
  342. package/dist/providers/openai-compatible.js.map +1 -0
  343. package/dist/tools/claude-interactive-tools.d.ts +58 -0
  344. package/dist/tools/claude-interactive-tools.d.ts.map +1 -0
  345. package/dist/tools/claude-interactive-tools.js +390 -0
  346. package/dist/tools/claude-interactive-tools.js.map +1 -0
  347. package/dist/tools/claude-lsp-formatters.d.ts +2 -0
  348. package/dist/tools/claude-lsp-formatters.d.ts.map +1 -0
  349. package/dist/tools/claude-lsp-formatters.js +291 -0
  350. package/dist/tools/claude-lsp-formatters.js.map +1 -0
  351. package/dist/tools/claude-lsp-tool.d.ts +22 -0
  352. package/dist/tools/claude-lsp-tool.d.ts.map +1 -0
  353. package/dist/tools/claude-lsp-tool.js +744 -0
  354. package/dist/tools/claude-lsp-tool.js.map +1 -0
  355. package/dist/tools/claude-scheduled-tools.d.ts +20 -0
  356. package/dist/tools/claude-scheduled-tools.d.ts.map +1 -0
  357. package/dist/tools/claude-scheduled-tools.js +344 -0
  358. package/dist/tools/claude-scheduled-tools.js.map +1 -0
  359. package/dist/tools/claude-task-tools.d.ts +30 -0
  360. package/dist/tools/claude-task-tools.d.ts.map +1 -0
  361. package/dist/tools/claude-task-tools.js +503 -0
  362. package/dist/tools/claude-task-tools.js.map +1 -0
  363. package/dist/tools/claude-user-message.d.ts +16 -0
  364. package/dist/tools/claude-user-message.d.ts.map +1 -0
  365. package/dist/tools/claude-user-message.js +98 -0
  366. package/dist/tools/claude-user-message.js.map +1 -0
  367. package/dist/tools/claude-workflow-tools.d.ts +27 -0
  368. package/dist/tools/claude-workflow-tools.d.ts.map +1 -0
  369. package/dist/tools/claude-workflow-tools.js +257 -0
  370. package/dist/tools/claude-workflow-tools.js.map +1 -0
  371. package/dist/tools/claude-worktree-tools.d.ts +17 -0
  372. package/dist/tools/claude-worktree-tools.d.ts.map +1 -0
  373. package/dist/tools/claude-worktree-tools.js +135 -0
  374. package/dist/tools/claude-worktree-tools.js.map +1 -0
  375. package/dist/tools/filtered-tool-registry.d.ts +16 -0
  376. package/dist/tools/filtered-tool-registry.d.ts.map +1 -0
  377. package/dist/tools/filtered-tool-registry.js +51 -0
  378. package/dist/tools/filtered-tool-registry.js.map +1 -0
  379. package/dist/tools/glob.d.ts +9 -0
  380. package/dist/tools/glob.d.ts.map +1 -0
  381. package/dist/tools/glob.js +88 -0
  382. package/dist/tools/glob.js.map +1 -0
  383. package/dist/tools/local-tools.d.ts +47 -0
  384. package/dist/tools/local-tools.d.ts.map +1 -0
  385. package/dist/tools/local-tools.js +1082 -0
  386. package/dist/tools/local-tools.js.map +1 -0
  387. package/dist/tools/notebook.d.ts +22 -0
  388. package/dist/tools/notebook.d.ts.map +1 -0
  389. package/dist/tools/notebook.js +154 -0
  390. package/dist/tools/notebook.js.map +1 -0
  391. package/dist/tools/web.d.ts +48 -0
  392. package/dist/tools/web.d.ts.map +1 -0
  393. package/dist/tools/web.js +726 -0
  394. package/dist/tools/web.js.map +1 -0
  395. package/package.json +145 -0
@@ -0,0 +1,137 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { minimatch } from 'minimatch';
3
+ import { resolveContainedPath } from './claude-plugin-eval-schema.js';
4
+ function subset(actual, expected) {
5
+ if (expected && typeof expected === 'object' && !Array.isArray(expected)) {
6
+ if (!actual || typeof actual !== 'object' || Array.isArray(actual))
7
+ return false;
8
+ return Object.entries(expected).every(([key, value]) => subset(actual[key], value));
9
+ }
10
+ return Object.is(actual, expected);
11
+ }
12
+ function matches(event, match) {
13
+ const selected = typeof match === 'string' ? { tool: match } : match;
14
+ return (event.type === 'tool-call' &&
15
+ event.tool === selected.tool &&
16
+ (!selected.input_match || subset(event.input, selected.input_match)));
17
+ }
18
+ async function focusText(focus, artifacts) {
19
+ if (focus === 'last_message')
20
+ return artifacts.lastMessage;
21
+ if (focus === 'trace')
22
+ return artifacts.trace.map((item) => JSON.stringify(item)).join('\n');
23
+ if (focus === 'files') {
24
+ const { glob } = await import('node:fs/promises');
25
+ const names = [];
26
+ for await (const path of glob('**/*', {
27
+ cwd: artifacts.cwd,
28
+ exclude: ['node_modules/**', '.git/**'],
29
+ }))
30
+ names.push(path);
31
+ return names.sort().join('\n');
32
+ }
33
+ return readFile(await resolveContainedPath(artifacts.cwd, focus.path, 'Grader focus'), 'utf8');
34
+ }
35
+ async function freeGrade(grader, artifacts) {
36
+ let passed = false;
37
+ let evidence = '';
38
+ if (grader.type === 'regex') {
39
+ const target = await focusText(grader.target, artifacts);
40
+ const expression = new RegExp(grader.pattern, grader.flags.includes('g') ? grader.flags : `${grader.flags}g`);
41
+ const count = [...target.matchAll(expression)].length;
42
+ passed =
43
+ grader.match === 'contains'
44
+ ? count > 0
45
+ : grader.match === 'not_contains'
46
+ ? count === 0
47
+ : count === Number(grader.match.slice(6));
48
+ evidence = `matches=${count}`;
49
+ }
50
+ else if (grader.type === 'tool_used') {
51
+ const count = artifacts.trace.filter((event) => matches(event, {
52
+ tool: grader.tool,
53
+ ...(grader.input_match ? { input_match: grader.input_match } : {}),
54
+ })).length;
55
+ passed = count >= grader.min && count <= grader.max;
56
+ evidence = `uses=${count}`;
57
+ }
58
+ else if (grader.type === 'tool_order') {
59
+ const before = artifacts.trace.findIndex((event) => matches(event, grader.before));
60
+ const after = artifacts.trace.findIndex((event, index) => index > before && matches(event, grader.after));
61
+ passed = before >= 0 && after > before;
62
+ evidence = `before=${before},after=${after}`;
63
+ }
64
+ else {
65
+ const { glob } = await import('node:fs/promises');
66
+ let count = 0;
67
+ for await (const path of glob('**/*', { cwd: artifacts.cwd })) {
68
+ if (!minimatch(path, grader.path))
69
+ continue;
70
+ await resolveContainedPath(artifacts.cwd, path, 'file_exists match');
71
+ count += 1;
72
+ }
73
+ passed = grader.exists ? count > 0 : count === 0;
74
+ evidence = `files=${count}`;
75
+ }
76
+ return {
77
+ name: grader.name,
78
+ passed,
79
+ weight: grader.weight,
80
+ explanation: passed ? 'passed' : 'failed',
81
+ evidence,
82
+ ...(grader.arm === 'with-only' ? { with_only: true } : {}),
83
+ };
84
+ }
85
+ export async function gradeClaudePluginEvalRun(options) {
86
+ const results = [];
87
+ let skippedPaidGraders = false;
88
+ let judgeCostUsd = 0;
89
+ for (const item of options.case.graders) {
90
+ if (options.arm === 'without' && item.arm === 'with-only')
91
+ continue;
92
+ if (item.type !== 'llm' && item.type !== 'baseline') {
93
+ results.push(await freeGrade(item, options.artifacts));
94
+ continue;
95
+ }
96
+ if (options.skipPaid) {
97
+ skippedPaidGraders = true;
98
+ continue;
99
+ }
100
+ if (!options.judge)
101
+ throw new Error(`Paid grader ${item.name} requires an eval judge`);
102
+ const judge = options.judge;
103
+ const focus = item.type === 'llm'
104
+ ? await focusText(item.focus, options.artifacts)
105
+ : options.artifacts.lastMessage;
106
+ const baseline = item.type === 'baseline'
107
+ ? await readFile(await resolveContainedPath(options.case.dir, item.baseline_file, 'Baseline file'), 'utf8')
108
+ : undefined;
109
+ const votes = await Promise.all(Array.from({ length: 3 }, () => judge.vote({
110
+ criteria: item.criteria,
111
+ focus,
112
+ ...(baseline === undefined ? {} : { baseline }),
113
+ model: options.judgeModel,
114
+ ...(options.signal ? { signal: options.signal } : {}),
115
+ })));
116
+ const passed = votes.filter((vote) => vote.passed).length >= 2;
117
+ judgeCostUsd += votes.reduce((sum, vote) => sum + vote.costUsd, 0);
118
+ results.push({
119
+ name: item.name,
120
+ passed,
121
+ weight: item.weight,
122
+ explanation: votes.find((vote) => vote.explanation)?.explanation ??
123
+ (passed ? 'passed' : 'failed'),
124
+ judge_votes: votes.map((vote) => vote.passed),
125
+ ...(item.arm === 'with-only' ? { with_only: true } : {}),
126
+ });
127
+ }
128
+ const scored = results;
129
+ const total = scored.reduce((sum, item) => sum + item.weight, 0);
130
+ const score = total === 0
131
+ ? 0
132
+ : scored
133
+ .filter((item) => item.passed)
134
+ .reduce((sum, item) => sum + item.weight, 0) / total;
135
+ return { score, graders: results, skippedPaidGraders, judgeCostUsd };
136
+ }
137
+ //# sourceMappingURL=claude-plugin-eval-graders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-plugin-eval-graders.js","sourceRoot":"","sources":["../../src/plugins/claude-plugin-eval-graders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { RuntimeEvent } from '../core/runtime.js';
2
+ import type { ClaudePluginEvalCase } from './claude-plugin-eval-schema.js';
3
+ import type { EvalRunArtifacts } from './claude-plugin-eval-graders.js';
4
+ export declare const DEFAULT_EVAL_ALLOWED_TOOLS: readonly ["Read", "Glob", "Grep", "Skill"];
5
+ export interface PluginEvalRuntime {
6
+ run(prompt: string, signal: AbortSignal): Promise<{
7
+ text: string;
8
+ turns: number;
9
+ costUsd?: number;
10
+ }>;
11
+ close?(): Promise<void>;
12
+ }
13
+ export interface PluginEvalRuntimeFactory {
14
+ create(options: {
15
+ cwd: string;
16
+ configRoot: string;
17
+ home: string;
18
+ model?: string;
19
+ maxTurns: number;
20
+ pluginDirectories: readonly string[];
21
+ allowedTools: readonly string[];
22
+ appendSystemPrompt?: string;
23
+ historyFile?: string;
24
+ addDirs: readonly string[];
25
+ env: Readonly<Record<string, string>>;
26
+ eventSink(event: RuntimeEvent): void;
27
+ }): Promise<PluginEvalRuntime>;
28
+ }
29
+ export interface EvalSingleRunResult {
30
+ text: string;
31
+ turns: number;
32
+ costUsd: number;
33
+ costKnown: boolean;
34
+ artifacts: EvalRunArtifacts;
35
+ tracePath: string;
36
+ error: string | null;
37
+ termination: 'timeout' | 'interrupted' | null;
38
+ tempRoot?: string;
39
+ }
40
+ export declare function resolveEvalAllowedTools(requested: readonly string[], grants: readonly string[]): string[];
41
+ export declare function runClaudePluginEvalOnce(options: {
42
+ case: ClaudePluginEvalCase;
43
+ factory: PluginEvalRuntimeFactory;
44
+ pluginDirectories: readonly string[];
45
+ model?: string;
46
+ allowTools?: readonly string[];
47
+ scaffold: boolean;
48
+ signal?: AbortSignal;
49
+ }): Promise<EvalSingleRunResult>;
50
+ //# sourceMappingURL=claude-plugin-eval-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-plugin-eval-runner.d.ts","sourceRoot":"","sources":["../../src/plugins/claude-plugin-eval-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAKtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iCAAiC,CAAA;AAExC,eAAO,MAAM,0BAA0B,4CAK7B,CAAA;AAEV,MAAM,WAAW,iBAAiB;IAChC,GAAG,CACD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7D,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AACD,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,OAAO,EAAE;QACd,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAA;QACpC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;QAC1B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QACrC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;KACrC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAwCD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,EAAE,CAQV;AAqDD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,IAAI,EAAE,oBAAoB,CAAA;IAC1B,OAAO,EAAE,wBAAwB,CAAA;IACjC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiH/B"}
@@ -0,0 +1,189 @@
1
+ import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { BoundedProcessRunner, joinedProcessOutput, } from '../platform/bounded-process-runner.js';
5
+ import { resolveContainedPath } from './claude-plugin-eval-schema.js';
6
+ export const DEFAULT_EVAL_ALLOWED_TOOLS = [
7
+ 'Read',
8
+ 'Glob',
9
+ 'Grep',
10
+ 'Skill',
11
+ ];
12
+ function abortError() {
13
+ return new DOMException('Eval run timed out', 'AbortError');
14
+ }
15
+ function toolName(rule) {
16
+ const separator = rule.indexOf('(');
17
+ return separator < 0 ? rule : rule.slice(0, separator);
18
+ }
19
+ function gatedTool(rule) {
20
+ const name = toolName(rule);
21
+ return (['Bash', 'Write', 'Edit', 'NotebookEdit', 'WebFetch', 'WebSearch'].includes(name) || name.startsWith('mcp__'));
22
+ }
23
+ function operatorGrants(requested, grants) {
24
+ const name = toolName(requested);
25
+ const wildcardMatch = (pattern) => {
26
+ const parts = pattern.split('*');
27
+ if (parts.length === 1)
28
+ return false;
29
+ if (!requested.startsWith(parts[0] ?? ''))
30
+ return false;
31
+ let cursor = parts[0]?.length ?? 0;
32
+ for (const part of parts.slice(1, -1)) {
33
+ const index = requested.indexOf(part, cursor);
34
+ if (index < 0)
35
+ return false;
36
+ cursor = index + part.length;
37
+ }
38
+ const last = parts.at(-1) ?? '';
39
+ return last.length === 0 || requested.slice(cursor).endsWith(last);
40
+ };
41
+ return grants.some((grant) => grant === requested || grant === name || wildcardMatch(grant));
42
+ }
43
+ export function resolveEvalAllowedTools(requested, grants) {
44
+ const selected = requested.length ? requested : DEFAULT_EVAL_ALLOWED_TOOLS;
45
+ for (const rule of selected)
46
+ if (gatedTool(rule) && !operatorGrants(rule, grants))
47
+ throw new Error(`Eval case requests gated tool ${rule}; grant it with --allow-tools`);
48
+ return [...new Set(selected)];
49
+ }
50
+ async function scaffold(caseDef, cwd, home, signal) {
51
+ if (!caseDef.context.scaffoldScript)
52
+ return;
53
+ const script = await resolveContainedPath(caseDef.dir, caseDef.context.scaffoldScript, 'Scaffold script');
54
+ const result = await new BoundedProcessRunner({
55
+ cwd,
56
+ maxOutputBytes: 16 * 1024,
57
+ }).run({
58
+ command: '/bin/bash',
59
+ args: [script],
60
+ timeoutMs: caseDef.execution.timeoutSeconds * 1000,
61
+ signal,
62
+ env: {
63
+ ...caseDef.execution.env,
64
+ HOME: home,
65
+ USERPROFILE: home,
66
+ },
67
+ });
68
+ if (result.timedOut)
69
+ throw new Error('Scaffold timed out');
70
+ if (result.code !== 0)
71
+ throw new Error(`Scaffold failed (${result.code}): ${joinedProcessOutput(result)}`);
72
+ }
73
+ function traceEvent(event) {
74
+ if (event.type === 'tool-call')
75
+ return {
76
+ type: 'tool-call',
77
+ tool: event.call.name,
78
+ input: event.call.input,
79
+ id: event.call.id,
80
+ };
81
+ if (event.type === 'tool-result')
82
+ return {
83
+ type: 'tool-result',
84
+ callId: event.callId,
85
+ content: event.content,
86
+ isError: event.isError,
87
+ };
88
+ return event;
89
+ }
90
+ export async function runClaudePluginEvalOnce(options) {
91
+ const tempRoot = await mkdtemp(join(tmpdir(), 'praxis-eval-'));
92
+ const cwd = join(tempRoot, 'cwd');
93
+ const configRoot = join(tempRoot, 'config');
94
+ const home = join(tempRoot, 'home');
95
+ const out = join(tempRoot, 'out');
96
+ try {
97
+ await Promise.all([mkdir(cwd), mkdir(configRoot), mkdir(home), mkdir(out)]);
98
+ }
99
+ catch (error) {
100
+ await rm(tempRoot, { recursive: true, force: true });
101
+ throw error;
102
+ }
103
+ const trace = [];
104
+ const tracePath = join(out, 'trace.jsonl');
105
+ const controller = new AbortController();
106
+ const forwardAbort = () => controller.abort(options.signal?.reason);
107
+ options.signal?.addEventListener('abort', forwardAbort, { once: true });
108
+ if (options.signal?.aborted)
109
+ forwardAbort();
110
+ const timer = setTimeout(() => controller.abort(abortError()), options.case.execution.timeoutSeconds * 1000);
111
+ let runtime;
112
+ let text = '';
113
+ let turns = 0;
114
+ let costUsd = 0;
115
+ let costKnown = false;
116
+ let error = null;
117
+ let termination = null;
118
+ try {
119
+ if (options.scaffold)
120
+ await scaffold(options.case, cwd, home, controller.signal);
121
+ const addDirs = await Promise.all(options.case.context.addDirs.map((path) => resolveContainedPath(options.case.dir, path, 'Add directory')));
122
+ const historyFile = options.case.context.historyFile
123
+ ? await resolveContainedPath(options.case.dir, options.case.context.historyFile, 'History file')
124
+ : undefined;
125
+ runtime = await options.factory.create({
126
+ cwd,
127
+ configRoot,
128
+ home,
129
+ ...((options.model ?? options.case.execution.model)
130
+ ? { model: options.model ?? options.case.execution.model }
131
+ : {}),
132
+ maxTurns: options.case.execution.maxTurns,
133
+ pluginDirectories: options.pluginDirectories,
134
+ allowedTools: resolveEvalAllowedTools(options.case.execution.allowedTools, options.allowTools ?? []),
135
+ ...(options.case.execution.appendSystemPrompt
136
+ ? { appendSystemPrompt: options.case.execution.appendSystemPrompt }
137
+ : {}),
138
+ ...(historyFile ? { historyFile } : {}),
139
+ addDirs,
140
+ env: options.case.execution.env,
141
+ eventSink: (event) => trace.push(traceEvent(event)),
142
+ });
143
+ const result = await runtime.run(options.case.execution.prompt ?? '', controller.signal);
144
+ text = result.text;
145
+ turns = result.turns;
146
+ costKnown = result.costUsd !== undefined;
147
+ costUsd = result.costUsd ?? 0;
148
+ }
149
+ catch (caught) {
150
+ if (options.signal?.aborted) {
151
+ termination = 'interrupted';
152
+ error = 'Eval run interrupted';
153
+ }
154
+ else if (controller.signal.aborted) {
155
+ termination = 'timeout';
156
+ error = 'Eval run timed out';
157
+ }
158
+ else
159
+ error = caught instanceof Error ? caught.message : String(caught);
160
+ }
161
+ finally {
162
+ clearTimeout(timer);
163
+ options.signal?.removeEventListener('abort', forwardAbort);
164
+ try {
165
+ await runtime?.close?.();
166
+ }
167
+ catch (caught) {
168
+ error ??= `Runtime cleanup failed: ${caught instanceof Error ? caught.message : String(caught)}`;
169
+ }
170
+ try {
171
+ await writeFile(tracePath, trace.map((item) => JSON.stringify(item)).join('\n'));
172
+ }
173
+ catch (caught) {
174
+ error ??= `Trace write failed: ${caught instanceof Error ? caught.message : String(caught)}`;
175
+ }
176
+ }
177
+ return {
178
+ text,
179
+ turns,
180
+ costUsd,
181
+ costKnown,
182
+ artifacts: { lastMessage: text, trace, cwd },
183
+ tracePath,
184
+ error,
185
+ termination,
186
+ tempRoot,
187
+ };
188
+ }
189
+ //# sourceMappingURL=claude-plugin-eval-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-plugin-eval-runner.js","sourceRoot":"","sources":["../../src/plugins/claude-plugin-eval-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export declare const EVAL_SCHEMA_VERSION = "1.0";
2
+ export declare const MAX_EVAL_FILE_BYTES: number;
3
+ export declare const MAX_EVAL_GRADERS = 256;
4
+ export declare const MAX_EVAL_ARRAY_ITEMS = 256;
5
+ export declare const MAX_EVAL_STRING_LENGTH: number;
6
+ export declare const MAX_EVAL_OBJECT_DEPTH = 16;
7
+ export declare const MAX_EVAL_OBJECT_NODES = 4096;
8
+ export type EvalFocus = 'last_message' | 'trace' | 'files' | {
9
+ source: 'file';
10
+ path: string;
11
+ };
12
+ export type EvalArm = 'with-only' | 'both';
13
+ interface EvalGraderBase {
14
+ name: string;
15
+ weight: number;
16
+ arm?: EvalArm;
17
+ }
18
+ export type ClaudePluginEvalGrader = (EvalGraderBase & {
19
+ type: 'regex';
20
+ target: EvalFocus;
21
+ pattern: string;
22
+ flags: string;
23
+ match: 'contains' | 'not_contains' | `count:${number}`;
24
+ }) | (EvalGraderBase & {
25
+ type: 'tool_order';
26
+ before: EvalToolMatch;
27
+ after: EvalToolMatch;
28
+ }) | (EvalGraderBase & {
29
+ type: 'tool_used';
30
+ tool: string;
31
+ input_match?: Record<string, unknown>;
32
+ min: number;
33
+ max: number;
34
+ }) | (EvalGraderBase & {
35
+ type: 'file_exists';
36
+ path: string;
37
+ exists: boolean;
38
+ }) | (EvalGraderBase & {
39
+ type: 'llm';
40
+ criteria: string;
41
+ focus: EvalFocus;
42
+ }) | (EvalGraderBase & {
43
+ type: 'baseline';
44
+ baseline_file: string;
45
+ criteria: string;
46
+ });
47
+ export type EvalToolMatch = string | {
48
+ tool: string;
49
+ input_match?: Record<string, unknown>;
50
+ };
51
+ export interface ClaudePluginEvalCase {
52
+ schemaVersion: string;
53
+ name: string;
54
+ description?: string;
55
+ tags: readonly string[];
56
+ plugins?: readonly string[];
57
+ context: {
58
+ scaffoldScript?: string;
59
+ historyFile?: string;
60
+ addDirs: readonly string[];
61
+ };
62
+ execution: {
63
+ prompt?: string;
64
+ maxTurns: number;
65
+ timeoutSeconds: number;
66
+ model?: string;
67
+ allowedTools: readonly string[];
68
+ appendSystemPrompt?: string;
69
+ env: Readonly<Record<string, string>>;
70
+ };
71
+ runs: number;
72
+ graders: readonly ClaudePluginEvalGrader[];
73
+ expectedOutcome?: string;
74
+ dir: string;
75
+ source: 'case_yaml' | 'prose' | 'mixed';
76
+ }
77
+ export declare function loadClaudePluginEvalCase(caseDir: string): Promise<ClaudePluginEvalCase>;
78
+ export declare function resolveContainedPath(root: string, candidate: string, label: string): Promise<string>;
79
+ export {};
80
+ //# sourceMappingURL=claude-plugin-eval-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-plugin-eval-schema.d.ts","sourceRoot":"","sources":["../../src/plugins/claude-plugin-eval-schema.ts"],"names":[],"mappings":"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"}