@nanonets/graft 0.24.1 → 0.25.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 (480) hide show
  1. package/README.md +26 -21
  2. package/dist/blast/render.js +1 -1
  3. package/dist/blast/render.js.map +1 -1
  4. package/dist/brand.js +1 -1
  5. package/dist/brand.js.map +1 -1
  6. package/dist/check/learning-edits.d.ts +18 -3
  7. package/dist/check/learning-edits.d.ts.map +1 -1
  8. package/dist/check/learning-edits.js +54 -10
  9. package/dist/check/learning-edits.js.map +1 -1
  10. package/dist/check/local-check.d.ts +7 -3
  11. package/dist/check/local-check.d.ts.map +1 -1
  12. package/dist/check/local-check.js +55 -11
  13. package/dist/check/local-check.js.map +1 -1
  14. package/dist/check/types.d.ts +11 -2
  15. package/dist/check/types.d.ts.map +1 -1
  16. package/dist/claude/format.d.ts +11 -7
  17. package/dist/claude/format.d.ts.map +1 -1
  18. package/dist/claude/format.js +50 -28
  19. package/dist/claude/format.js.map +1 -1
  20. package/dist/claude/hook-io.js +1 -1
  21. package/dist/claude/hook-io.js.map +1 -1
  22. package/dist/claude/hook-layers.d.ts +4 -2
  23. package/dist/claude/hook-layers.d.ts.map +1 -1
  24. package/dist/claude/hook-layers.js +21 -4
  25. package/dist/claude/hook-layers.js.map +1 -1
  26. package/dist/claude/hooks.d.ts +9 -32
  27. package/dist/claude/hooks.d.ts.map +1 -1
  28. package/dist/claude/hooks.js +154 -350
  29. package/dist/claude/hooks.js.map +1 -1
  30. package/dist/claude/init.d.ts.map +1 -1
  31. package/dist/claude/init.js +56 -18
  32. package/dist/claude/init.js.map +1 -1
  33. package/dist/claude/note-signals.d.ts +6 -0
  34. package/dist/claude/note-signals.d.ts.map +1 -1
  35. package/dist/claude/note-signals.js +14 -3
  36. package/dist/claude/note-signals.js.map +1 -1
  37. package/dist/claude/post-bash.d.ts +26 -0
  38. package/dist/claude/post-bash.d.ts.map +1 -0
  39. package/dist/claude/post-bash.js +191 -0
  40. package/dist/claude/post-bash.js.map +1 -0
  41. package/dist/claude/pre-bash-skills.d.ts +21 -0
  42. package/dist/claude/pre-bash-skills.d.ts.map +1 -0
  43. package/dist/claude/pre-bash-skills.js +253 -0
  44. package/dist/claude/pre-bash-skills.js.map +1 -0
  45. package/dist/claude/pre-bash.d.ts +50 -0
  46. package/dist/claude/pre-bash.d.ts.map +1 -0
  47. package/dist/claude/pre-bash.js +245 -0
  48. package/dist/claude/pre-bash.js.map +1 -0
  49. package/dist/claude/prompt-consent.d.ts +19 -0
  50. package/dist/claude/prompt-consent.d.ts.map +1 -0
  51. package/dist/claude/prompt-consent.js +14 -0
  52. package/dist/claude/prompt-consent.js.map +1 -0
  53. package/dist/claude/prompt-hook.d.ts +76 -0
  54. package/dist/claude/prompt-hook.d.ts.map +1 -0
  55. package/dist/claude/prompt-hook.js +303 -0
  56. package/dist/claude/prompt-hook.js.map +1 -0
  57. package/dist/claude/prompt-skills.d.ts +19 -0
  58. package/dist/claude/prompt-skills.d.ts.map +1 -0
  59. package/dist/claude/prompt-skills.js +305 -0
  60. package/dist/claude/prompt-skills.js.map +1 -0
  61. package/dist/claude/session-metrics.js +4 -4
  62. package/dist/claude/session-metrics.js.map +1 -1
  63. package/dist/claude/settings-merge.d.ts +10 -0
  64. package/dist/claude/settings-merge.d.ts.map +1 -1
  65. package/dist/claude/settings-merge.js +46 -17
  66. package/dist/claude/settings-merge.js.map +1 -1
  67. package/dist/claude/shim-template.d.ts.map +1 -1
  68. package/dist/claude/shim-template.js +86 -28
  69. package/dist/claude/shim-template.js.map +1 -1
  70. package/dist/claude/skill-template.d.ts +2 -0
  71. package/dist/claude/skill-template.d.ts.map +1 -1
  72. package/dist/claude/skill-template.js +53 -34
  73. package/dist/claude/skill-template.js.map +1 -1
  74. package/dist/claude/skill-use.d.ts +16 -0
  75. package/dist/claude/skill-use.d.ts.map +1 -0
  76. package/dist/claude/skill-use.js +78 -0
  77. package/dist/claude/skill-use.js.map +1 -0
  78. package/dist/claude/skills-wiring.d.ts +26 -0
  79. package/dist/claude/skills-wiring.d.ts.map +1 -0
  80. package/dist/claude/skills-wiring.js +110 -0
  81. package/dist/claude/skills-wiring.js.map +1 -0
  82. package/dist/claude/start-init.d.ts +13 -0
  83. package/dist/claude/start-init.d.ts.map +1 -0
  84. package/dist/claude/start-init.js +75 -0
  85. package/dist/claude/start-init.js.map +1 -0
  86. package/dist/claude/start-skills.d.ts +31 -0
  87. package/dist/claude/start-skills.d.ts.map +1 -0
  88. package/dist/claude/start-skills.js +274 -0
  89. package/dist/claude/start-skills.js.map +1 -0
  90. package/dist/claude/state.d.ts +19 -7
  91. package/dist/claude/state.d.ts.map +1 -1
  92. package/dist/claude/state.js +59 -4
  93. package/dist/claude/state.js.map +1 -1
  94. package/dist/claude/stop-skills.d.ts +23 -0
  95. package/dist/claude/stop-skills.d.ts.map +1 -0
  96. package/dist/claude/stop-skills.js +233 -0
  97. package/dist/claude/stop-skills.js.map +1 -0
  98. package/dist/claude/stop.d.ts +23 -0
  99. package/dist/claude/stop.d.ts.map +1 -0
  100. package/dist/claude/stop.js +219 -0
  101. package/dist/claude/stop.js.map +1 -0
  102. package/dist/claude/tally.d.ts +29 -41
  103. package/dist/claude/tally.d.ts.map +1 -1
  104. package/dist/claude/tally.js +111 -165
  105. package/dist/claude/tally.js.map +1 -1
  106. package/dist/claude/walls-hook.d.ts +52 -0
  107. package/dist/claude/walls-hook.d.ts.map +1 -0
  108. package/dist/claude/walls-hook.js +279 -0
  109. package/dist/claude/walls-hook.js.map +1 -0
  110. package/dist/cli-epilogue.d.ts.map +1 -1
  111. package/dist/cli-epilogue.js +24 -14
  112. package/dist/cli-epilogue.js.map +1 -1
  113. package/dist/cli-meta.js +3 -3
  114. package/dist/cli-meta.js.map +1 -1
  115. package/dist/cli-picker.d.ts.map +1 -1
  116. package/dist/cli-picker.js +8 -6
  117. package/dist/cli-picker.js.map +1 -1
  118. package/dist/cli.d.ts.map +1 -1
  119. package/dist/cli.js +238 -402
  120. package/dist/cli.js.map +1 -1
  121. package/dist/cloud/head-learnings.d.ts +13 -0
  122. package/dist/cloud/head-learnings.d.ts.map +1 -0
  123. package/dist/cloud/head-learnings.js +84 -0
  124. package/dist/cloud/head-learnings.js.map +1 -0
  125. package/dist/cloud/lookup-activity.d.ts +5 -3
  126. package/dist/cloud/lookup-activity.d.ts.map +1 -1
  127. package/dist/cloud/lookup-activity.js +8 -8
  128. package/dist/cloud/lookup-activity.js.map +1 -1
  129. package/dist/cloud/nudge.d.ts +15 -7
  130. package/dist/cloud/nudge.d.ts.map +1 -1
  131. package/dist/cloud/nudge.js +42 -33
  132. package/dist/cloud/nudge.js.map +1 -1
  133. package/dist/cloud/onboarding.d.ts +37 -1
  134. package/dist/cloud/onboarding.d.ts.map +1 -1
  135. package/dist/cloud/onboarding.js +77 -1
  136. package/dist/cloud/onboarding.js.map +1 -1
  137. package/dist/cloud/other-repos.d.ts +39 -0
  138. package/dist/cloud/other-repos.d.ts.map +1 -0
  139. package/dist/cloud/other-repos.js +137 -0
  140. package/dist/cloud/other-repos.js.map +1 -0
  141. package/dist/cloud/pair.d.ts +17 -7
  142. package/dist/cloud/pair.d.ts.map +1 -1
  143. package/dist/cloud/pair.js +81 -60
  144. package/dist/cloud/pair.js.map +1 -1
  145. package/dist/cloud/workspace-sync.d.ts +67 -11
  146. package/dist/cloud/workspace-sync.d.ts.map +1 -1
  147. package/dist/cloud/workspace-sync.js +299 -55
  148. package/dist/cloud/workspace-sync.js.map +1 -1
  149. package/dist/cloud/workspace.d.ts +74 -10
  150. package/dist/cloud/workspace.d.ts.map +1 -1
  151. package/dist/cloud/workspace.js +96 -8
  152. package/dist/cloud/workspace.js.map +1 -1
  153. package/dist/hosts/claude-global.js +1 -1
  154. package/dist/hosts/claude-global.js.map +1 -1
  155. package/dist/hosts/codex-hooks.d.ts +6 -0
  156. package/dist/hosts/codex-hooks.d.ts.map +1 -1
  157. package/dist/hosts/codex-hooks.js +89 -16
  158. package/dist/hosts/codex-hooks.js.map +1 -1
  159. package/dist/hosts/codex-trust.d.ts +28 -0
  160. package/dist/hosts/codex-trust.d.ts.map +1 -0
  161. package/dist/hosts/codex-trust.js +280 -0
  162. package/dist/hosts/codex-trust.js.map +1 -0
  163. package/dist/hosts/cursor-hooks.d.ts.map +1 -1
  164. package/dist/hosts/cursor-hooks.js +3 -1
  165. package/dist/hosts/cursor-hooks.js.map +1 -1
  166. package/dist/init/candidates.d.ts +60 -0
  167. package/dist/init/candidates.d.ts.map +1 -0
  168. package/dist/init/candidates.js +202 -0
  169. package/dist/init/candidates.js.map +1 -0
  170. package/dist/init/claude-call.d.ts +51 -0
  171. package/dist/init/claude-call.d.ts.map +1 -0
  172. package/dist/init/claude-call.js +199 -0
  173. package/dist/init/claude-call.js.map +1 -0
  174. package/dist/init/discover-worker.d.ts +18 -0
  175. package/dist/init/discover-worker.d.ts.map +1 -0
  176. package/dist/init/discover-worker.js +111 -0
  177. package/dist/init/discover-worker.js.map +1 -0
  178. package/dist/init/handover.d.ts +16 -0
  179. package/dist/init/handover.d.ts.map +1 -0
  180. package/dist/init/handover.js +92 -0
  181. package/dist/init/handover.js.map +1 -0
  182. package/dist/init/howtos.d.ts +20 -0
  183. package/dist/init/howtos.d.ts.map +1 -0
  184. package/dist/init/howtos.js +90 -0
  185. package/dist/init/howtos.js.map +1 -0
  186. package/dist/init/init-record.d.ts +134 -0
  187. package/dist/init/init-record.d.ts.map +1 -0
  188. package/dist/init/init-record.js +339 -0
  189. package/dist/init/init-record.js.map +1 -0
  190. package/dist/init/install-paths.d.ts +6 -0
  191. package/dist/init/install-paths.d.ts.map +1 -0
  192. package/dist/init/install-paths.js +87 -0
  193. package/dist/init/install-paths.js.map +1 -0
  194. package/dist/init/keep-answer.d.ts +43 -0
  195. package/dist/init/keep-answer.d.ts.map +1 -0
  196. package/dist/init/keep-answer.js +118 -0
  197. package/dist/init/keep-answer.js.map +1 -0
  198. package/dist/init/keep-gate.d.ts +30 -0
  199. package/dist/init/keep-gate.d.ts.map +1 -0
  200. package/dist/init/keep-gate.js +178 -0
  201. package/dist/init/keep-gate.js.map +1 -0
  202. package/dist/init/keep-list.d.ts +67 -0
  203. package/dist/init/keep-list.d.ts.map +1 -0
  204. package/dist/init/keep-list.js +232 -0
  205. package/dist/init/keep-list.js.map +1 -0
  206. package/dist/init/keep.d.ts +52 -0
  207. package/dist/init/keep.d.ts.map +1 -0
  208. package/dist/init/keep.js +393 -0
  209. package/dist/init/keep.js.map +1 -0
  210. package/dist/init/look-back-mine.d.ts +37 -0
  211. package/dist/init/look-back-mine.d.ts.map +1 -0
  212. package/dist/init/look-back-mine.js +215 -0
  213. package/dist/init/look-back-mine.js.map +1 -0
  214. package/dist/init/look-back.d.ts +81 -0
  215. package/dist/init/look-back.d.ts.map +1 -0
  216. package/dist/init/look-back.js +170 -0
  217. package/dist/init/look-back.js.map +1 -0
  218. package/dist/init/miners.d.ts +46 -0
  219. package/dist/init/miners.d.ts.map +1 -0
  220. package/dist/init/miners.js +141 -0
  221. package/dist/init/miners.js.map +1 -0
  222. package/dist/init/name-call.d.ts +37 -0
  223. package/dist/init/name-call.d.ts.map +1 -0
  224. package/dist/init/name-call.js +151 -0
  225. package/dist/init/name-call.js.map +1 -0
  226. package/dist/init/plain-file.d.ts.map +1 -1
  227. package/dist/init/plain-file.js +3 -0
  228. package/dist/init/plain-file.js.map +1 -1
  229. package/dist/init/prefs.d.ts +70 -0
  230. package/dist/init/prefs.d.ts.map +1 -0
  231. package/dist/init/prefs.js +282 -0
  232. package/dist/init/prefs.js.map +1 -0
  233. package/dist/init/relay.d.ts +15 -0
  234. package/dist/init/relay.d.ts.map +1 -0
  235. package/dist/init/relay.js +15 -0
  236. package/dist/init/relay.js.map +1 -0
  237. package/dist/init/replay-runs.d.ts +121 -0
  238. package/dist/init/replay-runs.d.ts.map +1 -0
  239. package/dist/init/replay-runs.js +457 -0
  240. package/dist/init/replay-runs.js.map +1 -0
  241. package/dist/init/replay-tamper.d.ts +18 -0
  242. package/dist/init/replay-tamper.d.ts.map +1 -0
  243. package/dist/init/replay-tamper.js +87 -0
  244. package/dist/init/replay-tamper.js.map +1 -0
  245. package/dist/init/review-screen.d.ts +74 -0
  246. package/dist/init/review-screen.d.ts.map +1 -0
  247. package/dist/init/review-screen.js +258 -0
  248. package/dist/init/review-screen.js.map +1 -0
  249. package/dist/init/review-tty.d.ts +29 -0
  250. package/dist/init/review-tty.d.ts.map +1 -0
  251. package/dist/init/review-tty.js +218 -0
  252. package/dist/init/review-tty.js.map +1 -0
  253. package/dist/init/review.d.ts +12 -0
  254. package/dist/init/review.d.ts.map +1 -0
  255. package/dist/init/review.js +12 -0
  256. package/dist/init/review.js.map +1 -0
  257. package/dist/init/run.d.ts +87 -0
  258. package/dist/init/run.d.ts.map +1 -0
  259. package/dist/init/run.js +347 -0
  260. package/dist/init/run.js.map +1 -0
  261. package/dist/init/sessions.d.ts +63 -0
  262. package/dist/init/sessions.d.ts.map +1 -0
  263. package/dist/init/sessions.js +377 -0
  264. package/dist/init/sessions.js.map +1 -0
  265. package/dist/init/transcript.d.ts +81 -0
  266. package/dist/init/transcript.d.ts.map +1 -0
  267. package/dist/init/transcript.js +216 -0
  268. package/dist/init/transcript.js.map +1 -0
  269. package/dist/init/types.d.ts +139 -0
  270. package/dist/init/types.d.ts.map +1 -0
  271. package/dist/init/types.js +2 -0
  272. package/dist/init/types.js.map +1 -0
  273. package/dist/notes/cold-start.d.ts +5 -213
  274. package/dist/notes/cold-start.d.ts.map +1 -1
  275. package/dist/notes/cold-start.js +5 -654
  276. package/dist/notes/cold-start.js.map +1 -1
  277. package/dist/notes/edit-overlap.d.ts.map +1 -1
  278. package/dist/notes/edit-overlap.js +4 -1
  279. package/dist/notes/edit-overlap.js.map +1 -1
  280. package/dist/notes/notes.d.ts +8 -4
  281. package/dist/notes/notes.d.ts.map +1 -1
  282. package/dist/notes/notes.js +9 -7
  283. package/dist/notes/notes.js.map +1 -1
  284. package/dist/notes/pr-reviews.d.ts +4 -0
  285. package/dist/notes/pr-reviews.d.ts.map +1 -1
  286. package/dist/notes/pr-reviews.js +6 -5
  287. package/dist/notes/pr-reviews.js.map +1 -1
  288. package/dist/notes/repo-trail.d.ts +1 -1
  289. package/dist/notes/repo-trail.d.ts.map +1 -1
  290. package/dist/notes/repo-trail.js +24 -4
  291. package/dist/notes/repo-trail.js.map +1 -1
  292. package/dist/search/grep.d.ts.map +1 -1
  293. package/dist/search/grep.js +4 -2
  294. package/dist/search/grep.js.map +1 -1
  295. package/dist/search/user-regexp.d.ts +26 -0
  296. package/dist/search/user-regexp.d.ts.map +1 -0
  297. package/dist/search/user-regexp.js +150 -0
  298. package/dist/search/user-regexp.js.map +1 -0
  299. package/dist/skills/anchors-cli.d.ts +5 -0
  300. package/dist/skills/anchors-cli.d.ts.map +1 -1
  301. package/dist/skills/anchors-cli.js +7 -2
  302. package/dist/skills/anchors-cli.js.map +1 -1
  303. package/dist/skills/anchors-wide.js +2 -2
  304. package/dist/skills/anchors-wide.js.map +1 -1
  305. package/dist/skills/cli-skills-1b.d.ts +17 -0
  306. package/dist/skills/cli-skills-1b.d.ts.map +1 -0
  307. package/dist/skills/cli-skills-1b.js +166 -0
  308. package/dist/skills/cli-skills-1b.js.map +1 -0
  309. package/dist/skills/cli-skills-2.d.ts +35 -0
  310. package/dist/skills/cli-skills-2.d.ts.map +1 -0
  311. package/dist/skills/cli-skills-2.js +129 -0
  312. package/dist/skills/cli-skills-2.js.map +1 -0
  313. package/dist/skills/cli-skills-report-1b.d.ts +49 -0
  314. package/dist/skills/cli-skills-report-1b.d.ts.map +1 -0
  315. package/dist/skills/cli-skills-report-1b.js +191 -0
  316. package/dist/skills/cli-skills-report-1b.js.map +1 -0
  317. package/dist/skills/cli-skills-report.d.ts +86 -0
  318. package/dist/skills/cli-skills-report.d.ts.map +1 -0
  319. package/dist/skills/cli-skills-report.js +121 -0
  320. package/dist/skills/cli-skills-report.js.map +1 -0
  321. package/dist/skills/cli-skills.d.ts +30 -0
  322. package/dist/skills/cli-skills.d.ts.map +1 -0
  323. package/dist/skills/cli-skills.js +379 -0
  324. package/dist/skills/cli-skills.js.map +1 -0
  325. package/dist/skills/compile-split.d.ts.map +1 -1
  326. package/dist/skills/compile-split.js +18 -0
  327. package/dist/skills/compile-split.js.map +1 -1
  328. package/dist/skills/compile-words.d.ts +4 -1
  329. package/dist/skills/compile-words.d.ts.map +1 -1
  330. package/dist/skills/compile-words.js +68 -8
  331. package/dist/skills/compile-words.js.map +1 -1
  332. package/dist/skills/compile.d.ts +7 -0
  333. package/dist/skills/compile.d.ts.map +1 -1
  334. package/dist/skills/compile.js +17 -0
  335. package/dist/skills/compile.js.map +1 -1
  336. package/dist/skills/credit.d.ts +86 -0
  337. package/dist/skills/credit.d.ts.map +1 -0
  338. package/dist/skills/credit.js +259 -0
  339. package/dist/skills/credit.js.map +1 -0
  340. package/dist/skills/fold-gated.d.ts +3 -0
  341. package/dist/skills/fold-gated.d.ts.map +1 -0
  342. package/dist/skills/fold-gated.js +78 -0
  343. package/dist/skills/fold-gated.js.map +1 -0
  344. package/dist/skills/fold.d.ts +87 -0
  345. package/dist/skills/fold.d.ts.map +1 -0
  346. package/dist/skills/fold.js +348 -0
  347. package/dist/skills/fold.js.map +1 -0
  348. package/dist/skills/follow-learnings.d.ts +128 -0
  349. package/dist/skills/follow-learnings.d.ts.map +1 -0
  350. package/dist/skills/follow-learnings.js +278 -0
  351. package/dist/skills/follow-learnings.js.map +1 -0
  352. package/dist/skills/learning-steps.d.ts +43 -0
  353. package/dist/skills/learning-steps.d.ts.map +1 -0
  354. package/dist/skills/learning-steps.js +294 -0
  355. package/dist/skills/learning-steps.js.map +1 -0
  356. package/dist/skills/lesson-gate.d.ts +25 -0
  357. package/dist/skills/lesson-gate.d.ts.map +1 -0
  358. package/dist/skills/lesson-gate.js +316 -0
  359. package/dist/skills/lesson-gate.js.map +1 -0
  360. package/dist/skills/offer-drift.d.ts +35 -0
  361. package/dist/skills/offer-drift.d.ts.map +1 -0
  362. package/dist/skills/offer-drift.js +98 -0
  363. package/dist/skills/offer-drift.js.map +1 -0
  364. package/dist/skills/offer-lesson.d.ts +31 -0
  365. package/dist/skills/offer-lesson.d.ts.map +1 -0
  366. package/dist/skills/offer-lesson.js +123 -0
  367. package/dist/skills/offer-lesson.js.map +1 -0
  368. package/dist/skills/offer-lines.d.ts +40 -0
  369. package/dist/skills/offer-lines.d.ts.map +1 -0
  370. package/dist/skills/offer-lines.js +80 -0
  371. package/dist/skills/offer-lines.js.map +1 -0
  372. package/dist/skills/offer-moment.d.ts +102 -0
  373. package/dist/skills/offer-moment.d.ts.map +1 -0
  374. package/dist/skills/offer-moment.js +260 -0
  375. package/dist/skills/offer-moment.js.map +1 -0
  376. package/dist/skills/offer-repair.d.ts +36 -0
  377. package/dist/skills/offer-repair.d.ts.map +1 -0
  378. package/dist/skills/offer-repair.js +212 -0
  379. package/dist/skills/offer-repair.js.map +1 -0
  380. package/dist/skills/offer-retire.d.ts +53 -0
  381. package/dist/skills/offer-retire.d.ts.map +1 -0
  382. package/dist/skills/offer-retire.js +149 -0
  383. package/dist/skills/offer-retire.js.map +1 -0
  384. package/dist/skills/offer-update.d.ts +54 -0
  385. package/dist/skills/offer-update.d.ts.map +1 -0
  386. package/dist/skills/offer-update.js +115 -0
  387. package/dist/skills/offer-update.js.map +1 -0
  388. package/dist/skills/offer-words-1b.d.ts +32 -0
  389. package/dist/skills/offer-words-1b.d.ts.map +1 -0
  390. package/dist/skills/offer-words-1b.js +80 -0
  391. package/dist/skills/offer-words-1b.js.map +1 -0
  392. package/dist/skills/offer-words-2.d.ts +123 -0
  393. package/dist/skills/offer-words-2.d.ts.map +1 -0
  394. package/dist/skills/offer-words-2.js +194 -0
  395. package/dist/skills/offer-words-2.js.map +1 -0
  396. package/dist/skills/offer-words.d.ts +65 -0
  397. package/dist/skills/offer-words.d.ts.map +1 -0
  398. package/dist/skills/offer-words.js +205 -0
  399. package/dist/skills/offer-words.js.map +1 -0
  400. package/dist/skills/offers.d.ts +66 -0
  401. package/dist/skills/offers.d.ts.map +1 -0
  402. package/dist/skills/offers.js +284 -0
  403. package/dist/skills/offers.js.map +1 -0
  404. package/dist/skills/runblock.d.ts +2 -0
  405. package/dist/skills/runblock.d.ts.map +1 -1
  406. package/dist/skills/runblock.js +11 -6
  407. package/dist/skills/runblock.js.map +1 -1
  408. package/dist/skills/save-gate.d.ts +64 -0
  409. package/dist/skills/save-gate.d.ts.map +1 -0
  410. package/dist/skills/save-gate.js +354 -0
  411. package/dist/skills/save-gate.js.map +1 -0
  412. package/dist/skills/save-verify.d.ts +59 -0
  413. package/dist/skills/save-verify.d.ts.map +1 -0
  414. package/dist/skills/save-verify.js +390 -0
  415. package/dist/skills/save-verify.js.map +1 -0
  416. package/dist/skills/settings.d.ts +12 -2
  417. package/dist/skills/settings.d.ts.map +1 -1
  418. package/dist/skills/settings.js +24 -2
  419. package/dist/skills/settings.js.map +1 -1
  420. package/dist/skills/skills.d.ts +26 -8
  421. package/dist/skills/skills.d.ts.map +1 -1
  422. package/dist/skills/skills.js +105 -52
  423. package/dist/skills/skills.js.map +1 -1
  424. package/dist/skills/types.d.ts +8 -0
  425. package/dist/skills/types.d.ts.map +1 -1
  426. package/dist/skills/update-gate.d.ts +36 -0
  427. package/dist/skills/update-gate.d.ts.map +1 -0
  428. package/dist/skills/update-gate.js +357 -0
  429. package/dist/skills/update-gate.js.map +1 -0
  430. package/dist/skills/update-plan.d.ts +40 -0
  431. package/dist/skills/update-plan.d.ts.map +1 -0
  432. package/dist/skills/update-plan.js +196 -0
  433. package/dist/skills/update-plan.js.map +1 -0
  434. package/dist/skills/value-line.d.ts +94 -0
  435. package/dist/skills/value-line.d.ts.map +1 -0
  436. package/dist/skills/value-line.js +355 -0
  437. package/dist/skills/value-line.js.map +1 -0
  438. package/dist/telemetry/contract.d.ts +15 -1
  439. package/dist/telemetry/contract.d.ts.map +1 -1
  440. package/dist/telemetry/contract.js +80 -11
  441. package/dist/telemetry/contract.js.map +1 -1
  442. package/dist/telemetry/gate.js +4 -4
  443. package/dist/telemetry/gate.js.map +1 -1
  444. package/dist/telemetry/index.d.ts +1 -1
  445. package/dist/telemetry/index.d.ts.map +1 -1
  446. package/dist/telemetry/index.js +1 -1
  447. package/dist/telemetry/index.js.map +1 -1
  448. package/dist/telemetry/notice.js +5 -5
  449. package/dist/telemetry/notice.js.map +1 -1
  450. package/dist/telemetry/queue.d.ts.map +1 -1
  451. package/dist/telemetry/queue.js +7 -7
  452. package/dist/telemetry/queue.js.map +1 -1
  453. package/dist/telemetry/track.d.ts.map +1 -1
  454. package/dist/telemetry/track.js +4 -3
  455. package/dist/telemetry/track.js.map +1 -1
  456. package/dist/trace/checks.d.ts.map +1 -1
  457. package/dist/trace/checks.js +10 -2
  458. package/dist/trace/checks.js.map +1 -1
  459. package/dist/trace/gate-file.d.ts +1 -1
  460. package/dist/trace/gate-file.d.ts.map +1 -1
  461. package/dist/trace/gate-file.js +3 -3
  462. package/dist/trace/gate-file.js.map +1 -1
  463. package/dist/upkeep-run.d.ts.map +1 -1
  464. package/dist/upkeep-run.js +2 -23
  465. package/dist/upkeep-run.js.map +1 -1
  466. package/dist/upkeep.d.ts.map +1 -1
  467. package/dist/upkeep.js +2 -3
  468. package/dist/upkeep.js.map +1 -1
  469. package/dist/util/private-fs.d.ts +6 -0
  470. package/dist/util/private-fs.d.ts.map +1 -1
  471. package/dist/util/private-fs.js +9 -1
  472. package/dist/util/private-fs.js.map +1 -1
  473. package/dist/util/state.d.ts.map +1 -1
  474. package/dist/util/state.js +17 -3
  475. package/dist/util/state.js.map +1 -1
  476. package/package.json +1 -1
  477. package/dist/skills/found-skill.d.ts +0 -35
  478. package/dist/skills/found-skill.d.ts.map +0 -1
  479. package/dist/skills/found-skill.js +0 -66
  480. package/dist/skills/found-skill.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-moment.js","sourceRoot":"","sources":["../../src/skills/offer-moment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { FixDelta, WallClass } from '../trace/types.js';
