@claudexor/cli 3.6.0 → 3.8.1

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 (141) hide show
  1. package/dist/accounts-projection.d.ts +4 -2
  2. package/dist/accounts-projection.d.ts.map +1 -1
  3. package/dist/accounts-projection.js +49 -2
  4. package/dist/accounts-projection.js.map +1 -1
  5. package/dist/accounts-services.d.ts +7 -1
  6. package/dist/accounts-services.d.ts.map +1 -1
  7. package/dist/accounts-services.js +7 -2
  8. package/dist/accounts-services.js.map +1 -1
  9. package/dist/agy-quota-source.d.ts +2 -0
  10. package/dist/agy-quota-source.d.ts.map +1 -1
  11. package/dist/agy-quota-source.js +83 -108
  12. package/dist/agy-quota-source.js.map +1 -1
  13. package/dist/capabilities.d.ts.map +1 -1
  14. package/dist/capabilities.js +6 -1
  15. package/dist/capabilities.js.map +1 -1
  16. package/dist/claudexord-entry.d.ts +7 -2
  17. package/dist/claudexord-entry.d.ts.map +1 -1
  18. package/dist/claudexord-entry.js +33 -11
  19. package/dist/claudexord-entry.js.map +1 -1
  20. package/dist/claudexord.d.ts.map +1 -1
  21. package/dist/claudexord.js +9 -12
  22. package/dist/claudexord.js.map +1 -1
  23. package/dist/cli-io.d.ts +1 -0
  24. package/dist/cli-io.d.ts.map +1 -1
  25. package/dist/cli-io.js +14 -0
  26. package/dist/cli-io.js.map +1 -1
  27. package/dist/cli.js +12 -18
  28. package/dist/cli.js.map +1 -1
  29. package/dist/command-flags.d.ts.map +1 -1
  30. package/dist/command-flags.js +3 -2
  31. package/dist/command-flags.js.map +1 -1
  32. package/dist/control-services.d.ts +824 -806
  33. package/dist/control-services.d.ts.map +1 -1
  34. package/dist/control-services.js +4 -16
  35. package/dist/control-services.js.map +1 -1
  36. package/dist/credential-commands.d.ts +17 -0
  37. package/dist/credential-commands.d.ts.map +1 -1
  38. package/dist/credential-commands.js +62 -14
  39. package/dist/credential-commands.js.map +1 -1
  40. package/dist/credential-profile-mutations.d.ts +9 -0
  41. package/dist/credential-profile-mutations.d.ts.map +1 -1
  42. package/dist/credential-profile-mutations.js +63 -31
  43. package/dist/credential-profile-mutations.js.map +1 -1
  44. package/dist/credential-status-invalidation.d.ts +2 -0
  45. package/dist/credential-status-invalidation.d.ts.map +1 -1
  46. package/dist/credential-status-invalidation.js +10 -0
  47. package/dist/credential-status-invalidation.js.map +1 -1
  48. package/dist/delegation-belt-descriptor.d.ts +2 -1
  49. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  50. package/dist/delegation-belt-descriptor.js +2 -1
  51. package/dist/delegation-belt-descriptor.js.map +1 -1
  52. package/dist/harness-command-specs.d.ts.map +1 -1
  53. package/dist/harness-command-specs.js +4 -4
  54. package/dist/harness-command-specs.js.map +1 -1
  55. package/dist/harness-command.d.ts +5 -3
  56. package/dist/harness-command.d.ts.map +1 -1
  57. package/dist/harness-command.js +5 -3
  58. package/dist/harness-command.js.map +1 -1
  59. package/dist/harness-install-lease.d.ts +11 -0
  60. package/dist/harness-install-lease.d.ts.map +1 -0
  61. package/dist/harness-install-lease.js +98 -0
  62. package/dist/harness-install-lease.js.map +1 -0
  63. package/dist/harness-install-proof.d.ts +36 -0
  64. package/dist/harness-install-proof.d.ts.map +1 -0
  65. package/dist/harness-install-proof.js +148 -0
  66. package/dist/harness-install-proof.js.map +1 -0
  67. package/dist/harness-install-recipes.d.ts +80 -0
  68. package/dist/harness-install-recipes.d.ts.map +1 -0
  69. package/dist/harness-install-recipes.js +130 -0
  70. package/dist/harness-install-recipes.js.map +1 -0
  71. package/dist/harness-installer.d.ts +45 -46
  72. package/dist/harness-installer.d.ts.map +1 -1
  73. package/dist/harness-installer.js +248 -156
  74. package/dist/harness-installer.js.map +1 -1
  75. package/dist/mcp-run-projections.d.ts +1 -1
  76. package/dist/native-login.d.ts +7 -0
  77. package/dist/native-login.d.ts.map +1 -1
  78. package/dist/native-login.js +29 -13
  79. package/dist/native-login.js.map +1 -1
  80. package/dist/profile-registration.d.ts +2 -0
  81. package/dist/profile-registration.d.ts.map +1 -1
  82. package/dist/profile-registration.js +49 -6
  83. package/dist/profile-registration.js.map +1 -1
  84. package/dist/quota-services.d.ts +2 -2
  85. package/dist/remote-command.d.ts +0 -2
  86. package/dist/remote-command.d.ts.map +1 -1
  87. package/dist/remote-command.js +3 -74
  88. package/dist/remote-command.js.map +1 -1
  89. package/dist/request-preflight.d.ts +1 -1
  90. package/dist/request-preflight.d.ts.map +1 -1
  91. package/dist/request-preflight.js +35 -11
  92. package/dist/request-preflight.js.map +1 -1
  93. package/dist/retry-command.d.ts.map +1 -1
  94. package/dist/retry-command.js +4 -0
  95. package/dist/retry-command.js.map +1 -1
  96. package/dist/setup-attach-command.d.ts +30 -0
  97. package/dist/setup-attach-command.d.ts.map +1 -0
  98. package/dist/setup-attach-command.js +118 -0
  99. package/dist/setup-attach-command.js.map +1 -0
  100. package/dist/setup-job-control-services.d.ts +2064 -0
  101. package/dist/setup-job-control-services.d.ts.map +1 -0
  102. package/dist/setup-job-control-services.js +33 -0
  103. package/dist/setup-job-control-services.js.map +1 -0
  104. package/dist/setup-job-store.d.ts +2 -2
  105. package/dist/setup-job-support.d.ts +23 -13
  106. package/dist/setup-job-support.d.ts.map +1 -1
  107. package/dist/setup-job-support.js +55 -13
  108. package/dist/setup-job-support.js.map +1 -1
  109. package/dist/setup-jobs.d.ts +4 -4
  110. package/dist/setup-jobs.d.ts.map +1 -1
  111. package/dist/setup-jobs.js +50 -47
  112. package/dist/setup-jobs.js.map +1 -1
  113. package/dist/setup-login-capability.d.ts +37 -0
  114. package/dist/setup-login-capability.d.ts.map +1 -0
  115. package/dist/setup-login-capability.js +96 -0
  116. package/dist/setup-login-capability.js.map +1 -0
  117. package/dist/setup-login-io.d.ts +4 -1
  118. package/dist/setup-login-io.d.ts.map +1 -1
  119. package/dist/setup-login-io.js +22 -3
  120. package/dist/setup-login-io.js.map +1 -1
  121. package/dist/setup-login-pty.d.ts +64 -22
  122. package/dist/setup-login-pty.d.ts.map +1 -1
  123. package/dist/setup-login-pty.js +289 -48
  124. package/dist/setup-login-pty.js.map +1 -1
  125. package/dist/setup-login-runner-support.d.ts +12 -0
  126. package/dist/setup-login-runner-support.d.ts.map +1 -0
  127. package/dist/setup-login-runner-support.js +65 -0
  128. package/dist/setup-login-runner-support.js.map +1 -0
  129. package/dist/setup-login-runner.d.ts +3 -0
  130. package/dist/setup-login-runner.d.ts.map +1 -1
  131. package/dist/setup-login-runner.js +133 -116
  132. package/dist/setup-login-runner.js.map +1 -1
  133. package/dist/setup-runner-outcome.d.ts +10 -0
  134. package/dist/setup-runner-outcome.d.ts.map +1 -0
  135. package/dist/setup-runner-outcome.js +49 -0
  136. package/dist/setup-runner-outcome.js.map +1 -0
  137. package/dist/thread-execution-workspace.d.ts +11 -6
  138. package/dist/thread-execution-workspace.d.ts.map +1 -1
  139. package/dist/thread-execution-workspace.js +52 -6
  140. package/dist/thread-execution-workspace.js.map +1 -1
  141. package/package.json +24 -24
