@elaraai/e3-api-server 0.0.2-beta.9 → 1.0.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 (129) hide show
  1. package/LICENSE.md +4 -0
  2. package/README.md +194 -43
  3. package/dist/src/async-operation-state.d.ts +37 -0
  4. package/dist/src/async-operation-state.d.ts.map +1 -0
  5. package/dist/src/async-operation-state.js +118 -0
  6. package/dist/src/async-operation-state.js.map +1 -0
  7. package/dist/src/auth/device.d.ts +26 -0
  8. package/dist/src/auth/device.d.ts.map +1 -0
  9. package/dist/src/auth/device.js +227 -0
  10. package/dist/src/auth/device.js.map +1 -0
  11. package/dist/src/auth/discovery.d.ts +23 -0
  12. package/dist/src/auth/discovery.d.ts.map +1 -0
  13. package/dist/src/auth/discovery.js +40 -0
  14. package/dist/src/auth/discovery.js.map +1 -0
  15. package/dist/src/auth/index.d.ts +56 -0
  16. package/dist/src/auth/index.d.ts.map +1 -0
  17. package/dist/src/auth/index.js +69 -0
  18. package/dist/src/auth/index.js.map +1 -0
  19. package/dist/src/auth/keys.d.ts +55 -0
  20. package/dist/src/auth/keys.d.ts.map +1 -0
  21. package/dist/src/auth/keys.js +78 -0
  22. package/dist/src/auth/keys.js.map +1 -0
  23. package/dist/src/beast2.d.ts +15 -3
  24. package/dist/src/beast2.d.ts.map +1 -1
  25. package/dist/src/beast2.js +38 -8
  26. package/dist/src/beast2.js.map +1 -1
  27. package/dist/src/cli.js +58 -6
  28. package/dist/src/cli.js.map +1 -1
  29. package/dist/src/errors.d.ts +11 -0
  30. package/dist/src/errors.d.ts.map +1 -1
  31. package/dist/src/errors.js +95 -2
  32. package/dist/src/errors.js.map +1 -1
  33. package/dist/src/handlers/dataflow.d.ts +43 -0
  34. package/dist/src/handlers/dataflow.d.ts.map +1 -0
  35. package/dist/src/handlers/dataflow.js +363 -0
  36. package/dist/src/handlers/dataflow.js.map +1 -0
  37. package/dist/src/handlers/datasets.d.ts +39 -0
  38. package/dist/src/handlers/datasets.d.ts.map +1 -0
  39. package/dist/src/handlers/datasets.js +232 -0
  40. package/dist/src/handlers/datasets.js.map +1 -0
  41. package/dist/src/handlers/datasets.spec.d.ts +6 -0
  42. package/dist/src/handlers/datasets.spec.d.ts.map +1 -0
  43. package/dist/src/handlers/datasets.spec.js +151 -0
  44. package/dist/src/handlers/datasets.spec.js.map +1 -0
  45. package/dist/src/handlers/index.d.ts +11 -0
  46. package/dist/src/handlers/index.d.ts.map +1 -0
  47. package/dist/src/handlers/index.js +11 -0
  48. package/dist/src/handlers/index.js.map +1 -0
  49. package/dist/src/handlers/packages.d.ts +18 -0
  50. package/dist/src/handlers/packages.d.ts.map +1 -0
  51. package/dist/src/handlers/packages.js +51 -0
  52. package/dist/src/handlers/packages.js.map +1 -0
  53. package/dist/src/handlers/repository.d.ts +24 -0
  54. package/dist/src/handlers/repository.d.ts.map +1 -0
  55. package/dist/src/handlers/repository.js +79 -0
  56. package/dist/src/handlers/repository.js.map +1 -0
  57. package/dist/src/handlers/tasks.d.ts +18 -0
  58. package/dist/src/handlers/tasks.d.ts.map +1 -0
  59. package/dist/src/handlers/tasks.js +136 -0
  60. package/dist/src/handlers/tasks.js.map +1 -0
  61. package/dist/src/handlers/workspaces.d.ts +34 -0
  62. package/dist/src/handlers/workspaces.d.ts.map +1 -0
  63. package/dist/src/handlers/workspaces.js +225 -0
  64. package/dist/src/handlers/workspaces.js.map +1 -0
  65. package/dist/src/index.d.ts +3 -0
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +6 -0
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/middleware/auth.d.ts +51 -0
  70. package/dist/src/middleware/auth.d.ts.map +1 -0
  71. package/dist/src/middleware/auth.js +158 -0
  72. package/dist/src/middleware/auth.js.map +1 -0
  73. package/dist/src/orchestrator-manager.d.ts +45 -0
  74. package/dist/src/orchestrator-manager.d.ts.map +1 -0
  75. package/dist/src/orchestrator-manager.js +150 -0
  76. package/dist/src/orchestrator-manager.js.map +1 -0
  77. package/dist/src/routes/data.d.ts +21 -0
  78. package/dist/src/routes/data.d.ts.map +1 -0
  79. package/dist/src/routes/data.js +123 -0
  80. package/dist/src/routes/data.js.map +1 -0
  81. package/dist/src/routes/datasets.d.ts +2 -1
  82. package/dist/src/routes/datasets.d.ts.map +1 -1
  83. package/dist/src/routes/datasets.js +59 -83
  84. package/dist/src/routes/datasets.js.map +1 -1
  85. package/dist/src/routes/executions.d.ts +2 -1
  86. package/dist/src/routes/executions.d.ts.map +1 -1
  87. package/dist/src/routes/executions.js +54 -287
  88. package/dist/src/routes/executions.js.map +1 -1
  89. package/dist/src/routes/index.d.ts +15 -0
  90. package/dist/src/routes/index.d.ts.map +1 -0
  91. package/dist/src/routes/index.js +15 -0
  92. package/dist/src/routes/index.js.map +1 -0
  93. package/dist/src/routes/objects.d.ts +8 -0
  94. package/dist/src/routes/objects.d.ts.map +1 -0
  95. package/dist/src/routes/objects.js +37 -0
  96. package/dist/src/routes/objects.js.map +1 -0
  97. package/dist/src/routes/package-transfer.d.ts +23 -0
  98. package/dist/src/routes/package-transfer.d.ts.map +1 -0
  99. package/dist/src/routes/package-transfer.js +152 -0
  100. package/dist/src/routes/package-transfer.js.map +1 -0
  101. package/dist/src/routes/packages.d.ts +2 -1
  102. package/dist/src/routes/packages.d.ts.map +1 -1
  103. package/dist/src/routes/packages.js +18 -109
  104. package/dist/src/routes/packages.js.map +1 -1
  105. package/dist/src/routes/repository.d.ts +2 -1
  106. package/dist/src/routes/repository.d.ts.map +1 -1
  107. package/dist/src/routes/repository.js +19 -54
  108. package/dist/src/routes/repository.js.map +1 -1
  109. package/dist/src/routes/tasks.d.ts +2 -1
  110. package/dist/src/routes/tasks.d.ts.map +1 -1
  111. package/dist/src/routes/tasks.js +22 -46
  112. package/dist/src/routes/tasks.js.map +1 -1
  113. package/dist/src/routes/transfer.d.ts +19 -0
  114. package/dist/src/routes/transfer.d.ts.map +1 -0
  115. package/dist/src/routes/transfer.js +124 -0
  116. package/dist/src/routes/transfer.js.map +1 -0
  117. package/dist/src/routes/workspaces.d.ts +2 -1
  118. package/dist/src/routes/workspaces.d.ts.map +1 -1
  119. package/dist/src/routes/workspaces.js +83 -112
  120. package/dist/src/routes/workspaces.js.map +1 -1
  121. package/dist/src/server.d.ts +24 -3
  122. package/dist/src/server.d.ts.map +1 -1
  123. package/dist/src/server.js +270 -19
  124. package/dist/src/server.js.map +1 -1
  125. package/dist/src/types.d.ts +786 -1223
  126. package/dist/src/types.d.ts.map +1 -1
  127. package/dist/src/types.js +65 -407
  128. package/dist/src/types.js.map +1 -1
  129. package/package.json +28 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../../src/handlers/datasets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAsB,MAAM,eAAe,CAAC;AAEnJ,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAA6C,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAA4C,MAAM,aAAa,CAAC;AAE/G;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/E,OAAO,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB,EAClB,IAAa,EACb,UAAmB,EACnB,eAAiC;IAEjC,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC,EAAE;gBACxG,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEhG,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAC7B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,6CAA6C,EAAE,EAAE,CAAC,EAAE;gBACrI,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE;gBACnG,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAED,yFAAyF;QACzF,IAAI,eAAe,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5D,IAAI,IAAI,GAAG,cAAc,EAAE,CAAC;gBAC1B,IAAI,WAAW,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnF,kDAAkD;gBAClD,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;oBAC1C,WAAW,GAAG,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC1C,CAAC;gBACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE;oBACxD,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;wBAChC,kBAAkB,EAAE,IAAI;qBACzB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,mBAAmB;gBACnC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBACzC,kBAAkB,EAAE,IAAI;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB,EAClB,IAAgB;IAEhB,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,oDAAoD;QACpD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/E,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAAiB,EACjB,UAAkB,EAClB,MAAmB,EACnB,SAAkB;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAkB,SAAS,CAAC,WAAW,CAAC;oBACrD,CAAC,CAAC,WAA4B;oBAC9B,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAEjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC7B,IAAI;oBACJ,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC/D,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,CAAC;gBACd,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB;IAElB,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,uBAAuB,EAAE,cAAc,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEvF,kCAAkC;QAClC,MAAM,OAAO,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE3D,8CAA8C;QAC9C,MAAM,SAAS,GAAkB,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5D,CAAC,CAAC,MAAM,CAAC,WAA4B;YACrC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAExC,MAAM,MAAM,GAAwB;YAClC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC5C,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;SAC9D,CAAC;QAEF,OAAO,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,uBAAuB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB;IAElB,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC3E,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5D,0CAA0C;QAC1C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE5E,OAAO,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,KAAiB,EACjB,UAAkB,EAClB,MAAgB;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB;IAElB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC3E,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEpE,OAAO,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,QAAkB;IAElB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC3E,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAE7E,OAAO,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=datasets.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets.spec.d.ts","sourceRoot":"","sources":["../../../src/handlers/datasets.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { describe, it } from 'node:test';
