@kimchi-dev/kimchictl 0.0.7 → 0.0.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAEN,eAAe,EACf,eAAe,EACf,cAAc,GAEd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAiBxC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;0BAyBM,CAAA;AAE1B,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,OAAsB,EAAE;IAC1E,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5B,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC7B,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACR,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3B,KAAK,KAAK;YACT,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1B,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACR,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC7B,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACb,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACxB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAClC;YACC,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAA;YAC5D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC1B,OAAO,CAAC,CAAA;IACV,CAAC;AACF,CAAC;AAED,0EAA0E;AAE1E,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,IAAmB;IAC3D,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACpE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACxC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAClD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3C,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;KAC1C,CAAC,CAAA;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CACnB,iGAAiG,CACjG,CAAA;IACF,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;IAC9E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhG,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACpH,MAAM,UAAU,GACf,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAElH,mDAAmD;IACnD,MAAM,SAAS,GAAwD,EAAE,CAAA;IACzE,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACvF,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IACnG,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAEvG,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CACxE,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CACzD,CAAA;IACD,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CACjG,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CACzD,CAAA;IACD,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAC9F,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CACzD,CAAA;IACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAA;IAClE,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEnG,+DAA+D;IAC/D,IAAI,UAA8B,CAAA;IAClC,IAAI,aAAa,EAAE,CAAC;QACnB,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,CAAC;gBACJ,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;YACtD,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,UAAU,CAAC,0DAA0D,QAAQ,EAAE,CAAC,CAAA;YAC3F,CAAC;QACF,CAAC;aAAM,CAAC;YACP,UAAU,GAAG,aAAa,CAAA;QAC3B,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GACZ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QACjC,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,aAAa,CAAC,MAAM,GAAG,CAAC;QACxB,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,kBAAkB;QAClB,UAAU,KAAK,SAAS,CAAA;IAEzB,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CACnB,gLAAgL,CAChL,CAAA;IACF,CAAC;IACD,IAAI,YAAY,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,UAAU,CAAC,iFAAiF,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,IAAI,GAAoC,OAAO;QACpD,CAAC,CAAC;YACA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB;gBAC5E,CAAC,CAAC;oBACA,YAAY,EAAE;wBACb,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvD,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/D,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5D;iBACD;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD;QACF,CAAC,CAAC,SAAS,CAAA;IAEZ,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE/F,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;QAC1C,WAAW,EAAE,IAAI;QACjB,YAAY;QACZ,UAAU;QACV,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC,CAAA;IACF,yEAAyE;IACzE,qEAAqE;IACrE,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAE7D,IAAI,OAAO,GAAG,OAAO,CAAA;IACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,+DAA+D;QAC/D,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,cAAc,GAAG,IAAI;YAChC,KAAK;YACL,MAAM,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,cAAc,GAAG,CAAC;SACnF,CAAC,CAAA;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,0EAA0E,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QACzG,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,EAAE,CAAA;IACd,CAAC;IACD,mFAAmF;IACnF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1B,OAAO,CAAC,CAAA;AACT,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY,EAAE,OAAe;IACzD,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,UAAU,CAAC,aAAa,OAAO,kDAAkD,CAAC,CAAA;IAC7F,CAAC;IACD,OAAO,OAAO,CAAA;AACf,CAAC;AAED,wEAAwE;AAExE,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,IAAmB;IACzD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE;QAClE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;KACxD,CAAC,CAAA;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3D,6EAA6E;QAC7E,MAAM,IAAI,UAAU,CACnB,mDAAmD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CACjG,CAAA;IACF,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAEnE,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,CAAA;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,YAAY,IAAI,GAAG;QACrB,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC;QAC3B,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;QACjC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvB,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAC3B,CAAC,CAAC,GAAG,IAAI,EAAE;KACX,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5G,OAAO,CAAC,CAAA;AACT,CAAC;AAED,uEAAuE;AAEvE,KAAK,UAAU,MAAM,CAAC,IAAc,EAAE,IAAmB;IACxD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE;QACjE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;KACvD,CAAC,CAAA;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,8DAA8D,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,UAAU,CACnB,kDAAkD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAC/F,CAAA;IACF,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvC,qEAAqE;IACrE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAE1F,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,CAAA;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;IACzD,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC1F,OAAO,CAAC,CAAA;AACT,CAAC;AAED,0EAA0E;AAE1E,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,IAAmB;IAC3D,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACpE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;KACtC,CAAC,CAAA;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,iEAAiE,CAAC,CAAA;IACxF,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAEhC,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvC,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAEzE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE,CAAA;QACvD,MAAM,QAAQ,GAAG,qBAAqB,SAAS,CAAC,KAAK,WAAW,CAAA;QAChE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAClG,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,+EAA+E,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC/G,OAAO,CAAC,CAAA;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,OAAO,CAAC,CAAA;QACT,CAAC;IACF,CAAC;IAED,MAAM,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3C,OAAO,CAAC,CAAA;AACT,CAAC;AAED,0EAA0E;AAE1E,sFAAsF;AACtF,SAAS,SAAS,CAAC,MAA2B,EAAE,KAAc;IAC7D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,MAAM,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;IAChG,OAAO,GAAG,IAAI,KAAK,MAAM,SAAS,CAAA;AACnC,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAc;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,6EAA6E;AAC7E,SAAS,YAAY,CAAC,SAAoB,EAAE,GAAuB;IAClE,IAAI,CAAC,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9D,OAAO,CAAC,YAAY,EAAE,aAAa,SAAS,CAAC,KAAK,IAAI,MAAM,EAAE,EAAE,iBAAiB,SAAS,CAAC,GAAG,cAAc,CAAC,CAAA;AAC9G,CAAC;AAED,8FAA8F;AAC9F,SAAS,mBAAmB,CAC3B,SAAoB,EACpB,GAAkC,EAClC,KAAc,EACd,GAAS;IAET,MAAM,KAAK,GAAa,CAAC,GAAG,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IACrF,IAAI,SAAS,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;IAE/E,MAAM,IAAI,GAAG;QACZ,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACvD,SAAS,CAAC,UAAU;QACpB,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;QAC9D,WAAW,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM;KACpD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;IAEpE,IACC,SAAS,CAAC,aAAa,KAAK,SAAS;QACrC,SAAS,CAAC,QAAQ,KAAK,SAAS;QAChC,SAAS,CAAC,YAAY,KAAK,SAAS,EACnC,CAAC;QACF,KAAK,CAAC,IAAI,CACT,GAAG,CACF,KAAK,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EACjJ,KAAK,CACL,CACD,CAAA;IACF,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAY;IACvC,OAAO;QACN,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5E,SAAS,EAAE;YACV,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC5B;KACD,CAAA;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAA8D,YAAY,CAAC,YAAY,CAAC,CAAA"}
package/dist/version.d.ts CHANGED
@@ -3,5 +3,5 @@
3
3
  * version over this constant at build time; the committed value stays a
