@duetso/agent 0.1.52 → 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 +17 -8
- 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 +7 -2
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +343 -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 -1
- package/dist/src/tui/history.d.ts.map +1 -1
- package/dist/src/tui/history.js +21 -2
- 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":"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"}
|
package/dist/src/tui/app.d.ts
CHANGED
|
@@ -24,8 +24,13 @@ export interface RunTuiInput {
|
|
|
24
24
|
memoryModelName: string;
|
|
25
25
|
/** Human-readable provenance for memoryModelName. */
|
|
26
26
|
memoryModelSource?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Pending probe for a package update notice. The TUI renders a placeholder
|
|
29
|
+
* line in the intro and replaces it with the notice once the probe settles.
|
|
30
|
+
* Resolves to undefined when the user is already on the latest version or
|
|
31
|
+
* the registry lookup failed.
|
|
32
|
+
*/
|
|
33
|
+
versionNoticePromise?: Promise<string | undefined>;
|
|
29
34
|
/** Past messages to replay into the transcript on resume. */
|
|
30
35
|
history?: AgentMessage[];
|
|
31
36
|
/** Maximum prior-session display lines to replay on resume; 0 disables replay. */
|
|
@@ -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,27 +437,204 @@ 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
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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);
|
|
452
|
+
if (input.versionNoticePromise) {
|
|
453
|
+
const versionLine = new TextRenderable(renderer, {
|
|
454
|
+
content: "[version] checking for updates…",
|
|
455
|
+
fg: COLORS.hint,
|
|
456
|
+
});
|
|
457
|
+
transcript.add(versionLine);
|
|
458
|
+
void input.versionNoticePromise.then((notice) => {
|
|
459
|
+
if (notice) {
|
|
460
|
+
versionLine.content = notice;
|
|
461
|
+
versionLine.fg = COLORS.system;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
transcript.remove(versionLine.id);
|
|
465
|
+
versionLine.destroy();
|
|
466
|
+
}
|
|
467
|
+
});
|
|
427
468
|
}
|
|
428
|
-
|
|
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) {
|
|
429
472
|
appendLine(`[agent file] ${agentFiles.map((file) => file.name).join(", ")}`, COLORS.hint);
|
|
430
473
|
}
|
|
431
|
-
|
|
432
|
-
|
|
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
|
+
}
|
|
433
553
|
}
|
|
434
554
|
else {
|
|
435
|
-
|
|
436
|
-
|
|
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;
|
|
437
592
|
}
|
|
438
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
|
+
}
|
|
439
638
|
function renderUsage(usage) {
|
|
440
639
|
if (!usage)
|
|
441
640
|
return;
|
|
@@ -485,6 +684,7 @@ export async function runTui(input) {
|
|
|
485
684
|
activeReasoningStream = renderDelta(activeReasoningStream, "[reasoning]", step.delta, COLORS.reasoning, true);
|
|
486
685
|
}
|
|
487
686
|
else if (step.type === "text") {
|
|
687
|
+
recordTranscriptEntry("agent", step.text);
|
|
488
688
|
if (activeTextStream) {
|
|
489
689
|
finalizeDelta(activeTextStream, step.text);
|
|
490
690
|
activeTextStream = undefined;
|
|
@@ -634,10 +834,6 @@ export async function runTui(input) {
|
|
|
634
834
|
return truncateToolText(`${event.message}\n${content}`);
|
|
635
835
|
}
|
|
636
836
|
// ---- input handling --------------------------------------------------------
|
|
637
|
-
// Track shift state for the most recent Enter keypress. The focused
|
|
638
|
-
// InputRenderable handles its own `enter` event after onKeyDown fires, so we
|
|
639
|
-
// capture the modifier here and read it during the ENTER event below.
|
|
640
|
-
let lastEnterShift = false;
|
|
641
837
|
let skillAutocompleteSkills = [];
|
|
642
838
|
let skillAutocompleteToken;
|
|
643
839
|
let skillAutocompleteItems = [];
|
|
@@ -754,7 +950,9 @@ export async function runTui(input) {
|
|
|
754
950
|
const answers = questionPickerAnswerPayload(pendingQuestions, questionOptionSelectedIndex);
|
|
755
951
|
if (!answers)
|
|
756
952
|
return false;
|
|
757
|
-
|
|
953
|
+
const answerText = Object.values(answers).join("\n");
|
|
954
|
+
recordTranscriptEntry("user", answerText);
|
|
955
|
+
appendBlock("you:", answerText, COLORS.user);
|
|
758
956
|
void input.session
|
|
759
957
|
.answer({ questions: pendingQuestions, answers, behavior: "follow_up" })
|
|
760
958
|
.catch(reportError);
|
|
@@ -956,6 +1154,34 @@ export async function runTui(input) {
|
|
|
956
1154
|
// consumes escape via its own keybindings before any global keypress handler
|
|
957
1155
|
// fires, so we intercept at the Renderable's onKeyDown hook which runs first.
|
|
958
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
|
+
}
|
|
959
1185
|
// Cmd+V / Ctrl+V keystroke trigger. Many terminals (Warp in particular,
|
|
960
1186
|
// and macOS Terminal.app for binary clipboards) do not forward a paste
|
|
961
1187
|
// event to TUI programs on Cmd+V — they handle the clipboard at the app
|
|
@@ -972,6 +1198,15 @@ export async function runTui(input) {
|
|
|
972
1198
|
void triggerClipboardProbe("keystroke");
|
|
973
1199
|
return;
|
|
974
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
|
+
}
|
|
975
1210
|
if (skillAutocompleteIsOpen()) {
|
|
976
1211
|
if (key.name === "up") {
|
|
977
1212
|
skillAutocompleteSelectedIndex = moveSkillAutocompleteSelection(skillAutocompleteSelectedIndex, skillAutocompleteItems.length, -1);
|
|
@@ -1043,17 +1278,26 @@ export async function runTui(input) {
|
|
|
1043
1278
|
}
|
|
1044
1279
|
}
|
|
1045
1280
|
if (key.name === "return" || key.name === "enter") {
|
|
1046
|
-
|
|
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
|
+
}
|
|
1047
1290
|
const value = inputField.plainText.trim();
|
|
1048
1291
|
inputField.clear();
|
|
1049
|
-
key.preventDefault();
|
|
1050
1292
|
if (value) {
|
|
1051
|
-
submit(value
|
|
1293
|
+
submit(value);
|
|
1052
1294
|
}
|
|
1053
1295
|
else if (questionPickerIsOpen()) {
|
|
1054
1296
|
submitSelectedQuestionOption();
|
|
1055
1297
|
}
|
|
1056
|
-
|
|
1298
|
+
else if (startersAreVisible()) {
|
|
1299
|
+
submitHighlightedStarter();
|
|
1300
|
+
}
|
|
1057
1301
|
return;
|
|
1058
1302
|
}
|
|
1059
1303
|
if (key.name === "escape") {
|
|
@@ -1061,7 +1305,14 @@ export async function runTui(input) {
|
|
|
1061
1305
|
return;
|
|
1062
1306
|
}
|
|
1063
1307
|
};
|
|
1064
|
-
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
|
+
};
|
|
1065
1316
|
inputField.onCursorChange = () => refreshAutocomplete();
|
|
1066
1317
|
// Paste handling. Terminals that forward binary clipboard contents (kitty,
|
|
1067
1318
|
// ghostty, recent iTerm2 builds) deliver image bytes directly via the paste
|
|
@@ -1206,7 +1457,11 @@ export async function runTui(input) {
|
|
|
1206
1457
|
appendBlock("[paste]", `clipboard probe failed: ${error instanceof Error ? error.message : String(error)}`, COLORS.error);
|
|
1207
1458
|
}
|
|
1208
1459
|
}
|
|
1209
|
-
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();
|
|
1210
1465
|
// Slash-style attach commands run locally and never reach the runner so
|
|
1211
1466
|
// users on terminals that do not forward image bytes still have a way to
|
|
1212
1467
|
// attach images by path.
|
|
@@ -1223,7 +1478,12 @@ export async function runTui(input) {
|
|
|
1223
1478
|
appendBlock("[paste]", "cleared pending image attachments", COLORS.system);
|
|
1224
1479
|
return;
|
|
1225
1480
|
}
|
|
1481
|
+
if (message === "/copy" || message.startsWith("/copy ")) {
|
|
1482
|
+
void handleCopySlashCommand(message);
|
|
1483
|
+
return;
|
|
1484
|
+
}
|
|
1226
1485
|
const submittedImages = pendingImages;
|
|
1486
|
+
recordTranscriptEntry("user", message);
|
|
1227
1487
|
appendBlock("you:", message, COLORS.user);
|
|
1228
1488
|
// Render attachments as a separate hint-colored footnote rather than
|
|
1229
1489
|
// inlining them into the user-message block. Keeps the transcript
|
|
@@ -1239,13 +1499,49 @@ export async function runTui(input) {
|
|
|
1239
1499
|
// Reset before dispatch so an in-flight error does not leave the user
|
|
1240
1500
|
// double-charged with the same attachments on retry.
|
|
1241
1501
|
clearPendingImages();
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
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);
|
|
1245
1521
|
return;
|
|
1246
1522
|
}
|
|
1247
|
-
|
|
1248
|
-
|
|
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})`;
|
|
1249
1545
|
}
|
|
1250
1546
|
async function handleImageSlashCommand(raw) {
|
|
1251
1547
|
const rest = raw.slice("/image".length).trim();
|
|
@@ -1307,8 +1603,25 @@ export async function runTui(input) {
|
|
|
1307
1603
|
appendDisplayBlock(block);
|
|
1308
1604
|
}
|
|
1309
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
|
+
}
|
|
1310
1622
|
// ---- bootstrap initial prompt ----------------------------------------------
|
|
1311
1623
|
if (input.initialPrompt) {
|
|
1624
|
+
recordTranscriptEntry("user", input.initialPrompt);
|
|
1312
1625
|
appendBlock("you:", input.initialPrompt, COLORS.user);
|
|
1313
1626
|
void input.session
|
|
1314
1627
|
.prompt({ message: input.initialPrompt, behavior: "follow_up" })
|