2
+ import { type OfferDue, type OfferInput } from './offer-moment.js';
3
+ /** The words of a moment-3 offer (4.13, J06) and of its saved wall lesson (4.15). Said as they are. */
4
+ export declare const REPAIR_COPY: Record<string, string>;
5
+ /** `in every repo` for a machine wall, `in this repo` for git-https-auth (R49). */
6
+ export declare function lessonWhere(cls: WallClass): 'this repo' | 'every repo';
7
+ /** The wall's fixed words: `"rootless Docker not found"`, `zsh "no matches found"`. */
8
+ export declare function fixedWords(cls: WallClass): string;
9
+ /** `a`, `a and b`, `a, b and c`, each named once. */
10
+ export declare function deltaWords(delta: FixDelta[]): string;
11
+ /** The lesson a moment-3 offer keeps: `{fixed words}: {delta texts joined by ", then "}`; null past 200 characters (never cut). */
12
+ export declare function repairLessonText(cls: WallClass, delta: FixDelta[]): string | null;
13
+ /**
14
+ * 4.13's 2 lines. `days`: from the first time to today, counting both. b4: `program` is named in line 1 (the design's
15
+ * signature left it out).
16
+ */
17
+ export declare function repairLines(o: {
18
+ checkLine: string;
19
+ nth: number;
20
+ days: number;
21
+ cls: WallClass;
22
+ delta: FixDelta[];
23
+ program: string;
24
+ as: 'skill' | 'lesson';
25
+ steps: number;
26
+ lessonText: string | null;
27
+ where: 'this repo' | 'every repo';
28
+ }): [string, string];
29
+ type Why = 'learn' | 'pending' | 'not-checked' | 'no-sheet' | 'no-repair' | 'skill' | 'covered' | 'not-repeated' | 'known' | 'too-long' | `budget:${string}`;
30
+ /** Moment 3 (4.13). Called by offerDue at Stop after the fold, inside the session lock; same input as 1a's offerDue (R9). */
31
+ export declare function repairOfferDue(i: OfferInput): OfferDue | {
32
+ due: false;
33
+ why: Why;
34
+ };
35
+ export {};
36
+ //# sourceMappingURL=offer-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-repair.d.ts","sourceRoot":"","sources":["../../src/skills/offer-repair.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAgB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAgB3E,OAAO,EAA4B,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG7F,uGAAuG;AACvG,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAQF,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,CAEtE;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEjD;AAoCD,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAIpD;AAED,mIAAmI;AACnI,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAIjF;AAOD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAChI,EAAE,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAAA;CAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUzH;AAcD,KAAK,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,GACnI,UAAU,MAAM,EAAE,CAAC;AAEvB,6HAA6H;AAC7H,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CA2DjF"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Moment 3 (design 4.13, J06): a job that checked out after getting past a
3
+ * known wall the same way it did before. When (wall, program) was hit and
4
+ * fixed in an earlier epoch in this repo within 45 days, Trail offers to
5
+ * keep the run as a skill, compiled exactly as moment 2 compiles it (R58),
6
+ * or, when compile refuses or gives one step (D70), what fixed it as a
7
+ * lesson whose exact text line 2 shows (R26).
8
+ *
9
+ * The delta texts are the repair detector's, already secret-checked,
10
+ * relativized and held to the never-save, gated and bypass lists (4.12,
11
+ * D104). Nothing typed is in them.
12
+ */
13
+ import { homedir } from 'node:os';
14
+ import { WALL_CLASSES } from '../notes/learning-fields.js';
15
+ import { flatLine } from '../notes/flatten.js';
16
+ import { leadingCds, splitTop } from '../trace/shell.js';
17
+ import { programWords } from '../trace/shell-words.js';
18
+ import { unquote } from '../trace/shell-scan.js';
19
+ import { detectRepairs } from '../trace/repairs.js';
20
+ import { programKey, readWalls, repairsSeen } from '../trace/wall-state.js';
21
+ import { WALLS } from '../trace/walls.js';
22
+ import { stableBranches } from './compile-words.js';
23
+ import { joinCarriedSheet, readRunSheet } from '../trace/runs.js';
24
+ import { jobCovered } from './store.js';
25
+ import { stepsTotal } from './store-fs.js';
26
+ import { lessonRefused, lessonSha, LESSON_MAX, wallLessons } from './lessons.js';
27
+ import { checkLine, ordinalWord } from './offer-words.js';
28
+ import { newOfferId, offerBudget } from './offers.js';
29
+ import { compileOffered, skillSha } from './offer-moment.js';
30
+ import { withFollowLine } from './follow-learnings.js';
31
+ /** The words of a moment-3 offer (4.13, J06) and of its saved wall lesson (4.15). Said as they are. */
32
+ export const REPAIR_COPY = {
33
+ line1: '{check} This is the {nth} time {span} that {program} failed on {fixed} and needed {delta}.',
34
+ skill: 'Keep the {k} working steps as a skill, just for you in this repo? (yes / show me / no)',
35
+ lesson: 'Keep what fixed it as a lesson, just for you {where}: "{lesson}"? (yes / no)',
36
+ savedWall: '✓ lesson kept, just for you {where} · Trail shows it when {fixed} comes back · undo: trail forget {id}',
37
+ };
38
+ const fill = (t, v) => t.replace(/\{(\w+)\}/g, (m, k) => v[k] ?? m);
39
+ const LINE_MAX = 400;
40
+ const DAY_MS = 86_400_000;
41
+ /** A wall about one repo's remote, not the machine (spec 2, R49): its lesson holds in this repo only. */
42
+ const REPO_WALLS = new Set(['git-https-auth']);
43
+ /** `in every repo` for a machine wall, `in this repo` for git-https-auth (R49). */
44
+ export function lessonWhere(cls) {
45
+ return REPO_WALLS.has(cls) ? 'this repo' : 'every repo';
46
+ }
47
+ /** The wall's fixed words: `"rootless Docker not found"`, `zsh "no matches found"`. */
48
+ export function fixedWords(cls) {
49
+ return WALLS.find((w) => w.cls === cls)?.words ?? cls;
50
+ }
51
+ /** One delta in words (4.13): `Colima's socket`, `DOCKER_HOST set`, `the --no-glob flag`, `noglob in front`, `colima start first`. */
52
+ function deltaWord(d) {
53
+ switch (d.kind) {
54
+ case 'env':
55
+ return d.name === 'DOCKER_HOST' && /\.colima\b/.test(d.text) ? "Colima's socket" : `${flatLine(d.name, 40)} set`;
56
+ case 'flag':
57
+ return `the ${flatLine(d.name, 40)} flag`;
58
+ case 'wrapper':
59
+ return `${flatLine(d.name, 40)} in front`;
60
+ default:
61
+ return `${stepJob(d.text)} first`;
62
+ }
63
+ }
64
+ /**
65
+ * fix-lab5: what an enabling step does, for line 1: its program and up to two subcommand words (`colima start`,
66
+ * `git remote set-url`), never its raw text. Of `a || b` (a status check with its fallback), the fallback does the
67
+ * work; a leading cd, a wrapper, flags, values and redirections are left out. Line 2's lesson keeps the text.
68
+ */
69
+ function stepJob(text) {
70
+ const s = leadingCds(String(text ?? '')).rest || String(text ?? '');
71
+ const segs = splitTop(s);
72
+ let pick = segs[0];
73
+ for (let k = 0; k + 1 < segs.length && segs[k].sep === '||'; k++)
74
+ pick = segs[k + 1];
75
+ const w = programWords(pick?.text ?? s).map(unquote);
76
+ const words = w[0] ? [w[0]] : [];
77
+ for (const a of w.slice(1)) {
78
+ if (a.startsWith('-'))
79
+ continue;
80
+ if (!/^[a-z][a-z-]{0,30}$/.test(a) || words.length > 2)
81
+ break;
82
+ words.push(a);
83
+ }
84
+ return flatLine(words.join(' '), 60) || flatLine(text, 60);
85
+ }
86
+ /** `a`, `a and b`, `a, b and c`, each named once. */
87
+ export function deltaWords(delta) {
88
+ const w = [...new Set(delta.map(deltaWord))];
89
+ if (w.length < 2)
90
+ return w.join('');
91
+ return `${w.slice(0, -1).join(', ')} and ${w[w.length - 1]}`;
92
+ }
93
+ /** The lesson a moment-3 offer keeps: `{fixed words}: {delta texts joined by ", then "}`; null past 200 characters (never cut). */
94
+ export function repairLessonText(cls, delta) {
95
+ if (!delta.length)
96
+ return null;
97
+ const text = flatLine(`${fixedWords(cls)}: ${delta.map((d) => d.text).join(', then ')}`, 4000);
98
+ return text && text.length <= LESSON_MAX && !lessonRefused(text) ? text : null;
99
+ }
100
+ /** `this week` when the first time was within 7 days, else `in {days} days` (the days from the first time to today). */
101
+ function spanWords(days) {
102
+ return days <= 7 ? 'this week' : `in ${Math.floor(days)} days`;
103
+ }
104
+ /**
105
+ * 4.13's 2 lines. `days`: from the first time to today, counting both. b4: `program` is named in line 1 (the design's
106
+ * signature left it out).
107
+ */
108
+ export function repairLines(o) {
109
+ const check = flatLine(o.checkLine, 200).replace(/([^.!?])$/, '$1.');
110
+ const line1 = fill(REPAIR_COPY.line1, {
111
+ check, nth: ordinalWord(o.nth), span: spanWords(o.days), program: flatLine(o.program, 40) || 'it', fixed: fixedWords(o.cls), delta: deltaWords(o.delta),
112
+ });
113
+ const line2 = o.as === 'skill'
114
+ ? fill(REPAIR_COPY.skill, { k: String(Math.max(2, Math.floor(o.steps))) })
115
+ // D114 (3): line 2 quotes the lesson, so the quotes inside it become single ones (never ""…"").
116
+ : fill(REPAIR_COPY.lesson, { where: `in ${o.where}`, lesson: flatLine(o.lessonText ?? '', LESSON_MAX).replace(/["\u201c\u201d]/g, "'") });
117
+ return [flatLine(line1, LINE_MAX), flatLine(line2, LINE_MAX)];
118
+ }
119
+ const localDay = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
120
+ /** Days from `first` (local date) to `now`, counting both. */
121
+ function daysSince(first, now) {
122
+ if (!first)
123
+ return 1;
124
+ const a = Date.parse(`${first}T00:00:00Z`);
125
+ const b = Date.parse(`${localDay(now)}T00:00:00Z`);
126
+ return Number.isNaN(a) || Number.isNaN(b) ? 1 : Math.max(1, Math.round((b - a) / DAY_MS) + 1);
127
+ }
128
+ /** Budget answers about one key, not the session, week or repo (4.20). */
129
+ const KEY_ONLY = new Set(['said-no', 'no-answer-twice', 'too-soon']);
130
+ /** Moment 3 (4.13). Called by offerDue at Stop after the fold, inside the session lock; same input as 1a's offerDue (R9). */
131
+ export function repairOfferDue(i) {
132
+ const { run, verdict, st, ctx, channel } = i;
133
+ const env = ctx.env;
134
+ const now = ctx.now;
135
+ if (!ctx.learn)
136
+ return { due: false, why: 'learn' };
137
+ if (st.pendingOffer)
138
+ return { due: false, why: 'pending' };
139
+ // Spec 9: moments 2 and 3 wait for a checked success; the turn ended done (no failure, no question).
140
+ if (!verdict.checked || verdict.checkIndex === null || verdict.end !== 'done')
141
+ return { due: false, why: 'not-checked' };
142
+ const sheet = i.sheet;
143
+ if (!sheet || sheet.id !== run.id || !run.repoKey)
144
+ return { due: false, why: 'no-sheet' };
145
+ // The run is still open at Stop, so its repairs are read from its calls now (run close fills run.repairs).
146
+ const repairs = (run.repairs ?? detectRepairs(run, { home: env.HOME || homedir(), root: ctx.checkout }))
147
+ .filter((r) => WALL_CLASSES.includes(r.cls) && programKey(r.program));
148
+ if (!repairs.length)
149
+ return { due: false, why: 'no-repair' };
150
+ if (run.skillId)
151
+ return { due: false, why: 'skill' };
152
+ const scope = { repoKeys: [...new Set([...st.scopeKeys, run.repoKey])], checkout: ctx.checkout, env };
153
+ if (run.job && jobCovered(run.job, scope))
154
+ return { due: false, why: 'covered' };
155
+ const walls = readWalls(env);
156
+ let why = 'not-repeated';
157
+ for (const r of [...repairs].reverse()) {
158
+ const program = programKey(r.program);
159
+ const key = `${run.repoKey}|wall:${r.cls}|${program}`;
160
+ const seen = repairsSeen(walls, run.repoKey, r.cls, r.program, st.sessionHash, run.epoch, now);
161
+ if (seen.epochs < 1) {
162
+ why = 'not-repeated';
163
+ continue;
164
+ }
165
+ // Already known: a kept lesson for this wall applies here.
166
+ if (wallLessons(r.cls, run.repoKey, env).length) {
167
+ why = 'known';
168
+ continue;
169
+ }
170
+ const budget = offerBudget({ repoKey: run.repoKey, key, sessionOfferUsed: st.offerUsed, now, env });
171
+ // A no (or two ignored offers) for this repair's key is about this key only: another repair in the run may be due.
172
+ if (!budget.ok && KEY_ONLY.has(budget.why)) {
173
+ why = `budget:${budget.why}`;
174
+ continue;
175
+ }
176
+ if (!budget.ok)
177
+ return { due: false, why: `budget:${budget.why}` };
178
+ // The governor (4.20): moment 3 then needs two earlier epochs.
179
+ if (seen.epochs < (budget.extraDay ? 2 : 1)) {
180
+ why = 'not-repeated';
181
+ continue;
182
+ }
183
+ const compiled = compileOffered(sheet, st, ctx);
184
+ const asSkill = compiled.ok && compiled.skill.steps.length >= 2;
185
+ const lesson = asSkill ? null : repairLessonText(r.cls, r.delta);
186
+ if (!asSkill && !lesson) {
187
+ why = 'too-long';
188
+ continue;
189
+ }
190
+ const joined = asSkill ? joinCarriedSheet(sheet, (id) => readRunSheet(id, env)) : null;
191
+ const hit = run.calls[verdict.checkIndex]?.check;
192
+ const branches = joined && run.job === 'ship' ? stableBranches(joined.calls, joined.jobWords) : [];
193
+ const nth = seen.epochs + 1;
194
+ const where = lessonWhere(r.cls);
195
+ const lines = withFollowLine(repairLines({
196
+ checkLine: hit ? checkLine(hit, branches) : 'Done: the check passed.', nth, days: daysSince(seen.firstAt, now), cls: r.cls, delta: r.delta,
197
+ program, as: asSkill ? 'skill' : 'lesson', steps: asSkill ? stepsTotal(compiled.skill) : 1, lessonText: lesson, where,
198
+ }), asSkill && compiled.ok ? compiled.skill.followed : undefined);
199
+ const offer = {
200
+ offerId: newOfferId(), moment: 'repaired', runId: run.id, name: asSkill ? compiled.skill.name : r.cls, key, lines, channel,
201
+ shownAt: channel === 'post-tool' ? null : now.toISOString(), showMe: false, yes: null, typedAfter: [], repo: run.repoKey,
202
+ repair: {
203
+ cls: r.cls, program, nth, firstAt: seen.firstAt ?? localDay(now), as: asSkill ? 'skill' : 'lesson',
204
+ delta: r.delta.map((d) => ({ kind: d.kind, name: d.name, text: d.text, callId: d.callId })), ...(lesson ? { lessonSha: lessonSha(lesson) } : {}),
205
+ },
206
+ ...(asSkill ? { skillSha: skillSha(compiled.skill) } : {}),
207
+ };
208
+ return { due: true, offer };
209
+ }
210
+ return { due: false, why };
211
+ }
212
+ //# sourceMappingURL=offer-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-repair.js","sourceRoot":"","sources":["../../src/skills/offer-repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAkC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,uGAAuG;AACvG,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,KAAK,EAAE,4FAA4F;IACnG,KAAK,EAAE,wFAAwF;IAC/F,MAAM,EAAE,8EAA8E;IACtF,SAAS,EAAE,wGAAwG;CACpH,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5G,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,yGAAyG;AACzG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE1D,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,GAAc;IACxC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1D,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,GAAc;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;AACxD,CAAC;AAED,sIAAsI;AACtI,SAAS,SAAS,CAAC,CAAW;IAC5B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;QACnH,KAAK,MAAM;YACT,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC;QAC5C;YACE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE;QAAE,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM;QAC9D,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,mIAAmI;AACnI,MAAM,UAAU,gBAAgB,CAAC,GAAc,EAAE,KAAiB;IAChE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjF,CAAC;AAED,wHAAwH;AACxH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAC2E;IACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAM,EAAE;QACrC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;KACxJ,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,OAAO;QAC5B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,gGAAgG;QAChG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7I,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACxI,8DAA8D;AAC9D,SAAS,SAAS,CAAC,KAAoB,EAAE,GAAS;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;AAKrE,6HAA6H;AAC7H,MAAM,UAAU,cAAc,CAAC,CAAa;IAC1C,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,YAAY;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC3D,qGAAqG;IACrG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;IACzH,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IAC1F,2GAA2G;IAC3G,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,YAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IAC7D,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;IACtG,IAAI,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAEjF,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAQ,cAAc,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,GAAG,cAAc,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,2DAA2D;QAC3D,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAAC,GAAG,GAAG,OAAO,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpG,mHAAmH;QACnH,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,GAAG,UAAU,MAAM,CAAC,GAAG,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;QACnE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,GAAG,cAAc,CAAC;YAAC,SAAS;QAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,GAAG,GAAG,UAAU,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC;YACvC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK;YAC1I,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK;SACtH,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,KAAK,GAAiB;YAC1B,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO;YAC1H,OAAO,EAAE,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO;YACxH,MAAM,EAAE;gBACN,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBAClG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjJ;YACD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QACF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { DialectUse } from '../trace/dialect.js';
2
+ import type { SkillState } from './types.js';
3
+ import type { PendingOffer } from '../trace/types.js';
4
+ import type { OfferDue, OfferInput } from './offer-moment.js';
5
+ /** One settled job or name cue block, as `noteFiring` wrote it (settleCredit's `fired` callback). */
6
+ export interface Fired {
7
+ skillId: string;
8
+ name: string;
9
+ followed: boolean;
10
+ runId: string;
11
+ at: string;
12
+ }
13
+ export declare const FIRINGS_KEPT = 10;
14
+ /** The fewest firings before the proposal (spec 13: "5 or more firings"). */
15
+ export declare const RETIRE_MIN_FIRINGS = 5;
16
+ /** 4.9: one firing, last 10 kept. False when nothing was written (no state, retired, or the state lock was busy). */
17
+ export declare function noteFiring(skillId: string, followed: boolean, env?: NodeJS.ProcessEnv, now?: Date): boolean;
18
+ /** The firings a state holds, and how many were followed. */
19
+ export declare function firingsOf(s: Pick<SkillState, 'firings'> | null | undefined): {
20
+ n: number;
21
+ followed: number;
22
+ };
23
+ export type RetireResult = {
24
+ ok: true;
25
+ to: string;
26
+ } | {
27
+ ok: false;
28
+ reason: 'unknown' | 'busy';
29
+ };
30
+ /**
31
+ * 4.9's write: 1a's forget with ledger reason `retire-offer`, waiting at most a hook's 200 ms for the store. Busy:
32
+ * nothing moved. `skillId`, when given, must be the folder's own skill (a folder since replaced is not retired).
33
+ */
34
+ export declare function retireSkill(name: string, reason: 'retire-offer', env?: NodeJS.ProcessEnv, now?: Date, skillId?: string): RetireResult;
35
+ type Why = 'learn' | 'pending' | 'channel' | 'end' | 'no-firing' | 'skill' | 'status' | 'few' | 'followed' | 'once' | `budget:${string}`;
36
+ /**
37
+ * 4.9: due at the Stop whose settle wrote a not-followed firing (`fired`, from settleCredit's `fired` callback), the
38
+ * turn ended done (R12), the skill personal and active or candidate, 5 or more firings with half or fewer followed,
39
+ * and the budget's key `<skillId>|retire` (once per skill, ever). Writes nothing.
40
+ */
41
+ export declare function retireOfferDue(i: OfferInput, fired: Fired[]): OfferDue | {
42
+ due: false;
43
+ why: Why;
44
+ };
45
+ /**
46
+ * D72, R1: the agent's reply right before the person's answer ended with the offer's own line 2, so a "retire" typed
47
+ * to some other question (or after an agent that never showed the offer) moves nothing. The person's line is found by
48
+ * its sha where the fold already met it; else (Claude Code writes the line just after the hook starts) the reply is the
49
+ * transcript's last one. An offer shown as Trail's own notice needs no reply: the person read Trail's words.
50
+ */
51
+ export declare function replyEndedWithOffer(po: PendingOffer, typed: string, transcriptPath: string | null, env?: NodeJS.ProcessEnv, use?: DialectUse): boolean;
52
+ export {};
53
+ //# sourceMappingURL=offer-retire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-retire.d.ts","sourceRoot":"","sources":["../../src/skills/offer-retire.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW9D,qGAAqG;AACrG,MAAM,WAAW,KAAK;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AAEtG,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAKpC,qHAAqH;AACrH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAUvH;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAG5G;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,CAAC;AAEhG;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,GAAE,IAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAOjJ;AAED,KAAK,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,MAAM,EAAE,CAAC;AAEzI;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CA+BjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CAanK"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * The retire proposal (phase 2 design 4.9, spec 13, P12, P13, P46, R1, R12,
3
+ * R27): a skill Trail keeps bringing in whose steps mostly don't run is
4
+ * offered for retirement once, ever.
5
+ *
6
+ * Firings: each settled job or name cue block is one, followed when a step of
7
+ * the skill ran (`noteFiring`, called at the credit flush beside 1b's cue
8
+ * misses, under the state lock; a busy lock drops it). The last 10 are kept;
9
+ * a version change resets them (c2).
10
+ *
11
+ * The offer is due at the Stop whose settle wrote a not-followed firing, when
12
+ * the turn ended done, the skill is personal and active or candidate, it has
13
+ * 5 or more firings and half or fewer were followed. It needs no checked
14
+ * success: it is about a block the agent didn't use.
15
+ *
16
+ * A "retire" answer is the one write the prompt hook makes on an answer
17
+ * (P12): `retireSkill` moves the folder to `.retired/` (restorable, nothing
18
+ * deleted) with ledger reason `retire-offer`, and only after the agent's
19
+ * reply before the answer ended with the offer's line 2 (D72, R1).
20
+ */
21
+ import { statSync } from 'node:fs';
22
+ import { updateSkillState, getSkillState } from './state.js';
23
+ import { forgetSkill, listAllPersonal } from './store.js';
24
+ import { HOOK_WAIT_MS } from './store-fs.js';
25
+ import { newOfferId, offerBudget, readOffers, retireOfferKey } from './offers.js';
26
+ import { retireLines } from './offer-words-2.js';
27
+ import { offerLinesOf } from './offer-lines.js';
28
+ import { endsWithLine } from './offer-words.js';
29
+ import { replyBefore } from './save-verify.js';
30
+ import { typedSha } from '../trace/typed.js';
31
+ export const FIRINGS_KEPT = 10;
32
+ /** The fewest firings before the proposal (spec 13: "5 or more firings"). */
33
+ export const RETIRE_MIN_FIRINGS = 5;
34
+ const validFiring = (f) => !!f && typeof f === 'object' && typeof f.at === 'string' && typeof f.followed === 'boolean';
35
+ /** 4.9: one firing, last 10 kept. False when nothing was written (no state, retired, or the state lock was busy). */
36
+ export function noteFiring(skillId, followed, env, now = new Date()) {
37
+ let wrote = false;
38
+ const next = updateSkillState(skillId, (s) => {
39
+ if (!s || s.status === 'retired')
40
+ return s;
41
+ const kept = Array.isArray(s.firings) ? s.firings.filter(validFiring) : [];
42
+ s.firings = [...kept, { at: now.toISOString(), followed: followed === true }].slice(-FIRINGS_KEPT);
43
+ wrote = true;
44
+ return s;
45
+ }, env);
46
+ return wrote && next !== undefined;
47
+ }
48
+ /** The firings a state holds, and how many were followed. */
49
+ export function firingsOf(s) {
50
+ const f = Array.isArray(s?.firings) ? s.firings.filter(validFiring) : [];
51
+ return { n: f.length, followed: f.filter((x) => x.followed).length };
52
+ }
53
+ /**
54
+ * 4.9's write: 1a's forget with ledger reason `retire-offer`, waiting at most a hook's 200 ms for the store. Busy:
55
+ * nothing moved. `skillId`, when given, must be the folder's own skill (a folder since replaced is not retired).
56
+ */
57
+ export function retireSkill(name, reason, env, now = new Date(), skillId) {
58
+ if (skillId !== undefined && !listAllPersonal(env).some((r) => r.name === name && r.id === skillId))
59
+ return { ok: false, reason: 'unknown' };
60
+ try {
61
+ return forgetSkill(name, env, now, { reason, waitMs: HOOK_WAIT_MS });
62
+ }
63
+ catch {
64
+ return { ok: false, reason: 'busy' };
65
+ }
66
+ }
67
+ /**
68
+ * 4.9: due at the Stop whose settle wrote a not-followed firing (`fired`, from settleCredit's `fired` callback), the
69
+ * turn ended done (R12), the skill personal and active or candidate, 5 or more firings with half or fewer followed,
70
+ * and the budget's key `<skillId>|retire` (once per skill, ever). Writes nothing.
71
+ */
72
+ export function retireOfferDue(i, fired) {
73
+ const { verdict, st, ctx, channel } = i;
74
+ const env = ctx.env;
75
+ if (!ctx.learn)
76
+ return { due: false, why: 'learn' };
77
+ if (st.pendingOffer)
78
+ return { due: false, why: 'pending' };
79
+ if (channel !== 'stop' && channel !== 'notice')
80
+ return { due: false, why: 'channel' };
81
+ if (verdict.end === 'failure' || verdict.end === 'question')
82
+ return { due: false, why: 'end' };
83
+ let last = 'no-firing';
84
+ for (const f of fired.filter((x) => x && x.followed === false)) {
85
+ const ref = listAllPersonal(env).find((r) => r.id === f.skillId);
86
+ const s = ref ? getSkillState(f.skillId, env) : null;
87
+ if (!ref || !s || s.scope !== 'personal') {
88
+ last = 'skill';
89
+ continue;
90
+ }
91
+ if (s.status !== 'active' && s.status !== 'candidate') {
92
+ last = 'status';
93
+ continue;
94
+ }
95
+ const { n, followed } = firingsOf(s);
96
+ if (n < RETIRE_MIN_FIRINGS) {
97
+ last = 'few';
98
+ continue;
99
+ }
100
+ if (followed * 2 > n) {
101
+ last = 'followed';
102
+ continue;
103
+ }
104
+ const repo = i.run.repoKey || ctx.repoKey;
105
+ const key = retireOfferKey(f.skillId);
106
+ // P13: once per skill, ever. Shown once is enough, answered or not (1a's second chance is for moments 2 and 3).
107
+ if (readOffers(env).some((l) => l.key === key && l.event === 'shown')) {
108
+ last = 'once';
109
+ continue;
110
+ }
111
+ const budget = offerBudget({ repoKey: repo, key, sessionOfferUsed: st.offerUsed, now: ctx.now, env });
112
+ if (!budget.ok) {
113
+ last = `budget:${budget.why}`;
114
+ continue;
115
+ }
116
+ return {
117
+ due: true,
118
+ offer: {
119
+ offerId: newOfferId(), moment: 'retire', runId: f.runId ?? i.run.id, name: ref.name, key, lines: retireLines({ name: ref.name, fired: n, followed }),
120
+ channel, shownAt: ctx.now.toISOString(), showMe: false, yes: null, typedAfter: [], repo, retire: { skillId: f.skillId, name: ref.name },
121
+ },
122
+ };
123
+ }
124
+ return { due: false, why: last };
125
+ }
126
+ /**
127
+ * D72, R1: the agent's reply right before the person's answer ended with the offer's own line 2, so a "retire" typed
128
+ * to some other question (or after an agent that never showed the offer) moves nothing. The person's line is found by
129
+ * its sha where the fold already met it; else (Claude Code writes the line just after the hook starts) the reply is the
130
+ * transcript's last one. An offer shown as Trail's own notice needs no reply: the person read Trail's words.
131
+ */
132
+ export function replyEndedWithOffer(po, typed, transcriptPath, env = process.env, use) {
133
+ try {
134
+ if (po.channel === 'notice')
135
+ return true;
136
+ const line2 = offerLinesOf(po, transcriptPath, env, use)?.[1];
137
+ if (!line2 || !transcriptPath)
138
+ return false;
139
+ const sha = typedSha(typed);
140
+ const entry = po.typedAfter.find((t) => t.sha === sha && Number.isInteger(t.offset) && t.offset >= 0);
141
+ const offset = entry ? entry.offset : statSync(transcriptPath).size;
142
+ const reply = replyBefore(transcriptPath, offset, env, use);
143
+ return reply !== null && endsWithLine(reply, line2);
144
+ }
145
+ catch {
146
+ return false;
147
+ }
148
+ }
149
+ //# sourceMappingURL=offer-retire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-retire.js","sourceRoot":"","sources":["../../src/skills/offer-retire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Moment 5 (phase 2 design 4.7, P1, P5, P8, P9, P29, R3, R14, rule 13): a
3
+ * skill's block drove a run that checked out and did one thing differently,
4
+ * so Trail offers once to change the skill to match: update a step done
5
+ * another way, extend it with at most 2 steps a lesson or the use before
6
+ * backs, or split the steps two uses ran into a skill of their own.
7
+ *
8
+ * The plan is c1's `planFold` on c2's `foldInputFor`; the pin (the text a
9
+ * yes would write and the file it was computed from) is c2's `replan`, the
10
+ * same function both halves of `trail skills update` run, so the offer and
11
+ * the gate can't disagree. Both come in through `OfferInput.plan` (c8 passes
12
+ * update-gate.ts's): without them nothing is due. A split is saved through
13
+ * 1a's add gate, pinned by `skillSha` of the compile that gate checks (R3).
14
+ *
15
+ * Writes nothing: the caller records the offer shown.
16
+ */
17
+ import type { SkillInjection } from '../trace/types.js';
18
+ import type { CompiledSkill, FoldOp } from './types.js';
19
+ import type { FoldInput, FoldPlan } from './fold.js';
20
+ import type { OfferDue, OfferInput } from './offer-moment.js';
21
+ /** What a planner is given of the block: its filled params and steps, when it came in, its check. */
22
+ export type PlanInj = Pick<SkillInjection, 'params' | 'steps' | 'at' | 'check'>;
23
+ /** c2's plan again, from the run sheet and the file as they are now (update-gate.ts `replan`). */
24
+ export interface Replanned {
25
+ next: CompiledSkill;
26
+ text: string;
27
+ proposalSha: string;
28
+ baseHash: string;
29
+ handEdited: boolean;
30
+ plan: FoldPlan | null;
31
+ base: CompiledSkill;
32
+ fresh: CompiledSkill | null;
33
+ }
34
+ /** c2's two shared functions (update-gate.ts), passed in so the offer and both halves of the gate plan alike. */
35
+ export interface FoldPlanner {
36
+ foldInputFor(skillId: string, runId: string, env: NodeJS.ProcessEnv, o?: {
37
+ inj?: PlanInj;
38
+ now?: Date;
39
+ }): FoldInput | null;
40
+ replan(skillId: string, runId: string, op: FoldOp | 'replace', env: NodeJS.ProcessEnv, o?: {
41
+ inj?: PlanInj;
42
+ now?: Date;
43
+ }): Replanned | null;
44
+ }
45
+ type Why = 'learn' | 'pending' | 'channel' | 'no-skill' | 'not-checked' | 'no-sheet' | 'not-settled' | 'corrected' | 'skill' | 'status' | 'version' | 'no-plan' | 'replan' | 'compile' | `plan:${string}` | `budget:${string}`;
46
+ /** A version Trail can key and bump: a positive integer. */
47
+ export declare const versionNumber: (v: unknown) => number | null;
48
+ /** 4.7: moment 5's conditions 1 to 5, in order. */
49
+ export declare function updateOfferDue(i: OfferInput): OfferDue | {
50
+ due: false;
51
+ why: Why;
52
+ };
53
+ export {};
54
+ //# sourceMappingURL=offer-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-update.d.ts","sourceRoot":"","sources":["../../src/skills/offer-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAY9D,qGAAqG;AACrG,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;AAEhF,kGAAkG;AAClG,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAC9F,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACzE;AAED,iHAAiH;AACjH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1H,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7I;AAED,KAAK,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GACnI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,MAAM,EAAE,GAAG,UAAU,MAAM,EAAE,CAAC;AAEzF,4DAA4D;AAC5D,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,IAAmE,CAAC;AAExH,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAuFjF"}