@airprompter/agent-core 0.1.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/README.md +28 -0
  2. package/dist/cjs/bundle/apbundle.js +98 -0
  3. package/dist/cjs/bundle/apbundle.js.map +1 -0
  4. package/dist/cjs/bundle/hpke.js +120 -0
  5. package/dist/cjs/bundle/hpke.js.map +1 -0
  6. package/dist/cjs/checks/index.js +450 -0
  7. package/dist/cjs/checks/index.js.map +1 -0
  8. package/dist/cjs/control/client.js +85 -0
  9. package/dist/cjs/control/client.js.map +1 -0
  10. package/dist/cjs/golden/index.js +138 -0
  11. package/dist/cjs/golden/index.js.map +1 -0
  12. package/dist/cjs/index.js +125 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/judge/index.js +134 -0
  15. package/dist/cjs/judge/index.js.map +1 -0
  16. package/dist/cjs/package.json +1 -0
  17. package/dist/cjs/ports/node.js +30 -0
  18. package/dist/cjs/ports/node.js.map +1 -0
  19. package/dist/cjs/protocol/assignment.js +158 -0
  20. package/dist/cjs/protocol/assignment.js.map +1 -0
  21. package/dist/cjs/protocol/canonicalJson.js +72 -0
  22. package/dist/cjs/protocol/canonicalJson.js.map +1 -0
  23. package/dist/cjs/protocol/errors.js +22 -0
  24. package/dist/cjs/protocol/errors.js.map +1 -0
  25. package/dist/cjs/protocol/ports.js +19 -0
  26. package/dist/cjs/protocol/ports.js.map +1 -0
  27. package/dist/cjs/protocol/trust.js +225 -0
  28. package/dist/cjs/protocol/trust.js.map +1 -0
  29. package/dist/cjs/protocol/types.js +15 -0
  30. package/dist/cjs/protocol/types.js.map +1 -0
  31. package/dist/cjs/protocol/version.js +8 -0
  32. package/dist/cjs/protocol/version.js.map +1 -0
  33. package/dist/cjs/release/bundleRelease.js +61 -0
  34. package/dist/cjs/release/bundleRelease.js.map +1 -0
  35. package/dist/cjs/release/reader.js +12 -0
  36. package/dist/cjs/release/reader.js.map +1 -0
  37. package/dist/cjs/render/runRef.js +33 -0
  38. package/dist/cjs/render/runRef.js.map +1 -0
  39. package/dist/cjs/render/template.js +71 -0
  40. package/dist/cjs/render/template.js.map +1 -0
  41. package/dist/cjs/telemetry/feedback.js +81 -0
  42. package/dist/cjs/telemetry/feedback.js.map +1 -0
  43. package/dist/cjs/telemetry/rows.js +28 -0
  44. package/dist/cjs/telemetry/rows.js.map +1 -0
  45. package/dist/cjs/telemetry/uploadSink.js +13 -0
  46. package/dist/cjs/telemetry/uploadSink.js.map +1 -0
  47. package/dist/cjs/testing/controlPlane.js +381 -0
  48. package/dist/cjs/testing/controlPlane.js.map +1 -0
  49. package/dist/cjs/testing/index.js +45 -0
  50. package/dist/cjs/testing/index.js.map +1 -0
  51. package/dist/cjs/testing/memoryFs.js +236 -0
  52. package/dist/cjs/testing/memoryFs.js.map +1 -0
  53. package/dist/esm/.tsbuildinfo +1 -0
  54. package/dist/esm/bundle/apbundle.d.ts +33 -0
  55. package/dist/esm/bundle/apbundle.js +89 -0
  56. package/dist/esm/bundle/apbundle.js.map +1 -0
  57. package/dist/esm/bundle/hpke.d.ts +48 -0
  58. package/dist/esm/bundle/hpke.js +107 -0
  59. package/dist/esm/bundle/hpke.js.map +1 -0
  60. package/dist/esm/checks/index.d.ts +85 -0
  61. package/dist/esm/checks/index.js +436 -0
  62. package/dist/esm/checks/index.js.map +1 -0
  63. package/dist/esm/control/client.d.ts +78 -0
  64. package/dist/esm/control/client.js +81 -0
  65. package/dist/esm/control/client.js.map +1 -0
  66. package/dist/esm/golden/index.d.ts +97 -0
  67. package/dist/esm/golden/index.js +130 -0
  68. package/dist/esm/golden/index.js.map +1 -0
  69. package/dist/esm/index.d.ts +41 -0
  70. package/dist/esm/index.js +31 -0
  71. package/dist/esm/index.js.map +1 -0
  72. package/dist/esm/judge/index.d.ts +51 -0
  73. package/dist/esm/judge/index.js +127 -0
  74. package/dist/esm/judge/index.js.map +1 -0
  75. package/dist/esm/ports/node.d.ts +8 -0
  76. package/dist/esm/ports/node.js +27 -0
  77. package/dist/esm/ports/node.js.map +1 -0
  78. package/dist/esm/protocol/assignment.d.ts +49 -0
  79. package/dist/esm/protocol/assignment.js +143 -0
  80. package/dist/esm/protocol/assignment.js.map +1 -0
  81. package/dist/esm/protocol/canonicalJson.d.ts +10 -0
  82. package/dist/esm/protocol/canonicalJson.js +65 -0
  83. package/dist/esm/protocol/canonicalJson.js.map +1 -0
  84. package/dist/esm/protocol/errors.d.ts +15 -0
  85. package/dist/esm/protocol/errors.js +19 -0
  86. package/dist/esm/protocol/errors.js.map +1 -0
  87. package/dist/esm/protocol/ports.d.ts +65 -0
  88. package/dist/esm/protocol/ports.js +16 -0
  89. package/dist/esm/protocol/ports.js.map +1 -0
  90. package/dist/esm/protocol/trust.d.ts +60 -0
  91. package/dist/esm/protocol/trust.js +211 -0
  92. package/dist/esm/protocol/trust.js.map +1 -0
  93. package/dist/esm/protocol/types.d.ts +235 -0
  94. package/dist/esm/protocol/types.js +12 -0
  95. package/dist/esm/protocol/types.js.map +1 -0
  96. package/dist/esm/protocol/version.d.ts +4 -0
  97. package/dist/esm/protocol/version.js +5 -0
  98. package/dist/esm/protocol/version.js.map +1 -0
  99. package/dist/esm/release/bundleRelease.d.ts +45 -0
  100. package/dist/esm/release/bundleRelease.js +57 -0
  101. package/dist/esm/release/bundleRelease.js.map +1 -0
  102. package/dist/esm/release/reader.d.ts +30 -0
  103. package/dist/esm/release/reader.js +11 -0
  104. package/dist/esm/release/reader.js.map +1 -0
  105. package/dist/esm/render/runRef.d.ts +17 -0
  106. package/dist/esm/render/runRef.js +29 -0
  107. package/dist/esm/render/runRef.js.map +1 -0
  108. package/dist/esm/render/template.d.ts +38 -0
  109. package/dist/esm/render/template.js +65 -0
  110. package/dist/esm/render/template.js.map +1 -0
  111. package/dist/esm/telemetry/feedback.d.ts +21 -0
  112. package/dist/esm/telemetry/feedback.js +77 -0
  113. package/dist/esm/telemetry/feedback.js.map +1 -0
  114. package/dist/esm/telemetry/rows.d.ts +85 -0
  115. package/dist/esm/telemetry/rows.js +22 -0
  116. package/dist/esm/telemetry/rows.js.map +1 -0
  117. package/dist/esm/telemetry/uploadSink.d.ts +52 -0
  118. package/dist/esm/telemetry/uploadSink.js +12 -0
  119. package/dist/esm/telemetry/uploadSink.js.map +1 -0
  120. package/dist/esm/testing/controlPlane.d.ts +116 -0
  121. package/dist/esm/testing/controlPlane.js +341 -0
  122. package/dist/esm/testing/controlPlane.js.map +1 -0
  123. package/dist/esm/testing/index.d.ts +25 -0
  124. package/dist/esm/testing/index.js +35 -0
  125. package/dist/esm/testing/index.js.map +1 -0
  126. package/dist/esm/testing/memoryFs.d.ts +64 -0
  127. package/dist/esm/testing/memoryFs.js +232 -0
  128. package/dist/esm/testing/memoryFs.js.map +1 -0
  129. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,GAAG;IACrB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,EAAE;IACjB,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;IAClB,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAQH,MAAM,IAAI,GAAG,gCAAgC,CAAC;AAC9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,gBAAgB;QAAE,OAAO,UAAU,CAAC;IACtE,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,eAAe,CAAC;IAC5E,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,sBAAsB,CAAC;IACrF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC;YACX,MAAM,eAAe,GAAG,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,eAAe,IAAI,IAAI,EAAE,UAAU;gBAAE,OAAO,mBAAmB,CAAC;YACpE,IAAI,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,UAAU,GAAG,IAAI,CAAC;YACvF,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,UAAU,GAAG,IAAI,CAAC;YACpE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACjC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,UAAU,GAAG,IAAI,CAAC;IACpG,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACrC,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAe;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QAC7E,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IACxE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa;QAAE,OAAO,UAAU,CAAC;IACtH,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,OAAO,sBAAsB,CAAC;YAChH,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc;gBAAE,OAAO,kBAAkB,CAAC;YACjG,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa;gBAAE,OAAO,UAAU,CAAC;YAChG,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa;gBAAE,OAAO,YAAY,CAAC;YACrH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC;gBAAE,OAAO,YAAY,CAAC;YACpI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;gBAAE,OAAO,kBAAkB,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC,IAAK,CAAY,IAAI,YAAY,CAAC,SAAS,CAAC;YACnH,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO,UAAU,CAAC;YAC9E,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,OAAO,WAAW,CAAC;YACzE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,OAAO,WAAW,CAAC;YACzE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAK,CAAC,CAAC,SAAoB,GAAI,CAAC,CAAC,SAAoB;gBAAE,OAAO,iBAAiB,CAAC;YAC1I,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,YAAY,CAAC;QAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,OAAO,WAAW,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG;gBAAE,OAAO,WAAW,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QACD;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,MAAM,QAAQ,GAAmD,EAAE,CAAC;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,OAAQ,KAA4B,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjH,IAAI,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACvE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrF,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,KAAc;IAChE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACjG,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5G,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnG,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,eAAe;gBAAE,OAAO,KAAK,CAAC;YAC/F,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;IACvE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9E,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9E,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACvG,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,UAAsC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9H,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAAE,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClG,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,IAAI,GAAG,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC9H,IAAI,CAAC,CAAC,oBAAoB,KAAK,KAAK;YAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;IACtH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,IAAY;IACtD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,IAAK,OAAmC;YAAE,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;;YAC1J,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,KAAkB,EAAE,KAAoD;IACpG,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,MAAc,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChH,MAAM,IAAI,GAAG,GAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3F,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,SAAkB,CAAC;YACvB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAClC,SAAS,GAAG,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,CAAC,EAAE,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC3C,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;YACvB,CAAC;YACD,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAK,KAAK,CAAC,YAAuB,IAAI,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,YAAuB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnJ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;YACxF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;YACvF,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,YAAY,CAAC;QAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;QACD;YACE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,MAA4C,EAAE,KAAoD;IAC/H,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;YAAE,SAAS;QAC/C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7I,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,aAAa,CAAC,MAA4C;IACxE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;SACnD,GAAG,CAAC,CAAC,KAAK,EAAe,EAAE;QAC1B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,aAAa;gBAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACzE,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzF,KAAK,QAAQ;gBACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAClM;gBACE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1H,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,IAAI,GAAG,MAAiC,CAAC;IAC/C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAiB,EAAE;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACxN,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAyC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7I,IAAI,OAAO;QAAE,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,MAAkC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzH,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChJ,IAAI,UAAU;QAAE,OAAO,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC;IAClE,2EAA2E;IAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAE,IAAuC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7I,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The three reads a runtime makes, over outbound HTTPS with the Agent key:
