@evo-dev/evodev 0.0.1-alpha.18 → 0.0.1-alpha.19
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.
- package/dist/.claude-plugin/marketplace.json +2 -2
- package/dist/index.js +308 -182
- package/dist/plugins/evodev/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/evodev/.codex-plugin/plugin.json +1 -1
- package/dist/plugins/evodev/hooks/codex.ts +69 -2
- package/dist/plugins/evodev/hooks/plugin.ts +78 -3
- package/dist/plugins/evodev/package.json +1 -1
- package/dist/ui/app.js +9 -9
- package/dist/ui/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20,12 +20,14 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
20
20
|
}
|
|
21
21
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
22
22
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
if (mod && typeof mod === "object" || typeof mod === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(mod))
|
|
25
|
+
if (!__hasOwnProp.call(to, key))
|
|
26
|
+
__defProp(to, key, {
|
|
27
|
+
get: __accessProp.bind(mod, key),
|
|
28
|
+
enumerable: true
|
|
29
|
+
});
|
|
30
|
+
}
|
|
29
31
|
if (canCache)
|
|
30
32
|
cache.set(mod, to);
|
|
31
33
|
return to;
|
|
@@ -34,14 +36,14 @@ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports,
|
|
|
34
36
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
35
37
|
|
|
36
38
|
// node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.js
|
|
37
|
-
var require_emoji_regex = __commonJS((exports, module)
|
|
39
|
+
var require_emoji_regex = __commonJS(function(exports, module) {
|
|
38
40
|
module.exports = () => {
|
|
39
41
|
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
40
42
|
};
|
|
41
43
|
});
|
|
42
44
|
|
|
43
45
|
// node_modules/.bun/get-caller-file@2.0.5/node_modules/get-caller-file/index.js
|
|
44
|
-
var require_get_caller_file = __commonJS((exports, module)
|
|
46
|
+
var require_get_caller_file = __commonJS(function(exports, module) {
|
|
45
47
|
module.exports = function getCallerFile(position) {
|
|
46
48
|
if (position === undefined) {
|
|
47
49
|
position = 2;
|
|
@@ -62,7 +64,7 @@ var require_get_caller_file = __commonJS((exports, module) => {
|
|
|
62
64
|
});
|
|
63
65
|
|
|
64
66
|
// node_modules/.bun/cli-width@4.1.0/node_modules/cli-width/index.js
|
|
65
|
-
var require_cli_width = __commonJS((exports, module)
|
|
67
|
+
var require_cli_width = __commonJS(function(exports, module) {
|
|
66
68
|
module.exports = cliWidth;
|
|
67
69
|
function normalizeOpts(options) {
|
|
68
70
|
const defaultOpts = {
|
|
@@ -102,7 +104,7 @@ var require_cli_width = __commonJS((exports, module) => {
|
|
|
102
104
|
});
|
|
103
105
|
|
|
104
106
|
// node_modules/.bun/mute-stream@3.0.0/node_modules/mute-stream/lib/index.js
|
|
105
|
-
var require_lib = __commonJS((exports, module)
|
|
107
|
+
var require_lib = __commonJS(function(exports, module) {
|
|
106
108
|
var Stream = __require("stream");
|
|
107
109
|
|
|
108
110
|
class MuteStream extends Stream {
|
|
@@ -15224,6 +15226,8 @@ var PROCESS_LOCK_STALE_MS2 = 5 * 60 * 1000;
|
|
|
15224
15226
|
var PROCESS_LOCK_HEARTBEAT_MS = 30 * 1000;
|
|
15225
15227
|
var PROCESSING_TRIGGER_STALE_MS = PROCESS_LOCK_STALE_MS2;
|
|
15226
15228
|
var MAX_TRANSIENT_TRIGGER_ATTEMPTS = 3;
|
|
15229
|
+
var LOCAL_SEGMENT_SCAN_MULTIPLIER = 20;
|
|
15230
|
+
var MAX_LOCAL_SEGMENT_SCAN_LIMIT = 500;
|
|
15227
15231
|
async function processEvolutionTriggers(input) {
|
|
15228
15232
|
const now = normalizeTimestamp(input.now);
|
|
15229
15233
|
const limit = input.limit ?? 20;
|
|
@@ -15251,13 +15255,23 @@ async function processEvolutionTriggers(input) {
|
|
|
15251
15255
|
if (!dryRun) {
|
|
15252
15256
|
await reconcileRetryableEvolutionTriggers(input, now);
|
|
15253
15257
|
}
|
|
15254
|
-
const
|
|
15258
|
+
const listedPendingSegments = dryRun || input.distillSessionKnowledge !== undefined ? await listSegmentEvolutionTriggers({
|
|
15255
15259
|
homeDir: input.homeDir,
|
|
15256
15260
|
projectKey: input.projectKey,
|
|
15257
15261
|
runId: input.runId,
|
|
15258
15262
|
status: "pending"
|
|
15259
|
-
})
|
|
15260
|
-
const
|
|
15263
|
+
}) : [];
|
|
15264
|
+
const segmentSelection = dryRun ? {
|
|
15265
|
+
triggers: listedPendingSegments.slice(0, limit),
|
|
15266
|
+
semanticCandidates: Math.min(listedPendingSegments.length, limit)
|
|
15267
|
+
} : await selectPendingSegmentTriggers({
|
|
15268
|
+
homeDir: input.homeDir,
|
|
15269
|
+
triggers: listedPendingSegments,
|
|
15270
|
+
now,
|
|
15271
|
+
semanticLimit: limit
|
|
15272
|
+
});
|
|
15273
|
+
const pendingSegments = segmentSelection.triggers;
|
|
15274
|
+
const remainingLimit = Math.max(0, limit - segmentSelection.semanticCandidates);
|
|
15261
15275
|
const pending = remainingLimit === 0 ? [] : (await listEvolutionTriggers({
|
|
15262
15276
|
homeDir: input.homeDir,
|
|
15263
15277
|
projectKey: input.projectKey,
|
|
@@ -15509,6 +15523,39 @@ async function processEvolutionTriggers(input) {
|
|
|
15509
15523
|
await releaseEvolutionProcessLock(lock);
|
|
15510
15524
|
}
|
|
15511
15525
|
}
|
|
15526
|
+
async function selectPendingSegmentTriggers(input) {
|
|
15527
|
+
const scanLimit = Math.max(input.semanticLimit, Math.min(input.semanticLimit * LOCAL_SEGMENT_SCAN_MULTIPLIER, MAX_LOCAL_SEGMENT_SCAN_LIMIT));
|
|
15528
|
+
const selected = [];
|
|
15529
|
+
let semanticCandidates = 0;
|
|
15530
|
+
for (const trigger of input.triggers.slice(0, scanLimit)) {
|
|
15531
|
+
let requiresSemanticDistillation = true;
|
|
15532
|
+
try {
|
|
15533
|
+
const segment = await readSessionEvidenceSegment({
|
|
15534
|
+
homeDir: input.homeDir,
|
|
15535
|
+
projectKey: trigger.projectKey,
|
|
15536
|
+
sessionKey: trigger.sessionKey,
|
|
15537
|
+
segmentId: trigger.segmentId
|
|
15538
|
+
});
|
|
15539
|
+
const existingBatchId = segment.lifecycle.consumedByBatchIds.at(-1);
|
|
15540
|
+
if (segment.lifecycle.status === "distilled" && existingBatchId !== undefined) {
|
|
15541
|
+
requiresSemanticDistillation = false;
|
|
15542
|
+
} else {
|
|
15543
|
+
const analysis2 = analyzeSessionEvidenceSegment({
|
|
15544
|
+
homeDir: input.homeDir,
|
|
15545
|
+
segment,
|
|
15546
|
+
now: input.now
|
|
15547
|
+
});
|
|
15548
|
+
requiresSemanticDistillation = analysis2.evidenceWindow?.triggerPolicy.distillRecommended === true;
|
|
15549
|
+
}
|
|
15550
|
+
} catch {}
|
|
15551
|
+
if (requiresSemanticDistillation && semanticCandidates >= input.semanticLimit)
|
|
15552
|
+
break;
|
|
15553
|
+
selected.push(trigger);
|
|
15554
|
+
if (requiresSemanticDistillation)
|
|
15555
|
+
semanticCandidates += 1;
|
|
15556
|
+
}
|
|
15557
|
+
return { triggers: selected, semanticCandidates };
|
|
15558
|
+
}
|
|
15512
15559
|
async function reportProgress(input, result, phase) {
|
|
15513
15560
|
if (input.onProgress === undefined)
|
|
15514
15561
|
return;
|
|
@@ -25996,8 +26043,23 @@ async function installCodexPlugin(input, options) {
|
|
|
25996
26043
|
const selector = options.pluginSelector ?? "evodev@evodev";
|
|
25997
26044
|
const args = ["plugin", "add", selector];
|
|
25998
26045
|
const runner = options.commandRunner ?? new NodeCodexCommandRunner;
|
|
26046
|
+
const installedPlugin = input.force === true || options.pluginVersion === undefined ? null : await readInstalledCodexPlugin(runner, selector);
|
|
26047
|
+
let needsRepair = false;
|
|
26048
|
+
if (installedPlugin !== null && installedPlugin.version === options.pluginVersion && installedPlugin.enabled) {
|
|
26049
|
+
try {
|
|
26050
|
+
const hydration = await hydrateCodexWorkspaceCoreDependency({
|
|
26051
|
+
paths: options.paths,
|
|
26052
|
+
selector
|
|
26053
|
+
});
|
|
26054
|
+
if (hydration.warnings.length === 0 && hydration.errors.length === 0) {
|
|
26055
|
+
return createPluginInstallResult(input.targetPlugin, "already-installed", command, args, `Codex plugin ${selector} already matches EvoDev ${options.pluginVersion}; skipped marketplace refresh.`);
|
|
26056
|
+
}
|
|
26057
|
+
} catch {}
|
|
26058
|
+
needsRepair = true;
|
|
26059
|
+
}
|
|
26060
|
+
const effectiveInput = input.force === true || needsRepair || installedPlugin !== null && (installedPlugin.version !== options.pluginVersion || !installedPlugin.enabled) ? { ...input, force: true } : input;
|
|
25999
26061
|
const primaryResult = await installCodexPluginOnce({
|
|
26000
|
-
input,
|
|
26062
|
+
input: effectiveInput,
|
|
26001
26063
|
command,
|
|
26002
26064
|
selector,
|
|
26003
26065
|
args,
|
|
@@ -26010,7 +26072,7 @@ async function installCodexPlugin(input, options) {
|
|
|
26010
26072
|
return primaryResult;
|
|
26011
26073
|
}
|
|
26012
26074
|
const fallbackResult = await installCodexPluginOnce({
|
|
26013
|
-
input,
|
|
26075
|
+
input: effectiveInput,
|
|
26014
26076
|
command,
|
|
26015
26077
|
selector,
|
|
26016
26078
|
args,
|
|
@@ -26027,6 +26089,24 @@ async function installCodexPlugin(input, options) {
|
|
|
26027
26089
|
]
|
|
26028
26090
|
};
|
|
26029
26091
|
}
|
|
26092
|
+
async function readInstalledCodexPlugin(runner, selector) {
|
|
26093
|
+
try {
|
|
26094
|
+
const result = await runner.run("codex", ["plugin", "list", "--json"]);
|
|
26095
|
+
if (result.exitCode !== 0 || result.stdout === undefined)
|
|
26096
|
+
return null;
|
|
26097
|
+
const parsed = JSON.parse(result.stdout);
|
|
26098
|
+
const plugins2 = isRecord16(parsed) && Array.isArray(parsed.installed) ? parsed.installed : [];
|
|
26099
|
+
const plugin = plugins2.find((candidate) => isRecord16(candidate) && candidate.pluginId === selector);
|
|
26100
|
+
if (!isRecord16(plugin))
|
|
26101
|
+
return null;
|
|
26102
|
+
return {
|
|
26103
|
+
version: typeof plugin.version === "string" ? plugin.version : null,
|
|
26104
|
+
enabled: plugin.enabled !== false
|
|
26105
|
+
};
|
|
26106
|
+
} catch {
|
|
26107
|
+
return null;
|
|
26108
|
+
}
|
|
26109
|
+
}
|
|
26030
26110
|
async function installCodexPluginOnce(input) {
|
|
26031
26111
|
const { command, selector, args, runner } = input;
|
|
26032
26112
|
const warnings = [];
|
|
@@ -26617,6 +26697,21 @@ async function installClaudeCodePlugin(input, options) {
|
|
|
26617
26697
|
const args = ["plugin", "install", selector, "--scope", scope];
|
|
26618
26698
|
const runner = options.commandRunner ?? new NodeClaudeCommandRunner2;
|
|
26619
26699
|
const warnings = [];
|
|
26700
|
+
const installedPlugin = input.force === true || options.pluginVersion === undefined ? null : await readInstalledClaudePlugin(runner, selector);
|
|
26701
|
+
let needsRepair = false;
|
|
26702
|
+
if (installedPlugin !== null && installedPlugin.version === options.pluginVersion && installedPlugin.enabled) {
|
|
26703
|
+
try {
|
|
26704
|
+
const hydration = await hydrateClaudeWorkspaceCoreDependency({
|
|
26705
|
+
paths: options.paths,
|
|
26706
|
+
selector
|
|
26707
|
+
});
|
|
26708
|
+
if (hydration.warnings.length === 0 && hydration.errors.length === 0) {
|
|
26709
|
+
return createPluginInstallResult2(input.targetPlugin, "already-installed", command, args, `Claude Code plugin ${selector} already matches EvoDev ${options.pluginVersion}; skipped marketplace refresh.`);
|
|
26710
|
+
}
|
|
26711
|
+
} catch {}
|
|
26712
|
+
needsRepair = true;
|
|
26713
|
+
}
|
|
26714
|
+
const forceRefresh = input.force === true || needsRepair || installedPlugin !== null && (installedPlugin.version !== options.pluginVersion || !installedPlugin.enabled);
|
|
26620
26715
|
try {
|
|
26621
26716
|
if (options.pluginMarketplaceSource !== undefined) {
|
|
26622
26717
|
const marketplaceResult = await runner.run(command, [
|
|
@@ -26645,7 +26740,7 @@ async function installClaudeCodePlugin(input, options) {
|
|
|
26645
26740
|
}
|
|
26646
26741
|
}
|
|
26647
26742
|
}
|
|
26648
|
-
if (
|
|
26743
|
+
if (forceRefresh) {
|
|
26649
26744
|
const uninstallArgs = [
|
|
26650
26745
|
"plugin",
|
|
26651
26746
|
"uninstall",
|
|
@@ -26675,7 +26770,7 @@ async function installClaudeCodePlugin(input, options) {
|
|
|
26675
26770
|
if (isAlreadyInstalledMessage(result.stdout ?? result.stderr)) {
|
|
26676
26771
|
return createPluginInstallResult2(input.targetPlugin, "already-installed", command, args, result.stdout, [
|
|
26677
26772
|
...warnings,
|
|
26678
|
-
|
|
26773
|
+
forceRefresh ? "Claude Code reported the plugin is already installed after forced refresh; check the local plugin cache if changes are not visible." : "Claude Code reported the plugin is already installed; if local plugin files changed without a version bump, Claude may keep the existing cached copy. Bump the plugin version or uninstall and reinstall to refresh the cache."
|
|
26679
26774
|
]);
|
|
26680
26775
|
}
|
|
26681
26776
|
return createPluginInstallResult2(input.targetPlugin, "installed", command, args, result.stdout, warnings);
|
|
@@ -26685,6 +26780,24 @@ async function installClaudeCodePlugin(input, options) {
|
|
|
26685
26780
|
return createPluginInstallResult2(input.targetPlugin, "failed", command, args, describeError8(error));
|
|
26686
26781
|
}
|
|
26687
26782
|
}
|
|
26783
|
+
async function readInstalledClaudePlugin(runner, selector) {
|
|
26784
|
+
try {
|
|
26785
|
+
const result = await runner.run("claude", ["plugin", "list", "--json"]);
|
|
26786
|
+
if (result.exitCode !== 0 || result.stdout === undefined)
|
|
26787
|
+
return null;
|
|
26788
|
+
const parsed = JSON.parse(result.stdout);
|
|
26789
|
+
const plugins2 = Array.isArray(parsed) ? parsed : isRecord17(parsed) && Array.isArray(parsed.plugins) ? parsed.plugins : [];
|
|
26790
|
+
const plugin = plugins2.find((candidate) => isRecord17(candidate) && candidate.id === selector);
|
|
26791
|
+
if (!isRecord17(plugin))
|
|
26792
|
+
return null;
|
|
26793
|
+
return {
|
|
26794
|
+
version: typeof plugin.version === "string" ? plugin.version : null,
|
|
26795
|
+
enabled: plugin.enabled !== false
|
|
26796
|
+
};
|
|
26797
|
+
} catch {
|
|
26798
|
+
return null;
|
|
26799
|
+
}
|
|
26800
|
+
}
|
|
26688
26801
|
function isAlreadyInstalledMessage(message) {
|
|
26689
26802
|
return message !== undefined && /already\s+installed/i.test(message);
|
|
26690
26803
|
}
|
|
@@ -26925,6 +27038,9 @@ function isNotFoundError11(error) {
|
|
|
26925
27038
|
function isNotDirectoryError(error) {
|
|
26926
27039
|
return error instanceof Error && "code" in error && error.code === "ENOTDIR";
|
|
26927
27040
|
}
|
|
27041
|
+
function isRecord17(value) {
|
|
27042
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27043
|
+
}
|
|
26928
27044
|
function describeError8(error) {
|
|
26929
27045
|
if (error instanceof Error) {
|
|
26930
27046
|
return error.message;
|
|
@@ -26935,13 +27051,14 @@ function describeError8(error) {
|
|
|
26935
27051
|
var PROGRESS_BAR_WIDTH = 16;
|
|
26936
27052
|
var DOING_STATUS_FRAMES = ["⏳", "⌛"];
|
|
26937
27053
|
var DEFAULT_INTERACTIVE_COLUMNS = 80;
|
|
27054
|
+
var DEFAULT_TERMINAL_STATUS_VISIBLE_MS = 150;
|
|
26938
27055
|
var WIDE_TERMINAL_CHARACTER = /[\p{Extended_Pictographic}\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;
|
|
26939
27056
|
function createProgressReporter(options = {}) {
|
|
26940
27057
|
const stream = options.stream;
|
|
26941
27058
|
const interactive = options.interactive ?? (options.write === undefined && stream?.isTTY === true && typeof stream.clearLine === "function" && typeof stream.cursorTo === "function");
|
|
26942
27059
|
const writeLine = options.write ?? ((message) => (stream ?? process.stdout).write(`${message}
|
|
26943
27060
|
`));
|
|
26944
|
-
const minTerminalStatusVisibleMs = options.minTerminalStatusVisibleMs ?? (interactive ?
|
|
27061
|
+
const minTerminalStatusVisibleMs = options.minTerminalStatusVisibleMs ?? (interactive ? DEFAULT_TERMINAL_STATUS_VISIBLE_MS : 0);
|
|
26945
27062
|
const doingAnimationIntervalMs = options.doingAnimationIntervalMs ?? (interactive ? 800 : 0);
|
|
26946
27063
|
const sleep2 = options.sleep ?? defaultSleep;
|
|
26947
27064
|
const setAnimationInterval = options.setAnimationInterval ?? ((callback, ms) => setInterval(callback, ms));
|
|
@@ -27138,6 +27255,9 @@ function defaultSleep(ms) {
|
|
|
27138
27255
|
return new Promise((resolve10) => setTimeout(resolve10, ms));
|
|
27139
27256
|
}
|
|
27140
27257
|
|
|
27258
|
+
// packages/cli/src/version.ts
|
|
27259
|
+
var CLI_VERSION = "0.0.1-alpha.19";
|
|
27260
|
+
|
|
27141
27261
|
// packages/cli/src/init.ts
|
|
27142
27262
|
var DEFAULT_CODE_AGENT_MARKETPLACE_SOURCE = "limerickgds/evodev";
|
|
27143
27263
|
var DEFAULT_CODEX_MARKETPLACE_SOURCE = "git@github.com:limerickgds/evodev.git";
|
|
@@ -27426,12 +27546,14 @@ function createDefaultInitPluginRegistry(homeDir, options = {}) {
|
|
|
27426
27546
|
const claudeOptions = {
|
|
27427
27547
|
paths: resolveClaudePaths({ homeDir }),
|
|
27428
27548
|
pluginMarketplaceSource: marketplaceSource,
|
|
27549
|
+
pluginVersion: CLI_VERSION,
|
|
27429
27550
|
...options.claudePluginOptions
|
|
27430
27551
|
};
|
|
27431
27552
|
const codexOptions = {
|
|
27432
27553
|
paths: resolveCodexPaths({ homeDir }),
|
|
27433
27554
|
pluginMarketplaceSource: explicitMarketplaceSource ?? DEFAULT_CODEX_MARKETPLACE_SOURCE,
|
|
27434
27555
|
pluginMarketplaceFallbackSource: explicitMarketplaceSource === undefined ? DEFAULT_CODEX_MARKETPLACE_FALLBACK_SOURCE : undefined,
|
|
27556
|
+
pluginVersion: CLI_VERSION,
|
|
27435
27557
|
...options.codexPluginOptions
|
|
27436
27558
|
};
|
|
27437
27559
|
return createPluginRegistry([createClaudePlugin(claudeOptions), createCodexPlugin(codexOptions)]);
|
|
@@ -27442,12 +27564,12 @@ function createInitProgressReporter(options = console.log) {
|
|
|
27442
27564
|
}
|
|
27443
27565
|
return createProgressReporter(options);
|
|
27444
27566
|
}
|
|
27445
|
-
var
|
|
27446
|
-
"█████ █ █ ███
|
|
27447
|
-
"█ █ █ █ █ █ █ █
|
|
27448
|
-
"████ █ █
|
|
27449
|
-
"█ █ █ █ █ █ █ █
|
|
27450
|
-
"█████ █ ███
|
|
27567
|
+
var EVODEV_BANNER = [
|
|
27568
|
+
"█████ █ █ ███ ████ █████ █ █",
|
|
27569
|
+
"█ █ █ █ █ █ █ █ █ █",
|
|
27570
|
+
"████ █ █ █ █ █ █ ████ █ █",
|
|
27571
|
+
"█ █ █ █ █ █ █ █ █ █ ",
|
|
27572
|
+
"█████ █ ███ ████ █████ █ "
|
|
27451
27573
|
];
|
|
27452
27574
|
function formatInitSummary(input) {
|
|
27453
27575
|
const failedPluginInstall = hasFailedPluginInstallResult(input.pluginInstallResults);
|
|
@@ -27463,7 +27585,7 @@ function formatInitSummary(input) {
|
|
|
27463
27585
|
return [
|
|
27464
27586
|
"EvoDev init result",
|
|
27465
27587
|
"",
|
|
27466
|
-
...
|
|
27588
|
+
...EVODEV_BANNER,
|
|
27467
27589
|
"",
|
|
27468
27590
|
failedPluginInstall ? "❌ Status: stopped" : "✅ Status: ready",
|
|
27469
27591
|
failedPluginInstall ? "Progress: stopped at Code Agent plugin install" : "Progress: 7/7 complete",
|
|
@@ -27496,7 +27618,7 @@ function formatInitStoppedSummary(input) {
|
|
|
27496
27618
|
return [
|
|
27497
27619
|
"EvoDev init result",
|
|
27498
27620
|
"",
|
|
27499
|
-
...
|
|
27621
|
+
...EVODEV_BANNER,
|
|
27500
27622
|
"",
|
|
27501
27623
|
"❌ Status: stopped",
|
|
27502
27624
|
"Progress: stopped at doctor gate",
|
|
@@ -27989,7 +28111,7 @@ async function installSelectedCodeAgentPlugins(selectedPlugins, pluginRegistry,
|
|
|
27989
28111
|
});
|
|
27990
28112
|
continue;
|
|
27991
28113
|
}
|
|
27992
|
-
const result = await plugin.installPlugin({ targetPlugin: pluginId, force:
|
|
28114
|
+
const result = await plugin.installPlugin({ targetPlugin: pluginId, force: false });
|
|
27993
28115
|
results.push(result);
|
|
27994
28116
|
emitInitProgress(progress, {
|
|
27995
28117
|
status: result.status === "failed" ? "failed" : result.status === "skipped" ? "skipped" : "done",
|
|
@@ -28894,7 +29016,7 @@ function redactRawExcerptContent(content) {
|
|
|
28894
29016
|
return line;
|
|
28895
29017
|
try {
|
|
28896
29018
|
const event = JSON.parse(line);
|
|
28897
|
-
if (!
|
|
29019
|
+
if (!isRecord18(event)) {
|
|
28898
29020
|
const safeLine = redactSessionMemoryCredentialText(line);
|
|
28899
29021
|
redacted ||= safeLine.redacted;
|
|
28900
29022
|
return safeLine.value;
|
|
@@ -28933,7 +29055,7 @@ function parseRawEvents(content) {
|
|
|
28933
29055
|
continue;
|
|
28934
29056
|
try {
|
|
28935
29057
|
const event = JSON.parse(line);
|
|
28936
|
-
if (!
|
|
29058
|
+
if (!isRecord18(event))
|
|
28937
29059
|
continue;
|
|
28938
29060
|
const payload = typeof event.rawPayloadJson === "string" ? safeJsonParse(event.rawPayloadJson) : null;
|
|
28939
29061
|
events.push({
|
|
@@ -28950,7 +29072,7 @@ function parseRawEvents(content) {
|
|
|
28950
29072
|
}
|
|
28951
29073
|
function findTranscriptPointer(events) {
|
|
28952
29074
|
for (const event of [...events].reverse()) {
|
|
28953
|
-
if (!
|
|
29075
|
+
if (!isRecord18(event.payload))
|
|
28954
29076
|
continue;
|
|
28955
29077
|
const path2 = stringValue(event.payload.transcript_path) ?? stringValue(event.payload.transcriptPath) ?? stringValue(event.payload.trace_path) ?? stringValue(event.payload.tracePath);
|
|
28956
29078
|
if (path2 === null)
|
|
@@ -29008,7 +29130,7 @@ async function readLargeTranscriptWindow(path2, target, pointer) {
|
|
|
29008
29130
|
if (line.trim() === "")
|
|
29009
29131
|
continue;
|
|
29010
29132
|
const value = safeJsonParse(line);
|
|
29011
|
-
if (value === null || !
|
|
29133
|
+
if (value === null || !isRecord18(value))
|
|
29012
29134
|
continue;
|
|
29013
29135
|
if (target === "codex" && value.type === "session_meta") {
|
|
29014
29136
|
sessionMeta = value;
|
|
@@ -29053,7 +29175,7 @@ async function readLargeTranscriptWindow(path2, target, pointer) {
|
|
|
29053
29175
|
return sessionMeta === null ? selected : [sessionMeta, ...selected];
|
|
29054
29176
|
}
|
|
29055
29177
|
function codexTurnStart(value) {
|
|
29056
|
-
if (!
|
|
29178
|
+
if (!isRecord18(value.payload))
|
|
29057
29179
|
return null;
|
|
29058
29180
|
if (value.type === "event_msg" && value.payload.type === "task_started" || value.type === "turn_context") {
|
|
29059
29181
|
return stringValue(value.payload.turn_id);
|
|
@@ -29061,17 +29183,17 @@ function codexTurnStart(value) {
|
|
|
29061
29183
|
return null;
|
|
29062
29184
|
}
|
|
29063
29185
|
function isCodexTurnComplete(value) {
|
|
29064
|
-
return value.type === "event_msg" &&
|
|
29186
|
+
return value.type === "event_msg" && isRecord18(value.payload) && value.payload.type === "task_complete";
|
|
29065
29187
|
}
|
|
29066
29188
|
function claudeTurnStart(value) {
|
|
29067
|
-
if (!
|
|
29189
|
+
if (!isRecord18(value.message) || value.message.role !== "user")
|
|
29068
29190
|
return null;
|
|
29069
29191
|
const blocks = Array.isArray(value.message.content) ? value.message.content : [value.message.content];
|
|
29070
|
-
const hasPrompt = blocks.some((block) => typeof block === "string" ||
|
|
29192
|
+
const hasPrompt = blocks.some((block) => typeof block === "string" || isRecord18(block) && block.type !== "tool_result");
|
|
29071
29193
|
return hasPrompt ? stringValue(value.promptId) ?? stringValue(value.uuid) ?? "claude-turn" : null;
|
|
29072
29194
|
}
|
|
29073
29195
|
function recordContainsCallId(value, callId) {
|
|
29074
|
-
if (!
|
|
29196
|
+
if (!isRecord18(value))
|
|
29075
29197
|
return false;
|
|
29076
29198
|
if (value.call_id === callId || value.id === callId || value.tool_use_id === callId || value.toolUseId === callId) {
|
|
29077
29199
|
return true;
|
|
@@ -29096,17 +29218,17 @@ function parseJsonLines(text2) {
|
|
|
29096
29218
|
return values;
|
|
29097
29219
|
}
|
|
29098
29220
|
function parseCodexConversation(records) {
|
|
29099
|
-
const events = records.filter(
|
|
29221
|
+
const events = records.filter(isRecord18);
|
|
29100
29222
|
const sessionMeta = events.find((event) => event.type === "session_meta");
|
|
29101
|
-
const sessionId =
|
|
29223
|
+
const sessionId = isRecord18(sessionMeta?.payload) ? stringValue(sessionMeta.payload.id) ?? stringValue(sessionMeta.payload.session_id) : null;
|
|
29102
29224
|
const hasResponseUser = hasCodexResponseMessage(events, "user");
|
|
29103
29225
|
const hasResponseAssistant = hasCodexResponseMessage(events, "assistant");
|
|
29104
|
-
const hasResponseReasoning = events.some((event) => event.type === "response_item" &&
|
|
29226
|
+
const hasResponseReasoning = events.some((event) => event.type === "response_item" && isRecord18(event.payload) && event.payload.type === "reasoning");
|
|
29105
29227
|
const callNames = new Map;
|
|
29106
29228
|
const messages = [];
|
|
29107
29229
|
let activeTurnId = null;
|
|
29108
29230
|
for (const [index, event] of events.entries()) {
|
|
29109
|
-
const payload =
|
|
29231
|
+
const payload = isRecord18(event.payload) ? event.payload : {};
|
|
29110
29232
|
const eventType = stringValue(event.type) ?? "unknown";
|
|
29111
29233
|
const payloadType = stringValue(payload.type) ?? "unknown";
|
|
29112
29234
|
const timestamp = stringValue(event.timestamp);
|
|
@@ -29174,13 +29296,13 @@ function parseClaudeConversation(records) {
|
|
|
29174
29296
|
let currentTurnId = null;
|
|
29175
29297
|
let turnCounter = 0;
|
|
29176
29298
|
for (const [recordIndex, value] of records.entries()) {
|
|
29177
|
-
if (!
|
|
29299
|
+
if (!isRecord18(value) || !isRecord18(value.message))
|
|
29178
29300
|
continue;
|
|
29179
29301
|
sessionId ??= stringValue(value.sessionId);
|
|
29180
29302
|
const role = coerceRole(stringValue(value.message.role));
|
|
29181
29303
|
const content = value.message.content;
|
|
29182
29304
|
const blocks = Array.isArray(content) ? content : [content];
|
|
29183
|
-
const hasPlainUserContent = role === "user" && blocks.some((block) => typeof block === "string" ||
|
|
29305
|
+
const hasPlainUserContent = role === "user" && blocks.some((block) => typeof block === "string" || isRecord18(block) && block.type !== "tool_result");
|
|
29184
29306
|
if (hasPlainUserContent) {
|
|
29185
29307
|
turnCounter += 1;
|
|
29186
29308
|
currentTurnId = stringValue(value.promptId) ?? stringValue(value.uuid) ?? `claude-turn-${turnCounter}`;
|
|
@@ -29193,7 +29315,7 @@ function parseClaudeConversation(records) {
|
|
|
29193
29315
|
turnId: currentTurnId,
|
|
29194
29316
|
metadata: compactMetadata({
|
|
29195
29317
|
eventType: stringValue(value.type) ?? "message",
|
|
29196
|
-
payloadType:
|
|
29318
|
+
payloadType: isRecord18(block) ? stringValue(block.type) ?? "unknown" : "text",
|
|
29197
29319
|
sourceLine: recordIndex + 1,
|
|
29198
29320
|
model: stringValue(value.message.model)
|
|
29199
29321
|
})
|
|
@@ -29202,7 +29324,7 @@ function parseClaudeConversation(records) {
|
|
|
29202
29324
|
messages.push(createMessage(`${recordId}-${blockIndex}`, displayRoleForText(role, block), "text", block, base));
|
|
29203
29325
|
continue;
|
|
29204
29326
|
}
|
|
29205
|
-
if (!
|
|
29327
|
+
if (!isRecord18(block))
|
|
29206
29328
|
continue;
|
|
29207
29329
|
const blockType = stringValue(block.type) ?? "unknown";
|
|
29208
29330
|
if (blockType === "text") {
|
|
@@ -29306,7 +29428,7 @@ function truncateUtf8(value, maxBytes) {
|
|
|
29306
29428
|
};
|
|
29307
29429
|
}
|
|
29308
29430
|
function hasCodexResponseMessage(events, role) {
|
|
29309
|
-
return events.some((event) => event.type === "response_item" &&
|
|
29431
|
+
return events.some((event) => event.type === "response_item" && isRecord18(event.payload) && event.payload.type === "message" && event.payload.role === role);
|
|
29310
29432
|
}
|
|
29311
29433
|
function coerceRole(value) {
|
|
29312
29434
|
if (value === "user" || value === "assistant" || value === "developer" || value === "system" || value === "tool") {
|
|
@@ -29326,7 +29448,7 @@ function extractText(value) {
|
|
|
29326
29448
|
if (Array.isArray(value))
|
|
29327
29449
|
return value.map(extractText).filter(Boolean).join(`
|
|
29328
29450
|
`);
|
|
29329
|
-
if (!
|
|
29451
|
+
if (!isRecord18(value))
|
|
29330
29452
|
return "";
|
|
29331
29453
|
for (const key of ["text", "content", "value", "thinking"]) {
|
|
29332
29454
|
if (key in value) {
|
|
@@ -29369,7 +29491,7 @@ function safeTranscriptError(error) {
|
|
|
29369
29491
|
return message;
|
|
29370
29492
|
return "The linked native transcript is unavailable or unreadable.";
|
|
29371
29493
|
}
|
|
29372
|
-
function
|
|
29494
|
+
function isRecord18(value) {
|
|
29373
29495
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29374
29496
|
}
|
|
29375
29497
|
|
|
@@ -29447,7 +29569,7 @@ function createCodexSessionKnowledgeAnalyzer(input = {}) {
|
|
|
29447
29569
|
};
|
|
29448
29570
|
}
|
|
29449
29571
|
function parseSemanticKnowledgeAnalysis(value) {
|
|
29450
|
-
if (!
|
|
29572
|
+
if (!isRecord19(value))
|
|
29451
29573
|
throw new Error("Semantic knowledge analyzer output must be an object.");
|
|
29452
29574
|
const decision = value.decision;
|
|
29453
29575
|
if (decision !== "write" && decision !== "no_write") {
|
|
@@ -29465,7 +29587,7 @@ function parseSemanticKnowledgeAnalysis(value) {
|
|
|
29465
29587
|
};
|
|
29466
29588
|
}
|
|
29467
29589
|
function parseSemanticCandidate(value, index) {
|
|
29468
|
-
if (!
|
|
29590
|
+
if (!isRecord19(value))
|
|
29469
29591
|
throw new Error(`candidates[${index}] must be an object.`);
|
|
29470
29592
|
const kind = value.kind;
|
|
29471
29593
|
const confidence = value.confidence;
|
|
@@ -29773,7 +29895,7 @@ async function runCodex(input) {
|
|
|
29773
29895
|
}
|
|
29774
29896
|
async function resolveSegmentRepoRoot(events, homeDir) {
|
|
29775
29897
|
for (const event of [...events].reverse()) {
|
|
29776
|
-
if (!
|
|
29898
|
+
if (!isRecord19(event.payload) || typeof event.payload.cwd !== "string")
|
|
29777
29899
|
continue;
|
|
29778
29900
|
const cwd = await realpath4(event.payload.cwd).catch(() => null);
|
|
29779
29901
|
if (cwd === null || cwd === resolve11(homeDir) || !await isDirectory3(cwd))
|
|
@@ -29957,7 +30079,7 @@ async function isDirectory3(path2) {
|
|
|
29957
30079
|
return false;
|
|
29958
30080
|
}
|
|
29959
30081
|
}
|
|
29960
|
-
function
|
|
30082
|
+
function isRecord19(value) {
|
|
29961
30083
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29962
30084
|
}
|
|
29963
30085
|
var SEMANTIC_KINDS = new Set([
|
|
@@ -34083,6 +34205,7 @@ function shouldRunLazyEvolutionFallback(argv) {
|
|
|
34083
34205
|
"daemon",
|
|
34084
34206
|
"doctor",
|
|
34085
34207
|
"hook",
|
|
34208
|
+
"init",
|
|
34086
34209
|
"knowledge",
|
|
34087
34210
|
"mcp",
|
|
34088
34211
|
"observability",
|
|
@@ -34904,7 +35027,7 @@ function createCodexImprovementEvalAnalyzer(input = {}) {
|
|
|
34904
35027
|
};
|
|
34905
35028
|
}
|
|
34906
35029
|
function parseImprovementEvalReplayAnalysis(value) {
|
|
34907
|
-
if (!
|
|
35030
|
+
if (!isRecord20(value))
|
|
34908
35031
|
throw new Error("Improvement eval output must be an object.");
|
|
34909
35032
|
return {
|
|
34910
35033
|
targetFixed: requiredSignal(value.targetFixed, "targetFixed"),
|
|
@@ -35088,14 +35211,14 @@ function parseCodexReplayMetrics(output) {
|
|
|
35088
35211
|
continue;
|
|
35089
35212
|
try {
|
|
35090
35213
|
const event = JSON.parse(line);
|
|
35091
|
-
if (!
|
|
35214
|
+
if (!isRecord20(event))
|
|
35092
35215
|
continue;
|
|
35093
|
-
const usage =
|
|
35216
|
+
const usage = isRecord20(event.usage) ? event.usage : null;
|
|
35094
35217
|
if (usage !== null) {
|
|
35095
35218
|
inputTokens = readNonNegativeInteger(usage.input_tokens) ?? inputTokens;
|
|
35096
35219
|
outputTokens = readNonNegativeInteger(usage.output_tokens) ?? outputTokens;
|
|
35097
35220
|
}
|
|
35098
|
-
const item =
|
|
35221
|
+
const item = isRecord20(event.item) ? event.item : null;
|
|
35099
35222
|
if (item !== null && typeof item.type === "string" && ["command_execution", "mcp_tool_call", "web_search"].includes(item.type)) {
|
|
35100
35223
|
if (typeof item.id === "string")
|
|
35101
35224
|
toolCallIds.add(item.id);
|
|
@@ -35187,7 +35310,7 @@ function summarizeProcessError(value) {
|
|
|
35187
35310
|
function safeError(error) {
|
|
35188
35311
|
return redactSessionMemoryCredentialText(error instanceof Error ? error.message : String(error)).value.replace(/\s+/gu, " ").slice(0, 500);
|
|
35189
35312
|
}
|
|
35190
|
-
function
|
|
35313
|
+
function isRecord20(value) {
|
|
35191
35314
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35192
35315
|
}
|
|
35193
35316
|
var IMPROVEMENT_EVAL_SCHEMA = {
|
|
@@ -35942,7 +36065,7 @@ async function acquireExecutionLock(path2, latest) {
|
|
|
35942
36065
|
async function isExecutionLockOwnerAlive(path2) {
|
|
35943
36066
|
try {
|
|
35944
36067
|
const value = JSON.parse(await readFile34(path2, "utf8"));
|
|
35945
|
-
return
|
|
36068
|
+
return isRecord21(value) && typeof value.pid === "number" && isProcessAlive2(value.pid);
|
|
35946
36069
|
} catch {
|
|
35947
36070
|
return false;
|
|
35948
36071
|
}
|
|
@@ -35957,7 +36080,7 @@ async function writeExecutionRecord(homeDir, proposal, record) {
|
|
|
35957
36080
|
await rename7(temporary, path2);
|
|
35958
36081
|
}
|
|
35959
36082
|
function parseExecutionRecord(value) {
|
|
35960
|
-
if (!
|
|
36083
|
+
if (!isRecord21(value))
|
|
35961
36084
|
throw new Error("Execution record must be an object.");
|
|
35962
36085
|
const allowedKeys = new Set([
|
|
35963
36086
|
"schemaVersion",
|
|
@@ -36039,7 +36162,7 @@ function isProcessAlive2(pid) {
|
|
|
36039
36162
|
return false;
|
|
36040
36163
|
}
|
|
36041
36164
|
}
|
|
36042
|
-
function
|
|
36165
|
+
function isRecord21(value) {
|
|
36043
36166
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
36044
36167
|
}
|
|
36045
36168
|
function isNotFoundError15(error) {
|
|
@@ -36148,8 +36271,12 @@ async function scanSessionRepoProposalsUnlocked(options) {
|
|
|
36148
36271
|
continue;
|
|
36149
36272
|
}
|
|
36150
36273
|
const repoRoot = await resolveSegmentRepoRoot2(detail.rawEvents, options.homeDir);
|
|
36151
|
-
if (repoRoot === null)
|
|
36152
|
-
|
|
36274
|
+
if (repoRoot === null) {
|
|
36275
|
+
result.noChange += 1;
|
|
36276
|
+
await writeReceipt(receiptPath, createReceipt(segment, now2, "no-change", null, "The session path is not inside a Git repository."));
|
|
36277
|
+
await reportProposalProgress(options, result, "updated");
|
|
36278
|
+
continue;
|
|
36279
|
+
}
|
|
36153
36280
|
const repositorySnapshot = await inspectRepoProposalRepositorySnapshot(repoRoot);
|
|
36154
36281
|
const analysis3 = parseSessionProposalAnalysis(await analyzer({
|
|
36155
36282
|
repoRoot,
|
|
@@ -36411,7 +36538,7 @@ function createCodexSessionProposalAnalyzer(input = {}) {
|
|
|
36411
36538
|
};
|
|
36412
36539
|
}
|
|
36413
36540
|
function parseSessionProposalAnalysis(value) {
|
|
36414
|
-
if (!
|
|
36541
|
+
if (!isRecord22(value))
|
|
36415
36542
|
throw new Error("Session proposal analyzer output must be an object.");
|
|
36416
36543
|
const decision = value.decision;
|
|
36417
36544
|
if (decision !== "propose" && decision !== "no-change") {
|
|
@@ -36470,7 +36597,7 @@ function formatConversation(detail) {
|
|
|
36470
36597
|
}
|
|
36471
36598
|
async function resolveSegmentRepoRoot2(events, homeDir) {
|
|
36472
36599
|
for (const event of [...events].reverse()) {
|
|
36473
|
-
if (!
|
|
36600
|
+
if (!isRecord22(event.payload) || typeof event.payload.cwd !== "string")
|
|
36474
36601
|
continue;
|
|
36475
36602
|
const cwd = await realpath7(event.payload.cwd).catch(() => null);
|
|
36476
36603
|
if (cwd === null || cwd === resolve14(homeDir))
|
|
@@ -36489,7 +36616,7 @@ async function findRepositoryRoot2(cwd, homeDir) {
|
|
|
36489
36616
|
return current;
|
|
36490
36617
|
current = dirname29(current);
|
|
36491
36618
|
}
|
|
36492
|
-
return
|
|
36619
|
+
return null;
|
|
36493
36620
|
}
|
|
36494
36621
|
async function validatePlannedFiles(repoRoot, files) {
|
|
36495
36622
|
if (files.length === 0)
|
|
@@ -36665,7 +36792,7 @@ async function runCodex2(input) {
|
|
|
36665
36792
|
});
|
|
36666
36793
|
}
|
|
36667
36794
|
function parsePlannedFile(value, index) {
|
|
36668
|
-
if (!
|
|
36795
|
+
if (!isRecord22(value))
|
|
36669
36796
|
throw new Error(`plannedFiles[${index}] must be an object.`);
|
|
36670
36797
|
return {
|
|
36671
36798
|
relativePath: requiredString3(value.relativePath, `plannedFiles[${index}].relativePath`),
|
|
@@ -36675,7 +36802,7 @@ function parsePlannedFile(value, index) {
|
|
|
36675
36802
|
};
|
|
36676
36803
|
}
|
|
36677
36804
|
function parseCurrentStateAnalysis(value) {
|
|
36678
|
-
if (!
|
|
36805
|
+
if (!isRecord22(value))
|
|
36679
36806
|
throw new Error("currentState must be an object.");
|
|
36680
36807
|
if (typeof value.explicitUserRequest !== "boolean") {
|
|
36681
36808
|
throw new Error("currentState.explicitUserRequest must be a boolean.");
|
|
@@ -36765,7 +36892,7 @@ async function releaseScanLock(lock) {
|
|
|
36765
36892
|
async function readScanLockOwner(path2) {
|
|
36766
36893
|
try {
|
|
36767
36894
|
const value = JSON.parse(await readFile35(path2, "utf8"));
|
|
36768
|
-
return
|
|
36895
|
+
return isRecord22(value) && typeof value.ownerId === "string" ? value.ownerId : null;
|
|
36769
36896
|
} catch {
|
|
36770
36897
|
return null;
|
|
36771
36898
|
}
|
|
@@ -36844,7 +36971,7 @@ function selectIndependentCandidateReceipts(candidates2) {
|
|
|
36844
36971
|
async function readReceipt(path2) {
|
|
36845
36972
|
try {
|
|
36846
36973
|
const value = JSON.parse(await readFile35(path2, "utf8"));
|
|
36847
|
-
return
|
|
36974
|
+
return isRecord22(value) && value.kind === "session-repo-proposal-receipt" ? value : null;
|
|
36848
36975
|
} catch {
|
|
36849
36976
|
return null;
|
|
36850
36977
|
}
|
|
@@ -36852,7 +36979,7 @@ async function readReceipt(path2) {
|
|
|
36852
36979
|
async function readDailyState(path2) {
|
|
36853
36980
|
try {
|
|
36854
36981
|
const value = JSON.parse(await readFile35(path2, "utf8"));
|
|
36855
|
-
return
|
|
36982
|
+
return isRecord22(value) && value.kind === "session-repo-proposal-daily-state" ? value : null;
|
|
36856
36983
|
} catch {
|
|
36857
36984
|
return null;
|
|
36858
36985
|
}
|
|
@@ -36932,7 +37059,7 @@ function createLocalStableId2(prefix, parts) {
|
|
|
36932
37059
|
const digest = createHash12("sha256").update(parts.join("\x00")).digest("hex").slice(0, 16);
|
|
36933
37060
|
return `${prefix}-${digest}`;
|
|
36934
37061
|
}
|
|
36935
|
-
function
|
|
37062
|
+
function isRecord22(value) {
|
|
36936
37063
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
36937
37064
|
}
|
|
36938
37065
|
function isFileExistsError2(error) {
|
|
@@ -39817,14 +39944,14 @@ function parseCodexModelCatalog(value) {
|
|
|
39817
39944
|
} catch {
|
|
39818
39945
|
return [];
|
|
39819
39946
|
}
|
|
39820
|
-
if (!
|
|
39947
|
+
if (!isRecord23(parsed) || !Array.isArray(parsed.models))
|
|
39821
39948
|
return [];
|
|
39822
39949
|
const models = [];
|
|
39823
39950
|
const seenModels = new Set;
|
|
39824
39951
|
for (const entry of parsed.models) {
|
|
39825
39952
|
if (models.length >= MAX_CODEX_MODELS)
|
|
39826
39953
|
break;
|
|
39827
|
-
if (!
|
|
39954
|
+
if (!isRecord23(entry))
|
|
39828
39955
|
continue;
|
|
39829
39956
|
const id = printableText(entry.slug, 120);
|
|
39830
39957
|
if (id === null || seenModels.has(id))
|
|
@@ -39832,7 +39959,7 @@ function parseCodexModelCatalog(value) {
|
|
|
39832
39959
|
const label = printableText(entry.display_name, 120) ?? id;
|
|
39833
39960
|
const defaultReasoningEffort = printableText(entry.default_reasoning_level, 40) ?? "medium";
|
|
39834
39961
|
const supportedReasoningEfforts = Array.isArray(entry.supported_reasoning_levels) ? [
|
|
39835
|
-
...new Set(entry.supported_reasoning_levels.map((option) =>
|
|
39962
|
+
...new Set(entry.supported_reasoning_levels.map((option) => isRecord23(option) ? printableText(option.effort, 40) : null).filter((effort) => effort !== null))
|
|
39836
39963
|
].slice(0, MAX_REASONING_EFFORTS) : [];
|
|
39837
39964
|
seenModels.add(id);
|
|
39838
39965
|
models.push({ id, label, defaultReasoningEffort, supportedReasoningEfforts });
|
|
@@ -39915,7 +40042,7 @@ function printableText(value, maxLength) {
|
|
|
39915
40042
|
}
|
|
39916
40043
|
return normalized;
|
|
39917
40044
|
}
|
|
39918
|
-
function
|
|
40045
|
+
function isRecord23(value) {
|
|
39919
40046
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
39920
40047
|
}
|
|
39921
40048
|
|
|
@@ -43010,7 +43137,6 @@ function getHelpText() {
|
|
|
43010
43137
|
].join(`
|
|
43011
43138
|
`);
|
|
43012
43139
|
}
|
|
43013
|
-
var CLI_VERSION = "0.0.1-alpha.18";
|
|
43014
43140
|
function getVersionText() {
|
|
43015
43141
|
return `evodev ${CLI_VERSION}`;
|
|
43016
43142
|
}
|
|
@@ -43699,112 +43825,112 @@ function isMainModule() {
|
|
|
43699
43825
|
return process.argv[1] !== undefined && realpathSync2(fileURLToPath5(import.meta.url)) === realpathSync2(resolve15(process.argv[1]));
|
|
43700
43826
|
}
|
|
43701
43827
|
export {
|
|
43702
|
-
|
|
43703
|
-
updateUiEvolutionScheduler,
|
|
43704
|
-
updateEvoDevSetting,
|
|
43705
|
-
shouldRunPostCommandMaintenance,
|
|
43706
|
-
shouldRunLazyEvolutionFallback,
|
|
43707
|
-
scanSessionRepoProposals,
|
|
43708
|
-
runWorkflowCommand,
|
|
43709
|
-
runUiCommand,
|
|
43710
|
-
runTrajectoryImportCommand,
|
|
43711
|
-
runTraceCommand,
|
|
43712
|
-
runTeamCommand,
|
|
43713
|
-
runSyncCommand,
|
|
43714
|
-
runScheduleCommand,
|
|
43715
|
-
runRepoProposalApplication,
|
|
43716
|
-
runPluginCommand,
|
|
43717
|
-
runPendingImprovementEvaluations,
|
|
43718
|
-
runPackCommand,
|
|
43719
|
-
runObservabilityCommand,
|
|
43720
|
-
runMcpCommand,
|
|
43721
|
-
runLearnCommand,
|
|
43722
|
-
runLazyEvolutionFallback,
|
|
43723
|
-
runKnowledgeCommand,
|
|
43724
|
-
runInit,
|
|
43725
|
-
runHookCommand,
|
|
43726
|
-
runEvoCommand,
|
|
43727
|
-
runDoctor,
|
|
43728
|
-
runDailySessionProposalScan,
|
|
43729
|
-
runDaemonCommand,
|
|
43730
|
-
runConfigSetCommand,
|
|
43731
|
-
runConfigGetCommand,
|
|
43732
|
-
runConfigCommand,
|
|
43733
|
-
runAgentSpawnCommand,
|
|
43734
|
-
runAgentCommand,
|
|
43735
|
-
run,
|
|
43736
|
-
resolveLazyEvolutionStatePath,
|
|
43737
|
-
resolveLaunchAgentPath,
|
|
43738
|
-
resolveLatestEvolutionJobPath,
|
|
43739
|
-
resolveInitProjectCandidates,
|
|
43740
|
-
resolveEvolutionJobPath,
|
|
43741
|
-
resolveDefaultCodeAgentSelections,
|
|
43742
|
-
resolveDailyScheduleStatePath,
|
|
43743
|
-
renderUiDashboardHtml,
|
|
43744
|
-
renderLaunchAgentPlist,
|
|
43745
|
-
recordDailyEvolutionRun,
|
|
43746
|
-
readUiSettingsSnapshot,
|
|
43747
|
-
readUiDashboardSnapshot,
|
|
43748
|
-
readSessionProposalBacklogStatus,
|
|
43749
|
-
readLazyEvolutionStatus,
|
|
43750
|
-
readLatestEvolutionJob,
|
|
43751
|
-
readEvolutionJob,
|
|
43752
|
-
readEvoDevSettingsSnapshot,
|
|
43753
|
-
readDailySessionProposalState,
|
|
43754
|
-
readDailyEvolutionScheduleStatus,
|
|
43755
|
-
readDailyEvolutionScheduleState,
|
|
43756
|
-
previewTrajectoryImport,
|
|
43757
|
-
prepareTrajectoryImport,
|
|
43758
|
-
prepareDailyEvolutionSchedule,
|
|
43759
|
-
parseSyncFlags,
|
|
43760
|
-
parseSessionProposalAnalysis,
|
|
43761
|
-
parseSemanticKnowledgeAnalysis,
|
|
43762
|
-
parseInitFlags,
|
|
43763
|
-
parseImprovementEvalReplayAnalysis,
|
|
43764
|
-
parseCodexModelCatalog,
|
|
43765
|
-
listEvolutionJobs,
|
|
43766
|
-
getWorkflowHelpText,
|
|
43767
|
-
getVersionText,
|
|
43768
|
-
getUiHelpText,
|
|
43769
|
-
getTeamHelpText,
|
|
43770
|
-
getTeamConfigHelpText,
|
|
43771
|
-
getScheduleHelpText,
|
|
43772
|
-
getPackHelpText,
|
|
43773
|
-
getHelpText,
|
|
43774
|
-
formatTrajectoryImportPreview,
|
|
43775
|
-
formatTrajectoryImportApplyResult,
|
|
43776
|
-
formatSyncOutput,
|
|
43777
|
-
formatDoctorOutput,
|
|
43778
|
-
discoverCodexRuntime,
|
|
43779
|
-
decideDailyEvolutionTick,
|
|
43780
|
-
createSessionKnowledgeDistiller,
|
|
43781
|
-
createInteractivePrompter,
|
|
43782
|
-
createInitProjectChoices,
|
|
43783
|
-
createEvoDevSettingsRevision,
|
|
43784
|
-
createDefaultInitPluginRegistry,
|
|
43785
|
-
createCodexSessionProposalAnalyzer,
|
|
43786
|
-
createCodexSessionKnowledgeAnalyzer,
|
|
43787
|
-
createCodexImprovementEvalAnalyzer,
|
|
43788
|
-
createCodeAgentChoices,
|
|
43789
|
-
compareSemver,
|
|
43790
|
-
classifyImprovementEvalAnalysis,
|
|
43791
|
-
checkForUpdates,
|
|
43792
|
-
applyReviewDecision,
|
|
43793
|
-
applyEvoDevSettingsMutation,
|
|
43794
|
-
ReviewDecisionError,
|
|
43795
|
-
OsEvolutionScheduler,
|
|
43796
|
-
EvolutionJobService,
|
|
43797
|
-
EvolutionJobNotFoundError,
|
|
43798
|
-
EvolutionJobBusyError,
|
|
43799
|
-
EvoDevSettingsMutationError,
|
|
43800
|
-
EVO_DEV_SETTINGS_KEYS,
|
|
43801
|
-
EVOLUTION_SCHEDULE_LABEL,
|
|
43802
|
-
EVOLUTION_SCHEDULE_INTERVAL_SECONDS,
|
|
43803
|
-
DEFAULT_LAZY_EVOLUTION_LIMIT,
|
|
43804
|
-
DEFAULT_LAZY_EVOLUTION_INTERVAL_MS,
|
|
43805
|
-
DEFAULT_EVOLUTION_SCHEDULE_DAILY_TIME,
|
|
43806
|
-
DEFAULT_CODE_AGENT_MARKETPLACE_SOURCE,
|
|
43807
|
-
DEFAULT_CODEX_MARKETPLACE_SOURCE,
|
|
43828
|
+
CLI_VERSION,
|
|
43808
43829
|
DEFAULT_CODEX_MARKETPLACE_FALLBACK_SOURCE,
|
|
43809
|
-
|
|
43830
|
+
DEFAULT_CODEX_MARKETPLACE_SOURCE,
|
|
43831
|
+
DEFAULT_CODE_AGENT_MARKETPLACE_SOURCE,
|
|
43832
|
+
DEFAULT_EVOLUTION_SCHEDULE_DAILY_TIME,
|
|
43833
|
+
DEFAULT_LAZY_EVOLUTION_INTERVAL_MS,
|
|
43834
|
+
DEFAULT_LAZY_EVOLUTION_LIMIT,
|
|
43835
|
+
EVOLUTION_SCHEDULE_INTERVAL_SECONDS,
|
|
43836
|
+
EVOLUTION_SCHEDULE_LABEL,
|
|
43837
|
+
EVO_DEV_SETTINGS_KEYS,
|
|
43838
|
+
EvoDevSettingsMutationError,
|
|
43839
|
+
EvolutionJobBusyError,
|
|
43840
|
+
EvolutionJobNotFoundError,
|
|
43841
|
+
EvolutionJobService,
|
|
43842
|
+
OsEvolutionScheduler,
|
|
43843
|
+
ReviewDecisionError,
|
|
43844
|
+
applyEvoDevSettingsMutation,
|
|
43845
|
+
applyReviewDecision,
|
|
43846
|
+
checkForUpdates,
|
|
43847
|
+
classifyImprovementEvalAnalysis,
|
|
43848
|
+
compareSemver,
|
|
43849
|
+
createCodeAgentChoices,
|
|
43850
|
+
createCodexImprovementEvalAnalyzer,
|
|
43851
|
+
createCodexSessionKnowledgeAnalyzer,
|
|
43852
|
+
createCodexSessionProposalAnalyzer,
|
|
43853
|
+
createDefaultInitPluginRegistry,
|
|
43854
|
+
createEvoDevSettingsRevision,
|
|
43855
|
+
createInitProjectChoices,
|
|
43856
|
+
createInteractivePrompter,
|
|
43857
|
+
createSessionKnowledgeDistiller,
|
|
43858
|
+
decideDailyEvolutionTick,
|
|
43859
|
+
discoverCodexRuntime,
|
|
43860
|
+
formatDoctorOutput,
|
|
43861
|
+
formatSyncOutput,
|
|
43862
|
+
formatTrajectoryImportApplyResult,
|
|
43863
|
+
formatTrajectoryImportPreview,
|
|
43864
|
+
getHelpText,
|
|
43865
|
+
getPackHelpText,
|
|
43866
|
+
getScheduleHelpText,
|
|
43867
|
+
getTeamConfigHelpText,
|
|
43868
|
+
getTeamHelpText,
|
|
43869
|
+
getUiHelpText,
|
|
43870
|
+
getVersionText,
|
|
43871
|
+
getWorkflowHelpText,
|
|
43872
|
+
listEvolutionJobs,
|
|
43873
|
+
parseCodexModelCatalog,
|
|
43874
|
+
parseImprovementEvalReplayAnalysis,
|
|
43875
|
+
parseInitFlags,
|
|
43876
|
+
parseSemanticKnowledgeAnalysis,
|
|
43877
|
+
parseSessionProposalAnalysis,
|
|
43878
|
+
parseSyncFlags,
|
|
43879
|
+
prepareDailyEvolutionSchedule,
|
|
43880
|
+
prepareTrajectoryImport,
|
|
43881
|
+
previewTrajectoryImport,
|
|
43882
|
+
readDailyEvolutionScheduleState,
|
|
43883
|
+
readDailyEvolutionScheduleStatus,
|
|
43884
|
+
readDailySessionProposalState,
|
|
43885
|
+
readEvoDevSettingsSnapshot,
|
|
43886
|
+
readEvolutionJob,
|
|
43887
|
+
readLatestEvolutionJob,
|
|
43888
|
+
readLazyEvolutionStatus,
|
|
43889
|
+
readSessionProposalBacklogStatus,
|
|
43890
|
+
readUiDashboardSnapshot,
|
|
43891
|
+
readUiSettingsSnapshot,
|
|
43892
|
+
recordDailyEvolutionRun,
|
|
43893
|
+
renderLaunchAgentPlist,
|
|
43894
|
+
renderUiDashboardHtml,
|
|
43895
|
+
resolveDailyScheduleStatePath,
|
|
43896
|
+
resolveDefaultCodeAgentSelections,
|
|
43897
|
+
resolveEvolutionJobPath,
|
|
43898
|
+
resolveInitProjectCandidates,
|
|
43899
|
+
resolveLatestEvolutionJobPath,
|
|
43900
|
+
resolveLaunchAgentPath,
|
|
43901
|
+
resolveLazyEvolutionStatePath,
|
|
43902
|
+
run,
|
|
43903
|
+
runAgentCommand,
|
|
43904
|
+
runAgentSpawnCommand,
|
|
43905
|
+
runConfigCommand,
|
|
43906
|
+
runConfigGetCommand,
|
|
43907
|
+
runConfigSetCommand,
|
|
43908
|
+
runDaemonCommand,
|
|
43909
|
+
runDailySessionProposalScan,
|
|
43910
|
+
runDoctor,
|
|
43911
|
+
runEvoCommand,
|
|
43912
|
+
runHookCommand,
|
|
43913
|
+
runInit,
|
|
43914
|
+
runKnowledgeCommand,
|
|
43915
|
+
runLazyEvolutionFallback,
|
|
43916
|
+
runLearnCommand,
|
|
43917
|
+
runMcpCommand,
|
|
43918
|
+
runObservabilityCommand,
|
|
43919
|
+
runPackCommand,
|
|
43920
|
+
runPendingImprovementEvaluations,
|
|
43921
|
+
runPluginCommand,
|
|
43922
|
+
runRepoProposalApplication,
|
|
43923
|
+
runScheduleCommand,
|
|
43924
|
+
runSyncCommand,
|
|
43925
|
+
runTeamCommand,
|
|
43926
|
+
runTraceCommand,
|
|
43927
|
+
runTrajectoryImportCommand,
|
|
43928
|
+
runUiCommand,
|
|
43929
|
+
runWorkflowCommand,
|
|
43930
|
+
scanSessionRepoProposals,
|
|
43931
|
+
shouldRunLazyEvolutionFallback,
|
|
43932
|
+
shouldRunPostCommandMaintenance,
|
|
43933
|
+
updateEvoDevSetting,
|
|
43934
|
+
updateUiEvolutionScheduler,
|
|
43935
|
+
updateUiSetting
|
|
43810
43936
|
};
|