taskchef 8.6.1 → 8.7.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 (631) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +8 -4
  3. package/assets/README.md +19 -0
  4. package/assets/taskchef-app-rounded.png +0 -0
  5. package/assets/taskchef-avatar-square.png +0 -0
  6. package/assets/taskchef-avatar-square.svg +8 -0
  7. package/assets/taskchef-sidebar-dark.svg +6 -0
  8. package/assets/taskchef-sidebar-light.svg +6 -0
  9. package/assets/taskchef-sidebar.svg +6 -0
  10. package/docs/advanced-guide.md +20 -29
  11. package/docs/dashboard-ui.md +15 -0
  12. package/docs/diagrams/taskchef-next-reply-lookup.drawio +38 -0
  13. package/docs/diagrams/taskchef-next-reply-lookup.drawio.png +0 -0
  14. package/docs/diagrams/taskchef-next-storage.drawio +41 -0
  15. package/docs/diagrams/taskchef-next-storage.drawio.png +0 -0
  16. package/docs/images/taskchef-pr-icon-comparison.jpg +0 -0
  17. package/docs/images/taskchef-unified-status-popup.jpg +0 -0
  18. package/docs/mcp-app.md +261 -6
  19. package/docs/spec.md +24 -69
  20. package/docs/taskchef-next-github.md +206 -0
  21. package/docs/taskchef-next-status-research.md +102 -0
  22. package/docs/taskchef-next-storage.md +167 -0
  23. package/docs/workflows.md +4 -2
  24. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  25. package/node_modules/@napi-rs/keyring/README.md +45 -0
  26. package/node_modules/@napi-rs/keyring/index.d.ts +232 -0
  27. package/node_modules/@napi-rs/keyring/index.js +706 -0
  28. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  29. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  30. package/node_modules/@napi-rs/keyring/package.json +126 -0
  31. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  32. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  33. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  34. package/node_modules/@napi-rs/keyring-darwin-x64/README.md +3 -0
  35. package/node_modules/@napi-rs/keyring-darwin-x64/keyring.darwin-x64.node +0 -0
  36. package/node_modules/@napi-rs/keyring-darwin-x64/package.json +32 -0
  37. package/node_modules/@napi-rs/keyring-linux-arm64-gnu/README.md +3 -0
  38. package/node_modules/@napi-rs/keyring-linux-arm64-gnu/keyring.linux-arm64-gnu.node +0 -0
  39. package/node_modules/@napi-rs/keyring-linux-arm64-gnu/package.json +35 -0
  40. package/node_modules/@napi-rs/keyring-linux-arm64-musl/README.md +3 -0
  41. package/node_modules/@napi-rs/keyring-linux-arm64-musl/keyring.linux-arm64-musl.node +0 -0
  42. package/node_modules/@napi-rs/keyring-linux-arm64-musl/package.json +35 -0
  43. package/node_modules/@napi-rs/keyring-linux-x64-gnu/README.md +3 -0
  44. package/node_modules/@napi-rs/keyring-linux-x64-gnu/keyring.linux-x64-gnu.node +0 -0
  45. package/node_modules/@napi-rs/keyring-linux-x64-gnu/package.json +35 -0
  46. package/node_modules/@napi-rs/keyring-linux-x64-musl/README.md +3 -0
  47. package/node_modules/@napi-rs/keyring-linux-x64-musl/keyring.linux-x64-musl.node +0 -0
  48. package/node_modules/@napi-rs/keyring-linux-x64-musl/package.json +35 -0
  49. package/node_modules/@napi-rs/keyring-win32-arm64-msvc/README.md +3 -0
  50. package/node_modules/@napi-rs/keyring-win32-arm64-msvc/keyring.win32-arm64-msvc.node +0 -0
  51. package/node_modules/@napi-rs/keyring-win32-arm64-msvc/package.json +32 -0
  52. package/node_modules/@napi-rs/keyring-win32-x64-msvc/README.md +3 -0
  53. package/node_modules/@napi-rs/keyring-win32-x64-msvc/keyring.win32-x64-msvc.node +0 -0
  54. package/node_modules/@napi-rs/keyring-win32-x64-msvc/package.json +32 -0
  55. package/node_modules/@types/debug/LICENSE +21 -0
  56. package/node_modules/@types/debug/README.md +69 -0
  57. package/node_modules/@types/debug/index.d.ts +50 -0
  58. package/node_modules/@types/debug/package.json +58 -0
  59. package/node_modules/@types/mdast/LICENSE +21 -0
  60. package/node_modules/@types/mdast/README.md +15 -0
  61. package/node_modules/@types/mdast/index.d.ts +1123 -0
  62. package/node_modules/@types/mdast/package.json +47 -0
  63. package/node_modules/@types/ms/LICENSE +21 -0
  64. package/node_modules/@types/ms/README.md +82 -0
  65. package/node_modules/@types/ms/index.d.ts +63 -0
  66. package/node_modules/@types/ms/package.json +26 -0
  67. package/node_modules/@types/unist/LICENSE +21 -0
  68. package/node_modules/@types/unist/README.md +15 -0
  69. package/node_modules/@types/unist/index.d.ts +119 -0
  70. package/node_modules/@types/unist/package.json +60 -0
  71. package/node_modules/character-entities/index.d.ts +6 -0
  72. package/node_modules/character-entities/index.js +2132 -0
  73. package/node_modules/character-entities/license +22 -0
  74. package/node_modules/character-entities/package.json +78 -0
  75. package/node_modules/character-entities/readme.md +152 -0
  76. package/node_modules/decode-named-character-reference/index.d.ts +13 -0
  77. package/node_modules/decode-named-character-reference/index.d.ts.map +1 -0
  78. package/node_modules/decode-named-character-reference/index.dom.d.ts +6 -0
  79. package/node_modules/decode-named-character-reference/index.dom.d.ts.map +1 -0
  80. package/node_modules/decode-named-character-reference/index.dom.js +32 -0
  81. package/node_modules/decode-named-character-reference/index.js +19 -0
  82. package/node_modules/decode-named-character-reference/license +22 -0
  83. package/node_modules/decode-named-character-reference/package.json +90 -0
  84. package/node_modules/decode-named-character-reference/readme.md +136 -0
  85. package/node_modules/dequal/dist/index.js +86 -0
  86. package/node_modules/dequal/dist/index.min.js +1 -0
  87. package/node_modules/dequal/dist/index.mjs +84 -0
  88. package/node_modules/dequal/index.d.ts +1 -0
  89. package/node_modules/dequal/license +21 -0
  90. package/node_modules/dequal/lite/index.d.ts +1 -0
  91. package/node_modules/dequal/lite/index.js +31 -0
  92. package/node_modules/dequal/lite/index.min.js +1 -0
  93. package/node_modules/dequal/lite/index.mjs +29 -0
  94. package/node_modules/dequal/package.json +57 -0
  95. package/node_modules/dequal/readme.md +112 -0
  96. package/node_modules/devlop/lib/default.js +9 -0
  97. package/node_modules/devlop/lib/development.d.ts +84 -0
  98. package/node_modules/devlop/lib/development.js +238 -0
  99. package/node_modules/devlop/license +22 -0
  100. package/node_modules/devlop/package.json +80 -0
  101. package/node_modules/devlop/readme.md +360 -0
  102. package/node_modules/mdast-util-from-markdown/dev/index.d.ts +23 -0
  103. package/node_modules/mdast-util-from-markdown/dev/index.js +2 -0
  104. package/node_modules/mdast-util-from-markdown/dev/lib/index.d.ts +53 -0
  105. package/node_modules/mdast-util-from-markdown/dev/lib/index.d.ts.map +1 -0
  106. package/node_modules/mdast-util-from-markdown/dev/lib/index.js +1348 -0
  107. package/node_modules/mdast-util-from-markdown/dev/lib/types.d.ts +295 -0
  108. package/node_modules/mdast-util-from-markdown/dev/lib/types.js +2 -0
  109. package/node_modules/mdast-util-from-markdown/index.d.ts +23 -0
  110. package/node_modules/mdast-util-from-markdown/index.js +2 -0
  111. package/node_modules/mdast-util-from-markdown/lib/index.d.ts +53 -0
  112. package/node_modules/mdast-util-from-markdown/lib/index.js +1177 -0
  113. package/node_modules/mdast-util-from-markdown/lib/types.d.ts +295 -0
  114. package/node_modules/mdast-util-from-markdown/lib/types.js +2 -0
  115. package/node_modules/mdast-util-from-markdown/license +22 -0
  116. package/node_modules/mdast-util-from-markdown/package.json +139 -0
  117. package/node_modules/mdast-util-from-markdown/readme.md +537 -0
  118. package/node_modules/mdast-util-to-string/index.d.ts +2 -0
  119. package/node_modules/mdast-util-to-string/index.js +5 -0
  120. package/node_modules/mdast-util-to-string/lib/index.d.ts +31 -0
  121. package/node_modules/mdast-util-to-string/lib/index.js +108 -0
  122. package/node_modules/mdast-util-to-string/license +22 -0
  123. package/node_modules/mdast-util-to-string/package.json +78 -0
  124. package/node_modules/mdast-util-to-string/readme.md +218 -0
  125. package/node_modules/micromark/dev/index.d.ts +82 -0
  126. package/node_modules/micromark/dev/index.d.ts.map +1 -0
  127. package/node_modules/micromark/dev/index.js +68 -0
  128. package/node_modules/micromark/dev/lib/compile.d.ts +16 -0
  129. package/node_modules/micromark/dev/lib/compile.d.ts.map +1 -0
  130. package/node_modules/micromark/dev/lib/compile.js +1162 -0
  131. package/node_modules/micromark/dev/lib/constructs.d.ts +73 -0
  132. package/node_modules/micromark/dev/lib/constructs.d.ts.map +1 -0
  133. package/node_modules/micromark/dev/lib/constructs.js +101 -0
  134. package/node_modules/micromark/dev/lib/create-tokenizer.d.ts +46 -0
  135. package/node_modules/micromark/dev/lib/create-tokenizer.d.ts.map +1 -0
  136. package/node_modules/micromark/dev/lib/create-tokenizer.js +718 -0
  137. package/node_modules/micromark/dev/lib/initialize/content.d.ts +4 -0
  138. package/node_modules/micromark/dev/lib/initialize/content.d.ts.map +1 -0
  139. package/node_modules/micromark/dev/lib/initialize/content.js +99 -0
  140. package/node_modules/micromark/dev/lib/initialize/document.d.ts +10 -0
  141. package/node_modules/micromark/dev/lib/initialize/document.d.ts.map +1 -0
  142. package/node_modules/micromark/dev/lib/initialize/document.js +449 -0
  143. package/node_modules/micromark/dev/lib/initialize/flow.d.ts +4 -0
  144. package/node_modules/micromark/dev/lib/initialize/flow.d.ts.map +1 -0
  145. package/node_modules/micromark/dev/lib/initialize/flow.js +86 -0
  146. package/node_modules/micromark/dev/lib/initialize/text.d.ts +8 -0
  147. package/node_modules/micromark/dev/lib/initialize/text.d.ts.map +1 -0
  148. package/node_modules/micromark/dev/lib/initialize/text.js +248 -0
  149. package/node_modules/micromark/dev/lib/parse.d.ts +10 -0
  150. package/node_modules/micromark/dev/lib/parse.d.ts.map +1 -0
  151. package/node_modules/micromark/dev/lib/parse.js +58 -0
  152. package/node_modules/micromark/dev/lib/postprocess.d.ts +9 -0
  153. package/node_modules/micromark/dev/lib/postprocess.d.ts.map +1 -0
  154. package/node_modules/micromark/dev/lib/postprocess.js +19 -0
  155. package/node_modules/micromark/dev/lib/preprocess.d.ts +13 -0
  156. package/node_modules/micromark/dev/lib/preprocess.d.ts.map +1 -0
  157. package/node_modules/micromark/dev/lib/preprocess.js +139 -0
  158. package/node_modules/micromark/dev/stream.d.ts +35 -0
  159. package/node_modules/micromark/dev/stream.d.ts.map +1 -0
  160. package/node_modules/micromark/dev/stream.js +270 -0
  161. package/node_modules/micromark/index.d.ts +82 -0
  162. package/node_modules/micromark/index.d.ts.map +1 -0
  163. package/node_modules/micromark/index.js +60 -0
  164. package/node_modules/micromark/lib/compile.d.ts +16 -0
  165. package/node_modules/micromark/lib/compile.d.ts.map +1 -0
  166. package/node_modules/micromark/lib/compile.js +1068 -0
  167. package/node_modules/micromark/lib/constructs.d.ts +73 -0
  168. package/node_modules/micromark/lib/constructs.d.ts.map +1 -0
  169. package/node_modules/micromark/lib/constructs.js +85 -0
  170. package/node_modules/micromark/lib/create-tokenizer.d.ts +46 -0
  171. package/node_modules/micromark/lib/create-tokenizer.d.ts.map +1 -0
  172. package/node_modules/micromark/lib/create-tokenizer.js +613 -0
  173. package/node_modules/micromark/lib/initialize/content.d.ts +4 -0
  174. package/node_modules/micromark/lib/initialize/content.d.ts.map +1 -0
  175. package/node_modules/micromark/lib/initialize/content.js +79 -0
  176. package/node_modules/micromark/lib/initialize/document.d.ts +10 -0
  177. package/node_modules/micromark/lib/initialize/document.d.ts.map +1 -0
  178. package/node_modules/micromark/lib/initialize/document.js +370 -0
  179. package/node_modules/micromark/lib/initialize/flow.d.ts +4 -0
  180. package/node_modules/micromark/lib/initialize/flow.d.ts.map +1 -0
  181. package/node_modules/micromark/lib/initialize/flow.js +58 -0
  182. package/node_modules/micromark/lib/initialize/text.d.ts +8 -0
  183. package/node_modules/micromark/lib/initialize/text.d.ts.map +1 -0
  184. package/node_modules/micromark/lib/initialize/text.js +216 -0
  185. package/node_modules/micromark/lib/parse.d.ts +10 -0
  186. package/node_modules/micromark/lib/parse.d.ts.map +1 -0
  187. package/node_modules/micromark/lib/parse.js +56 -0
  188. package/node_modules/micromark/lib/postprocess.d.ts +9 -0
  189. package/node_modules/micromark/lib/postprocess.d.ts.map +1 -0
  190. package/node_modules/micromark/lib/postprocess.js +18 -0
  191. package/node_modules/micromark/lib/preprocess.d.ts +13 -0
  192. package/node_modules/micromark/lib/preprocess.d.ts.map +1 -0
  193. package/node_modules/micromark/lib/preprocess.js +112 -0
  194. package/node_modules/micromark/license +22 -0
  195. package/node_modules/micromark/package.json +87 -0
  196. package/node_modules/micromark/readme.md +488 -0
  197. package/node_modules/micromark/stream.d.ts +35 -0
  198. package/node_modules/micromark/stream.d.ts.map +1 -0
  199. package/node_modules/micromark/stream.js +256 -0
  200. package/node_modules/micromark-core-commonmark/dev/index.d.ts +23 -0
  201. package/node_modules/micromark-core-commonmark/dev/index.d.ts.map +1 -0
  202. package/node_modules/micromark-core-commonmark/dev/index.js +22 -0
  203. package/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts +4 -0
  204. package/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts.map +1 -0
  205. package/node_modules/micromark-core-commonmark/dev/lib/attention.js +294 -0
  206. package/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts +4 -0
  207. package/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts.map +1 -0
  208. package/node_modules/micromark-core-commonmark/dev/lib/autolink.js +269 -0
  209. package/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts +4 -0
  210. package/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts.map +1 -0
  211. package/node_modules/micromark-core-commonmark/dev/lib/blank-line.js +62 -0
  212. package/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts +4 -0
  213. package/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts.map +1 -0
  214. package/node_modules/micromark-core-commonmark/dev/lib/block-quote.js +162 -0
  215. package/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts +4 -0
  216. package/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts.map +1 -0
  217. package/node_modules/micromark-core-commonmark/dev/lib/character-escape.js +69 -0
  218. package/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts +4 -0
  219. package/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts.map +1 -0
  220. package/node_modules/micromark-core-commonmark/dev/lib/character-reference.js +166 -0
  221. package/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts +4 -0
  222. package/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts.map +1 -0
  223. package/node_modules/micromark-core-commonmark/dev/lib/code-fenced.js +472 -0
  224. package/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts +4 -0
  225. package/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts.map +1 -0
  226. package/node_modules/micromark-core-commonmark/dev/lib/code-indented.js +178 -0
  227. package/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts +4 -0
  228. package/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts.map +1 -0
  229. package/node_modules/micromark-core-commonmark/dev/lib/code-text.js +257 -0
  230. package/node_modules/micromark-core-commonmark/dev/lib/content.d.ts +7 -0
  231. package/node_modules/micromark-core-commonmark/dev/lib/content.d.ts.map +1 -0
  232. package/node_modules/micromark-core-commonmark/dev/lib/content.js +185 -0
  233. package/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts +4 -0
  234. package/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts.map +1 -0
  235. package/node_modules/micromark-core-commonmark/dev/lib/definition.js +295 -0
  236. package/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts +4 -0
  237. package/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts.map +1 -0
  238. package/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js +65 -0
  239. package/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts +4 -0
  240. package/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts.map +1 -0
  241. package/node_modules/micromark-core-commonmark/dev/lib/heading-atx.js +229 -0
  242. package/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts +4 -0
  243. package/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts.map +1 -0
  244. package/node_modules/micromark-core-commonmark/dev/lib/html-flow.js +938 -0
  245. package/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts +4 -0
  246. package/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts.map +1 -0
  247. package/node_modules/micromark-core-commonmark/dev/lib/html-text.js +783 -0
  248. package/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts +4 -0
  249. package/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts.map +1 -0
  250. package/node_modules/micromark-core-commonmark/dev/lib/label-end.js +658 -0
  251. package/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts +4 -0
  252. package/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts.map +1 -0
  253. package/node_modules/micromark-core-commonmark/dev/lib/label-start-image.js +119 -0
  254. package/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts +4 -0
  255. package/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts.map +1 -0
  256. package/node_modules/micromark-core-commonmark/dev/lib/label-start-link.js +71 -0
  257. package/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts +4 -0
  258. package/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts.map +1 -0
  259. package/node_modules/micromark-core-commonmark/dev/lib/line-ending.js +34 -0
  260. package/node_modules/micromark-core-commonmark/dev/lib/list.d.ts +4 -0
  261. package/node_modules/micromark-core-commonmark/dev/lib/list.d.ts.map +1 -0
  262. package/node_modules/micromark-core-commonmark/dev/lib/list.js +306 -0
  263. package/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts +4 -0
  264. package/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  265. package/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.js +67 -0
  266. package/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts +4 -0
  267. package/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts.map +1 -0
  268. package/node_modules/micromark-core-commonmark/dev/lib/setext-underline.js +213 -0
  269. package/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts +4 -0
  270. package/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts.map +1 -0
  271. package/node_modules/micromark-core-commonmark/dev/lib/thematic-break.js +120 -0
  272. package/node_modules/micromark-core-commonmark/index.d.ts +23 -0
  273. package/node_modules/micromark-core-commonmark/index.d.ts.map +1 -0
  274. package/node_modules/micromark-core-commonmark/index.js +22 -0
  275. package/node_modules/micromark-core-commonmark/lib/attention.d.ts +4 -0
  276. package/node_modules/micromark-core-commonmark/lib/attention.d.ts.map +1 -0
  277. package/node_modules/micromark-core-commonmark/lib/attention.js +231 -0
  278. package/node_modules/micromark-core-commonmark/lib/autolink.d.ts +4 -0
  279. package/node_modules/micromark-core-commonmark/lib/autolink.d.ts.map +1 -0
  280. package/node_modules/micromark-core-commonmark/lib/autolink.js +233 -0
  281. package/node_modules/micromark-core-commonmark/lib/blank-line.d.ts +4 -0
  282. package/node_modules/micromark-core-commonmark/lib/blank-line.d.ts.map +1 -0
  283. package/node_modules/micromark-core-commonmark/lib/blank-line.js +61 -0
  284. package/node_modules/micromark-core-commonmark/lib/block-quote.d.ts +4 -0
  285. package/node_modules/micromark-core-commonmark/lib/block-quote.d.ts.map +1 -0
  286. package/node_modules/micromark-core-commonmark/lib/block-quote.js +143 -0
  287. package/node_modules/micromark-core-commonmark/lib/character-escape.d.ts +4 -0
  288. package/node_modules/micromark-core-commonmark/lib/character-escape.d.ts.map +1 -0
  289. package/node_modules/micromark-core-commonmark/lib/character-escape.js +64 -0
  290. package/node_modules/micromark-core-commonmark/lib/character-reference.d.ts +4 -0
  291. package/node_modules/micromark-core-commonmark/lib/character-reference.d.ts.map +1 -0
  292. package/node_modules/micromark-core-commonmark/lib/character-reference.js +149 -0
  293. package/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts +4 -0
  294. package/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts.map +1 -0
  295. package/node_modules/micromark-core-commonmark/lib/code-fenced.js +422 -0
  296. package/node_modules/micromark-core-commonmark/lib/code-indented.d.ts +4 -0
  297. package/node_modules/micromark-core-commonmark/lib/code-indented.d.ts.map +1 -0
  298. package/node_modules/micromark-core-commonmark/lib/code-indented.js +159 -0
  299. package/node_modules/micromark-core-commonmark/lib/code-text.d.ts +4 -0
  300. package/node_modules/micromark-core-commonmark/lib/code-text.d.ts.map +1 -0
  301. package/node_modules/micromark-core-commonmark/lib/code-text.js +225 -0
  302. package/node_modules/micromark-core-commonmark/lib/content.d.ts +7 -0
  303. package/node_modules/micromark-core-commonmark/lib/content.d.ts.map +1 -0
  304. package/node_modules/micromark-core-commonmark/lib/content.js +163 -0
  305. package/node_modules/micromark-core-commonmark/lib/definition.d.ts +4 -0
  306. package/node_modules/micromark-core-commonmark/lib/definition.d.ts.map +1 -0
  307. package/node_modules/micromark-core-commonmark/lib/definition.js +254 -0
  308. package/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts +4 -0
  309. package/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts.map +1 -0
  310. package/node_modules/micromark-core-commonmark/lib/hard-break-escape.js +60 -0
  311. package/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts +4 -0
  312. package/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts.map +1 -0
  313. package/node_modules/micromark-core-commonmark/lib/heading-atx.js +191 -0
  314. package/node_modules/micromark-core-commonmark/lib/html-flow.d.ts +4 -0
  315. package/node_modules/micromark-core-commonmark/lib/html-flow.d.ts.map +1 -0
  316. package/node_modules/micromark-core-commonmark/lib/html-flow.js +827 -0
  317. package/node_modules/micromark-core-commonmark/lib/html-text.d.ts +4 -0
  318. package/node_modules/micromark-core-commonmark/lib/html-text.d.ts.map +1 -0
  319. package/node_modules/micromark-core-commonmark/lib/html-text.js +678 -0
  320. package/node_modules/micromark-core-commonmark/lib/label-end.d.ts +4 -0
  321. package/node_modules/micromark-core-commonmark/lib/label-end.d.ts.map +1 -0
  322. package/node_modules/micromark-core-commonmark/lib/label-end.js +561 -0
  323. package/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts +4 -0
  324. package/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts.map +1 -0
  325. package/node_modules/micromark-core-commonmark/lib/label-start-image.js +110 -0
  326. package/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts +4 -0
  327. package/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts.map +1 -0
  328. package/node_modules/micromark-core-commonmark/lib/label-start-link.js +63 -0
  329. package/node_modules/micromark-core-commonmark/lib/line-ending.d.ts +4 -0
  330. package/node_modules/micromark-core-commonmark/lib/line-ending.d.ts.map +1 -0
  331. package/node_modules/micromark-core-commonmark/lib/line-ending.js +33 -0
  332. package/node_modules/micromark-core-commonmark/lib/list.d.ts +4 -0
  333. package/node_modules/micromark-core-commonmark/lib/list.d.ts.map +1 -0
  334. package/node_modules/micromark-core-commonmark/lib/list.js +213 -0
  335. package/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts +4 -0
  336. package/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  337. package/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js +61 -0
  338. package/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts +4 -0
  339. package/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts.map +1 -0
  340. package/node_modules/micromark-core-commonmark/lib/setext-underline.js +187 -0
  341. package/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts +4 -0
  342. package/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts.map +1 -0
  343. package/node_modules/micromark-core-commonmark/lib/thematic-break.js +102 -0
  344. package/node_modules/micromark-core-commonmark/license +22 -0
  345. package/node_modules/micromark-core-commonmark/package.json +62 -0
  346. package/node_modules/micromark-core-commonmark/readme.md +171 -0
  347. package/node_modules/micromark-factory-destination/dev/index.d.ts +42 -0
  348. package/node_modules/micromark-factory-destination/dev/index.d.ts.map +1 -0
  349. package/node_modules/micromark-factory-destination/dev/index.js +255 -0
  350. package/node_modules/micromark-factory-destination/index.d.ts +42 -0
  351. package/node_modules/micromark-factory-destination/index.d.ts.map +1 -0
  352. package/node_modules/micromark-factory-destination/index.js +206 -0
  353. package/node_modules/micromark-factory-destination/license +22 -0
  354. package/node_modules/micromark-factory-destination/package.json +57 -0
  355. package/node_modules/micromark-factory-destination/readme.md +234 -0
  356. package/node_modules/micromark-factory-label/dev/index.d.ts +37 -0
  357. package/node_modules/micromark-factory-label/dev/index.d.ts.map +1 -0
  358. package/node_modules/micromark-factory-label/dev/index.js +172 -0
  359. package/node_modules/micromark-factory-label/index.d.ts +37 -0
  360. package/node_modules/micromark-factory-label/index.d.ts.map +1 -0
  361. package/node_modules/micromark-factory-label/index.js +148 -0
  362. package/node_modules/micromark-factory-label/license +22 -0
  363. package/node_modules/micromark-factory-label/package.json +60 -0
  364. package/node_modules/micromark-factory-label/readme.md +224 -0
  365. package/node_modules/micromark-factory-space/dev/index.d.ts +60 -0
  366. package/node_modules/micromark-factory-space/dev/index.d.ts.map +1 -0
  367. package/node_modules/micromark-factory-space/dev/index.js +122 -0
  368. package/node_modules/micromark-factory-space/index.d.ts +60 -0
  369. package/node_modules/micromark-factory-space/index.d.ts.map +1 -0
  370. package/node_modules/micromark-factory-space/index.js +116 -0
  371. package/node_modules/micromark-factory-space/license +22 -0
  372. package/node_modules/micromark-factory-space/package.json +46 -0
  373. package/node_modules/micromark-factory-space/readme.md +225 -0
  374. package/node_modules/micromark-factory-title/dev/index.d.ts +36 -0
  375. package/node_modules/micromark-factory-title/dev/index.d.ts.map +1 -0
  376. package/node_modules/micromark-factory-title/dev/index.js +169 -0
  377. package/node_modules/micromark-factory-title/index.d.ts +36 -0
  378. package/node_modules/micromark-factory-title/index.d.ts.map +1 -0
  379. package/node_modules/micromark-factory-title/index.js +158 -0
  380. package/node_modules/micromark-factory-title/license +22 -0
  381. package/node_modules/micromark-factory-title/package.json +58 -0
  382. package/node_modules/micromark-factory-title/readme.md +229 -0
  383. package/node_modules/micromark-factory-whitespace/dev/index.d.ts +22 -0
  384. package/node_modules/micromark-factory-whitespace/dev/index.d.ts.map +1 -0
  385. package/node_modules/micromark-factory-whitespace/dev/index.js +53 -0
  386. package/node_modules/micromark-factory-whitespace/index.d.ts +22 -0
  387. package/node_modules/micromark-factory-whitespace/index.d.ts.map +1 -0
  388. package/node_modules/micromark-factory-whitespace/index.js +44 -0
  389. package/node_modules/micromark-factory-whitespace/license +22 -0
  390. package/node_modules/micromark-factory-whitespace/package.json +57 -0
  391. package/node_modules/micromark-factory-whitespace/readme.md +205 -0
  392. package/node_modules/micromark-util-character/dev/index.d.ts +195 -0
  393. package/node_modules/micromark-util-character/dev/index.d.ts.map +1 -0
  394. package/node_modules/micromark-util-character/dev/index.js +252 -0
  395. package/node_modules/micromark-util-character/index.d.ts +195 -0
  396. package/node_modules/micromark-util-character/index.d.ts.map +1 -0
  397. package/node_modules/micromark-util-character/index.js +246 -0
  398. package/node_modules/micromark-util-character/license +22 -0
  399. package/node_modules/micromark-util-character/package.json +57 -0
  400. package/node_modules/micromark-util-character/readme.md +446 -0
  401. package/node_modules/micromark-util-chunked/dev/index.d.ts +41 -0
  402. package/node_modules/micromark-util-chunked/dev/index.d.ts.map +1 -0
  403. package/node_modules/micromark-util-chunked/dev/index.js +89 -0
  404. package/node_modules/micromark-util-chunked/index.d.ts +41 -0
  405. package/node_modules/micromark-util-chunked/index.d.ts.map +1 -0
  406. package/node_modules/micromark-util-chunked/index.js +81 -0
  407. package/node_modules/micromark-util-chunked/license +22 -0
  408. package/node_modules/micromark-util-chunked/package.json +57 -0
  409. package/node_modules/micromark-util-chunked/readme.md +219 -0
  410. package/node_modules/micromark-util-classify-character/dev/index.d.ts +18 -0
  411. package/node_modules/micromark-util-classify-character/dev/index.d.ts.map +1 -0
  412. package/node_modules/micromark-util-classify-character/dev/index.js +38 -0
  413. package/node_modules/micromark-util-classify-character/index.d.ts +18 -0
  414. package/node_modules/micromark-util-classify-character/index.d.ts.map +1 -0
  415. package/node_modules/micromark-util-classify-character/index.js +27 -0
  416. package/node_modules/micromark-util-classify-character/license +22 -0
  417. package/node_modules/micromark-util-classify-character/package.json +59 -0
  418. package/node_modules/micromark-util-classify-character/readme.md +205 -0
  419. package/node_modules/micromark-util-combine-extensions/index.d.ts +22 -0
  420. package/node_modules/micromark-util-combine-extensions/index.d.ts.map +1 -0
  421. package/node_modules/micromark-util-combine-extensions/index.js +143 -0
  422. package/node_modules/micromark-util-combine-extensions/license +22 -0
  423. package/node_modules/micromark-util-combine-extensions/package.json +52 -0
  424. package/node_modules/micromark-util-combine-extensions/readme.md +201 -0
  425. package/node_modules/micromark-util-decode-numeric-character-reference/dev/index.d.ts +16 -0
  426. package/node_modules/micromark-util-decode-numeric-character-reference/dev/index.d.ts.map +1 -0
  427. package/node_modules/micromark-util-decode-numeric-character-reference/dev/index.js +42 -0
  428. package/node_modules/micromark-util-decode-numeric-character-reference/index.d.ts +16 -0
  429. package/node_modules/micromark-util-decode-numeric-character-reference/index.d.ts.map +1 -0
  430. package/node_modules/micromark-util-decode-numeric-character-reference/index.js +32 -0
  431. package/node_modules/micromark-util-decode-numeric-character-reference/license +22 -0
  432. package/node_modules/micromark-util-decode-numeric-character-reference/package.json +59 -0
  433. package/node_modules/micromark-util-decode-numeric-character-reference/readme.md +184 -0
  434. package/node_modules/micromark-util-decode-string/dev/index.d.ts +14 -0
  435. package/node_modules/micromark-util-decode-string/dev/index.d.ts.map +1 -0
  436. package/node_modules/micromark-util-decode-string/dev/index.js +53 -0
  437. package/node_modules/micromark-util-decode-string/index.d.ts +14 -0
  438. package/node_modules/micromark-util-decode-string/index.d.ts.map +1 -0
  439. package/node_modules/micromark-util-decode-string/index.js +45 -0
  440. package/node_modules/micromark-util-decode-string/license +22 -0
  441. package/node_modules/micromark-util-decode-string/package.json +63 -0
  442. package/node_modules/micromark-util-decode-string/readme.md +179 -0
  443. package/node_modules/micromark-util-edit-map/dev/index.d.ts +78 -0
  444. package/node_modules/micromark-util-edit-map/dev/index.d.ts.map +1 -0
  445. package/node_modules/micromark-util-edit-map/dev/index.js +237 -0
  446. package/node_modules/micromark-util-edit-map/index.d.ts +78 -0
  447. package/node_modules/micromark-util-edit-map/index.d.ts.map +1 -0
  448. package/node_modules/micromark-util-edit-map/index.js +225 -0
  449. package/node_modules/micromark-util-edit-map/license +22 -0
  450. package/node_modules/micromark-util-edit-map/package.json +48 -0
  451. package/node_modules/micromark-util-edit-map/readme.md +234 -0
  452. package/node_modules/micromark-util-encode/index.d.ts +14 -0
  453. package/node_modules/micromark-util-encode/index.d.ts.map +1 -0
  454. package/node_modules/micromark-util-encode/index.js +33 -0
  455. package/node_modules/micromark-util-encode/license +22 -0
  456. package/node_modules/micromark-util-encode/package.json +47 -0
  457. package/node_modules/micromark-util-encode/readme.md +176 -0
  458. package/node_modules/micromark-util-html-tag-name/index.d.ts +30 -0
  459. package/node_modules/micromark-util-html-tag-name/index.d.ts.map +1 -0
  460. package/node_modules/micromark-util-html-tag-name/index.js +93 -0
  461. package/node_modules/micromark-util-html-tag-name/license +22 -0
  462. package/node_modules/micromark-util-html-tag-name/package.json +47 -0
  463. package/node_modules/micromark-util-html-tag-name/readme.md +193 -0
  464. package/node_modules/micromark-util-normalize-identifier/dev/index.d.ts +21 -0
  465. package/node_modules/micromark-util-normalize-identifier/dev/index.d.ts.map +1 -0
  466. package/node_modules/micromark-util-normalize-identifier/dev/index.js +38 -0
  467. package/node_modules/micromark-util-normalize-identifier/index.d.ts +21 -0
  468. package/node_modules/micromark-util-normalize-identifier/index.d.ts.map +1 -0
  469. package/node_modules/micromark-util-normalize-identifier/index.js +33 -0
  470. package/node_modules/micromark-util-normalize-identifier/license +22 -0
  471. package/node_modules/micromark-util-normalize-identifier/package.json +58 -0
  472. package/node_modules/micromark-util-normalize-identifier/readme.md +187 -0
  473. package/node_modules/micromark-util-resolve-all/index.d.ts +22 -0
  474. package/node_modules/micromark-util-resolve-all/index.d.ts.map +1 -0
  475. package/node_modules/micromark-util-resolve-all/index.js +32 -0
  476. package/node_modules/micromark-util-resolve-all/license +22 -0
  477. package/node_modules/micromark-util-resolve-all/package.json +48 -0
  478. package/node_modules/micromark-util-resolve-all/readme.md +238 -0
  479. package/node_modules/micromark-util-sanitize-uri/dev/index.d.ts +36 -0
  480. package/node_modules/micromark-util-sanitize-uri/dev/index.d.ts.map +1 -0
  481. package/node_modules/micromark-util-sanitize-uri/dev/index.js +124 -0
  482. package/node_modules/micromark-util-sanitize-uri/index.d.ts +36 -0
  483. package/node_modules/micromark-util-sanitize-uri/index.d.ts.map +1 -0
  484. package/node_modules/micromark-util-sanitize-uri/index.js +107 -0
  485. package/node_modules/micromark-util-sanitize-uri/license +22 -0
  486. package/node_modules/micromark-util-sanitize-uri/package.json +59 -0
  487. package/node_modules/micromark-util-sanitize-uri/readme.md +214 -0
  488. package/node_modules/micromark-util-subtokenize/dev/index.d.ts +12 -0
  489. package/node_modules/micromark-util-subtokenize/dev/index.d.ts.map +1 -0
  490. package/node_modules/micromark-util-subtokenize/dev/index.js +284 -0
  491. package/node_modules/micromark-util-subtokenize/dev/lib/splice-buffer.d.ts +161 -0
  492. package/node_modules/micromark-util-subtokenize/dev/lib/splice-buffer.d.ts.map +1 -0
  493. package/node_modules/micromark-util-subtokenize/dev/lib/splice-buffer.js +288 -0
  494. package/node_modules/micromark-util-subtokenize/index.d.ts +12 -0
  495. package/node_modules/micromark-util-subtokenize/index.d.ts.map +1 -0
  496. package/node_modules/micromark-util-subtokenize/index.js +228 -0
  497. package/node_modules/micromark-util-subtokenize/lib/splice-buffer.d.ts +161 -0
  498. package/node_modules/micromark-util-subtokenize/lib/splice-buffer.d.ts.map +1 -0
  499. package/node_modules/micromark-util-subtokenize/lib/splice-buffer.js +251 -0
  500. package/node_modules/micromark-util-subtokenize/license +22 -0
  501. package/node_modules/micromark-util-subtokenize/package.json +60 -0
  502. package/node_modules/micromark-util-subtokenize/readme.md +181 -0
  503. package/node_modules/micromark-util-symbol/lib/codes.d.ts +139 -0
  504. package/node_modules/micromark-util-symbol/lib/codes.d.ts.map +1 -0
  505. package/node_modules/micromark-util-symbol/lib/codes.js +158 -0
  506. package/node_modules/micromark-util-symbol/lib/constants.d.ts +37 -0
  507. package/node_modules/micromark-util-symbol/lib/constants.d.ts.map +1 -0
  508. package/node_modules/micromark-util-symbol/lib/constants.js +44 -0
  509. package/node_modules/micromark-util-symbol/lib/default.d.ts +5 -0
  510. package/node_modules/micromark-util-symbol/lib/default.d.ts.map +1 -0
  511. package/node_modules/micromark-util-symbol/lib/default.js +4 -0
  512. package/node_modules/micromark-util-symbol/lib/types.d.ts +106 -0
  513. package/node_modules/micromark-util-symbol/lib/types.d.ts.map +1 -0
  514. package/node_modules/micromark-util-symbol/lib/types.js +453 -0
  515. package/node_modules/micromark-util-symbol/lib/values.d.ts +102 -0
  516. package/node_modules/micromark-util-symbol/lib/values.d.ts.map +1 -0
  517. package/node_modules/micromark-util-symbol/lib/values.js +109 -0
  518. package/node_modules/micromark-util-symbol/license +22 -0
  519. package/node_modules/micromark-util-symbol/package.json +43 -0
  520. package/node_modules/micromark-util-symbol/readme.md +168 -0
  521. package/node_modules/micromark-util-types/index.d.ts +1315 -0
  522. package/node_modules/micromark-util-types/index.js +2 -0
  523. package/node_modules/micromark-util-types/license +22 -0
  524. package/node_modules/micromark-util-types/package.json +37 -0
  525. package/node_modules/micromark-util-types/readme.md +151 -0
  526. package/node_modules/smol-toml/LICENSE +24 -0
  527. package/node_modules/smol-toml/README.md +605 -0
  528. package/node_modules/smol-toml/dist/date.d.ts +41 -0
  529. package/node_modules/smol-toml/dist/date.js +156 -0
  530. package/node_modules/smol-toml/dist/error.d.ts +37 -0
  531. package/node_modules/smol-toml/dist/error.js +67 -0
  532. package/node_modules/smol-toml/dist/extract.js +289 -0
  533. package/node_modules/smol-toml/dist/index.cjs +770 -0
  534. package/node_modules/smol-toml/dist/index.d.ts +44 -0
  535. package/node_modules/smol-toml/dist/index.js +34 -0
  536. package/node_modules/smol-toml/dist/parse.d.ts +73 -0
  537. package/node_modules/smol-toml/dist/parse.js +164 -0
  538. package/node_modules/smol-toml/dist/primitive.js +151 -0
  539. package/node_modules/smol-toml/dist/stringify.d.ts +32 -0
  540. package/node_modules/smol-toml/dist/stringify.js +219 -0
  541. package/node_modules/smol-toml/dist/struct.js +156 -0
  542. package/node_modules/smol-toml/dist/util.d.ts +43 -0
  543. package/node_modules/smol-toml/dist/util.js +57 -0
  544. package/node_modules/smol-toml/package.json +68 -0
  545. package/node_modules/unist-util-stringify-position/index.d.ts +1 -0
  546. package/node_modules/unist-util-stringify-position/index.js +1 -0
  547. package/node_modules/unist-util-stringify-position/lib/index.d.ts +61 -0
  548. package/node_modules/unist-util-stringify-position/lib/index.js +84 -0
  549. package/node_modules/unist-util-stringify-position/license +22 -0
  550. package/node_modules/unist-util-stringify-position/package.json +80 -0
  551. package/node_modules/unist-util-stringify-position/readme.md +206 -0
  552. package/package.json +27 -8
  553. package/scripts/prepare-github-keyring.js +29 -0
  554. package/skills/taskchef-delegate/SKILL.md +5 -0
  555. package/src/codex-app.js +20 -2
  556. package/src/codex-pricing.js +79 -0
  557. package/src/codex-projects.js +90 -0
  558. package/src/codex-session-scanner.js +748 -0
  559. package/src/codex-session-usage.js +332 -0
  560. package/src/dashboard/app.js +2 -2
  561. package/src/dashboard/dist/app.js +135 -60
  562. package/src/dashboard/dist/app.js.map +1 -1
  563. package/src/dashboard/dist/styles.css +1 -1
  564. package/src/dashboard/react/components/AnimatedUsage.test.tsx +78 -0
  565. package/src/dashboard/react/components/CardStatusIcons.test.tsx +146 -0
  566. package/src/dashboard/react/components/CardStatusIcons.tsx +138 -0
  567. package/src/dashboard/react/components/ImageGallery.tsx +22 -0
  568. package/src/dashboard/react/components/ModelSettings.test.tsx +4 -4
  569. package/src/dashboard/react/components/ModelSettings.tsx +1 -1
  570. package/src/dashboard/react/components/OpenChatButton.test.tsx +19 -0
  571. package/src/dashboard/react/components/OpenChatButton.tsx +2 -1
  572. package/src/dashboard/react/components/PrGlyph.tsx +35 -0
  573. package/src/dashboard/react/components/PullRequestBadges.tsx +18 -0
  574. package/src/dashboard/react/components/QueuedPrompts.test.tsx +42 -0
  575. package/src/dashboard/react/components/QueuedPrompts.tsx +34 -0
  576. package/src/dashboard/react/components/RelativeTime.test.tsx +100 -0
  577. package/src/dashboard/react/components/RelativeTime.tsx +46 -11
  578. package/src/dashboard/react/components/ReplyCover.test.tsx +30 -0
  579. package/src/dashboard/react/components/ReplyCover.tsx +33 -0
  580. package/src/dashboard/react/components/ReplyImagePreview.test.tsx +90 -0
  581. package/src/dashboard/react/components/ReplyImagePreview.tsx +34 -0
  582. package/src/dashboard/react/components/ReplyMarkdown.test.tsx +108 -0
  583. package/src/dashboard/react/components/ReplyMarkdown.tsx +112 -0
  584. package/src/dashboard/react/components/SavedUsageFormat.test.tsx +11 -0
  585. package/src/dashboard/react/components/SavedUsageFormat.tsx +68 -0
  586. package/src/dashboard/react/components/StatusBadge.tsx +2 -2
  587. package/src/dashboard/react/components/TaskBoard.test.tsx +256 -1
  588. package/src/dashboard/react/components/TaskBoard.tsx +136 -28
  589. package/src/dashboard/react/components/TaskCard.tsx +7 -4
  590. package/src/dashboard/react/components/TaskDetail.test.tsx +92 -1
  591. package/src/dashboard/react/components/TaskDetail.tsx +37 -10
  592. package/src/dashboard/react/components/TurnContent.test.tsx +44 -0
  593. package/src/dashboard/react/components/TurnContent.tsx +53 -0
  594. package/src/dashboard/react/components/UsagePanel.tsx +2 -2
  595. package/src/dashboard/react/image-cache.test.ts +23 -0
  596. package/src/dashboard/react/image-cache.ts +33 -0
  597. package/src/dashboard/react/presentation.test.tsx +31 -0
  598. package/src/dashboard/react/styles.css +126 -2
  599. package/src/dashboard/react/types.ts +55 -1
  600. package/src/dashboard/time.js +39 -0
  601. package/src/dashboard.js +4 -3
  602. package/src/data/codex-pricing.json +537 -0
  603. package/src/mcp-app/dist/index.html +216 -112
  604. package/src/mcp-app/react/AppearancePicker.test.tsx +50 -0
  605. package/src/mcp-app/react/AppearancePicker.tsx +56 -0
  606. package/src/mcp-app/react/GitHubConnection.test.tsx +78 -0
  607. package/src/mcp-app/react/GitHubConnection.tsx +78 -0
  608. package/src/mcp-app/react/NextNotificationCenter.test.tsx +121 -0
  609. package/src/mcp-app/react/NextNotificationCenter.tsx +94 -0
  610. package/src/mcp-app/react/NextTaskDetail.test.tsx +124 -0
  611. package/src/mcp-app/react/NextTaskDetail.tsx +147 -0
  612. package/src/mcp-app/react/ProjectPicker.tsx +49 -0
  613. package/src/mcp-app/react/main.test.tsx +499 -49
  614. package/src/mcp-app/react/main.tsx +359 -86
  615. package/src/mcp-app/react/styles.css +186 -9
  616. package/src/mcp-app/react/themes.test.ts +34 -0
  617. package/src/mcp-app/react/themes.ts +112 -0
  618. package/src/mcp-app.js +238 -120
  619. package/src/mcp.js +9 -2
  620. package/src/next-cache.js +16 -0
  621. package/src/next-github.js +273 -0
  622. package/src/next-notifications.js +90 -0
  623. package/src/recorded-usage-tracker.js +92 -0
  624. package/src/reply-image.js +65 -0
  625. package/src/usage-tracker.js +7 -6
  626. package/src/usage.js +7 -355
  627. package/src/user-prompt.js +55 -0
  628. package/src/version.js +0 -1
  629. package/node_modules/proper-lockfile/CHANGELOG.md +0 -108
  630. package/node_modules/which/CHANGELOG.md +0 -166
  631. package/src/resolve-ccusage.js +0 -17