4
4
  * sentinel so source checkouts are recognizable.
5
5
  */
6
- export declare const VERSION = "0.0.7";
6
+ export declare const VERSION = "0.0.9";
7
7
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -3,5 +3,5 @@
3
3
  * version over this constant at build time; the committed value stays a
4
4
  * sentinel so source checkouts are recognizable.
5
5
  */
6
- export const VERSION = "0.0.7";
6
+ export const VERSION = "0.0.9";
7
7
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "//name": "Scoped under the kimchi-dev npm org (the GitHub org is getkimchi)",
3
3
  "name": "@kimchi-dev/kimchictl",
4
4
  "//version": "Placeholder, never bumped: the git tag is the version, stamped by release.yml at publish time",
5
- "version": "0.0.7",
5
+ "version": "0.0.9",
6
6
  "description": "Create and connect to kimchi remote workspaces from the terminal.",
7
7
  "keywords": [
8
8
  "kimchi",
@@ -42,7 +42,8 @@
42
42
  "commands": {
43
43
  "workspace": "./dist/commands/workspace.js",
44
44
  "ws": "./dist/commands/workspace.js",
45
- "ssh": "./dist/commands/ssh.js"
45
+ "ssh": "./dist/commands/ssh.js",
46
+ "templates": "./dist/commands/templates.js"
46
47
  }
47
48
  },
