@duetso/agent 0.1.53 → 0.1.54
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/README.md +13 -2
- package/dist/package.json +1 -1
- package/dist/src/cli/help.js +1 -1
- package/dist/src/cli/memory-db.d.ts.map +1 -1
- package/dist/src/cli/memory-db.js +14 -5
- package/dist/src/cli/memory-db.js.map +1 -1
- package/dist/src/cli/memory-tui.js +1 -1
- package/dist/src/cli/memory-tui.js.map +1 -1
- package/dist/src/cli/resume-hint.d.ts +1 -1
- package/dist/src/cli/resume-hint.d.ts.map +1 -1
- package/dist/src/cli/resume-hint.js +2 -2
- package/dist/src/cli/resume-hint.js.map +1 -1
- package/dist/src/cli/run.d.ts +1 -1
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +7 -6
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/memory/context-pack.d.ts +29 -0
- package/dist/src/memory/context-pack.d.ts.map +1 -0
- package/dist/src/memory/context-pack.js +40 -0
- package/dist/src/memory/context-pack.js.map +1 -0
- package/dist/src/memory/embedding-worker.d.ts +26 -0
- package/dist/src/memory/embedding-worker.d.ts.map +1 -0
- package/dist/src/memory/embedding-worker.js +145 -0
- package/dist/src/memory/embedding-worker.js.map +1 -0
- package/dist/src/memory/embedding.d.ts +59 -0
- package/dist/src/memory/embedding.d.ts.map +1 -0
- package/dist/src/memory/embedding.js +126 -0
- package/dist/src/memory/embedding.js.map +1 -0
- package/dist/src/memory/loader.d.ts +81 -0
- package/dist/src/memory/loader.d.ts.map +1 -0
- package/dist/src/memory/loader.js +162 -0
- package/dist/src/memory/loader.js.map +1 -0
- package/dist/src/memory/migrations.d.ts +54 -0
- package/dist/src/memory/migrations.d.ts.map +1 -0
- package/dist/src/memory/migrations.js +199 -0
- package/dist/src/memory/migrations.js.map +1 -0
- package/dist/src/memory/observational.d.ts +18 -0
- package/dist/src/memory/observational.d.ts.map +1 -1
- package/dist/src/memory/observational.js +63 -14
- package/dist/src/memory/observational.js.map +1 -1
- package/dist/src/memory/pglite.d.ts +5 -5
- package/dist/src/memory/pglite.d.ts.map +1 -1
- package/dist/src/memory/pglite.js +20 -6
- package/dist/src/memory/pglite.js.map +1 -1
- package/dist/src/memory/recall.d.ts +49 -0
- package/dist/src/memory/recall.d.ts.map +1 -0
- package/dist/src/memory/recall.js +185 -0
- package/dist/src/memory/recall.js.map +1 -0
- package/dist/src/memory/storage.d.ts +36 -1
- package/dist/src/memory/storage.d.ts.map +1 -1
- package/dist/src/memory/storage.js +68 -14
- package/dist/src/memory/storage.js.map +1 -1
- package/dist/src/memory/store.d.ts +33 -1
- package/dist/src/memory/store.d.ts.map +1 -1
- package/dist/src/memory/store.js +22 -16
- package/dist/src/memory/store.js.map +1 -1
- package/dist/src/session/session.d.ts.map +1 -1
- package/dist/src/session/session.js +5 -1
- package/dist/src/session/session.js.map +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +327 -30
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/autocomplete.d.ts.map +1 -1
- package/dist/src/tui/autocomplete.js +5 -0
- package/dist/src/tui/autocomplete.js.map +1 -1
- package/dist/src/tui/clipboard.d.ts +28 -0
- package/dist/src/tui/clipboard.d.ts.map +1 -0
- package/dist/src/tui/clipboard.js +95 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/history.d.ts +14 -0
- package/dist/src/tui/history.d.ts.map +1 -1
- package/dist/src/tui/history.js +21 -0
- package/dist/src/tui/history.js.map +1 -1
- package/dist/src/tui/recent-sessions.d.ts +51 -0
- package/dist/src/tui/recent-sessions.d.ts.map +1 -0
- package/dist/src/tui/recent-sessions.js +150 -0
- package/dist/src/tui/recent-sessions.js.map +1 -0
- package/dist/src/tui/starters.d.ts +92 -0
- package/dist/src/tui/starters.d.ts.map +1 -0
- package/dist/src/tui/starters.js +196 -0
- package/dist/src/tui/starters.js.map +1 -0
- package/dist/src/tui/theme.d.ts +2 -2
- package/dist/src/tui/theme.d.ts.map +1 -1
- package/dist/src/tui/theme.js +2 -2
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/transcript-log.d.ts +45 -0
- package/dist/src/tui/transcript-log.d.ts.map +1 -0
- package/dist/src/tui/transcript-log.js +76 -0
- package/dist/src/tui/transcript-log.js.map +1 -0
- package/dist/src/turn-runner/tools.d.ts +28 -1
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +135 -3
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +1 -0
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +70 -3
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/types/config.d.ts +12 -0
- package/dist/src/types/config.d.ts.map +1 -1
- package/dist/src/types/memory.d.ts +59 -21
- package/dist/src/types/memory.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/src/memory/schema.d.ts +0 -7
- package/dist/src/memory/schema.d.ts.map +0 -1
- package/dist/src/memory/schema.js +0 -21
- package/dist/src/memory/schema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAyB,MAAM,+BAA+B,CAAC;AAuBlF;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAqDrC,MAAM,OAAO,OAAO;IAiCP;IAhCF,EAAE,CAAS;IACH,MAAM,CAAoB;IAC3C,wFAAwF;IACvE,WAAW,CAAS;IACrC,8EAA8E;IAC7D,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChE,8EAA8E;IAC7D,iBAAiB,CAAa;IAC/C,8FAA8F;IACtF,UAAU,CAAiB;IACnC,8FAA8F;IACtF,YAAY,CAAiB;IACrC,mGAAmG;IAC3F,YAAY,CAAqB;IACzC;;;;;;OAMG;IACK,SAAS,CAAkC;IACnD,wFAAwF;IAChF,YAAY,CAAiC;IACrD,2FAA2F;IACnF,qBAAqB,CAAW;IACxC,+FAA+F;IAC9E,iBAAiB,CAAU;IAC5C,oGAAoG;IACnF,eAAe,GAAiD,EAAE,CAAC;IAEpF,YACW,MAAwB,EACjC,OAAuB;QADd,WAAM,GAAN,MAAM,CAAkB;QAGjC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,SAAS,CAAC,OAA4B;QACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,QAA2B,EAAE;QACvC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,IAAI,KAAK,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,2BAA2B,CAAC,KAAgB;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,MAAM,MAAM,GACV,QAAQ,EAAE,UAAU;YACpB,CAAC,SAAS,EAAE,IAAI,KAAK,MAAM;gBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU;gBACnC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,WAAW,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;YACvC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,WAAW,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;SACxC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,iBAAiB,CAAC,KAAoC;QACpD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iFAAiF;IACjF,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,qBAAqB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC7C,CAAC;IAED,oFAAoF;IACpF,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;aAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;aACvD,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAEO,YAAY,CAAC,OAAoB;QACvC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;aAC3B,IAAI,CAAC,OAAO,CAAC;aACb,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACrB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;QACL,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC5C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEO,sBAAsB,CAAC,KAAwB;QACrD,IACE,IAAI,CAAC,qBAAqB;YAC1B,KAAK,CAAC,IAAI,KAAK,UAAU;YACzB,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3C,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,8BAA8B;iBACvE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,MAAM,MAAM,GACV,QAAQ,EAAE,UAAU;gBACpB,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3F,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM;gBACN,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;aAC9C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,IAAI,CAAC,KAAgB;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAuD;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO;YAClD,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,0FAA0F;QAC1F,uFAAuF;QACvF,4BAA4B;QAC5B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC1D,mFAAmF;QACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,SAAS,GAAG,qBAAqB,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,OAAqB;QACxC,sEAAsE;QACtE,4EAA4E;QAC5E,MAAM,SAAS,GAAgB;YAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,OAAO;SACX,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAEO,yBAAyB,CAAC,KAA4B;QAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEO,qBAAqB,CAC3B,KAA4B;QAE5B,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY,CAAC;QACzC,MAAM,YAAY,GAAG,YAAY,EAAE,YAAY,CAAC;QAChD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACrD,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CACrC,CAAC;QACF,OAAO,eAAe,EAAE,IAAI,KAAK,MAAM,IAAI,eAAe,EAAE,IAAI,KAAK,OAAO;YAC1E,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA+C,CAAC;YACjF,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;gBACtE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAgB;QAC7C,MAAM,SAAS,CACb,IAAI,CAAC,eAAe,EAAE,EACtB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACpF,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAgB;IACvC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,KAAK,CAAC,IAAI,KAAK,KAAK;QACpB,KAAK,CAAC,IAAI,KAAK,aAAa;QAC5B,KAAK,CAAC,IAAI,KAAK,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAyB,MAAM,+BAA+B,CAAC;AAuBlF;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAqDrC,MAAM,OAAO,OAAO;IAiCP;IAhCF,EAAE,CAAS;IACH,MAAM,CAAoB;IAC3C,wFAAwF;IACvE,WAAW,CAAS;IACrC,8EAA8E;IAC7D,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChE,8EAA8E;IAC7D,iBAAiB,CAAa;IAC/C,8FAA8F;IACtF,UAAU,CAAiB;IACnC,8FAA8F;IACtF,YAAY,CAAiB;IACrC,mGAAmG;IAC3F,YAAY,CAAqB;IACzC;;;;;;OAMG;IACK,SAAS,CAAkC;IACnD,wFAAwF;IAChF,YAAY,CAAiC;IACrD,2FAA2F;IACnF,qBAAqB,CAAW;IACxC,+FAA+F;IAC9E,iBAAiB,CAAU;IAC5C,oGAAoG;IACnF,eAAe,GAAiD,EAAE,CAAC;IAEpF,YACW,MAAwB,EACjC,OAAuB;QADd,WAAM,GAAN,MAAM,CAAkB;QAGjC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,6DAA6D;QAC7D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,SAAS,CAAC,OAA4B;QACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,QAA2B,EAAE;QACvC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,IAAI,KAAK,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,2BAA2B,CAAC,KAAgB;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,MAAM,MAAM,GACV,QAAQ,EAAE,UAAU;YACpB,CAAC,SAAS,EAAE,IAAI,KAAK,MAAM;gBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU;gBACnC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,WAAW,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;YACvC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,WAAW,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;SACxC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,iBAAiB,CAAC,KAAoC;QACpD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iFAAiF;IACjF,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,qBAAqB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC7C,CAAC;IAED,oFAAoF;IACpF,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;aAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;aACvD,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAEO,YAAY,CAAC,OAAoB;QACvC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;aAC3B,IAAI,CAAC,OAAO,CAAC;aACb,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACrB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;QACL,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC5C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEO,sBAAsB,CAAC,KAAwB;QACrD,IACE,IAAI,CAAC,qBAAqB;YAC1B,KAAK,CAAC,IAAI,KAAK,UAAU;YACzB,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3C,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,8BAA8B;iBACvE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,MAAM,MAAM,GACV,QAAQ,EAAE,UAAU;gBACpB,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3F,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM;gBACN,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;aAC9C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,IAAI,CAAC,KAAgB;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAuD;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO;YAClD,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,0FAA0F;QAC1F,uFAAuF;QACvF,4BAA4B;QAC5B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC1D,mFAAmF;QACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,SAAS,GAAG,qBAAqB,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,OAAqB;QACxC,sEAAsE;QACtE,4EAA4E;QAC5E,MAAM,SAAS,GAAgB;YAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,OAAO;SACX,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAEO,yBAAyB,CAAC,KAA4B;QAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEO,qBAAqB,CAC3B,KAA4B;QAE5B,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY,CAAC;QACzC,MAAM,YAAY,GAAG,YAAY,EAAE,YAAY,CAAC;QAChD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACrD,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CACrC,CAAC;QACF,OAAO,eAAe,EAAE,IAAI,KAAK,MAAM,IAAI,eAAe,EAAE,IAAI,KAAK,OAAO;YAC1E,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA+C,CAAC;YACjF,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;gBACtE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAgB;QAC7C,MAAM,SAAS,CACb,IAAI,CAAC,eAAe,EAAE,EACtB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACpF,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAgB;IACvC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,KAAK,CAAC,IAAI,KAAK,KAAK;QACpB,KAAK,CAAC,IAAI,KAAK,aAAa;QAC5B,KAAK,CAAC,IAAI,KAAK,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyBlE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAMV,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAiC9B,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,IAAI,sBAAsB,EAC3C,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA4zDvF"}
|
package/dist/src/tui/app.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { BoxRenderable, createCliRenderer, decodePasteBytes, fg, ScrollBoxRenderable, t, TextRenderable, TextareaRenderable, } from "@opentui/core";
|
|
2
|
+
import { writeClipboardText } from "./clipboard.js";
|
|
2
3
|
import { describeMacClipboardTypes, loadImageFromPath, looksLikeImageFilePath, persistPastedImage, sniffImageMimeType, tryReadClipboardImage, tryReadClipboardText, } from "./paste.js";
|
|
4
|
+
import { parseCopyArgument, selectCopyText } from "./transcript-log.js";
|
|
3
5
|
import { activeFileAutocompleteToken, activeSkillAutocompleteToken, AUTOCOMPLETE_LIMITS, BUILT_IN_SLASH_COMMANDS, fileAutocompleteMatches, formatQuestionOptionDescription, formatSkillAutocompleteDescription, moveQuestionOptionSelection, moveSkillAutocompleteSelection, questionPickerAnswerPayload, skillAutocompleteMatches, } from "./autocomplete.js";
|
|
6
|
+
import { homedir } from "node:os";
|
|
4
7
|
import { buildFileIndex } from "./file-index.js";
|
|
5
|
-
import {
|
|
8
|
+
import { DUET_BANNER_LINES_COMPACT, historyDisplayBlocks, limitHistoryDisplayBlocks, } from "./history.js";
|
|
9
|
+
import { listRecentSessions } from "./recent-sessions.js";
|
|
6
10
|
import { createSidebar, SIDEBAR_WIDTH } from "./sidebar.js";
|
|
11
|
+
import { orderedSelectableStarters, selectStarters } from "./starters.js";
|
|
7
12
|
import { COLORS, HINT_IDLE, HINT_RUNNING } from "./theme.js";
|
|
8
13
|
// Re-exports preserve the historical `tui/app.js` entry point used by tests
|
|
9
14
|
// and external callers; the implementations live in focused leaf modules.
|
|
@@ -24,8 +29,14 @@ const QUESTION_OPTION_LIMIT = AUTOCOMPLETE_LIMITS.questionOption;
|
|
|
24
29
|
*/
|
|
25
30
|
export async function runTui(input) {
|
|
26
31
|
const previousWindow = Object.getOwnPropertyDescriptor(globalThis, "window");
|
|
32
|
+
// useMouse: false hands the mouse channel back to the terminal emulator
|
|
33
|
+
// so users can drag-select transcript text and Cmd+C / Cmd+V work
|
|
34
|
+
// natively, the way they do in Claude Code. The cost is that the
|
|
35
|
+
// sidebar and scroll wheel become keyboard-only — a tradeoff we made
|
|
36
|
+
// intentionally so copy-out works without a slash command or modifier.
|
|
27
37
|
const renderer = await createCliRenderer({
|
|
28
38
|
exitOnCtrlC: true,
|
|
39
|
+
useMouse: false,
|
|
29
40
|
useKittyKeyboard: {},
|
|
30
41
|
targetFps: 60,
|
|
31
42
|
});
|
|
@@ -258,6 +269,17 @@ export async function runTui(input) {
|
|
|
258
269
|
// Monotonic counter for the next `[Image #N]` placeholder. Reset alongside
|
|
259
270
|
// `pendingImages` so users see a fresh `#1` label after each submit.
|
|
260
271
|
let nextImageId = 1;
|
|
272
|
+
// Parallel record of user/agent message bodies driven by the same code
|
|
273
|
+
// paths that render them into the transcript. The `/copy` slash command
|
|
274
|
+
// and Ctrl+Y keystroke read from this log instead of trying to walk the
|
|
275
|
+
// ScrollBoxRenderable, which only stores presentation lines.
|
|
276
|
+
const transcriptLog = [];
|
|
277
|
+
function recordTranscriptEntry(kind, text) {
|
|
278
|
+
const trimmed = text.trim();
|
|
279
|
+
if (!trimmed)
|
|
280
|
+
return;
|
|
281
|
+
transcriptLog.push({ kind, text: trimmed });
|
|
282
|
+
}
|
|
261
283
|
let lastTerminal;
|
|
262
284
|
let latestContextUsage;
|
|
263
285
|
// Running USD total across every settled turn in this session. Reset only
|
|
@@ -415,12 +437,18 @@ export async function runTui(input) {
|
|
|
415
437
|
}
|
|
416
438
|
});
|
|
417
439
|
function renderSetupIntro(skills, agentFiles) {
|
|
418
|
-
|
|
440
|
+
// Compact 3-row wordmark. The full DUET_BANNER_LINES is ~6 rows tall
|
|
441
|
+
// and pushed the starter list off-screen on small terminals; this one
|
|
442
|
+
// keeps the brand mark visible while leaving room for the ice-break
|
|
443
|
+
// prompts to land above the fold.
|
|
444
|
+
for (const line of DUET_BANNER_LINES_COMPACT)
|
|
419
445
|
appendLine(line, COLORS.status);
|
|
420
|
-
|
|
421
|
-
appendLine(
|
|
422
|
-
|
|
423
|
-
|
|
446
|
+
appendLine(" ", COLORS.hint);
|
|
447
|
+
appendLine(" ", COLORS.hint);
|
|
448
|
+
// One-line header. Keeps cwd/model context visible without burning
|
|
449
|
+
// another five rows. Provenance (env/file source) is intentionally
|
|
450
|
+
// dropped here — surface it via /whoami later.
|
|
451
|
+
appendLine(formatBootHeader(input), COLORS.status);
|
|
424
452
|
if (input.versionNoticePromise) {
|
|
425
453
|
const versionLine = new TextRenderable(renderer, {
|
|
426
454
|
content: "[version] checking for updates…",
|
|
@@ -438,20 +466,175 @@ export async function runTui(input) {
|
|
|
438
466
|
}
|
|
439
467
|
});
|
|
440
468
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
else {
|
|
469
|
+
// Only mention agent files when one is actually loaded; "[agent file]
|
|
470
|
+
// none" is noise on every empty boot.
|
|
471
|
+
if (agentFiles.length > 0) {
|
|
445
472
|
appendLine(`[agent file] ${agentFiles.map((file) => file.name).join(", ")}`, COLORS.hint);
|
|
446
473
|
}
|
|
447
|
-
|
|
448
|
-
|
|
474
|
+
renderStarters(skills);
|
|
475
|
+
}
|
|
476
|
+
function formatBootHeader(headerInput) {
|
|
477
|
+
const cwdLabel = shortenCwd(headerInput.workDir);
|
|
478
|
+
return `DUET AGENT v${headerInput.packageVersion} · ${cwdLabel} · ${headerInput.modelName} + ${headerInput.memoryModelName}`;
|
|
479
|
+
}
|
|
480
|
+
function shortenCwd(cwd) {
|
|
481
|
+
const home = homedir();
|
|
482
|
+
if (cwd === home)
|
|
483
|
+
return "~";
|
|
484
|
+
if (cwd.startsWith(`${home}/`))
|
|
485
|
+
return `~${cwd.slice(home.length)}`;
|
|
486
|
+
return cwd;
|
|
487
|
+
}
|
|
488
|
+
const starterEntries = [];
|
|
489
|
+
// Lines we render for the starter section so we can repaint highlights
|
|
490
|
+
// and tear them all down on dismissal. Includes the headline, numbered
|
|
491
|
+
// rows, the optional resume row, and the two trailing hint rows.
|
|
492
|
+
const starterRefs = [];
|
|
493
|
+
// Indexes within `starterRefs` that correspond to numbered rows; used
|
|
494
|
+
// to repaint highlight on arrow / digit navigation.
|
|
495
|
+
const starterRowIndexes = [];
|
|
496
|
+
let highlightedStarterIndex = 0;
|
|
497
|
+
let startersVisible = false;
|
|
498
|
+
function startersAreVisible() {
|
|
499
|
+
return startersVisible;
|
|
500
|
+
}
|
|
501
|
+
function renderStarters(skills) {
|
|
502
|
+
// Read recent sessions off disk synchronously. The helper swallows fs
|
|
503
|
+
// errors and returns an empty list; a missing/empty ~/.duet/sessions
|
|
504
|
+
// directory is the common first-boot case.
|
|
505
|
+
const recentSessions = listRecentSessions({
|
|
506
|
+
excludeId: input.sessionId,
|
|
507
|
+
limit: 4,
|
|
508
|
+
});
|
|
509
|
+
const result = selectStarters({
|
|
510
|
+
cwd: input.workDir,
|
|
511
|
+
sessionHistory: input.history,
|
|
512
|
+
recentSessions,
|
|
513
|
+
});
|
|
514
|
+
// Selectable rows in render order. Recent sessions lead so returning
|
|
515
|
+
// users hit "pick up the thread" first; new users see the cwd starters
|
|
516
|
+
// under the original "what should we work on today?" headline.
|
|
517
|
+
const ordered = orderedSelectableStarters(result);
|
|
518
|
+
starterEntries.length = 0;
|
|
519
|
+
for (const row of ordered) {
|
|
520
|
+
if (row.kind === "recent" && row.sessionId !== undefined) {
|
|
521
|
+
starterEntries.push({
|
|
522
|
+
kind: "recent",
|
|
523
|
+
label: row.label,
|
|
524
|
+
submit: row.submit,
|
|
525
|
+
sessionId: row.sessionId,
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
else {
|
|
529
|
+
starterEntries.push({ kind: "prompt", label: row.label, submit: row.submit });
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
const hasRecent = result.recentSessions.length > 0;
|
|
533
|
+
starterRowIndexes.length = 0;
|
|
534
|
+
appendLine(" ", COLORS.hint);
|
|
535
|
+
if (hasRecent) {
|
|
536
|
+
// Returning user: continuity first.
|
|
537
|
+
starterRefs.push(addLine("pick up the thread", COLORS.agent));
|
|
538
|
+
appendLine(" ", COLORS.hint);
|
|
539
|
+
for (let i = 0; i < result.recentSessions.length; i += 1) {
|
|
540
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
541
|
+
starterRowIndexes.push(starterRefs.length);
|
|
542
|
+
starterRefs.push(ref);
|
|
543
|
+
}
|
|
544
|
+
appendLine(" ", COLORS.hint);
|
|
545
|
+
starterRefs.push(addLine("or start something new", COLORS.agent));
|
|
546
|
+
appendLine(" ", COLORS.hint);
|
|
547
|
+
for (let j = 0; j < result.starters.length; j += 1) {
|
|
548
|
+
const i = result.recentSessions.length + j;
|
|
549
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
550
|
+
starterRowIndexes.push(starterRefs.length);
|
|
551
|
+
starterRefs.push(ref);
|
|
552
|
+
}
|
|
449
553
|
}
|
|
450
554
|
else {
|
|
451
|
-
|
|
452
|
-
|
|
555
|
+
// New user: original cwd-only ice-break.
|
|
556
|
+
starterRefs.push(addLine("what should we work on today?", COLORS.agent));
|
|
557
|
+
appendLine(" ", COLORS.hint);
|
|
558
|
+
for (let i = 0; i < starterEntries.length; i += 1) {
|
|
559
|
+
const ref = addLine(formatStarterRow(i, false), COLORS.hint);
|
|
560
|
+
starterRowIndexes.push(starterRefs.length);
|
|
561
|
+
starterRefs.push(ref);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
appendLine(" ", COLORS.hint);
|
|
565
|
+
starterRefs.push(addLine("type a number to run, ↑/↓ to highlight, or just start typing.", COLORS.hint));
|
|
566
|
+
starterRefs.push(addLine(`✦ ${skills.length} skill${skills.length === 1 ? "" : "s"} · /help`, COLORS.hint));
|
|
567
|
+
startersVisible = starterEntries.length > 0;
|
|
568
|
+
if (startersVisible) {
|
|
569
|
+
highlightedStarterIndex = 0;
|
|
570
|
+
paintStarterHighlight();
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
function addLine(content, fg) {
|
|
574
|
+
const line = new TextRenderable(renderer, { content: content || " ", fg });
|
|
575
|
+
transcript.add(line);
|
|
576
|
+
return line;
|
|
577
|
+
}
|
|
578
|
+
function formatStarterRow(index, highlighted) {
|
|
579
|
+
const entry = starterEntries[index];
|
|
580
|
+
const text = entry?.label ?? "";
|
|
581
|
+
const number = index + 1;
|
|
582
|
+
const arrow = highlighted ? "▶" : "→";
|
|
583
|
+
const numberCell = highlighted ? `[${number}]` : ` ${number} `;
|
|
584
|
+
return ` ${numberCell} ${arrow} ${text}`;
|
|
585
|
+
}
|
|
586
|
+
function paintStarterHighlight() {
|
|
587
|
+
for (let i = 0; i < starterRowIndexes.length; i += 1) {
|
|
588
|
+
const ref = starterRefs[starterRowIndexes[i]];
|
|
589
|
+
const isHighlighted = i === highlightedStarterIndex;
|
|
590
|
+
ref.content = formatStarterRow(i, isHighlighted);
|
|
591
|
+
ref.fg = isHighlighted ? COLORS.user : COLORS.hint;
|
|
453
592
|
}
|
|
454
593
|
}
|
|
594
|
+
function moveStarterHighlight(delta) {
|
|
595
|
+
if (!startersVisible || starterEntries.length === 0)
|
|
596
|
+
return;
|
|
597
|
+
const next = (highlightedStarterIndex + delta + starterEntries.length) % starterEntries.length;
|
|
598
|
+
highlightedStarterIndex = next;
|
|
599
|
+
paintStarterHighlight();
|
|
600
|
+
}
|
|
601
|
+
function jumpStarterHighlight(targetIndex) {
|
|
602
|
+
if (!startersVisible)
|
|
603
|
+
return false;
|
|
604
|
+
if (targetIndex < 0 || targetIndex >= starterEntries.length)
|
|
605
|
+
return false;
|
|
606
|
+
highlightedStarterIndex = targetIndex;
|
|
607
|
+
paintStarterHighlight();
|
|
608
|
+
return true;
|
|
609
|
+
}
|
|
610
|
+
function dismissStarters() {
|
|
611
|
+
if (!startersVisible && starterRefs.length === 0)
|
|
612
|
+
return;
|
|
613
|
+
for (const ref of starterRefs) {
|
|
614
|
+
transcript.remove(ref.id);
|
|
615
|
+
ref.destroy();
|
|
616
|
+
}
|
|
617
|
+
starterRefs.length = 0;
|
|
618
|
+
starterRowIndexes.length = 0;
|
|
619
|
+
starterEntries.length = 0;
|
|
620
|
+
startersVisible = false;
|
|
621
|
+
}
|
|
622
|
+
function submitHighlightedStarter() {
|
|
623
|
+
if (!startersVisible)
|
|
624
|
+
return false;
|
|
625
|
+
const entry = starterEntries[highlightedStarterIndex];
|
|
626
|
+
if (!entry)
|
|
627
|
+
return false;
|
|
628
|
+
dismissStarters();
|
|
629
|
+
// Recent-session rows reuse the prompt text in the *current* session
|
|
630
|
+
// rather than tearing down the runtime to switch sessions. The agent
|
|
631
|
+
// won't have prior context, but the user lands on the same task with
|
|
632
|
+
// one keystroke instead of typing it again. Documented tradeoff: a
|
|
633
|
+
// future iteration can swap this for true cross-session resume once
|
|
634
|
+
// the session manager exposes a hot-swap API.
|
|
635
|
+
submit(entry.submit);
|
|
636
|
+
return true;
|
|
637
|
+
}
|
|
455
638
|
function renderUsage(usage) {
|
|
456
639
|
if (!usage)
|
|
457
640
|
return;
|
|
@@ -501,6 +684,7 @@ export async function runTui(input) {
|
|
|
501
684
|
activeReasoningStream = renderDelta(activeReasoningStream, "[reasoning]", step.delta, COLORS.reasoning, true);
|
|
502
685
|
}
|
|
503
686
|
else if (step.type === "text") {
|
|
687
|
+
recordTranscriptEntry("agent", step.text);
|
|
504
688
|
if (activeTextStream) {
|
|
505
689
|
finalizeDelta(activeTextStream, step.text);
|
|
506
690
|
activeTextStream = undefined;
|
|
@@ -650,10 +834,6 @@ export async function runTui(input) {
|
|
|
650
834
|
return truncateToolText(`${event.message}\n${content}`);
|
|
651
835
|
}
|
|
652
836
|
// ---- input handling --------------------------------------------------------
|
|
653
|
-
// Track shift state for the most recent Enter keypress. The focused
|
|
654
|
-
// InputRenderable handles its own `enter` event after onKeyDown fires, so we
|
|
655
|
-
// capture the modifier here and read it during the ENTER event below.
|
|
656
|
-
let lastEnterShift = false;
|
|
657
837
|
let skillAutocompleteSkills = [];
|
|
658
838
|
let skillAutocompleteToken;
|
|
659
839
|
let skillAutocompleteItems = [];
|
|
@@ -770,7 +950,9 @@ export async function runTui(input) {
|
|
|
770
950
|
const answers = questionPickerAnswerPayload(pendingQuestions, questionOptionSelectedIndex);
|
|
771
951
|
if (!answers)
|
|
772
952
|
return false;
|
|
773
|
-
|
|
953
|
+
const answerText = Object.values(answers).join("\n");
|
|
954
|
+
recordTranscriptEntry("user", answerText);
|
|
955
|
+
appendBlock("you:", answerText, COLORS.user);
|
|
774
956
|
void input.session
|
|
775
957
|
.answer({ questions: pendingQuestions, answers, behavior: "follow_up" })
|
|
776
958
|
.catch(reportError);
|
|
@@ -972,6 +1154,34 @@ export async function runTui(input) {
|
|
|
972
1154
|
// consumes escape via its own keybindings before any global keypress handler
|
|
973
1155
|
// fires, so we intercept at the Renderable's onKeyDown hook which runs first.
|
|
974
1156
|
inputField.onKeyDown = (key) => {
|
|
1157
|
+
// Boot starter navigation. Only intercepts when the starter section is
|
|
1158
|
+
// still on screen; once dismissed (by composition or first submit) all
|
|
1159
|
+
// of these branches no-op and keys flow normally to the input.
|
|
1160
|
+
if (startersAreVisible() && inputField.plainText.length === 0) {
|
|
1161
|
+
if (key.name === "up") {
|
|
1162
|
+
moveStarterHighlight(-1);
|
|
1163
|
+
key.preventDefault();
|
|
1164
|
+
return;
|
|
1165
|
+
}
|
|
1166
|
+
if (key.name === "down") {
|
|
1167
|
+
moveStarterHighlight(1);
|
|
1168
|
+
key.preventDefault();
|
|
1169
|
+
return;
|
|
1170
|
+
}
|
|
1171
|
+
if (key.name &&
|
|
1172
|
+
key.name.length === 1 &&
|
|
1173
|
+
key.name >= "1" &&
|
|
1174
|
+
key.name <= "9" &&
|
|
1175
|
+
!key.ctrl &&
|
|
1176
|
+
!key.meta &&
|
|
1177
|
+
!key.super) {
|
|
1178
|
+
const target = Number.parseInt(key.name, 10) - 1;
|
|
1179
|
+
if (jumpStarterHighlight(target)) {
|
|
1180
|
+
key.preventDefault();
|
|
1181
|
+
return;
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
975
1185
|
// Cmd+V / Ctrl+V keystroke trigger. Many terminals (Warp in particular,
|
|
976
1186
|
// and macOS Terminal.app for binary clipboards) do not forward a paste
|
|
977
1187
|
// event to TUI programs on Cmd+V — they handle the clipboard at the app
|
|
@@ -988,6 +1198,15 @@ export async function runTui(input) {
|
|
|
988
1198
|
void triggerClipboardProbe("keystroke");
|
|
989
1199
|
return;
|
|
990
1200
|
}
|
|
1201
|
+
// Ctrl+Y — emacs-style "yank," repurposed here as the keyboard hotkey
|
|
1202
|
+
// for the `/copy` slash command. macOS Cmd+C is owned by the terminal
|
|
1203
|
+
// emulator and never reaches the TUI, so Ctrl+Y is the closest thing
|
|
1204
|
+
// to a real copy keystroke we can deliver across all terminals.
|
|
1205
|
+
if (key.name === "y" && key.ctrl && !key.shift && !key.super && !key.meta) {
|
|
1206
|
+
key.preventDefault();
|
|
1207
|
+
void handleCopySlashCommand("/copy");
|
|
1208
|
+
return;
|
|
1209
|
+
}
|
|
991
1210
|
if (skillAutocompleteIsOpen()) {
|
|
992
1211
|
if (key.name === "up") {
|
|
993
1212
|
skillAutocompleteSelectedIndex = moveSkillAutocompleteSelection(skillAutocompleteSelectedIndex, skillAutocompleteItems.length, -1);
|
|
@@ -1059,17 +1278,26 @@ export async function runTui(input) {
|
|
|
1059
1278
|
}
|
|
1060
1279
|
}
|
|
1061
1280
|
if (key.name === "return" || key.name === "enter") {
|
|
1062
|
-
|
|
1281
|
+
// Shift+Enter inserts a literal newline at the cursor, matching every
|
|
1282
|
+
// modern chat composer (Slack, Claude Code, ChatGPT, Discord). Plain
|
|
1283
|
+
// Enter always submits — when the agent is running the submit path
|
|
1284
|
+
// queues the message as a follow-up; otherwise it kicks off a new turn.
|
|
1285
|
+
key.preventDefault();
|
|
1286
|
+
if (key.shift) {
|
|
1287
|
+
inputField.insertText("\n");
|
|
1288
|
+
return;
|
|
1289
|
+
}
|
|
1063
1290
|
const value = inputField.plainText.trim();
|
|
1064
1291
|
inputField.clear();
|
|
1065
|
-
key.preventDefault();
|
|
1066
1292
|
if (value) {
|
|
1067
|
-
submit(value
|
|
1293
|
+
submit(value);
|
|
1068
1294
|
}
|
|
1069
1295
|
else if (questionPickerIsOpen()) {
|
|
1070
1296
|
submitSelectedQuestionOption();
|
|
1071
1297
|
}
|
|
1072
|
-
|
|
1298
|
+
else if (startersAreVisible()) {
|
|
1299
|
+
submitHighlightedStarter();
|
|
1300
|
+
}
|
|
1073
1301
|
return;
|
|
1074
1302
|
}
|
|
1075
1303
|
if (key.name === "escape") {
|
|
@@ -1077,7 +1305,14 @@ export async function runTui(input) {
|
|
|
1077
1305
|
return;
|
|
1078
1306
|
}
|
|
1079
1307
|
};
|
|
1080
|
-
inputField.onContentChange = () =>
|
|
1308
|
+
inputField.onContentChange = () => {
|
|
1309
|
+
// First real keystroke into the input collapses the starter section
|
|
1310
|
+
// — the user is composing their own prompt, so the suggestions get
|
|
1311
|
+
// out of the way for the rest of the session.
|
|
1312
|
+
if (startersAreVisible() && inputField.plainText.length > 0)
|
|
1313
|
+
dismissStarters();
|
|
1314
|
+
refreshAutocomplete();
|
|
1315
|
+
};
|
|
1081
1316
|
inputField.onCursorChange = () => refreshAutocomplete();
|
|
1082
1317
|
// Paste handling. Terminals that forward binary clipboard contents (kitty,
|
|
1083
1318
|
// ghostty, recent iTerm2 builds) deliver image bytes directly via the paste
|
|
@@ -1222,7 +1457,11 @@ export async function runTui(input) {
|
|
|
1222
1457
|
appendBlock("[paste]", `clipboard probe failed: ${error instanceof Error ? error.message : String(error)}`, COLORS.error);
|
|
1223
1458
|
}
|
|
1224
1459
|
}
|
|
1225
|
-
function submit(message
|
|
1460
|
+
function submit(message) {
|
|
1461
|
+
// First user submit collapses the boot starter section permanently for
|
|
1462
|
+
// this session, even when the prompt came from autocomplete or paste.
|
|
1463
|
+
if (startersAreVisible())
|
|
1464
|
+
dismissStarters();
|
|
1226
1465
|
// Slash-style attach commands run locally and never reach the runner so
|
|
1227
1466
|
// users on terminals that do not forward image bytes still have a way to
|
|
1228
1467
|
// attach images by path.
|
|
@@ -1239,7 +1478,12 @@ export async function runTui(input) {
|
|
|
1239
1478
|
appendBlock("[paste]", "cleared pending image attachments", COLORS.system);
|
|
1240
1479
|
return;
|
|
1241
1480
|
}
|
|
1481
|
+
if (message === "/copy" || message.startsWith("/copy ")) {
|
|
1482
|
+
void handleCopySlashCommand(message);
|
|
1483
|
+
return;
|
|
1484
|
+
}
|
|
1242
1485
|
const submittedImages = pendingImages;
|
|
1486
|
+
recordTranscriptEntry("user", message);
|
|
1243
1487
|
appendBlock("you:", message, COLORS.user);
|
|
1244
1488
|
// Render attachments as a separate hint-colored footnote rather than
|
|
1245
1489
|
// inlining them into the user-message block. Keeps the transcript
|
|
@@ -1255,13 +1499,49 @@ export async function runTui(input) {
|
|
|
1255
1499
|
// Reset before dispatch so an in-flight error does not leave the user
|
|
1256
1500
|
// double-charged with the same attachments on retry.
|
|
1257
1501
|
clearPendingImages();
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1502
|
+
// Every submit — running or idle — is a follow_up. While the agent is
|
|
1503
|
+
// running this queues; while idle it kicks off a fresh turn. Single
|
|
1504
|
+
// mental model: type, press Enter, your message lands.
|
|
1505
|
+
void input.session.prompt({ message, behavior: "follow_up", images }).catch(reportError);
|
|
1506
|
+
if (!running) {
|
|
1507
|
+
markRunning();
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
/**
|
|
1511
|
+
* Resolve a `/copy ...` invocation to clipboard text and pipe it to the
|
|
1512
|
+
* OS clipboard. Surfaces every failure mode in the transcript so users on
|
|
1513
|
+
* minimal Linux installs see exactly which writer is missing (e.g.
|
|
1514
|
+
* "install xclip or wl-clipboard").
|
|
1515
|
+
*/
|
|
1516
|
+
async function handleCopySlashCommand(raw) {
|
|
1517
|
+
const argumentRaw = raw === "/copy" ? "" : raw.slice("/copy ".length);
|
|
1518
|
+
const argument = parseCopyArgument(argumentRaw);
|
|
1519
|
+
if (argument === undefined) {
|
|
1520
|
+
appendBlock("[copy]", "Usage: /copy [last|all|<N>] — last (default) copies the most recent agent reply", COLORS.system);
|
|
1261
1521
|
return;
|
|
1262
1522
|
}
|
|
1263
|
-
|
|
1264
|
-
|
|
1523
|
+
const text = selectCopyText(transcriptLog, argument);
|
|
1524
|
+
if (!text) {
|
|
1525
|
+
appendBlock("[copy]", "nothing to copy yet", COLORS.system);
|
|
1526
|
+
return;
|
|
1527
|
+
}
|
|
1528
|
+
const result = await writeClipboardText(text);
|
|
1529
|
+
if (result.ok) {
|
|
1530
|
+
const summary = describeCopySelection(argument, text.length);
|
|
1531
|
+
appendBlock("[copy]", `copied ${summary} to clipboard via ${result.via}`, COLORS.system);
|
|
1532
|
+
}
|
|
1533
|
+
else {
|
|
1534
|
+
appendBlock("[copy]", `clipboard write failed: ${result.error ?? "unknown error"}` +
|
|
1535
|
+
(process.platform === "linux" ? "\nInstall one of: wl-clipboard, xclip, xsel" : ""), COLORS.error);
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
function describeCopySelection(argument, length) {
|
|
1539
|
+
const chars = `${length} char${length === 1 ? "" : "s"}`;
|
|
1540
|
+
if (argument === "last")
|
|
1541
|
+
return `last message (${chars})`;
|
|
1542
|
+
if (argument === "all")
|
|
1543
|
+
return `full transcript (${chars})`;
|
|
1544
|
+
return `last ${argument} messages (${chars})`;
|
|
1265
1545
|
}
|
|
1266
1546
|
async function handleImageSlashCommand(raw) {
|
|
1267
1547
|
const rest = raw.slice("/image".length).trim();
|
|
@@ -1323,8 +1603,25 @@ export async function runTui(input) {
|
|
|
1323
1603
|
appendDisplayBlock(block);
|
|
1324
1604
|
}
|
|
1325
1605
|
}
|
|
1606
|
+
// Seed the copy-out log from full resumed history (not the trimmed display
|
|
1607
|
+
// slice) so `/copy all` and `/copy <N>` can reach back further than what is
|
|
1608
|
+
// actually rendered in the transcript on resume.
|
|
1609
|
+
if (input.history && input.history.length > 0) {
|
|
1610
|
+
for (const block of historyDisplayBlocks(input.history)) {
|
|
1611
|
+
if (block.kind === "user") {
|
|
1612
|
+
// History blocks for users are formatted as `you:\n<text>`; strip the
|
|
1613
|
+
// label so the clipboard text matches what the user originally typed.
|
|
1614
|
+
const stripped = block.content.replace(/^you:\n?/, "");
|
|
1615
|
+
recordTranscriptEntry("user", stripped);
|
|
1616
|
+
}
|
|
1617
|
+
else if (block.kind === "agent") {
|
|
1618
|
+
recordTranscriptEntry("agent", block.content);
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1326
1622
|
// ---- bootstrap initial prompt ----------------------------------------------
|
|
1327
1623
|
if (input.initialPrompt) {
|
|
1624
|
+
recordTranscriptEntry("user", input.initialPrompt);
|
|
1328
1625
|
appendBlock("you:", input.initialPrompt, COLORS.user);
|
|
1329
1626
|
void input.session
|
|
1330
1627
|
.prompt({ message: input.initialPrompt, behavior: "follow_up" })
|