@autopo/mcp 0.1.1 → 0.4.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/kit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"kit.js","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kit.js","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAO,QAAQ,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,OAAO,SAAU,SAAQ,KAAK;CAAG;AAiCvC,iGAAiG;AACjG,MAAM,OAAO,OAAO;IACT,GAAG,CAAK;IACR,MAAM,CAAQ;IACd,YAAY,CAAU;IACtB,SAAS,CAAoB;IAC7B,KAAK,CAAS;IACf,cAAc,GAA2C,IAAI,CAAA;IAC7D,WAAW,GAAG,IAAI,GAAG,EAAmF,CAAA;IACxG,WAAW,GAA2D,IAAI,CAAA;IAElF,YAAY,OAAuB;QACjC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAA;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAA;QACxG,MAAM,IAAI,GAAG,IAAI,CAAU,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4GAA4G;IAC5G,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO;YAAE,OAAO,GAAG,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,SAAS,SAAS,CAAC,CAAkE,CAAA;YACxI,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAA;YAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QACrD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA;QACpG,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAA4B,CAAA;QAClG,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAA;QAC7C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IACpE,CAAC;CACF;AASD,gGAAgG;AAChG,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,OAAiB,EAAE,WAAoB;IAC3E,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAA;AACrJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,WAAoB,EAAE,IAAI,GAA+C,EAAE;IAClH,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9I,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,WAAoB,EAAE,YAAsB;IACnF,OAAO,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACvJ,CAAC;AAID,+FAA+F;AAC/F,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,MAAmC,EAAE,QAAQ,GAAa,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7H,OAAO,aAAa,CAAC;QACnB,aAAa,EAAE;YACb,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC1B,OAAO;gBACP,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAW;aAC3E,CAAC;SACH;KACF,CAAC,CAAA;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,OAAe;IACjE,OAAO,aAAa,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AAC/F,CAAC;AAED,oIAAoI;AACpI,MAAM,UAAU,MAAM,CAA8D,GAAkB,EAAE,GAAW;IACjH,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAiD,CAAA;IAC5F,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACrD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAM,CAAA;IAC5D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,OAAO,CAAC,GAAkB,EAAE,GAAW,EAAE,OAAe,EAAE,GAAG,GAAG,eAAe,EAAE,EAAE,GAAG,aAAa;IACjH,MAAM,GAAG,GAAG,MAAM,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACxI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAClH,OAAO,IAAI,CAAA;AACb,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,CAAU,EAAE,IAAsC,EAAE,GAAkB;IACzG,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACzC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAA;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAA;IAC3G,MAAM,MAAM,GAAG,MAAM,CAAuB,GAAG,EAAE,SAAS,CAAC,CAAA;IAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAA;IACnG,IAAI,MAAM,KAAK,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAA;IAChH,OAAO,GAAG,CAAC,SAAS,EAAE,8BAA8B,EAAE;QACpD,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACnI,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAU,EAA4B,EAAE,CACtE,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAA6B,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAA;AAEvG,MAAM,YAAY,GAAG,CAAC,CAAU,EAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,CAA2B,CAAC,OAAO,CAAC,CAAC,CAAA;AAEpJ,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,KAA+B;IACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAA;AACzG,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;AACtE,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,KAAK,CAAC,KAAgC;IACpD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAA;IACxF,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAA;IAC3B,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5E,CAAC;AAMD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4FAA4F,CAAC,EAAE,CAAA;AAEpK,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAA;AA0BD,iFAAiF;AACjF,MAAM,CAAC,MAAM,OAAO,GAAc,EAAE,CAAA;AAEpC,MAAM,UAAU,cAAc,CAAC,IAAkD,EAAE,KAAc;IAC/F,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,YAAY,EAAE,IAAI,KAAK,MAAM;QAC7B,eAAe,EAAE,IAAI,KAAK,aAAa;QACvC,cAAc,EAAE,IAAI,KAAK,MAAM;QAC/B,aAAa,EAAE,KAAK;KACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAkD,EAAE,EAAW;IACrF,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,mCAAmC,CAAC,GAAG,IAAI,CAAA,CAAC,uDAAuD;QACxG,IAAI,CAAC,6BAA6B,CAAC,GAAG,IAAI,CAAA,CAAC,6CAA6C;IAC1F,CAAC;IACD,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAA;IACnE,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAA8B,MAAiB,EAAE,CAAU,EAAE,IAAY,EAAE,IAAqB,EAAE,OAAuB;IAC7I,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAA;IAChC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAU,CAAA;IACzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW;QACX,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,WAAW,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7C,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAA;IACD,OAAO,CAAC,IAAI,CAAC;QACX,IAAI;QACJ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI;QACJ,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,CAA4B;QACnE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAA;IACF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAiC,EAAE,GAAkB,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAC1C,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAA;YAClE,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;YAC7I,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA;QAC3H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChD,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAA;YAClE,CAAC;YACD,IAAI,KAAK,YAAY,SAAS;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAU,CAAC,CAAA;AACd,CAAC"}
package/dist/prompts.js CHANGED
@@ -20,6 +20,7 @@ export function registerPrompts(server) {
20
20
  `Work in steps, telling me what you see after each one:\n` +
21
21
  `1. brand_brain, so the teaser speaks like the company. Then create_video with a title and a brief written from the idea and the brand (who it's for, what it must show, the one thing to feel), seconds ${seconds ?? 20}.\n` +
22
22
  `2. get_video and read the drafted shots back to me in one line each. Ask the Creative Director to tighten them: ask_agent creative, with production set to the video id, telling her the brief and what to change. Apply her proposals with apply_chat_action or set_video_shots.\n` +
23
+ ` If I name recordings, screen captures or a folder of footage, put them on the shots with upload_media (video, files with their paths, in_order or a shot per file) instead of generating those shots; a plan zip or folder goes in with import_video_plan {path}.\n` +
23
24
  `3. studio_overview to pick the models; set them with update_video {style: {models: {clip, keyframe, voice, music}}} only if the defaults don't fit the brief.\n` +
24
25
  `4. video_keyframes (I confirm the cost in the dialog), then wait_for_video, then critique_video stage keyframes. Show me what the critic kept and ask if the look is right.\n` +
25
26
  `5. make_video_media what all (I confirm), wait_for_video until nothing is generating, critique_video stage clips.\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAE5E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;AAEpH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE;QACtC,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,2FAA2F;QACxG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;KAChH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CACtB,oBAAoB,KAAK,CAAC,OAAO,CAAC,mSAAmS,CACtU,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE;QACrC,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,4GAA4G;QACzH,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACzE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACtF,CAAC;KACH,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAC5C,UAAU,OAAO,IAAI,IAAI,WAAW,KAAK,IAAI,MAAM,UAAU,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM;QACxF,0DAA0D;QAC1D,2MAA2M,OAAO,IAAI,EAAE,KAAK;QAC7N,qRAAqR;QACrR,iKAAiK;QACjK,+KAA+K;QAC/K,qHAAqH;QACrH,2JAA2J;QAC3J,8DAA8D,CACjE,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,0FAA0F;QACvG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;KAChH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CACtB,kCAAkC,KAAK,CAAC,OAAO,CAAC,iSAAiS,CAClV,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE;QACrC,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,gDAAgD;QAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;KAChH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CACtB,2BAA2B,KAAK,CAAC,OAAO,CAAC,qHAAqH,CAC/J,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE;QACxC,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,0HAA0H;QACvI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;KAChH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CACtB,iBAAiB,KAAK,CAAC,OAAO,CAAC,sSAAsS,CACtU,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
package/dist/resources.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /** What a client can read as resources: the guides, a company's home and brand brain, the API's OpenAPI document. */
2
2
  import { ResourceTemplate } from '@modelcontextprotocol/server';
3
- import { STUDIO_GUIDE, TEASER_GUIDE } from './guides.js';
3
+ import { CODE_FILM_GUIDE, STUDIO_GUIDE, TEASER_GUIDE } from './guides.js';
4
4
  export function registerResources(server, s) {
5
5
  server.registerResource('studio-guide', 'autopoiesis://guide/studio', {
6
6
  title: 'Studio guide',
@@ -12,6 +12,20 @@ export function registerResources(server, s) {
12
12
  description: 'The teaser loop from a terminal, tool by tool: brief, storyboard, keyframes, clips, render.',
13
13
  mimeType: 'text/markdown',
14
14
  }, async (uri) => ({ contents: [{ uri: uri.href, mimeType: 'text/markdown', text: TEASER_GUIDE }] }));
15
+ server.registerResource('code-film-guide', 'autopoiesis://guide/code-film', {
16
+ title: 'Making a code film',
17
+ description: 'A video cut as a Remotion project, from a terminal: convert, read, write (checked), frames, render, versions; the three rules.',
18
+ mimeType: 'text/markdown',
19
+ }, async (uri) => ({ contents: [{ uri: uri.href, mimeType: 'text/markdown', text: CODE_FILM_GUIDE }] }));
20
+ server.registerResource('film-kit-skill', 'autopoiesis://film-kit/SKILL.md', {
21
+ title: 'Code films: the Creative Director’s guide',
22
+ description: 'The autopoiesis-film-code skill’s SKILL.md, live from the platform: the method, the kit, the rules, the file list (the references themselves are the hosted server’s autopoiesis://film-kit/ resources).',
23
+ mimeType: 'text/markdown',
24
+ }, async (uri) => {
25
+ const skill = (await s.api.get('/api/skills/autopoiesis-film-code'));
26
+ const files = (skill.file_paths ?? []).length ? `\n\n---\nFiles of this guide: ${(skill.file_paths ?? []).join(', ')} (read them through the hosted MCP server: read_studio_guide {file: "film-code/<path>"}).\n` : '';
27
+ return { contents: [{ uri: uri.href, mimeType: 'text/markdown', text: `${skill.content ?? ''}${files}` }] };
28
+ });
15
29
  server.registerResource('openapi', 'autopoiesis://openapi', {
16
30
  title: 'REST API (OpenAPI)',
17
31
  description: 'The platform’s OpenAPI document: every endpoint api_request can call.',
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** The Autopoiesis MCP server: one person's tool on the platform, as them. */
2
2
  import { McpServer } from '@modelcontextprotocol/server';
3
- export declare const VERSION = "0.1.1";
3
+ export declare const VERSION = "0.4.0";
4
4
  export declare const DEFAULT_API_URL = "https://autopoiesis-api-267405155162.us-west1.run.app";
5
5
  export declare const DEFAULT_APP_URL = "https://app.autopoiesis.app";
6
6
  /** The cell mark, served by the landing site (an inline data URI would ride along on every result). */
@@ -19,6 +19,8 @@ export interface ServerOptions {
19
19
  publicUrl?: string;
20
20
  /** Extra origins the views may load media from. */
21
21
  mediaDomains?: string[];
22
+ /** The server runs on the person's machine: upload_media and import_video_plan may read paths. */
23
+ local?: boolean;
22
24
  fetch?: typeof fetch;
23
25
  }
24
26
  export declare function createServer(options: ServerOptions): McpServer;
package/dist/server.js CHANGED
@@ -3,12 +3,13 @@ import { McpServer } from '@modelcontextprotocol/server';
3
3
  import { Api } from './api.js';
4
4
  import { Session } from './kit.js';
5
5
  import { registerApps } from './apps.js';
6
+ import { logCalls } from './calllog.js';
6
7
  import { registerPrompts } from './prompts.js';
7
8
  import { registerResources } from './resources.js';
8
9
  import { registerCompanyTools } from './tools/company.js';
9
10
  import { registerMarketingAndApiTools } from './tools/marketing.js';
10
11
  import { registerStudioTools } from './tools/studio.js';
11
- export const VERSION = '0.1.1';
12
+ export const VERSION = '0.4.0';
12
13
  export const DEFAULT_API_URL = 'https://autopoiesis-api-267405155162.us-west1.run.app';
13
14
  export const DEFAULT_APP_URL = 'https://app.autopoiesis.app';
14
15
  /** The cell mark, served by the landing site (an inline data URI would ride along on every result). */
@@ -17,7 +18,9 @@ export const INSTRUCTIONS = [
17
18
  'Autopoiesis runs a person\'s AI-run company: a team of agents (CEO, CTO, engineers, Rose the Creative Director, marketers) that works on tasks, asks the founder for decisions in the Board inbox, delivers artifacts, makes media and videos in the Studio and posts for the company. You act as the signed-in person, in their companies, with their permissions.',
18
19
  'Start with list_companies (pass `company` when they have several; otherwise you are asked) and founder_home. Read before you write.',
19
20
  'Anything that spends credits (generate_media, make_video_media, video_keyframes) or decides something (decide, create_posts, cancel_task, delete_video) opens a confirmation dialog for the person; never work around it. Costs are shown in that dialog.',
21
+ 'Your own files (recordings, screen captures, photos, a voice track) go into the Studio with upload_media: paths on this machine when the server runs here, URLs otherwise; attach_media puts one on a shot; import_video_plan takes a plan.json or zip with the footage it names. Never say files cannot be uploaded: upload_media does it.',
20
22
  'A teaser video: the make_a_teaser prompt, or the guide at autopoiesis://guide/teaser. Agents answer through ask_agent; a video is best made with the Creative Director beside it (ask_agent creative, with `production`). api_request reaches every other endpoint; api_reference is the manual. open_in_app opens a page of the web app.',
23
+ 'A video can be cut in code (a Remotion project its storyboard compiles to): convert_video_to_code, then get_video_code, write_video_code (every write is checked at once), check_video_code, video_frames (free stills) and render_video; the guide is autopoiesis://guide/code-film.',
21
24
  ].join(' ');
22
25
  export function createServer(options) {
23
26
  const apiUrl = (options.apiUrl ?? DEFAULT_API_URL).replace(/\/+$/, '');
@@ -27,8 +30,10 @@ export function createServer(options) {
27
30
  appUrl: options.appUrl ?? DEFAULT_APP_URL,
28
31
  ...(options.mediaDomains ? { mediaDomains: options.mediaDomains } : {}),
29
32
  ...(options.publicUrl ? { publicUrl: options.publicUrl } : {}),
33
+ local: options.local ?? false,
30
34
  });
31
35
  const server = new McpServer({ name: 'autopoiesis', title: 'Autopoiesis', version: VERSION, description: 'Your AI-run company, from your own tool.', websiteUrl: 'https://autopoiesis.app', icons: [ICON] }, { instructions: INSTRUCTIONS, capabilities: { logging: {} } });
36
+ logCalls(server, api);
32
37
  registerCompanyTools(server, session);
33
38
  registerStudioTools(server, session);
34
39
  registerMarketingAndApiTools(server, session);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,uDAAuD,CAAA;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAE5D,uGAAuG;AACvG,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,qCAAqC,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;AAE7G,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qWAAqW;IACrW,qIAAqI;IACrI,2PAA2P;IAC3P,2UAA2U;CAC5U,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAcX,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC3J,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;QACzC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,0CAA0C,EAAE,UAAU,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAC9K,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAC9D,CAAA;IACD,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7C,eAAe,CAAC,MAAM,CAAC,CAAA;IACvB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,11 @@
3
3
  * teaser loop from a terminal: create_video → get_video → ask_agent creative (production) → update_video models →
4
4
  * video_keyframes (confirm) → critique_video → make_video_media (confirm) → wait_for_video → render_video → wait → open.
5
5
  * Anything that spends credits first says what it will cost and asks, through the host's own dialog.
6
+ *
7
+ * Code films (the platform's API contract §91): a video's storyboard compiled to a small Remotion project, edited file by
8
+ * file from a terminal: convert_video_to_code → get_video_code → write_video_code (checked at once) → check_video_code →
9
+ * video_frames → render_video, with video_code_versions and restore_video_code to go back. The same seven tools, with
10
+ * the same names and arguments, are on the hosted server.
6
11
  */
7
12
  import type { McpServer } from '@modelcontextprotocol/server';
8
13
  import { Session } from '../kit.js';
@@ -1,11 +1,52 @@
1
1
  import { z } from 'zod';
2
- import { pick, rows, trimmed } from '../api.js';
3
- import { COMPANY_ARG, PAGE_ARGS, confirm, define, isInputRequired, money, resolveCompany } from '../kit.js';
2
+ import { ApiError, pick, rows, trimmed } from '../api.js';
3
+ import { COMPANY_ARG, PAGE_ARGS, ToolError, confirm, define, isInputRequired, money, resolveCompany } from '../kit.js';
4
+ import { describeApiError, expandPath, fileRefs, findFile, mb, noLocalFiles, pathSource, planFromPath, planFromUrl, progressOf, rewriteRefs, upload, urlSource, waitReady } from '../files.js';
4
5
  const MEDIA_KEYS = ['id', 'kind', 'status', 'title', 'model', 'source', 'purpose', 'url', 'thumb_url', 'duration_seconds', 'width', 'height', 'cost_cents', 'error', 'created_at'];
5
6
  const MODEL_KEYS = ['key', 'kind', 'purpose', 'label', 'maker', 'short', 'quality', 'speed', 'cents', 'unit', 'aspect_ratios', 'durations', 'available'];
6
7
  const VOICE_KEYS = ['key', 'label', 'description', 'gender', 'age', 'accent'];
7
8
  const VIDEO_KEYS = ['id', 'title', 'status', 'aspect_ratio', 'running_seconds', 'shot_count', 'updated_at'];
8
9
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
10
+ const PROJECT_KEYS = ['id', 'production_id', 'engine', 'kit_version', 'remotion_version', 'version', 'scenes', 'check', 'preview_url', 'can_check', 'can_render', 'updated_at'];
11
+ const FRAME_KEYS = ['id', 'kind', 'status', 'title', 'url', 'thumb_url', 'width', 'height', 'params', 'error', 'created_at'];
12
+ const VIDEO_ARG = { video: z.string().describe('the video id (list_videos)') };
13
+ const film = (video, tail = '') => `/api/studio/productions/${video}/film${tail}`;
14
+ /** A FilmProject for a tool result: the head's files as paths, the scenes, the last check and the latest versions; not the
15
+ * props schema (the web editor's form) nor file contents (get_video_code with `file`). */
16
+ function codeProject(project, versions = 10) {
17
+ const head = project.head ?? {};
18
+ const files = head.files ?? [];
19
+ const out = { ...pick(project, PROJECT_KEYS), files: Array.isArray(files) ? files : Object.keys(files).sort(), sources: head.sources ?? {} };
20
+ if (project.versions) {
21
+ out.versions = project.versions.slice(0, versions);
22
+ out.more_versions = project.versions.length > versions;
23
+ }
24
+ return out;
25
+ }
26
+ /** `code` on get_video: where a code film stands (from the production's `film` summary), or null for a joiner film. */
27
+ function codeSummary(video) {
28
+ if (video.engine !== 'remotion')
29
+ return null;
30
+ const summary = video.film;
31
+ if (!summary)
32
+ return { version: 0, checked: false, errors: null, warnings: null, scenes: 0, preview_url: null, next: 'convert_video_to_code makes the project from the storyboard' };
33
+ const checked = Boolean(summary.ok);
34
+ return {
35
+ version: summary.version ?? 0,
36
+ checked,
37
+ checked_at: summary.checked_at ?? null,
38
+ errors: summary.errors ?? 0,
39
+ warnings: summary.warnings ?? 0,
40
+ scenes: summary.scene_count ?? 0,
41
+ preview_url: summary.preview_url ?? null,
42
+ next: checked ? 'video_frames, then render_video' : "get_video_code shows the check's errors; write_video_code and check_video_code fix and re-check it",
43
+ };
44
+ }
45
+ /** What a write, a check or a restore answers: the version, its check, the scenes and the preview link. */
46
+ function checked(data, version) {
47
+ const project = data.project ?? {};
48
+ return { version: version ?? data.version ?? null, check: data.check ?? project.check ?? null, scenes: project.scenes ?? [], preview_url: project.preview_url ?? null };
49
+ }
9
50
  const busy = (status) => Boolean(status && ['queued', 'generating', 'running', 'rendering', 'processing', 'pending'].includes(status));
10
51
  /** What a video still waits for: shots whose media, voice or takes are being made; a running render; and what no one
11
52
  * has made yet (a generate/footage shot without a picture, a line without its voice). */
@@ -39,6 +80,31 @@ function brief(video) {
39
80
  models: video.style?.models ?? null,
40
81
  };
41
82
  }
83
+ /** Put library items on shots and send the whole storyboard back (shots keep what they had: only the ids are sent). */
84
+ async function attach(s, video, assignments) {
85
+ const shots = video.shots ?? [];
86
+ const rows = shots.map((sh) => {
87
+ const row = { id: sh.id };
88
+ const a = sh.id ? assignments.get(sh.id) : undefined;
89
+ if (!a)
90
+ return row;
91
+ if (a.media) {
92
+ row.media = a.media;
93
+ if (!sh.visual || sh.visual === 'generate')
94
+ row.visual = 'footage';
95
+ }
96
+ if (a.voice)
97
+ row.voice = a.voice;
98
+ if (a.keep_audio !== undefined)
99
+ row.keep_audio = a.keep_audio;
100
+ return row;
101
+ });
102
+ for (const id of assignments.keys())
103
+ if (!shots.some((sh) => sh.id === id))
104
+ throw new ToolError(`No shot ${id} in "${video.title ?? video.id}" (get_video lists them).`);
105
+ return (await s.api.put(`/api/studio/productions/${video.id}/shots`, { shots: rows }));
106
+ }
107
+ const companyOf = (video) => video.company_id ?? video.company;
42
108
  export function registerStudioTools(server, s) {
43
109
  define(server, s, 'studio_overview', {
44
110
  title: 'Studio overview',
@@ -155,11 +221,14 @@ export function registerStudioTools(server, s) {
155
221
  });
156
222
  define(server, s, 'get_video', {
157
223
  title: 'Get video',
158
- description: "A video's storyboard in full: every shot (picture, line, text, seconds, direction, takes), the style and models it is made with, the presenter, cards, the finished render, and what is missing before it can render.",
224
+ description: "A video's storyboard in full: every shot (picture, line, text, seconds, direction, takes), the style and models it is made with, the presenter, cards, the finished render, and what is missing before it can render. `engine` says how it is cut (ffmpeg: the joiner; remotion: a code film) and `code` where a code film stands (version, checked, errors; get_video_code for the project).",
159
225
  input: { video: z.string() },
160
226
  group: 'studio',
161
227
  ui: 'ui://autopoiesis/storyboard.html',
162
- }, async (args) => s.api.get(`/api/studio/productions/${args.video}`));
228
+ }, async (args) => {
229
+ const video = (await s.api.get(`/api/studio/productions/${args.video}`));
230
+ return { ...video, code: codeSummary(video) };
231
+ });
163
232
  define(server, s, 'create_video', {
164
233
  title: 'Create video',
165
234
  description: "Start a video: a title, the brief (who it's for, what it must show, the one thing to feel), the shape (16:9, 9:16, 1:1, 4:5) and the length in seconds. The platform drafts the storyboard from the brief (free); then shape it with set_video_shots or ask the Creative Director (ask_agent creative, with `production`). `draft: false` makes an empty video to fill yourself.",
@@ -194,6 +263,130 @@ export function registerStudioTools(server, s) {
194
263
  group: 'studio',
195
264
  kind: 'write',
196
265
  }, async (args) => s.api.put(`/api/studio/productions/${args.video}/shots`, { shots: args.shots }));
266
+ define(server, s, 'upload_media', {
267
+ title: 'Upload your files',
268
+ description: "Put your own files into the Studio library: recordings, screen captures, photos, a voice track, music. Each item is a `path` on the machine this server runs on (a file, or a folder: every image, clip and audio file in it, in name order) or a public `url`. The server uploads them itself, in 8 MB chunks, straight to the platform. With `video`, the files belong to that video; an item's `shot` (a shot id) puts it on that shot (a clip or image becomes the shot's picture as footage, audio becomes its voice line); `in_order: true` puts the files, in order, on the video's shots that have no picture yet. Returns the media ids (processing for a moment, then ready; wait_for_video waits for them).",
269
+ input: {
270
+ ...COMPANY_ARG,
271
+ video: z.string().optional().describe('the video the files are for (optional)'),
272
+ files: z.array(z.object({
273
+ path: z.string().optional().describe('a file or folder on this machine'),
274
+ url: z.string().optional().describe('a public http(s) link'),
275
+ title: z.string().optional(),
276
+ shot: z.string().optional().describe('a shot id to put this file on'),
277
+ })).min(1).max(60),
278
+ in_order: z.boolean().optional().describe('put the files, in order, on the shots without a picture'),
279
+ },
280
+ group: 'studio',
281
+ kind: 'write',
282
+ }, async (args, ctx) => {
283
+ let video = null;
284
+ let companyId;
285
+ if (args.video) {
286
+ video = (await s.api.get(`/api/studio/productions/${args.video}`));
287
+ companyId = companyOf(video);
288
+ }
289
+ if (!companyId) {
290
+ const picked = await resolveCompany(s, args, ctx);
291
+ if (isInputRequired(picked))
292
+ return picked;
293
+ companyId = picked;
294
+ }
295
+ const cid = companyId;
296
+ const wanted = [];
297
+ for (const item of args.files) {
298
+ if (item.path && item.url)
299
+ throw new ToolError(`Give a path or a url, not both (${item.path}).`);
300
+ if (item.url) {
301
+ const url = item.url;
302
+ wanted.push({ source: () => urlSource(url, s.api.fetchImpl), name: url, title: item.title, shot: item.shot });
303
+ }
304
+ else if (item.path) {
305
+ if (!s.local)
306
+ throw noLocalFiles(s, cid);
307
+ const paths = await expandPath(item.path);
308
+ if (paths.length > 1 && item.shot)
309
+ throw new ToolError(`${item.path} is a folder: give shot ids per file, or in_order.`);
310
+ for (const path of paths)
311
+ wanted.push({ source: () => pathSource(path), name: path, title: paths.length === 1 ? item.title : undefined, shot: item.shot });
312
+ }
313
+ else {
314
+ throw new ToolError('Each file needs a path (on this machine) or a url.');
315
+ }
316
+ }
317
+ if (wanted.length > 60)
318
+ throw new ToolError(`${wanted.length} files: at most 60 in one call.`);
319
+ const progress = progressOf(ctx);
320
+ const uploaded = [];
321
+ const failed = [];
322
+ const assignments = new Map();
323
+ const loose = [];
324
+ for (const [i, item] of wanted.entries()) {
325
+ const label = item.name.split('/').pop() ?? item.name;
326
+ try {
327
+ const source = await item.source();
328
+ await progress(i, wanted.length, `Uploading ${i + 1}/${wanted.length}: ${label} (${mb(source.size)})`);
329
+ const media = await upload(s, cid, source, {
330
+ production: video?.id,
331
+ title: item.title,
332
+ signal: ctx.mcpReq.signal,
333
+ onBytes: async (sent, total) => progress(i + sent / total, wanted.length, `Uploading ${i + 1}/${wanted.length}: ${label} (${Math.round((100 * sent) / total)}% of ${mb(total)})`),
334
+ });
335
+ uploaded.push({ id: media.id, title: media.title, kind: media.kind, status: media.status, ...(item.shot ? { shot: item.shot } : {}) });
336
+ if (item.shot)
337
+ assignments.set(item.shot, media.kind === 'audio' ? { voice: media.id } : { media: media.id });
338
+ else
339
+ loose.push(media);
340
+ }
341
+ catch (error) {
342
+ if (error instanceof ToolError && /cancelled/i.test(error.message))
343
+ throw error;
344
+ failed.push({ file: item.name, error: describeApiError(error) });
345
+ }
346
+ }
347
+ if (video && args.in_order) {
348
+ const open = (video.shots ?? []).filter((sh) => sh.id && !sh.media && !assignments.has(sh.id) && (!sh.visual || sh.visual === 'generate' || sh.visual === 'footage'));
349
+ const pictures = loose.filter((m) => m.kind !== 'audio');
350
+ for (const [i, sh] of open.entries()) {
351
+ const m = pictures[i];
352
+ if (!m)
353
+ break;
354
+ assignments.set(sh.id, { media: m.id });
355
+ const row = uploaded.find((u) => u.id === m.id);
356
+ if (row)
357
+ row.shot = sh.id;
358
+ }
359
+ }
360
+ let attached = 0;
361
+ if (video && assignments.size > 0) {
362
+ video = await attach(s, video, assignments);
363
+ attached = assignments.size;
364
+ }
365
+ await progress(wanted.length, wanted.length, `Uploaded ${uploaded.length} of ${wanted.length} files`);
366
+ const summary = failed.length === 0
367
+ ? `Uploaded ${uploaded.length} file(s)${attached ? `; ${attached} shot(s) now carry them` : ''}.`
368
+ : `Uploaded ${uploaded.length} of ${wanted.length} files; ${failed.length} failed (see failed).`;
369
+ return { company: cid, message: summary, uploaded, failed, attached, ...(video ? { video: brief(video) } : {}) };
370
+ });
371
+ define(server, s, 'attach_media', {
372
+ title: 'Put media on a shot',
373
+ description: "Put a library item on one shot: `media` (an image or clip: the shot's picture, as footage) or `voice` (an audio item: the shot's line). The other shots stay as they are. `keep_audio: true` keeps the clip's own sound under the voice-over.",
374
+ input: { video: z.string(), shot: z.string(), media: z.string().optional(), voice: z.string().optional(), keep_audio: z.boolean().optional() },
375
+ group: 'studio',
376
+ kind: 'write',
377
+ }, async (args) => {
378
+ if (!args.media && !args.voice)
379
+ throw new ToolError('Give media (a picture or clip) or voice (audio) to put on the shot.');
380
+ const video = (await s.api.get(`/api/studio/productions/${args.video}`));
381
+ const a = {};
382
+ if (args.media)
383
+ a.media = args.media;
384
+ if (args.voice)
385
+ a.voice = args.voice;
386
+ if (args.keep_audio !== undefined)
387
+ a.keep_audio = args.keep_audio;
388
+ return { company: companyOf(video), ...brief(await attach(s, video, new Map([[args.shot, a]]))) };
389
+ });
197
390
  define(server, s, 'update_video', {
198
391
  title: 'Update video',
199
392
  description: 'Change a video: title, brief, shape, or its `style`: music, captions, transition (cut|fade), colours, the narrator `voice`, the `look` (palette, light, camera, texture, mood, type, avoid, brand light|balanced|strong), the music cue (`music_prompt`, `music_bpm`, `beat_sync`), and `models` {clip, keyframe, voice, music, speaking}.',
@@ -283,11 +476,22 @@ export function registerStudioTools(server, s) {
283
476
  });
284
477
  define(server, s, 'render_video', {
285
478
  title: 'Render video',
286
- description: 'Cut the video into one MP4 (free). get_video says what is missing when it refuses; the render takes a minute or two: wait_for_video.',
479
+ description: 'Cut the video into one MP4 (free). get_video says what is missing when it refuses; the render takes a minute or two: wait_for_video. A code film (`engine` remotion) renders its last checked version through Remotion, so the check must pass first (check_video_code); the refusal names the film\'s problem.',
287
480
  input: { video: z.string() },
288
481
  group: 'studio',
289
482
  kind: 'write',
290
- }, async (args) => s.api.post(`/api/studio/productions/${args.video}/render`));
483
+ }, async (args) => {
484
+ try {
485
+ return await s.api.post(`/api/studio/productions/${args.video}/render`);
486
+ }
487
+ catch (error) {
488
+ // the film's own refusal (§91.2), said plainly with the way out
489
+ if (error instanceof ApiError && error.status === 400 && error.message.includes('code film')) {
490
+ throw new ToolError(`${error.message} get_video_code shows the last check; write_video_code and check_video_code fix and re-check the film; video_frames shows stills once it passes.`);
491
+ }
492
+ throw error;
493
+ }
494
+ });
291
495
  define(server, s, 'design_video_cards', {
292
496
  title: 'Design the cards',
293
497
  description: 'Make (or re-sync) the cards drawn over a video’s shots, one scene per shot, editable in the Studio’s design editor. `remove: true` takes them off.',
@@ -303,15 +507,53 @@ export function registerStudioTools(server, s) {
303
507
  }, async (args) => s.api.get(`/api/studio/productions/${args.video}/plan`));
304
508
  define(server, s, 'import_video_plan', {
305
509
  title: 'Import a video plan',
306
- description: 'A whole video at once from a plan (the shape video_plan returns): title, brief, aspect_ratio, style, presenter, shots.',
307
- input: { ...COMPANY_ARG, plan: z.record(z.string(), z.unknown()) },
510
+ description: "A whole video at once from a plan (the shape video_plan returns: title, brief, aspect_ratio, style, presenter, shots). Give the `plan` as JSON, or a `path` on this machine (a zip with plan.json and the files it names as file:…, a plan.json with those files beside it, or the folder holding them), or a `url` to such a zip or plan.json. Footage, voice tracks and icons the plan names are uploaded first (in chunks, any size), then the plan is imported with their media ids.",
511
+ input: { ...COMPANY_ARG, plan: z.record(z.string(), z.unknown()).optional(), path: z.string().optional().describe('a zip, a plan.json or a folder on this machine'), url: z.string().optional().describe('a link to a zip or plan.json') },
308
512
  group: 'studio',
309
513
  kind: 'write',
310
514
  }, async (args, ctx) => {
311
515
  const cid = await resolveCompany(s, args, ctx);
312
516
  if (isInputRequired(cid))
313
517
  return cid;
314
- return s.api.post(`/api/companies/${cid}/studio/productions/import`, { plan: args.plan });
518
+ const given = [args.plan, args.path, args.url].filter((v) => v !== undefined).length;
519
+ if (given !== 1)
520
+ throw new ToolError('Give exactly one of plan (JSON), path (on this machine) or url.');
521
+ if (args.plan)
522
+ return s.api.post(`/api/companies/${cid}/studio/productions/import`, { plan: args.plan });
523
+ if (args.path && !s.local)
524
+ throw noLocalFiles(s, cid);
525
+ const bundle = args.path ? await planFromPath(args.path) : await planFromUrl(args.url, s.api.fetchImpl);
526
+ try {
527
+ const refs = fileRefs(bundle.plan);
528
+ const missing = refs.filter((ref) => !findFile(bundle.files, ref));
529
+ if (missing.length > 0)
530
+ throw new ToolError(`The plan names ${missing.join(', ')}, but no such file came with it. Put the files beside plan.json (or in the zip), or upload them with upload_media and use their media ids.`);
531
+ const progress = progressOf(ctx);
532
+ const ids = {};
533
+ const byKey = new Map();
534
+ const uploaded = [];
535
+ for (const [i, ref] of refs.entries()) {
536
+ const key = findFile(bundle.files, ref);
537
+ if (!byKey.has(key)) {
538
+ const source = await bundle.files[key]();
539
+ await progress(i, refs.length, `Uploading ${i + 1}/${refs.length}: ${source.name} (${mb(source.size)})`);
540
+ const media = await upload(s, cid, source, {
541
+ signal: ctx.mcpReq.signal,
542
+ onBytes: async (sent, total) => progress(i + sent / total, refs.length, `Uploading ${i + 1}/${refs.length}: ${source.name} (${Math.round((100 * sent) / total)}% of ${mb(total)})`),
543
+ });
544
+ byKey.set(key, media.id);
545
+ uploaded.push(media.id);
546
+ }
547
+ ids[ref] = byKey.get(key);
548
+ }
549
+ if (uploaded.length > 0)
550
+ await waitReady(s, uploaded, { signal: ctx.mcpReq.signal, progress });
551
+ const production = (await s.api.post(`/api/companies/${cid}/studio/productions/import`, { plan: rewriteRefs(bundle.plan, ids) }));
552
+ return { company: cid, uploaded: uploaded.length, ...production };
553
+ }
554
+ finally {
555
+ await bundle.close();
556
+ }
315
557
  });
316
558
  define(server, s, 'export_video', {
317
559
  title: 'Export video',
@@ -359,5 +601,83 @@ export function registerStudioTools(server, s) {
359
601
  body.starred = args.starred;
360
602
  return s.api.patch(`/api/studio/media/${args.media}`, body);
361
603
  });
604
+ // --- code films (§91): the same seven tools as the hosted server, over the REST endpoints ------------------------------
605
+ define(server, s, 'convert_video_to_code', {
606
+ title: 'Cut in code',
607
+ description: "Cut a video in code: its storyboard compiles to a Remotion project (`engine` remotion, version 1 from the compiler, checked and built where the server has Node). The storyboard, media and direction stay as they are; from here the picture is drawn by the project's scenes, which you edit with write_video_code. On a film that exists it brings src/film.json up to date. Read the guide (autopoiesis://guide/code-film) before editing.",
608
+ input: { ...VIDEO_ARG, note: z.string().optional() },
609
+ group: 'studio',
610
+ kind: 'write',
611
+ }, async (args) => {
612
+ const data = (await s.api.post(film(args.video), args.note ? { note: args.note } : {}));
613
+ return { ...codeProject(data.project ?? {}), production: pick((data.production ?? {}), ['id', 'title', 'status', 'engine', 'film']) };
614
+ });
615
+ define(server, s, 'get_video_code', {
616
+ title: 'Get video code',
617
+ description: "A video's code film (a Remotion project its storyboard compiles to): the version, the head's files (paths), the scenes, the last check (ok, errors with file and line, warnings), the preview link and the latest versions. With `file` (a path, e.g. src/Film.tsx) one file's content and who wrote it. 404 before convert_video_to_code.",
618
+ input: { ...VIDEO_ARG, file: z.string().optional().describe('a path of the head, for its content') },
619
+ group: 'studio',
620
+ }, async (args) => {
621
+ const path = (args.file ?? '').trim().replace(/^\/+/, '');
622
+ if (path)
623
+ return s.api.get(film(args.video, `/files/${path}`));
624
+ const data = (await s.api.get(film(args.video)));
625
+ return codeProject(data.project ?? data);
626
+ });
627
+ define(server, s, 'write_video_code', {
628
+ title: 'Write video code',
629
+ description: "Write files of a video's code film: `files` [{path, content}] (content null removes a file; paths under src/ ending .ts, .tsx, .js, .jsx, .css or .json; src/film.json, package.json and tsconfig.json are the compiler's and follow the storyboard). A new version is made and checked at once (tsc, the lint, the scene list, the preview build): `check` says ok, or the errors with file and line. Free. Only `@autopo/film`, react, remotion, `@remotion/*`, zod and the film's own files may be imported; words live in film.json, not in code.",
630
+ input: {
631
+ ...VIDEO_ARG,
632
+ files: z.array(z.object({ path: z.string(), content: z.string().nullable().describe('the file\'s text, or null to remove it') })).min(1).max(40),
633
+ note: z.string().optional().describe('what changed, for the version list'),
634
+ },
635
+ group: 'studio',
636
+ kind: 'write',
637
+ }, async (args) => {
638
+ const data = (await s.api.put(film(args.video, '/files'), { files: args.files, ...(args.note ? { note: args.note } : {}) }));
639
+ return checked(data);
640
+ });
641
+ define(server, s, 'check_video_code', {
642
+ title: 'Check video code',
643
+ description: "Check a video's code film again without changing it: tsc, the lint, the scene list and the preview bundle run on the head. `check` has ok, errors (file, line, shot, message), warnings (craft: a card over 7 words, no hook by 2 s…) and the running time. Free.",
644
+ input: { ...VIDEO_ARG },
645
+ group: 'studio',
646
+ kind: 'write',
647
+ }, async (args) => {
648
+ const data = (await s.api.post(film(args.video, '/check')));
649
+ return checked(data, data.project?.version ?? null);
650
+ });
651
+ define(server, s, 'video_frames', {
652
+ title: 'Video frames',
653
+ description: "Draw stills of a video's code film as Studio images (free; seconds after the first build): `frames` (frame numbers at the film's fps) or `every_seconds`; neither: the middle of every shot. Up to 12 a call. Needs a passing check. Each result has a url and thumb_url to look at before a render.",
654
+ input: { ...VIDEO_ARG, frames: z.array(z.number().int().min(0)).max(12).optional(), every_seconds: z.number().min(0.5).optional() },
655
+ group: 'studio',
656
+ kind: 'write',
657
+ }, async (args) => {
658
+ const body = {};
659
+ if (args.frames?.length)
660
+ body.frames = args.frames;
661
+ else if (args.every_seconds)
662
+ body.every_seconds = args.every_seconds;
663
+ const data = (await s.api.post(film(args.video, '/frames'), body));
664
+ return { media: (data.media ?? []).map((m) => pick(m, FRAME_KEYS)) };
665
+ });
666
+ define(server, s, 'video_code_versions', {
667
+ title: 'Video code versions',
668
+ description: "Every version of a video's code film, newest first: number, source (compiler, agent, founder, restore), note, files, who made it and when; `head` is the current one.",
669
+ input: { ...VIDEO_ARG },
670
+ group: 'studio',
671
+ }, async (args) => s.api.get(film(args.video, '/versions')));
672
+ define(server, s, 'restore_video_code', {
673
+ title: 'Restore video code',
674
+ description: "Bring an earlier version of a video's code film back as a new version (source restore), checked at once.",
675
+ input: { ...VIDEO_ARG, version: z.number().int().min(1).describe('a number from video_code_versions') },
676
+ group: 'studio',
677
+ kind: 'write',
678
+ }, async (args) => {
679
+ const data = (await s.api.post(film(args.video, `/versions/${args.version}/restore`)));
680
+ return checked(data);
681
+ });
362
682
  }
363
683
  //# sourceMappingURL=studio.js.map