48
49
  "exports": {
@@ -0,0 +1,187 @@
1
+ import { checkResponse, fetchWithTimeout, resolveEndpoint } from "./http.js"
2
+ import { verifyApiKey } from "./keys.js"
3
+ import type { ApiOptions } from "./types.js"
4
+ import { RemoteNetworkError } from "./types.js"
5
+
6
+ /**
7
+ * Workspace-template client — read-only surface against the
8
+ * WorkspaceTemplatesAPI (proto: workspacetemplates_api.proto).
9
+ *
10
+ * Templates are named, organization-scoped presets of workspace creation
11
+ * parameters (resources, dependencies, egress policy, init script). They are
12
+ * curated by admins; `workspace create --template <name>` resolves them.
13
+ */
14
+
15
+ export interface WorkspaceTemplateSpec {
16
+ resources?: {
17
+ cpu?: string
18
+ memory?: string
19
+ pvcSize?: string
20
+ }
21
+ dependencies?: string[]
22
+ egressPolicy?: {
23
+ denyByDefault?: boolean
24
+ allowed?: string[]
25
+ denied?: string[]
26
+ }
27
+ initScript?: string
28
+ }
29
+
30
+ export interface WorkspaceTemplate {
31
+ id: string
32
+ organizationId: string
33
+ name: string
34
+ description: string
35
+ spec?: WorkspaceTemplateSpec
36
+ createdBy: string
37
+ updatedBy: string
38
+ createTime: Date
39
+ updateTime: Date
40
+ }
41
+
42
+ export interface WorkspaceTemplateOptions extends ApiOptions {
43
+ orgId?: string
44
+ }
45
+
46
+ async function resolveOrgId(apiKey: string, options?: WorkspaceTemplateOptions): Promise<string> {
47
+ return options?.orgId ?? (await verifyApiKey(apiKey, options))
48
+ }
49
+
50
+ export class TemplateNotFoundError extends Error {
51
+ constructor(ref: string) {
52
+ super(`No workspace template matches "${ref}" — list with: kimchictl workspace templates list`)
53
+ this.name = "TemplateNotFoundError"
54
+ }
55
+ }
56
+
57
+ export class AmbiguousTemplateError extends Error {
58
+ constructor(ref: string, candidates: string[]) {
59
+ super(`Multiple workspace templates match "${ref}": ${candidates.join(", ")} — use the full name`)
60
+ this.name = "AmbiguousTemplateError"
61
+ }
62
+ }
63
+
64
+ export async function listWorkspaceTemplates(
65
+ apiKey: string,
66
+ options?: WorkspaceTemplateOptions,
67
+ ): Promise<WorkspaceTemplate[]> {
68
+ const fetchImpl = options?.fetch ?? globalThis.fetch
69
+ const endpoint = resolveEndpoint(options)
70
+ const orgId = await resolveOrgId(apiKey, options)
71
+
72
+ const params = new URLSearchParams()
73
+ params.set("page.limit", "200")
74
+
75
+ const url = `${endpoint}/ai-optimizer/v1beta/organizations/${encodeURIComponent(orgId)}/workspace-templates?${params}`
76
+ const resp = await fetchWithTimeout(
77
+ url,
78
+ { method: "GET", headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/json" } },
79
+ fetchImpl,
80
+ 30_000,
81
+ options?.signal,
82
+ )
83
+ await checkResponse(resp, url)
84
+
85
+ const data: unknown = await resp.json().catch(() => undefined)
86
+ if (typeof data !== "object" || data === null) {
87
+ throw new RemoteNetworkError(`Unexpected response from ${endpoint}`)
88
+ }
89
+ const items = (data as { items?: unknown }).items
90
+ if (!Array.isArray(items)) {
91
+ throw new RemoteNetworkError(`Missing items array in workspace-templates response from ${endpoint}`)
92
+ }
93
+ return items.map((item) => mapWorkspaceTemplate(item, endpoint))
94
+ }
95
+
96
+ export async function getWorkspaceTemplate(
97
+ apiKey: string,
98
+ id: string,
99
+ options?: WorkspaceTemplateOptions,
100
+ ): Promise<WorkspaceTemplate> {
101
+ const fetchImpl = options?.fetch ?? globalThis.fetch
102
+ const endpoint = resolveEndpoint(options)
103
+ const orgId = await resolveOrgId(apiKey, options)
104
+
105
+ const url = `${endpoint}/ai-optimizer/v1beta/organizations/${encodeURIComponent(orgId)}/workspace-templates/${encodeURIComponent(id)}`
106
+ const resp = await fetchWithTimeout(
107
+ url,
108
+ { method: "GET", headers: { Authorization: `Bearer ${apiKey}` } },
109
+ fetchImpl,
110
+ 30_000,
111
+ options?.signal,
112
+ )
113
+ await checkResponse(resp, url)
114
+
115
+ const data: unknown = await resp.json().catch(() => undefined)
116
+ return mapWorkspaceTemplate(data, endpoint)
117
+ }
118
+
119
+ function mapWorkspaceTemplate(raw: unknown, endpoint: string): WorkspaceTemplate {
120
+ if (typeof raw !== "object" || raw === null) {
121
+ throw new RemoteNetworkError(`Invalid workspace-template entry in response from ${endpoint}`)
122
+ }
123
+ const r = raw as Record<string, unknown>
124
+
125
+ const id = typeof r.id === "string" && r.id.length > 0 ? r.id : undefined
126
+ if (!id) {
127
+ throw new RemoteNetworkError(`Missing workspace-template id in response from ${endpoint}`)
128
+ }
129
+
130
+ let createTime: Date = new Date(0)
131
+ if (typeof r.createTime === "string") {
132
+ const parsed = new Date(r.createTime)
133
+ if (!Number.isNaN(parsed.getTime())) createTime = parsed
134
+ }
135
+ let updateTime: Date = new Date(0)
136
+ if (typeof r.updateTime === "string") {
137
+ const parsed = new Date(r.updateTime)
138
+ if (!Number.isNaN(parsed.getTime())) updateTime = parsed
139
+ }
140
+
141
+ return {
142
+ id,
143
+ organizationId: typeof r.organizationId === "string" ? r.organizationId : "",
144
+ name: typeof r.name === "string" ? r.name : "",
145
+ description: typeof r.description === "string" ? r.description : "",
146
+ spec: mapTemplateSpec(r.spec),
147
+ createdBy: typeof r.createdBy === "string" ? r.createdBy : "",
148
+ updatedBy: typeof r.updatedBy === "string" ? r.updatedBy : "",
149
+ createTime,
150
+ updateTime,
151
+ }
152
+ }
153
+
154
+ function mapTemplateSpec(raw: unknown): WorkspaceTemplateSpec | undefined {
155
+ if (typeof raw !== "object" || raw === null) return undefined
156
+ const s = raw as Record<string, unknown>
157
+
158
+ const spec: WorkspaceTemplateSpec = {}
159
+
160
+ if (typeof s.resources === "object" && s.resources !== null) {
161
+ const res = s.resources as Record<string, unknown>
162
+ spec.resources = {
163
+ cpu: typeof res.cpu === "string" ? res.cpu : undefined,
164
+ memory: typeof res.memory === "string" ? res.memory : undefined,
165
+ pvcSize: typeof res.pvcSize === "string" ? res.pvcSize : undefined,
166
+ }
167
+ }
168
+
169
+ if (Array.isArray(s.dependencies)) {
170
+ spec.dependencies = s.dependencies.filter((d): d is string => typeof d === "string")
171
+ }
172
+
173
+ if (typeof s.egressPolicy === "object" && s.egressPolicy !== null) {
174
+ const eg = s.egressPolicy as Record<string, unknown>
175
+ spec.egressPolicy = {
176
+ denyByDefault: typeof eg.denyByDefault === "boolean" ? eg.denyByDefault : undefined,
177
+ allowed: Array.isArray(eg.allowed) ? eg.allowed.filter((d): d is string => typeof d === "string") : undefined,
178
+ denied: Array.isArray(eg.denied) ? eg.denied.filter((d): d is string => typeof d === "string") : undefined,
179
+ }
180
+ }
181
+
182
+ if (typeof s.initScript === "string") {
183
+ spec.initScript = s.initScript
184
+ }
185
+
186
+ return Object.keys(spec).length > 0 ? spec : undefined
187
+ }
@@ -32,6 +32,8 @@ export interface Workspace {
32
32
  cluster: string
33
33
  /** Client that owns the workspace (e.g. harness). */
34
34
  clientType: string
35
+ /** Template the workspace was created from, when set. */
36
+ templateName: string
35
37
  cpuMillicores?: number
36
38
  ramBytes?: number
37
39
  pvcSizeBytes?: number
@@ -278,6 +280,7 @@ export function mapWorkspace(raw: unknown, endpoint: string): Workspace {
278
280
  createdAt: createdAt ?? new Date(0),
279
281
  cluster: typeof r.cluster === "string" ? r.cluster : "",
280
282
  clientType: typeof r.clientType === "string" ? r.clientType : "",
283
+ templateName: typeof r.templateName === "string" ? r.templateName : "",
281
284
  cpuMillicores: cpuQuantityToMillicores(res?.cpu),
282
285
  ramBytes: byteQuantityToBytes(res?.memory),
283
286
  pvcSizeBytes: byteQuantityToBytes(res?.pvcSize),
@@ -1,4 +1,5 @@
1
1
  import { AmbiguousWorkspaceError, WorkspaceNotFoundError } from "../api/resolver.js"
2
+ import { AmbiguousTemplateError, TemplateNotFoundError } from "../api/templates.js"
2
3
  import { RemoteAuthError, RemoteNetworkError } from "../api/types.js"
3
4
  import { ModelsFetchError } from "../auth/models-providers.js"
4
5
  import { NotLoggedInError } from "../auth/resolve.js"
@@ -29,6 +30,8 @@ export function guardCommand<TDeps>(
29
30
  err instanceof ModelsFetchError ||
30
31
  err instanceof WorkspaceNotFoundError ||
31
32
  err instanceof AmbiguousWorkspaceError ||
33
+ err instanceof TemplateNotFoundError ||
34
+ err instanceof AmbiguousTemplateError ||
32
35
  err instanceof BridgeError ||
33
36
  err instanceof RemoteAuthError ||
34
37
  err instanceof RemoteNetworkError
@@ -3,6 +3,7 @@ import { guardCommand } from "./guard.js"
3
3
  import { runLogin } from "./login.js"
4
4
  import { runLogout } from "./logout.js"
5
5
  import { runSsh } from "./ssh.js"
6
+ import { runTemplates } from "./templates.js"
6
7
  import { runUpdate } from "./update.js"
7
8
  import { runVersion } from "./version.js"
8
9
  import { runWhoami } from "./whoami.js"
@@ -32,6 +33,7 @@ export const COMMANDS: CommandDefinition[] = [
32
33
  },
33
34
  { name: "ws", summary: "Alias for workspace", hidden: true, run: guardCommand(runWorkspace) },
34
35
  { name: "ssh", summary: "Connect to a workspace over SSH", run: guardCommand(runSsh) },
36
+ { name: "templates", summary: "Browse workspace templates (list | get)", run: guardCommand(runTemplates) },
35
37
  { name: "update", summary: "Check for and install a newer kimchictl release", run: guardCommand(runUpdate) },
36
38
  {
37
39
  name: "completion",
@@ -0,0 +1,126 @@
1
+ import { writeFileSync } from "node:fs"
2
+ import { join } from "node:path"
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"
4
+ import {
5
+ captureConsole,
6
+ cleanupTempDirs,
7
+ jsonResponse,
8
+ makeTempDir,
9
+ stubAgentDirEnv,
10
+ stubFetch,
11
+ } from "../test-support.js"
12
+ import { guardCommand } from "./guard.js"
13
+ import { runTemplates, type TemplatesDeps } from "./templates.js"
14
+
15
+ const guardedTemplates = guardCommand(runTemplates)
16
+
17
+ beforeEach(() => {
18
+ const dir = makeTempDir()
19
+ stubAgentDirEnv(dir)
20
+ writeFileSync(join(dir, "auth.json"), JSON.stringify({ "kimchi-dev": { type: "api_key", key: "key-1" } }))
21
+ })
22
+
23
+ afterEach(() => {
24
+ cleanupTempDirs()
25
+ vi.unstubAllEnvs()
26
+ vi.restoreAllMocks()
27
+ })
28
+
29
+ const TEMPLATE_JSON = {
30
+ id: "aaaa1111-2222-3333-4444-555555555555",
31
+ organizationId: "org-1",
32
+ name: "rust",
33
+ description: "Rust workspace",
34
+ spec: {
35
+ resources: { cpu: "2", memory: "4Gi", pvcSize: "20Gi" },
36
+ dependencies: ["jq", "node@22"],
37
+ egressPolicy: { denyByDefault: true, allowed: ["*.github.com"] },
38
+ initScript: "echo hi",
39
+ },
40
+ createdBy: "user-1",
41
+ updatedBy: "user-1",
42
+ createTime: "2026-01-01T00:00:00Z",
43
+ updateTime: "2026-01-01T00:00:00Z",
44
+ }
45
+
46
+ function templateFetch(items: unknown[]): typeof globalThis.fetch {
47
+ return stubFetch(async (url, init) => {
48
+ if (url.endsWith("workspace-tokens:verifyKey")) return jsonResponse({ organizationId: "org-1" })
49
+ if (url.includes("workspace-templates?")) return jsonResponse({ items })
50
+ if (url.endsWith("/workspace-templates/aaaa1111-2222-3333-4444-555555555555")) {
51
+ return jsonResponse(items[0])
52
+ }
53
+ throw new Error(`unexpected: ${init?.method ?? "GET"} ${url}`)
54
+ }) as typeof globalThis.fetch
55
+ }
56
+
57
+ async function run(
58
+ args: string[],
59
+ fetch: typeof globalThis.fetch,
60
+ deps: TemplatesDeps = {},
61
+ ): Promise<{ code: number; lines: string[]; errors: string[] }> {
62
+ const { lines, errors } = captureConsole()
63
+ const code = await guardedTemplates(args, { color: false, fetch, ...deps })
64
+ return { code, lines, errors }
65
+ }
66
+
67
+ describe("kimchictl templates (top-level)", () => {
68
+ it("prints group usage on help / missing verb", async () => {
69
+ const { code, lines } = await run(["help"], templateFetch([]))
70
+ expect(code).toBe(0)
71
+ expect(lines[0]).toContain("kimchictl templates <verb>")
72
+ })
73
+
74
+ it("renders the template table", async () => {
75
+ const { code, lines } = await run(["list"], templateFetch([TEMPLATE_JSON]), {
76
+ now: () => new Date("2026-01-01T03:00:00Z"),
77
+ })
78
+ expect(code).toBe(0)
79
+ const table = lines[0]?.split("\n") ?? []
80
+ expect(table[0]).toMatch(/^NAME\s+DESCRIPTION\s+CPU\s+MEMORY\s+STORAGE\s+AGE$/)
81
+ expect(table[1]).toMatch(/^rust\s+Rust workspace\s+2\s+4Gi\s+20Gi\s+3h$/)
82
+ })
83
+
84
+ it("renders json output", async () => {
85
+ const { code, lines } = await run(["list", "--output", "json"], templateFetch([TEMPLATE_JSON]))
86
+ expect(code).toBe(0)
87
+ const parsed = JSON.parse(lines.join(""))
88
+ expect(parsed[0]).toMatchObject({ name: "rust", description: "Rust workspace" })
89
+ })
90
+
91
+ it("renders the template detail card by name", async () => {
92
+ const { code, lines } = await run(["get", "rust"], templateFetch([TEMPLATE_JSON]), {
93
+ now: () => new Date("2026-01-01T03:00:00Z"),
94
+ })
95
+ expect(code).toBe(0)
96
+ const text = lines.join("\n")
97
+ expect(text).toContain("rust template")
98
+ expect(text).toContain("Rust workspace")
99
+ expect(text).toContain("deps jq, node@22")
100
+ expect(text).toContain("egress allow: *.github.com")
101
+ })
102
+
103
+ it("resolves by UUID without listing", async () => {
104
+ const fetch = templateFetch([TEMPLATE_JSON])
105
+ const calls: string[] = []
106
+ const trackedFetch = stubFetch(async (url, init) => {
107
+ calls.push(url)
108
+ return fetch(url, init)
109
+ }) as typeof globalThis.fetch
110
+
111
+ const { code } = await run(["get", "aaaa1111-2222-3333-4444-555555555555"], trackedFetch)
112
+ expect(code).toBe(0)
113
+ expect(calls.some((u) => u.includes("workspace-templates?"))).toBe(false)
114
+ })
115
+
116
+ it("errors on unknown template", async () => {
117
+ const { code, errors } = await run(["get", "nope"], templateFetch([]))
118
+ expect(code).toBe(1)
119
+ expect(errors[0]).toContain('No workspace template matches "nope"')
120
+ })
121
+
122
+ it("rejects unknown verbs and bad output", async () => {
123
+ expect((await run(["frobnicate"], templateFetch([]))).code).toBe(2)
124
+ expect((await run(["list", "--output", "yaml"], templateFetch([]))).code).toBe(2)
125
+ })
126
+ })
@@ -0,0 +1,204 @@
1
+ import { formatAge, formatBytes, formatMillicores } from "../api/resources.js"
2
+ import {
3
+ AmbiguousTemplateError,
4
+ getWorkspaceTemplate,
5
+ listWorkspaceTemplates,
6
+ TemplateNotFoundError,
7
+ type WorkspaceTemplate,
8
+ } from "../api/templates.js"
9
+ import { requireApiKey } from "../auth/resolve.js"
10
+ import { parseFlags, UsageError } from "./flags.js"
11
+ import { guardCommand } from "./guard.js"
12
+ import { formatTable } from "./table.js"
13
+
14
+ export interface TemplatesDeps {
15
+ fetch?: typeof globalThis.fetch
16
+ env?: NodeJS.ProcessEnv
17
+ /** Override TTY interactivity detection (tests). */
18
+ interactive?: boolean
19
+ /** Clock override for deterministic AGE columns (tests). */
20
+ now?: () => Date
21
+ /** ANSI colors on stdout (tests); defaults to stdout being a TTY. */
22
+ color?: boolean
23
+ }
24
+
25
+ const TEMPLATES_USAGE = `Usage:
26
+ kimchictl templates <verb> [options]
27
+
28
+ Verbs:
29
+ list List workspace templates (alias: ls)
30
+ get Show template details
31
+
32
+ Options:
33
+ --help Show this help`
34
+
35
+ /** `kimchictl templates <verb> …` — read-only browse of workspace templates. */
36
+ export async function runTemplates(args: string[], deps: TemplatesDeps = {}): Promise<number> {
37
+ const [verb, ...rest] = args
38
+ switch (verb) {
39
+ case "list":
40
+ case "ls":
41
+ return runTemplatesList(rest, deps)
42
+ case "get":
43
+ return runTemplatesGet(rest, deps)
44
+ case "help":
45
+ case "--help":
46
+ case "-h":
47
+ console.log(TEMPLATES_USAGE)
48
+ return 0
49
+ case undefined:
50
+ console.error(TEMPLATES_USAGE)
51
+ return 2
52
+ default:
53
+ console.error(`kimchictl templates: unknown verb "${verb}"`)
54
+ console.error(TEMPLATES_USAGE)
55
+ return 2
56
+ }
57
+ }
58
+
59
+ async function runTemplatesList(args: string[], deps: TemplatesDeps): Promise<number> {
60
+ const { values, positionals } = parseFlags("templates list", args, {
61
+ output: { type: "string", short: "o", default: "table" },
62
+ })
63
+ if (positionals.length > 0) {
64
+ throw new UsageError("kimchictl templates list: unexpected positional argument")
65
+ }
66
+ if (values.output !== "json" && values.output !== "table") {
67
+ throw new UsageError(
68
+ `kimchictl templates list: unsupported --output "${String(values.output)}" (expected table|json)`,
69
+ )
70
+ }
71
+
72
+ const { key } = requireApiKey(deps.env)
73
+ const templates = await listWorkspaceTemplates(key, { fetch: deps.fetch })
74
+
75
+ if (values.output === "json") {
76
+ console.log(JSON.stringify(templates.map(serializeTemplate), null, 2))
77
+ return 0
78
+ }
79
+
80
+ const now = deps.now?.() ?? new Date()
81
+ const rows = templates.map((t) => [
82
+ t.name || t.id.slice(0, 12),
83
+ t.description.length > 40 ? `${t.description.slice(0, 37)}…` : t.description || "-",
84
+ formatMillicores(t.spec?.resources?.cpu ? parseQuantity(t.spec.resources.cpu) : undefined),
85
+ formatBytes(t.spec?.resources?.memory ? parseByteQuantity(t.spec.resources.memory) : undefined),
86
+ formatBytes(t.spec?.resources?.pvcSize ? parseByteQuantity(t.spec.resources.pvcSize) : undefined),
87
+ formatAge(t.createTime, now),
88
+ ])
89
+ console.log(formatTable(["NAME", "DESCRIPTION", "CPU", "MEMORY", "STORAGE", "AGE"], rows))
90
+ return 0
91
+ }
92
+
93
+ async function runTemplatesGet(args: string[], deps: TemplatesDeps): Promise<number> {
94
+ const { values, positionals } = parseFlags("templates get", args, {
95
+ output: { type: "string", short: "o", default: "text" },
96
+ })
97
+ if (positionals.length !== 1) {
98
+ throw new UsageError("kimchictl templates get: expected exactly one template name or ID")
99
+ }
100
+ if (values.output !== "json" && values.output !== "text") {
101
+ throw new UsageError(
102
+ `kimchictl templates get: unsupported --output "${String(values.output)}" (expected text|json)`,
103
+ )
104
+ }
105
+
106
+ const { key } = requireApiKey(deps.env)
107
+ const ref = positionals[0] ?? ""
108
+
109
+ // Templates are addressed by ID in the API; when the ref is a name,
110
+ // list-and-match (the API has no by-name lookup).
111
+ let template: WorkspaceTemplate | undefined
112
+ if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(ref)) {
113
+ template = await getWorkspaceTemplate(key, ref, { fetch: deps.fetch })
114
+ } else {
115
+ const all = await listWorkspaceTemplates(key, { fetch: deps.fetch })
116
+ const matches = all.filter((t) => t.name === ref || t.name.startsWith(ref))
117
+ if (matches.length === 0) throw new TemplateNotFoundError(ref)
118
+ if (matches.length > 1)
119
+ throw new AmbiguousTemplateError(
120
+ ref,
121
+ matches.map((t) => t.name),
122
+ )
123
+ template = matches[0]
124
+ }
125
+ if (!template) throw new TemplateNotFoundError(ref)
126
+
127
+ if (values.output === "json") {
128
+ console.log(JSON.stringify(serializeTemplate(template), null, 2))
129
+ return 0
130
+ }
131
+
132
+ for (const line of renderTemplateCard(template, deps.color ?? false, deps.now?.() ?? new Date())) {
133
+ console.log(line)
134
+ }
135
+ return 0
136
+ }
137
+
138
+ function renderTemplateCard(template: WorkspaceTemplate, color: boolean, now: Date): string[] {
139
+ const dimText = (text: string) => (color ? `\x1b[2m${text}\x1b[0m` : text)
140
+ const lines: string[] = [`${template.name || template.id.slice(0, 12)} ${dimText("template")}`]
141
+ if (template.description) lines.push(dimText(` ${template.description}`))
142
+
143
+ const parts: string[] = []
144
+ const res = template.spec?.resources
145
+ if (res) {
146
+ if (res.cpu) parts.push(formatMillicores(parseQuantity(res.cpu)))
147
+ if (res.memory) parts.push(formatBytes(parseByteQuantity(res.memory)))
148
+ }
149
+ if (parts.length > 0) {
150
+ lines.push(dimText(` ${parts.join(" · ")}`))
151
+ }
152
+
153
+ const dependencies = template.spec?.dependencies
154
+ if (dependencies && dependencies.length > 0) {
155
+ lines.push(` deps ${dependencies.join(", ")}`)
156
+ }
157
+
158
+ const eg = template.spec?.egressPolicy
159
+ if (eg) {
160
+ const egParts: string[] = []
161
+ if (eg.denyByDefault === false) egParts.push("default-allow")
162
+ if (eg.allowed && eg.allowed.length > 0) egParts.push(`allow: ${eg.allowed.join(", ")}`)
163
+ if (eg.denied && eg.denied.length > 0) egParts.push(`deny: ${eg.denied.join(", ")}`)
164
+ if (egParts.length > 0) lines.push(dimText(` egress ${egParts.join(" · ")}`))
165
+ }
166
+
167
+ lines.push(dimText(` updated ${formatAge(template.updateTime, now)} ago`))
168
+ return lines
169
+ }
170
+
171
+ function serializeTemplate(t: WorkspaceTemplate): Record<string, unknown> {
172
+ return {
173
+ id: t.id,
174
+ name: t.name,
175
+ ...(t.description ? { description: t.description } : {}),
176
+ spec: t.spec,
177
+ ...(t.createdBy ? { createdBy: t.createdBy } : {}),
178
+ ...(t.updateTime.getTime() > 0 ? { updateTime: t.updateTime.toISOString() } : {}),
179
+ }
180
+ }
181
+
182
+ /** Parse a k8s CPU quantity string ("500m", "2") to millicores. */
183
+ function parseQuantity(q: string): number | undefined {
184
+ const value = Number.parseFloat(q.replace(/m$/, ""))
185
+ if (Number.isNaN(value)) return undefined
186
+ return q.endsWith("m") ? value : value * 1000
187
+ }
188
+
189
+ /** Parse a k8s memory/storage quantity string ("1Gi", "512Mi") to bytes. */
190
+ function parseByteQuantity(q: string): number | undefined {
191
+ const units: Record<string, number> = { Ki: 1024, Mi: 1024 ** 2, Gi: 1024 ** 3, Ti: 1024 ** 4 }
192
+ for (const [suffix, mult] of Object.entries(units)) {
193
+ if (q.endsWith(suffix)) {
194
+ const value = Number.parseFloat(q.slice(0, -suffix.length))
195
+ if (!Number.isNaN(value)) return value * mult
196
+ }
197
+ }
198
+ const value = Number.parseFloat(q)
199
+ if (!Number.isNaN(value)) return value
200
+ return undefined
201
+ }
202
+
203
+ /** Canonical harness-package entry: guard exit codes for the kimchi.commands manifest. */
204
+ export const run: (args: string[], deps?: TemplatesDeps) => Promise<number> = guardCommand(runTemplates)