@kenkaiiii/ggcoder 4.10.1 → 4.10.2
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/app-sidecar.d.ts +2 -0
- package/dist/app-sidecar.d.ts.map +1 -0
- package/dist/app-sidecar.js +848 -0
- package/dist/app-sidecar.js.map +1 -0
- package/dist/core/agent-session.d.ts +94 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +313 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-providers.d.ts +18 -0
- package/dist/core/auth-providers.d.ts.map +1 -0
- package/dist/core/auth-providers.js +71 -0
- package/dist/core/auth-providers.js.map +1 -0
- package/dist/core/event-bus.d.ts +5 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +1 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/project-discovery.d.ts +41 -0
- package/dist/core/project-discovery.d.ts.map +1 -0
- package/dist/core/project-discovery.js +439 -0
- package/dist/core/project-discovery.js.map +1 -0
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/tasks.d.ts +1 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.js +3 -2
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +60 -8
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/terminal-history-repaint.test.d.ts +2 -0
- package/dist/ui/terminal-history-repaint.test.d.ts.map +1 -0
- package/dist/ui/terminal-history-repaint.test.js +73 -0
- package/dist/ui/terminal-history-repaint.test.js.map +1 -0
- package/dist/ui/terminal-history.d.ts +1 -0
- package/dist/ui/terminal-history.d.ts.map +1 -1
- package/dist/ui/terminal-history.js +31 -2
- package/dist/ui/terminal-history.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-sidecar.js","sourceRoot":"","sources":["../src/app-sidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,GACP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,aAAa,GAAe;IAChC,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,UAAU;IACV,SAAS;IACT,UAAU;IACV,YAAY;CACb,CAAC;AAgBF,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC9F,OAAO;YACL,YAAY,EACV,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC7D,CAAC,CAAC,GAAG,CAAC,YAAY;gBAClB,CAAC,CAAC,mBAAmB,EAAE;SAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAqB;IAClD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAiBD,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,WAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,4EAA4E;QAC5E,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;QACnE,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,+BAA+B,CAAC;QAAE,OAAO,OAAO,CAAC;IAClE,IAAI,CAAC,CAAC,UAAU,CAAC,oCAAoC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,IAAI,CAAC,CAAC,UAAU,CAAC,gDAAgD,CAAC;QAAE,OAAO,aAAa,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,IAAiB,EACjB,SAAmB,EACnB,UAA8B;IAE9B,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE;SAChF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC9B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3D,CAAC;AAOD,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,0EAA0E;IAC1E,+DAA+D;IAC/D,wDAAwD;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,WAAW,CAAC;IAEzB,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACnE,UAAU,CAAC,UAAU,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAElB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,SAAS,GAAa,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC1D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7E,MAAM,aAAa,GAA8B,KAAK,CAAC,eAAe;QACpE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IAEd,8EAA8E;IAC9E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;QAC5C,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,2EAA2E;IAC3E,mEAAmE;IACnE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;IAErE,IAAI,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;QAC/B,QAAQ;QACR,KAAK;QACL,GAAG;QACH,aAAa;QACb,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,yEAAyE;QACzE,sEAAsE;QACtE,oDAAoD;QACpD,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5B,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;YACrC,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACjC,wEAAwE;YACxE,gEAAgE;YAChE,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,0GAA0G,CAAC;QACpH,CAAC;KACF,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3B,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtE,wEAAwE;IACxE,uEAAuE;IACvE,mCAAmC;IACnC,IAAI,SAAS,GAAkB,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACzE,SAAS,oBAAoB;QAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,4EAA4E;IAC5E,8DAA8D;IAC9D,SAAS,YAAY;QAKnB,OAAO;YACL,aAAa,EAAE,oBAAoB,EAAE;YACrC,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,uBAAuB,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACjC,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAC9F,CAAC;IACF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,+EAA+E;IAC/E,+EAA+E;IAC/E,CAAC;QACC,MAAM,UAAU,GAAG,OAAO;aACvB,WAAW,EAAE;aACb,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC;YACf,cAAc,GAAG,IAAI,CAAC;YACtB,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,IAAI,KAAK;oBAAE,SAAS,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,oDAAoD;IACpD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,WAAW,GAAoC,IAAI,CAAC;IAExD,SAAS,aAAa;QACpB,OAAO;YACL,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC;YAClD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC;YAC5D,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CACxB,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBAC9B,WAAW,GAAG,OAAO,CAAC;gBACtB,SAAS,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC;SACL,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,iBAAiB;QAG9B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC;YACJ,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;SAC/C,CAAC,CAAC,CACJ,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,4DAA4D;IAC5D,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;IAEpB,SAAS,QAAQ,CAAC,GAAyB;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC,CAAC;YAChD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,IAAI,CAAC,GAAwB,EAAE,MAAc,EAAE,IAAa;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;YACpB,cAAc,EAAE,kBAAkB;YAClC,6BAA6B,EAAE,GAAG;SACnC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QAEnC,8DAA8D;QAC9D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,6BAA6B,EAAE,GAAG;gBAClC,8BAA8B,EAAE,oBAAoB;gBACpD,8BAA8B,EAAE,cAAc;aAC/C,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;gBACb,GAAG,EAAE;gBACL,OAAO;gBACP,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,IAAI;gBACjD,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC;gBAC1E,GAAG,YAAY,EAAE;aAClB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,UAAU,EAAE,YAAY;gBACxB,6BAA6B,EAAE,GAAG;aACnC,CAAC,CAAC;YACH,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAc,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CACP,SAAS,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACJ,GAAG,EAAE;oBACL,OAAO;oBACP,aAAa,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,IAAI;oBACjD,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC;oBAC1E,GAAG,YAAY,EAAE;iBAClB;aACF,CAAC,MAAM,CACT,CAAC;YACF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;YACpE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,aAAa,CAAC,SAAS,CAAC,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC5C,2EAA2E;YAC3E,4EAA4E;YAC5E,0DAA0D;YAC1D,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,CAAC,GAAG,MAAM,eAAe,EAAE,CAAC;gBAClC,IAAI,UAAmB,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAEnE,CAAC;oBACF,UAAU,GAAG,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1F,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC;YACL,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC7C,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,YAAoB,CAAC;gBACzB,IAAI,CAAC;oBACH,YAAY,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA+B,CAAC,YAAY,IAAI,EAAE,CAAC;gBACnF,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBACtD,OAAO;gBACT,CAAC;gBACD,MAAM,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACnD,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3D,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;wBACb,KAAK,EAAE,+EAA+E;qBACvF,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;gBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC;oBACH,2CAA2C;oBAC3C,MAAM,MAAM,GAAG,MAAM,EAAE;yBACpB,IAAI,CAAC,GAAG,CAAC;yBACT,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;yBAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;oBACtB,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC,CAAC;wBACtE,OAAO;oBACT,CAAC;oBACD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC5C,wEAAwE;YACxE,KAAK,gBAAgB,EAAE;iBACpB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;iBAChD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE;oBACrD,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC1D,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACL,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC/B,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;iBAChD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC3C,wEAAwE;YACxE,sEAAsE;YACtE,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,+CAA+C;YAC/C,MAAM,OAAO,GAAG,OAAO;iBACpB,WAAW,EAAE;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,8DAA8D;gBAC9D,qEAAqE;gBACrE,uEAAuE;gBACvE,4CAA4C;gBAC5C,MAAM,IAAI,GACR,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;oBAC3B,CAAC,CAAC,CAAC,CAAC,OAAO;oBACX,CAAC,CAAC,CAAC,CAAC,OAAO;yBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC7E;yBACA,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC9D,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC5C,0EAA0E;YAC1E,wEAAwE;YACxE,mDAAmD;YACnD,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,MAAM,EAAE,UAAmB;iBAC5B,CAAC,CAAC,CAAC;gBACJ,MAAM,MAAM,GAAG,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBAC5C,iDAAiD;qBAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;qBAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACX,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,EAAc;oBACvB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,MAAM,EAAE,QAAiB;iBAC1B,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;YACL,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,IAAY,CAAC;gBACjB,IAAI,WAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqD,CAAC;oBACjF,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACvB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,wEAAwE;oBACxE,qEAAqE;oBACrE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;wBAC5E,OAAO;oBACT,CAAC;oBACD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACzC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC/B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjC,IAAI,CAAC;oBACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,qEAAqE;wBACrE,qEAAqE;wBACrE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;wBAC5D,MAAM,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACN,mEAAmE;wBACnE,iEAAiE;wBACjE,gEAAgE;wBAChE,qDAAqD;wBACrD,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;oBAChC,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5D,CAAC;wBAAS,CAAC;oBACT,OAAO,GAAG,KAAK,CAAC;oBAChB,sEAAsE;oBACtE,gEAAgE;oBAChE,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC3D,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACzB,oEAAoE;oBACpE,8BAA8B;oBAC9B,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBACzD,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;oBACpC,oEAAoE;oBACpE,uDAAuD;oBACvD,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,cAAc,GAAG,IAAI,CAAC;wBACtB,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;4BAC1C,IAAI,KAAK;gCAAE,SAAS,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBACnD,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,QAAQ,GAAe,EAAE,CAAC;gBAChC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC9B,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;wBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC;gBACD,uEAAuE;gBACvE,0CAA0C;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7E,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,EAAE,CAAC;YACL,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1C,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,OAAe,CAAC;gBACpB,IAAI,CAAC;oBACH,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChE,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,OAAO,EAAE,EAAE,CAAC,CAAC;oBACvD,OAAO;gBACT,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtD,wEAAwE;gBACxE,sEAAsE;gBACtE,mEAAmE;gBACnE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,SAAS,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;oBAClF,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,MAAM,OAAO,GAAG;oBACd,aAAa,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,IAAI;oBACjD,uBAAuB,EAAE,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;iBAChF,CAAC;gBACF,yEAAyE;gBACzE,+DAA+D;gBAC/D,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;gBACtC,wEAAwE;gBACxE,mDAAmD;gBACnD,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACzC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,EAAU,CAAC;gBACf,IAAI,CAAC;oBACH,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC,EAAE,IAAI,EAAE,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBACxD,0EAA0E;gBAC1E,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG;gBACd,aAAa,EAAE,IAAI,IAAI,IAAI;gBAC3B,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC;aAC3E,CAAC;YACF,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9B,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,OAAO,GAAG,KAAK,CAAC;YAChB,0EAA0E;YAC1E,gBAAgB;YAChB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAChD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,KAAK,OAAO;iBACT,UAAU,EAAE;iBACZ,IAAI,CAAC,GAAG,EAAE;gBACT,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;YACL,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC/C,KAAK,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAChD,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwC,CAAC;oBACpE,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC/B,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;oBACpE,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBACjD,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAqB;oBAC9B,WAAW,EAAE,GAAG;oBAChB,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,QAAQ;oBACjE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC3C,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACrD,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACvE,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBACD,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;gBACD,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnC,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,IAAI,KAAuB,CAAC;wBAC5B,IAAI,UAAU,GAAG,QAAQ,CAAC;wBAC1B,IAAI,QAAQ,KAAK,WAAW;4BAAE,KAAK,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;6BAC1D,IAAI,QAAQ,KAAK,QAAQ;4BAAE,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;6BACzD,IAAI,QAAQ,KAAK,QAAQ;4BAAE,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;6BACzD,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;4BACjC,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;4BAC5B,UAAU,GAAG,kBAAkB,CAAC;wBAClC,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;wBAC3D,CAAC;wBACD,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;wBAC7C,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,SAAS,CAAC,YAAY,EAAE;4BACtB,QAAQ;4BACR,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;yBAC1D,CAAC,CAAC;oBACL,CAAC;4BAAS,CAAC;wBACT,aAAa,GAAG,KAAK,CAAC;wBACtB,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YACpD,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3D,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;oBACzD,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAChD,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpC,IAAI,QAAgB,CAAC;gBACrB,IAAI,CAAC;oBACH,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACvE,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACtC,yEAAyE;gBACzE,yDAAyD;gBACzD,IAAI,QAAQ,KAAK,UAAU;oBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;gBAC7E,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;QAC7C,oDAAoD;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { type Message, type Provider, type ThinkingLevel } from "@kenkaiiii/gg-a
|
|
|
2
2
|
import { EventBus } from "./event-bus.js";
|
|
3
3
|
import { SlashCommandRegistry } from "./slash-commands.js";
|
|
4
4
|
import { type BranchInfo } from "./session-manager.js";
|
|
5
|
+
import type { BackgroundProcess } from "./process-manager.js";
|
|
5
6
|
export interface AgentSessionOptions {
|
|
6
7
|
provider: Provider;
|
|
7
8
|
model: string;
|
|
@@ -30,6 +31,14 @@ export interface AgentSessionOptions {
|
|
|
30
31
|
* resumable identity.
|
|
31
32
|
*/
|
|
32
33
|
transient?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Plan-mode callbacks. When provided, the `enter_plan`/`exit_plan` tools are
|
|
36
|
+
* registered and the session manages plan-mode restrictions + system-prompt
|
|
37
|
+
* rebuilds. Hosts (e.g. the gg-app sidecar) use these to surface plan-mode
|
|
38
|
+
* UI. Omitted by callers that don't want plan mode (CLI wires its own).
|
|
39
|
+
*/
|
|
40
|
+
onEnterPlan?: (reason?: string) => void | Promise<void>;
|
|
41
|
+
onExitPlan?: (planPath: string) => Promise<string>;
|
|
33
42
|
}
|
|
34
43
|
export interface AgentSessionState {
|
|
35
44
|
provider: Provider;
|
|
@@ -38,6 +47,7 @@ export interface AgentSessionState {
|
|
|
38
47
|
sessionId: string;
|
|
39
48
|
sessionPath: string;
|
|
40
49
|
messageCount: number;
|
|
50
|
+
planMode: boolean;
|
|
41
51
|
}
|
|
42
52
|
export declare class AgentSession {
|
|
43
53
|
readonly eventBus: EventBus;
|
|
@@ -50,6 +60,20 @@ export declare class AgentSession {
|
|
|
50
60
|
private tools;
|
|
51
61
|
private skills;
|
|
52
62
|
private cacheKeyLogged;
|
|
63
|
+
private hookStats;
|
|
64
|
+
private hookText;
|
|
65
|
+
private hookConsecutiveFailures;
|
|
66
|
+
private hookMaxSignatureRepeats;
|
|
67
|
+
private hookMaxSameFileEdits;
|
|
68
|
+
private hookSignatureCounts;
|
|
69
|
+
private hookFileEditCounts;
|
|
70
|
+
private hookToolCalls;
|
|
71
|
+
private idealReviewInjected;
|
|
72
|
+
private loopBreakInjected;
|
|
73
|
+
private regroundingInjected;
|
|
74
|
+
private compactionOccurred;
|
|
75
|
+
private originalRequest;
|
|
76
|
+
private userQueue;
|
|
53
77
|
private processManager?;
|
|
54
78
|
private lspManager?;
|
|
55
79
|
private mcpManager?;
|
|
@@ -60,6 +84,8 @@ export declare class AgentSession {
|
|
|
60
84
|
private maxTokens;
|
|
61
85
|
private thinkingLevel?;
|
|
62
86
|
private customSystemPrompt?;
|
|
87
|
+
/** Shared with the tool layer so plan-mode restrictions read live state. */
|
|
88
|
+
private planModeRef;
|
|
63
89
|
private sessionId;
|
|
64
90
|
private sessionPath;
|
|
65
91
|
private lastPersistedIndex;
|
|
@@ -72,6 +98,44 @@ export declare class AgentSession {
|
|
|
72
98
|
* Process user input. Handles slash commands or runs agent loop.
|
|
73
99
|
*/
|
|
74
100
|
prompt(content: string): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Prompt with multimodal attachments (images / videos) alongside optional
|
|
103
|
+
* text. Images and videos become native content blocks the model can see;
|
|
104
|
+
* non-media files are surfaced as a text note with their saved path so the
|
|
105
|
+
* agent can open them with its tools. Slash-command parsing is skipped —
|
|
106
|
+
* attachments are always a direct conversational turn.
|
|
107
|
+
*/
|
|
108
|
+
promptWithAttachments(text: string, attachments: Array<{
|
|
109
|
+
kind: "image" | "video" | "file";
|
|
110
|
+
mediaType: string;
|
|
111
|
+
data: string;
|
|
112
|
+
name: string;
|
|
113
|
+
path?: string;
|
|
114
|
+
}>): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Reset per-run self-correction hook state. Mirrors the TUI's run_start
|
|
117
|
+
* resets so each run evaluates the hooks from a clean slate. `originalRequest`
|
|
118
|
+
* is the verbatim user ask, pinned for post-compaction re-grounding.
|
|
119
|
+
*/
|
|
120
|
+
private resetHookState;
|
|
121
|
+
/**
|
|
122
|
+
* Fold one agent event into the hook stat accumulators. Pure bookkeeping —
|
|
123
|
+
* the same signals the TUI's useAgentLoop collects, so the loop-break and
|
|
124
|
+
* ideal-review decisions match across the CLI and the app.
|
|
125
|
+
*/
|
|
126
|
+
private trackHookEvent;
|
|
127
|
+
/**
|
|
128
|
+
* Mid-loop steering hook: fires the loop-breaker when the agent looks stuck,
|
|
129
|
+
* then post-compaction re-grounding. At most one of each per run. Mirrors the
|
|
130
|
+
* TUI's getSteeringMessages ordering (minus user steering, which the app
|
|
131
|
+
* delivers as normal prompts).
|
|
132
|
+
*/
|
|
133
|
+
private getHookSteeringMessages;
|
|
134
|
+
/**
|
|
135
|
+
* Pre-stop follow-up hook: runs the ideal review once, when the agent would
|
|
136
|
+
* otherwise finish and the change set is substantial enough to warrant it.
|
|
137
|
+
*/
|
|
138
|
+
private getHookFollowUpMessages;
|
|
75
139
|
/** Auto-compact if needed, run agent loop with auth retry, and persist messages. */
|
|
76
140
|
private runLoop;
|
|
77
141
|
switchModel(provider: string, model: string): Promise<void>;
|
|
@@ -99,7 +163,37 @@ export declare class AgentSession {
|
|
|
99
163
|
*/
|
|
100
164
|
listBranches(): Promise<BranchInfo[]>;
|
|
101
165
|
getState(): AgentSessionState;
|
|
166
|
+
getPlanMode(): boolean;
|
|
167
|
+
/** Queue a user message to be injected mid-run as steering. Returns the new
|
|
168
|
+
* queue length. No-op semantics are the caller's concern. */
|
|
169
|
+
queueMessage(text: string): number;
|
|
170
|
+
/** Number of messages currently queued. */
|
|
171
|
+
getQueuedCount(): number;
|
|
172
|
+
/** Clear the queue, returning the combined text (to restore to the composer). */
|
|
173
|
+
drainQueue(): string;
|
|
174
|
+
/** Snapshot of background processes (bash run_in_background), newest-state. */
|
|
175
|
+
listBackgroundProcesses(): BackgroundProcess[];
|
|
176
|
+
/** Stop a background process by id. Returns a human-readable status string. */
|
|
177
|
+
killBackgroundProcess(id: string): Promise<string>;
|
|
178
|
+
/**
|
|
179
|
+
* Toggle plan mode: flips the shared ref (so tools enforce read-only
|
|
180
|
+
* restrictions) and rebuilds the system prompt in place so the model is told
|
|
181
|
+
* about the mode change on its next turn. No-op when a custom system prompt
|
|
182
|
+
* is in force (the host owns the prompt then).
|
|
183
|
+
*/
|
|
184
|
+
setPlanMode(active: boolean): Promise<void>;
|
|
102
185
|
getMessages(): Message[];
|
|
186
|
+
/**
|
|
187
|
+
* Generate a short LLM session title from the conversation so far (first user
|
|
188
|
+
* message + first assistant reply). Best-effort; returns null on failure or
|
|
189
|
+
* when there's no user message yet. Uses the cheapest model for the provider.
|
|
190
|
+
*/
|
|
191
|
+
generateTitle(): Promise<string | null>;
|
|
192
|
+
/** Current reasoning/thinking level, or undefined when thinking is off. */
|
|
193
|
+
getThinkingLevel(): ThinkingLevel | undefined;
|
|
194
|
+
/** Set the reasoning/thinking level (undefined turns thinking off). Takes
|
|
195
|
+
* effect on the next prompt, since the in-flight loop reads it at start. */
|
|
196
|
+
setThinkingLevel(level: ThinkingLevel | undefined): void;
|
|
103
197
|
/** Replace the abort signal (e.g. after cancellation). */
|
|
104
198
|
setSignal(signal: AbortSignal): void;
|
|
105
199
|
private getPromptCacheKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { agentLoop, isAbortError } from "@kenkaiiii/gg-agent";
|
|
2
|
-
import { ProviderError } from "@kenkaiiii/gg-ai";
|
|
2
|
+
import { ProviderError, } from "@kenkaiiii/gg-ai";
|
|
3
3
|
import { EventBus } from "./event-bus.js";
|
|
4
4
|
import { SlashCommandRegistry, createBuiltinCommands, } from "./slash-commands.js";
|
|
5
5
|
import { PROMPT_COMMANDS, getPromptCommand } from "./prompt-commands.js";
|
|
@@ -20,6 +20,10 @@ import { MCPClientManager, getMCPServers, getAllMcpServers } from "./mcp/index.j
|
|
|
20
20
|
import { log } from "./logger.js";
|
|
21
21
|
import { setEstimatorModel } from "./compaction/token-estimator.js";
|
|
22
22
|
import { discoverAgents } from "./agents.js";
|
|
23
|
+
import { generateSessionTitle } from "../utils/session-title.js";
|
|
24
|
+
import { evaluateIdealReview, buildIdealReviewMessage, } from "./ideal-review.js";
|
|
25
|
+
import { evaluateLoopBreak, buildLoopBreakMessage, toolCallSignature, detectTextRepetition, } from "./loop-breaker.js";
|
|
26
|
+
import { buildRegroundingMessage } from "./regrounding.js";
|
|
23
27
|
import crypto from "node:crypto";
|
|
24
28
|
import fs from "node:fs/promises";
|
|
25
29
|
import path from "node:path";
|
|
@@ -35,6 +39,34 @@ export class AgentSession {
|
|
|
35
39
|
tools = [];
|
|
36
40
|
skills = [];
|
|
37
41
|
cacheKeyLogged = false;
|
|
42
|
+
// ── Self-correction hook state (mirrors the TUI's useAgentLoop refs) ──
|
|
43
|
+
// Reset at the start of every run; observed from the event stream; read by
|
|
44
|
+
// the loop-break (mid-loop) and ideal-review (pre-stop) callbacks.
|
|
45
|
+
hookStats = {
|
|
46
|
+
changedLines: 0,
|
|
47
|
+
toolCalls: 0,
|
|
48
|
+
toolFailures: 0,
|
|
49
|
+
turns: 0,
|
|
50
|
+
writeCalls: 0,
|
|
51
|
+
editCalls: 0,
|
|
52
|
+
bashCalls: 0,
|
|
53
|
+
};
|
|
54
|
+
hookText = "";
|
|
55
|
+
hookConsecutiveFailures = 0;
|
|
56
|
+
hookMaxSignatureRepeats = 0;
|
|
57
|
+
hookMaxSameFileEdits = 0;
|
|
58
|
+
hookSignatureCounts = new Map();
|
|
59
|
+
hookFileEditCounts = new Map();
|
|
60
|
+
hookToolCalls = new Map();
|
|
61
|
+
idealReviewInjected = false;
|
|
62
|
+
loopBreakInjected = false;
|
|
63
|
+
regroundingInjected = false;
|
|
64
|
+
compactionOccurred = false;
|
|
65
|
+
originalRequest = "";
|
|
66
|
+
// Messages queued by the user while a run is in flight. Drained at the
|
|
67
|
+
// mid-loop steering boundary (user steering wins over the hooks), mirroring
|
|
68
|
+
// the TUI's getSteeringMessages.
|
|
69
|
+
userQueue = [];
|
|
38
70
|
processManager;
|
|
39
71
|
lspManager;
|
|
40
72
|
mcpManager;
|
|
@@ -45,6 +77,8 @@ export class AgentSession {
|
|
|
45
77
|
maxTokens;
|
|
46
78
|
thinkingLevel;
|
|
47
79
|
customSystemPrompt;
|
|
80
|
+
/** Shared with the tool layer so plan-mode restrictions read live state. */
|
|
81
|
+
planModeRef = { current: false };
|
|
48
82
|
sessionId = "";
|
|
49
83
|
sessionPath = "";
|
|
50
84
|
lastPersistedIndex = 0;
|
|
@@ -96,6 +130,15 @@ export class AgentSession {
|
|
|
96
130
|
// Lazy — sessionId isn't assigned yet when createTools() runs, so we
|
|
97
131
|
// must defer reading the cache key until the sub-agent actually fires.
|
|
98
132
|
getCacheKey: () => this.getPromptCacheKey(),
|
|
133
|
+
// Plan mode: only wired when the host supplies callbacks. The ref is
|
|
134
|
+
// shared so bash/edit/write enforce read-only restrictions live.
|
|
135
|
+
...(this.opts.onEnterPlan || this.opts.onExitPlan
|
|
136
|
+
? {
|
|
137
|
+
planModeRef: this.planModeRef,
|
|
138
|
+
onEnterPlan: this.opts.onEnterPlan,
|
|
139
|
+
onExitPlan: this.opts.onExitPlan,
|
|
140
|
+
}
|
|
141
|
+
: {}),
|
|
99
142
|
});
|
|
100
143
|
this.tools = tools;
|
|
101
144
|
this.processManager = processManager;
|
|
@@ -228,6 +271,176 @@ export class AgentSession {
|
|
|
228
271
|
this.lastPersistedIndex = this.messages.length;
|
|
229
272
|
await this.runLoop();
|
|
230
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Prompt with multimodal attachments (images / videos) alongside optional
|
|
276
|
+
* text. Images and videos become native content blocks the model can see;
|
|
277
|
+
* non-media files are surfaced as a text note with their saved path so the
|
|
278
|
+
* agent can open them with its tools. Slash-command parsing is skipped —
|
|
279
|
+
* attachments are always a direct conversational turn.
|
|
280
|
+
*/
|
|
281
|
+
async promptWithAttachments(text, attachments) {
|
|
282
|
+
const parts = [];
|
|
283
|
+
const fileNotes = [];
|
|
284
|
+
for (const a of attachments) {
|
|
285
|
+
if (a.kind === "image") {
|
|
286
|
+
parts.push({ type: "image", mediaType: a.mediaType, data: a.data });
|
|
287
|
+
}
|
|
288
|
+
else if (a.kind === "video") {
|
|
289
|
+
parts.push({ type: "video", mediaType: a.mediaType, data: a.data });
|
|
290
|
+
}
|
|
291
|
+
else if (a.path) {
|
|
292
|
+
fileNotes.push(`- ${a.name} (saved at ${a.path})`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const textParts = [];
|
|
296
|
+
if (text.trim())
|
|
297
|
+
textParts.push(text.trim());
|
|
298
|
+
if (fileNotes.length > 0) {
|
|
299
|
+
textParts.push(`Attached files (inspect with your tools):\n${fileNotes.join("\n")}`);
|
|
300
|
+
}
|
|
301
|
+
if (textParts.length > 0)
|
|
302
|
+
parts.unshift({ type: "text", text: textParts.join("\n\n") });
|
|
303
|
+
if (parts.length === 0)
|
|
304
|
+
return;
|
|
305
|
+
const userMessage = { role: "user", content: parts };
|
|
306
|
+
this.messages.push(userMessage);
|
|
307
|
+
await this.persistMessage(userMessage);
|
|
308
|
+
this.lastPersistedIndex = this.messages.length;
|
|
309
|
+
await this.runLoop();
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Reset per-run self-correction hook state. Mirrors the TUI's run_start
|
|
313
|
+
* resets so each run evaluates the hooks from a clean slate. `originalRequest`
|
|
314
|
+
* is the verbatim user ask, pinned for post-compaction re-grounding.
|
|
315
|
+
*/
|
|
316
|
+
resetHookState(originalRequest) {
|
|
317
|
+
this.hookStats = {
|
|
318
|
+
changedLines: 0,
|
|
319
|
+
toolCalls: 0,
|
|
320
|
+
toolFailures: 0,
|
|
321
|
+
turns: 0,
|
|
322
|
+
writeCalls: 0,
|
|
323
|
+
editCalls: 0,
|
|
324
|
+
bashCalls: 0,
|
|
325
|
+
};
|
|
326
|
+
this.hookText = "";
|
|
327
|
+
this.hookConsecutiveFailures = 0;
|
|
328
|
+
this.hookMaxSignatureRepeats = 0;
|
|
329
|
+
this.hookMaxSameFileEdits = 0;
|
|
330
|
+
this.hookSignatureCounts.clear();
|
|
331
|
+
this.hookFileEditCounts.clear();
|
|
332
|
+
this.hookToolCalls.clear();
|
|
333
|
+
this.idealReviewInjected = false;
|
|
334
|
+
this.loopBreakInjected = false;
|
|
335
|
+
this.regroundingInjected = false;
|
|
336
|
+
this.compactionOccurred = false;
|
|
337
|
+
this.originalRequest = originalRequest;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Fold one agent event into the hook stat accumulators. Pure bookkeeping —
|
|
341
|
+
* the same signals the TUI's useAgentLoop collects, so the loop-break and
|
|
342
|
+
* ideal-review decisions match across the CLI and the app.
|
|
343
|
+
*/
|
|
344
|
+
trackHookEvent(event) {
|
|
345
|
+
switch (event.type) {
|
|
346
|
+
case "text_delta":
|
|
347
|
+
this.hookText += event.text;
|
|
348
|
+
break;
|
|
349
|
+
case "tool_call_start":
|
|
350
|
+
this.hookToolCalls.set(event.toolCallId, { name: event.name, args: event.args ?? {} });
|
|
351
|
+
break;
|
|
352
|
+
case "tool_call_end": {
|
|
353
|
+
const call = this.hookToolCalls.get(event.toolCallId);
|
|
354
|
+
const name = call?.name ?? "";
|
|
355
|
+
const args = call?.args;
|
|
356
|
+
this.hookStats.toolCalls += 1;
|
|
357
|
+
if (event.isError)
|
|
358
|
+
this.hookStats.toolFailures += 1;
|
|
359
|
+
if (name === "write")
|
|
360
|
+
this.hookStats.writeCalls += 1;
|
|
361
|
+
if (name === "edit")
|
|
362
|
+
this.hookStats.editCalls += 1;
|
|
363
|
+
if (name === "bash")
|
|
364
|
+
this.hookStats.bashCalls += 1;
|
|
365
|
+
this.hookConsecutiveFailures = event.isError ? this.hookConsecutiveFailures + 1 : 0;
|
|
366
|
+
const sig = toolCallSignature(name, args);
|
|
367
|
+
const sigNext = (this.hookSignatureCounts.get(sig) ?? 0) + 1;
|
|
368
|
+
this.hookSignatureCounts.set(sig, sigNext);
|
|
369
|
+
if (sigNext > this.hookMaxSignatureRepeats)
|
|
370
|
+
this.hookMaxSignatureRepeats = sigNext;
|
|
371
|
+
if ((name === "edit" || name === "write") && args) {
|
|
372
|
+
const filePath = args.file_path;
|
|
373
|
+
if (typeof filePath === "string") {
|
|
374
|
+
const fileNext = (this.hookFileEditCounts.get(filePath) ?? 0) + 1;
|
|
375
|
+
this.hookFileEditCounts.set(filePath, fileNext);
|
|
376
|
+
if (fileNext > this.hookMaxSameFileEdits)
|
|
377
|
+
this.hookMaxSameFileEdits = fileNext;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (name === "edit" && !event.isError) {
|
|
381
|
+
const diff = event.details?.diff ?? event.result;
|
|
382
|
+
const added = (diff.match(/^\+[^+]/gm) ?? []).length;
|
|
383
|
+
const removed = (diff.match(/^-[^-]/gm) ?? []).length;
|
|
384
|
+
this.hookStats.changedLines += added + removed;
|
|
385
|
+
}
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
case "turn_end":
|
|
389
|
+
this.hookStats.turns = event.turn;
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Mid-loop steering hook: fires the loop-breaker when the agent looks stuck,
|
|
395
|
+
* then post-compaction re-grounding. At most one of each per run. Mirrors the
|
|
396
|
+
* TUI's getSteeringMessages ordering (minus user steering, which the app
|
|
397
|
+
* delivers as normal prompts).
|
|
398
|
+
*/
|
|
399
|
+
getHookSteeringMessages() {
|
|
400
|
+
// User steering wins: drain any messages queued during this run first so the
|
|
401
|
+
// agent sees them mid-loop instead of after it stops.
|
|
402
|
+
if (this.userQueue.length > 0) {
|
|
403
|
+
const merged = this.userQueue.splice(0).join("\n\n");
|
|
404
|
+
return [{ role: "user", content: merged }];
|
|
405
|
+
}
|
|
406
|
+
if (!this.settingsManager.get("idealReviewEnabled"))
|
|
407
|
+
return null;
|
|
408
|
+
if (!this.loopBreakInjected) {
|
|
409
|
+
const decision = evaluateLoopBreak({
|
|
410
|
+
consecutiveFailures: this.hookConsecutiveFailures,
|
|
411
|
+
maxSignatureRepeats: this.hookMaxSignatureRepeats,
|
|
412
|
+
maxSameFileEdits: this.hookMaxSameFileEdits,
|
|
413
|
+
textRepetitionDetected: detectTextRepetition(this.hookText),
|
|
414
|
+
});
|
|
415
|
+
if (decision.shouldBreak) {
|
|
416
|
+
this.loopBreakInjected = true;
|
|
417
|
+
this.eventBus.emit("hook", { kind: "loop_break" });
|
|
418
|
+
return [buildLoopBreakMessage(decision.reasons)];
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
if (!this.regroundingInjected && this.compactionOccurred) {
|
|
422
|
+
this.regroundingInjected = true;
|
|
423
|
+
this.eventBus.emit("hook", { kind: "regrounding" });
|
|
424
|
+
return [buildRegroundingMessage(this.originalRequest)];
|
|
425
|
+
}
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Pre-stop follow-up hook: runs the ideal review once, when the agent would
|
|
430
|
+
* otherwise finish and the change set is substantial enough to warrant it.
|
|
431
|
+
*/
|
|
432
|
+
getHookFollowUpMessages() {
|
|
433
|
+
if (!this.settingsManager.get("idealReviewEnabled"))
|
|
434
|
+
return null;
|
|
435
|
+
if (this.idealReviewInjected)
|
|
436
|
+
return null;
|
|
437
|
+
const decision = evaluateIdealReview(this.hookStats);
|
|
438
|
+
if (!decision.shouldReview)
|
|
439
|
+
return null;
|
|
440
|
+
this.idealReviewInjected = true;
|
|
441
|
+
this.eventBus.emit("hook", { kind: "ideal" });
|
|
442
|
+
return [buildIdealReviewMessage(decision.reasons)];
|
|
443
|
+
}
|
|
231
444
|
/** Auto-compact if needed, run agent loop with auth retry, and persist messages. */
|
|
232
445
|
async runLoop() {
|
|
233
446
|
// One-shot cache-key marker per session so turn_end cacheRead numbers
|
|
@@ -242,6 +455,11 @@ export class AgentSession {
|
|
|
242
455
|
transient: String(!!this.opts.transient),
|
|
243
456
|
});
|
|
244
457
|
}
|
|
458
|
+
// Reset self-correction hook state for this run; pin the latest user message
|
|
459
|
+
// as the verbatim original request for post-compaction re-grounding.
|
|
460
|
+
const lastUser = [...this.messages].reverse().find((m) => m.role === "user");
|
|
461
|
+
const originalRequest = typeof lastUser?.content === "string" ? lastUser.content : "";
|
|
462
|
+
this.resetHookState(originalRequest);
|
|
245
463
|
// Resolve OAuth credentials and run agent loop.
|
|
246
464
|
// On 401, force-refresh the token and retry once — the provider may have
|
|
247
465
|
// revoked the token server-side before the stored expiry (e.g. after a restart).
|
|
@@ -257,6 +475,8 @@ export class AgentSession {
|
|
|
257
475
|
const threshold = this.settingsManager.get("compactThreshold");
|
|
258
476
|
if (shouldCompact(this.messages, contextWindow, threshold)) {
|
|
259
477
|
await this.compact(creds);
|
|
478
|
+
// Re-grounding hook keys off this — the context was just summarized.
|
|
479
|
+
this.compactionOccurred = true;
|
|
260
480
|
}
|
|
261
481
|
}
|
|
262
482
|
const userAgent = this.provider === "anthropic" ? await getClaudeCliUserAgent() : undefined;
|
|
@@ -289,8 +509,13 @@ export class AgentSession {
|
|
|
289
509
|
// clearToolUses disabled — causes model to output unsolicited context summaries
|
|
290
510
|
// Single tool result shouldn't exceed 30% of context window (in chars)
|
|
291
511
|
maxToolResultChars: Math.floor(getContextWindow(this.model, { provider: this.provider, accountId }) * 3.5 * 0.3),
|
|
512
|
+
// Self-correction hooks (same as the TUI): loop-break + re-grounding are
|
|
513
|
+
// polled mid-loop; the ideal review is polled when the agent would stop.
|
|
514
|
+
getSteeringMessages: () => this.getHookSteeringMessages(),
|
|
515
|
+
getFollowUpMessages: () => this.getHookFollowUpMessages(),
|
|
292
516
|
});
|
|
293
517
|
for await (const event of generator) {
|
|
518
|
+
this.trackHookEvent(event);
|
|
294
519
|
this.eventBus.forwardAgentEvent(event);
|
|
295
520
|
}
|
|
296
521
|
};
|
|
@@ -478,11 +703,98 @@ export class AgentSession {
|
|
|
478
703
|
sessionId: this.sessionId,
|
|
479
704
|
sessionPath: this.sessionPath,
|
|
480
705
|
messageCount: this.messages.length,
|
|
706
|
+
planMode: this.planModeRef.current,
|
|
481
707
|
};
|
|
482
708
|
}
|
|
709
|
+
getPlanMode() {
|
|
710
|
+
return this.planModeRef.current;
|
|
711
|
+
}
|
|
712
|
+
/** Queue a user message to be injected mid-run as steering. Returns the new
|
|
713
|
+
* queue length. No-op semantics are the caller's concern. */
|
|
714
|
+
queueMessage(text) {
|
|
715
|
+
this.userQueue.push(text);
|
|
716
|
+
return this.userQueue.length;
|
|
717
|
+
}
|
|
718
|
+
/** Number of messages currently queued. */
|
|
719
|
+
getQueuedCount() {
|
|
720
|
+
return this.userQueue.length;
|
|
721
|
+
}
|
|
722
|
+
/** Clear the queue, returning the combined text (to restore to the composer). */
|
|
723
|
+
drainQueue() {
|
|
724
|
+
return this.userQueue.splice(0).join("\n\n");
|
|
725
|
+
}
|
|
726
|
+
/** Snapshot of background processes (bash run_in_background), newest-state. */
|
|
727
|
+
listBackgroundProcesses() {
|
|
728
|
+
return this.processManager?.list() ?? [];
|
|
729
|
+
}
|
|
730
|
+
/** Stop a background process by id. Returns a human-readable status string. */
|
|
731
|
+
async killBackgroundProcess(id) {
|
|
732
|
+
if (!this.processManager)
|
|
733
|
+
return `No background process with id "${id}"`;
|
|
734
|
+
return this.processManager.stop(id);
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* Toggle plan mode: flips the shared ref (so tools enforce read-only
|
|
738
|
+
* restrictions) and rebuilds the system prompt in place so the model is told
|
|
739
|
+
* about the mode change on its next turn. No-op when a custom system prompt
|
|
740
|
+
* is in force (the host owns the prompt then).
|
|
741
|
+
*/
|
|
742
|
+
async setPlanMode(active) {
|
|
743
|
+
this.planModeRef.current = active;
|
|
744
|
+
if (this.customSystemPrompt)
|
|
745
|
+
return;
|
|
746
|
+
const rebuilt = await buildSystemPrompt(this.cwd, this.skills, active, undefined, this.tools.map((tool) => tool.name), undefined, this.provider);
|
|
747
|
+
if (this.messages[0]?.role === "system") {
|
|
748
|
+
this.messages[0] = { role: "system", content: rebuilt };
|
|
749
|
+
}
|
|
750
|
+
else {
|
|
751
|
+
this.messages.unshift({ role: "system", content: rebuilt });
|
|
752
|
+
}
|
|
753
|
+
}
|
|
483
754
|
getMessages() {
|
|
484
755
|
return this.messages;
|
|
485
756
|
}
|
|
757
|
+
/**
|
|
758
|
+
* Generate a short LLM session title from the conversation so far (first user
|
|
759
|
+
* message + first assistant reply). Best-effort; returns null on failure or
|
|
760
|
+
* when there's no user message yet. Uses the cheapest model for the provider.
|
|
761
|
+
*/
|
|
762
|
+
async generateTitle() {
|
|
763
|
+
const extractText = (content) => typeof content === "string"
|
|
764
|
+
? content
|
|
765
|
+
: content
|
|
766
|
+
.map((c) => c.type === "text" && "text" in c && typeof c.text === "string" ? c.text : "")
|
|
767
|
+
.join(" ");
|
|
768
|
+
const userMsg = this.messages.find((m) => m.role === "user");
|
|
769
|
+
const assistantMsg = this.messages.find((m) => m.role === "assistant");
|
|
770
|
+
const userText = userMsg ? extractText(userMsg.content) : "";
|
|
771
|
+
if (!userText.trim())
|
|
772
|
+
return null;
|
|
773
|
+
try {
|
|
774
|
+
const creds = await this.authStorage.resolveCredentials(this.provider);
|
|
775
|
+
const title = await generateSessionTitle({
|
|
776
|
+
provider: this.provider,
|
|
777
|
+
userMessage: userText,
|
|
778
|
+
assistantPreview: assistantMsg ? extractText(assistantMsg.content).slice(0, 200) : "",
|
|
779
|
+
apiKey: creds.accessToken,
|
|
780
|
+
baseUrl: this.baseUrl ?? creds.baseUrl,
|
|
781
|
+
accountId: creds.accountId,
|
|
782
|
+
});
|
|
783
|
+
return title || null;
|
|
784
|
+
}
|
|
785
|
+
catch {
|
|
786
|
+
return null;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
/** Current reasoning/thinking level, or undefined when thinking is off. */
|
|
790
|
+
getThinkingLevel() {
|
|
791
|
+
return this.thinkingLevel;
|
|
792
|
+
}
|
|
793
|
+
/** Set the reasoning/thinking level (undefined turns thinking off). Takes
|
|
794
|
+
* effect on the next prompt, since the in-flight loop reads it at start. */
|
|
795
|
+
setThinkingLevel(level) {
|
|
796
|
+
this.thinkingLevel = level;
|
|
797
|
+
}
|
|
486
798
|
/** Replace the abort signal (e.g. after cancellation). */
|
|
487
799
|
setSignal(signal) {
|
|
488
800
|
this.opts = { ...this.opts, signal };
|