@earendil-works/pi-agent-core 0.99.1 → 1.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 (450) hide show
  1. package/README.md +0 -8
  2. package/dist/index.d.ts +0 -22
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -20
  5. package/dist/index.js.map +1 -1
  6. package/package.json +3 -45
  7. package/dist/harness/agent-harness.d.ts +0 -716
  8. package/dist/harness/agent-harness.d.ts.map +0 -1
  9. package/dist/harness/agent-harness.js +0 -6
  10. package/dist/harness/agent-harness.js.map +0 -1
  11. package/dist/harness/compaction/branch-summarization.d.ts +0 -68
  12. package/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  13. package/dist/harness/compaction/branch-summarization.js +0 -176
  14. package/dist/harness/compaction/branch-summarization.js.map +0 -1
  15. package/dist/harness/compaction/compaction.d.ts +0 -126
  16. package/dist/harness/compaction/compaction.d.ts.map +0 -1
  17. package/dist/harness/compaction/compaction.js +0 -560
  18. package/dist/harness/compaction/compaction.js.map +0 -1
  19. package/dist/harness/compaction/utils.d.ts +0 -25
  20. package/dist/harness/compaction/utils.d.ts.map +0 -1
  21. package/dist/harness/compaction/utils.js +0 -120
  22. package/dist/harness/compaction/utils.js.map +0 -1
  23. package/dist/harness/config.d.ts +0 -9
  24. package/dist/harness/config.d.ts.map +0 -1
  25. package/dist/harness/config.js +0 -35
  26. package/dist/harness/config.js.map +0 -1
  27. package/dist/harness/context.d.ts +0 -9
  28. package/dist/harness/context.d.ts.map +0 -1
  29. package/dist/harness/context.js +0 -13
  30. package/dist/harness/context.js.map +0 -1
  31. package/dist/harness/env/nodejs.d.ts +0 -43
  32. package/dist/harness/env/nodejs.d.ts.map +0 -1
  33. package/dist/harness/env/nodejs.js +0 -865
  34. package/dist/harness/env/nodejs.js.map +0 -1
  35. package/dist/harness/events.d.ts +0 -25
  36. package/dist/harness/events.d.ts.map +0 -1
  37. package/dist/harness/events.js +0 -250
  38. package/dist/harness/events.js.map +0 -1
  39. package/dist/harness/execution/assistant.d.ts +0 -42
  40. package/dist/harness/execution/assistant.d.ts.map +0 -1
  41. package/dist/harness/execution/assistant.js +0 -82
  42. package/dist/harness/execution/assistant.js.map +0 -1
  43. package/dist/harness/execution/effect-gate.d.ts +0 -22
  44. package/dist/harness/execution/effect-gate.d.ts.map +0 -1
  45. package/dist/harness/execution/effect-gate.js +0 -49
  46. package/dist/harness/execution/effect-gate.js.map +0 -1
  47. package/dist/harness/execution/tools.d.ts +0 -67
  48. package/dist/harness/execution/tools.d.ts.map +0 -1
  49. package/dist/harness/execution/tools.js +0 -119
  50. package/dist/harness/execution/tools.js.map +0 -1
  51. package/dist/harness/hooks.d.ts +0 -38
  52. package/dist/harness/hooks.d.ts.map +0 -1
  53. package/dist/harness/hooks.js +0 -406
  54. package/dist/harness/hooks.js.map +0 -1
  55. package/dist/harness/messages.d.ts +0 -51
  56. package/dist/harness/messages.d.ts.map +0 -1
  57. package/dist/harness/messages.js +0 -103
  58. package/dist/harness/messages.js.map +0 -1
  59. package/dist/harness/pico3/bash.d.ts +0 -10
  60. package/dist/harness/pico3/bash.d.ts.map +0 -1
  61. package/dist/harness/pico3/bash.js +0 -25
  62. package/dist/harness/pico3/bash.js.map +0 -1
  63. package/dist/harness/pico3/bounded.d.ts +0 -21
  64. package/dist/harness/pico3/bounded.d.ts.map +0 -1
  65. package/dist/harness/pico3/bounded.js +0 -98
  66. package/dist/harness/pico3/bounded.js.map +0 -1
  67. package/dist/harness/pico3/chord.d.ts +0 -41
  68. package/dist/harness/pico3/chord.d.ts.map +0 -1
  69. package/dist/harness/pico3/chord.js +0 -147
  70. package/dist/harness/pico3/chord.js.map +0 -1
  71. package/dist/harness/pico3/context.d.ts +0 -16
  72. package/dist/harness/pico3/context.d.ts.map +0 -1
  73. package/dist/harness/pico3/context.js +0 -88
  74. package/dist/harness/pico3/context.js.map +0 -1
  75. package/dist/harness/pico3/harness.d.ts +0 -198
  76. package/dist/harness/pico3/harness.d.ts.map +0 -1
  77. package/dist/harness/pico3/harness.js +0 -654
  78. package/dist/harness/pico3/harness.js.map +0 -1
  79. package/dist/harness/pico3/hooks.d.ts +0 -10
  80. package/dist/harness/pico3/hooks.d.ts.map +0 -1
  81. package/dist/harness/pico3/hooks.js +0 -33
  82. package/dist/harness/pico3/hooks.js.map +0 -1
  83. package/dist/harness/pico3/index.d.ts +0 -19
  84. package/dist/harness/pico3/index.d.ts.map +0 -1
  85. package/dist/harness/pico3/index.js +0 -15
  86. package/dist/harness/pico3/index.js.map +0 -1
  87. package/dist/harness/pico3/jsonl.d.ts +0 -58
  88. package/dist/harness/pico3/jsonl.d.ts.map +0 -1
  89. package/dist/harness/pico3/jsonl.js +0 -325
  90. package/dist/harness/pico3/jsonl.js.map +0 -1
  91. package/dist/harness/pico3/kinds/collapse.d.ts +0 -49
  92. package/dist/harness/pico3/kinds/collapse.d.ts.map +0 -1
  93. package/dist/harness/pico3/kinds/collapse.js +0 -191
  94. package/dist/harness/pico3/kinds/collapse.js.map +0 -1
  95. package/dist/harness/pico3/kinds/entries.d.ts +0 -78
  96. package/dist/harness/pico3/kinds/entries.d.ts.map +0 -1
  97. package/dist/harness/pico3/kinds/entries.js +0 -13
  98. package/dist/harness/pico3/kinds/entries.js.map +0 -1
  99. package/dist/harness/pico3/kinds/frames.d.ts +0 -9
  100. package/dist/harness/pico3/kinds/frames.d.ts.map +0 -1
  101. package/dist/harness/pico3/kinds/frames.js +0 -75
  102. package/dist/harness/pico3/kinds/frames.js.map +0 -1
  103. package/dist/harness/pico3/kinds/generation.d.ts +0 -94
  104. package/dist/harness/pico3/kinds/generation.d.ts.map +0 -1
  105. package/dist/harness/pico3/kinds/generation.js +0 -504
  106. package/dist/harness/pico3/kinds/generation.js.map +0 -1
  107. package/dist/harness/pico3/kinds/job.d.ts +0 -44
  108. package/dist/harness/pico3/kinds/job.d.ts.map +0 -1
  109. package/dist/harness/pico3/kinds/job.js +0 -143
  110. package/dist/harness/pico3/kinds/job.js.map +0 -1
  111. package/dist/harness/pico3/kinds/plugin.d.ts +0 -15
  112. package/dist/harness/pico3/kinds/plugin.d.ts.map +0 -1
  113. package/dist/harness/pico3/kinds/plugin.js +0 -35
  114. package/dist/harness/pico3/kinds/plugin.js.map +0 -1
  115. package/dist/harness/pico3/kinds/post-tools.d.ts +0 -22
  116. package/dist/harness/pico3/kinds/post-tools.d.ts.map +0 -1
  117. package/dist/harness/pico3/kinds/post-tools.js +0 -145
  118. package/dist/harness/pico3/kinds/post-tools.js.map +0 -1
  119. package/dist/harness/pico3/kinds/task-api.d.ts +0 -3
  120. package/dist/harness/pico3/kinds/task-api.d.ts.map +0 -1
  121. package/dist/harness/pico3/kinds/task-api.js +0 -45
  122. package/dist/harness/pico3/kinds/task-api.js.map +0 -1
  123. package/dist/harness/pico3/kinds/tool.d.ts +0 -43
  124. package/dist/harness/pico3/kinds/tool.d.ts.map +0 -1
  125. package/dist/harness/pico3/kinds/tool.js +0 -373
  126. package/dist/harness/pico3/kinds/tool.js.map +0 -1
  127. package/dist/harness/pico3/legacy-tracker.d.ts +0 -11
  128. package/dist/harness/pico3/legacy-tracker.d.ts.map +0 -1
  129. package/dist/harness/pico3/legacy-tracker.js +0 -41
  130. package/dist/harness/pico3/legacy-tracker.js.map +0 -1
  131. package/dist/harness/pico3/membrane.d.ts +0 -23
  132. package/dist/harness/pico3/membrane.d.ts.map +0 -1
  133. package/dist/harness/pico3/membrane.js +0 -141
  134. package/dist/harness/pico3/membrane.js.map +0 -1
  135. package/dist/harness/pico3/memory.d.ts +0 -53
  136. package/dist/harness/pico3/memory.d.ts.map +0 -1
  137. package/dist/harness/pico3/memory.js +0 -264
  138. package/dist/harness/pico3/memory.js.map +0 -1
  139. package/dist/harness/pico3/scheduler.d.ts +0 -49
  140. package/dist/harness/pico3/scheduler.d.ts.map +0 -1
  141. package/dist/harness/pico3/scheduler.js +0 -438
  142. package/dist/harness/pico3/scheduler.js.map +0 -1
  143. package/dist/harness/pico3/session.d.ts +0 -264
  144. package/dist/harness/pico3/session.d.ts.map +0 -1
  145. package/dist/harness/pico3/session.js +0 -1348
  146. package/dist/harness/pico3/session.js.map +0 -1
  147. package/dist/harness/pico3/system.d.ts +0 -126
  148. package/dist/harness/pico3/system.d.ts.map +0 -1
  149. package/dist/harness/pico3/system.js +0 -244
  150. package/dist/harness/pico3/system.js.map +0 -1
  151. package/dist/harness/pico3/types.d.ts +0 -973
  152. package/dist/harness/pico3/types.d.ts.map +0 -1
  153. package/dist/harness/pico3/types.js +0 -96
  154. package/dist/harness/pico3/types.js.map +0 -1
  155. package/dist/harness/pico3/view.d.ts +0 -34
  156. package/dist/harness/pico3/view.d.ts.map +0 -1
  157. package/dist/harness/pico3/view.js +0 -411
  158. package/dist/harness/pico3/view.js.map +0 -1
  159. package/dist/harness/prompt-templates.d.ts +0 -49
  160. package/dist/harness/prompt-templates.d.ts.map +0 -1
  161. package/dist/harness/prompt-templates.js +0 -225
  162. package/dist/harness/prompt-templates.js.map +0 -1
  163. package/dist/harness/result.d.ts +0 -133
  164. package/dist/harness/result.d.ts.map +0 -1
  165. package/dist/harness/result.js +0 -81
  166. package/dist/harness/result.js.map +0 -1
  167. package/dist/harness/runtime/drive/boundary.d.ts +0 -28
  168. package/dist/harness/runtime/drive/boundary.d.ts.map +0 -1
  169. package/dist/harness/runtime/drive/boundary.js +0 -173
  170. package/dist/harness/runtime/drive/boundary.js.map +0 -1
  171. package/dist/harness/runtime/drive/checkpoint.d.ts +0 -8
  172. package/dist/harness/runtime/drive/checkpoint.d.ts.map +0 -1
  173. package/dist/harness/runtime/drive/checkpoint.js +0 -133
  174. package/dist/harness/runtime/drive/checkpoint.js.map +0 -1
  175. package/dist/harness/runtime/drive/deferred.d.ts +0 -15
  176. package/dist/harness/runtime/drive/deferred.d.ts.map +0 -1
  177. package/dist/harness/runtime/drive/deferred.js +0 -179
  178. package/dist/harness/runtime/drive/deferred.js.map +0 -1
  179. package/dist/harness/runtime/drive/generation.d.ts +0 -8
  180. package/dist/harness/runtime/drive/generation.d.ts.map +0 -1
  181. package/dist/harness/runtime/drive/generation.js +0 -205
  182. package/dist/harness/runtime/drive/generation.js.map +0 -1
  183. package/dist/harness/runtime/drive/reconcile.d.ts +0 -5
  184. package/dist/harness/runtime/drive/reconcile.d.ts.map +0 -1
  185. package/dist/harness/runtime/drive/reconcile.js +0 -140
  186. package/dist/harness/runtime/drive/reconcile.js.map +0 -1
  187. package/dist/harness/runtime/drive/recovery.d.ts +0 -8
  188. package/dist/harness/runtime/drive/recovery.d.ts.map +0 -1
  189. package/dist/harness/runtime/drive/recovery.js +0 -85
  190. package/dist/harness/runtime/drive/recovery.js.map +0 -1
  191. package/dist/harness/runtime/drive/response.d.ts +0 -23
  192. package/dist/harness/runtime/drive/response.d.ts.map +0 -1
  193. package/dist/harness/runtime/drive/response.js +0 -394
  194. package/dist/harness/runtime/drive/response.js.map +0 -1
  195. package/dist/harness/runtime/drive/retry.d.ts +0 -4
  196. package/dist/harness/runtime/drive/retry.d.ts.map +0 -1
  197. package/dist/harness/runtime/drive/retry.js +0 -34
  198. package/dist/harness/runtime/drive/retry.js.map +0 -1
  199. package/dist/harness/runtime/drive/structural.d.ts +0 -32
  200. package/dist/harness/runtime/drive/structural.d.ts.map +0 -1
  201. package/dist/harness/runtime/drive/structural.js +0 -929
  202. package/dist/harness/runtime/drive/structural.js.map +0 -1
  203. package/dist/harness/runtime/drive/terminal.d.ts +0 -7
  204. package/dist/harness/runtime/drive/terminal.d.ts.map +0 -1
  205. package/dist/harness/runtime/drive/terminal.js +0 -49
  206. package/dist/harness/runtime/drive/terminal.js.map +0 -1
  207. package/dist/harness/runtime/drive/tool-placement.d.ts +0 -14
  208. package/dist/harness/runtime/drive/tool-placement.d.ts.map +0 -1
  209. package/dist/harness/runtime/drive/tool-placement.js +0 -219
  210. package/dist/harness/runtime/drive/tool-placement.js.map +0 -1
  211. package/dist/harness/runtime/drive/tools.d.ts +0 -6
  212. package/dist/harness/runtime/drive/tools.d.ts.map +0 -1
  213. package/dist/harness/runtime/drive/tools.js +0 -449
  214. package/dist/harness/runtime/drive/tools.js.map +0 -1
  215. package/dist/harness/runtime/drive.d.ts +0 -6
  216. package/dist/harness/runtime/drive.d.ts.map +0 -1
  217. package/dist/harness/runtime/drive.js +0 -93
  218. package/dist/harness/runtime/drive.js.map +0 -1
  219. package/dist/harness/runtime/harness.d.ts +0 -59
  220. package/dist/harness/runtime/harness.d.ts.map +0 -1
  221. package/dist/harness/runtime/harness.js +0 -311
  222. package/dist/harness/runtime/harness.js.map +0 -1
  223. package/dist/harness/runtime/index.d.ts +0 -2
  224. package/dist/harness/runtime/index.d.ts.map +0 -1
  225. package/dist/harness/runtime/index.js +0 -2
  226. package/dist/harness/runtime/index.js.map +0 -1
  227. package/dist/harness/runtime/lane.d.ts +0 -118
  228. package/dist/harness/runtime/lane.d.ts.map +0 -1
  229. package/dist/harness/runtime/lane.js +0 -1575
  230. package/dist/harness/runtime/lane.js.map +0 -1
  231. package/dist/harness/runtime/progress.d.ts +0 -15
  232. package/dist/harness/runtime/progress.d.ts.map +0 -1
  233. package/dist/harness/runtime/progress.js +0 -66
  234. package/dist/harness/runtime/progress.js.map +0 -1
  235. package/dist/harness/runtime/reducer.d.ts +0 -5
  236. package/dist/harness/runtime/reducer.d.ts.map +0 -1
  237. package/dist/harness/runtime/reducer.js +0 -240
  238. package/dist/harness/runtime/reducer.js.map +0 -1
  239. package/dist/harness/runtime/restore.d.ts +0 -24
  240. package/dist/harness/runtime/restore.d.ts.map +0 -1
  241. package/dist/harness/runtime/restore.js +0 -117
  242. package/dist/harness/runtime/restore.js.map +0 -1
  243. package/dist/harness/runtime/transcript.d.ts +0 -21
  244. package/dist/harness/runtime/transcript.d.ts.map +0 -1
  245. package/dist/harness/runtime/transcript.js +0 -72
  246. package/dist/harness/runtime/transcript.js.map +0 -1
  247. package/dist/harness/runtime/types.d.ts +0 -105
  248. package/dist/harness/runtime/types.d.ts.map +0 -1
  249. package/dist/harness/runtime/types.js +0 -61
  250. package/dist/harness/runtime/types.js.map +0 -1
  251. package/dist/harness/session/commit.d.ts +0 -53
  252. package/dist/harness/session/commit.d.ts.map +0 -1
  253. package/dist/harness/session/commit.js +0 -57
  254. package/dist/harness/session/commit.js.map +0 -1
  255. package/dist/harness/session/context.d.ts +0 -10
  256. package/dist/harness/session/context.d.ts.map +0 -1
  257. package/dist/harness/session/context.js +0 -49
  258. package/dist/harness/session/context.js.map +0 -1
  259. package/dist/harness/session/fork-policy.d.ts +0 -21
  260. package/dist/harness/session/fork-policy.d.ts.map +0 -1
  261. package/dist/harness/session/fork-policy.js +0 -55
  262. package/dist/harness/session/fork-policy.js.map +0 -1
  263. package/dist/harness/session/fork.d.ts +0 -16
  264. package/dist/harness/session/fork.d.ts.map +0 -1
  265. package/dist/harness/session/fork.js +0 -79
  266. package/dist/harness/session/fork.js.map +0 -1
  267. package/dist/harness/session/in-memory-storage-state.d.ts +0 -39
  268. package/dist/harness/session/in-memory-storage-state.d.ts.map +0 -1
  269. package/dist/harness/session/in-memory-storage-state.js +0 -276
  270. package/dist/harness/session/in-memory-storage-state.js.map +0 -1
  271. package/dist/harness/session/index.d.ts +0 -11
  272. package/dist/harness/session/index.d.ts.map +0 -1
  273. package/dist/harness/session/index.js +0 -9
  274. package/dist/harness/session/index.js.map +0 -1
  275. package/dist/harness/session/jsonl/codec.d.ts +0 -21
  276. package/dist/harness/session/jsonl/codec.d.ts.map +0 -1
  277. package/dist/harness/session/jsonl/codec.js +0 -45
  278. package/dist/harness/session/jsonl/codec.js.map +0 -1
  279. package/dist/harness/session/jsonl/fork.d.ts +0 -38
  280. package/dist/harness/session/jsonl/fork.d.ts.map +0 -1
  281. package/dist/harness/session/jsonl/fork.js +0 -264
  282. package/dist/harness/session/jsonl/fork.js.map +0 -1
  283. package/dist/harness/session/jsonl/index.d.ts +0 -4
  284. package/dist/harness/session/jsonl/index.d.ts.map +0 -1
  285. package/dist/harness/session/jsonl/index.js +0 -4
  286. package/dist/harness/session/jsonl/index.js.map +0 -1
  287. package/dist/harness/session/jsonl/io.d.ts +0 -14
  288. package/dist/harness/session/jsonl/io.d.ts.map +0 -1
  289. package/dist/harness/session/jsonl/io.js +0 -86
  290. package/dist/harness/session/jsonl/io.js.map +0 -1
  291. package/dist/harness/session/jsonl/legacy-v3.d.ts +0 -44
  292. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +0 -1
  293. package/dist/harness/session/jsonl/legacy-v3.js +0 -462
  294. package/dist/harness/session/jsonl/legacy-v3.js.map +0 -1
  295. package/dist/harness/session/jsonl/repo.d.ts +0 -35
  296. package/dist/harness/session/jsonl/repo.d.ts.map +0 -1
  297. package/dist/harness/session/jsonl/repo.js +0 -301
  298. package/dist/harness/session/jsonl/repo.js.map +0 -1
  299. package/dist/harness/session/jsonl/storage.d.ts +0 -41
  300. package/dist/harness/session/jsonl/storage.d.ts.map +0 -1
  301. package/dist/harness/session/jsonl/storage.js +0 -200
  302. package/dist/harness/session/jsonl/storage.js.map +0 -1
  303. package/dist/harness/session/jsonl/types.d.ts +0 -39
  304. package/dist/harness/session/jsonl/types.d.ts.map +0 -1
  305. package/dist/harness/session/jsonl/types.js +0 -3
  306. package/dist/harness/session/jsonl/types.js.map +0 -1
  307. package/dist/harness/session/memory.d.ts +0 -48
  308. package/dist/harness/session/memory.d.ts.map +0 -1
  309. package/dist/harness/session/memory.js +0 -369
  310. package/dist/harness/session/memory.js.map +0 -1
  311. package/dist/harness/session/mutation-line.d.ts +0 -8
  312. package/dist/harness/session/mutation-line.d.ts.map +0 -1
  313. package/dist/harness/session/mutation-line.js +0 -21
  314. package/dist/harness/session/mutation-line.js.map +0 -1
  315. package/dist/harness/session/session.d.ts +0 -82
  316. package/dist/harness/session/session.d.ts.map +0 -1
  317. package/dist/harness/session/session.js +0 -361
  318. package/dist/harness/session/session.js.map +0 -1
  319. package/dist/harness/session/testing/benchmark/datasets.d.ts +0 -12
  320. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +0 -1
  321. package/dist/harness/session/testing/benchmark/datasets.js +0 -24
  322. package/dist/harness/session/testing/benchmark/datasets.js.map +0 -1
  323. package/dist/harness/session/testing/benchmark/session-repo.d.ts +0 -42
  324. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +0 -1
  325. package/dist/harness/session/testing/benchmark/session-repo.js +0 -127
  326. package/dist/harness/session/testing/benchmark/session-repo.js.map +0 -1
  327. package/dist/harness/session/testing/benchmark/storage.d.ts +0 -25
  328. package/dist/harness/session/testing/benchmark/storage.d.ts.map +0 -1
  329. package/dist/harness/session/testing/benchmark/storage.js +0 -114
  330. package/dist/harness/session/testing/benchmark/storage.js.map +0 -1
  331. package/dist/harness/session/testing/conformance/session-repo.d.ts +0 -23
  332. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +0 -1
  333. package/dist/harness/session/testing/conformance/session-repo.js +0 -809
  334. package/dist/harness/session/testing/conformance/session-repo.js.map +0 -1
  335. package/dist/harness/session/testing/conformance/storage.d.ts +0 -4
  336. package/dist/harness/session/testing/conformance/storage.d.ts.map +0 -1
  337. package/dist/harness/session/testing/conformance/storage.js +0 -600
  338. package/dist/harness/session/testing/conformance/storage.js.map +0 -1
  339. package/dist/harness/session/testing/gating-storage.d.ts +0 -26
  340. package/dist/harness/session/testing/gating-storage.d.ts.map +0 -1
  341. package/dist/harness/session/testing/gating-storage.js +0 -100
  342. package/dist/harness/session/testing/gating-storage.js.map +0 -1
  343. package/dist/harness/session/testing/index.d.ts +0 -10
  344. package/dist/harness/session/testing/index.d.ts.map +0 -1
  345. package/dist/harness/session/testing/index.js +0 -9
  346. package/dist/harness/session/testing/index.js.map +0 -1
  347. package/dist/harness/session/testing/instrumented-storage.d.ts +0 -11
  348. package/dist/harness/session/testing/instrumented-storage.d.ts.map +0 -1
  349. package/dist/harness/session/testing/instrumented-storage.js +0 -16
  350. package/dist/harness/session/testing/instrumented-storage.js.map +0 -1
  351. package/dist/harness/session/testing/storage-decorator.d.ts +0 -20
  352. package/dist/harness/session/testing/storage-decorator.d.ts.map +0 -1
  353. package/dist/harness/session/testing/storage-decorator.js +0 -41
  354. package/dist/harness/session/testing/storage-decorator.js.map +0 -1
  355. package/dist/harness/session/testing/types.d.ts +0 -12
  356. package/dist/harness/session/testing/types.d.ts.map +0 -1
  357. package/dist/harness/session/testing/types.js +0 -2
  358. package/dist/harness/session/testing/types.js.map +0 -1
  359. package/dist/harness/session/types.d.ts +0 -512
  360. package/dist/harness/session/types.d.ts.map +0 -1
  361. package/dist/harness/session/types.js +0 -9
  362. package/dist/harness/session/types.js.map +0 -1
  363. package/dist/harness/session/values.d.ts +0 -95
  364. package/dist/harness/session/values.d.ts.map +0 -1
  365. package/dist/harness/session/values.js +0 -81
  366. package/dist/harness/session/values.js.map +0 -1
  367. package/dist/harness/skills.d.ts +0 -46
  368. package/dist/harness/skills.d.ts.map +0 -1
  369. package/dist/harness/skills.js +0 -326
  370. package/dist/harness/skills.js.map +0 -1
  371. package/dist/harness/system-prompt.d.ts +0 -3
  372. package/dist/harness/system-prompt.d.ts.map +0 -1
  373. package/dist/harness/system-prompt.js +0 -30
  374. package/dist/harness/system-prompt.js.map +0 -1
  375. package/dist/harness/telemetry.d.ts +0 -1242
  376. package/dist/harness/telemetry.d.ts.map +0 -1
  377. package/dist/harness/telemetry.js +0 -527
  378. package/dist/harness/telemetry.js.map +0 -1
  379. package/dist/harness/tools/bash.d.ts +0 -27
  380. package/dist/harness/tools/bash.d.ts.map +0 -1
  381. package/dist/harness/tools/bash.js +0 -105
  382. package/dist/harness/tools/bash.js.map +0 -1
  383. package/dist/harness/tools/edit-diff.d.ts +0 -89
  384. package/dist/harness/tools/edit-diff.d.ts.map +0 -1
  385. package/dist/harness/tools/edit-diff.js +0 -386
  386. package/dist/harness/tools/edit-diff.js.map +0 -1
  387. package/dist/harness/tools/edit.d.ts +0 -19
  388. package/dist/harness/tools/edit.d.ts.map +0 -1
  389. package/dist/harness/tools/edit.js +0 -108
  390. package/dist/harness/tools/edit.js.map +0 -1
  391. package/dist/harness/tools/file-mutation-queue.d.ts +0 -5
  392. package/dist/harness/tools/file-mutation-queue.d.ts.map +0 -1
  393. package/dist/harness/tools/file-mutation-queue.js +0 -46
  394. package/dist/harness/tools/file-mutation-queue.js.map +0 -1
  395. package/dist/harness/tools/image.d.ts +0 -3
  396. package/dist/harness/tools/image.d.ts.map +0 -1
  397. package/dist/harness/tools/image.js +0 -106
  398. package/dist/harness/tools/image.js.map +0 -1
  399. package/dist/harness/tools/index.d.ts +0 -6
  400. package/dist/harness/tools/index.d.ts.map +0 -1
  401. package/dist/harness/tools/index.js +0 -5
  402. package/dist/harness/tools/index.js.map +0 -1
  403. package/dist/harness/tools/path-utils.d.ts +0 -5
  404. package/dist/harness/tools/path-utils.d.ts.map +0 -1
  405. package/dist/harness/tools/path-utils.js +0 -26
  406. package/dist/harness/tools/path-utils.js.map +0 -1
  407. package/dist/harness/tools/read.d.ts +0 -35
  408. package/dist/harness/tools/read.d.ts.map +0 -1
  409. package/dist/harness/tools/read.js +0 -108
  410. package/dist/harness/tools/read.js.map +0 -1
  411. package/dist/harness/tools/tool-context.d.ts +0 -6
  412. package/dist/harness/tools/tool-context.d.ts.map +0 -1
  413. package/dist/harness/tools/tool-context.js +0 -2
  414. package/dist/harness/tools/tool-context.js.map +0 -1
  415. package/dist/harness/tools/write.d.ts +0 -11
  416. package/dist/harness/tools/write.d.ts.map +0 -1
  417. package/dist/harness/tools/write.js +0 -31
  418. package/dist/harness/tools/write.js.map +0 -1
  419. package/dist/harness/types.d.ts +0 -305
  420. package/dist/harness/types.d.ts.map +0 -1
  421. package/dist/harness/types.js +0 -75
  422. package/dist/harness/types.js.map +0 -1
  423. package/dist/harness/utils/adaptive-publisher.d.ts +0 -24
  424. package/dist/harness/utils/adaptive-publisher.d.ts.map +0 -1
  425. package/dist/harness/utils/adaptive-publisher.js +0 -79
  426. package/dist/harness/utils/adaptive-publisher.js.map +0 -1
  427. package/dist/harness/utils/output-capture.d.ts +0 -31
  428. package/dist/harness/utils/output-capture.d.ts.map +0 -1
  429. package/dist/harness/utils/output-capture.js +0 -217
  430. package/dist/harness/utils/output-capture.js.map +0 -1
  431. package/dist/harness/utils/shell-output.d.ts +0 -29
  432. package/dist/harness/utils/shell-output.d.ts.map +0 -1
  433. package/dist/harness/utils/shell-output.js +0 -71
  434. package/dist/harness/utils/shell-output.js.map +0 -1
  435. package/dist/harness/utils/truncate.d.ts +0 -71
  436. package/dist/harness/utils/truncate.d.ts.map +0 -1
  437. package/dist/harness/utils/truncate.js +0 -296
  438. package/dist/harness/utils/truncate.js.map +0 -1
  439. package/dist/harness/utils/usage.d.ts +0 -4
  440. package/dist/harness/utils/usage.d.ts.map +0 -1
  441. package/dist/harness/utils/usage.js +0 -33
  442. package/dist/harness/utils/usage.js.map +0 -1
  443. package/dist/node.d.ts +0 -3
  444. package/dist/node.d.ts.map +0 -1
  445. package/dist/node.js +0 -3
  446. package/dist/node.js.map +0 -1
  447. package/dist/search/index.d.ts +0 -29
  448. package/dist/search/index.d.ts.map +0 -1
  449. package/dist/search/index.js +0 -2
  450. package/dist/search/index.js.map +0 -1