6
+ import assert from 'node:assert/strict';
7
+ import { encodeBeast2For, StringType, variant } from '@elaraai/east';
8
+ import { BEAST2_CONTENT_TYPE, computeHash, InMemoryTransferBackend } from '@elaraai/e3-core';
9
+ import { InMemoryStorage } from '@elaraai/e3-core/test';
10
+ import { getDataset } from './datasets.js';
11
+ const REPO = 'test-repo';
12
+ const WS = 'test-ws';
13
+ describe('getDataset', () => {
14
+ it('returns BEAST2 bytes with correct headers', async () => {
15
+ const storage = new InMemoryStorage();
16
+ await storage.repos.create(REPO);
17
+ // Write a BEAST2-encoded value to the object store
18
+ const encode = encodeBeast2For(StringType);
19
+ const data = encode('hello');
20
+ const hash = await storage.objects.write(REPO, data);
21
+ // Write a dataset ref pointing to that object
22
+ await storage.datasets.write(REPO, WS, 'inputs/config', variant('value', {
23
+ hash,
24
+ versions: new Map(),
25
+ }));
26
+ const treePath = [variant('field', 'inputs'), variant('field', 'config')];
27
+ const response = await getDataset(storage, REPO, WS, treePath);
28
+ assert.equal(response.status, 200);
29
+ assert.equal(response.headers.get('Content-Type'), BEAST2_CONTENT_TYPE);
30
+ assert.equal(response.headers.get('X-Content-SHA256'), hash);
31
+ assert.equal(response.headers.get('Content-Length'), String(data.byteLength));
32
+ const body = new Uint8Array(await response.arrayBuffer());
33
+ assert.deepEqual(body, data);
34
+ });
35
+ it('returns correct Content-Length for large payloads', async () => {
36
+ const storage = new InMemoryStorage();
37
+ await storage.repos.create(REPO);
38
+ // Create a larger payload (~100KB)
39
+ const largeString = 'x'.repeat(100_000);
40
+ const encode = encodeBeast2For(StringType);
41
+ const data = encode(largeString);
42
+ const hash = await storage.objects.write(REPO, data);
43
+ await storage.datasets.write(REPO, WS, 'inputs/big', variant('value', {
44
+ hash,
45
+ versions: new Map(),
46
+ }));
47
+ const treePath = [variant('field', 'inputs'), variant('field', 'big')];
48
+ const response = await getDataset(storage, REPO, WS, treePath);
49
+ assert.equal(response.status, 200);
50
+ assert.equal(response.headers.get('Content-Length'), String(data.byteLength));
51
+ assert.equal(response.headers.get('X-Content-SHA256'), hash);
52
+ // Verify hash matches actual content
53
+ const body = new Uint8Array(await response.arrayBuffer());
54
+ assert.equal(computeHash(body), hash);
55
+ });
56
+ it('returns JSON with download URL for >1MB datasets when transferBackend provided', async () => {
57
+ const storage = new InMemoryStorage();
58
+ await storage.repos.create(REPO);
59
+ const transferBackend = new InMemoryTransferBackend({ baseUrl: '' });
60
+ // Create a >1MB payload
61
+ const largeString = 'x'.repeat(1_100_000);
62
+ const encode = encodeBeast2For(StringType);
63
+ const data = encode(largeString);
64
+ const hash = await storage.objects.write(REPO, data);
65
+ await storage.datasets.write(REPO, WS, 'inputs/big', variant('value', {
66
+ hash,
67
+ versions: new Map(),
68
+ }));
69
+ const treePath = [variant('field', 'inputs'), variant('field', 'big')];
70
+ const requestUrl = `http://localhost:3000/api/repos/${REPO}/workspaces/${WS}/datasets/inputs/big`;
71
+ const response = await getDataset(storage, REPO, WS, treePath, REPO, requestUrl, transferBackend);
72
+ assert.equal(response.status, 200);
73
+ assert.equal(response.headers.get('Content-Type'), 'application/json');
74
+ assert.equal(response.headers.get('X-Content-SHA256'), hash);
75
+ assert.equal(response.headers.get('X-Content-Length'), String(data.byteLength));
76
+ const body = await response.json();
77
+ assert.ok(body.url, 'should have url in body');
78
+ assert.ok(body.url.includes('/api/downloads/'), `Expected /api/downloads/ URL, got ${body.url}`);
79
+ });
80
+ it('returns inline bytes for >1MB datasets without transferBackend', async () => {
81
+ const storage = new InMemoryStorage();
82
+ await storage.repos.create(REPO);
83
+ // Create a >1MB payload
84
+ const largeString = 'x'.repeat(1_100_000);
85
+ const encode = encodeBeast2For(StringType);
86
+ const data = encode(largeString);
87
+ const hash = await storage.objects.write(REPO, data);
88
+ await storage.datasets.write(REPO, WS, 'inputs/big', variant('value', {
89
+ hash,
90
+ versions: new Map(),
91
+ }));
92
+ const treePath = [variant('field', 'inputs'), variant('field', 'big')];
93
+ const requestUrl = `http://localhost:3000/api/repos/${REPO}/workspaces/${WS}/datasets/inputs/big`;
94
+ const response = await getDataset(storage, REPO, WS, treePath, REPO, requestUrl);
95
+ // Without transferBackend, large datasets are served inline
96
+ assert.equal(response.status, 200);
97
+ assert.equal(response.headers.get('Content-Type'), BEAST2_CONTENT_TYPE);
98
+ assert.equal(response.headers.get('X-Content-SHA256'), hash);
99
+ });
100
+ it('returns inline bytes for ≤1MB datasets even with requestUrl', async () => {
101
+ const storage = new InMemoryStorage();
102
+ await storage.repos.create(REPO);
103
+ const encode = encodeBeast2For(StringType);
104
+ const data = encode('small value');
105
+ const hash = await storage.objects.write(REPO, data);
106
+ await storage.datasets.write(REPO, WS, 'inputs/small', variant('value', {
107
+ hash,
108
+ versions: new Map(),
109
+ }));
110
+ const treePath = [variant('field', 'inputs'), variant('field', 'small')];
111
+ const requestUrl = `http://localhost:3000/api/repos/${REPO}/workspaces/${WS}/datasets/inputs/small`;
112
+ const response = await getDataset(storage, REPO, WS, treePath, REPO, requestUrl);
113
+ assert.equal(response.status, 200);
114
+ assert.equal(response.headers.get('Content-Type'), BEAST2_CONTENT_TYPE);
115
+ assert.equal(response.headers.get('X-Content-SHA256'), hash);
116
+ });
117
+ it('returns 404 JSON error for null dataset', async () => {
118
+ const storage = new InMemoryStorage();
119
+ await storage.repos.create(REPO);
120
+ await storage.datasets.write(REPO, WS, 'inputs/empty', variant('null', {
121
+ versions: new Map(),
122
+ }));
123
+ const treePath = [variant('field', 'inputs'), variant('field', 'empty')];
124
+ const response = await getDataset(storage, REPO, WS, treePath);
125
+ assert.equal(response.status, 404);
126
+ assert.equal(response.headers.get('Content-Type'), 'application/json');
127
+ const body = await response.json();
128
+ assert.equal(body.error.type, 'dataset_null');
129
+ });
130
+ it('returns 404 JSON error for unassigned dataset', async () => {
131
+ const storage = new InMemoryStorage();
132
+ await storage.repos.create(REPO);
133
+ await storage.datasets.write(REPO, WS, 'tasks/output', variant('unassigned', null));
134
+ const treePath = [variant('field', 'tasks'), variant('field', 'output')];
135
+ const response = await getDataset(storage, REPO, WS, treePath);
136
+ assert.equal(response.status, 404);
137
+ assert.equal(response.headers.get('Content-Type'), 'application/json');
138
+ const body = await response.json();
139
+ assert.equal(body.error.type, 'dataset_unassigned');
140
+ });
141
+ it('returns 400 JSON error for empty path', async () => {
142
+ const storage = new InMemoryStorage();
143
+ await storage.repos.create(REPO);
144
+ const response = await getDataset(storage, REPO, WS, []);
145
+ assert.equal(response.status, 400);
146
+ assert.equal(response.headers.get('Content-Type'), 'application/json');
147
+ const body = await response.json();
148
+ assert.equal(body.error.type, 'bad_request');
149
+ });
150
+ });
151
+ //# sourceMappingURL=datasets.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets.spec.js","sourceRoot":"","sources":["../../../src/handlers/datasets.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export { getStatus, startGc, getGcStatus } from './repository.js';
6
+ export { listPackages, getPackage, deletePackage, } from './packages.js';
7
+ export { listWorkspaces, createWorkspace, getWorkspace, getWorkspaceStatus, deleteWorkspace, deployWorkspace, exportWorkspace, } from './workspaces.js';
8
+ export { listDatasets, listDatasetsRecursive, listDatasetsRecursivePaths, listDatasetsWithStatus, getDataset, getDatasetStatus, setDataset, } from './datasets.js';
9
+ export { listTasks, getTask, } from './tasks.js';
10
+ export { startDataflow, getDataflowStatus, getDataflowGraph, getTaskLogs, } from './dataflow.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,SAAS,EACT,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export { getStatus, startGc, getGcStatus } from './repository.js';
6
+ export { listPackages, getPackage, deletePackage, } from './packages.js';
7
+ export { listWorkspaces, createWorkspace, getWorkspace, getWorkspaceStatus, deleteWorkspace, deployWorkspace, exportWorkspace, } from './workspaces.js';
8
+ export { listDatasets, listDatasetsRecursive, listDatasetsRecursivePaths, listDatasetsWithStatus, getDataset, getDatasetStatus, setDataset, } from './datasets.js';
9
+ export { listTasks, getTask, } from './tasks.js';
10
+ export { startDataflow, getDataflowStatus, getDataflowGraph, getTaskLogs, } from './dataflow.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,SAAS,EACT,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,eAAe,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import type { StorageBackend } from '@elaraai/e3-core';
6
+ /**
7
+ * List all packages in the repository.
8
+ */
9
+ export declare function listPackages(storage: StorageBackend, repoPath: string): Promise<Response>;
10
+ /**
11
+ * Get package details.
12
+ */
13
+ export declare function getPackage(storage: StorageBackend, repoPath: string, name: string, version: string): Promise<Response>;
14
+ /**
15
+ * Delete a package.
16
+ */
17
+ export declare function deletePackage(storage: StorageBackend, repoPath: string, name: string, version: string): Promise<Response>;
18
+ //# sourceMappingURL=packages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../src/handlers/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CAOnB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { ArrayType, NullType } from '@elaraai/east';
6
+ import { packageList, packageRemove, packageRead, } from '@elaraai/e3-core';
7
+ import { PackageObjectType } from '@elaraai/e3-types';
8
+ import { sendSuccess, sendError } from '../beast2.js';
9
+ import { errorToVariant } from '../errors.js';
10
+ import { PackageListItemType } from '../types.js';
11
+ /**
12
+ * List all packages in the repository.
13
+ */
14
+ export async function listPackages(storage, repoPath) {
15
+ try {
16
+ const packages = await packageList(storage, repoPath);
17
+ const result = packages.map((pkg) => ({
18
+ name: pkg.name,
19
+ version: pkg.version,
20
+ }));
21
+ return sendSuccess(ArrayType(PackageListItemType), result);
22
+ }
23
+ catch (err) {
24
+ return sendError(ArrayType(PackageListItemType), errorToVariant(err));
25
+ }
26
+ }
27
+ /**
28
+ * Get package details.
29
+ */
30
+ export async function getPackage(storage, repoPath, name, version) {
31
+ try {
32
+ const pkg = await packageRead(storage, repoPath, name, version);
33
+ return sendSuccess(PackageObjectType, pkg);
34
+ }
35
+ catch (err) {
36
+ return sendError(PackageObjectType, errorToVariant(err));
37
+ }
38
+ }
39
+ /**
40
+ * Delete a package.
41
+ */
42
+ export async function deletePackage(storage, repoPath, name, version) {
43
+ try {
44
+ await packageRemove(storage, repoPath, name, version);
45
+ return sendSuccess(NullType, null);
46
+ }
47
+ catch (err) {
48
+ return sendError(NullType, errorToVariant(err));
49
+ }
50
+ }
51
+ //# sourceMappingURL=packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../../src/handlers/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;QACJ,OAAO,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import type { StorageBackend } from '@elaraai/e3-core';
6
+ /**
7
+ * Get repository status.
8
+ */
9
+ export declare function getStatus(storage: StorageBackend, repoPath: string): Promise<Response>;
10
+ /**
11
+ * Start garbage collection (async).
12
+ *
13
+ * Returns immediately with an executionId. GC runs in background.
14
+ * Poll getGcStatus() for progress.
15
+ */
16
+ export declare function startGc(storage: StorageBackend, repoPath: string, options: {
17
+ dryRun: boolean;
18
+ minAge?: number;
19
+ }): Response;
20
+ /**
21
+ * Get garbage collection status.
22
+ */
23
+ export declare function getGcStatus(executionId: string): Response;
24
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/handlers/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBvD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,QAAQ,CAuBV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAezD"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { variant } from '@elaraai/east';
6
+ import { repoGc, packageList, workspaceList } from '@elaraai/e3-core';
7
+ import { sendSuccess, sendSuccessWithStatus, sendError } from '../beast2.js';
8
+ import { errorToVariant } from '../errors.js';
9
+ import { RepositoryStatusType, GcStartResultType, GcStatusResultType, } from '../types.js';
10
+ import { createGcOperation, completeGcOperation, failGcOperation, getGcOperationStatus, hasGcOperation, } from '../async-operation-state.js';
11
+ /**
12
+ * Get repository status.
13
+ */
14
+ export async function getStatus(storage, repoPath) {
15
+ try {
16
+ // Count objects
17
+ const objectCount = await storage.objects.count(repoPath);
18
+ // Count packages and workspaces
19
+ const packages = await packageList(storage, repoPath);
20
+ const workspaces = await workspaceList(storage, repoPath);
21
+ const status = {
22
+ path: repoPath,
23
+ objectCount: BigInt(objectCount),
24
+ packageCount: BigInt(packages.length),
25
+ workspaceCount: BigInt(workspaces.length),
26
+ };
27
+ return sendSuccess(RepositoryStatusType, status);
28
+ }
29
+ catch (err) {
30
+ return sendError(RepositoryStatusType, errorToVariant(err));
31
+ }
32
+ }
33
+ /**
34
+ * Start garbage collection (async).
35
+ *
36
+ * Returns immediately with an executionId. GC runs in background.
37
+ * Poll getGcStatus() for progress.
38
+ */
39
+ export function startGc(storage, repoPath, options) {
40
+ // Create operation and get executionId
41
+ const executionId = createGcOperation();
42
+ // Run GC in background (don't await)
43
+ void (async () => {
44
+ try {
45
+ const result = await repoGc(storage, repoPath, options);
46
+ completeGcOperation(executionId, {
47
+ deletedObjects: BigInt(result.deletedObjects),
48
+ deletedPartials: BigInt(result.deletedPartials),
49
+ retainedObjects: BigInt(result.retainedObjects),
50
+ skippedYoung: BigInt(result.skippedYoung),
51
+ bytesFreed: BigInt(result.bytesFreed),
52
+ });
53
+ }
54
+ catch (err) {
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ failGcOperation(executionId, message);
57
+ }
58
+ })();
59
+ // Return 202 Accepted with executionId
60
+ return sendSuccessWithStatus(GcStartResultType, { executionId }, 202);
61
+ }
62
+ /**
63
+ * Get garbage collection status.
64
+ */
65
+ export function getGcStatus(executionId) {
66
+ if (!hasGcOperation(executionId)) {
67
+ return sendError(GcStatusResultType, variant('internal', {
68
+ message: `GC operation not found: ${executionId}`,
69
+ }));
70
+ }
71
+ const status = getGcOperationStatus(executionId);
72
+ if (!status) {
73
+ return sendError(GcStatusResultType, variant('internal', {
74
+ message: `GC operation not found: ${executionId}`,
75
+ }));
76
+ }
77
+ return sendSuccess(GcStatusResultType, status);
78
+ }
79
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/handlers/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAuB,EACvB,QAAgB;IAEhB,IAAI,CAAC;QACH,gBAAgB;QAChB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;SAC1C,CAAC;QACF,OAAO,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,oBAAoB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,OAAuB,EACvB,QAAgB,EAChB,OAA6C;IAE7C,uCAAuC;IACvC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IAExC,qCAAqC;IACrC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxD,mBAAmB,CAAC,WAAW,EAAE;gBAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC7C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC/C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;gBACzC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,uCAAuC;IACvC,OAAO,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE;YACvD,OAAO,EAAE,2BAA2B,WAAW,EAAE;SAClD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE;YACvD,OAAO,EAAE,2BAA2B,WAAW,EAAE;SAClD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import type { StorageBackend } from '@elaraai/e3-core';
6
+ /**
7
+ * List all tasks in a workspace.
8
+ */
9
+ export declare function listTasks(storage: StorageBackend, repoPath: string, workspace: string): Promise<Response>;
10
+ /**
11
+ * Get task details.
12
+ */
13
+ export declare function getTask(storage: StorageBackend, repoPath: string, workspace: string, taskName: string): Promise<Response>;
14
+ /**
15
+ * List execution history for a task.
16
+ */
17
+ export declare function listExecutions(storage: StorageBackend, repoPath: string, workspace: string, taskName: string): Promise<Response>;
18
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/handlers/tasks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAgBnB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CAiBnB;AAyBD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CA+DnB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { ArrayType, none, some, variant } from '@elaraai/east';
6
+ import { workspaceListTasks, workspaceGetTask, workspaceGetTaskHash, executionListForTask, executionGetLatest, } from '@elaraai/e3-core';
7
+ import { sendSuccess, sendError } from '../beast2.js';
8
+ import { errorToVariant } from '../errors.js';
9
+ import { TaskListItemType, TaskDetailsType, ExecutionListItemType } from '../types.js';
10
+ /**
11
+ * List all tasks in a workspace.
12
+ */
13
+ export async function listTasks(storage, repoPath, workspace) {
14
+ try {
15
+ const taskNames = await workspaceListTasks(storage, repoPath, workspace);
16
+ // Get hash for each task
17
+ const result = await Promise.all(taskNames.map(async (name) => {
18
+ const hash = await workspaceGetTaskHash(storage, repoPath, workspace, name);
19
+ return { name, hash };
20
+ }));
21
+ return sendSuccess(ArrayType(TaskListItemType), result);
22
+ }
23
+ catch (err) {
24
+ return sendError(ArrayType(TaskListItemType), errorToVariant(err));
25
+ }
26
+ }
27
+ /**
28
+ * Get task details.
29
+ */
30
+ export async function getTask(storage, repoPath, workspace, taskName) {
31
+ try {
32
+ const hash = await workspaceGetTaskHash(storage, repoPath, workspace, taskName);
33
+ const task = await workspaceGetTask(storage, repoPath, workspace, taskName);
34
+ return sendSuccess(TaskDetailsType, {
35
+ name: taskName,
36
+ hash,
37
+ commandIr: task.commandIr,
38
+ inputs: task.inputs,
39
+ output: task.output,
40
+ kind: task.kind,
41
+ metadata: task.metadata,
42
+ });
43
+ }
44
+ catch (err) {
45
+ return sendError(TaskDetailsType, errorToVariant(err));
46
+ }
47
+ }
48
+ /**
49
+ * Convert ExecutionStatus to API ExecutionHistoryStatus variant.
50
+ */
51
+ function statusToApiStatus(status) {
52
+ switch (status.type) {
53
+ case 'running':
54
+ return variant('running', null);
55
+ case 'success':
56
+ return variant('success', null);
57
+ case 'failed':
58
+ return variant('failed', null);
59
+ case 'error':
60
+ return variant('error', null);
61
+ }
62
+ }
63
+ /**
64
+ * Calculate duration in milliseconds between two dates.
65
+ */
66
+ function calculateDuration(startedAt, completedAt) {
67
+ return BigInt(Math.round(completedAt.getTime() - startedAt.getTime()));
68
+ }
69
+ /**
70
+ * List execution history for a task.
71
+ */
72
+ export async function listExecutions(storage, repoPath, workspace, taskName) {
73
+ try {
74
+ const taskHash = await workspaceGetTaskHash(storage, repoPath, workspace, taskName);
75
+ const inputsHashes = await executionListForTask(storage, repoPath, taskHash);
76
+ const result = [];
77
+ for (const inputsHash of inputsHashes) {
78
+ const status = await executionGetLatest(storage, repoPath, taskHash, inputsHash);
79
+ if (!status)
80
+ continue;
81
+ // Build the complete item based on status type
82
+ let item;
83
+ if (status.type === 'success') {
84
+ item = {
85
+ inputsHash,
86
+ inputHashes: status.value.inputHashes,
87
+ status: statusToApiStatus(status),
88
+ startedAt: status.value.startedAt.toISOString(),
89
+ completedAt: some(status.value.completedAt.toISOString()),
90
+ duration: some(calculateDuration(status.value.startedAt, status.value.completedAt)),
91
+ exitCode: none,
92
+ };
93
+ }
94
+ else if (status.type === 'failed') {
95
+ item = {
96
+ inputsHash,
97
+ inputHashes: status.value.inputHashes,
98
+ status: statusToApiStatus(status),
99
+ startedAt: status.value.startedAt.toISOString(),
100
+ completedAt: some(status.value.completedAt.toISOString()),
101
+ duration: some(calculateDuration(status.value.startedAt, status.value.completedAt)),
102
+ exitCode: some(status.value.exitCode),
103
+ };
104
+ }
105
+ else if (status.type === 'error') {
106
+ item = {
107
+ inputsHash,
108
+ inputHashes: status.value.inputHashes,
109
+ status: statusToApiStatus(status),
110
+ startedAt: status.value.startedAt.toISOString(),
111
+ completedAt: some(status.value.completedAt.toISOString()),
112
+ duration: none,
113
+ exitCode: none,
114
+ };
115
+ }
116
+ else {
117
+ // running status
118
+ item = {
119
+ inputsHash,
120
+ inputHashes: status.value.inputHashes,
121
+ status: statusToApiStatus(status),
122
+ startedAt: status.value.startedAt.toISOString(),
123
+ completedAt: none,
124
+ duration: none,
125
+ exitCode: none,
126
+ };
127
+ }
128
+ result.push(item);
129
+ }
130
+ return sendSuccess(ArrayType(ExecutionListItemType), result);
131
+ }
132
+ catch (err) {
133
+ return sendError(ArrayType(ExecutionListItemType), errorToVariant(err));
134
+ }
135
+ }
136
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/handlers/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import type { StorageBackend } from '@elaraai/e3-core';
6
+ /**
7
+ * List all workspaces in the repository.
8
+ */
9
+ export declare function listWorkspaces(storage: StorageBackend, repoPath: string): Promise<Response>;
10
+ /**
11
+ * Create a new workspace.
12
+ */
13
+ export declare function createWorkspace(storage: StorageBackend, repoPath: string, name: string): Promise<Response>;
14
+ /**
15
+ * Get workspace state.
16
+ */
17
+ export declare function getWorkspace(storage: StorageBackend, repoPath: string, name: string): Promise<Response>;
18
+ /**
19
+ * Get comprehensive workspace status.
20
+ */
21
+ export declare function getWorkspaceStatus(storage: StorageBackend, repoPath: string, name: string): Promise<Response>;
22
+ /**
23
+ * Delete a workspace.
24
+ */
25
+ export declare function deleteWorkspace(storage: StorageBackend, repoPath: string, name: string): Promise<Response>;
26
+ /**
27
+ * Deploy a package to a workspace.
28
+ */
29
+ export declare function deployWorkspace(storage: StorageBackend, repoPath: string, workspace: string, packageRef: string): Promise<Response>;
30
+ /**
31
+ * Export a workspace as a zip archive.
32
+ */
33
+ export declare function exportWorkspace(storage: StorageBackend, repoPath: string, workspace: string): Promise<Response>;
34
+ //# sourceMappingURL=workspaces.d.ts.map