package/src/usage.js CHANGED
@@ -1,23 +1,7 @@
1
- import { execFile as execFileCallback } from "node:child_process";
2
- import {
3
- closeSync,
4
- constants as fsConstants,
5
- existsSync,
6
- fchmodSync,
7
- fstatSync,
8
- openSync,
9
- } from "node:fs";
10
1
  import { lstat, mkdir, readFile, rename, unlink, writeFile } from "node:fs/promises";
11
- import { createRequire } from "node:module";
12
2
  import path from "node:path";
13
3
  import { randomUUID } from "node:crypto";
14
- import { fileURLToPath } from "node:url";
15
4
 
16
- const require = createRequire(import.meta.url);
17
- const taskchefPackage = require("../package.json");
18
- const PINNED_CCUSAGE_VERSION = taskchefPackage.optionalDependencies?.ccusage;
19
- const CCUSAGE_RESOLVER = fileURLToPath(new URL("./resolve-ccusage.js", import.meta.url));
20
- let npxResolvedCcusageInvocation = null;
21
5
  const USAGE_FILE_NAME = ".taskchef-usage.json";
22
6
  const USAGE_SCHEMA_VERSION = 2;
23
7
  const UUID_PATTERN = /[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/gi;
@@ -84,13 +68,13 @@ function timestampOrNull(value, name) {
84
68
  }
85
69
 
86
70
  function normalizeProvenance(value, name, { includeSessionCount = false } = {}) {
87
- if (!value || value.provider !== "ccusage") {
71
+ if (!value || !["taskchef", "ccusage"].includes(value.provider)) {
88
72
  throw new Error(`${name}.provenance is invalid`);
89
73
  }
90
74
  return {
91
- provider: "ccusage",
75
+ provider: value.provider,
92
76
  version: typeof value.version === "string" ? value.version.slice(0, 64) : null,
93
- pricingMode: value.pricingMode === "online" || value.pricingMode === "offline"
77
+ pricingMode: ["online", "offline", "standard"].includes(value.pricingMode)
94
78
  ? value.pricingMode
95
79
  : null,
96
80
  ...(includeSessionCount ? {
@@ -123,6 +107,8 @@ function normalizeStoredSnapshot(value, name) {
123
107
  throw new Error(`${name}.models exceeds the usage cache limit`);
124
108
  }
125
109
  snapshot.models = models;
110
+ if (value.partial === true) snapshot.partial = true;
111
+ if (value.costPartial === true) snapshot.costPartial = true;
126
112
  snapshot.provenance = normalizeProvenance(value.provenance, name, { includeSessionCount: true });
127
113
  snapshot.sampledAt = timestampOrNull(value.sampledAt, `${name}.sampledAt`);
128
114
  snapshot.sourceUpdatedAt = timestampOrNull(value.sourceUpdatedAt, `${name}.sourceUpdatedAt`);
@@ -148,6 +134,8 @@ function normalizeStoredTurn(value, name) {
148
134
  }
149
135
  return {
150
136
  status: "available",
137
+ ...(value.partial === true ? { partial: true } : {}),
138
+ ...(value.costPartial === true ? { costPartial: true } : {}),
151
139
  ...normalized,
152
140
  costStatus: normalized.estimatedCostUsd === null ? "unavailable" : "estimated",
153
141
  provenance,
@@ -271,342 +259,6 @@ export function aggregateCcusageSessions(payload, threadId, {
271
259
  };
272
260
  }
273
261
 
274
- export function managedCcusageInvocation({
275
- platform = process.platform,
276
- arch = process.arch,
277
- env = process.env,
278
- resolvePath = (id) => require.resolve(id),
279
- exists = existsSync,
280
- npxCliPath = null,
281
- } = {}) {
282
- if (typeof PINNED_CCUSAGE_VERSION !== "string" || PINNED_CCUSAGE_VERSION.length === 0) {
283
- throw new Error("TaskChef has no pinned ccusage version");
284
- }
285
- const packageName = {
286
- "darwin-arm64": "@ccusage/ccusage-darwin-arm64",
287
- "darwin-x64": "@ccusage/ccusage-darwin-x64",
288
- "linux-arm64": "@ccusage/ccusage-linux-arm64",
289
- "linux-x64": "@ccusage/ccusage-linux-x64",
290
- "win32-arm64": "@ccusage/ccusage-win32-arm64",
291
- "win32-x64": "@ccusage/ccusage-win32-x64",
292
- }[`${platform}-${arch}`];
293
- let nativeBinary = null;
294
- if (packageName !== undefined) {
295
- try {
296
- nativeBinary = resolvePath(
297
- `${packageName}/bin/${platform === "win32" ? "ccusage.exe" : "ccusage"}`,
298
- );
299
- } catch {
300
- // Plugin-only installations can resolve the same pinned release through npx.
301
- }
302
- }
303
- if (nativeBinary !== null) {
304
- return {
305
- command: nativeBinary,
306
- args: [],
307
- version: PINNED_CCUSAGE_VERSION,
308
- };
309
- }
310
- if (packageName === undefined) {
311
- throw new Error(`ccusage does not support ${platform}-${arch}`);
312
- }
313
- const binaryName = platform === "win32" ? "ccusage.exe" : "ccusage";
314
- const npxArgs = [
315
- "--yes",
316
- "--prefer-offline",
317
- `--package=ccusage@${PINNED_CCUSAGE_VERSION}`,
318
- "node",
319
- CCUSAGE_RESOLVER,
320
- packageName,
321
- binaryName,
322
- ];
323
- if (platform === "win32") {
324
- const platformPath = path.win32;
325
- const nodeDirectory = platformPath.dirname(process.execPath);
326
- const candidates = [
327
- npxCliPath,
328
- typeof env.npm_execpath === "string"
329
- ? platformPath.join(platformPath.dirname(env.npm_execpath), "npx-cli.js")
330
- : null,
331
- platformPath.join(nodeDirectory, "node_modules", "npm", "bin", "npx-cli.js"),
332
- platformPath.resolve(
333
- nodeDirectory,
334
- "..", "lib", "node_modules", "npm", "bin", "npx-cli.js",
335
- ),
336
- ];
337
- const npxCli = candidates.find((candidate) => typeof candidate === "string"
338
- && platformPath.isAbsolute(candidate)
339
- && exists(candidate));
340
- if (npxCli === undefined) throw new Error("TaskChef could not resolve npm's npx CLI safely");
341
- return {
342
- command: process.execPath,
343
- args: [npxCli, ...npxArgs],
344
- version: PINNED_CCUSAGE_VERSION,
345
- resolvesNative: true,
346
- };
347
- }
348
- return {
349
- command: "npx",
350
- args: npxArgs,
351
- version: PINNED_CCUSAGE_VERSION,
352
- resolvesNative: true,
353
- };
354
- }
355
-
356
- export function ensureCcusageExecutable(command, {
357
- platform = process.platform,
358
- } = {}) {
359
- if (platform === "win32") return;
360
- const descriptor = openSync(command, fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW);
361
- try {
362
- const file = fstatSync(descriptor);
363
- if (!file.isFile()) throw new Error("ccusage native binary is not a regular file");
364
- if ((file.mode & 0o100) === 0) fchmodSync(descriptor, file.mode | 0o100);
365
- } finally {
366
- closeSync(descriptor);
367
- }
368
- }
369
-
370
- async function resolveManagedCcusageInvocation(invocation, run, timeoutMs) {
371
- if (invocation.resolvesNative !== true) {
372
- ensureCcusageExecutable(invocation.command);
373
- return invocation;
374
- }
375
- if (npxResolvedCcusageInvocation !== null
376
- && existsSync(npxResolvedCcusageInvocation.command)) {
377
- ensureCcusageExecutable(npxResolvedCcusageInvocation.command);
378
- return npxResolvedCcusageInvocation;
379
- }
380
- npxResolvedCcusageInvocation = null;
381
- const result = await run(invocation.command, invocation.args, {
382
- timeout: timeoutMs,
383
- maxBuffer: 64 * 1024,
384
- env: { ...process.env, NO_COLOR: "1" },
385
- });
386
- const command = String(result.stdout).trim();
387
- if (!path.isAbsolute(command)
388
- || !/^ccusage(?:\.exe)?$/iu.test(path.basename(command))
389
- || !existsSync(command)) {
390
- throw new Error("npx returned an invalid ccusage executable");
391
- }
392
- ensureCcusageExecutable(command);
393
- npxResolvedCcusageInvocation = {
394
- command,
395
- args: [],
396
- version: invocation.version,
397
- };
398
- return npxResolvedCcusageInvocation;
399
- }
400
-
401
- function processTable() {
402
- return new Promise((resolve) => {
403
- execFileCallback("ps", ["-axo", "pid=,ppid="], {
404
- maxBuffer: 4 * 1024 * 1024,
405
- timeout: 250,
406
- windowsHide: true,
407
- }, (error, stdout) => {
408
- if (error) {
409
- resolve([]);
410
- return;
411
- }
412
- resolve(String(stdout).trim().split("\n").flatMap((line) => {
413
- const [pid, parentPid] = line.trim().split(/\s+/u).map(Number);
414
- return Number.isInteger(pid) && Number.isInteger(parentPid)
415
- ? [{ pid, parentPid }]
416
- : [];
417
- }));
418
- });
419
- });
420
- }
421
-
422
- async function descendantProcessIds(parentPid) {
423
- const table = await processTable();
424
- const visit = (pid) => table
425
- .filter((entry) => entry.parentPid === pid)
426
- .flatMap((entry) => [...visit(entry.pid), entry.pid]);
427
- return visit(parentPid);
428
- }
429
-
430
- async function terminateProcessTree(child, platform = process.platform) {
431
- if (!Number.isInteger(child.pid)) return;
432
- if (platform === "win32") {
433
- await new Promise((resolve) => {
434
- execFileCallback(
435
- "taskkill",
436
- ["/pid", String(child.pid), "/t", "/f"],
437
- { timeout: 500, windowsHide: true },
438
- () => {
439
- child.kill("SIGKILL");
440
- resolve();
441
- },
442
- );
443
- });
444
- return;
445
- }
446
- try {
447
- process.kill(-child.pid, "SIGKILL");
448
- return;
449
- } catch {
450
- // Resolve descendants only when process-group termination is unavailable.
451
- }
452
- let descendants = [];
453
- try {
454
- descendants = await descendantProcessIds(child.pid);
455
- } catch {
456
- // The detached process-group kill remains the fallback when ps is unavailable.
457
- }
458
- for (const pid of descendants) {
459
- try {
460
- process.kill(pid, "SIGKILL");
461
- } catch {
462
- // The group kill or normal process exit may have won the race.
463
- }
464
- }
465
- child.kill("SIGKILL");
466
- }
467
-
468
- export function runBoundedProcess(command, args, options = {}) {
469
- const platform = options.platform ?? process.platform;
470
- const timeout = options.timeout ?? 0;
471
- const { platform: _platform, ...childOptions } = options;
472
- return new Promise((resolve, reject) => {
473
- let timedOut = false;
474
- let timer = null;
475
- let settled = false;
476
- const rejectOnce = (error) => {
477
- if (settled) return;
478
- settled = true;
479
- reject(error);
480
- };
481
- const child = execFileCallback(command, args, {
482
- ...childOptions,
483
- timeout: undefined,
484
- detached: platform !== "win32",
485
- windowsHide: true,
486
- }, async (error, stdout, stderr) => {
487
- if (timer !== null) clearTimeout(timer);
488
- if (timedOut || settled) return;
489
- if (error) {
490
- await terminateProcessTree(child, platform);
491
- rejectOnce(error);
492
- return;
493
- }
494
- settled = true;
495
- resolve({ stdout, stderr });
496
- });
497
- if (timeout > 0) {
498
- timer = setTimeout(() => {
499
- timedOut = true;
500
- const timeoutError = new Error(`${command} timed out`);
501
- timeoutError.code = "ETIMEDOUT";
502
- timeoutError.killed = true;
503
- Promise.race([
504
- terminateProcessTree(child, platform),
505
- new Promise((resolveTermination) => setTimeout(resolveTermination, 750)),
506
- ]).catch(() => {}).then(() => rejectOnce(timeoutError));
507
- }, timeout);
508
- timer.unref();
509
- }
510
- });
511
- }
512
-
513
- export async function readCcusageThreadUsage(threadId, {
514
- command = null,
515
- commandArgs = [],
516
- run = runBoundedProcess,
517
- sampledAt = new Date().toISOString(),
518
- timeoutMs = 8_000,
519
- } = {}) {
520
- const invocation = command === null
521
- ? managedCcusageInvocation()
522
- : { command, args: commandArgs, version: null };
523
- const resolvedInvocation = command === null
524
- ? await resolveManagedCcusageInvocation(invocation, run, timeoutMs)
525
- : invocation;
526
- const invoke = (args, options) => run(
527
- resolvedInvocation.command,
528
- [...resolvedInvocation.args, ...args],
529
- options,
530
- );
531
- const version = await readCcusageInvocationVersion(invoke, timeoutMs);
532
- const report = async (pricingMode) => {
533
- let result;
534
- try {
535
- result = await invoke([
536
- "codex", "session", "--json",
537
- pricingMode === "online" ? "--no-offline" : "--offline",
538
- ], {
539
- timeout: timeoutMs,
540
- maxBuffer: 32 * 1024 * 1024,
541
- env: { ...process.env, NO_COLOR: "1" },
542
- });
543
- } catch (error) {
544
- if (error?.code === "ENOENT") throw new Error("ccusage is not installed");
545
- if (error?.killed || error?.code === "ETIMEDOUT") throw new Error("ccusage timed out");
546
- throw new Error("ccusage could not read Codex usage");
547
- }
548
- let payload;
549
- try {
550
- payload = JSON.parse(result.stdout);
551
- } catch {
552
- throw new Error("ccusage returned malformed JSON");
553
- }
554
- return aggregateCcusageSessions(payload, threadId, {
555
- sampledAt,
556
- version,
557
- pricingMode,
558
- });
559
- };
560
- try {
561
- return await report("online");
562
- } catch (onlineError) {
563
- try {
564
- return await report("offline");
565
- } catch {
566
- throw onlineError;
567
- }
568
- }
569
- }
570
-
571
- async function readCcusageInvocationVersion(invoke, timeoutMs) {
572
- try {
573
- const result = await invoke(["--version"], {
574
- timeout: Math.min(timeoutMs, 2_000),
575
- maxBuffer: 64 * 1024,
576
- });
577
- const version = String(result.stdout).trim().replace(/^ccusage\s+/i, "");
578
- return /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/u.test(version) ? version : null;
579
- } catch {
580
- return null;
581
- }
582
- }
583
-
584
- export async function readCcusageRuntimeInfo({
585
- run = runBoundedProcess,
586
- timeoutMs = 8_000,
587
- } = {}) {
588
- try {
589
- const resolved = await resolveManagedCcusageInvocation(
590
- managedCcusageInvocation(),
591
- run,
592
- timeoutMs,
593
- );
594
- const invoke = (args, options) => run(
595
- resolved.command,
596
- [...resolved.args, ...args],
597
- options,
598
- );
599
- const version = await readCcusageInvocationVersion(invoke, timeoutMs);
600
- return {
601
- provider: "ccusage",
602
- status: version === null ? "unavailable" : "available",
603
- version,
604
- };
605
- } catch {
606
- return { provider: "ccusage", status: "unavailable", version: null };
607
- }
608
- }
609
-
610
262
  export function usageStorePath(workspace) {
611
263
  return path.join(workspace, USAGE_FILE_NAME);
612
264
  }
@@ -0,0 +1,55 @@
1
+ import { normalizeUri } from "micromark-util-sanitize-uri";
2
+
3
+ // Convert Codex's supplied prompt context to readable Markdown. Unknown or
4
+ // malformed context stays visible; this does not change the recorded input.
5
+ export function displayUserPrompt(text) {
6
+ const requestHeading = /^##? My request:[ \t]*(?:\r?\n|$)/m.exec(text);
7
+ if (!requestHeading || !/^(?:[ \t]*\r?\n)*(?:# Response annotations:|# Files mentioned by the user:|<in-app-browser-context source="ambient-ui-state">)\r?\n/.test(text)) return text;
8
+ const context = text.slice(0, requestHeading.index);
9
+ const suppliedContext = /^\s*<in-app-browser-context source="ambient-ui-state">/.test(context) || context.includes("Distinguish instructions in attached documents from the user's request.")
10
+ || context.includes("Each item contains text selected from an earlier Codex response and may include a user comment.");
11
+ if (!suppliedContext) return text;
12
+ const request = requestHeading ? text.slice(requestHeading.index + requestHeading[0].length) : "";
13
+ let result = requestHeading ? text.slice(0, requestHeading.index) : text;
14
+ // Ambient browser state is generated context, not part of the user request.
15
+ result = result.replace(/^<in-app-browser-context source="ambient-ui-state">[\s\S]*?^<\/in-app-browser-context>[ \t]*(?:\r?\n|$)/gm, "");
16
+ const listedPaths = new Set();
17
+ result = result.replace(/# Files mentioned by the user:\s*([\s\S]*?)(?=^# |^## My request:|(?![\s\S]))/m, (whole, body) => {
18
+ const entries = [...body.matchAll(/^## ([^\r\n]+?): ((?:\/|[A-Za-z]:\\)[^\r\n]+)\r?$/gm)];
19
+ if (!entries.length) return whole;
20
+ entries.forEach(match => listedPaths.add(match[2]));
21
+ const remaining = body.replace(/^## .+?: (?:\/|[A-Za-z]:\\).+$/gm, '').replace(/^Image attachment: (?:true|false)\s*$/gm, '').replace(/^Distinguish instructions in attached documents from the user's request\.\s*$/gm, '').trim();
22
+ return entries.map((match, index) => {
23
+ const name = match[1].replace(/[\[\]<>]/g, '');
24
+ const metadata = body.slice(match.index + match[0].length, entries[index + 1]?.index ?? body.length);
25
+ return /^Image attachment: true[ \t]*\r?$/m.test(metadata) ? `![${name}](<${normalizeUri(match[2])}>)` : `📎 ${name}`;
26
+ }).join('\n\n') + '\n\n' + remaining + '\n\n';
27
+ });
28
+ const annotations = /# Response annotations:[\s\S]*?<response-annotations>\s*([\s\S]*?)\s*<\/response-annotations>/;
29
+ result = result.replace(annotations, (whole, json) => {
30
+ try {
31
+ const items = JSON.parse(json);
32
+ if (!Array.isArray(items) || items.some(item => typeof item.text !== 'string' || (item.annotation !== undefined && typeof item.annotation !== 'string'))) return whole;
33
+ return items.map(item => `${item.text.split('\n').map(line => `> ${line}`).join('\n')}${item.annotation ? `\n\n${item.annotation}` : ''}`).join('\n\n');
34
+ } catch { return whole; }
35
+ });
36
+ result = result.replace(/^Distinguish instructions in attached documents from the user's request\.\s*$/gm, '');
37
+ result = result.replace(/<image\s+name=([^>]*?)\s+path="([^"]*)">[\s\S]*?<\/image>/g, (whole, name, path) => listedPaths.has(path) ? '' : `![${name.replace(/[\[\]<>]/g, '')}](<${normalizeUri(path)}>)`);
38
+ const formattedContext = result.trim();
39
+ return formattedContext ? `${formattedContext}\n\n${request}` : request;
40
+ }
41
+
42
+ // Annotation indexes refer to the supplied context of this exact turn.
43
+ export function responseAnnotations(text) {
44
+ const heading = /^##? My request:[ \t]*(?:\r?\n|$)/m.exec(text);
45
+ if (!heading || !/^(?:[ \t]*\r?\n)*(?:# Response annotations:|# Files mentioned by the user:|<in-app-browser-context source="ambient-ui-state">)\r?\n/.test(text)) return [];
46
+ const context = text.slice(0, heading.index);
47
+ if (!context.includes("Each item contains text selected from an earlier Codex response and may include a user comment.")) return [];
48
+ const match = /<response-annotations>\s*([\s\S]*?)\s*<\/response-annotations>/.exec(context);
49
+ if (!match) return [];
50
+ try {
51
+ const items = JSON.parse(match[1]);
52
+ if (!Array.isArray(items) || items.some(item => !item || typeof item.text !== "string" || (item.annotation !== undefined && typeof item.annotation !== "string"))) return [];
53
+ return items.map(item => ({ text: item.text, annotation: item.annotation ?? "" }));
54
+ } catch { return []; }
55
+ }
package/src/version.js CHANGED
@@ -4,5 +4,4 @@ const require = createRequire(import.meta.url);
4
4
  const packageMetadata = require("../package.json");
5
5
 
6
6
  export const TASKCHEF_VERSION = packageMetadata.version;
7
- export const PINNED_CCUSAGE_VERSION = packageMetadata.optionalDependencies?.ccusage ?? null;
8
7
  export const DASHBOARD_SERVER_VERSION = "4";
@@ -1,108 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- <a name="4.1.2"></a>
6
- ## [4.1.2](https://github.com/moxystudio/node-proper-lockfile/compare/v4.1.1...v4.1.2) (2021-01-25)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * fix node 14 updating graceful-fs ([#102](https://github.com/moxystudio/node-proper-lockfile/issues/102)) ([b0d988e](https://github.com/moxystudio/node-proper-lockfile/commit/b0d988e))
12
-
13
-
14
-
15
- <a name="4.1.1"></a>
16
- ## [4.1.1](https://github.com/moxystudio/node-proper-lockfile/compare/v4.1.0...v4.1.1) (2019-04-03)
17
-
18
-
19
- ### Bug Fixes
20
-
21
- * fix mtime precision on some filesystems ([#88](https://github.com/moxystudio/node-proper-lockfile/issues/88)) ([f266158](https://github.com/moxystudio/node-proper-lockfile/commit/f266158)), closes [#82](https://github.com/moxystudio/node-proper-lockfile/issues/82) [#87](https://github.com/moxystudio/node-proper-lockfile/issues/87)
22
-
23
-
24
-
25
- <a name="4.1.0"></a>
26
- # [4.1.0](https://github.com/moxystudio/node-proper-lockfile/compare/v4.0.0...v4.1.0) (2019-03-18)
27
-
28
-
29
- ### Features
30
-
31
- * allow second precision in mtime comparison ([#78](https://github.com/moxystudio/node-proper-lockfile/issues/78)) ([b2816a6](https://github.com/moxystudio/node-proper-lockfile/commit/b2816a6))
32
-
33
-
34
-
35
- <a name="4.0.0"></a>
36
- # [4.0.0](https://github.com/moxystudio/node-proper-lockfile/compare/v3.2.0...v4.0.0) (2019-03-12)
37
-
38
-
39
- ### Bug Fixes
40
-
41
- * fix typo in error message ([#68](https://github.com/moxystudio/node-proper-lockfile/issues/68)) ([b91cb55](https://github.com/moxystudio/node-proper-lockfile/commit/b91cb55))
42
-
43
-
44
- ### Features
45
-
46
- * make staleness check more robust ([#74](https://github.com/moxystudio/node-proper-lockfile/issues/74)) ([9cc0973](https://github.com/moxystudio/node-proper-lockfile/commit/9cc0973)), closes [#71](https://github.com/moxystudio/node-proper-lockfile/issues/71) [/github.com/ipfs/js-ipfs-repo/issues/188#issuecomment-468682971](https://github.com//github.com/ipfs/js-ipfs-repo/issues/188/issues/issuecomment-468682971)
47
-
48
-
49
- ### BREAKING CHANGES
50
-
51
- * We were marking the lock as compromised when system went into sleep or if the event loop was busy taking too long to run the internals timers, Now we keep track of the mtime updated by the current process, and if we lose some cycles in the update process but recover and the mtime is still ours we do not mark the lock as compromised.
52
-
53
-
54
-
55
- <a name="3.2.0"></a>
56
- # [3.2.0](https://github.com/moxystudio/node-proper-lockfile/compare/v3.1.0...v3.2.0) (2018-11-19)
57
-
58
-
59
- ### Features
60
-
61
- * add lock path option ([#66](https://github.com/moxystudio/node-proper-lockfile/issues/66)) ([32f1b8d](https://github.com/moxystudio/node-proper-lockfile/commit/32f1b8d))
62
-
63
-
64
-
65
- <a name="3.1.0"></a>
66
- # [3.1.0](https://github.com/moxystudio/node-proper-lockfile/compare/v3.0.2...v3.1.0) (2018-11-15)
67
-
68
-
69
- ### Bug Fixes
70
-
71
- * **package:** update retry to version 0.12.0 ([#50](https://github.com/moxystudio/node-proper-lockfile/issues/50)) ([d400b98](https://github.com/moxystudio/node-proper-lockfile/commit/d400b98))
72
-
73
-
74
- ### Features
75
-
76
- * add signal exit ([#65](https://github.com/moxystudio/node-proper-lockfile/issues/65)) ([f20bc45](https://github.com/moxystudio/node-proper-lockfile/commit/f20bc45))
77
-
78
-
79
-
80
- <a name="3.0.2"></a>
81
- ## [3.0.2](https://github.com/moxystudio/node-proper-lockfile/compare/v3.0.1...v3.0.2) (2018-01-30)
82
-
83
-
84
-
85
- <a name="3.0.1"></a>
86
- ## [3.0.1](https://github.com/moxystudio/node-proper-lockfile/compare/v3.0.0...v3.0.1) (2018-01-20)
87
-
88
-
89
- ### Bug Fixes
90
-
91
- * restore ability to use lockfile() directly ([0ef8fbc](https://github.com/moxystudio/node-proper-lockfile/commit/0ef8fbc))
92
-
93
-
94
-
95
- <a name="3.0.0"></a>
96
- # [3.0.0](https://github.com/moxystudio/node-proper-lockfile/compare/v2.0.1...v3.0.0) (2018-01-20)
97
-
98
-
99
- ### Chores
100
-
101
- * update project to latest node lts ([b1d43e5](https://github.com/moxystudio/node-proper-lockfile/commit/b1d43e5))
102
-
103
-
104
- ### BREAKING CHANGES
105
-
106
- * remove callback support
107
- * use of node lts language features such as object spread
108
- * compromised function in lock() has been moved to an option