@@ -1,95 +0,0 @@
1
- import type { AssistantMessageFrame } from "@earendil-works/pi-ai";
2
- import type { AgentToolResult } from "../../types.ts";
3
- import type { DurableStructuralPreparation, JsonValue, LaneConfiguration, LaneState, OperationMeta, OperationResultRecord, OperationState, PendingEntry } from "./types.ts";
4
- declare const storedValueType: unique symbol;
5
- export interface StoredAddressBase {
6
- readonly namespace: string;
7
- readonly key: string;
8
- readonly kind: "value" | "list";
9
- }
10
- export interface Value<T> extends StoredAddressBase {
11
- readonly kind: "value";
12
- readonly [storedValueType]?: (value: T) => T;
13
- }
14
- export interface ValueList<T> extends StoredAddressBase {
15
- readonly kind: "list";
16
- readonly [storedValueType]?: (value: T) => T;
17
- }
18
- export interface StoredValue<T> {
19
- address: Value<T>;
20
- value: T;
21
- seq: number;
22
- }
23
- export interface ListElement<T> {
24
- seq: number;
25
- value: T;
26
- }
27
- export interface ListCursor {
28
- seq: number;
29
- }
30
- export interface ListReadOptions {
31
- cursor?: ListCursor;
32
- order?: "asc" | "desc";
33
- limit?: number;
34
- }
35
- export interface ResolvedListReadOptions {
36
- cursor?: ListCursor;
37
- order: "asc" | "desc";
38
- limit: number;
39
- }
40
- export interface ValueSetWrite {
41
- kind: "value";
42
- op: "set";
43
- namespace: string;
44
- key: string;
45
- value: unknown;
46
- }
47
- export interface ValueDeleteWrite {
48
- kind: "value";
49
- op: "delete";
50
- namespace: string;
51
- key: string;
52
- }
53
- export interface ListAppendWrite {
54
- kind: "list";
55
- op: "append";
56
- namespace: string;
57
- key: string;
58
- value: unknown;
59
- }
60
- export interface ListDeleteWrite {
61
- kind: "list";
62
- op: "delete";
63
- namespace: string;
64
- key: string;
65
- }
66
- export type ValueWrite = ValueSetWrite | ValueDeleteWrite;
67
- export type ListWrite = ListAppendWrite | ListDeleteWrite;
68
- export declare function value<T>(namespace: string, key?: string): Value<T>;
69
- export declare function list<T>(namespace: string, key?: string): ValueList<T>;
70
- export declare function setValue<T>(address: Value<T>, next: NoInfer<T>): ValueSetWrite;
71
- export declare function deleteValue<T>(address: Value<T>): ValueDeleteWrite;
72
- export declare function appendList<T>(address: ValueList<T>, element: NoInfer<T>): ListAppendWrite;
73
- export declare function deleteList<T>(address: ValueList<T>): ListDeleteWrite;
74
- export declare function resolveListReadOptions(options?: ListReadOptions): ResolvedListReadOptions;
75
- export declare const branchTip: (branch: string) => Value<string | null>;
76
- export declare const branchTipInventoryPrefix: () => Value<string | null>;
77
- export declare const laneConfig: (lane: string) => Value<LaneConfiguration>;
78
- export declare const laneState: (lane: string) => Value<LaneState>;
79
- export declare const operationResult: (operationId: string) => Value<OperationResultRecord>;
80
- export declare const operationMeta: (operationId: string) => Value<OperationMeta>;
81
- export declare const operationState: (operationId: string) => Value<OperationState>;
82
- export declare const operationToolArgs: (operationId: string, stepId: string, sourceIndex: number) => Value<Record<string, JsonValue>>;
83
- export declare const operationToolMemo: (operationId: string, invocationId: string, name: string) => Value<JsonValue>;
84
- export declare const operationPreparation: (operationId: string, taskId: string) => Value<DurableStructuralPreparation>;
85
- export declare const operationToolArgsPrefix: (operationId: string, stepId?: string) => Value<Record<string, JsonValue>>;
86
- export declare const operationToolMemoPrefix: (operationId: string, invocationId?: string) => Value<JsonValue>;
87
- export declare const operationPreparationPrefix: (operationId: string) => Value<DurableStructuralPreparation>;
88
- export declare const pendingEntry: (entryId: string) => Value<PendingEntry>;
89
- export declare const pendingToolOutput: (operationId: string, invocationId: string) => Value<AgentToolResult<unknown>>;
90
- export declare const pendingAssistantFrames: (operationId: string, responseEntryId: string) => ValueList<AssistantMessageFrame>;
91
- export declare const pendingToolOutputPrefix: (operationId: string) => Value<AgentToolResult<unknown>>;
92
- export declare const sessionName: Value<string>;
93
- export declare const entryLabel: (entryId: string) => Value<string>;
94
- export {};
95
- //# sourceMappingURL=values.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/harness/session/values.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- function validateAddress(namespace, key) {
2
- if (namespace.length === 0)
3
- throw new TypeError("Value namespace must not be empty");
4
- if (namespace.includes("\u0000"))
5
- throw new TypeError("Value namespace must not contain \\u0000");
6
- if (key.includes("\u0000"))
7
- throw new TypeError("Value key must not contain \\u0000");
8
- }
9
- export function value(namespace, key = "") {
10
- validateAddress(namespace, key);
11
- return Object.freeze({ namespace, key, kind: "value" });
12
- }
13
- export function list(namespace, key = "") {
14
- validateAddress(namespace, key);
15
- return Object.freeze({ namespace, key, kind: "list" });
16
- }
17
- export function setValue(address, next) {
18
- return {
19
- kind: "value",
20
- op: "set",
21
- namespace: address.namespace,
22
- key: address.key,
23
- value: next,
24
- };
25
- }
26
- export function deleteValue(address) {
27
- return {
28
- kind: "value",
29
- op: "delete",
30
- namespace: address.namespace,
31
- key: address.key,
32
- };
33
- }
34
- export function appendList(address, element) {
35
- return {
36
- kind: "list",
37
- op: "append",
38
- namespace: address.namespace,
39
- key: address.key,
40
- value: element,
41
- };
42
- }
43
- export function deleteList(address) {
44
- return {
45
- kind: "list",
46
- op: "delete",
47
- namespace: address.namespace,
48
- key: address.key,
49
- };
50
- }
51
- export function resolveListReadOptions(options = {}) {
52
- const requestedLimit = options.limit ?? 1_000;
53
- if (!Number.isSafeInteger(requestedLimit) || requestedLimit <= 0) {
54
- throw new TypeError("List read limit must be a positive safe integer");
55
- }
56
- return {
57
- ...(options.cursor === undefined ? {} : { cursor: options.cursor }),
58
- order: options.order ?? "asc",
59
- limit: Math.min(requestedLimit, 10_000),
60
- };
61
- }
62
- export const branchTip = (branch) => value("pi.branch.tip", branch);
63
- export const branchTipInventoryPrefix = () => value("pi.branch.tip");
64
- export const laneConfig = (lane) => value("pi.lane.config", lane);
65
- export const laneState = (lane) => value("pi.lane.state", lane);
66
- export const operationResult = (operationId) => value("pi.result", operationId);
67
- export const operationMeta = (operationId) => value("pi.op.meta", operationId);
68
- export const operationState = (operationId) => value("pi.op.state", operationId);
69
- export const operationToolArgs = (operationId, stepId, sourceIndex) => value("pi.op.tool_args", `${operationId}:${stepId}:${sourceIndex}`);
70
- export const operationToolMemo = (operationId, invocationId, name) => value("pi.op.tool_memo", `${operationId}:${invocationId}:${name}`);
71
- export const operationPreparation = (operationId, taskId) => value("pi.op.preparation", `${operationId}:${taskId}`);
72
- export const operationToolArgsPrefix = (operationId, stepId) => value("pi.op.tool_args", stepId === undefined ? `${operationId}:` : `${operationId}:${stepId}:`);
73
- export const operationToolMemoPrefix = (operationId, invocationId) => value("pi.op.tool_memo", invocationId === undefined ? `${operationId}:` : `${operationId}:${invocationId}:`);
74
- export const operationPreparationPrefix = (operationId) => value("pi.op.preparation", `${operationId}:`);
75
- export const pendingEntry = (entryId) => value("pi.pending.entry", entryId);
76
- export const pendingToolOutput = (operationId, invocationId) => value("pi.pending.tool_output", `${operationId}:${invocationId}`);
77
- export const pendingAssistantFrames = (operationId, responseEntryId) => list("pi.pending.assistant_frame", `${operationId}:${responseEntryId}`);
78
- export const pendingToolOutputPrefix = (operationId) => value("pi.pending.tool_output", `${operationId}:`);
79
- export const sessionName = value("pi.session.name");
80
- export const entryLabel = (entryId) => value("pi.entry.label", entryId);
81
- //# sourceMappingURL=values.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/harness/session/values.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessageFrame } from \"@earendil-works/pi-ai\";\nimport type { AgentToolResult } from \"../../types.ts\";\nimport type {\n\tDurableStructuralPreparation,\n\tJsonValue,\n\tLaneConfiguration,\n\tLaneState,\n\tOperationMeta,\n\tOperationResultRecord,\n\tOperationState,\n\tPendingEntry,\n} from \"./types.ts\";\n\ndeclare const storedValueType: unique symbol;\n\nexport interface StoredAddressBase {\n\treadonly namespace: string;\n\treadonly key: string;\n\treadonly kind: \"value\" | \"list\";\n}\n\nexport interface Value<T> extends StoredAddressBase {\n\treadonly kind: \"value\";\n\treadonly [storedValueType]?: (value: T) => T;\n}\n\nexport interface ValueList<T> extends StoredAddressBase {\n\treadonly kind: \"list\";\n\treadonly [storedValueType]?: (value: T) => T;\n}\n\nexport interface StoredValue<T> {\n\taddress: Value<T>;\n\tvalue: T;\n\tseq: number;\n}\n\nexport interface ListElement<T> {\n\tseq: number;\n\tvalue: T;\n}\n\nexport interface ListCursor {\n\tseq: number;\n}\n\nexport interface ListReadOptions {\n\tcursor?: ListCursor;\n\torder?: \"asc\" | \"desc\";\n\tlimit?: number;\n}\n\nexport interface ResolvedListReadOptions {\n\tcursor?: ListCursor;\n\torder: \"asc\" | \"desc\";\n\tlimit: number;\n}\n\nexport interface ValueSetWrite {\n\tkind: \"value\";\n\top: \"set\";\n\tnamespace: string;\n\tkey: string;\n\tvalue: unknown;\n}\n\nexport interface ValueDeleteWrite {\n\tkind: \"value\";\n\top: \"delete\";\n\tnamespace: string;\n\tkey: string;\n}\n\nexport interface ListAppendWrite {\n\tkind: \"list\";\n\top: \"append\";\n\tnamespace: string;\n\tkey: string;\n\tvalue: unknown;\n}\n\nexport interface ListDeleteWrite {\n\tkind: \"list\";\n\top: \"delete\";\n\tnamespace: string;\n\tkey: string;\n}\n\nexport type ValueWrite = ValueSetWrite | ValueDeleteWrite;\nexport type ListWrite = ListAppendWrite | ListDeleteWrite;\n\nfunction validateAddress(namespace: string, key: string): void {\n\tif (namespace.length === 0) throw new TypeError(\"Value namespace must not be empty\");\n\tif (namespace.includes(\"\\u0000\")) throw new TypeError(\"Value namespace must not contain \\\\u0000\");\n\tif (key.includes(\"\\u0000\")) throw new TypeError(\"Value key must not contain \\\\u0000\");\n}\n\nexport function value<T>(namespace: string, key = \"\"): Value<T> {\n\tvalidateAddress(namespace, key);\n\treturn Object.freeze({ namespace, key, kind: \"value\" }) as Value<T>;\n}\n\nexport function list<T>(namespace: string, key = \"\"): ValueList<T> {\n\tvalidateAddress(namespace, key);\n\treturn Object.freeze({ namespace, key, kind: \"list\" }) as ValueList<T>;\n}\n\nexport function setValue<T>(address: Value<T>, next: NoInfer<T>): ValueSetWrite {\n\treturn {\n\t\tkind: \"value\",\n\t\top: \"set\",\n\t\tnamespace: address.namespace,\n\t\tkey: address.key,\n\t\tvalue: next,\n\t};\n}\n\nexport function deleteValue<T>(address: Value<T>): ValueDeleteWrite {\n\treturn {\n\t\tkind: \"value\",\n\t\top: \"delete\",\n\t\tnamespace: address.namespace,\n\t\tkey: address.key,\n\t};\n}\n\nexport function appendList<T>(address: ValueList<T>, element: NoInfer<T>): ListAppendWrite {\n\treturn {\n\t\tkind: \"list\",\n\t\top: \"append\",\n\t\tnamespace: address.namespace,\n\t\tkey: address.key,\n\t\tvalue: element,\n\t};\n}\n\nexport function deleteList<T>(address: ValueList<T>): ListDeleteWrite {\n\treturn {\n\t\tkind: \"list\",\n\t\top: \"delete\",\n\t\tnamespace: address.namespace,\n\t\tkey: address.key,\n\t};\n}\n\nexport function resolveListReadOptions(options: ListReadOptions = {}): ResolvedListReadOptions {\n\tconst requestedLimit = options.limit ?? 1_000;\n\tif (!Number.isSafeInteger(requestedLimit) || requestedLimit <= 0) {\n\t\tthrow new TypeError(\"List read limit must be a positive safe integer\");\n\t}\n\treturn {\n\t\t...(options.cursor === undefined ? {} : { cursor: options.cursor }),\n\t\torder: options.order ?? \"asc\",\n\t\tlimit: Math.min(requestedLimit, 10_000),\n\t};\n}\n\nexport const branchTip = (branch: string) => value<string | null>(\"pi.branch.tip\", branch);\nexport const branchTipInventoryPrefix = () => value<string | null>(\"pi.branch.tip\");\nexport const laneConfig = (lane: string) => value<LaneConfiguration>(\"pi.lane.config\", lane);\nexport const laneState = (lane: string) => value<LaneState>(\"pi.lane.state\", lane);\nexport const operationResult = (operationId: string) => value<OperationResultRecord>(\"pi.result\", operationId);\n\nexport const operationMeta = (operationId: string) => value<OperationMeta>(\"pi.op.meta\", operationId);\nexport const operationState = (operationId: string) => value<OperationState>(\"pi.op.state\", operationId);\nexport const operationToolArgs = (operationId: string, stepId: string, sourceIndex: number) =>\n\tvalue<Record<string, JsonValue>>(\"pi.op.tool_args\", `${operationId}:${stepId}:${sourceIndex}`);\nexport const operationToolMemo = (operationId: string, invocationId: string, name: string) =>\n\tvalue<JsonValue>(\"pi.op.tool_memo\", `${operationId}:${invocationId}:${name}`);\nexport const operationPreparation = (operationId: string, taskId: string) =>\n\tvalue<DurableStructuralPreparation>(\"pi.op.preparation\", `${operationId}:${taskId}`);\n\nexport const operationToolArgsPrefix = (operationId: string, stepId?: string) =>\n\tvalue<Record<string, JsonValue>>(\n\t\t\"pi.op.tool_args\",\n\t\tstepId === undefined ? `${operationId}:` : `${operationId}:${stepId}:`,\n\t);\nexport const operationToolMemoPrefix = (operationId: string, invocationId?: string) =>\n\tvalue<JsonValue>(\n\t\t\"pi.op.tool_memo\",\n\t\tinvocationId === undefined ? `${operationId}:` : `${operationId}:${invocationId}:`,\n\t);\nexport const operationPreparationPrefix = (operationId: string) =>\n\tvalue<DurableStructuralPreparation>(\"pi.op.preparation\", `${operationId}:`);\n\nexport const pendingEntry = (entryId: string) => value<PendingEntry>(\"pi.pending.entry\", entryId);\nexport const pendingToolOutput = (operationId: string, invocationId: string) =>\n\tvalue<AgentToolResult<unknown>>(\"pi.pending.tool_output\", `${operationId}:${invocationId}`);\nexport const pendingAssistantFrames = (operationId: string, responseEntryId: string) =>\n\tlist<AssistantMessageFrame>(\"pi.pending.assistant_frame\", `${operationId}:${responseEntryId}`);\nexport const pendingToolOutputPrefix = (operationId: string) =>\n\tvalue<AgentToolResult<unknown>>(\"pi.pending.tool_output\", `${operationId}:`);\n\nexport const sessionName = value<string>(\"pi.session.name\");\nexport const entryLabel = (entryId: string) => value<string>(\"pi.entry.label\", entryId);\n"]}
@@ -1,46 +0,0 @@
1
- import type { Context } from "./context.ts";
2
- import { type ExecutionEnv, type Skill } from "./types.ts";
3
- export type SkillDiagnosticCode = "file_info_failed" | "list_failed" | "read_failed" | "parse_failed" | "invalid_metadata";
4
- /** Warning produced while loading skills. */
5
- export interface SkillDiagnostic {
6
- /** Diagnostic severity. Currently only warnings are emitted. */
7
- type: "warning";
8
- /** Stable diagnostic code. */
9
- code: SkillDiagnosticCode;
10
- /** Human-readable diagnostic message. */
11
- message: string;
12
- /** Path associated with the diagnostic. */
13
- path: string;
14
- }
15
- /** Format a skill invocation prompt, optionally appending additional user instructions. */
16
- export declare function formatSkillInvocation(skill: Skill, additionalInstructions?: string): string;
17
- /**
18
- * Load skills from one or more directories.
19
- *
20
- * Traverses directories recursively, loads `SKILL.md` files, loads direct root `.md` files with skill
21
- * frontmatter, honors ignore files, and returns diagnostics for invalid declared skill files. Missing input
22
- * directories are skipped.
23
- */
24
- export declare function loadSkills(env: ExecutionEnv, dirs: string | string[], context: Context): Promise<{
25
- skills: Skill[];
26
- diagnostics: SkillDiagnostic[];
27
- }>;
28
- /**
29
- * Load skills from source-tagged directories.
30
- *
31
- * Source values are preserved exactly and attached to every loaded skill and diagnostic. The agent package does not
32
- * interpret source values; applications define their own provenance shape.
33
- */
34
- export declare function loadSourcedSkills<TSource, TSkill extends Skill = Skill>(env: ExecutionEnv, inputs: Array<{
35
- path: string;
36
- source: TSource;
37
- }>, mapSkill: ((skill: Skill, source: TSource, context: Context) => TSkill) | undefined, context: Context): Promise<{
38
- skills: Array<{
39
- skill: TSkill;
40
- source: TSource;
41
- }>;
42
- diagnostics: Array<SkillDiagnostic & {
43
- source: TSource;
44
- }>;
45
- }>;
46
- //# sourceMappingURL=skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/harness/skills.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,YAAY,EAA8B,KAAK,KAAK,EAAW,MAAM,YAAY,CAAC;AAQhG,MAAM,MAAM,mBAAmB,GAC5B,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,cAAc,GACd,kBAAkB,CAAC;AAEtB,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC/B,gEAAgE;IAChE,IAAI,EAAE,SAAS,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;CACb;AASD,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3F;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,OAAO,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,WAAW,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAuB9D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5E,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,EAChD,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,GAAG,SAAS,EACnF,OAAO,EAAE,OAAO,GACd,OAAO,CAAC;IACV,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClD,WAAW,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1D,CAAC,CAcD"}
@@ -1,326 +0,0 @@
1
- import ignore from "ignore";
2
- import { parse } from "yaml";
3
- import { toError } from "./types.js";
4
- const MAX_NAME_LENGTH = 64;
5
- const MAX_DESCRIPTION_LENGTH = 1024;
6
- const IGNORE_FILE_NAMES = [".gitignore", ".ignore", ".fdignore"];
7
- /** Format a skill invocation prompt, optionally appending additional user instructions. */
8
- export function formatSkillInvocation(skill, additionalInstructions) {
9
- const skillBlock = `<skill name="${skill.name}" location="${skill.filePath}">\nReferences are relative to ${dirnameEnvPath(skill.filePath)}.\n\n${skill.content}\n</skill>`;
10
- return additionalInstructions ? `${skillBlock}\n\n${additionalInstructions}` : skillBlock;
11
- }
12
- /**
13
- * Load skills from one or more directories.
14
- *
15
- * Traverses directories recursively, loads `SKILL.md` files, loads direct root `.md` files with skill
16
- * frontmatter, honors ignore files, and returns diagnostics for invalid declared skill files. Missing input
17
- * directories are skipped.
18
- */
19
- export async function loadSkills(env, dirs, context) {
20
- const skills = [];
21
- const diagnostics = [];
22
- for (const dir of Array.isArray(dirs) ? dirs : [dirs]) {
23
- const rootInfoResult = await env.fileInfo(dir, context);
24
- if (!rootInfoResult.ok) {
25
- if (rootInfoResult.error.code !== "not_found") {
26
- diagnostics.push({
27
- type: "warning",
28
- code: "file_info_failed",
29
- message: rootInfoResult.error.message,
30
- path: dir,
31
- });
32
- }
33
- continue;
34
- }
35
- const rootInfo = rootInfoResult.value;
36
- if ((await resolveKind(env, rootInfo, diagnostics, context)) !== "directory")
37
- continue;
38
- const result = await loadSkillsFromDirInternal(env, rootInfo.path, true, ignore(), rootInfo.path, context);
39
- skills.push(...result.skills);
40
- diagnostics.push(...result.diagnostics);
41
- }
42
- return { skills, diagnostics };
43
- }
44
- /**
45
- * Load skills from source-tagged directories.
46
- *
47
- * Source values are preserved exactly and attached to every loaded skill and diagnostic. The agent package does not
48
- * interpret source values; applications define their own provenance shape.
49
- */
50
- export async function loadSourcedSkills(env, inputs, mapSkill, context) {
51
- const skills = [];
52
- const diagnostics = [];
53
- for (const input of inputs) {
54
- const result = await loadSkills(env, input.path, context);
55
- for (const skill of result.skills) {
56
- skills.push({
57
- skill: mapSkill ? mapSkill(skill, input.source, context) : skill,
58
- source: input.source,
59
- });
60
- }
61
- for (const diagnostic of result.diagnostics)
62
- diagnostics.push({ ...diagnostic, source: input.source });
63
- }
64
- return { skills, diagnostics };
65
- }
66
- async function loadSkillsFromDirInternal(env, dir, includeRootFiles, ignoreMatcher, rootDir, context) {
67
- const skills = [];
68
- const diagnostics = [];
69
- const dirInfoResult = await env.fileInfo(dir, context);
70
- if (!dirInfoResult.ok) {
71
- if (dirInfoResult.error.code !== "not_found") {
72
- diagnostics.push({
73
- type: "warning",
74
- code: "file_info_failed",
75
- message: dirInfoResult.error.message,
76
- path: dir,
77
- });
78
- }
79
- return { skills, diagnostics };
80
- }
81
- const dirInfo = dirInfoResult.value;
82
- if ((await resolveKind(env, dirInfo, diagnostics, context)) !== "directory")
83
- return { skills, diagnostics };
84
- await addIgnoreRules(env, ignoreMatcher, dir, rootDir, diagnostics, context);
85
- const entriesResult = await env.listDir(dir, context);
86
- if (!entriesResult.ok) {
87
- diagnostics.push({ type: "warning", code: "list_failed", message: entriesResult.error.message, path: dir });
88
- return { skills, diagnostics };
89
- }
90
- const entries = entriesResult.value;
91
- for (const entry of entries) {
92
- if (entry.name !== "SKILL.md")
93
- continue;
94
- const fullPath = entry.path;
95
- const kind = await resolveKind(env, entry, diagnostics, context);
96
- if (kind !== "file")
97
- continue;
98
- const relPath = relativeEnvPath(rootDir, fullPath);
99
- if (ignoreMatcher.ignores(relPath))
100
- continue;
101
- const result = await loadSkillFromFile(env, fullPath, dirInfo.name, context);
102
- if (result.skill)
103
- skills.push(result.skill);
104
- diagnostics.push(...result.diagnostics);
105
- return { skills, diagnostics };
106
- }
107
- for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
108
- if (entry.name.startsWith(".") || entry.name === "node_modules")
109
- continue;
110
- const fullPath = entry.path;
111
- const kind = await resolveKind(env, entry, diagnostics, context);
112
- if (!kind)
113
- continue;
114
- const relPath = relativeEnvPath(rootDir, fullPath);
115
- const ignorePath = kind === "directory" ? `${relPath}/` : relPath;
116
- if (ignoreMatcher.ignores(ignorePath))
117
- continue;
118
- if (kind === "directory") {
119
- const result = await loadSkillsFromDirInternal(env, fullPath, false, ignoreMatcher, rootDir, context);
120
- skills.push(...result.skills);
121
- diagnostics.push(...result.diagnostics);
122
- continue;
123
- }
124
- if (kind !== "file" || !includeRootFiles || !entry.name.endsWith(".md"))
125
- continue;
126
- const result = await loadSkillFromFile(env, fullPath, dirInfo.name, context);
127
- if (result.skill)
128
- skills.push(result.skill);
129
- diagnostics.push(...result.diagnostics);
130
- }
131
- return { skills, diagnostics };
132
- }
133
- async function addIgnoreRules(env, ig, dir, rootDir, diagnostics, context) {
134
- const relativeDir = relativeEnvPath(rootDir, dir);
135
- const prefix = relativeDir ? `${relativeDir}/` : "";
136
- for (const filename of IGNORE_FILE_NAMES) {
137
- const ignorePathResult = await env.joinPath([dir, filename], context);
138
- if (!ignorePathResult.ok) {
139
- diagnostics.push({
140
- type: "warning",
141
- code: "file_info_failed",
142
- message: ignorePathResult.error.message,
143
- path: dir,
144
- });
145
- continue;
146
- }
147
- const ignorePath = ignorePathResult.value;
148
- const info = await env.fileInfo(ignorePath, context);
149
- if (!info.ok) {
150
- if (info.error.code !== "not_found") {
151
- diagnostics.push({
152
- type: "warning",
153
- code: "file_info_failed",
154
- message: info.error.message,
155
- path: ignorePath,
156
- });
157
- }
158
- continue;
159
- }
160
- if (info.value.kind !== "file")
161
- continue;
162
- const content = await env.readTextFile(ignorePath, context);
163
- if (!content.ok) {
164
- diagnostics.push({ type: "warning", code: "read_failed", message: content.error.message, path: ignorePath });
165
- continue;
166
- }
167
- const patterns = content.value
168
- .split(/\r?\n/)
169
- .map((line) => prefixIgnorePattern(line, prefix))
170
- .filter((line) => Boolean(line));
171
- if (patterns.length > 0)
172
- ig.add(patterns);
173
- }
174
- }
175
- function prefixIgnorePattern(line, prefix) {
176
- const trimmed = line.trim();
177
- if (!trimmed)
178
- return null;
179
- if (trimmed.startsWith("#") && !trimmed.startsWith("\\#"))
180
- return null;
181
- let pattern = line;
182
- let negated = false;
183
- if (pattern.startsWith("!")) {
184
- negated = true;
185
- pattern = pattern.slice(1);
186
- }
187
- else if (pattern.startsWith("\\!")) {
188
- pattern = pattern.slice(1);
189
- }
190
- if (pattern.startsWith("/"))
191
- pattern = pattern.slice(1);
192
- const prefixed = prefix ? `${prefix}${pattern}` : pattern;
193
- return negated ? `!${prefixed}` : prefixed;
194
- }
195
- async function loadSkillFromFile(env, filePath, parentDirName, context) {
196
- const diagnostics = [];
197
- const isDeclaredSkill = filePath
198
- .replace(/[\\/]+$/, "")
199
- .split(/[\\/]/)
200
- .pop() === "SKILL.md";
201
- const rawContent = await env.readTextFile(filePath, context);
202
- if (!rawContent.ok) {
203
- diagnostics.push({ type: "warning", code: "read_failed", message: rawContent.error.message, path: filePath });
204
- return { skill: null, diagnostics };
205
- }
206
- const parsed = parseFrontmatter(rawContent.value);
207
- if (!parsed.ok) {
208
- if (isDeclaredSkill) {
209
- diagnostics.push({ type: "warning", code: "parse_failed", message: parsed.error.message, path: filePath });
210
- }
211
- return { skill: null, diagnostics };
212
- }
213
- const { frontmatter, body } = parsed.value;
214
- const description = typeof frontmatter.description === "string" ? frontmatter.description : undefined;
215
- if (!isDeclaredSkill && (!description || description.trim() === "")) {
216
- return { skill: null, diagnostics };
217
- }
218
- for (const error of validateDescription(description)) {
219
- diagnostics.push({ type: "warning", code: "invalid_metadata", message: error, path: filePath });
220
- }
221
- const frontmatterName = typeof frontmatter.name === "string" ? frontmatter.name : undefined;
222
- const name = frontmatterName || parentDirName;
223
- for (const error of validateName(name, parentDirName)) {
224
- diagnostics.push({ type: "warning", code: "invalid_metadata", message: error, path: filePath });
225
- }
226
- if (!description || description.trim() === "") {
227
- return { skill: null, diagnostics };
228
- }
229
- return {
230
- skill: {
231
- name,
232
- description,
233
- content: body,
234
- filePath,
235
- disableModelInvocation: frontmatter["disable-model-invocation"] === true,
236
- },
237
- diagnostics,
238
- };
239
- }
240
- function validateName(name, parentDirName) {
241
- const errors = [];
242
- if (name !== parentDirName)
243
- errors.push(`name "${name}" does not match parent directory "${parentDirName}"`);
244
- if (name.length > MAX_NAME_LENGTH)
245
- errors.push(`name exceeds ${MAX_NAME_LENGTH} characters (${name.length})`);
246
- if (!/^[a-z0-9-]+$/.test(name)) {
247
- errors.push("name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)");
248
- }
249
- if (name.startsWith("-") || name.endsWith("-"))
250
- errors.push("name must not start or end with a hyphen");
251
- if (name.includes("--"))
252
- errors.push("name must not contain consecutive hyphens");
253
- return errors;
254
- }
255
- function validateDescription(description) {
256
- const errors = [];
257
- if (!description || description.trim() === "") {
258
- errors.push("description is required");
259
- }
260
- else if (description.length > MAX_DESCRIPTION_LENGTH) {
261
- errors.push(`description exceeds ${MAX_DESCRIPTION_LENGTH} characters (${description.length})`);
262
- }
263
- return errors;
264
- }
265
- function parseFrontmatter(content) {
266
- try {
267
- const normalized = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
268
- if (!normalized.startsWith("---"))
269
- return { ok: true, value: { frontmatter: {}, body: normalized } };
270
- const endIndex = normalized.indexOf("\n---", 3);
271
- if (endIndex === -1)
272
- return { ok: true, value: { frontmatter: {}, body: normalized } };
273
- const yamlString = normalized.slice(4, endIndex);
274
- const body = normalized.slice(endIndex + 4).trim();
275
- return { ok: true, value: { frontmatter: (parse(yamlString) ?? {}), body } };
276
- }
277
- catch (error) {
278
- return { ok: false, error: toError(error) };
279
- }
280
- }
281
- async function resolveKind(env, info, diagnostics, context) {
282
- if (info.kind === "file" || info.kind === "directory")
283
- return info.kind;
284
- const canonicalPath = await env.canonicalPath(info.path, context);
285
- if (!canonicalPath.ok) {
286
- if (canonicalPath.error.code !== "not_found") {
287
- diagnostics.push({
288
- type: "warning",
289
- code: "file_info_failed",
290
- message: canonicalPath.error.message,
291
- path: info.path,
292
- });
293
- }
294
- return undefined;
295
- }
296
- const target = await env.fileInfo(canonicalPath.value, context);
297
- if (!target.ok) {
298
- if (target.error.code !== "not_found") {
299
- diagnostics.push({
300
- type: "warning",
301
- code: "file_info_failed",
302
- message: target.error.message,
303
- path: info.path,
304
- });
305
- }
306
- return undefined;
307
- }
308
- return target.value.kind === "file" || target.value.kind === "directory" ? target.value.kind : undefined;
309
- }
310
- function dirnameEnvPath(path) {
311
- const normalized = path.replace(/[\\/]+$/, "");
312
- const separatorIndex = Math.max(normalized.lastIndexOf("/"), normalized.lastIndexOf("\\"));
313
- if (separatorIndex === 2 && normalized[1] === ":")
314
- return normalized.slice(0, 3);
315
- return separatorIndex <= 0 ? "/" : normalized.slice(0, separatorIndex);
316
- }
317
- function relativeEnvPath(root, path) {
318
- const normalizedRoot = root.replace(/\\/g, "/").replace(/\/+$/, "");
319
- const normalizedPath = path.replace(/\\/g, "/").replace(/\/+$/, "");
320
- if (normalizedPath === normalizedRoot)
321
- return "";
322
- return normalizedPath.startsWith(`${normalizedRoot}/`)
323
- ? normalizedPath.slice(normalizedRoot.length + 1)
324
- : normalizedPath.replace(/^\/+/, "");
325
- }
326
- //# sourceMappingURL=skills.js.map