@cotal-ai/cli 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +3 -2
- package/dist/command.js.map +1 -1
- package/dist/commands/completion.d.ts +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +84 -8
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/down.d.ts +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +6 -1
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/mint.d.ts +4 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +26 -3
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/personas.d.ts.map +1 -1
- package/dist/commands/personas.js +77 -7
- package/dist/commands/personas.js.map +1 -1
- package/dist/commands/send.d.ts +9 -6
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +58 -56
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +51 -18
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +14 -8
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +22 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -42
- package/dist/index.js.map +1 -1
- package/dist/lib/delivery-proc.d.ts +35 -0
- package/dist/lib/delivery-proc.d.ts.map +1 -0
- package/dist/lib/delivery-proc.js +128 -0
- package/dist/lib/delivery-proc.js.map +1 -0
- package/dist/lib/manager-proc.d.ts +11 -2
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +43 -3
- package/dist/lib/manager-proc.js.map +1 -1
- package/dist/lib/personas.d.ts +8 -0
- package/dist/lib/personas.d.ts.map +1 -1
- package/dist/lib/personas.js +31 -0
- package/dist/lib/personas.js.map +1 -1
- package/dist/lib/transient.d.ts +27 -0
- package/dist/lib/transient.d.ts.map +1 -0
- package/dist/lib/transient.js +48 -0
- package/dist/lib/transient.js.map +1 -0
- package/dist/render.js +1 -1
- package/dist/web/app.js +143 -44
- package/dist/web/index.html +45 -1
- package/package.json +2 -2
- package/dist/commands/signer.d.ts +0 -6
- package/dist/commands/signer.d.ts.map +0 -1
- package/dist/commands/signer.js +0 -30
- package/dist/commands/signer.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -4
- package/dist/commands/watch.d.ts.map +0 -1
- package/dist/commands/watch.js +0 -7
- package/dist/commands/watch.js.map +0 -1
package/dist/commands/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,WAAW,EACX,cAAc,EACd,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,WAAW,EACX,cAAc,EACd,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEvG,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAc;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,sCAAsC;YACjE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,gDAAgD;YAC9E,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,4DAA4D;YACzF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,2EAA2E;SACtG;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;IACxC,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC;YAC9C,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI;SACL,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,MAAM,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,yCAAyC,GAAG,2BAA2B,CAAC,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxF,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAElD,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,oCAAoC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,cAAc,QAAQ,WAAW,IAAI,EAAE,CAC5H,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,qGAAqG;IACrG,uCAAuC;IACvC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,kGAAkG;QAClG,6FAA6F;QAC7F,MAAM,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;wGAEwG;AACxG,KAAK,UAAU,uBAAuB,CAAC,KAAa,EAAE,MAAc;IAClE,IAAI,CAAC;QACH,8BAA8B,EAAE,CAAC;QACjC,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;AACH,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAmB,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5E,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAElD,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM;QAAE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,GAAG,KAAK,CAAC;IAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,UAAU,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,wGAAwG;IACxG,MAAM,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,0FAA0F;AAC1F,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,MAA2B,EAAE,OAAsB;IAChG,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,OAAO,EAAE;YAAE,OAAO;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;gBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;gBACxC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACzC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACd,MAAM,GAAG,IAAI,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;QACD,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,KAAc;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;wCAKwC;AACxC,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,KAAa,EACb,KAAyB,EACzB,QAA8B;IAE9B,MAAM,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED;;0BAE0B;AAC1B,SAAS,gBAAgB,CAAC,QAAiB;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAwB,CAAC;AACvE,CAAC;AAED;;gGAEgG;AAChG,KAAK,UAAU,SAAS,CACtB,QAAgB,EAChB,MAAc,EACd,KAAa,EACb,OAAe,WAAW;IAE1B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjC,IAAI,IAAI,GAA0B,aAAa,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QACpC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC7C,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB;IACvF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8JA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,6 @@ import { up } from "./commands/up.js";
|
|
|
3
3
|
import { down } from "./commands/down.js";
|
|
4
4
|
import { setup, go } from "./commands/setup.js";
|
|
5
5
|
import { join } from "./commands/join.js";
|
|
6
|
-
import { watch } from "./commands/watch.js";
|
|
7
6
|
import { console_ } from "./commands/console.js";
|
|
8
7
|
import { demo } from "./commands/demo.js";
|
|
9
8
|
import { web } from "./commands/web.js";
|
|
@@ -11,12 +10,11 @@ import { spawn, spawnComplete } from "./commands/spawn.js";
|
|
|
11
10
|
import { personas, personasComplete } from "./commands/personas.js";
|
|
12
11
|
import { completion, completionComplete, complete } from "./commands/completion.js";
|
|
13
12
|
import { mint } from "./commands/mint.js";
|
|
14
|
-
import { signer } from "./commands/signer.js";
|
|
15
13
|
import { channels } from "./commands/channels.js";
|
|
16
14
|
import { history } from "./commands/history.js";
|
|
17
15
|
import { feedback } from "./commands/feedback.js";
|
|
18
|
-
import {
|
|
19
|
-
/** The minimal mesh CLI: thin NATS clients (up/join/
|
|
16
|
+
import { send, sendComplete } from "./commands/send.js";
|
|
17
|
+
/** The minimal mesh CLI: thin NATS clients (up/join/console), plus `spawn` — a
|
|
20
18
|
* foreground agent launch that reuses the connector's launch recipe. Self-registers
|
|
21
19
|
* on import; heavier surfaces (the manager's control plane) register the same way
|
|
22
20
|
* and are composed at a root. */
|
|
@@ -58,34 +56,12 @@ const baseCommands = [
|
|
|
58
56
|
},
|
|
59
57
|
{
|
|
60
58
|
kind: "command",
|
|
61
|
-
name: "
|
|
59
|
+
name: "send",
|
|
62
60
|
group: "Mesh",
|
|
63
|
-
summary: "
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
kind: "command",
|
|
68
|
-
name: "dm",
|
|
69
|
-
group: "Mesh",
|
|
70
|
-
summary: "direct-message a peer by name",
|
|
71
|
-
usage: 'dm <agent> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
72
|
-
run: dm,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
kind: "command",
|
|
76
|
-
name: "msg",
|
|
77
|
-
group: "Mesh",
|
|
78
|
-
summary: "broadcast a message to a channel",
|
|
79
|
-
usage: 'msg <channel> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
80
|
-
run: msg,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
kind: "command",
|
|
84
|
-
name: "ask",
|
|
85
|
-
group: "Mesh",
|
|
86
|
-
summary: "anycast a message to a role (one instance answers)",
|
|
87
|
-
usage: 'ask <role> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
88
|
-
run: ask,
|
|
61
|
+
summary: "send one message, then exit — send <dm <agent> | msg <channel> | ask <role>> \"<text>\"",
|
|
62
|
+
usage: 'send <dm <agent> | msg <channel> | ask <role>> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
63
|
+
run: send,
|
|
64
|
+
complete: sendComplete,
|
|
89
65
|
},
|
|
90
66
|
{
|
|
91
67
|
kind: "command",
|
|
@@ -98,6 +74,9 @@ const baseCommands = [
|
|
|
98
74
|
kind: "command",
|
|
99
75
|
name: "demo",
|
|
100
76
|
group: "Mesh",
|
|
77
|
+
// A dev/test traffic generator (see docs/protocol-view.md) — runnable, but kept off the
|
|
78
|
+
// top-level help so it doesn't clutter the user-facing surface.
|
|
79
|
+
hidden: true,
|
|
101
80
|
summary: "replay a scripted multi-agent trace (all message types) to exercise the console/web — --space <s> [--interval <ms>] [--once]",
|
|
102
81
|
run: demo,
|
|
103
82
|
},
|
|
@@ -112,7 +91,7 @@ const baseCommands = [
|
|
|
112
91
|
kind: "command",
|
|
113
92
|
name: "spawn",
|
|
114
93
|
group: "Agents",
|
|
115
|
-
summary: "launch an agent in this terminal from a file — spawn <name-or-path> | --name <n> --config <path> [--agent <a>] [--role <r>]",
|
|
94
|
+
summary: "launch an agent in this terminal from a file — spawn [<name-or-path>] (defaults to the `default` persona) | --name <n> --config <path> [--agent <a>] [--role <r>]",
|
|
116
95
|
run: spawn,
|
|
117
96
|
complete: spawnComplete,
|
|
118
97
|
},
|
|
@@ -120,7 +99,7 @@ const baseCommands = [
|
|
|
120
99
|
kind: "command",
|
|
121
100
|
name: "personas",
|
|
122
101
|
group: "Agents",
|
|
123
|
-
summary: "list/manage local personas (.cotal/agents) — personas <list [-v] | show <name> | new <name> (--prompt <t>|--from <f>) [--role <r>] [--model <m>] | rm <name> --force>",
|
|
102
|
+
summary: "list/manage local personas (.cotal/agents) — personas <list [-v] [--running] | show <name> | edit <name> | new <name> (--prompt <t>|--from <f>) [--role <r>] [--model <m>] | rm <name> --force>",
|
|
124
103
|
run: personas,
|
|
125
104
|
complete: personasComplete,
|
|
126
105
|
},
|
|
@@ -128,7 +107,7 @@ const baseCommands = [
|
|
|
128
107
|
kind: "command",
|
|
129
108
|
name: "completion",
|
|
130
109
|
group: "Agents",
|
|
131
|
-
summary: "
|
|
110
|
+
summary: "shell completion — completion <bash|zsh|fish|powershell | install [shell]>",
|
|
132
111
|
run: completion,
|
|
133
112
|
complete: completionComplete,
|
|
134
113
|
},
|
|
@@ -143,16 +122,9 @@ const baseCommands = [
|
|
|
143
122
|
kind: "command",
|
|
144
123
|
name: "mint",
|
|
145
124
|
group: "Mesh",
|
|
146
|
-
summary: "mint a creds file for a space (auth mode) — mint <name> --profile <agent|observer> [--out <path>]",
|
|
125
|
+
summary: "mint a creds file for a space (auth mode) — mint <name> --profile <agent|observer> [--out <path>]; --signer emits a stripped account-signing file (no operator key) for a containerized manager",
|
|
147
126
|
run: mint,
|
|
148
127
|
},
|
|
149
|
-
{
|
|
150
|
-
kind: "command",
|
|
151
|
-
name: "signer",
|
|
152
|
-
group: "Mesh",
|
|
153
|
-
summary: "emit a stripped signer file (account signing material only, no operator key) for a containerized manager — [--out <path>] [--force]",
|
|
154
|
-
run: signer,
|
|
155
|
-
},
|
|
156
128
|
{
|
|
157
129
|
kind: "command",
|
|
158
130
|
name: "channels",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
type Opts = {
|
|
2
|
+
space?: string;
|
|
3
|
+
server?: string;
|
|
4
|
+
spawn?: string[];
|
|
5
|
+
};
|
|
6
|
+
/** True if the delivery daemon we started for this folder is still running (pid file + liveness). */
|
|
7
|
+
export declare function deliveryUp(): boolean;
|
|
8
|
+
/** Cutover preflight — the FIRST action, BEFORE the daemon can bind: stop any old Plane-3-hosting
|
|
9
|
+
* manager (live `manager.pid` without the delivery-aware marker) so it never double-binds the
|
|
10
|
+
* daemon's durables. A delivery-aware (this-build) manager is left running. No-op on a fresh install. */
|
|
11
|
+
export declare function stopOldHostingManagerIfPresent(): void;
|
|
12
|
+
/** Start the delivery daemon detached (pid in `.cotal/delivery.pid`, output to `.cotal/delivery.log`),
|
|
13
|
+
* stopped by `cotal down`. Re-execs this CLI's `deliver` command; the daemon loads the pre-minted
|
|
14
|
+
* scoped `delivery.creds` (written by {@link ensureDelivery}) — it never sees the signer. */
|
|
15
|
+
export declare function startDeliveryDetached(o?: Opts): number;
|
|
16
|
+
/** Make the server-side delivery daemon available (auth mode only). FAILS CLOSED: refuses to launch
|
|
17
|
+
* while an old Plane-3-hosting manager is live (the preflight should have stopped it) so the daemon
|
|
18
|
+
* never double-binds. Mints a SCOPED `delivery` cred from the local signer ONCE, writes it to
|
|
19
|
+
* `.cotal/delivery.creds` (0600), and launches the daemon WITHOUT signer access. Best-effort — callers
|
|
20
|
+
* treat it as non-fatal (a missing daemon degrades durable delivery, never live). */
|
|
21
|
+
export declare function ensureDelivery(o?: Opts): Promise<{
|
|
22
|
+
running: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
/** Stop the detached delivery daemon if we started one, and drop its creds file. */
|
|
25
|
+
export declare function stopDelivery(): void;
|
|
26
|
+
/** Bring up the control plane in the correct cutover order: OLD-manager preflight → delivery daemon
|
|
27
|
+
* (auth only, fails closed on a live old manager) → manager (lifecycle, writes the delivery-aware
|
|
28
|
+
* marker). The manager no longer depends on the daemon (it hosts no Plane-3), so the daemon is started
|
|
29
|
+
* first only to close the old-manager double-bind window and so freshly-spawned agents find the
|
|
30
|
+
* `ctl.delivery` responder for their boot self-join (a miss honest-degrades to live-only). */
|
|
31
|
+
export declare function ensureControlPlane(o?: Opts): Promise<{
|
|
32
|
+
running: boolean;
|
|
33
|
+
}>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=delivery-proc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-proc.d.ts","sourceRoot":"","sources":["../../src/lib/delivery-proc.ts"],"names":[],"mappings":"AAmBA,KAAK,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAWlE,qGAAqG;AACrG,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAeD;;0GAE0G;AAC1G,wBAAgB,8BAA8B,IAAI,IAAI,CAKrD;AAED;;8FAE8F;AAC9F,wBAAgB,qBAAqB,CAAC,CAAC,GAAE,IAAS,GAAG,MAAM,CAgB1D;AAED;;;;sFAIsF;AACtF,wBAAsB,cAAc,CAAC,CAAC,GAAE,IAAS,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA6BhF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,IAAI,IAAI,CAanC;AAED;;;;+FAI+F;AAC/F,wBAAsB,kBAAkB,CAAC,CAAC,GAAE,IAAS,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAIpF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { existsSync, openSync, closeSync, writeFileSync, readFileSync, rmSync } from "node:fs";
|
|
3
|
+
import { DEFAULT_SERVER, authDir, findCotalRoot, loadSpaceAuth, mintCreds, newIdentity, waitForDeliveryLease, } from "@cotal-ai/core";
|
|
4
|
+
import { selfArgv } from "./self-exec.js";
|
|
5
|
+
import { resolveSpace } from "./status.js";
|
|
6
|
+
import { cotalPath } from "./paths.js";
|
|
7
|
+
import { ensureManager, managerHasDeliveryMarker, managerUp, stopManager } from "./manager-proc.js";
|
|
8
|
+
const PID_PATH = () => cotalPath("delivery.pid");
|
|
9
|
+
const CREDS_PATH = () => cotalPath("delivery.creds");
|
|
10
|
+
function alive(pid) {
|
|
11
|
+
try {
|
|
12
|
+
process.kill(pid, 0);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** True if the delivery daemon we started for this folder is still running (pid file + liveness). */
|
|
20
|
+
export function deliveryUp() {
|
|
21
|
+
const p = PID_PATH();
|
|
22
|
+
if (!existsSync(p))
|
|
23
|
+
return false;
|
|
24
|
+
const pid = Number(readFileSync(p, "utf8").trim());
|
|
25
|
+
return Number.isFinite(pid) && alive(pid);
|
|
26
|
+
}
|
|
27
|
+
/** True when this folder runs an authed mesh — the only mode with a delivery daemon (Plane-3 needs the
|
|
28
|
+
* trusted reader; open dev mode is live-only). */
|
|
29
|
+
function hasAuth() {
|
|
30
|
+
return Boolean(loadSpaceAuth(authDir(findCotalRoot())));
|
|
31
|
+
}
|
|
32
|
+
/** True if an OLD (pre-delivery-daemon) Plane-3-hosting manager is live: a `manager.pid` that is alive
|
|
33
|
+
* but carries no delivery-aware marker. Such a manager still calls `startPlane3` and would double-bind
|
|
34
|
+
* `fanout`/`reader` against the new daemon. */
|
|
35
|
+
function oldHostingManagerLive() {
|
|
36
|
+
return managerUp() && !managerHasDeliveryMarker();
|
|
37
|
+
}
|
|
38
|
+
/** Cutover preflight — the FIRST action, BEFORE the daemon can bind: stop any old Plane-3-hosting
|
|
39
|
+
* manager (live `manager.pid` without the delivery-aware marker) so it never double-binds the
|
|
40
|
+
* daemon's durables. A delivery-aware (this-build) manager is left running. No-op on a fresh install. */
|
|
41
|
+
export function stopOldHostingManagerIfPresent() {
|
|
42
|
+
if (oldHostingManagerLive()) {
|
|
43
|
+
console.error("• stopping an old Plane-3-hosting manager before starting the delivery daemon (cutover preflight)");
|
|
44
|
+
stopManager();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Start the delivery daemon detached (pid in `.cotal/delivery.pid`, output to `.cotal/delivery.log`),
|
|
48
|
+
* stopped by `cotal down`. Re-execs this CLI's `deliver` command; the daemon loads the pre-minted
|
|
49
|
+
* scoped `delivery.creds` (written by {@link ensureDelivery}) — it never sees the signer. */
|
|
50
|
+
export function startDeliveryDetached(o = {}) {
|
|
51
|
+
const fd = openSync(cotalPath("delivery.log"), "a");
|
|
52
|
+
const [node, ...self] = selfArgv();
|
|
53
|
+
const args = [
|
|
54
|
+
...self,
|
|
55
|
+
"deliver",
|
|
56
|
+
"--space",
|
|
57
|
+
o.space ?? resolveSpace(process.cwd()),
|
|
58
|
+
"--server",
|
|
59
|
+
o.server ?? DEFAULT_SERVER,
|
|
60
|
+
];
|
|
61
|
+
const child = spawn(node, args, { detached: true, stdio: ["ignore", fd, fd] });
|
|
62
|
+
closeSync(fd);
|
|
63
|
+
child.unref();
|
|
64
|
+
writeFileSync(PID_PATH(), String(child.pid));
|
|
65
|
+
return child.pid ?? 0;
|
|
66
|
+
}
|
|
67
|
+
/** Make the server-side delivery daemon available (auth mode only). FAILS CLOSED: refuses to launch
|
|
68
|
+
* while an old Plane-3-hosting manager is live (the preflight should have stopped it) so the daemon
|
|
69
|
+
* never double-binds. Mints a SCOPED `delivery` cred from the local signer ONCE, writes it to
|
|
70
|
+
* `.cotal/delivery.creds` (0600), and launches the daemon WITHOUT signer access. Best-effort — callers
|
|
71
|
+
* treat it as non-fatal (a missing daemon degrades durable delivery, never live). */
|
|
72
|
+
export async function ensureDelivery(o = {}) {
|
|
73
|
+
if (!hasAuth())
|
|
74
|
+
return { running: false }; // open dev mode — no daemon, agents are live-only
|
|
75
|
+
if (oldHostingManagerLive()) {
|
|
76
|
+
console.error("✗ delivery: an old Plane-3-hosting manager is still live (no delivery-aware marker). Refusing to start the daemon — run `cotal down` first, then retry.");
|
|
77
|
+
return { running: false };
|
|
78
|
+
}
|
|
79
|
+
// Mint a scoped delivery cred (used to probe readiness; for a NEW launch it is ALSO the daemon's cred,
|
|
80
|
+
// written to disk). The daemon process reads the file and never holds the signer (a container mounts it
|
|
81
|
+
// read-only). A reuse (daemon already up) mints a throwaway probe cred — the running daemon keeps its
|
|
82
|
+
// own creds file.
|
|
83
|
+
const auth = loadSpaceAuth(authDir(findCotalRoot()));
|
|
84
|
+
const id = newIdentity();
|
|
85
|
+
const creds = await mintCreds(auth, id, "delivery");
|
|
86
|
+
const space = o.space ?? resolveSpace(process.cwd());
|
|
87
|
+
const server = o.server ?? DEFAULT_SERVER;
|
|
88
|
+
if (!deliveryUp()) {
|
|
89
|
+
writeFileSync(CREDS_PATH(), creds, { mode: 0o600 });
|
|
90
|
+
startDeliveryDetached({ ...o, space, server });
|
|
91
|
+
}
|
|
92
|
+
// ALWAYS wait for the daemon to be READY (lease flipped ready AFTER it bound ctl.delivery) before
|
|
93
|
+
// returning — for a fresh launch AND a reused live daemon — so agents the manager spawns next find the
|
|
94
|
+
// responder for their boot self-join. Non-fatal on timeout: the boot self-join reconciles with backoff,
|
|
95
|
+
// which is the real safety net for a slow start or a later outage.
|
|
96
|
+
const ready = await waitForDeliveryLease({ servers: server, space, creds, id: id.id });
|
|
97
|
+
if (!ready)
|
|
98
|
+
console.error("• delivery daemon not yet ready (responder not bound) — boot durable joins will reconcile when it is");
|
|
99
|
+
return { running: true };
|
|
100
|
+
}
|
|
101
|
+
/** Stop the detached delivery daemon if we started one, and drop its creds file. */
|
|
102
|
+
export function stopDelivery() {
|
|
103
|
+
rmSync(CREDS_PATH(), { force: true });
|
|
104
|
+
const p = PID_PATH();
|
|
105
|
+
if (!existsSync(p))
|
|
106
|
+
return;
|
|
107
|
+
const pid = Number(readFileSync(p, "utf8").trim());
|
|
108
|
+
if (Number.isFinite(pid)) {
|
|
109
|
+
try {
|
|
110
|
+
process.kill(pid, "SIGTERM");
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* already gone */
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
rmSync(p);
|
|
117
|
+
}
|
|
118
|
+
/** Bring up the control plane in the correct cutover order: OLD-manager preflight → delivery daemon
|
|
119
|
+
* (auth only, fails closed on a live old manager) → manager (lifecycle, writes the delivery-aware
|
|
120
|
+
* marker). The manager no longer depends on the daemon (it hosts no Plane-3), so the daemon is started
|
|
121
|
+
* first only to close the old-manager double-bind window and so freshly-spawned agents find the
|
|
122
|
+
* `ctl.delivery` responder for their boot self-join (a miss honest-degrades to live-only). */
|
|
123
|
+
export async function ensureControlPlane(o = {}) {
|
|
124
|
+
stopOldHostingManagerIfPresent();
|
|
125
|
+
await ensureDelivery(o);
|
|
126
|
+
return ensureManager(o);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=delivery-proc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-proc.js","sourceRoot":"","sources":["../../src/lib/delivery-proc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
/** True if the manager we started for this folder is still running (pid file + liveness). */
|
|
2
2
|
export declare function managerUp(): boolean;
|
|
3
|
+
/** True if the live manager carries a delivery-aware marker BOUND to its current pid (i.e. it's THIS
|
|
4
|
+
* build, non-hosting). Fail-closed: the marker stores the pid it was written for, and this requires it
|
|
5
|
+
* to equal the live `manager.pid` — a stale marker left by a crash, a mismatch, or an unparseable file
|
|
6
|
+
* all read as NOT delivery-aware, so a live old hosting `manager.pid` can't be mistaken for non-hosting
|
|
7
|
+
* and the delivery preflight stops it. */
|
|
8
|
+
export declare function managerHasDeliveryMarker(): boolean;
|
|
3
9
|
/** True if any process's full command line matches `pattern` (`pgrep -f`). Detects processes that
|
|
4
10
|
* have no pid file — the cmux-tab manager and the driving session — which live in cmux tabs. */
|
|
5
11
|
export declare function pgrepMatches(pattern: string): boolean;
|
|
6
12
|
/** True if a cmux-runtime manager is live for this space. Its cmux tab persists after the process
|
|
7
|
-
* exits, so a workspace listing isn't proof — the process is.
|
|
8
|
-
*
|
|
13
|
+
* exits, so a workspace listing isn't proof — the process is. A cmux manager runs `… supervise
|
|
14
|
+
* --runtime cmux … --space <space> …`; match order-independently (the session launcher emits the
|
|
15
|
+
* two flags adjacent, but a hand-typed launch may reorder them) by narrowing to `--runtime cmux`
|
|
16
|
+
* processes, then confirming the exact `--space <space>` token in each one's argv. Works for prod
|
|
17
|
+
* `cotal.js` and dev `cotal.ts` alike. */
|
|
9
18
|
export declare function cmuxManagerRunning(space: string): boolean;
|
|
10
19
|
/** Start the control-plane manager detached (pid in `.cotal/manager.pid`, output to
|
|
11
20
|
* `.cotal/manager.log`), stopped by `cotal down`. Re-execs this same CLI's `supervise` — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAwBA,6FAA6F;AAC7F,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,IAAI,OAAO,CAOlD;AAED;iGACiG;AACjG,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;2CAK2C;AAC3C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAczD;AAED;;;;0FAI0F;AAC1F,wBAAgB,oBAAoB,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAAG,MAAM,CAoB1G;AAED;iEACiE;AACjE,wBAAgB,aAAa,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAIjH;AAED;wGACwG;AACxG,wBAAgB,WAAW,IAAI,IAAI,CAalC"}
|
package/dist/lib/manager-proc.js
CHANGED
|
@@ -5,6 +5,12 @@ import { selfArgv } from "./self-exec.js";
|
|
|
5
5
|
import { resolveSpace } from "./status.js";
|
|
6
6
|
import { cotalPath } from "./paths.js";
|
|
7
7
|
const PID_PATH = () => cotalPath("manager.pid");
|
|
8
|
+
/** Sibling marker of `manager.pid`: written by THIS build's manager (which no longer hosts Plane-3 —
|
|
9
|
+
* the server-side delivery daemon does). Its presence beside a live `manager.pid` proves the manager is
|
|
10
|
+
* "delivery-aware" / non-hosting. A live `manager.pid` WITHOUT this marker is an OLD (pre-delivery-daemon)
|
|
11
|
+
* manager that still calls `startPlane3` — the delivery preflight stops it before the daemon binds, so an
|
|
12
|
+
* old hosting manager never double-binds `fanout`/`reader` against the new daemon. */
|
|
13
|
+
const DELIVERY_AWARE_MARKER = () => cotalPath("manager.delivery-aware");
|
|
8
14
|
function alive(pid) {
|
|
9
15
|
try {
|
|
10
16
|
process.kill(pid, 0); // signal 0: liveness probe, doesn't actually signal
|
|
@@ -22,16 +28,46 @@ export function managerUp() {
|
|
|
22
28
|
const pid = Number(readFileSync(p, "utf8").trim());
|
|
23
29
|
return Number.isFinite(pid) && alive(pid);
|
|
24
30
|
}
|
|
31
|
+
/** True if the live manager carries a delivery-aware marker BOUND to its current pid (i.e. it's THIS
|
|
32
|
+
* build, non-hosting). Fail-closed: the marker stores the pid it was written for, and this requires it
|
|
33
|
+
* to equal the live `manager.pid` — a stale marker left by a crash, a mismatch, or an unparseable file
|
|
34
|
+
* all read as NOT delivery-aware, so a live old hosting `manager.pid` can't be mistaken for non-hosting
|
|
35
|
+
* and the delivery preflight stops it. */
|
|
36
|
+
export function managerHasDeliveryMarker() {
|
|
37
|
+
const markerPath = DELIVERY_AWARE_MARKER();
|
|
38
|
+
const pidPath = PID_PATH();
|
|
39
|
+
if (!existsSync(markerPath) || !existsSync(pidPath))
|
|
40
|
+
return false;
|
|
41
|
+
const markerPid = Number(readFileSync(markerPath, "utf8").trim());
|
|
42
|
+
const livePid = Number(readFileSync(pidPath, "utf8").trim());
|
|
43
|
+
return Number.isFinite(markerPid) && Number.isFinite(livePid) && markerPid === livePid;
|
|
44
|
+
}
|
|
25
45
|
/** True if any process's full command line matches `pattern` (`pgrep -f`). Detects processes that
|
|
26
46
|
* have no pid file — the cmux-tab manager and the driving session — which live in cmux tabs. */
|
|
27
47
|
export function pgrepMatches(pattern) {
|
|
28
48
|
return spawnSync("pgrep", ["-f", pattern], { stdio: "ignore" }).status === 0;
|
|
29
49
|
}
|
|
30
50
|
/** True if a cmux-runtime manager is live for this space. Its cmux tab persists after the process
|
|
31
|
-
* exits, so a workspace listing isn't proof — the process is.
|
|
32
|
-
*
|
|
51
|
+
* exits, so a workspace listing isn't proof — the process is. A cmux manager runs `… supervise
|
|
52
|
+
* --runtime cmux … --space <space> …`; match order-independently (the session launcher emits the
|
|
53
|
+
* two flags adjacent, but a hand-typed launch may reorder them) by narrowing to `--runtime cmux`
|
|
54
|
+
* processes, then confirming the exact `--space <space>` token in each one's argv. Works for prod
|
|
55
|
+
* `cotal.js` and dev `cotal.ts` alike. */
|
|
33
56
|
export function cmuxManagerRunning(space) {
|
|
34
|
-
|
|
57
|
+
// `--` so pgrep doesn't read the leading `--runtime` as one of its own options.
|
|
58
|
+
const r = spawnSync("pgrep", ["-f", "--", "--runtime cmux"], { encoding: "utf8" });
|
|
59
|
+
if (r.status !== 0)
|
|
60
|
+
return false;
|
|
61
|
+
// Match the `--space` value as a whole token (space names can't contain whitespace), so `demo`
|
|
62
|
+
// never matches a process serving `demo2`. Both `--space <space>` and `--space=<space>` forms.
|
|
63
|
+
const servesSpace = (args) => {
|
|
64
|
+
const tokens = args.split(/\s+/);
|
|
65
|
+
return tokens.some((t, i) => (t === "--space" && tokens[i + 1] === space) || t === `--space=${space}`);
|
|
66
|
+
};
|
|
67
|
+
return r.stdout
|
|
68
|
+
.split("\n")
|
|
69
|
+
.filter(Boolean)
|
|
70
|
+
.some((pid) => servesSpace(spawnSync("ps", ["-p", pid, "-o", "args="], { encoding: "utf8" }).stdout));
|
|
35
71
|
}
|
|
36
72
|
/** Start the control-plane manager detached (pid in `.cotal/manager.pid`, output to
|
|
37
73
|
* `.cotal/manager.log`), stopped by `cotal down`. Re-execs this same CLI's `supervise` — the
|
|
@@ -54,6 +90,9 @@ export function startManagerDetached(o = {}) {
|
|
|
54
90
|
closeSync(fd);
|
|
55
91
|
child.unref();
|
|
56
92
|
writeFileSync(PID_PATH(), String(child.pid));
|
|
93
|
+
// Mark this manager as delivery-aware (non-hosting) so the delivery preflight can tell it apart from
|
|
94
|
+
// an old Plane-3-hosting manager. Written next to the pid, removed together in stopManager / down.
|
|
95
|
+
writeFileSync(DELIVERY_AWARE_MARKER(), String(child.pid));
|
|
57
96
|
return child.pid ?? 0;
|
|
58
97
|
}
|
|
59
98
|
/** Make the control plane available: reuse a manager already running for this folder, else start
|
|
@@ -68,6 +107,7 @@ export function ensureManager(o = {}) {
|
|
|
68
107
|
* so the two don't both answer the control plane (queue-grouped requests would split between them). */
|
|
69
108
|
export function stopManager() {
|
|
70
109
|
const p = PID_PATH();
|
|
110
|
+
rmSync(DELIVERY_AWARE_MARKER(), { force: true }); // drop the marker with the pid (gone either way)
|
|
71
111
|
if (!existsSync(p))
|
|
72
112
|
return;
|
|
73
113
|
const pid = Number(readFileSync(p, "utf8").trim());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/personas.d.ts
CHANGED
|
@@ -21,4 +21,12 @@ export declare function personasDir(root?: string): string;
|
|
|
21
21
|
export declare function listPersonas(root?: string): PersonaEntry[];
|
|
22
22
|
/** Just the persona names — the completion source for `cotal spawn` and `personas show/rm`. */
|
|
23
23
|
export declare function listPersonaNames(root?: string): string[];
|
|
24
|
+
/** Channels the persona files declare (`subscribe` ∪ `allowSubscribe` ∪ `allowPublish`), as the
|
|
25
|
+
* completion source for `cotal msg`/`send`. Wildcard ACL scopes (`team.>`, `*`) are excluded —
|
|
26
|
+
* they're read/post patterns, not concrete send targets. Authoritative-for-intent, not a claim the
|
|
27
|
+
* channel exists on the broker. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
28
|
+
export declare function listDeclaredChannels(root?: string): string[];
|
|
29
|
+
/** Roles the persona files declare (the `role:` field), as the completion source for
|
|
30
|
+
* `cotal ask`/`anycast`. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
31
|
+
export declare function listDeclaredRoles(root?: string): string[];
|
|
24
32
|
//# sourceMappingURL=personas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/lib/personas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,IAAI,SAAc,GAAG,MAAM,CAEtD;AAED;gGACgG;AAChG,wBAAgB,YAAY,CAAC,IAAI,SAAc,GAAG,YAAY,EAAE,CAiB/D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAE7D"}
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/lib/personas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,IAAI,SAAc,GAAG,MAAM,CAEtD;AAED;gGACgG;AAChG,wBAAgB,YAAY,CAAC,IAAI,SAAc,GAAG,YAAY,EAAE,CAiB/D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAE7D;AAeD;;;uGAGuG;AACvG,wBAAgB,oBAAoB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAMjE;AAED;gGACgG;AAChG,wBAAgB,iBAAiB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAE9D"}
|
package/dist/lib/personas.js
CHANGED
|
@@ -32,4 +32,35 @@ export function listPersonas(root = cotalRoot()) {
|
|
|
32
32
|
export function listPersonaNames(root = cotalRoot()) {
|
|
33
33
|
return listPersonas(root).map((p) => p.name);
|
|
34
34
|
}
|
|
35
|
+
/** Collect a deduped, sorted set of values declared across every persona file, via `pick`.
|
|
36
|
+
* Fail-closed: a single malformed file throws — the aggregate can't be trusted, so a derived
|
|
37
|
+
* completer must decline rather than offer a silently-partial set. The broken file is named loudly
|
|
38
|
+
* by `cotal personas list`, so the error stays visible; it's just not buried in a <TAB>. */
|
|
39
|
+
function declaredValues(root, pick) {
|
|
40
|
+
const out = new Set();
|
|
41
|
+
for (const e of listPersonas(root)) {
|
|
42
|
+
if (e.error)
|
|
43
|
+
throw new Error(`persona "${e.name}" is unparseable: ${e.error}`);
|
|
44
|
+
for (const v of pick(e.def))
|
|
45
|
+
if (v)
|
|
46
|
+
out.add(v);
|
|
47
|
+
}
|
|
48
|
+
return [...out].sort();
|
|
49
|
+
}
|
|
50
|
+
/** Channels the persona files declare (`subscribe` ∪ `allowSubscribe` ∪ `allowPublish`), as the
|
|
51
|
+
* completion source for `cotal msg`/`send`. Wildcard ACL scopes (`team.>`, `*`) are excluded —
|
|
52
|
+
* they're read/post patterns, not concrete send targets. Authoritative-for-intent, not a claim the
|
|
53
|
+
* channel exists on the broker. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
54
|
+
export function listDeclaredChannels(root = cotalRoot()) {
|
|
55
|
+
return declaredValues(root, (d) => [
|
|
56
|
+
...(d.subscribe ?? []),
|
|
57
|
+
...(d.allowSubscribe ?? []),
|
|
58
|
+
...(d.allowPublish ?? []),
|
|
59
|
+
]).filter((ch) => !ch.includes(">") && !ch.includes("*"));
|
|
60
|
+
}
|
|
61
|
+
/** Roles the persona files declare (the `role:` field), as the completion source for
|
|
62
|
+
* `cotal ask`/`anycast`. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
63
|
+
export function listDeclaredRoles(root = cotalRoot()) {
|
|
64
|
+
return declaredValues(root, (d) => [d.role]);
|
|
65
|
+
}
|
|
35
66
|
//# sourceMappingURL=personas.js.map
|
package/dist/lib/personas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/lib/personas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkBvC,mEAAmE;AACnE,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,SAAS,EAAE;IAC5C,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;gGACgG;AAChG,MAAM,UAAU,YAAY,CAAC,IAAI,GAAG,SAAS,EAAE;IAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,wDAAwD;IACrE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,SAAS,EAAE;IACjD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"}
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/lib/personas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CotalEndpoint } from "@cotal-ai/core";
|
|
2
|
+
/**
|
|
3
|
+
* A one-shot, write-capable connection for the headless commands that touch the live mesh
|
|
4
|
+
* (`dm`/`msg`/`ask`, and `personas list --running`). Resolve space/server/creds the same way
|
|
5
|
+
* everywhere, open a transient endpoint that never joins the roster, do the one thing, stop.
|
|
6
|
+
* Fail-loud throughout — an unreachable server or a space mismatch exits, never degrades.
|
|
7
|
+
*/
|
|
8
|
+
export interface ConnectValues {
|
|
9
|
+
space?: string;
|
|
10
|
+
server?: string;
|
|
11
|
+
creds?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Resolve where to connect and with what credentials: an explicit `--creds` wins; else self-mint
|
|
14
|
+
* from `.cotal/auth` so an AUTH-mode mesh admits us; else connect bare on an open mesh. Exits with
|
|
15
|
+
* a clear message on a `--space` that contradicts the local auth, or an unreachable server. */
|
|
16
|
+
export declare function resolveConnect(values: ConnectValues): Promise<{
|
|
17
|
+
server: string;
|
|
18
|
+
space: string;
|
|
19
|
+
creds?: string;
|
|
20
|
+
}>;
|
|
21
|
+
/** Open a transient endpoint: it watches presence (so name→id resolution and the live roster work)
|
|
22
|
+
* but never registers itself, binds no inbox, and consumes no channels. The caller stops it. */
|
|
23
|
+
export declare function openTransient(values: ConnectValues, name: string): Promise<{
|
|
24
|
+
ep: CotalEndpoint;
|
|
25
|
+
space: string;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=transient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transient.d.ts","sourceRoot":"","sources":["../../src/lib/transient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAQd,MAAM,gBAAgB,CAAC;AAIxB;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;gGAEgG;AAChG,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB5D;AAED;iGACiG;AACjG,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAe/C"}
|