pi-forge 1.2.5 → 1.3.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.
Files changed (64) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/{CodeMirrorEditor-DXmxwE2Z.js → CodeMirrorEditor-BuLFJjB1.js} +13 -13
  3. package/dist/client/assets/CodeMirrorEditor-BuLFJjB1.js.map +1 -0
  4. package/dist/client/assets/index-CEqSkIuy.css +1 -0
  5. package/dist/client/assets/index-GubcPYw6.js +375 -0
  6. package/dist/client/assets/index-GubcPYw6.js.map +1 -0
  7. package/dist/client/assets/{workbox-window.prod.es5-Cch4wiA5.js → workbox-window.prod.es5-Bd17z0YL.js} +2 -2
  8. package/dist/client/assets/{workbox-window.prod.es5-Cch4wiA5.js.map → workbox-window.prod.es5-Bd17z0YL.js.map} +1 -1
  9. package/dist/client/index.html +2 -2
  10. package/dist/client/sw.js +1 -1
  11. package/dist/client/sw.js.map +1 -1
  12. package/dist/server/git-clone.js +364 -0
  13. package/dist/server/git-clone.js.map +1 -0
  14. package/dist/server/index.js +22 -0
  15. package/dist/server/index.js.map +1 -1
  16. package/dist/server/orchestration/config.js +61 -0
  17. package/dist/server/orchestration/config.js.map +1 -0
  18. package/dist/server/orchestration/event-bridge.js +93 -0
  19. package/dist/server/orchestration/event-bridge.js.map +1 -0
  20. package/dist/server/orchestration/inbox.js +199 -0
  21. package/dist/server/orchestration/inbox.js.map +1 -0
  22. package/dist/server/orchestration/init.js +39 -0
  23. package/dist/server/orchestration/init.js.map +1 -0
  24. package/dist/server/orchestration/store.js +352 -0
  25. package/dist/server/orchestration/store.js.map +1 -0
  26. package/dist/server/orchestration/tools.js +769 -0
  27. package/dist/server/orchestration/tools.js.map +1 -0
  28. package/dist/server/orchestration/types.js +57 -0
  29. package/dist/server/orchestration/types.js.map +1 -0
  30. package/dist/server/processes/manager.js +23 -1
  31. package/dist/server/processes/manager.js.map +1 -1
  32. package/dist/server/project-manager.js +46 -32
  33. package/dist/server/project-manager.js.map +1 -1
  34. package/dist/server/routes/control.js +9 -0
  35. package/dist/server/routes/control.js.map +1 -1
  36. package/dist/server/routes/health.js +14 -1
  37. package/dist/server/routes/health.js.map +1 -1
  38. package/dist/server/routes/orchestration.js +464 -0
  39. package/dist/server/routes/orchestration.js.map +1 -0
  40. package/dist/server/routes/projects.js +239 -14
  41. package/dist/server/routes/projects.js.map +1 -1
  42. package/dist/server/routes/sessions.js +53 -34
  43. package/dist/server/routes/sessions.js.map +1 -1
  44. package/dist/server/routes/webhooks.js +362 -0
  45. package/dist/server/routes/webhooks.js.map +1 -0
  46. package/dist/server/session-registry.js +226 -3
  47. package/dist/server/session-registry.js.map +1 -1
  48. package/dist/server/sse-bridge.js +85 -14
  49. package/dist/server/sse-bridge.js.map +1 -1
  50. package/dist/server/webhooks/dispatcher.js +254 -0
  51. package/dist/server/webhooks/dispatcher.js.map +1 -0
  52. package/dist/server/webhooks/event-bridge.js +185 -0
  53. package/dist/server/webhooks/event-bridge.js.map +1 -0
  54. package/dist/server/webhooks/init.js +55 -0
  55. package/dist/server/webhooks/init.js.map +1 -0
  56. package/dist/server/webhooks/store.js +394 -0
  57. package/dist/server/webhooks/store.js.map +1 -0
  58. package/dist/server/webhooks/types.js +32 -0
  59. package/dist/server/webhooks/types.js.map +1 -0
  60. package/package.json +4 -4
  61. package/dist/client/assets/CodeMirrorEditor-DXmxwE2Z.js.map +0 -1
  62. package/dist/client/assets/index-CMSjnWtF.js +0 -365
  63. package/dist/client/assets/index-CMSjnWtF.js.map +0 -1
  64. package/dist/client/assets/index-Cp8qEy7Q.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,OAAsD,MAAM,SAAS,CAAC;AAC7E,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,kEAAkE;IAClE,8DAA8D;IAC9D,+DAA+D;IAC/D,+DAA+D;IAC/D,gDAAgD;IAChD,kBAAkB,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,OAAO,CAAC;QACtB,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,oEAAoE;YACpE,wEAAwE;YACxE,WAAW,EAAE;gBACX,GAAG,CAAC,GAAmB;oBACrB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;oBAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACpC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;wBACvD,CAAC,CAAC,GAAG,CAAC;oBACR,OAAO;wBACL,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,GAAG,EAAE,OAAO;wBACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,aAAa,EAAE,GAAG,CAAC,EAAE;qBACtB,CAAC;gBACJ,CAAC;aACF;YACD,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,qEAAqE;YACrE,oDAAoD;YACpD,EAAE;YACF,gEAAgE;YAChE,oEAAoE;YACpE,4DAA4D;YAC5D,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,uBAAuB;oBACvB,2BAA2B;oBAC3B,eAAe;oBACf,aAAa;oBACb,4BAA4B;oBAC5B,mCAAmC;iBACpC;gBACD,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,KAAK;aACd;SACF;QACD,qBAAqB,EAAE,MAAM,CAAC,MAAM;QACpC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,iEAAiE;QACjE,kEAAkE;QAClE,8DAA8D;QAC9D,+DAA+D;QAC/D,+DAA+D;QAC/D,0CAA0C;QAC1C,EAAE;QACF,gEAAgE;QAChE,+DAA+D;QAC/D,kEAAkE;QAClE,4DAA4D;QAC5D,kEAAkE;QAClE,4CAA4C;QAC5C,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,CAAC,CAAC;IAEH,qEAAqE;IACrE,kEAAkE;IAClE,iEAAiE;IACjE,iDAAiD;IACjD,qBAAqB,EAAE,CAAC;IAExB,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3B,wEAAwE;QACxE,iEAAiE;QACjE,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;QACjC,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAErD,iEAAiE;IACjE,sEAAsE;IACtE,kDAAkD;IAClD,EAAE;IACF,uDAAuD;IACvD,oEAAoE;IACpE,mEAAmE;IACnE,uEAAuE;IACvE,sEAAsE;IACtE,oEAAoE;IACpE,wDAAwD;IACxD,oEAAoE;IACpE,iEAAiE;IACjE,+DAA+D;IAC/D,kEAAkE;IAClE,+BAA+B;IAC/B,oEAAoE;IACpE,kEAAkE;IAClE,6DAA6D;IAC7D,0DAA0D;IAC1D,yEAAyE;IACzE,gEAAgE;IAChE,8DAA8D;IAC9D,+DAA+D;IAC/D,6CAA6C;IAC7C,yDAAyD;IACzD,mEAAmE;IACnE,+DAA+D;IAC/D,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9C,KAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QAClD,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC;QACnE,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxC,mEAAmE;QACnE,mEAAmE;QACnE,sEAAsE;QACtE,0BAA0B;QAC1B,KAAK,CAAC,MAAM,CAAC,2BAA2B,EAAE,qCAAqC,CAAC,CAAC;QACjF,KAAK,CAAC,MAAM,CACV,yBAAyB,EACzB;YACE,oBAAoB;YACpB,sCAAsC;YACtC,4DAA4D;YAC5D,+DAA+D;YAC/D,0CAA0C;YAC1C,kCAAkC;YAClC,gCAAgC;YAChC,4BAA4B;YAC5B,uBAAuB;YACvB,oBAAoB;YACpB,yBAAyB;YACzB,mBAAmB;YACnB,iBAAiB;YACjB,wBAAwB;SACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,mEAAmE;IACnE,8DAA8D;IAC9D,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAElC,+DAA+D;IAC/D,qEAAqE;IACrE,mEAAmE;IACnE,gEAAgE;IAChE,0BAA0B;IAC1B,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;QAChC,MAAM,EAAE;YACN,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,+DAA+D;YAC3F,+DAA+D;YAC/D,gEAAgE;YAChE,4DAA4D;YAC5D,4DAA4D;YAC5D,+BAA+B;YAC/B,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,kBAAkB,EAAE,KAAK;QACzB,4DAA4D;QAC5D,gEAAgE;QAChE,iEAAiE;QACjE,+DAA+D;QAC/D,2CAA2C;QAC3C,kBAAkB,EAAE,KAAK;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC9B,OAAO,EAAE;YACP,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;YACjD,UAAU,EAAE;gBACV,eAAe,EAAE;oBACf,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC/B;KACF,CAAC,CAAC;IAEH,kEAAkE;IAClE,kEAAkE;IAClE,+DAA+D;IAC/D,mEAAmE;IACnE,mEAAmE;IACnE,iEAAiE;IACjE,aAAa;IACb,EAAE;IACF,iEAAiE;IACjE,8DAA8D;IAC9D,oEAAoE;IACpE,6BAA6B;IAC7B,EAAE;IACF,8DAA8D;IAC9D,yDAAyD;IACzD,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6BjB,CAAC;IAEP,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE;QAC9D,KAAK,EAAE;YACL,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;SAChE;KACF,CAAC,CAAC;IAEH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAEtC,oEAAoE;QACpE,qEAAqE;QACrE,wBAAwB;QACxB,qEAAqE;QACrE,8DAA8D;QAC9D,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,8DAA8D;YAC9D,2DAA2D;YAC3D,oDAAoD;YACpD,8DAA8D;YAC9D,2DAA2D;YAC3D,0DAA0D;YAC1D,+DAA+D;YAC/D,kDAAkD;YAClD,EAAE;YACF,yDAAyD;YACzD,yDAAyD;YACzD,qDAAqD;YACrD,4DAA4D;YAC5D,2DAA2D;YAC3D,0DAA0D;YAC1D,0DAA0D;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QAEzC,gEAAgE;QAChE,yCAAyC;QACzC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC;QAC7C,IAAI,WAAW,EAAE,MAAM,KAAK,IAAI;YAAE,OAAO;QACzC,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAE3B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,8DAA8D;YAC9D,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,wCAAwC;YACxC,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,sBAAsB;oBAC7B,OAAO,EACL,8DAA8D;wBAC9D,qDAAqD;iBACxD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,QAAQ,CACpB,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpC,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,EACD,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;IAEF,uCAAuC;IACvC,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,qDAAqD;IACrD,EAAE;IACF,oEAAoE;IACpE,qEAAqE;IACrE,4DAA4D;IAC5D,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5D,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,sEAAsE;QACtE,4BAA4B;QAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;YAC9C,8DAA8D;YAC9D,kEAAkE;YAClE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO;YACrC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxF,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE;YACpC,IAAI,EAAE,MAAM,CAAC,cAAc;YAC3B,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QAEH,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;YAC9C,mEAAmE;YACnE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,kEAAkE;YAClE,kEAAkE;YAClE,gEAAgE;YAChE,mEAAmE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,cAAc,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,0BAA0B,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAC1E,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,iEAAiE;IACjE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,kBAAkB,EAAE,CAAC;QAC3B,cAAc,EAAE,CAAC;QACjB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,+DAA+D;IAC/D,iEAAiE;IACjE,gEAAgE;IAChE,uDAAuD;IACvD,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,8DAA8D;IAC9D,2DAA2D;IAC3D,6DAA6D;IAC7D,yBAAyB,EAAE,CAAC;IAC5B,cAAc,EAAE,CAAC;IACjB,mBAAmB,EAAE,CAAC;IAEtB,iEAAiE;IACjE,+DAA+D;IAC/D,4DAA4D;IAC5D,+DAA+D;IAC/D,+DAA+D;IAC/D,iEAAiE;IACjE,WAAW;IACX,gCAAgC,EAAE,CAAC;IACnC,0BAA0B,EAAE,CAAC;IAE7B,kEAAkE;IAClE,gEAAgE;IAChE,+DAA+D;IAC/D,+DAA+D;IAC/D,yDAAyD;IACzD,sCAAsC,EAAE,CAAC;IACzC,gCAAgC,EAAE,CAAC;IAEnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,+DAA+D;IAC/D,oEAAoE;IACpE,gEAAgE;IAChE,gEAAgE;IAChE,+CAA+C;IAC/C,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kEAAkE;YAClE,+DAA+D;YAC/D,mCAAmC;YACnC,OAAO,CAAC,KAAK,CAAC,yCAAyC,GAAG,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,oEAAoE;IACpE,4DAA4D;IAC5D,kEAAkE;IAClE,gEAAgE;IAChE,8CAA8C;IAC9C,qBAAqB,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3F,IAAI,YAAY,EAAE,CAAC;IACjB,KAAK,KAAK,EAAE,CAAC;AACf,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Runtime config for the orchestration feature.