3
+ * the edge pointer (no key), the manifest (ETag / 304), and payloads by
4
+ * content hash (inline or a presigned redirect, which `fetch` follows).
5
+ * Nothing here decides anything; the trust chain runs on what comes back.
6
+ */
7
+ import type { EdgePointer, Manifest } from "../protocol/types.js";
8
+ export type FetchLike = (input: string, init?: {
9
+ method?: string;
10
+ headers?: Record<string, string>;
11
+ redirect?: "follow";
12
+ body?: string | Uint8Array;
13
+ }) => Promise<{
14
+ status: number;
15
+ headers: {
16
+ get(name: string): string | null;
17
+ };
18
+ arrayBuffer(): Promise<ArrayBuffer>;
19
+ text(): Promise<string>;
20
+ }>;
21
+ export interface SyncClientOptions {
22
+ baseUrl: string;
23
+ agentId: string;
24
+ target: string;
25
+ apiKey: string;
26
+ fetch?: FetchLike;
27
+ userAgent?: string;
28
+ }
29
+ export type ManifestFetch = {
30
+ status: "ok";
31
+ manifest: Manifest;
32
+ etag: string | null;
33
+ generation: number | null;
34
+ } | {
35
+ status: "not_modified";
36
+ } | {
37
+ status: "not_found";
38
+ } | {
39
+ status: "unauthorized";
40
+ } | {
41
+ status: "forbidden";
42
+ code: string | null;
43
+ } | {
44
+ status: "error";
45
+ httpStatus: number;
46
+ };
47
+ export declare class SyncClient {
48
+ private readonly options;
49
+ private readonly fetchImpl;
50
+ constructor(options: SyncClientOptions);
51
+ private headers;
52
+ edgePointer(url: string, etag: string | null): Promise<{
53
+ status: "ok";
54
+ pointer: EdgePointer;
55
+ etag: string | null;
56
+ } | {
57
+ status: "not_modified";
58
+ } | {
59
+ status: "unavailable";
60
+ }>;
61
+ manifest(input: {
62
+ ifNoneMatch?: string | null;
63
+ wait?: number;
64
+ }): Promise<ManifestFetch>;
65
+ /** T9: the heartbeat. Content-free by schema; the response carries the cadence, the expiry and (T12) the upload grant. */
66
+ heartbeat(body: Record<string, unknown>): Promise<{
67
+ status: "ok";
68
+ response: Record<string, unknown>;
69
+ } | {
70
+ status: "refused";
71
+ httpStatus: number;
72
+ code: string | null;
73
+ } | {
74
+ status: "error";
75
+ httpStatus: number;
76
+ }>;
77
+ payload(contentHash: string): Promise<Buffer | null>;
78
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The three reads a runtime makes, over outbound HTTPS with the Agent key:
3
+ * the edge pointer (no key), the manifest (ETag / 304), and payloads by
4
+ * content hash (inline or a presigned redirect, which `fetch` follows).
5
+ * Nothing here decides anything; the trust chain runs on what comes back.
6
+ */
7
+ export class SyncClient {
8
+ options;
9
+ fetchImpl;
10
+ constructor(options) {
11
+ this.options = options;
12
+ this.fetchImpl = options.fetch ?? globalThis.fetch;
13
+ if (!this.fetchImpl)
14
+ throw new Error("no fetch available: Node 20+ or pass options.fetch");
15
+ }
16
+ headers(extra = {}) {
17
+ return { authorization: `Bearer ${this.options.apiKey}`, "user-agent": this.options.userAgent ?? "airprompter-agent-sdk-ts", ...extra };
18
+ }
19
+ async edgePointer(url, etag) {
20
+ const response = await this.fetchImpl(url, { headers: etag ? { "if-none-match": etag, "user-agent": this.options.userAgent ?? "airprompter-agent-sdk-ts" } : {} });
21
+ if (response.status === 304)
22
+ return { status: "not_modified" };
23
+ if (response.status !== 200)
24
+ return { status: "unavailable" };
25
+ return { status: "ok", pointer: JSON.parse(await response.text()), etag: response.headers.get("etag") };
26
+ }
27
+ async manifest(input) {
28
+ const url = new URL(`${this.options.baseUrl}/v1/agents/${encodeURIComponent(this.options.agentId)}/targets/${this.options.target}/manifest`);
29
+ if (input.wait)
30
+ url.searchParams.set("wait", String(input.wait));
31
+ const response = await this.fetchImpl(url.toString(), { headers: this.headers(input.ifNoneMatch ? { "if-none-match": input.ifNoneMatch } : {}) });
32
+ if (response.status === 304)
33
+ return { status: "not_modified" };
34
+ if (response.status === 404)
35
+ return { status: "not_found" };
36
+ if (response.status === 401)
37
+ return { status: "unauthorized" };
38
+ if (response.status === 403) {
39
+ let code = null;
40
+ try {
41
+ code = (JSON.parse(await response.text()).details?.code ?? null);
42
+ }
43
+ catch {
44
+ code = null;
45
+ }
46
+ return { status: "forbidden", code };
47
+ }
48
+ if (response.status !== 200)
49
+ return { status: "error", httpStatus: response.status };
50
+ const generation = response.headers.get("x-agent-generation");
51
+ return { status: "ok", manifest: JSON.parse(await response.text()), etag: response.headers.get("etag"), generation: generation ? Number(generation) : null };
52
+ }
53
+ /** T9: the heartbeat. Content-free by schema; the response carries the cadence, the expiry and (T12) the upload grant. */
54
+ async heartbeat(body) {
55
+ const url = `${this.options.baseUrl}/v1/agents/${encodeURIComponent(this.options.agentId)}/targets/${this.options.target}/heartbeat`;
56
+ const response = await this.fetchImpl(url, { method: "POST", headers: this.headers({ "content-type": "application/json" }), body: JSON.stringify(body) });
57
+ if (response.status === 200)
58
+ return { status: "ok", response: JSON.parse(await response.text()) };
59
+ if (response.status === 400 || response.status === 401 || response.status === 403 || response.status === 429) {
60
+ let code = null;
61
+ try {
62
+ code = JSON.parse(await response.text()).details?.code ?? null;
63
+ }
64
+ catch {
65
+ code = null;
66
+ }
67
+ return { status: "refused", httpStatus: response.status, code };
68
+ }
69
+ return { status: "error", httpStatus: response.status };
70
+ }
71
+ async payload(contentHash) {
72
+ const url = `${this.options.baseUrl}/v1/agents/${encodeURIComponent(this.options.agentId)}/payloads/${contentHash}`;
73
+ const response = await this.fetchImpl(url, { headers: this.headers(), redirect: "follow" });
74
+ if (response.status === 404)
75
+ return null;
76
+ if (response.status !== 200)
77
+ throw new Error(`payload ${contentHash}: HTTP ${response.status}`);
78
+ return Buffer.from(await response.arrayBuffer());
79
+ }
80
+ }
81
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/control/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Golden sets (T34, 5-D): known inputs with the properties a right answer has,
3
+ * run against the pinned model on the customer's own key before a staged
4
+ * release activates (`protocol/golden-sets.md`).
5
+ *
6
+ * The set is a payload the manifest slot references (`goldenSet.contentHash`),
7
+ * encrypted at rest like the prompt it exercises. Each case is a set of
8
+ * variable values and a list of expectations in the output-check grammar
9
+ * (checks.md), so the same evaluator the runtime already runs inside
10
+ * `observe()` decides a case. The customer supplies the model call
11
+ * (`invoke`); nothing here talks to a provider. Only counts leave the host:
12
+ * `goldenPass` on the arm's window, one per case, and the apply decision.
13
+ */
14
+ import { type Delimiters } from "../render/template.js";
15
+ import type { GoldenSetRef, ManifestSlot, OutputCheck } from "../protocol/types.js";
16
+ export declare const GOLDEN_SET_FORMAT = "airprompter-golden-set";
17
+ export declare const GOLDEN_SET_VERSION = 1;
18
+ export declare const GOLDEN_MAX_CASES = 50;
19
+ export declare const GOLDEN_MAX_EXPECTATIONS = 8;
20
+ /** Cases run this many at a time by default; the customer's rate limits are the real bound. */
21
+ export declare const GOLDEN_DEFAULT_CONCURRENCY = 4;
22
+ export interface GoldenCase {
23
+ caseId: string;
24
+ variables: Record<string, string>;
25
+ expect: OutputCheck[];
26
+ }
27
+ export interface GoldenSet {
28
+ format: typeof GOLDEN_SET_FORMAT;
29
+ version: typeof GOLDEN_SET_VERSION;
30
+ setId: string;
31
+ /** Pass-rate floor in basis points; below it a staged release is not activated. */
32
+ minPassBps: number;
33
+ cases: GoldenCase[];
34
+ }
35
+ export declare class GoldenSetError extends Error {
36
+ readonly reason: "not_json" | "not_a_golden_set" | "case_invalid" | "reference_mismatch";
37
+ constructor(reason: "not_json" | "not_a_golden_set" | "case_invalid" | "reference_mismatch", message: string);
38
+ }
39
+ /** The payload's bytes as a set: shape only (the checks themselves are validated when evaluated). */
40
+ export declare function parseGoldenSet(bytes: Uint8Array, reference?: Pick<GoldenSetRef, "setId" | "cases">): GoldenSet;
41
+ /** What the customer's model call receives: the rendered prompt and the facts around it. Never stored by the SDK. */
42
+ export interface GoldenInvocation {
43
+ tag: string;
44
+ caseId: string;
45
+ /** The slot's text rendered with the case's variables — the prompt the pinned model is asked. */
46
+ text: string;
47
+ model: string;
48
+ arm: string;
49
+ variables: Readonly<Record<string, string>>;
50
+ }
51
+ /** The customer's model call: the output text, optionally with the provider's output token count (a length band uses it). */
52
+ export type GoldenInvoke = (input: GoldenInvocation) => Promise<string | {
53
+ text: string;
54
+ outputTokens?: number | null;
55
+ }>;
56
+ export interface GoldenCaseResult {
57
+ caseId: string;
58
+ ok: boolean;
59
+ /** The expectations that failed, by name — never the output. */
60
+ failed: string[];
61
+ /** Set when the case could not be rendered or the model call threw; counted as a failure. */
62
+ error?: string;
63
+ }
64
+ export interface GoldenReport {
65
+ tag: string;
66
+ arm: string;
67
+ setId: string;
68
+ model: string;
69
+ cases: number;
70
+ passed: number;
71
+ failed: number;
72
+ /** floor(passed / cases × 10000). */
73
+ passBps: number;
74
+ minPassBps: number;
75
+ /** passBps ≥ minPassBps. */
76
+ meetsThreshold: boolean;
77
+ results: GoldenCaseResult[];
78
+ }
79
+ export declare function passBpsOf(passed: number, cases: number): number;
80
+ /**
81
+ * Run every case: render the slot's text with the case's variables (the same fencing as `prompt().render()`), ask the
82
+ * customer's model, evaluate the case's expectations on the answer. A case whose render or call throws counts as failed
83
+ * with the error's message (a class of failure, not the output). Cases run `concurrency` at a time in order.
84
+ */
85
+ export declare function runGoldenSet(input: {
86
+ slot: Pick<ManifestSlot, "tag" | "model" | "variables">;
87
+ arm: string;
88
+ text: string;
89
+ set: GoldenSet;
90
+ invoke: GoldenInvoke;
91
+ concurrency?: number;
92
+ delimiters?: Delimiters;
93
+ /** Called per case as it completes (progress on the CLI); never with the output. */
94
+ onCase?: (result: GoldenCaseResult) => void;
95
+ }): Promise<GoldenReport>;
96
+ /** The runtime's decision over every report of a staged release: all thresholds met. An empty list (no golden sets) meets. */
97
+ export declare function goldenReportsMeet(reports: readonly GoldenReport[]): boolean;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Golden sets (T34, 5-D): known inputs with the properties a right answer has,
3
+ * run against the pinned model on the customer's own key before a staged
4
+ * release activates (`protocol/golden-sets.md`).
5
+ *
6
+ * The set is a payload the manifest slot references (`goldenSet.contentHash`),
7
+ * encrypted at rest like the prompt it exercises. Each case is a set of
8
+ * variable values and a list of expectations in the output-check grammar
9
+ * (checks.md), so the same evaluator the runtime already runs inside
10
+ * `observe()` decides a case. The customer supplies the model call
11
+ * (`invoke`); nothing here talks to a provider. Only counts leave the host:
12
+ * `goldenPass` on the arm's window, one per case, and the apply decision.
13
+ */
14
+ import { evaluateChecks, estimateTokens } from "../checks/index.js";
15
+ import { renderTemplate } from "../render/template.js";
16
+ export const GOLDEN_SET_FORMAT = "airprompter-golden-set";
17
+ export const GOLDEN_SET_VERSION = 1;
18
+ export const GOLDEN_MAX_CASES = 50;
19
+ export const GOLDEN_MAX_EXPECTATIONS = 8;
20
+ /** Cases run this many at a time by default; the customer's rate limits are the real bound. */
21
+ export const GOLDEN_DEFAULT_CONCURRENCY = 4;
22
+ export class GoldenSetError extends Error {
23
+ reason;
24
+ constructor(reason, message) {
25
+ super(message);
26
+ this.reason = reason;
27
+ this.name = "GoldenSetError";
28
+ }
29
+ }
30
+ const CASE_ID = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/;
31
+ const VARIABLE_NAME = /^[a-zA-Z0-9_.-]{1,64}$/;
32
+ /** The payload's bytes as a set: shape only (the checks themselves are validated when evaluated). */
33
+ export function parseGoldenSet(bytes, reference) {
34
+ let raw;
35
+ try {
36
+ raw = JSON.parse(Buffer.from(bytes).toString("utf8"));
37
+ }
38
+ catch {
39
+ throw new GoldenSetError("not_json", "golden set payload is not JSON");
40
+ }
41
+ const doc = raw;
42
+ if (!doc || typeof doc !== "object" || doc.format !== GOLDEN_SET_FORMAT || doc.version !== GOLDEN_SET_VERSION || typeof doc.setId !== "string" || !Array.isArray(doc.cases)) {
43
+ throw new GoldenSetError("not_a_golden_set", "golden set payload has the wrong shape");
44
+ }
45
+ if (!Number.isInteger(doc.minPassBps) || doc.minPassBps < 0 || doc.minPassBps > 10000)
46
+ throw new GoldenSetError("not_a_golden_set", "minPassBps is not in 0…10000");
47
+ if (doc.cases.length < 1 || doc.cases.length > GOLDEN_MAX_CASES)
48
+ throw new GoldenSetError("not_a_golden_set", `a golden set carries 1…${GOLDEN_MAX_CASES} cases`);
49
+ const seen = new Set();
50
+ for (const entry of doc.cases) {
51
+ if (!entry || typeof entry.caseId !== "string" || !CASE_ID.test(entry.caseId) || seen.has(entry.caseId))
52
+ throw new GoldenSetError("case_invalid", "a case id is missing, malformed or repeated");
53
+ seen.add(entry.caseId);
54
+ if (!entry.variables || typeof entry.variables !== "object" || Array.isArray(entry.variables))
55
+ throw new GoldenSetError("case_invalid", `${entry.caseId}: variables is not an object`);
56
+ for (const [name, value] of Object.entries(entry.variables)) {
57
+ if (!VARIABLE_NAME.test(name) || typeof value !== "string")
58
+ throw new GoldenSetError("case_invalid", `${entry.caseId}: variable ${name} is not a named string`);
59
+ }
60
+ if (!Array.isArray(entry.expect) || entry.expect.length < 1 || entry.expect.length > GOLDEN_MAX_EXPECTATIONS)
61
+ throw new GoldenSetError("case_invalid", `${entry.caseId}: 1…${GOLDEN_MAX_EXPECTATIONS} expectations`);
62
+ const names = new Set();
63
+ for (const check of entry.expect) {
64
+ if (!check || typeof check.name !== "string" || typeof check.kind !== "string" || names.has(check.name))
65
+ throw new GoldenSetError("case_invalid", `${entry.caseId}: an expectation is missing its kind or name, or repeats a name`);
66
+ names.add(check.name);
67
+ }
68
+ }
69
+ if (reference && (reference.setId !== doc.setId || reference.cases !== doc.cases.length)) {
70
+ throw new GoldenSetError("reference_mismatch", `the manifest names ${reference.setId} with ${reference.cases} cases; the payload is ${doc.setId} with ${doc.cases.length}`);
71
+ }
72
+ return doc;
73
+ }
74
+ export function passBpsOf(passed, cases) {
75
+ return cases > 0 ? Math.floor((passed * 10000) / cases) : 0;
76
+ }
77
+ /**
78
+ * Run every case: render the slot's text with the case's variables (the same fencing as `prompt().render()`), ask the
79
+ * customer's model, evaluate the case's expectations on the answer. A case whose render or call throws counts as failed
80
+ * with the error's message (a class of failure, not the output). Cases run `concurrency` at a time in order.
81
+ */
82
+ export async function runGoldenSet(input) {
83
+ const results = new Array(input.set.cases.length);
84
+ const width = Math.max(1, Math.min(input.concurrency ?? GOLDEN_DEFAULT_CONCURRENCY, input.set.cases.length));
85
+ let next = 0;
86
+ const worker = async () => {
87
+ for (;;) {
88
+ const index = next;
89
+ next += 1;
90
+ if (index >= input.set.cases.length)
91
+ return;
92
+ const entry = input.set.cases[index];
93
+ let result;
94
+ try {
95
+ const text = renderTemplate({ tag: input.slot.tag, text: input.text, variables: input.slot.variables, values: entry.variables, ...(input.delimiters ? { delimiters: input.delimiters } : {}) });
96
+ const answer = await input.invoke({ tag: input.slot.tag, caseId: entry.caseId, text, model: input.slot.model, arm: input.arm, variables: entry.variables });
97
+ const output = typeof answer === "string" ? { text: answer, outputTokens: null } : { text: answer.text, outputTokens: answer.outputTokens ?? null };
98
+ const outcome = evaluateChecks(entry.expect, { text: output.text, outputTokens: output.outputTokens ?? estimateTokens(output.text) });
99
+ const failed = outcome.results.filter((r) => r.verdict === "fail").map((r) => r.name);
100
+ result = { caseId: entry.caseId, ok: failed.length === 0, failed };
101
+ }
102
+ catch (error) {
103
+ result = { caseId: entry.caseId, ok: false, failed: [], error: error.name ?? "error" };
104
+ }
105
+ results[index] = result;
106
+ input.onCase?.(result);
107
+ }
108
+ };
109
+ await Promise.all(Array.from({ length: width }, () => worker()));
110
+ const passed = results.filter((r) => r.ok).length;
111
+ const passBps = passBpsOf(passed, results.length);
112
+ return {
113
+ tag: input.slot.tag,
114
+ arm: input.arm,
115
+ setId: input.set.setId,
116
+ model: input.slot.model,
117
+ cases: results.length,
118
+ passed,
119
+ failed: results.length - passed,
120
+ passBps,
121
+ minPassBps: input.set.minPassBps,
122
+ meetsThreshold: passBps >= input.set.minPassBps,
123
+ results,
124
+ };
125
+ }
126
+ /** The runtime's decision over every report of a staged release: all thresholds met. An empty list (no golden sets) meets. */
127
+ export function goldenReportsMeet(reports) {
128
+ return reports.every((report) => report.meetsThreshold);
129
+ }
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/golden/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `@airprompter/agent-core` — the pure half of the SDK: the protocol
3
+ * (types, trust chain, canonical JSON, arm assignment and the ramp walk),
4
+ * rendering, output checks, golden sets, the judge, bundle reading, the
5
+ * telemetry row schemas, the control-plane HTTP client, the port
6
+ * interfaces and their Node adapters. No module here opens a file, a
7
+ * socket or a timer at import time, and nothing here depends on a sibling
8
+ * package: `agent-sync`, `agent-runtime` and `agent-telemetry` all build on
9
+ * this one and never on each other (S10; `scripts/lint-imports.mjs` pins
10
+ * the direction).
11
+ */
12
+ export { PROTOCOL_VERSION, SDK_VERSION } from "./protocol/version.js";
13
+ export type * from "./protocol/types.js";
14
+ export { DIRECTIVE_KINDS } from "./protocol/types.js";
15
+ export { errorNamed } from "./protocol/errors.js";
16
+ export type { FsPort, FsFailure, FsOpenFlags, ClockPort, FetchPort } from "./protocol/ports.js";
17
+ export { fsFailureCode } from "./protocol/ports.js";
18
+ export { nodeFs, systemClock } from "./ports/node.js";
19
+ export { canonicalJson, canonicalBytes, sha256Prefixed, CanonicalJsonError } from "./protocol/canonicalJson.js";
20
+ export { assignArm, subjectHash, bucketFromHash, armForBucket, validateArms, validateRamp, rampWeightsAt, effectiveArms, isAssignmentError, orderedSteps, AssignmentError, StepError, ASSIGNMENT_MODULUS, RAMP_MIN_STEP_MS, RAMP_MAX_STEPS } from "./protocol/assignment.js";
21
+ export { keyThumbprint, publicJwkOf, signBytes, verifyBytes, trustedRootFromPinnedKey, verifyRootMetadata, verifyManifest, referencedPayloads, releaseDigest, releaseDigestInput, instant } from "./protocol/trust.js";
22
+ export type { Verdict, VerifyManifestInput } from "./protocol/trust.js";
23
+ export { renderTemplate, xmlDelimiters, MissingVariableError, UnknownVariableError } from "./render/template.js";
24
+ export type { Delimiters, RenderInput } from "./render/template.js";
25
+ export { mintRunRef, parseRunRef } from "./render/runRef.js";
26
+ export type { RunRefFacts } from "./render/runRef.js";
27
+ export { CHECK_BOUNDS, checkRefusal, checksRefusals, patternRefusal, validateJsonSchema, valueAtPath, evaluateCheck, evaluateChecks, projectChecks, outputTextOf, estimateTokens, type DeclaredCheck, type CheckResult, type CheckOutcome } from "./checks/index.js";
28
+ export { parseGoldenSet, runGoldenSet, goldenReportsMeet, passBpsOf, GoldenSetError, GOLDEN_SET_FORMAT, GOLDEN_SET_VERSION, type GoldenSet, type GoldenCase, type GoldenInvoke, type GoldenInvocation, type GoldenReport, type GoldenCaseResult } from "./golden/index.js";
29
+ export { JUDGE_RUBRICS, PROTECTION_CRITERIA, judgePrompt, parseJudgeReply, rubricFromPrompt, judgeSignalsOf, type JudgeRubric, type JudgeResult } from "./judge/index.js";
30
+ export { createPlaintextBundle, createEncryptedBundle, openBundle, bundlePayloadBytes, distributionKeyId, BundleError, APBUNDLE_INFO } from "./bundle/apbundle.js";
31
+ export type { DistributionKey } from "./bundle/apbundle.js";
32
+ export { generateX25519KeyPair, x25519PrivateKeyFromRaw, x25519PublicKeyFromRaw } from "./bundle/hpke.js";
33
+ export { BundleRelease } from "./release/bundleRelease.js";
34
+ export type { ReleaseReader, ReleaseSlot, LoadedRelease } from "./release/reader.js";
35
+ export type { BundleReleaseInput, BundleReleaseRefusal } from "./release/bundleRelease.js";
36
+ export { SyncClient } from "./control/client.js";
37
+ export type { FetchLike, ManifestFetch, SyncClientOptions } from "./control/client.js";
38
+ export { LATENCY_BUCKET_EDGES_MS, latencyBucketIndex, minuteOf, epochMinute } from "./telemetry/rows.js";
39
+ export type { Observation, WindowRow, RefusalRow, DroppedRow, SpoolRow, ErrorClass } from "./telemetry/rows.js";
40
+ export type { UploadSink, UploadSegment, UploadOutcome } from "./telemetry/uploadSink.js";
41
+ export { normalizeFeedback, BOOLEAN_SIGNALS, UNIT_SIGNALS, COUNT_SIGNALS, RUNTIME_SIGNALS, CATALOGUE, OUTCOME_NAME, type NormalizedFeedback, type FeedbackRejection } from "./telemetry/feedback.js";
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `@airprompter/agent-core` — the pure half of the SDK: the protocol
3
+ * (types, trust chain, canonical JSON, arm assignment and the ramp walk),
4
+ * rendering, output checks, golden sets, the judge, bundle reading, the
5
+ * telemetry row schemas, the control-plane HTTP client, the port
6
+ * interfaces and their Node adapters. No module here opens a file, a
7
+ * socket or a timer at import time, and nothing here depends on a sibling
8
+ * package: `agent-sync`, `agent-runtime` and `agent-telemetry` all build on
9
+ * this one and never on each other (S10; `scripts/lint-imports.mjs` pins
10
+ * the direction).
11
+ */
12
+ export { PROTOCOL_VERSION, SDK_VERSION } from "./protocol/version.js";
13
+ export { DIRECTIVE_KINDS } from "./protocol/types.js";
14
+ export { errorNamed } from "./protocol/errors.js";
15
+ export { fsFailureCode } from "./protocol/ports.js";
16
+ export { nodeFs, systemClock } from "./ports/node.js";
17
+ export { canonicalJson, canonicalBytes, sha256Prefixed, CanonicalJsonError } from "./protocol/canonicalJson.js";
18
+ export { assignArm, subjectHash, bucketFromHash, armForBucket, validateArms, validateRamp, rampWeightsAt, effectiveArms, isAssignmentError, orderedSteps, AssignmentError, StepError, ASSIGNMENT_MODULUS, RAMP_MIN_STEP_MS, RAMP_MAX_STEPS } from "./protocol/assignment.js";
19
+ export { keyThumbprint, publicJwkOf, signBytes, verifyBytes, trustedRootFromPinnedKey, verifyRootMetadata, verifyManifest, referencedPayloads, releaseDigest, releaseDigestInput, instant } from "./protocol/trust.js";
20
+ export { renderTemplate, xmlDelimiters, MissingVariableError, UnknownVariableError } from "./render/template.js";
21
+ export { mintRunRef, parseRunRef } from "./render/runRef.js";
22
+ export { CHECK_BOUNDS, checkRefusal, checksRefusals, patternRefusal, validateJsonSchema, valueAtPath, evaluateCheck, evaluateChecks, projectChecks, outputTextOf, estimateTokens } from "./checks/index.js";
23
+ export { parseGoldenSet, runGoldenSet, goldenReportsMeet, passBpsOf, GoldenSetError, GOLDEN_SET_FORMAT, GOLDEN_SET_VERSION } from "./golden/index.js";
24
+ export { JUDGE_RUBRICS, PROTECTION_CRITERIA, judgePrompt, parseJudgeReply, rubricFromPrompt, judgeSignalsOf } from "./judge/index.js";
25
+ export { createPlaintextBundle, createEncryptedBundle, openBundle, bundlePayloadBytes, distributionKeyId, BundleError, APBUNDLE_INFO } from "./bundle/apbundle.js";
26
+ export { generateX25519KeyPair, x25519PrivateKeyFromRaw, x25519PublicKeyFromRaw } from "./bundle/hpke.js";
27
+ export { BundleRelease } from "./release/bundleRelease.js";
28
+ export { SyncClient } from "./control/client.js";
29
+ export { LATENCY_BUCKET_EDGES_MS, latencyBucketIndex, minuteOf, epochMinute } from "./telemetry/rows.js";
30
+ export { normalizeFeedback, BOOLEAN_SIGNALS, UNIT_SIGNALS, COUNT_SIGNALS, RUNTIME_SIGNALS, CATALOGUE, OUTCOME_NAME } from "./telemetry/feedback.js";
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7Q,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGvN,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAA2D,MAAM,mBAAmB,CAAC;AACrQ,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAuH,MAAM,mBAAmB,CAAC;AAC3Q,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAsC,MAAM,kBAAkB,CAAC;AAE1K,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnK,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGzG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAmD,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * `ap.judge(runRef, output, rubric, invoke)` (T34, 5-F / D63): a rubric run on
3
+ * the customer's own model, reporting only the score. The rubric is a list of
4
+ * criteria — the prompt's own `## Success criteria` section (the same reading
5
+ * the hosted judge makes), the protection lens, or the customer's — and the
6
+ * judge is asked for one verdict per criterion. The score is the share of
7
+ * resolved task criteria that passed, in [0, 1], and lands as `judgeScore` on
8
+ * the run's arm window through `ap.feedback()`. The output, the rubric text
9
+ * and the judge's reasoning never reach the spool.
10
+ */
11
+ export interface JudgeRubric {
12
+ /** A short name for the log line; never sent anywhere. */
13
+ name: string;
14
+ /** The task criteria, in order — the score is the share of these that passed. */
15
+ criteria: string[];
16
+ /** Criteria judged after the task ones whose failure sets `flagged` rather than lowering the score. */
17
+ protection?: string[];
18
+ }
19
+ export declare const JUDGE_MAX_CRITERIA = 7;
20
+ export declare const JUDGE_MAX_CRITERION_CHARS = 300;
21
+ /**
22
+ * The protection lens the hosted judge applies to every sample — the same five
23
+ * criteria, so a customer-side score and a hosted one read alike.
24
+ */
25
+ export declare const PROTECTION_CRITERIA: readonly string[];
26
+ /** Rubric templates from the assurance lenses. */
27
+ export declare const JUDGE_RUBRICS: Readonly<Record<"protection" | "helpfulness", JudgeRubric>>;
28
+ /**
29
+ * The prompt's own rubric: the lines under its trailing `## Success criteria` heading (list markers stripped, at most
30
+ * seven, each at most 300 characters) — exactly what the hosted judge reads off a sampled run. Empty when the prompt
31
+ * has no such section.
32
+ */
33
+ export declare function rubricFromPrompt(text: string): string[];
34
+ /** The judge prompt: the criteria numbered, the output fenced, one JSON line back. */
35
+ export declare function judgePrompt(rubric: JudgeRubric, output: string): string;
36
+ export type JudgeVerdict = "pass" | "fail" | "unclear";
37
+ export interface JudgeResult {
38
+ /** Share of resolved task criteria that passed; null when none resolved (every task verdict was unclear or missing). */
39
+ score: number | null;
40
+ taskPass: number;
41
+ taskFail: number;
42
+ taskUnclear: number;
43
+ /** Protection criteria that failed. */
44
+ protectionFail: number;
45
+ /** True when a protection criterion failed. */
46
+ flagged: boolean;
47
+ }
48
+ /** The judge's reply folded into numbers; anything unparseable is `unclear`, never a pass. */
49
+ export declare function parseJudgeReply(reply: string, rubric: JudgeRubric): JudgeResult;
50
+ /** The feedback signals one judgement files: the score when the task rubric resolved, `flagged` always (a rate needs its zeros). */
51
+ export declare function judgeSignalsOf(result: JudgeResult): Record<string, number | boolean>;