@cotal-ai/core 0.16.0 → 0.18.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 (145) hide show
  1. package/dist/acls.d.ts +21 -0
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +44 -1
  4. package/dist/acls.js.map +1 -1
  5. package/dist/artifact.d.ts +45 -0
  6. package/dist/artifact.d.ts.map +1 -0
  7. package/dist/artifact.js +82 -0
  8. package/dist/artifact.js.map +1 -0
  9. package/dist/backup-config.d.ts +9 -2
  10. package/dist/backup-config.d.ts.map +1 -1
  11. package/dist/backup-config.js +6 -2
  12. package/dist/backup-config.js.map +1 -1
  13. package/dist/broker-tls.d.ts +70 -0
  14. package/dist/broker-tls.d.ts.map +1 -0
  15. package/dist/broker-tls.js +195 -0
  16. package/dist/broker-tls.js.map +1 -0
  17. package/dist/canonical.d.ts +14 -1
  18. package/dist/canonical.d.ts.map +1 -1
  19. package/dist/canonical.js +21 -1
  20. package/dist/canonical.js.map +1 -1
  21. package/dist/channels.js +4 -4
  22. package/dist/channels.js.map +1 -1
  23. package/dist/endpoint-action.d.ts +108 -3
  24. package/dist/endpoint-action.d.ts.map +1 -1
  25. package/dist/endpoint-action.js +209 -20
  26. package/dist/endpoint-action.js.map +1 -1
  27. package/dist/endpoint-binding.d.ts +138 -8
  28. package/dist/endpoint-binding.d.ts.map +1 -1
  29. package/dist/endpoint-binding.js +233 -26
  30. package/dist/endpoint-binding.js.map +1 -1
  31. package/dist/endpoint-contract-store.d.ts +30 -1
  32. package/dist/endpoint-contract-store.d.ts.map +1 -1
  33. package/dist/endpoint-contract-store.js +100 -29
  34. package/dist/endpoint-contract-store.js.map +1 -1
  35. package/dist/endpoint-envelope.d.ts +15 -37
  36. package/dist/endpoint-envelope.d.ts.map +1 -1
  37. package/dist/endpoint-envelope.js +93 -44
  38. package/dist/endpoint-envelope.js.map +1 -1
  39. package/dist/endpoint-error.d.ts +33 -0
  40. package/dist/endpoint-error.d.ts.map +1 -0
  41. package/dist/endpoint-error.js +34 -0
  42. package/dist/endpoint-error.js.map +1 -0
  43. package/dist/endpoint-grants.d.ts +63 -7
  44. package/dist/endpoint-grants.d.ts.map +1 -1
  45. package/dist/endpoint-grants.js +118 -9
  46. package/dist/endpoint-grants.js.map +1 -1
  47. package/dist/endpoint-invoke.d.ts +138 -0
  48. package/dist/endpoint-invoke.d.ts.map +1 -0
  49. package/dist/endpoint-invoke.js +393 -0
  50. package/dist/endpoint-invoke.js.map +1 -0
  51. package/dist/endpoint-records.d.ts.map +1 -1
  52. package/dist/endpoint-records.js +17 -0
  53. package/dist/endpoint-records.js.map +1 -1
  54. package/dist/endpoint-serve-kv.d.ts +97 -0
  55. package/dist/endpoint-serve-kv.d.ts.map +1 -0
  56. package/dist/endpoint-serve-kv.js +336 -0
  57. package/dist/endpoint-serve-kv.js.map +1 -0
  58. package/dist/endpoint-serve.d.ts.map +1 -1
  59. package/dist/endpoint-serve.js +21 -1
  60. package/dist/endpoint-serve.js.map +1 -1
  61. package/dist/endpoint-service.d.ts +1 -1
  62. package/dist/endpoint-service.d.ts.map +1 -1
  63. package/dist/endpoint-service.js +34 -10
  64. package/dist/endpoint-service.js.map +1 -1
  65. package/dist/endpoint-session-rail.d.ts +127 -0
  66. package/dist/endpoint-session-rail.d.ts.map +1 -0
  67. package/dist/endpoint-session-rail.js +325 -0
  68. package/dist/endpoint-session-rail.js.map +1 -0
  69. package/dist/endpoint-session.d.ts +1 -115
  70. package/dist/endpoint-session.d.ts.map +1 -1
  71. package/dist/endpoint-session.js +4 -316
  72. package/dist/endpoint-session.js.map +1 -1
  73. package/dist/endpoint-subjects.d.ts +20 -1
  74. package/dist/endpoint-subjects.d.ts.map +1 -1
  75. package/dist/endpoint-subjects.js +20 -1
  76. package/dist/endpoint-subjects.js.map +1 -1
  77. package/dist/endpoint-verbs.d.ts +1 -2
  78. package/dist/endpoint-verbs.d.ts.map +1 -1
  79. package/dist/endpoint-verbs.js +6 -6
  80. package/dist/endpoint-verbs.js.map +1 -1
  81. package/dist/endpoint.d.ts +157 -11
  82. package/dist/endpoint.d.ts.map +1 -1
  83. package/dist/endpoint.js +471 -47
  84. package/dist/endpoint.js.map +1 -1
  85. package/dist/evict.d.ts +47 -0
  86. package/dist/evict.d.ts.map +1 -1
  87. package/dist/evict.js +191 -59
  88. package/dist/evict.js.map +1 -1
  89. package/dist/identity.d.ts +34 -0
  90. package/dist/identity.d.ts.map +1 -1
  91. package/dist/identity.js +46 -0
  92. package/dist/identity.js.map +1 -1
  93. package/dist/index.d.ts +8 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +8 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/kv-scan.d.ts +8 -0
  98. package/dist/kv-scan.d.ts.map +1 -1
  99. package/dist/kv-scan.js +8 -0
  100. package/dist/kv-scan.js.map +1 -1
  101. package/dist/lease.d.ts +12 -5
  102. package/dist/lease.d.ts.map +1 -1
  103. package/dist/lease.js.map +1 -1
  104. package/dist/lifecycle-saga.d.ts +174 -0
  105. package/dist/lifecycle-saga.d.ts.map +1 -0
  106. package/dist/lifecycle-saga.js +418 -0
  107. package/dist/lifecycle-saga.js.map +1 -0
  108. package/dist/lifecycle-state.d.ts +202 -0
  109. package/dist/lifecycle-state.d.ts.map +1 -0
  110. package/dist/lifecycle-state.js +347 -0
  111. package/dist/lifecycle-state.js.map +1 -0
  112. package/dist/parts.d.ts +13 -0
  113. package/dist/parts.d.ts.map +1 -0
  114. package/dist/parts.js +17 -0
  115. package/dist/parts.js.map +1 -0
  116. package/dist/provision.d.ts +124 -15
  117. package/dist/provision.d.ts.map +1 -1
  118. package/dist/provision.js +578 -121
  119. package/dist/provision.js.map +1 -1
  120. package/dist/schema-profile.d.ts +3 -2
  121. package/dist/schema-profile.d.ts.map +1 -1
  122. package/dist/schema-profile.js +242 -18
  123. package/dist/schema-profile.js.map +1 -1
  124. package/dist/session-browser.d.ts +15 -0
  125. package/dist/session-browser.d.ts.map +1 -0
  126. package/dist/session-browser.js +14 -0
  127. package/dist/session-browser.js.map +1 -0
  128. package/dist/session-terminal-frames.d.ts +36 -0
  129. package/dist/session-terminal-frames.d.ts.map +1 -0
  130. package/dist/session-terminal-frames.js +149 -0
  131. package/dist/session-terminal-frames.js.map +1 -0
  132. package/dist/spaces.d.ts.map +1 -1
  133. package/dist/spaces.js +6 -1
  134. package/dist/spaces.js.map +1 -1
  135. package/dist/streams.d.ts +168 -1
  136. package/dist/streams.d.ts.map +1 -1
  137. package/dist/streams.js +299 -21
  138. package/dist/streams.js.map +1 -1
  139. package/dist/subjects.d.ts +34 -36
  140. package/dist/subjects.d.ts.map +1 -1
  141. package/dist/subjects.js +46 -35
  142. package/dist/subjects.js.map +1 -1
  143. package/dist/types.d.ts +27 -1
  144. package/dist/types.d.ts.map +1 -1
  145. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-grants.js","sourceRoot":"","sources":["../src/endpoint-grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,aAAa,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAE3E,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,GAChE,MAAM,wBAAwB,CAAC;AAoBhC;;;;;;mFAMmF;AACnF,SAAS,iBAAiB,CAAC,MAAgB,EAAE,MAAgB;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACpL,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QACnD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK;QAChC,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,kFAAkF,MAAM,CAAC,MAAM,uBAAuB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3K,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,MAAgB;IACnC,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,CAAC,EAAE,CAAC;AAC9K,CAAC;AAED;;2FAE2F;AAC3F,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,GAAiB,EAAE,MAAgB;IACnF,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,GAAG,CAAC,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;IACtH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;+FAC+F;AAC/F,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,GAAiB,EAAE,MAAgB;IAClF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AACpI,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAgB;IACnE,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;wFAEwF;AACxF,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAgB;IACtF,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,aAAa,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AAClG,CAAC;AAED;;;;;;4EAM4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,IAAoB,EACpB,MAAgB;IAEhB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ;YAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,sEAAsE,CAAC,CAAC;QACvJ,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjF,CAAC;AAED,sGAAsG;AACtG,mGAAmG;AACnG,kGAAkG;AAClG,+FAA+F;AAC/F,mGAAmG;AACnG,kGAAkG;AAClG,8FAA8F;AAC9F,mGAAmG;AACnG,mGAAmG;AACnG,iGAAiG;AACjG,4CAA4C;AAE5C;;;;oFAIoF;AACpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC,CAAC;AAC5F;4EAC4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC;AACrD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAU,CAAC,CAAC;AACjF;;;;;;;;iGAQiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAU,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC,CAAC;AAE5F,gGAAgG;AAChG,2FAA2F;AAC3F,yEAAyE;AACzE,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC;AAC9E,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC;AACjF,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;AACpE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,8BAA8B,CAAC,CAAC,CAAC;AAE5E;;;;;;;iEAOiE;AACjE,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAgB;IACnE,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,sBAAsB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED;iFACiF;AACjF,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/F,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAW,EAAE,CAAC,CAAC;KACjI,CAAC;AACJ,CAAC;AAED;;;;wEAIwE;AACxE,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO;QACL,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3F,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpC,QAAQ,EAAE,2BAA2B,EAAE,OAAO;YAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAc;SAC3D,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;oFAEoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAgB;IACjE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,0BAA0B,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AACnH,CAAC;AAED;;;;;;;gGAOgG;AAChG,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,OAAe;IACvG,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QAC3E,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;QAC5C,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,GAAG,IAAI;KAChG,CAAC;AACJ,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,KAAa;IACnG,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,6BAA6B,CAAC,CAAC;IAC5G,OAAO;QACL,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;QAC3D,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI;QAClD,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,aAAa;QAC3D,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI;KACnD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;yEAUyE;AACzE,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,KAA2F;IAE3F,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,yHAAyH,CAAC,CAAC;IAC7I,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,iBAAiB,EAAE,UAAU,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5I,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,uCAAuC;IAC7H,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;IACrJ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"endpoint-grants.js","sourceRoot":"","sources":["../src/endpoint-grants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import type { NatsConnection } from "@nats-io/transport-node";
2
+ import { type CompiledContract } from "./schema-profile.js";
3
+ import { type EpCaller } from "./endpoint-subjects.js";
4
+ import type { EpVerbTarget, EpAttributedReply, EpScatterResult } from "./endpoint-verbs.js";
5
+ /** A resolved command contract: the compiled input/output validators (recompiled from the store,
6
+ * digest-verified against the registered declaration) plus the command's §13.2 admission facts. */
7
+ export interface ResolvedCommand {
8
+ command: string;
9
+ contract: {
10
+ input: CompiledContract;
11
+ output: CompiledContract;
12
+ };
13
+ class: string;
14
+ targeted: boolean;
15
+ modes: readonly string[];
16
+ capability: string;
17
+ }
18
+ /** An endpoint's resolved invocation surface: every command the caller may see, with recompiled
19
+ * digest-verified contracts. Built from a fresh `describe` + store fetch. Carries the `caller`
20
+ * triple the describe ran as, so {@link invokeCommand} reuses the same authenticated identity,
21
+ * and the ANSWERING incarnation's identity off the describe reply SUBJECT (broker-authenticated:
22
+ * the §13.9 serve publish row pins `instanceId`+`epoch`, a responder cannot stamp another's) -
23
+ * {@link invokeCommand}'s default currency check binds the invoke to this incarnation. */
24
+ export interface ResolvedService {
25
+ endpoint: string;
26
+ owner: string;
27
+ caller: EpCaller;
28
+ responder: {
29
+ instanceId: string;
30
+ epoch: number;
31
+ };
32
+ commands: Map<string, ResolvedCommand>;
33
+ /** Set when the service was resolved PINNED to one instance's `inst` route (P2 item 3 `--on`):
34
+ * {@link invokeCommand} then routes commands to that exact instance, never the class `one` queue,
35
+ * so a multi-manager space can be addressed per-instance. Absent ⇒ class anycast (the default). */
36
+ pinnedInstanceId?: string;
37
+ }
38
+ /**
39
+ * The reserved `describe` command as a raw request/reply (§13.7: describe pins NO contract, so it
40
+ * carries no `op` digests — {@link epCall} always stamps digests and the serve boundary rejects a
41
+ * digest-bearing describe as `contract-mismatch`, so this is a purpose-built raw path). It
42
+ * REQUEST-BINDS its reply exactly as {@link epCall}'s `parseAttributedReply` does (§13.2): the
43
+ * responder grant `epResponderReplyPattern` spans EVERY caller suffix, so any live responder can
44
+ * publish on the caller's rail at any nonce — acceptance therefore checks the reply SUBJECT's
45
+ * endpoint + nonce AND the body's echoed request id, not just "first `{ok:true}` on the rail".
46
+ * A reply that fails any of these is IGNORED (not rejected: an attacker racing a wrong-nonce reply
47
+ * must not be able to fail an honest describe), and the wait continues to the deadline.
48
+ */
49
+ export declare function describeEndpoint(nc: NatsConnection, space: string, endpoint: string, caller: EpCaller, opts?: {
50
+ deadlineMs?: number;
51
+ instanceId?: string;
52
+ }): Promise<{
53
+ answer: DescribeAnswer;
54
+ responder: {
55
+ instanceId: string;
56
+ epoch: number;
57
+ };
58
+ }>;
59
+ /** The describe answer shape a caller reads (a subset — the fields the resolver needs). */
60
+ interface DescribeAnswer {
61
+ public: boolean;
62
+ descriptor: {
63
+ endpoint: string;
64
+ owner: string;
65
+ clusters: {
66
+ digest: string;
67
+ commands: string[];
68
+ }[];
69
+ };
70
+ }
71
+ /**
72
+ * DESCRIBE an endpoint and resolve its full invocation surface: send the reserved `describe`
73
+ * command (untargeted, void args), then for every VISIBLE cluster fetch + verify its document
74
+ * from the store and recompile each command's input/output contracts. The result lets a caller
75
+ * invoke any visible command by name with no compile-time knowledge of the endpoint's schemas.
76
+ *
77
+ * `describe` itself pins no contract (§13.7), so it is issued as a raw void-arg request
78
+ * ({@link describeEndpoint}), never through the digest-stamping {@link epCall}.
79
+ */
80
+ export declare function resolveService(nc: NatsConnection, space: string, endpoint: string, caller: EpCaller, opts?: {
81
+ deadlineMs?: number;
82
+ instanceId?: string;
83
+ }): Promise<ResolvedService>;
84
+ /**
85
+ * INVOKE one named command on a resolved service: validate nothing here (the compiled input
86
+ * contract in {@link epCall}'s request builder gates args before publish, and the responder's
87
+ * digest-bound boundary re-validates), route on the `one` rail, return the attributed reply. A
88
+ * command absent from the resolved surface is `not-found` (the caller cannot see it, or it does
89
+ * not exist); a targeted command needs its `target`.
90
+ *
91
+ * Currency: `opts.currentEpoch` (e.g. the registry-read `serviceEpochReader`) when supplied;
92
+ * otherwise the DESCRIBE-BOUND default - accept exactly the incarnation that answered this
93
+ * service's resolve (its broker-authenticated `instanceId`+`epoch` off the describe reply
94
+ * subject) and refuse `failed-precondition` when a DIFFERENT instance wins the `one` queue
95
+ * (a superseded-or-split responder; re-resolve to adopt a legitimate successor). The bind needs
96
+ * no registry read grant, and it is strictly stronger than no check: two live instances of a
97
+ * single-instance endpoint can never both pass one resolved handle.
98
+ */
99
+ export declare function invokeCommand(nc: NatsConnection, space: string, service: ResolvedService, command: string, args: Record<string, unknown> | undefined, opts: {
100
+ target?: EpVerbTarget;
101
+ deadlineMs?: number;
102
+ currentEpoch?: (instanceId: string) => Promise<number> | number;
103
+ }): Promise<EpAttributedReply>;
104
+ /** Submit an ACTION command and FOLLOW its goal to the terminal (P2 item 2, 2b): since 2a a
105
+ * spawn/launch reply is the ACCEPTANCE (returned before the agent is live), so a consumer that
106
+ * wants the old block-until-outcome behaviour follows the caller-scoped progress subtree to the
107
+ * terminal here. The subscription opens BEFORE `submit` runs (a fast join could terminalize within
108
+ * milliseconds of the acceptance), buffering terminals by goalId. The reply is then RESOLVED from
109
+ * the terminal: `succeeded` → the terminal's data (today's live reply — name/id/role/agent/mode/
110
+ * lifecycleUid), `failed`/`uncertain`/`cancelled` → a non-ok reply carrying the cause. A reply with
111
+ * NO goalId (a refuse-at-accept, or a non-action command) passes through unchanged. UX is preserved:
112
+ * the call still returns on the real outcome. The caller needs the per-goal progress read row
113
+ * ({@link epGoalProgressGrantRow}) — minted with any goal-bearing capability. */
114
+ export declare function submitAndFollowGoal(nc: NatsConnection, space: string, endpoint: string, caller: EpCaller, deadlineMs: number, submit: () => Promise<EpAttributedReply>): Promise<EpAttributedReply>;
115
+ /**
116
+ * SCATTER one untargeted command to the LIVE class (§13.5): resolve the command's contract off the
117
+ * same digest-verified surface {@link invokeCommand} uses, then run the registry-wired scatter —
118
+ * freeze the expected set from the records registry, publish ONCE on the `all` rail, gather one
119
+ * attributed reply per instance, and reconcile registration currency post-classification. The
120
+ * returned `replies` map is keyed by instanceId (per-instance attribution, SPEC §13.5); a frozen
121
+ * instance that produced no on-time reply is a `missing` slot — reported UNREACHABLE, never silently
122
+ * omitted. The caller's connection carries the §13.9 records-read grant the freeze/reconcile ride (a
123
+ * scoped read of the endpoint's `svc` registry); `jsm`/`kv` are opened over it here.
124
+ *
125
+ * A scatter addresses EVERY instance, so a targeted command is refused (a per-instance target is
126
+ * incoherent with the `all` rail) and a handle PINNED to one instance is refused (a pin is the
127
+ * anti-scatter — use {@link invokeCommand} for `--on`). "No args" marshals to the contract's
128
+ * canonical empty form exactly as {@link invokeCommand}.
129
+ */
130
+ export declare function scatterCommand(nc: NatsConnection, space: string, service: ResolvedService, command: string, args: Record<string, unknown> | undefined, opts: {
131
+ deadlineMs: number;
132
+ reconcileDeadlineMs?: number;
133
+ lateDrainMs?: number;
134
+ }): Promise<EpScatterResult>;
135
+ /** A digest reference's bare hex, exported so a CLI can print the resolved surface's digests. */
136
+ export declare function contractDigestHexOf(value: unknown): string;
137
+ export {};
138
+ //# sourceMappingURL=endpoint-invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-invoke.d.ts","sourceRoot":"","sources":["../src/endpoint-invoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,393 @@
1
+ /**
2
+ * The GENERIC caller path (control-surface P2 item 1, item 5): describe an endpoint, fetch its
3
+ * registered contracts from the §13.7 content store, recompile the digest-matching validators,
4
+ * and invoke a named command — WITHOUT the caller compiling the endpoint's schemas ahead of time.
5
+ * This is what a `cotal describe`/`cotal invoke` CLI and every migrated control consumer ride, so
6
+ * a consumer no longer hand-imports the manager's contract module.
7
+ *
8
+ * The trust chain is the §13.7 one, end to end:
9
+ * - `describe` (the reserved, authorization-scoped command every endpoint serves) answers the
10
+ * caller's VISIBLE command set + the registered CLUSTER closure digests;
11
+ * - each cluster document is fetched from the store at its closure digest and VERIFIED
12
+ * (two-stage manifest→root, content-addressed) — the command's input/output CLOSURE digests
13
+ * come from those verified bytes, never a caller assertion;
14
+ * - each schema closure is fetched + PROFILE-recompiled; the recompiled contract's closureDigest
15
+ * MUST equal the registered digest (a store that served the wrong bytes fails here);
16
+ * - the invoke pins those digests, so the responder's digest-bound serve boundary honors exactly
17
+ * the schema the caller validated against.
18
+ */
19
+ import { randomBytes } from "node:crypto";
20
+ import { jetstreamManager } from "@nats-io/jetstream";
21
+ import { EpEnvelopeError } from "./endpoint-envelope.js";
22
+ import { compileContract } from "./schema-profile.js";
23
+ import { contractStoreContext, fetchContractClosure, contractRefToHex, contractArtifactDigestHex, } from "./endpoint-contract-store.js";
24
+ import { parseClusterDocument } from "./endpoint-cluster.js";
25
+ import { epCall, epScatterService } from "./endpoint-verbs.js";
26
+ import { epGoalProgressGrantRow } from "./endpoint-grants.js";
27
+ import { epRequestSubject, epCallerReplyFilter, parseEpSubject } from "./endpoint-subjects.js";
28
+ import { parseEndpointReply } from "./endpoint-envelope.js";
29
+ const dec = new TextDecoder(), enc = new TextEncoder();
30
+ const nonce = () => randomBytes(24).toString("base64url");
31
+ /**
32
+ * The reserved `describe` command as a raw request/reply (§13.7: describe pins NO contract, so it
33
+ * carries no `op` digests — {@link epCall} always stamps digests and the serve boundary rejects a
34
+ * digest-bearing describe as `contract-mismatch`, so this is a purpose-built raw path). It
35
+ * REQUEST-BINDS its reply exactly as {@link epCall}'s `parseAttributedReply` does (§13.2): the
36
+ * responder grant `epResponderReplyPattern` spans EVERY caller suffix, so any live responder can
37
+ * publish on the caller's rail at any nonce — acceptance therefore checks the reply SUBJECT's
38
+ * endpoint + nonce AND the body's echoed request id, not just "first `{ok:true}` on the rail".
39
+ * A reply that fails any of these is IGNORED (not rejected: an attacker racing a wrong-nonce reply
40
+ * must not be able to fail an honest describe), and the wait continues to the deadline.
41
+ */
42
+ export async function describeEndpoint(nc, space, endpoint, caller, opts = {}) {
43
+ const deadlineMs = opts.deadlineMs ?? 10_000;
44
+ const n = nonce();
45
+ const requestId = nonce();
46
+ // P2 item 3 `--on <instance>`: PIN the describe to one instance's `inst` route so a multi-manager
47
+ // space resolves the exact instance addressed, not whichever wins the class `one` queue. Default =
48
+ // class anycast (mode "one"), unchanged for every existing caller.
49
+ const route = opts.instanceId !== undefined ? { mode: "inst", instanceId: opts.instanceId } : { mode: "one" };
50
+ const subject = epRequestSubject(space, { route, endpoint, command: "describe", caller, nonce: n });
51
+ const env = {
52
+ v: 1, id: requestId, op: { endpoint, command: "describe" }, class: "ephemeral",
53
+ replyExpected: true, deadlineMs, from: { id: `${caller.owner}.${caller.actor}`, name: caller.actor },
54
+ };
55
+ let sub;
56
+ let timer;
57
+ try {
58
+ const got = new Promise((resolve, reject) => {
59
+ sub = nc.subscribe(epCallerReplyFilter(space, caller), {
60
+ callback: (err, msg) => {
61
+ if (err) {
62
+ reject(new EpEnvelopeError("unavailable", `describe reply subscription failed: ${err.message}`));
63
+ return;
64
+ }
65
+ // REQUEST-BIND off the reply SUBJECT first (§13.2): the responder triple + nonce are
66
+ // broker-pinned by the serve publish grant. A reply for a DIFFERENT endpoint, or on a
67
+ // nonce that is not the one we published (the rail is shared across our concurrent
68
+ // requests, and a hostile responder can publish at any nonce), is NOT ours — ignore it
69
+ // and keep waiting, never fail the honest describe on an injected reply.
70
+ const parsed = parseEpSubject(msg.subject);
71
+ if (!parsed || parsed.plane !== "reply" || parsed.endpoint !== endpoint || parsed.nonce !== n)
72
+ return;
73
+ // Then the body: it must parse as an EndpointReply and ECHO our request id on this
74
+ // nonce-scoped rail (§13.3) — the second half of the confused-deputy binding.
75
+ let reply;
76
+ try {
77
+ reply = parseEndpointReply(JSON.parse(dec.decode(msg.data)));
78
+ }
79
+ catch {
80
+ return;
81
+ } // a malformed body on our nonce is not a usable answer; wait for a valid one
82
+ if (reply.id !== requestId)
83
+ return;
84
+ resolve({ body: reply, responder: { instanceId: parsed.instanceId, epoch: parsed.epoch } });
85
+ },
86
+ });
87
+ nc.publish(subject, enc.encode(JSON.stringify(env)));
88
+ });
89
+ const timeout = new Promise((_, reject) => { timer = setTimeout(() => reject(new EpEnvelopeError("deadline-exceeded", `no describe reply from ${endpoint} within ${deadlineMs}ms`)), deadlineMs); });
90
+ const { body: reply, responder } = await Promise.race([got, timeout]);
91
+ if (reply.ok !== true) {
92
+ const e = reply.error;
93
+ throw new EpEnvelopeError(e?.code ?? "unavailable", `describe(${endpoint}) failed: ${e?.message ?? "unknown"}`);
94
+ }
95
+ return { answer: reply.data, responder };
96
+ }
97
+ finally {
98
+ sub?.unsubscribe();
99
+ if (timer !== undefined)
100
+ clearTimeout(timer);
101
+ }
102
+ }
103
+ /** Fetch + verify ONE cluster document from the store at its closure digest (two-stage §13.7:
104
+ * the manifest at the closure digest, whose `root` names the document artifact). A cluster
105
+ * document declares no by-digest child references, so its closure is {root}. */
106
+ async function fetchClusterDocument(store, closureDigest, artifactMemo) {
107
+ const { manifest, artifacts } = await fetchContractClosure(store, closureDigest, () => [], { ...(artifactMemo ? { artifactMemo } : {}) });
108
+ const rootBytes = artifacts.get(contractRefToHex(manifest.root));
109
+ if (rootBytes === undefined)
110
+ throw new EpEnvelopeError("failed-precondition", `the cluster manifest ${closureDigest} names root ${manifest.root} but the root artifact is absent from the fetched closure (SPEC 13.7)`);
111
+ return parseClusterDocument(JSON.parse(dec.decode(rootBytes)));
112
+ }
113
+ /** Fetch a schema CLOSURE from the store and PROFILE-recompile it, binding every by-digest member.
114
+ * The recompiled contract's closureDigest MUST equal the digest we fetched at — a store that
115
+ * served bytes hashing to a different closure is a tamper/bug and fails loud (§13.7). */
116
+ async function recompileClosure(store, closureDigest, artifactMemo) {
117
+ // Walk the schema closure, resolving `cotal:sha256:<hex>` refs a document makes (the profile's
118
+ // reference form) so a multi-document schema bundle rebuilds. A recompiled contract carries the
119
+ // registered digest, so an equality check below is the tamper boundary.
120
+ const { manifest, artifacts } = await fetchContractClosure(store, closureDigest, (bytes) => extractSchemaRefs(bytes), { ...(artifactMemo ? { artifactMemo } : {}) });
121
+ const members = {};
122
+ for (const [hex, bytes] of artifacts)
123
+ members[`sha256:${hex}`] = JSON.parse(dec.decode(bytes));
124
+ const rootRef = manifest.root;
125
+ const root = members[rootRef];
126
+ if (root === undefined)
127
+ throw new EpEnvelopeError("failed-precondition", `schema closure ${closureDigest} is missing its root ${rootRef} (SPEC 13.7)`);
128
+ // The bundle members are the NON-root artifacts, keyed by their `sha256:` ref (the profile's
129
+ // resolution form); the root is passed separately.
130
+ const bundleMembers = {};
131
+ for (const [ref, value] of Object.entries(members))
132
+ if (ref !== rootRef)
133
+ bundleMembers[ref] = value;
134
+ const compiled = compileContract({ root, members: bundleMembers });
135
+ if (compiled.closureDigest !== closureDigest)
136
+ throw new EpEnvelopeError("internal", `the recompiled schema closure hashes to ${compiled.closureDigest}, not the fetched ${closureDigest}; a store that served the wrong bytes never authorizes (SPEC 13.7)`);
137
+ return compiled;
138
+ }
139
+ /** The by-digest references a stored schema artifact makes: every string value anywhere in the
140
+ * document of the profile's `cotal:sha256:<hex>` `$ref` form, returned as bare `sha256:<hex>`
141
+ * refs for the closure walk. A schema with no refs (the common case) returns none. */
142
+ function extractSchemaRefs(bytes) {
143
+ const refs = [];
144
+ const walk = (v) => {
145
+ if (typeof v === "string") {
146
+ const m = /^cotal:(sha256:[0-9a-f]{64})$/.exec(v);
147
+ if (m)
148
+ refs.push(m[1]);
149
+ }
150
+ else if (Array.isArray(v)) {
151
+ for (const c of v)
152
+ walk(c);
153
+ }
154
+ else if (v !== null && typeof v === "object") {
155
+ for (const c of Object.values(v))
156
+ walk(c);
157
+ }
158
+ };
159
+ walk(JSON.parse(dec.decode(bytes)));
160
+ return refs;
161
+ }
162
+ /** The most store reads one {@link resolveService} keeps in flight at once. The fan-out width is
163
+ * the RESPONDER's command count (it comes off the describe answer), so leaving it unbounded would
164
+ * let a describing endpoint decide how many concurrent requests its caller opens — a caller-side
165
+ * amplification the rest of §13.7 is careful to bound. Every other limit on this path is explicit;
166
+ * so is this one. High enough that real surfaces overlap freely, low enough to stay a bound. */
167
+ const RESOLVE_MAX_INFLIGHT_READS = 32;
168
+ /** Run `work` over `items` with at most `limit` in flight, preserving RESULT ORDER (the resolved
169
+ * surface must not depend on read timing). Rejects like `Promise.all`: the first failure wins. */
170
+ async function pooled(items, limit, work) {
171
+ const out = new Array(items.length);
172
+ let next = 0;
173
+ const worker = async () => {
174
+ for (;;) {
175
+ const i = next++;
176
+ if (i >= items.length)
177
+ return;
178
+ out[i] = await work(items[i]);
179
+ }
180
+ };
181
+ await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
182
+ return out;
183
+ }
184
+ /**
185
+ * DESCRIBE an endpoint and resolve its full invocation surface: send the reserved `describe`
186
+ * command (untargeted, void args), then for every VISIBLE cluster fetch + verify its document
187
+ * from the store and recompile each command's input/output contracts. The result lets a caller
188
+ * invoke any visible command by name with no compile-time knowledge of the endpoint's schemas.
189
+ *
190
+ * `describe` itself pins no contract (§13.7), so it is issued as a raw void-arg request
191
+ * ({@link describeEndpoint}), never through the digest-stamping {@link epCall}.
192
+ */
193
+ export async function resolveService(nc, space, endpoint, caller, opts = {}) {
194
+ const { answer, responder } = await describeEndpoint(nc, space, endpoint, caller, opts);
195
+ const store = await contractStoreContext(nc, space);
196
+ const visible = new Set(answer.descriptor.clusters.flatMap((cl) => cl.commands));
197
+ // The store reads dominate a resolve's wall time and are all caller->broker round-trips, so they
198
+ // are issued CONCURRENTLY and deduped through one memo rather than queued one behind another (a
199
+ // 17-command surface measured 70 strictly sequential reads, 22 of them re-reads; at a WAN RTT
200
+ // that is the whole latency). Each closure walk is still internally sequential and its §13.7
201
+ // bounds are still counted per walk — the concurrency is BETWEEN walks, so no limit is widened.
202
+ const artifactMemo = new Map();
203
+ const docs = await pooled(answer.descriptor.clusters, RESOLVE_MAX_INFLIGHT_READS, (cl) => fetchClusterDocument(store, cl.digest, artifactMemo));
204
+ // Flattened in DOCUMENT ORDER first, then resolved concurrently and inserted in that same order:
205
+ // when two clusters declare one command name, last-in-document-order still wins, exactly as the
206
+ // sequential form did. Concurrency must not make the resolved surface depend on read timing.
207
+ const declared = docs.flatMap((doc) => doc.commands).filter((cmd) => visible.has(cmd.name)); // a describe VIEW may narrow a cluster's commands
208
+ // Each command needs two closures, so the pool runs at half the read bound to keep the in-flight
209
+ // read count under it.
210
+ const resolved = await pooled(declared, Math.max(1, RESOLVE_MAX_INFLIGHT_READS >> 1), async (cmd) => {
211
+ // Each command recompiles its OWN validators (cheap, CPU-only) even when two commands share a
212
+ // closure digest: a compiled contract is not shared, only the artifact bytes behind it are.
213
+ const [input, output] = await Promise.all([
214
+ recompileClosure(store, cmd.inputDigest, artifactMemo),
215
+ recompileClosure(store, cmd.outputDigest, artifactMemo),
216
+ ]);
217
+ return {
218
+ command: cmd.name,
219
+ contract: { input, output },
220
+ class: cmd.class,
221
+ targeted: cmd.targeted,
222
+ modes: cmd.modes ?? [],
223
+ capability: cmd.capability,
224
+ };
225
+ });
226
+ const commands = new Map();
227
+ for (const rc of resolved)
228
+ commands.set(rc.command, rc);
229
+ return { endpoint: answer.descriptor.endpoint, owner: answer.descriptor.owner, caller, responder, commands, ...(opts.instanceId !== undefined ? { pinnedInstanceId: opts.instanceId } : {}) };
230
+ }
231
+ /**
232
+ * INVOKE one named command on a resolved service: validate nothing here (the compiled input
233
+ * contract in {@link epCall}'s request builder gates args before publish, and the responder's
234
+ * digest-bound boundary re-validates), route on the `one` rail, return the attributed reply. A
235
+ * command absent from the resolved surface is `not-found` (the caller cannot see it, or it does
236
+ * not exist); a targeted command needs its `target`.
237
+ *
238
+ * Currency: `opts.currentEpoch` (e.g. the registry-read `serviceEpochReader`) when supplied;
239
+ * otherwise the DESCRIBE-BOUND default - accept exactly the incarnation that answered this
240
+ * service's resolve (its broker-authenticated `instanceId`+`epoch` off the describe reply
241
+ * subject) and refuse `failed-precondition` when a DIFFERENT instance wins the `one` queue
242
+ * (a superseded-or-split responder; re-resolve to adopt a legitimate successor). The bind needs
243
+ * no registry read grant, and it is strictly stronger than no check: two live instances of a
244
+ * single-instance endpoint can never both pass one resolved handle.
245
+ */
246
+ export async function invokeCommand(nc, space, service, command, args, opts) {
247
+ const resolved = service.commands.get(command);
248
+ if (resolved === undefined)
249
+ throw new EpEnvelopeError("not-found", `command "${command}" is not in ${service.endpoint}'s visible surface; describe lists ${[...service.commands.keys()].sort().join(", ") || "(none)"}`);
250
+ if (resolved.targeted && opts.target === undefined)
251
+ throw new EpEnvelopeError("bad-request", `command "${command}" is targeted (modes: ${resolved.modes.join(", ")}); an invoke needs its target`);
252
+ if (!resolved.targeted && opts.target !== undefined)
253
+ throw new EpEnvelopeError("bad-request", `command "${command}" is untargeted; an invoke must not carry a target`);
254
+ const caller = service.caller;
255
+ // "No args" marshals to the CONTRACT's canonical empty form: absent args ride as null on the
256
+ // wire, so when this command's input rejects null but accepts the empty object (e.g. an
257
+ // all-optional `{type:"object"}` input like despawn's), send `{}` — that IS the caller's
258
+ // intent in that contract's vocabulary (a targeted CLI stop has nothing left after the alias
259
+ // becomes the target block). Contract-derived, never a guess: an input that requires fields
260
+ // accepts neither form and still refuses loud at the pre-publish validation below.
261
+ let sendArgs = args;
262
+ if (sendArgs === undefined && !resolved.contract.input.validate(null) && resolved.contract.input.validate({}))
263
+ sendArgs = {};
264
+ const describeBound = (instanceId) => {
265
+ if (instanceId !== service.responder.instanceId) {
266
+ // The refusal is unchanged; what it SAYS is not. One message used to cover two situations
267
+ // that call for opposite responses, and it described only the rarer one.
268
+ //
269
+ // PINNED: the caller named an instance and a different one answered. Genuinely wrong.
270
+ //
271
+ // UNPINNED: the caller addressed the CLASS. The describe and the invoke are two independent
272
+ // trips through the same anycast queue, so in a multi-instance space they routinely land on
273
+ // different instances and this fires on an ordinary, correct request - not on a supersession.
274
+ // Calling that "superseded-or-split" sends the reader hunting a restart that never happened.
275
+ // The old text's remedy is also not executable by the surfaces that print it most (`stop`,
276
+ // `despawn` and `attach` have no adopt path and no pin), so it advised an action the caller
277
+ // could not take. Say which case this is, and stop asserting a cause that is usually wrong.
278
+ throw new EpEnvelopeError("failed-precondition", service.pinnedInstanceId !== undefined
279
+ ? `the ${service.endpoint} instance ${instanceId} answered but this handle is PINNED to ${service.pinnedInstanceId}; a pinned call names its instance and never accepts another (SPEC 13.2)`
280
+ : `the ${service.endpoint} instance ${instanceId} won the class queue but this UNPINNED handle resolved against ${service.responder.instanceId}; the describe and the invoke are separate trips through the same queue, so in a multi-instance space this is an ordinary split and not necessarily a supersession - the handle cannot currently adopt a different winner (SPEC 13.2)`);
281
+ }
282
+ return service.responder.epoch;
283
+ };
284
+ // P2 item 3 `--on`: a PINNED service routes to its exact instance's `inst` rail (the same instance the
285
+ // describe resolved to, at its resolved epoch), never the class `one` queue — so the command reaches
286
+ // the addressed manager in a multi-manager space. Unpinned ⇒ class anycast `one` (unchanged). The
287
+ // describeBound currency check still holds: an inst-routed reply carries that instance's id.
288
+ const route = service.pinnedInstanceId !== undefined
289
+ ? { mode: "inst", instanceId: service.pinnedInstanceId, epoch: service.responder.epoch }
290
+ : { mode: "one" };
291
+ return epCall(nc, space, route, {
292
+ endpoint: service.endpoint, command, contract: resolved.contract, caller,
293
+ ...(sendArgs !== undefined ? { args: sendArgs } : {}),
294
+ ...(opts.target ? { target: opts.target } : {}),
295
+ }, { deadlineMs: opts.deadlineMs ?? 10_000, currentEpoch: opts.currentEpoch ?? describeBound });
296
+ }
297
+ /** Submit an ACTION command and FOLLOW its goal to the terminal (P2 item 2, 2b): since 2a a
298
+ * spawn/launch reply is the ACCEPTANCE (returned before the agent is live), so a consumer that
299
+ * wants the old block-until-outcome behaviour follows the caller-scoped progress subtree to the
300
+ * terminal here. The subscription opens BEFORE `submit` runs (a fast join could terminalize within
301
+ * milliseconds of the acceptance), buffering terminals by goalId. The reply is then RESOLVED from
302
+ * the terminal: `succeeded` → the terminal's data (today's live reply — name/id/role/agent/mode/
303
+ * lifecycleUid), `failed`/`uncertain`/`cancelled` → a non-ok reply carrying the cause. A reply with
304
+ * NO goalId (a refuse-at-accept, or a non-action command) passes through unchanged. UX is preserved:
305
+ * the call still returns on the real outcome. The caller needs the per-goal progress read row
306
+ * ({@link epGoalProgressGrantRow}) — minted with any goal-bearing capability. */
307
+ export async function submitAndFollowGoal(nc, space, endpoint, caller, deadlineMs, submit) {
308
+ const terminals = new Map();
309
+ const waiters = new Map();
310
+ const sub = nc.subscribe(epGoalProgressGrantRow(space, endpoint, caller), {
311
+ callback: (err, m) => {
312
+ if (err)
313
+ return;
314
+ let ev;
315
+ try {
316
+ ev = JSON.parse(dec.decode(m.data));
317
+ }
318
+ catch {
319
+ return;
320
+ }
321
+ if (ev && ev.phase === "terminal" && typeof ev.goalId === "string") {
322
+ terminals.set(ev.goalId, { state: String(ev.state), data: ev.data });
323
+ waiters.get(ev.goalId)?.();
324
+ }
325
+ },
326
+ });
327
+ try {
328
+ const attributed = await submit();
329
+ if (attributed.reply.ok !== true)
330
+ return attributed; // refuse at accept — surface as-is
331
+ const goalId = attributed.reply.data?.goalId;
332
+ if (typeof goalId !== "string")
333
+ return attributed; // not an action reply — pass through
334
+ const terminal = terminals.get(goalId) ?? await new Promise((resolve) => {
335
+ const t = setTimeout(() => resolve(terminals.get(goalId)), deadlineMs);
336
+ waiters.set(goalId, () => { clearTimeout(t); resolve(terminals.get(goalId)); });
337
+ });
338
+ if (terminal === undefined)
339
+ return { ...attributed, reply: { ...attributed.reply, ok: false, data: undefined, error: { code: "deadline-exceeded", message: `the goal "${goalId}" produced no terminal within ${deadlineMs}ms; read its outcome with 'ps'/'inspect' (SPEC 13.6)` } } };
340
+ if (terminal.state === "succeeded")
341
+ return { ...attributed, reply: { ...attributed.reply, ok: true, ...(terminal.data !== undefined ? { data: terminal.data } : { data: undefined }), error: undefined } };
342
+ const d = (terminal.data ?? {});
343
+ const message = typeof d.error === "string" ? d.error : typeof d.reason === "string" ? d.reason : `the goal settled ${terminal.state}`;
344
+ return { ...attributed, reply: { ...attributed.reply, ok: false, data: undefined, error: { code: terminal.state, message } } };
345
+ }
346
+ finally {
347
+ sub.unsubscribe();
348
+ }
349
+ }
350
+ /**
351
+ * SCATTER one untargeted command to the LIVE class (§13.5): resolve the command's contract off the
352
+ * same digest-verified surface {@link invokeCommand} uses, then run the registry-wired scatter —
353
+ * freeze the expected set from the records registry, publish ONCE on the `all` rail, gather one
354
+ * attributed reply per instance, and reconcile registration currency post-classification. The
355
+ * returned `replies` map is keyed by instanceId (per-instance attribution, SPEC §13.5); a frozen
356
+ * instance that produced no on-time reply is a `missing` slot — reported UNREACHABLE, never silently
357
+ * omitted. The caller's connection carries the §13.9 records-read grant the freeze/reconcile ride (a
358
+ * scoped read of the endpoint's `svc` registry); `jsm`/`kv` are opened over it here.
359
+ *
360
+ * A scatter addresses EVERY instance, so a targeted command is refused (a per-instance target is
361
+ * incoherent with the `all` rail) and a handle PINNED to one instance is refused (a pin is the
362
+ * anti-scatter — use {@link invokeCommand} for `--on`). "No args" marshals to the contract's
363
+ * canonical empty form exactly as {@link invokeCommand}.
364
+ */
365
+ export async function scatterCommand(nc, space, service, command, args, opts) {
366
+ const resolved = service.commands.get(command);
367
+ if (resolved === undefined)
368
+ throw new EpEnvelopeError("not-found", `command "${command}" is not in ${service.endpoint}'s visible surface; describe lists ${[...service.commands.keys()].sort().join(", ") || "(none)"}`);
369
+ if (resolved.targeted)
370
+ throw new EpEnvelopeError("bad-request", `command "${command}" is targeted; a class scatter addresses every instance and cannot carry a per-instance target (SPEC 13.5)`);
371
+ if (service.pinnedInstanceId !== undefined)
372
+ throw new EpEnvelopeError("bad-request", `a class scatter cannot run on a handle pinned to instance ${service.pinnedInstanceId}; resolve the service unpinned (a pin is the anti-scatter, SPEC 13.5)`);
373
+ const caller = service.caller;
374
+ // Same contract-canonical empty-args marshaling as invokeCommand: absent args ride as {} when the
375
+ // command's input rejects null but accepts the empty object (e.g. an all-optional object input).
376
+ let sendArgs = args;
377
+ if (sendArgs === undefined && !resolved.contract.input.validate(null) && resolved.contract.input.validate({}))
378
+ sendArgs = {};
379
+ // `checkAPI: false` so the caller needs NO account `$JS.API.INFO` grant: the freeze's reads are
380
+ // the scoped records-registry rows (`STREAM.INFO` + leader `STREAM.MSG.GET`), never an account
381
+ // probe. The scatter's grant stays exactly the §13.9 records read. No KV handle is opened — the
382
+ // freeze derives the bucket name and reads via jsm only.
383
+ const jsm = await jetstreamManager(nc, { checkAPI: false });
384
+ return epScatterService(nc, jsm, space, {
385
+ endpoint: service.endpoint, command, contract: resolved.contract, caller,
386
+ ...(sendArgs !== undefined ? { args: sendArgs } : {}),
387
+ }, opts);
388
+ }
389
+ /** A digest reference's bare hex, exported so a CLI can print the resolved surface's digests. */
390
+ export function contractDigestHexOf(value) {
391
+ return contractArtifactDigestHex(new TextEncoder().encode(JSON.stringify(value)));
392
+ }
393
+ //# sourceMappingURL=endpoint-invoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-invoke.js","sourceRoot":"","sources":["../src/endpoint-invoke.ts"],"names":[],"mappings":"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"}