@@ -1 +1 @@
1
- {"version":3,"file":"credential-profile-mutations.js","sourceRoot":"","sources":["../src/credential-profile-mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-profile-mutations.js","sourceRoot":"","sources":["../src/credential-profile-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AAoB5C,MAAM,UAAU,0BAA0B,CAAC,IAAmC;IAC5E,OAAO;QACL,sEAAsE;QACtE,mEAAmE;QACnE,2EAA2E;QAC3E,mEAAmE;QACnE,8BAA8B;QAC9B,uBAAuB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE;oBAC9E,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,qEAAqE;YACrE,iEAAiE;YACjE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,iEAAiE;YACjE,MAAM,cAAc,GAAG,yBAAyB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;YACtE,IAAI,OAAsC,CAAC;YAC3C,kBAAkB,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC5B,iCAAiC,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACpF,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CACjD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CACrE,CAAC;gBACH,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,KAAK,GAAG,4BAA4B,CAAC;wBACzC,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;wBAC9D,QAAQ,EAAE,MAAM,CAAC,mBAAmB;wBACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;oBACH,IAAI,KAAK,CAAC,SAAS;wBACjB,MAAM,8BAA8B,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;oBAC9E,IACE,CAAC,WAAW,CAAC,OAAO;wBACpB,KAAK,CAAC,MAAM,CAAC,oBAAoB,KAAK,IAAI;wBAC1C,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAC9D,CAAC;wBACD,MAAM,8BAA8B,CAClC,KAAK,EACL,mCAAmC,EACnC,UAAU,CACX,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM,gBAAgB,GACpB,cAAc,KAAK,SAAS;oBAC5B,2BAA2B,CAAC,SAAS,EAAE,WAAW,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;gBAChF,OAAO;oBACL,GAAG,MAAM;oBACT,GAAG,CAAC,gBAAgB;wBAClB,CAAC,CAAC;4BACE,SAAS,EAAE;gCACT,GAAG,MAAM,CAAC,SAAS;gCACnB,CAAC,SAAS,CAAC,EAAE;oCACX,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;oCAC9B,0BAA0B,EAAE,OAAO;iCACpC;6BACF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC9D,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;4BACtE,OAAO,OAAO,CAAC;wBACjB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;wBAClC,OAAO,OAAO,CAAC;oBACjB,CAAC,CAAC;iBACH,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,OAAO;gBAChB,qEAAqE;gBACrE,uEAAuE;gBACvE,MAAM,EAAE,2BAA2B,CACjC,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EACjD,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAC5B;aACF,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,uBAAuB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,4CAA4C,WAAW,CAAC,KAAK,0CAA0C,CACxG,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YACD,iCAAiC,CAC/B,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,EACtD,SAAS,EACT,SAAS,CACV,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/D,sEAAsE;YACtE,0EAA0E;YAC1E,oEAAoE;YACpE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YACrD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChD,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI;oBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,SAAS;gBAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5E,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACzD,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,8BAA8B;YAC9B,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/D,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAC/E,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CACtE,CAAC;YACF,MAAM,aAAa,GAAG,4BAA4B,CAAC;gBACjD,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC9D,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC,MAAM,CAAC;YACV,MAAM,WAAW,GAAG,eAAe,EAAE,MAAM,KAAK,SAAS,CAAC;YAC1D,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;gBACnC,mEAAmE;gBACnE,oEAAoE;gBACpE,wDAAwD;gBACxD,mCAAmC;gBACnC,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;oBACnD,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBACrD,KAAK,MAAM,IAAI,IAAI,SAAS;wBAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;YACD,uEAAuE;YACvE,2EAA2E;YAC3E,uEAAuE;YACvE,sFAAsF;YACtF,sEAAsE;YACtE,yEAAyE;YACzE,uEAAuE;YACvE,IAAI,iBAAiB,GAAqD,MAAM,CAAC;YACjF,IAAI,CAAC;gBACH,IACE,aAAa,EAAE,eAAe,KAAK,kBAAkB;oBACrD,aAAa,CAAC,iBAAiB,EAC/B,CAAC;oBACD,iEAAiE;oBACjE,iEAAiE;oBACjE,iEAAiE;oBACjE,qEAAqE;oBACrE,MAAM,GAAG,GAAG,uBAAuB,CAAC,SAAS,CAAC;wBAC5C,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,aAAa,CAAC,iBAAiB,CAAC;wBACtE,CAAC,CAAC,yBAAyB,CAAC,aAAa,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;oBACzF,6DAA6D;oBAC7D,gEAAgE;oBAChE,gEAAgE;oBAChE,mEAAmE;oBACnE,gEAAgE;oBAChE,kEAAkE;oBAClE,+DAA+D;oBAC/D,MAAM,YAAY,GAAG,gCAAgC,CACnD,IAAI,CAAC,kBAAkB,EAAE,EAAE,UAAU,CAAC,CACvC,CAAC;oBACF,MAAM,iBAAiB,GACrB,CAAC,WAAW;wBACV,eAAe,KAAK,SAAS;wBAC7B,GAAG,KAAK,gCAAgC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;wBACpE,2BAA2B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC9D,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,mCAAmC,YAAY,qDAAqD,CAC/H,CAAC;oBACJ,CAAC;oBACD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC9C,iBAAiB,GAAG,oBAAoB,CAAC;oBAC3C,CAAC;gBACH,CAAC;qBAAM,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAClD,iBAAiB,GAAG,gBAAgB,CAAC;gBACvC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,mFACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI,EAAE,CACpE,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,WAAW,EAAE,CAAC;gBAChB,qEAAqE;gBACrE,8DAA8D;gBAC9D,6BAA6B,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI;gBACb,iBAAiB;gBACjB,GAAG,CAAC,aAAa,CAAC,aAAa,KAAK,QAAQ;oBAC1C,CAAC,CAAC;wBACE,2BAA2B,EAAE;4BAC3B,KAAK,EAAE,QAAiB;4BACxB,KAAK,EAAE,gBAAyB;4BAChC,KAAK,EAAE,aAAa,CAAC,cAAc;yBACpC;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -8,4 +8,6 @@ export type CredentialMutationSubject = {
8
8
  secretName: string;
9
9
  };
10
10
  export declare function bustCredentialStatusCaches(quotaRegistry: () => QuotaRegistry, subject?: CredentialMutationSubject): void;
11
+ /** Clear the process-wide observations after a daemon login/logout lifecycle. */
12
+ export declare function bustGlobalCredentialStatusCaches(quotaRegistry: () => QuotaRegistry): void;
11
13
  //# sourceMappingURL=credential-status-invalidation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-status-invalidation.d.ts","sourceRoot":"","sources":["../src/credential-status-invalidation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD;qEACqE;AACrE,MAAM,MAAM,yBAAyB,GACnC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,aAAa,EAClC,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAiBN"}
1
+ {"version":3,"file":"credential-status-invalidation.d.ts","sourceRoot":"","sources":["../src/credential-status-invalidation.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD;qEACqE;AACrE,MAAM,MAAM,yBAAyB,GACnC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,aAAa,EAClC,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAqBN;AAED,iFAAiF;AACjF,wBAAgB,gCAAgC,CAAC,aAAa,EAAE,MAAM,aAAa,GAAG,IAAI,CAGzF"}
@@ -10,10 +10,15 @@
10
10
  */
11
11
  import { loadConfig } from "@claudexor/config";
12
12
  import { invalidateDoctorCache } from "@claudexor/core";
13
+ import { clearClaudeAuthStatusCache } from "@claudexor/harness-claude";
13
14
  import { noProjectRepoRoot } from "@claudexor/util";
14
15
  import { invalidateStatusProjections } from "./status-projection-cache.js";
15
16
  import { credentialUnusableLedger } from "./run-orchestrator.js";
16
17
  export function bustCredentialStatusCaches(quotaRegistry, subject) {
18
+ // Auth-status keeps a short process-local LKG only to survive a transient
19
+ // probe transport error. Any explicit credential mutation must invalidate it
20
+ // before status/probe consumers can observe the changed store.
21
+ clearClaudeAuthStatusCache();
17
22
  invalidateDoctorCache();
18
23
  invalidateStatusProjections();
19
24
  quotaRegistry().noteCredentialChange();
@@ -33,4 +38,9 @@ export function bustCredentialStatusCaches(quotaRegistry, subject) {
33
38
  if (!subject.secretName.includes(":"))
34
39
  credentialUnusableLedger.clearDefaultSubjects();
35
40
  }
41
+ /** Clear the process-wide observations after a daemon login/logout lifecycle. */
42
+ export function bustGlobalCredentialStatusCaches(quotaRegistry) {
43
+ bustCredentialStatusCaches(quotaRegistry);
44
+ credentialUnusableLedger.noteCredentialChange();
45
+ }
36
46
  //# sourceMappingURL=credential-status-invalidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-status-invalidation.js","sourceRoot":"","sources":["../src/credential-status-invalidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAOjE,MAAM,UAAU,0BAA0B,CACxC,aAAkC,EAClC,OAAmC;IAEnC,qBAAqB,EAAE,CAAC;IACxB,2BAA2B,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,oBAAoB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;QAC3B,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACjF,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;YAC3C,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,wBAAwB,CAAC,oBAAoB,EAAE,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"credential-status-invalidation.js","sourceRoot":"","sources":["../src/credential-status-invalidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAOjE,MAAM,UAAU,0BAA0B,CACxC,aAAkC,EAClC,OAAmC;IAEnC,0EAA0E;IAC1E,6EAA6E;IAC7E,+DAA+D;IAC/D,0BAA0B,EAAE,CAAC;IAC7B,qBAAqB,EAAE,CAAC;IACxB,2BAA2B,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,oBAAoB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;QAC3B,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACjF,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;YAC3C,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,wBAAwB,CAAC,oBAAoB,EAAE,CAAC;AACzF,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gCAAgC,CAAC,aAAkC;IACjF,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAC1C,wBAAwB,CAAC,oBAAoB,EAAE,CAAC;AAClD,CAAC"}
@@ -20,7 +20,8 @@ export declare function beltDaemonDiscoveryEnv(): Record<string, string>;
20
20
  * dispatches `mcp serve-belt` before daemon initialization, so the same path
21
21
  * works for direct dev/npm `claudexord.js`, the npm bin wrapper, and the
22
22
  * packaged single-file `claudexord.bundle.cjs`. There is no adjacent-file
23
- * guess and no second CLI copy in the app closure.
23
+ * guess: even when the reviewed operator CLI is present in the closure, the
24
+ * belt deliberately re-enters the exact daemon entry already serving it.
24
25
  */
25
26
  export declare function resolveDaemonEntry(argv1?: string | undefined): string | undefined;
26
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-belt-descriptor.d.ts","sourceRoot":"","sources":["../src/delegation-belt-descriptor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAAM,GAAG,SAA2B,GAC1C,MAAM,GAAG,SAAS,CAIpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAgC,EAC7D,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA4B,GAC9D,cAAc,CA0BhB;AAED;;iEAEiE;AACjE,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAgC,EAC7D,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA4B,GAC9D,cAAc,GAAG,IAAI,CAQvB"}
1
+ {"version":3,"file":"delegation-belt-descriptor.d.ts","sourceRoot":"","sources":["../src/delegation-belt-descriptor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAAM,GAAG,SAA2B,GAC1C,MAAM,GAAG,SAAS,CAIpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAgC,EAC7D,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA4B,GAC9D,cAAc,CA0BhB;AAED;;iEAEiE;AACjE,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAgC,EAC7D,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA4B,GAC9D,cAAc,GAAG,IAAI,CAQvB"}
@@ -35,7 +35,8 @@ export function beltDaemonDiscoveryEnv() {
35
35
  * dispatches `mcp serve-belt` before daemon initialization, so the same path
36
36
  * works for direct dev/npm `claudexord.js`, the npm bin wrapper, and the
37
37
  * packaged single-file `claudexord.bundle.cjs`. There is no adjacent-file
38
- * guess and no second CLI copy in the app closure.
38
+ * guess: even when the reviewed operator CLI is present in the closure, the
39
+ * belt deliberately re-enters the exact daemon entry already serving it.
39
40
  */
40
41
  export function resolveDaemonEntry(argv1 = process.argv[1]) {
41
42
  if (!argv1)
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-belt-descriptor.js","sourceRoot":"","sources":["../src/delegation-belt-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,oBAAoB,EAAE,aAAa,EAAE;QACrC,qBAAqB,EAAE,iBAAiB,EAAE;QAC1C,wEAAwE;QACxE,oEAAoE;QACpE,wEAAwE;QACxE,8CAA8C;QAC9C,mBAAmB,EAAE,UAAU;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAK,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAAkC,EAClC,WAAW,GAA8B,kBAAkB,EAAE,EAC7D,YAAY,GAA2B,sBAAsB,EAAE;IAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,8BAA8B,CACtC,mLAAmL,CACpL,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC;QACxC,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE;YACH,oEAAoE;YACpE,oEAAoE;YACpE,GAAG,YAAY;YACf,GAAG,aAAa,CAAC;gBACf,WAAW,EAAE,EAAE;gBACf,uEAAuE;gBACvE,wEAAwE;gBACxE,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB;gBAC/B,YAAY,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;aAClD,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED;;iEAEiE;AACjE,MAAM,UAAU,oBAAoB,CAClC,SAAkB,EAClB,UAAkC,EAClC,WAAW,GAA8B,kBAAkB,EAAE,EAC7D,YAAY,GAA2B,sBAAsB,EAAE;IAE/D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,6BAA6B,CAAC,UAAU,EAAE,WAAW,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,8BAA8B;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"delegation-belt-descriptor.js","sourceRoot":"","sources":["../src/delegation-belt-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,oBAAoB,EAAE,aAAa,EAAE;QACrC,qBAAqB,EAAE,iBAAiB,EAAE;QAC1C,wEAAwE;QACxE,oEAAoE;QACpE,wEAAwE;QACxE,8CAA8C;QAC9C,mBAAmB,EAAE,UAAU;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAK,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAAkC,EAClC,WAAW,GAA8B,kBAAkB,EAAE,EAC7D,YAAY,GAA2B,sBAAsB,EAAE;IAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,8BAA8B,CACtC,mLAAmL,CACpL,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC;QACxC,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE;YACH,oEAAoE;YACpE,oEAAoE;YACpE,GAAG,YAAY;YACf,GAAG,aAAa,CAAC;gBACf,WAAW,EAAE,EAAE;gBACf,uEAAuE;gBACvE,wEAAwE;gBACxE,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB;gBAC/B,YAAY,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;aAClD,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED;;iEAEiE;AACjE,MAAM,UAAU,oBAAoB,CAClC,SAAkB,EAClB,UAAkC,EAClC,WAAW,GAA8B,kBAAkB,EAAE,EAC7D,YAAY,GAA2B,sBAAsB,EAAE;IAE/D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,6BAA6B,CAAC,UAAU,EAAE,WAAW,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,8BAA8B;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-command-specs.d.ts","sourceRoot":"","sources":["../src/harness-command-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;kFACkF;AAClF,eAAO,MAAM,qBAAqB,YAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE/F;4CAC4C;AAC5C,eAAO,MAAM,kBAAkB,QAAoF,CAAC;AAEpH,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAc1D,CAAC"}
1
+ {"version":3,"file":"harness-command-specs.d.ts","sourceRoot":"","sources":["../src/harness-command-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;kFACkF;AAClF,eAAO,MAAM,qBAAqB,YAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE/F;4CAC4C;AAC5C,eAAO,MAAM,kBAAkB,QAA8G,CAAC;AAE9I,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAc1D,CAAC"}
@@ -3,7 +3,7 @@
3
3
  export const INSTALLABLE_HARNESSES = ["agy", "claude", "codex", "cursor", "opencode"];
4
4
  /** The `harness` argument shape: rendered by `claudexor help` and reprinted by
5
5
  * the dispatcher when a verb is unknown. */
6
- export const HARNESS_USAGE_ARGS = `list [--all] | install <${INSTALLABLE_HARNESSES.join("|")}> [--dry-run] [--yes]`;
6
+ export const HARNESS_USAGE_ARGS = `list [--all] | install <${INSTALLABLE_HARNESSES.join("|")}> [--target <local|remote>] [--dry-run] [--yes]`;
7
7
  export const HARNESS_COMMAND_SPECS = [
8
8
  {
9
9
  id: "harness",
@@ -12,9 +12,9 @@ export const HARNESS_COMMAND_SPECS = [
12
12
  { prefix: ["install"], min: 2, max: 2 },
13
13
  ],
14
14
  usageArgs: HARNESS_USAGE_ARGS,
15
- summary: "List harnesses, or install one vendor CLI after disclosure",
16
- flags: ["all", "dry-run", "yes", "json"],
17
- subcommandFlags: { list: ["all"], install: ["dry-run", "yes"] },
15
+ summary: "List harnesses, or install one vendor CLI through the disclosed producer",
16
+ flags: ["all", "target", "dry-run", "yes", "json"],
17
+ subcommandFlags: { list: ["all"], install: ["target", "dry-run", "yes"] },
18
18
  mutability: "ops",
19
19
  stability: "stable",
20
20
  },
@@ -1 +1 @@
1
- {"version":3,"file":"harness-command-specs.js","sourceRoot":"","sources":["../src/harness-command-specs.ts"],"names":[],"mappings":"AAUA;kFACkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE/F;4CAC4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAEpH,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D;QACE,EAAE,EAAE,SAAS;QACb,kBAAkB,EAAE;YAClB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;YACpC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACxC;QACD,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,4DAA4D;QACrE,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;QACxC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QAC/D,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC"}
1
+ {"version":3,"file":"harness-command-specs.js","sourceRoot":"","sources":["../src/harness-command-specs.ts"],"names":[],"mappings":"AAUA;kFACkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE/F;4CAC4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,iDAAiD,CAAC;AAE9I,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D;QACE,EAAE,EAAE,SAAS;QACb,kBAAkB,EAAE;YAClB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;YACpC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACxC;QACD,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,0EAA0E;QACnF,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;QAClD,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;QACzE,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC"}
@@ -2,9 +2,11 @@ import { type ParsedArgs } from "./args.js";
2
2
  /**
3
3
  * `claudexor harness list [--all]` and `claudexor harness install <id>`.
4
4
  * Fakes are test fixtures, not real harnesses; `--all` reveals them. The
5
- * install verb is the disclosed installer (harness-installer.ts, issue #89):
6
- * exact npm pins for claude/codex/opencode, the human-verified PTY path for
7
- * the script vendors (cursor, agy), and nothing executes without disclosure.
5
+ * install verb is the target-aware disclosed installer (harness-installer.ts,
6
+ * issue #89): exact npm pins for claude/codex/opencode, and for the script
7
+ * vendors (cursor, agy) either the human-verified remote PTY path or, under an
8
+ * explicit `--target local --yes`, receipt-bound unattended execution. Nothing
9
+ * executes without disclosure and explicit authorization.
8
10
  * Flags are verb-owned (registry `subcommandFlags`): `harness list --yes` or
9
11
  * `harness install --all` is a loud exit-2 usage error, never a silently
10
12
  * ignored flag (INV-021).
@@ -1 +1 @@
1
- {"version":3,"file":"harness-command.d.ts","sourceRoot":"","sources":["../src/harness-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAOtD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAetE"}
1
+ {"version":3,"file":"harness-command.d.ts","sourceRoot":"","sources":["../src/harness-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAOtD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAetE"}
@@ -7,9 +7,11 @@ import { buildRegistry } from "./registry.js";
7
7
  /**
8
8
  * `claudexor harness list [--all]` and `claudexor harness install <id>`.
9
9
  * Fakes are test fixtures, not real harnesses; `--all` reveals them. The
10
- * install verb is the disclosed installer (harness-installer.ts, issue #89):
11
- * exact npm pins for claude/codex/opencode, the human-verified PTY path for
12
- * the script vendors (cursor, agy), and nothing executes without disclosure.
10
+ * install verb is the target-aware disclosed installer (harness-installer.ts,
11
+ * issue #89): exact npm pins for claude/codex/opencode, and for the script
12
+ * vendors (cursor, agy) either the human-verified remote PTY path or, under an
13
+ * explicit `--target local --yes`, receipt-bound unattended execution. Nothing
14
+ * executes without disclosure and explicit authorization.
13
15
  * Flags are verb-owned (registry `subcommandFlags`): `harness list --yes` or
14
16
  * `harness install --all` is a loud exit-2 usage error, never a silently
15
17
  * ignored flag (INV-021).
@@ -1 +1 @@
1
- {"version":3,"file":"harness-command.js","sourceRoot":"","sources":["../src/harness-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,IAAa;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,IAAI,UAAU;QAAE,OAAO,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI;YAAE,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;;YACnC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,4BAA4B,kBAAkB,EAAE,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"harness-command.js","sourceRoot":"","sources":["../src/harness-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,IAAa;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,IAAI,UAAU;QAAE,OAAO,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI;YAAE,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;;YACnC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,4BAA4B,kBAAkB,EAAE,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface HarnessInstallLease {
2
+ release(): void;
3
+ }
4
+ export declare const HARNESS_INSTALL_LOCK_TIMEOUT_MS = 120000;
5
+ /** One user-scoped, cross-process lease covers every shared install prefix.
6
+ * Waiters never unlink or rename a stale observation: doing so cannot be made
7
+ * compare-and-swap safe with Node's portable filesystem API and could delete a
8
+ * replacement owner's live lease. A dead or old owner-less lock fails closed
9
+ * with an exact manual remedy; ordinary live owners retain the bounded wait. */
10
+ export declare function acquireHarnessInstallLease(home: string, timeoutMs: number): HarnessInstallLease;
11
+ //# sourceMappingURL=harness-install-lease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-install-lease.d.ts","sourceRoot":"","sources":["../src/harness-install-lease.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,OAAO,IAAI,IAAI,CAAC;CACjB;AAOD,eAAO,MAAM,+BAA+B,SAAU,CAAC;AA0CvD;;;;gFAIgF;AAChF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,CA+C/F"}
@@ -0,0 +1,98 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ export const HARNESS_INSTALL_LOCK_TIMEOUT_MS = 120_000;
5
+ const INSTALL_LOCK_POLL_MS = 100;
6
+ const INSTALL_LOCK_OWNER_GRACE_MS = 5_000;
7
+ const sleepCell = new Int32Array(new SharedArrayBuffer(4));
8
+ function readInstallLeaseOwner(path) {
9
+ try {
10
+ const value = JSON.parse(readFileSync(path, "utf8"));
11
+ if (!Number.isSafeInteger(value.pid) ||
12
+ Number(value.pid) <= 0 ||
13
+ typeof value.token !== "string" ||
14
+ value.token.length === 0) {
15
+ return null;
16
+ }
17
+ return { pid: Number(value.pid), token: value.token };
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ function processIsAlive(pid) {
24
+ try {
25
+ process.kill(pid, 0);
26
+ return true;
27
+ }
28
+ catch (error) {
29
+ return error.code === "EPERM";
30
+ }
31
+ }
32
+ function installLockError(path, stale) {
33
+ const code = stale ? "install_lock_stale" : "install_lock_busy";
34
+ const message = stale
35
+ ? `a stale claudexor harness install lock remains at ${path}; verify no installer is running, remove that exact directory, and retry`
36
+ : `another claudexor harness install still owns ${path}; if this persists after that installer exits, verify no installer is running, remove that exact directory, and retry`;
37
+ return Object.assign(new Error(message), { code });
38
+ }
39
+ /** One user-scoped, cross-process lease covers every shared install prefix.
40
+ * Waiters never unlink or rename a stale observation: doing so cannot be made
41
+ * compare-and-swap safe with Node's portable filesystem API and could delete a
42
+ * replacement owner's live lease. A dead or old owner-less lock fails closed
43
+ * with an exact manual remedy; ordinary live owners retain the bounded wait. */
44
+ export function acquireHarnessInstallLease(home, timeoutMs) {
45
+ const lockRoot = join(home, ".claudexor");
46
+ const path = join(lockRoot, "harness-install.lock");
47
+ const ownerPath = join(path, "owner.json");
48
+ const token = randomUUID();
49
+ const owner = { pid: process.pid, token };
50
+ const deadline = Date.now() + Math.max(0, timeoutMs);
51
+ mkdirSync(lockRoot, { recursive: true, mode: 0o700 });
52
+ for (;;) {
53
+ try {
54
+ mkdirSync(path, { mode: 0o700 });
55
+ try {
56
+ writeFileSync(ownerPath, `${JSON.stringify(owner)}\n`, { mode: 0o600, flag: "wx" });
57
+ }
58
+ catch (error) {
59
+ rmSync(path, { recursive: true, force: true });
60
+ throw error;
61
+ }
62
+ let released = false;
63
+ return {
64
+ release: () => {
65
+ if (released)
66
+ return;
67
+ released = true;
68
+ const current = readInstallLeaseOwner(ownerPath);
69
+ if (current?.pid === process.pid && current.token === token) {
70
+ rmSync(path, { recursive: true, force: true });
71
+ }
72
+ },
73
+ };
74
+ }
75
+ catch (error) {
76
+ if (error.code !== "EEXIST")
77
+ throw error;
78
+ }
79
+ const existing = readInstallLeaseOwner(ownerPath);
80
+ let stale = existing !== null && !processIsAlive(existing.pid);
81
+ if (existing === null) {
82
+ try {
83
+ stale = Date.now() - statSync(path).mtimeMs >= INSTALL_LOCK_OWNER_GRACE_MS;
84
+ }
85
+ catch (error) {
86
+ if (error.code === "ENOENT")
87
+ continue;
88
+ throw error;
89
+ }
90
+ }
91
+ if (stale)
92
+ throw installLockError(path, true);
93
+ if (Date.now() >= deadline)
94
+ throw installLockError(path, false);
95
+ Atomics.wait(sleepCell, 0, 0, Math.min(INSTALL_LOCK_POLL_MS, deadline - Date.now()));
96
+ }
97
+ }
98
+ //# sourceMappingURL=harness-install-lease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-install-lease.js","sourceRoot":"","sources":["../src/harness-install-lease.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { spawnSync } from "node:child_process";
2
+ export interface InstalledHarnessProof {
3
+ installedBinary: string;
4
+ installedVersion: string;
5
+ }
6
+ export type HarnessProofResult = {
7
+ ok: true;
8
+ proof: InstalledHarnessProof;
9
+ } | {
10
+ ok: false;
11
+ reason: string;
12
+ };
13
+ export interface InstallProofRuntime {
14
+ runnerNodePath: string;
15
+ platform: NodeJS.Platform;
16
+ resolutionSource: NodeJS.ProcessEnv;
17
+ environment: NodeJS.ProcessEnv;
18
+ spawn: typeof spawnSync;
19
+ }
20
+ export interface NpmInstallProofSpec {
21
+ vendorRoot: string;
22
+ npmPackage: string;
23
+ binaryNames: readonly string[];
24
+ expectedVersion: string;
25
+ }
26
+ /** Prove an exact npm package and its target-owned launcher, then execute the
27
+ * absolute launcher for a matching version receipt. */
28
+ export declare function proveInstalledNpm(spec: NpmInstallProofSpec, runtime: InstallProofRuntime): HarnessProofResult;
29
+ /** Prove a script vendor's launcher (cursor-agent, agy). These installers pick
30
+ * their own destination and ship no pinnable version, so the proof is the
31
+ * resolvable launcher plus its own `--version` line — ONE body for every such
32
+ * vendor, so a third one is a caller, not a fork. The official launcher may be
33
+ * a symlink into a version directory outside bin, which is why resolution goes
34
+ * through the same helper the run path uses. */
35
+ export declare function proveInstalledScriptVendor(binaryName: string, runtime: InstallProofRuntime): HarnessProofResult;
36
+ //# sourceMappingURL=harness-install-proof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-install-proof.d.ts","sourceRoot":"","sources":["../src/harness-install-proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,KAAK,EAAE,OAAO,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;CACzB;AA2ED;uDACuD;AACvD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAyDpB;AAED;;;;;gDAKgD;AAChD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAmBpB"}
@@ -0,0 +1,148 @@
1
+ import { readFileSync, realpathSync } from "node:fs";
2
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
3
+ import { inspectExecutable, isBoundedRegularExecutable, isLaunchableExecutable, resolveHarnessBinary, } from "@claudexor/core";
4
+ const VERSION_PROBE_MAX_BYTES = 1024 * 1024;
5
+ const VERSION_PROBE_TIMEOUT_MS = 10_000;
6
+ const SCRIPT_VENDOR_VERSION_MAX_CHARS = 256;
7
+ const SEMVER_TOKEN = /(?:^|[^0-9A-Za-z.+-])(\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)(?=$|[^0-9A-Za-z.+-])/g;
8
+ function isStrictlyContained(root, candidate) {
9
+ const remainder = relative(root, candidate);
10
+ return (remainder !== "" &&
11
+ remainder !== ".." &&
12
+ !remainder.startsWith(`..${sep}`) &&
13
+ !isAbsolute(remainder));
14
+ }
15
+ function outputText(value) {
16
+ if (typeof value === "string")
17
+ return value;
18
+ return Buffer.isBuffer(value) ? value.toString("utf8") : "";
19
+ }
20
+ function exactSemverTokens(value) {
21
+ return [...value.matchAll(SEMVER_TOKEN)].map((match) => match[1] ?? "");
22
+ }
23
+ function proveVersion(installedBinary, runtime, expectedVersion) {
24
+ const absoluteBinary = resolve(installedBinary);
25
+ const versionResult = runtime.spawn(absoluteBinary, ["--version"], {
26
+ stdio: ["ignore", "pipe", "pipe"],
27
+ env: runtime.environment,
28
+ encoding: "utf8",
29
+ timeout: VERSION_PROBE_TIMEOUT_MS,
30
+ maxBuffer: VERSION_PROBE_MAX_BYTES,
31
+ });
32
+ if (versionResult.status !== 0) {
33
+ return {
34
+ ok: false,
35
+ reason: `the absolute --version probe exited ${versionResult.status ?? "without a status"}`,
36
+ };
37
+ }
38
+ const versionOutput = outputText(versionResult.stdout).trim();
39
+ if (versionOutput.length === 0) {
40
+ return { ok: false, reason: "the absolute --version probe returned empty stdout" };
41
+ }
42
+ if (expectedVersion !== null && !exactSemverTokens(versionOutput).includes(expectedVersion)) {
43
+ return {
44
+ ok: false,
45
+ reason: `the absolute --version probe did not report exact semver token ${expectedVersion}`,
46
+ };
47
+ }
48
+ if (expectedVersion !== null) {
49
+ return {
50
+ ok: true,
51
+ proof: { installedBinary: absoluteBinary, installedVersion: expectedVersion },
52
+ };
53
+ }
54
+ const reportedVersion = versionOutput.split(/\r?\n/, 1)[0]?.trim() ?? "";
55
+ if (reportedVersion.length === 0 || reportedVersion.length > SCRIPT_VENDOR_VERSION_MAX_CHARS) {
56
+ return {
57
+ ok: false,
58
+ reason: `the --version line must contain 1-${SCRIPT_VENDOR_VERSION_MAX_CHARS} characters`,
59
+ };
60
+ }
61
+ return {
62
+ ok: true,
63
+ proof: { installedBinary: absoluteBinary, installedVersion: reportedVersion },
64
+ };
65
+ }
66
+ /** Prove an exact npm package and its target-owned launcher, then execute the
67
+ * absolute launcher for a matching version receipt. */
68
+ export function proveInstalledNpm(spec, runtime) {
69
+ const packageRoot = join(spec.vendorRoot, "lib", "node_modules", ...spec.npmPackage.split("/"));
70
+ let canonicalRoot;
71
+ let canonicalPackageRoot;
72
+ let canonicalPackageJson;
73
+ try {
74
+ canonicalRoot = realpathSync(spec.vendorRoot);
75
+ canonicalPackageRoot = realpathSync(packageRoot);
76
+ canonicalPackageJson = realpathSync(join(packageRoot, "package.json"));
77
+ }
78
+ catch {
79
+ return { ok: false, reason: "the exact npm package root is missing or unreadable" };
80
+ }
81
+ if (!isStrictlyContained(canonicalRoot, canonicalPackageRoot)) {
82
+ return { ok: false, reason: "the exact npm package root escapes the install prefix" };
83
+ }
84
+ if (!isStrictlyContained(canonicalPackageRoot, canonicalPackageJson)) {
85
+ return { ok: false, reason: "the npm package manifest escapes the exact package root" };
86
+ }
87
+ let packageVersion = null;
88
+ try {
89
+ const parsed = JSON.parse(readFileSync(canonicalPackageJson, "utf8"));
90
+ packageVersion = typeof parsed.version === "string" ? parsed.version : null;
91
+ }
92
+ catch {
93
+ return { ok: false, reason: "the exact npm package manifest is unreadable" };
94
+ }
95
+ if (packageVersion !== spec.expectedVersion) {
96
+ return {
97
+ ok: false,
98
+ reason: `the npm package version is ${packageVersion ?? "missing"}, expected ${spec.expectedVersion}`,
99
+ };
100
+ }
101
+ let installedBinary = null;
102
+ for (const binaryName of spec.binaryNames) {
103
+ const base = resolve(spec.vendorRoot, "bin", binaryName);
104
+ const candidates = runtime.platform === "win32" ? [base, `${base}.exe`, `${base}.cmd`, `${base}.bat`] : [base];
105
+ installedBinary = candidates.find((candidate) => isLaunchableExecutable(candidate)) ?? null;
106
+ if (installedBinary !== null)
107
+ break;
108
+ }
109
+ if (installedBinary === null) {
110
+ return { ok: false, reason: "the expected npm launcher is missing or not launchable" };
111
+ }
112
+ try {
113
+ const inspection = inspectExecutable(installedBinary);
114
+ if (!isBoundedRegularExecutable(inspection) || inspection.size === 0) {
115
+ return { ok: false, reason: "the npm launcher target is empty or not a bounded file" };
116
+ }
117
+ if (!isStrictlyContained(canonicalRoot, inspection.realpath)) {
118
+ return { ok: false, reason: "the npm launcher canonical target escapes the install prefix" };
119
+ }
120
+ }
121
+ catch {
122
+ return { ok: false, reason: "the npm launcher could not be inspected safely" };
123
+ }
124
+ return proveVersion(installedBinary, runtime, spec.expectedVersion);
125
+ }
126
+ /** Prove a script vendor's launcher (cursor-agent, agy). These installers pick
127
+ * their own destination and ship no pinnable version, so the proof is the
128
+ * resolvable launcher plus its own `--version` line — ONE body for every such
129
+ * vendor, so a third one is a caller, not a fork. The official launcher may be
130
+ * a symlink into a version directory outside bin, which is why resolution goes
131
+ * through the same helper the run path uses. */
132
+ export function proveInstalledScriptVendor(binaryName, runtime) {
133
+ const installedBinary = resolveHarnessBinary(binaryName, runtime.resolutionSource, runtime.runnerNodePath, runtime.platform);
134
+ if (installedBinary === null) {
135
+ return { ok: false, reason: `the exact ${binaryName} launcher is missing or not launchable` };
136
+ }
137
+ try {
138
+ const inspection = inspectExecutable(installedBinary);
139
+ if (!isBoundedRegularExecutable(inspection) || inspection.size === 0) {
140
+ return { ok: false, reason: `the ${binaryName} target is empty or not a bounded file` };
141
+ }
142
+ }
143
+ catch {
144
+ return { ok: false, reason: `the ${binaryName} launcher could not be inspected safely` };
145
+ }
146
+ return proveVersion(installedBinary, runtime, null);
147
+ }
148
+ //# sourceMappingURL=harness-install-proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-install-proof.js","sourceRoot":"","sources":["../src/harness-install-proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { PinnedVendorCliVersion } from "@claudexor/util";
2
+ import { INSTALLABLE_HARNESSES } from "./harness-command-specs.js";
3
+ export type InstallableHarness = (typeof INSTALLABLE_HARNESSES)[number];
4
+ export declare function isInstallableHarness(value: string): value is InstallableHarness;
5
+ /** Install destinations. `remote` is the historical issue-#89 SSH-host prefix;
6
+ * `local` is the managed toolchain root this host's harness resolution already
7
+ * reads, so an install there is immediately runnable. */
8
+ export declare const HARNESS_INSTALL_TARGETS: readonly ["local", "remote"];
9
+ export type HarnessInstallTarget = (typeof HARNESS_INSTALL_TARGETS)[number];
10
+ export declare function isHarnessInstallTarget(value: string): value is HarnessInstallTarget;
11
+ /** ONE table owns each target's npm prefix and how it is disclosed. */
12
+ export declare const TARGET_LAYOUTS: Record<HarnessInstallTarget, {
13
+ displayRoot: string;
14
+ root(home: string): string;
15
+ }>;
16
+ /** Exact npm pins. Each version ALIASES the harness package's vendor-version
17
+ * SSOT (vendor-cli-version.ts there). For claude/codex that is the version
18
+ * this release's freshness gates verified; the opencode pin is a
19
+ * deterministic install target only — no recorded verification fixture
20
+ * vouches for it (its vendor-cli-version.ts discloses this). Cursor and agy
21
+ * are absent deliberately: they ship no npm artifact (see SCRIPT_INSTALLERS
22
+ * below). */
23
+ export type HarnessInstallVerification = "release_verified" | "deterministic_only" | "human_observed"
24
+ /** A script vendor installed unattended under an explicit local `--yes`:
25
+ * pinned to nothing and watched by nobody, so the receipt carries the exact
26
+ * installer bytes instead of a human's attention. */
27
+ | "unattended_unpinned";
28
+ export declare const NPM_PINS: Partial<Record<InstallableHarness, {
29
+ npmPackage: string;
30
+ /** Launcher names the post-install proof executes, in preference order. */
31
+ binaryNames: readonly string[];
32
+ version: PinnedVendorCliVersion;
33
+ verification: Exclude<HarnessInstallVerification, "human_observed" | "unattended_unpinned">;
34
+ }>>;
35
+ export declare const CURSOR_INSTALL_URL = "https://cursor.com/install";
36
+ /**
37
+ * Google's official Antigravity CLI installer, as published on
38
+ * antigravity.google/docs/cli/install (`curl -fsSL <this url> | bash`, which
39
+ * Claudexor deliberately does NOT do — see the header). Verified end to end on
40
+ * 2026-08-16: the script fetched from this URL installed agy 1.1.13 to
41
+ * `~/.local/bin/agy`, which is the destination disclosed below. The vendor
42
+ * ships one signed Go binary and no npm package, so it takes the same
43
+ * human-observed path as cursor.
44
+ */
45
+ export declare const AGY_INSTALL_URL = "https://antigravity.google/cli/install.sh";
46
+ /** The vendor's Windows installer, from the same documentation page. */
47
+ export declare const AGY_INSTALL_URL_WINDOWS = "https://antigravity.google/cli/install.ps1";
48
+ /** Vendors distributed as a shell installer instead of a pinnable npm
49
+ * artifact. ONE branch serves both entries; the per-harness text below is the
50
+ * only thing that differs, so a third such vendor is a row, not a fork. */
51
+ declare const SCRIPT_INSTALLERS: Record<"agy" | "cursor", {
52
+ url: string;
53
+ windowsUrl?: string;
54
+ installLocation: string;
55
+ pinNote: string;
56
+ /** Launcher the post-install proof resolves and version-probes. */
57
+ binaryName: string;
58
+ }>;
59
+ type ScriptInstaller = (typeof SCRIPT_INSTALLERS)[keyof typeof SCRIPT_INSTALLERS];
60
+ /** Membership is asked of the TABLE, never re-typed: a third script vendor is
61
+ * one row, and cannot be added to the table yet fall through here. */
62
+ export declare function scriptInstaller(harness: InstallableHarness): ScriptInstaller | null;
63
+ export interface HarnessInstallerDisclosure {
64
+ harness: InstallableHarness;
65
+ /** Which prefix this disclosure describes; echoed into every receipt. */
66
+ target: HarnessInstallTarget;
67
+ command: string;
68
+ installLocation: string;
69
+ /** Exact vendor version the command installs; null exactly for the script
70
+ * vendors (cursor, agy), which have no pinnable artifact — disclosed, never
71
+ * faked. */
72
+ pinnedVersion: string | null;
73
+ /** Evidence behind the install target. Package-registry integrity verifies
74
+ * downloaded bytes for every npm pin, but only release_verified means the
75
+ * exact vendor version was exercised by this release's freshness gates. */
76
+ verification: HarnessInstallVerification;
77
+ }
78
+ export declare function harnessInstallerDisclosure(harness: InstallableHarness, target?: HarnessInstallTarget): HarnessInstallerDisclosure;
79
+ export {};
80
+ //# sourceMappingURL=harness-install-recipes.d.ts.map