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
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @typedef {import('unist').Node} Node
3
+ * @typedef {import('unist').Point} Point
4
+ * @typedef {import('unist').Position} Position
5
+ */
6
+
7
+ /**
8
+ * @typedef NodeLike
9
+ * @property {string} type
10
+ * @property {PositionLike | null | undefined} [position]
11
+ *
12
+ * @typedef PointLike
13
+ * @property {number | null | undefined} [line]
14
+ * @property {number | null | undefined} [column]
15
+ * @property {number | null | undefined} [offset]
16
+ *
17
+ * @typedef PositionLike
18
+ * @property {PointLike | null | undefined} [start]
19
+ * @property {PointLike | null | undefined} [end]
20
+ */
21
+
22
+ /**
23
+ * Serialize the positional info of a point, position (start and end points),
24
+ * or node.
25
+ *
26
+ * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]
27
+ * Node, position, or point.
28
+ * @returns {string}
29
+ * Pretty printed positional info of a node (`string`).
30
+ *
31
+ * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)
32
+ * or a point `l:c` (when given `point`), where `l` stands for line, `c` for
33
+ * column, `s` for `start`, and `e` for end.
34
+ * An empty string (`''`) is returned if the given value is neither `node`,
35
+ * `position`, nor `point`.
36
+ */
37
+ export function stringifyPosition(value) {
38
+ // Nothing.
39
+ if (!value || typeof value !== 'object') {
40
+ return ''
41
+ }
42
+
43
+ // Node.
44
+ if ('position' in value || 'type' in value) {
45
+ return position(value.position)
46
+ }
47
+
48
+ // Position.
49
+ if ('start' in value || 'end' in value) {
50
+ return position(value)
51
+ }
52
+
53
+ // Point.
54
+ if ('line' in value || 'column' in value) {
55
+ return point(value)
56
+ }
57
+
58
+ // ?
59
+ return ''
60
+ }
61
+
62
+ /**
63
+ * @param {Point | PointLike | null | undefined} point
64
+ * @returns {string}
65
+ */
66
+ function point(point) {
67
+ return index(point && point.line) + ':' + index(point && point.column)
68
+ }
69
+
70
+ /**
71
+ * @param {Position | PositionLike | null | undefined} pos
72
+ * @returns {string}
73
+ */
74
+ function position(pos) {
75
+ return point(pos && pos.start) + '-' + point(pos && pos.end)
76
+ }
77
+
78
+ /**
79
+ * @param {number | null | undefined} value
80
+ * @returns {number}
81
+ */
82
+ function index(value) {
83
+ return value && typeof value === 'number' ? value : 1
84
+ }
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "unist-util-stringify-position",
3
+ "version": "4.0.0",
4
+ "description": "unist utility to serialize a node, position, or point as a human readable location",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "unist",
8
+ "unist-util",
9
+ "util",
10
+ "utility",
11
+ "position",
12
+ "location",
13
+ "point",
14
+ "node",
15
+ "stringify",
16
+ "tostring"
17
+ ],
18
+ "repository": "syntax-tree/unist-util-stringify-position",
19
+ "bugs": "https://github.com/syntax-tree/unist-util-stringify-position/issues",
20
+ "funding": {
21
+ "type": "opencollective",
22
+ "url": "https://opencollective.com/unified"
23
+ },
24
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
25
+ "contributors": [
26
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
27
+ ],
28
+ "sideEffects": false,
29
+ "type": "module",
30
+ "exports": "./index.js",
31
+ "files": [
32
+ "lib/",
33
+ "index.d.ts",
34
+ "index.js"
35
+ ],
36
+ "dependencies": {
37
+ "@types/unist": "^3.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@types/mdast": "^4.0.0",
41
+ "@types/node": "^20.0.0",
42
+ "c8": "^8.0.0",
43
+ "prettier": "^2.0.0",
44
+ "remark-cli": "^11.0.0",
45
+ "remark-preset-wooorm": "^9.0.0",
46
+ "type-coverage": "^2.0.0",
47
+ "typescript": "^5.0.0",
48
+ "xo": "^0.54.0"
49
+ },
50
+ "scripts": {
51
+ "prepack": "npm run build && npm run format",
52
+ "build": "tsc --build --clean && tsc --build && type-coverage",
53
+ "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
54
+ "test-api": "node --conditions development test.js",
55
+ "test-coverage": "c8 --100 --reporter lcov npm run test-api",
56
+ "test": "npm run build && npm run format && npm run test-coverage"
57
+ },
58
+ "prettier": {
59
+ "bracketSpacing": false,
60
+ "semi": false,
61
+ "singleQuote": true,
62
+ "tabWidth": 2,
63
+ "trailingComma": "none",
64
+ "useTabs": false
65
+ },
66
+ "remarkConfig": {
67
+ "plugins": [
68
+ "remark-preset-wooorm"
69
+ ]
70
+ },
71
+ "typeCoverage": {
72
+ "atLeast": 100,
73
+ "detail": true,
74
+ "ignoreCatch": true,
75
+ "strict": true
76
+ },
77
+ "xo": {
78
+ "prettier": true
79
+ }
80
+ }
@@ -0,0 +1,206 @@
1
+ # unist-util-stringify-position
2
+
3
+ [![Build][build-badge]][build]
4
+ [![Coverage][coverage-badge]][coverage]
5
+ [![Downloads][downloads-badge]][downloads]
6
+ [![Size][size-badge]][size]
7
+ [![Sponsors][sponsors-badge]][collective]
8
+ [![Backers][backers-badge]][collective]
9
+ [![Chat][chat-badge]][chat]
10
+
11
+ [unist][] utility to pretty print the positional info of a node.
12
+
13
+ ## Contents
14
+
15
+ * [What is this?](#what-is-this)
16
+ * [When should I use this?](#when-should-i-use-this)
17
+ * [Install](#install)
18
+ * [Use](#use)
19
+ * [API](#api)
20
+ * [`stringifyPosition(node|position|point)`](#stringifypositionnodepositionpoint)
21
+ * [Types](#types)
22
+ * [Compatibility](#compatibility)
23
+ * [Security](#security)
24
+ * [Related](#related)
25
+ * [Contribute](#contribute)
26
+ * [License](#license)
27
+
28
+ ## What is this?
29
+
30
+ This package is a utility that takes any [unist][] (whether mdast, hast, etc)
31
+ node, position, or point, and serializes its positional info.
32
+
33
+ ## When should I use this?
34
+
35
+ This utility is useful to display where something occurred in the original
36
+ document, in one standard way, for humans.
37
+ For example, when throwing errors or warning messages about something.
38
+
39
+ ## Install
40
+
41
+ This package is [ESM only][esm].
42
+ In Node.js (version 16+), install with [npm][]:
43
+
44
+ ```sh
45
+ npm install unist-util-stringify-position
46
+ ```
47
+
48
+ In Deno with [`esm.sh`][esmsh]:
49
+
50
+ ```js
51
+ import {stringifyPosition} from 'https://esm.sh/unist-util-stringify-position@4'
52
+ ```
53
+
54
+ In browsers with [`esm.sh`][esmsh]:
55
+
56
+ ```html
57
+ <script type="module">
58
+ import {stringifyPosition} from 'https://esm.sh/unist-util-stringify-position@4?bundle'
59
+ </script>
60
+ ```
61
+
62
+ ## Use
63
+
64
+ ```js
65
+ import {stringifyPosition} from 'unist-util-stringify-position'
66
+
67
+ stringifyPosition({line: 2, column: 3}) // => '2:3' (point)
68
+ stringifyPosition({start: {line: 2}, end: {line: 3}}) // => '2:1-3:1' (position)
69
+ stringifyPosition({
70
+ type: 'text',
71
+ value: '!',
72
+ position: {
73
+ start: {line: 5, column: 11},
74
+ end: {line: 5, column: 12}
75
+ }
76
+ }) // => '5:11-5:12' (node)
77
+ ```
78
+
79
+ ## API
80
+
81
+ This package exports the identifier [`stringifyPosition`][stringifyposition].
82
+ There is no default export.
83
+
84
+ ### `stringifyPosition(node|position|point)`
85
+
86
+ Serialize the positional info of a point, position (start and end points), or
87
+ node.
88
+
89
+ ###### Parameters
90
+
91
+ * `node` ([`Node`][node])
92
+ — node whose `position` fields to serialize
93
+ * `position` ([`Position`][position])
94
+ — position whose `start` and `end` points to serialize
95
+ * `point` ([`Point`][point])
96
+ — point whose `line` and `column` fields to serialize
97
+
98
+ ###### Returns
99
+
100
+ Pretty printed positional info of a node (`string`).
101
+
102
+ In the format of a range `ls:cs-le:ce` (when given `node` or `position`) or a
103
+ point `l:c` (when given `point`), where `l` stands for line, `c` for column, `s`
104
+ for `start`, and `e` for end.
105
+ An empty string (`''`) is returned if the given value is neither `node`,
106
+ `position`, nor `point`.
107
+
108
+ ## Types
109
+
110
+ This package is fully typed with [TypeScript][].
111
+ It exports no additional types.
112
+
113
+ ## Compatibility
114
+
115
+ Projects maintained by the unified collective are compatible with maintained
116
+ versions of Node.js.
117
+
118
+ When we cut a new major release, we drop support for unmaintained versions of
119
+ Node.
120
+ This means we try to keep the current release line,
121
+ `unist-util-stringify-position@^4`, compatible with Node.js 16.
122
+
123
+ ## Security
124
+
125
+ This project is safe.
126
+
127
+ ## Related
128
+
129
+ * [`unist-util-generated`](https://github.com/syntax-tree/unist-util-generated)
130
+ — check if a node is generated
131
+ * [`unist-util-position`](https://github.com/syntax-tree/unist-util-position)
132
+ — get positional info of nodes
133
+ * [`unist-util-remove-position`](https://github.com/syntax-tree/unist-util-remove-position)
134
+ — remove positional info from trees
135
+ * [`unist-util-source`](https://github.com/syntax-tree/unist-util-source)
136
+ — get the source of a value (node or position) in a file
137
+
138
+ ## Contribute
139
+
140
+ See [`contributing.md` in `syntax-tree/.github`][contributing] for ways to get
141
+ started.
142
+ See [`support.md`][support] for ways to get help.
143
+
144
+ This project has a [code of conduct][coc].
145
+ By interacting with this repository, organization, or community you agree to
146
+ abide by its terms.
147
+
148
+ ## License
149
+
150
+ [MIT][license] © [Titus Wormer][author]
151
+
152
+ <!-- Definition -->
153
+
154
+ [build-badge]: https://github.com/syntax-tree/unist-util-stringify-position/workflows/main/badge.svg
155
+
156
+ [build]: https://github.com/syntax-tree/unist-util-stringify-position/actions
157
+
158
+ [coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-stringify-position.svg
159
+
160
+ [coverage]: https://codecov.io/github/syntax-tree/unist-util-stringify-position
161
+
162
+ [downloads-badge]: https://img.shields.io/npm/dm/unist-util-stringify-position.svg
163
+
164
+ [downloads]: https://www.npmjs.com/package/unist-util-stringify-position
165
+
166
+ [size-badge]: https://img.shields.io/badge/dynamic/json?label=minzipped%20size&query=$.size.compressedSize&url=https://deno.bundlejs.com/?q=unist-util-stringify-position
167
+
168
+ [size]: https://bundlejs.com/?q=unist-util-stringify-position
169
+
170
+ [sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
171
+
172
+ [backers-badge]: https://opencollective.com/unified/backers/badge.svg
173
+
174
+ [collective]: https://opencollective.com/unified
175
+
176
+ [chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
177
+
178
+ [chat]: https://github.com/syntax-tree/unist/discussions
179
+
180
+ [npm]: https://docs.npmjs.com/cli/install
181
+
182
+ [license]: license
183
+
184
+ [author]: https://wooorm.com
185
+
186
+ [esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
187
+
188
+ [esmsh]: https://esm.sh
189
+
190
+ [typescript]: https://www.typescriptlang.org
191
+
192
+ [contributing]: https://github.com/syntax-tree/.github/blob/main/contributing.md
193
+
194
+ [support]: https://github.com/syntax-tree/.github/blob/main/support.md
195
+
196
+ [coc]: https://github.com/syntax-tree/.github/blob/main/code-of-conduct.md
197
+
198
+ [unist]: https://github.com/syntax-tree/unist
199
+
200
+ [node]: https://github.com/syntax-tree/unist#node
201
+
202
+ [position]: https://github.com/syntax-tree/unist#position
203
+
204
+ [point]: https://github.com/syntax-tree/unist#point
205
+
206
+ [stringifyposition]: #stringifypositionnodepositionpoint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "8.6.1",
3
+ "version": "8.7.0",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Favo Yang",
@@ -29,8 +29,16 @@
29
29
  "docs/dashboard-lifecycle.md",
30
30
  "docs/dashboard-ui.md",
31
31
  "docs/mcp-app.md",
32
+ "docs/taskchef-next-storage.md",
33
+ "docs/diagrams/taskchef-next-storage.drawio",
34
+ "docs/diagrams/taskchef-next-storage.drawio.png",
35
+ "docs/diagrams/taskchef-next-reply-lookup.drawio",
36
+ "docs/diagrams/taskchef-next-reply-lookup.drawio.png",
37
+ "docs/taskchef-next-status-research.md",
32
38
  "docs/firstmate-taskchef-comparison.md",
33
39
  "docs/images/dashboard-identity.jpg",
40
+ "docs/images/taskchef-unified-status-popup.jpg",
41
+ "docs/images/taskchef-pr-icon-comparison.jpg",
34
42
  "docs/images/ccusage-token-consumption.png",
35
43
  "docs/images/notification-event-snapshots.jpg",
36
44
  "docs/images/result-history-dashboard.jpg",
@@ -53,7 +61,9 @@
53
61
  "skills/taskchef-dashboard",
54
62
  "skills/taskchef-delegate",
55
63
  "skills/taskchef-executor",
56
- "skills/taskchef-copilot"
64
+ "skills/taskchef-copilot",
65
+ "docs/taskchef-next-github.md",
66
+ "scripts/prepare-github-keyring.js"
57
67
  ],
58
68
  "engines": {
59
69
  "node": ">=18"
@@ -81,30 +91,39 @@
81
91
  "benchmark:e2e": "node scripts/e2e-benchmark.js",
82
92
  "build:dashboard": "vite build --config vite.config.ts",
83
93
  "build:mcp-app": "vite build --config vite.mcp-app.config.ts",
94
+ "update:mcp-app-preview": "npm run build:mcp-app && node scripts/update-mcp-app-preview.js",
84
95
  "check:dashboard": "tsc --noEmit -p tsconfig.dashboard.json",
85
96
  "check:mcp-app": "tsc --noEmit -p tsconfig.mcp-app.json",
86
97
  "preview:dashboard": "node scripts/preview-dashboard.js",
87
98
  "test": "npm run test:node && npm run test:dashboard",
88
99
  "test:node": "node --test tests/*.test.js",
89
- "test:dashboard": "vitest run --config vitest.config.ts"
100
+ "test:dashboard": "vitest run --config vitest.config.ts",
101
+ "prepack": "node scripts/prepare-github-keyring.js"
90
102
  },
91
103
  "dependencies": {
92
104
  "@mantine/core": "9.5.2",
93
105
  "@mantine/hooks": "9.5.2",
94
106
  "@mantine/notifications": "9.5.2",
95
107
  "@modelcontextprotocol/sdk": "^1.30.0",
108
+ "@napi-rs/keyring": "2.1.0",
96
109
  "@tabler/icons-react": "3.35.0",
110
+ "mdast-util-from-markdown": "2.0.2",
111
+ "micromark-util-sanitize-uri": "2.0.1",
97
112
  "proper-lockfile": "^4.1.2",
98
113
  "react": "19.2.0",
99
114
  "react-dom": "19.2.0",
115
+ "react-markdown": "10.1.0",
116
+ "remark-gfm": "4.0.1",
117
+ "smol-toml": "^1.9.0",
100
118
  "zod": "^4.4.3"
101
119
  },
102
120
  "bundleDependencies": [
103
121
  "@modelcontextprotocol/sdk",
104
122
  "proper-lockfile",
105
- "zod"
106
- ],
107
- "optionalDependencies": {
108
- "ccusage": "20.0.24"
109
- }
123
+ "smol-toml",
124
+ "zod",
125
+ "mdast-util-from-markdown",
126
+ "@napi-rs/keyring",
127
+ "micromark-util-sanitize-uri"
128
+ ]
110
129
  }
@@ -0,0 +1,29 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { cp, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ // Codex extracts bundled plugins without installing platform-specific dependencies.
9
+ // The release package must include native credential-store bindings for each desktop target.
10
+ const root = fileURLToPath(new URL("../", import.meta.url));
11
+ const targets = ["darwin-arm64", "darwin-x64", "win32-arm64-msvc", "win32-x64-msvc", "linux-arm64-gnu", "linux-arm64-musl", "linux-x64-gnu", "linux-x64-musl"];
12
+ const version = JSON.parse(await readFile(join(root, "package.json"), "utf8")).dependencies["@napi-rs/keyring"];
13
+ if (!/^\d+\.\d+\.\d+$/.test(version)) throw new Error("Keyring must have an exact release version.");
14
+ const npmCli = process.env.npm_execpath;
15
+ if (!npmCli) throw new Error("Run this packaging step through npm run prepack.");
16
+ const temporary = await mkdtemp(join(tmpdir(), "taskchef-keyring-package-"));
17
+ try {
18
+ await writeFile(join(temporary, "package.json"), JSON.stringify({ private: true }));
19
+ await promisify(execFile)(process.execPath, [npmCli,
20
+ "install", "--prefix", temporary, "--cache", join(temporary, "cache"),
21
+ "--registry", "https://registry.npmjs.org", "--force", "--dry-run=false", "--global=false", "--package-lock=false", "--ignore-scripts", "--no-save", "--no-audit", "--no-fund",
22
+ ...targets.map((target) => `@napi-rs/keyring-${target}@${version}`),
23
+ ], { timeout: 120_000, maxBuffer: 1024 * 1024 });
24
+ for (const target of targets) {
25
+ const name = `@napi-rs/keyring-${target}`;
26
+ await cp(join(temporary, "node_modules", name), join(root, "node_modules", name), { recursive: true });
27
+ }
28
+ console.error("Bundled GitHub credential-store bindings for macOS, Windows, and Linux.");
29
+ } finally { await rm(temporary, { recursive: true, force: true }); }
@@ -81,6 +81,11 @@ reloaded or installed.
81
81
 
82
82
  5. Before creating each executor, call `record_task` exactly once with `id`,
83
83
  `project`, `title`, the exact marked `instruction`, and `threadId: null`.
84
+ Pass the selected configured project's canonical `path` as `project`, not
85
+ its name, label, or native project ID. Require a successful tool result
86
+ whose returned `task.id` equals the prepared task ID before native creation.
87
+ If recording fails or cannot be confirmed, report the failure and stop;
88
+ do not create an executor with an unrecorded task marker.
84
89
  6. Create one real Codex task using the exact configured project, an appropriate
85
90
  native environment, the marked instruction, a short title, and the resolved
86
91
  orchestrator model and effort overrides when present.
package/src/codex-app.js CHANGED
@@ -153,9 +153,28 @@ export async function openThreadInCodex(threadId, options = {}) {
153
153
  if (!isCodexThreadDeepLinkId(threadId)) {
154
154
  throw new Error("Codex thread ID is not supported by the desktop deep link");
155
155
  }
156
+ const url = `codex://threads/${encodeURIComponent(threadId)}`;
157
+ await openDesktopLink(url, options);
158
+ return { status: "requested", mechanism: "codex-deep-link", threadId, url };
159
+ }
160
+
161
+ export async function openPluginSettingsInCodex(url, options = {}) {
162
+ if (typeof url !== "string") throw new Error("Cannot resolve the installed plugin settings page. Open TaskChef from Plugins.");
163
+ const link = new URL(url);
164
+ if (link.protocol !== "codex:" || link.hostname !== "plugins" || !/^\/[^/]+$/.test(link.pathname)
165
+ || link.username || link.password || link.port || link.hash
166
+ || [...link.searchParams.keys()].some((key) => key !== "marketplacePath")
167
+ || link.searchParams.getAll("marketplacePath").length !== 1
168
+ || !path.isAbsolute(link.searchParams.get("marketplacePath"))) {
169
+ throw new Error("Cannot resolve the installed plugin settings page. Open TaskChef from Plugins.");
170
+ }
171
+ await openDesktopLink(url, options);
172
+ return { status: "requested", mechanism: "codex-deep-link", url };
173
+ }
174
+
175
+ async function openDesktopLink(url, options) {
156
176
  const run = options.run ?? execFile;
157
177
  const platform = options.platform ?? process.platform;
158
- const url = `codex://threads/${encodeURIComponent(threadId)}`;
159
178
  if (platform === "darwin") {
160
179
  await runCodex(run, "/usr/bin/open", [url]);
161
180
  } else if (platform === "win32") {
@@ -163,7 +182,6 @@ export async function openThreadInCodex(threadId, options = {}) {
163
182
  } else {
164
183
  await runCodex(run, "xdg-open", [url]);
165
184
  }
166
- return { status: "requested", mechanism: "codex-deep-link", threadId, url };
167
185
  }
168
186
 
169
187
  export async function archiveThreadInCodex(threadId, options = {}) {
@@ -0,0 +1,79 @@
1
+ import { migrateCache } from "./next-cache.js";
2
+ import { readFile, mkdir } from "node:fs/promises";
3
+ import { dirname } from "node:path";
4
+ import { writeDurableAtomic } from "./state-store.js";
5
+
6
+ export const PRICING_URL = "https://developers.openai.com/api/docs/pricing.md";
7
+ const WEEK = 7 * 24 * 60 * 60_000;
8
+
9
+ // Read only the explicitly labelled standard table. Never use batch/fast rates
10
+ // as the default or invent a price for an unknown model.
11
+ export function parsePricing(markdown) {
12
+ const section = markdown.split("### Standard pricing data\n")[1]?.split(/\n### |\nBatch\n/)[0];
13
+ if (!section) throw new Error("Standard pricing table is missing.");
14
+ const models = {};
15
+ for (const line of section.split("\n")) {
16
+ const cells = line.split("|").slice(1, -1).map(value => value.trim());
17
+ if (cells.length !== 9 || !/^(gpt-|o[134])/.test(cells[0])) continue;
18
+ const name = cells[0].replace(/ \(<272K context length\)$/, "");
19
+ const values = cells.slice(1).map(value => value === "-" ? null : /^\$\d+(?:\.\d+)?$/.test(value) ? Number(value.slice(1)) : NaN);
20
+ if (values.some(value => value !== null && !Number.isFinite(value)) || values[0] === null || values[3] === null) continue;
21
+ models[name] = { short: values.slice(0, 4), long: values.slice(4) };
22
+ }
23
+ if (!models["gpt-6.1-sol"] || !models["gpt-6-luna"]) throw new Error("Pricing table is incomplete.");
24
+ return models;
25
+ }
26
+
27
+ export function estimateCallCost(usage, model, models) {
28
+ const rates = models[model]?.[usage.input_tokens > 272_000 ? "long" : "short"];
29
+ if (!rates) return null;
30
+ const cached = usage.cached_input_tokens;
31
+ const writes = usage.cache_write_input_tokens;
32
+ const tokens = [usage.input_tokens - cached - writes, cached, writes, usage.output_tokens];
33
+ if (tokens.some((count, i) => count < 0 || (count > 0 && rates[i] == null))) return null;
34
+ // Reasoning output is already included in output_tokens.
35
+ return tokens.reduce((sum, count, i) => sum + count * (rates[i] ?? 0) / 1_000_000, 0);
36
+ }
37
+
38
+ export class CodexPricing {
39
+ constructor({ cachePath, legacyCachePath, now = Date.now, fetchImpl = globalThis.fetch } = {}) {
40
+ this.cachePath = cachePath; this.legacyCachePath = legacyCachePath; this.now = now; this.fetch = fetchImpl;
41
+ this.pending = null; this.nextCheck = 0;
42
+ }
43
+ async get({ refresh = true } = {}) {
44
+ this.loading ??= this.load();
45
+ await this.loading;
46
+ if (refresh && !this.pending && this.now() >= this.nextCheck) {
47
+ this.nextCheck = this.now() + WEEK;
48
+ this.pending = this.update().catch(() => { this.nextCheck = this.now() + 60 * 60_000; }).finally(() => { this.pending = null; });
49
+ }
50
+ return this.table;
51
+ }
52
+ async load() {
53
+ this.table = JSON.parse(await readFile(new URL("./data/codex-pricing.json", import.meta.url), "utf8"));
54
+ if (!this.cachePath) return;
55
+ try {
56
+ await migrateCache(this.legacyCachePath, this.cachePath);
57
+ const cached = JSON.parse(await readFile(this.cachePath, "utf8"));
58
+ // Validate cached content with the same parser used for the live source.
59
+ const models = parsePricing(cached.markdown);
60
+ if (Number.isFinite(cached.checkedAt) && cached.checkedAt <= this.now()) {
61
+ this.table = { date: new Date(cached.checkedAt).toISOString().slice(0, 10), models };
62
+ this.nextCheck = cached.checkedAt + WEEK;
63
+ }
64
+ } catch { /* The bundled table remains available offline. */ }
65
+ }
66
+ async update() {
67
+ const response = await this.fetch(PRICING_URL, { signal: AbortSignal.timeout(5000), redirect: "error" });
68
+ if (!response.ok) throw new Error("Pricing update failed.");
69
+ const markdown = await response.text();
70
+ if (markdown.length > 1_000_000) throw new Error("Pricing response is too large.");
71
+ const models = parsePricing(markdown);
72
+ const checkedAt = this.now();
73
+ if (this.cachePath) {
74
+ await mkdir(dirname(this.cachePath), { recursive: true, mode: 0o700 });
75
+ await writeDurableAtomic(this.cachePath, JSON.stringify({ markdown, checkedAt }) + "\n");
76
+ }
77
+ this.table = { date: new Date(checkedAt).toISOString().slice(0, 10), models };
78
+ }
79
+ }