3
+ *
4
+ * Instance-level kill switch + tunable limits. Read fresh on every
5
+ * call (no caching) so changing env requires only a process restart,
6
+ * not a code edit. Defaults are safe — orchestration is OFF by
7
+ * default; the operator opts in with `ORCHESTRATION_ENABLED=true`.
8
+ *
9
+ * MINIMAL_UI is a HARD gate (checked separately in routes + tool
10
+ * registration): even with `ORCHESTRATION_ENABLED=true`, a deployment
11
+ * running under MINIMAL_UI never surfaces orchestration. Same posture
12
+ * as the webhooks mutation gate, applied to BOTH routes AND the
13
+ * agent-facing tool surface.
14
+ */
15
+ import { config } from "../config.js";
16
+ import { DEFAULT_MAX_WORKERS_PER_SUPERVISOR } from "./types.js";
17
+ function readBoolEnv(key, fallback) {
18
+ const raw = process.env[key];
19
+ if (raw === undefined || raw === "")
20
+ return fallback;
21
+ const v = raw.toLowerCase();
22
+ if (["1", "true", "yes", "on"].includes(v))
23
+ return true;
24
+ if (["0", "false", "no", "off"].includes(v))
25
+ return false;
26
+ return fallback;
27
+ }
28
+ function readIntEnv(key, fallback, min, max) {
29
+ const raw = process.env[key];
30
+ if (raw === undefined || raw === "")
31
+ return fallback;
32
+ const n = Number.parseInt(raw, 10);
33
+ if (!Number.isFinite(n) || n < min || n > max)
34
+ return fallback;
35
+ return n;
36
+ }
37
+ /**
38
+ * True when orchestration tools may surface AND the REST routes may
39
+ * accept mutations. Combines the instance-level env flag with the
40
+ * MINIMAL_UI hard gate — under MINIMAL_UI, orchestration is OFF
41
+ * regardless of the env flag.
42
+ */
43
+ export function isOrchestrationEnabled() {
44
+ if (config.minimalUi)
45
+ return false;
46
+ return readBoolEnv("ORCHESTRATION_ENABLED", false);
47
+ }
48
+ /**
49
+ * Reason string for the disabled state — surfaced in 403 responses
50
+ * so the operator/user gets a precise diagnostic instead of a
51
+ * generic "disabled."
52
+ */
53
+ export function orchestrationDisabledReason() {
54
+ if (config.minimalUi)
55
+ return "minimal_ui_disabled";
56
+ return "orchestration_disabled";
57
+ }
58
+ export function maxWorkersPerSupervisor() {
59
+ return readIntEnv("ORCHESTRATION_MAX_WORKERS_PER_SUPERVISOR", DEFAULT_MAX_WORKERS_PER_SUPERVISOR, 1, 100);
60
+ }
61
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/orchestration/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC;AAEhE,SAAS,WAAW,CAAC,GAAW,EAAE,QAAiB;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAW;IACzE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC/D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,WAAW,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,qBAAqB,CAAC;IACnD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CACf,0CAA0C,EAC1C,kCAAkC,EAClC,CAAC,EACD,GAAG,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { bridgeWorkerEvent } from "./inbox.js";
2
+ function findLastAssistant(messages) {
3
+ for (let i = messages.length - 1; i >= 0; i--) {
4
+ const m = messages[i];
5
+ if (m?.role !== "assistant")
6
+ continue;
7
+ const a = m;
8
+ const text = extractAssistantText(a.content);
9
+ const out = {};
10
+ if (a.stopReason !== undefined)
11
+ out.stopReason = a.stopReason;
12
+ if (a.errorMessage !== undefined)
13
+ out.errorMessage = a.errorMessage;
14
+ if (text !== undefined)
15
+ out.text = text;
16
+ return out;
17
+ }
18
+ return undefined;
19
+ }
20
+ function extractAssistantText(content) {
21
+ if (!Array.isArray(content))
22
+ return undefined;
23
+ const parts = [];
24
+ for (const c of content) {
25
+ const o = c;
26
+ if (o.type === "text" && typeof o.text === "string")
27
+ parts.push(o.text);
28
+ }
29
+ if (parts.length === 0)
30
+ return undefined;
31
+ // Cap to 600 chars in the inbox payload — the supervisor LLM
32
+ // sees this as a quick summary; if it wants more it calls
33
+ // `orchestrate_read_worker`. Bigger payloads bloat the inbox
34
+ // file and the supervisor's tool-result context.
35
+ const joined = parts.join("\n");
36
+ return joined.length > 600 ? `${joined.slice(0, 600)}…` : joined;
37
+ }
38
+ /**
39
+ * Called from `session-registry.makeSubscribeHandler` for every
40
+ * AgentSessionEvent on every live session. Filters for the two SDK
41
+ * events that map to inbox items; everything else is ignored.
42
+ */
43
+ export async function bridgeWorkerAgentEvent(meta, event) {
44
+ const e = event;
45
+ if (e.type === "agent_end") {
46
+ const messages = meta.session.messages;
47
+ const lastAssistant = findLastAssistant(messages);
48
+ const errorMessage = meta.session.errorMessage ??
49
+ lastAssistant?.errorMessage;
50
+ await bridgeWorkerEvent(meta.sessionId, "worker.ended", {
51
+ stopReason: lastAssistant?.stopReason ?? null,
52
+ errorMessage: errorMessage ?? null,
53
+ assistantTextPreview: lastAssistant?.text ?? null,
54
+ });
55
+ return;
56
+ }
57
+ if (e.type === "auto_retry_end" && e.success === false) {
58
+ await bridgeWorkerEvent(meta.sessionId, "worker.auto_retry_failed", {
59
+ attempt: e.attempt ?? null,
60
+ maxAttempts: e.maxAttempts ?? null,
61
+ finalError: e.finalError ?? null,
62
+ });
63
+ return;
64
+ }
65
+ }
66
+ export async function bridgeWorkerAskUserQuestion(sessionId, questions, requestId) {
67
+ await bridgeWorkerEvent(sessionId, "worker.ask_user", {
68
+ requestId,
69
+ questionCount: questions.length,
70
+ // Keep the inbox payload tight — preview is the first question's
71
+ // header so the supervisor sees enough to decide whether to read
72
+ // the worker's transcript. Full question detail is in the
73
+ // worker's session, fetched via orchestrate_read_worker.
74
+ firstQuestionHeader: questions[0]?.header ?? null,
75
+ firstQuestionText: questions[0]?.question ?? null,
76
+ });
77
+ }
78
+ export async function bridgeWorkerProcessAlert(sessionId, info, reason) {
79
+ await bridgeWorkerEvent(sessionId, "worker.process_alert", {
80
+ reason,
81
+ processId: info.id,
82
+ name: info.name,
83
+ pid: info.pid,
84
+ exitCode: info.exitCode,
85
+ success: info.success,
86
+ });
87
+ }
88
+ export async function bridgeWorkerDeleted(sessionId, meta) {
89
+ await bridgeWorkerEvent(sessionId, "worker.deleted", {
90
+ wasLive: meta.wasLive,
91
+ });
92
+ }
93
+ //# sourceMappingURL=event-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bridge.js","sourceRoot":"","sources":["../../src/orchestration/event-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Inbox surface — the bridge between worker events and supervisor
3
+ * wake-up. Wraps the raw inbox queue (in `store.ts`) with the
4
+ * "fire a prompt at an idle supervisor" mechanism that makes
5
+ * "session A watches session B" actually work without polling.
6
+ *
7
+ * Design:
8
+ * 1. PULL primary: supervisor's LLM calls `orchestrate_read_inbox`
9
+ * to drain pending items. Items stay in the file (cap-evicted)
10
+ * so the REST UI can show recent activity even after the LLM
11
+ * consumed them.
12
+ * 2. PUSH secondary: when an event enqueues AND the supervisor
13
+ * session is live AND idle (not currently streaming), we fire
14
+ * a tiny `[orchestration]` prompt at the supervisor so it
15
+ * starts a new turn that surfaces the items. If the supervisor
16
+ * is busy, the push skips — the items wait on the queue, and
17
+ * the supervisor's next prompt will see them via
18
+ * `orchestrate_read_inbox`.
19
+ * 3. Recovery: when the supervisor's own `agent_end` fires (i.e.
20
+ * it just became idle), we check for pending items and PUSH
21
+ * again if any. Closes the "supervisor finished a turn but
22
+ * didn't call read_inbox" gap.
23
+ *
24
+ * All PUSH paths are best-effort: the queue is the source of truth.
25
+ * A missed wake-up means the supervisor sees the items on its next
26
+ * turn, not that the items vanish.
27
+ */
28
+ import { getSession } from "../session-registry.js";
29
+ import { enqueueInboxItem, getSupervisorIdForWorker, pendingInboxCount, readPendingInbox, } from "./store.js";
30
+ /**
31
+ * Per-supervisor "already pushed once for this idle window" flag.
32
+ * Without this, every inbox enqueue while the supervisor is briefly
33
+ * idle would fire a fresh `prompt()` — the supervisor's first push
34
+ * starts a turn, but the SDK may not flip isStreaming to true
35
+ * immediately (it's set after the first message_start event), so a
36
+ * second enqueue 1ms later would still see "idle" and fire a
37
+ * duplicate prompt. The flag is cleared in two places:
38
+ * - On the supervisor's own `agent_end` (handled in
39
+ * `notifySupervisorIdle` below) — the supervisor's turn finished
40
+ * and the next idle window is a new wake-up opportunity.
41
+ * - On supervisor dispose (handled in session-registry) — clear
42
+ * so a re-resumed session can wake again.
43
+ */
44
+ const pendingWakePush = new Set();
45
+ /**
46
+ * Per-supervisor sequence number for wake-up prompts. Surfaces in
47
+ * stderr logs to make it possible to grep "how many times have we
48
+ * pushed to supervisor X today" without parsing timestamps.
49
+ */
50
+ const wakeCounters = new Map();
51
+ function nextWakeCounter(supervisorId) {
52
+ const n = (wakeCounters.get(supervisorId) ?? 0) + 1;
53
+ wakeCounters.set(supervisorId, n);
54
+ return n;
55
+ }
56
+ function logInbox(level, payload) {
57
+ process.stderr.write(`${JSON.stringify({ level, time: new Date().toISOString(), ...payload })}\n`);
58
+ }
59
+ /**
60
+ * Decide whether the live supervisor session is "idle" — i.e.,
61
+ * not currently mid-turn. The SDK exposes `isStreaming`; that's a
62
+ * stable proxy for "the agent loop is producing output right now."
63
+ * A session that has never prompted is also idle.
64
+ */
65
+ function isSupervisorIdle(supervisorId) {
66
+ const live = getSession(supervisorId);
67
+ if (live === undefined)
68
+ return false; // not live → no idle to push to
69
+ // SDK exposes isStreaming as a getter on AgentSession.
70
+ return live.session.isStreaming === false;
71
+ }
72
+ /**
73
+ * Build the wake-up prompt text. Kept short — the prompt's only job
74
+ * is to nudge the supervisor LLM to call `orchestrate_read_inbox`.
75
+ * The bracket marker is also what the client UI uses to style the
76
+ * message distinctly from a user message (recognised by the
77
+ * `OrchestrationWakePrefix` constant exported below).
78
+ */
79
+ export const ORCHESTRATION_WAKE_PREFIX = "[orchestration]";
80
+ function buildWakeText(pendingCount) {
81
+ return (`${ORCHESTRATION_WAKE_PREFIX} ${pendingCount} pending worker event(s). ` +
82
+ `Call \`orchestrate_read_inbox\` to inspect, then decide whether to ` +
83
+ `\`orchestrate_read_worker\`, \`orchestrate_send_to_worker\`, or take no action.`);
84
+ }
85
+ /**
86
+ * Attempt to wake the supervisor with a tiny system-style prompt.
87
+ * No-op if the supervisor is offline, busy, or already has an
88
+ * in-flight push for this idle window.
89
+ *
90
+ * Returns true if a prompt was actually fired (used by tests).
91
+ */
92
+ async function tryWakeSupervisor(supervisorId) {
93
+ const live = getSession(supervisorId);
94
+ if (live === undefined)
95
+ return false;
96
+ if (!isSupervisorIdle(supervisorId))
97
+ return false;
98
+ if (pendingWakePush.has(supervisorId))
99
+ return false;
100
+ const pending = await pendingInboxCount(supervisorId);
101
+ if (pending === 0)
102
+ return false;
103
+ pendingWakePush.add(supervisorId);
104
+ const seq = nextWakeCounter(supervisorId);
105
+ const text = buildWakeText(pending);
106
+ // Fire-and-forget. The SDK's session.prompt is async; we let it
107
+ // run in the background so the event-bridge caller (often the
108
+ // hot path of an AgentSessionEvent subscriber) returns
109
+ // immediately. Errors are surfaced via stderr — most likely
110
+ // cause is "no model configured on the supervisor session," in
111
+ // which case the supervisor is unusable for orchestration
112
+ // regardless and the operator needs to see why.
113
+ live.session
114
+ .prompt(text)
115
+ .then(() => {
116
+ logInbox("info", {
117
+ msg: "orchestration-wake-delivered",
118
+ supervisorId,
119
+ pending,
120
+ seq,
121
+ });
122
+ })
123
+ .catch((err) => {
124
+ logInbox("warn", {
125
+ msg: "orchestration-wake-failed",
126
+ supervisorId,
127
+ pending,
128
+ seq,
129
+ err: err instanceof Error ? err.message : String(err),
130
+ });
131
+ });
132
+ return true;
133
+ }
134
+ /**
135
+ * Public entry point: a worker session emitted an interesting
136
+ * event, route it to the right supervisor's inbox and try to
137
+ * wake the supervisor.
138
+ *
139
+ * Silently skips when the worker isn't linked to a supervisor —
140
+ * happens transiently when a worker is being detached/disposed,
141
+ * and is the expected steady-state for non-orchestrated sessions
142
+ * (the event bridge currently calls this for every session's
143
+ * events, then filters here).
144
+ */
145
+ export async function bridgeWorkerEvent(workerId, type, data) {
146
+ const supervisorId = await getSupervisorIdForWorker(workerId);
147
+ if (supervisorId === undefined)
148
+ return undefined;
149
+ const item = await enqueueInboxItem(supervisorId, {
150
+ type,
151
+ workerId,
152
+ occurredAt: new Date().toISOString(),
153
+ data,
154
+ });
155
+ logInbox("info", {
156
+ msg: "orchestration-inbox-enqueued",
157
+ supervisorId,
158
+ workerId,
159
+ type,
160
+ itemId: item.id,
161
+ });
162
+ // Best-effort wake-up. tryWake handles its own debounce + offline
163
+ // checks. We DON'T await — the worker event handler that called
164
+ // us shouldn't block on the supervisor's LLM round-trip.
165
+ void tryWakeSupervisor(supervisorId);
166
+ return item;
167
+ }
168
+ /**
169
+ * Called from session-registry when a supervisor's own session
170
+ * emits `agent_end` — i.e., the supervisor just became idle.
171
+ * Clears the per-idle-window dedupe flag and re-pushes if pending
172
+ * items accumulated during the just-finished turn.
173
+ *
174
+ * This closes the "supervisor finished a turn without reading the
175
+ * inbox" gap: if the supervisor's LLM ignored a prior wake-up (or
176
+ * the wake-up arrived after the supervisor was already mid-turn),
177
+ * this gives it one more nudge before going truly idle.
178
+ */
179
+ export async function notifySupervisorIdle(supervisorId) {
180
+ pendingWakePush.delete(supervisorId);
181
+ void tryWakeSupervisor(supervisorId);
182
+ }
183
+ /**
184
+ * Called from session-registry when a supervisor session is
185
+ * disposed. Drops the dedupe flag so a future re-resume of the
186
+ * same id can wake again from scratch.
187
+ */
188
+ export function notifySupervisorDisposed(supervisorId) {
189
+ pendingWakePush.delete(supervisorId);
190
+ wakeCounters.delete(supervisorId);
191
+ }
192
+ /**
193
+ * Drain a supervisor's pending inbox items and mark them delivered.
194
+ * The tool-side wrapper for `orchestrate_read_inbox`.
195
+ */
196
+ export async function drainInbox(supervisorId) {
197
+ return readPendingInbox(supervisorId, { markDelivered: true });
198
+ }
199
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/orchestration/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Boot-time wiring of the orchestration event bridge to the
3
+ * forge-native singleton event channels (ask-user-question, processes).
4
+ *
5
+ * Per-AgentSession events (agent_end, auto_retry_end) are dispatched
6
+ * from inside `session-registry.makeSubscribeHandler` — those need
7
+ * the LiveSession context at construction time. session-registry
8
+ * also calls `notifySupervisorIdle` on supervisor agent_end and
9
+ * `notifySupervisorDisposed` on supervisor dispose.
10
+ *
11
+ * The DELETE-side `worker.deleted` event is fired from the sessions
12
+ * DELETE route, alongside the existing webhook `session_deleted`
13
+ * fan-out.
14
+ *
15
+ * No instance-level guard here: the subscribers are cheap (filter
16
+ * to "is the event source a registered worker?" then route). The
17
+ * actual gating against `isOrchestrationEnabled()` happens at tool
18
+ * registration and route entry — events still need to be observed
19
+ * so a session that becomes a worker mid-stream gets its later
20
+ * events picked up.
21
+ */
22
+ import { subscribe as subscribeAskQuestions } from "../ask-user-question/registry.js";
23
+ import { processManager } from "../processes/manager.js";
24
+ import { bridgeWorkerAskUserQuestion, bridgeWorkerProcessAlert } from "./event-bridge.js";
25
+ export function initOrchestrationAskUserQuestionBridge() {
26
+ return subscribeAskQuestions((event) => {
27
+ if (event.type !== "ask_user_question")
28
+ return;
29
+ void bridgeWorkerAskUserQuestion(event.sessionId, event.questions, event.requestId);
30
+ });
31
+ }
32
+ export function initOrchestrationProcessesBridge() {
33
+ return processManager.subscribe((event) => {
34
+ if (event.type !== "process_alert")
35
+ return;
36
+ void bridgeWorkerProcessAlert(event.sessionId, event.info, event.reason);
37
+ });
38
+ }
39
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/orchestration/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,MAAM,UAAU,sCAAsC;IACpD,OAAO,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;YAAE,OAAO;QAC/C,KAAK,2BAA2B,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO;QAC3C,KAAK,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}