agent-embassy 2.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/CONTRIBUTING.md +23 -36
  3. package/README.md +123 -222
  4. package/SECURITY.md +72 -93
  5. package/dist/src/errors.d.ts +10 -1
  6. package/dist/src/errors.js +3 -1
  7. package/dist/src/errors.js.map +1 -1
  8. package/dist/src/gateway/claude-helper-protocol.d.ts +8 -11
  9. package/dist/src/gateway/claude-helper-protocol.js +12 -11
  10. package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
  11. package/dist/src/gateway/claude-helper-supervisor.d.ts +1 -5
  12. package/dist/src/gateway/claude-helper-supervisor.js +45 -17
  13. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
  14. package/dist/src/gateway/claude-helper.js +6 -6
  15. package/dist/src/gateway/claude-helper.js.map +1 -1
  16. package/dist/src/gateway/claude-peer.d.ts +0 -3
  17. package/dist/src/gateway/claude-peer.js +7 -19
  18. package/dist/src/gateway/claude-peer.js.map +1 -1
  19. package/dist/src/gateway/cli.d.ts +17 -7
  20. package/dist/src/gateway/cli.js +945 -265
  21. package/dist/src/gateway/cli.js.map +1 -1
  22. package/dist/src/gateway/codex-socket-holder.d.ts +26 -0
  23. package/dist/src/gateway/codex-socket-holder.js +76 -0
  24. package/dist/src/gateway/codex-socket-holder.js.map +1 -0
  25. package/dist/src/gateway/codex-stateless-transport.js +1 -1
  26. package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
  27. package/dist/src/gateway/config.d.ts +1 -10
  28. package/dist/src/gateway/config.js +4 -10
  29. package/dist/src/gateway/config.js.map +1 -1
  30. package/dist/src/gateway/control.d.ts +66 -80
  31. package/dist/src/gateway/control.js +92 -147
  32. package/dist/src/gateway/control.js.map +1 -1
  33. package/dist/src/gateway/federation-nodes.d.ts +29 -2
  34. package/dist/src/gateway/federation-nodes.js +177 -7
  35. package/dist/src/gateway/federation-nodes.js.map +1 -1
  36. package/dist/src/gateway/peer-client.d.ts +4 -3
  37. package/dist/src/gateway/peer-client.js +22 -13
  38. package/dist/src/gateway/peer-client.js.map +1 -1
  39. package/dist/src/gateway/peer-protocol.d.ts +13 -11
  40. package/dist/src/gateway/peer-protocol.js +14 -12
  41. package/dist/src/gateway/peer-protocol.js.map +1 -1
  42. package/dist/src/gateway/provenance-envelope.d.ts +0 -1
  43. package/dist/src/gateway/provenance-envelope.js +4 -19
  44. package/dist/src/gateway/provenance-envelope.js.map +1 -1
  45. package/dist/src/gateway/providers.d.ts +11 -7
  46. package/dist/src/gateway/providers.js +49 -50
  47. package/dist/src/gateway/providers.js.map +1 -1
  48. package/dist/src/gateway/server.d.ts +4 -14
  49. package/dist/src/gateway/server.js +32 -54
  50. package/dist/src/gateway/server.js.map +1 -1
  51. package/dist/src/gateway/service-agent.d.ts +187 -0
  52. package/dist/src/gateway/service-agent.js +758 -0
  53. package/dist/src/gateway/service-agent.js.map +1 -0
  54. package/dist/src/gateway/service.d.ts +119 -38
  55. package/dist/src/gateway/service.js +754 -798
  56. package/dist/src/gateway/service.js.map +1 -1
  57. package/dist/src/gateway/status-view.d.ts +119 -0
  58. package/dist/src/gateway/status-view.js +484 -0
  59. package/dist/src/gateway/status-view.js.map +1 -0
  60. package/dist/src/gateway/store.d.ts +106 -21
  61. package/dist/src/gateway/store.js +463 -537
  62. package/dist/src/gateway/store.js.map +1 -1
  63. package/dist/src/gateway/types.d.ts +64 -102
  64. package/dist/src/gateway/types.js +40 -86
  65. package/dist/src/gateway/types.js.map +1 -1
  66. package/docs/CONFIGURATION.md +174 -45
  67. package/docs/DELIVERY.md +11 -11
  68. package/docs/GATEWAY-ARCHITECTURE.md +292 -384
  69. package/package.json +4 -12
  70. package/skills/embassy-peer/SKILL.md +69 -92
  71. package/skills/embassy-peer/agents/openai.yaml +1 -1
  72. package/README.zh-CN.md +0 -275
  73. package/assets/live-dashboard/app.css +0 -1619
  74. package/assets/vendor/react/LICENSE +0 -21
  75. package/assets/vendor/react/react-dom.production.min.js +0 -267
  76. package/assets/vendor/react/react.production.min.js +0 -31
  77. package/dist/src/gateway/acp-client.d.ts +0 -110
  78. package/dist/src/gateway/acp-client.js +0 -407
  79. package/dist/src/gateway/acp-client.js.map +0 -1
  80. package/dist/src/gateway/acp-provider.d.ts +0 -66
  81. package/dist/src/gateway/acp-provider.js +0 -275
  82. package/dist/src/gateway/acp-provider.js.map +0 -1
  83. package/dist/src/gateway/claude-helper-client.d.ts +0 -2
  84. package/dist/src/gateway/claude-helper-client.js +0 -2
  85. package/dist/src/gateway/claude-helper-client.js.map +0 -1
  86. package/dist/src/gateway/cli-copy.d.ts +0 -8
  87. package/dist/src/gateway/cli-copy.en.d.ts +0 -22
  88. package/dist/src/gateway/cli-copy.en.js +0 -62
  89. package/dist/src/gateway/cli-copy.en.js.map +0 -1
  90. package/dist/src/gateway/cli-copy.js +0 -27
  91. package/dist/src/gateway/cli-copy.js.map +0 -1
  92. package/dist/src/gateway/cli-copy.zh-CN.d.ts +0 -22
  93. package/dist/src/gateway/cli-copy.zh-CN.js +0 -62
  94. package/dist/src/gateway/cli-copy.zh-CN.js.map +0 -1
  95. package/dist/src/gateway/codex-doctor.d.ts +0 -36
  96. package/dist/src/gateway/codex-doctor.js +0 -127
  97. package/dist/src/gateway/codex-doctor.js.map +0 -1
  98. package/dist/src/gateway/dashboard-copy.d.ts +0 -7
  99. package/dist/src/gateway/dashboard-copy.en.d.ts +0 -504
  100. package/dist/src/gateway/dashboard-copy.en.js +0 -505
  101. package/dist/src/gateway/dashboard-copy.en.js.map +0 -1
  102. package/dist/src/gateway/dashboard-copy.js +0 -514
  103. package/dist/src/gateway/dashboard-copy.js.map +0 -1
  104. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +0 -504
  105. package/dist/src/gateway/dashboard-copy.zh-CN.js +0 -505
  106. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +0 -1
  107. package/dist/src/gateway/dashboard-model.d.ts +0 -343
  108. package/dist/src/gateway/dashboard-model.js +0 -1061
  109. package/dist/src/gateway/dashboard-model.js.map +0 -1
  110. package/dist/src/gateway/dashboard.d.ts +0 -20
  111. package/dist/src/gateway/dashboard.js +0 -874
  112. package/dist/src/gateway/dashboard.js.map +0 -1
  113. package/dist/src/gateway/deepseek-detect.d.ts +0 -14
  114. package/dist/src/gateway/deepseek-detect.js +0 -41
  115. package/dist/src/gateway/deepseek-detect.js.map +0 -1
  116. package/dist/src/gateway/live-dashboard-app/app.js +0 -2385
  117. package/dist/src/gateway/live-dashboard-assets.d.ts +0 -10
  118. package/dist/src/gateway/live-dashboard-assets.js +0 -74
  119. package/dist/src/gateway/live-dashboard-assets.js.map +0 -1
  120. package/dist/src/gateway/live-dashboard-command.d.ts +0 -60
  121. package/dist/src/gateway/live-dashboard-command.js +0 -334
  122. package/dist/src/gateway/live-dashboard-command.js.map +0 -1
  123. package/dist/src/gateway/live-dashboard-http.d.ts +0 -39
  124. package/dist/src/gateway/live-dashboard-http.js +0 -383
  125. package/dist/src/gateway/live-dashboard-http.js.map +0 -1
  126. package/dist/src/gateway/live-dashboard-protocol.d.ts +0 -34
  127. package/dist/src/gateway/live-dashboard-protocol.js +0 -114
  128. package/dist/src/gateway/live-dashboard-protocol.js.map +0 -1
  129. package/dist/src/gateway/live-dashboard-server.d.ts +0 -33
  130. package/dist/src/gateway/live-dashboard-server.js +0 -144
  131. package/dist/src/gateway/live-dashboard-server.js.map +0 -1
  132. package/dist/src/gateway/live-dashboard-stream.d.ts +0 -46
  133. package/dist/src/gateway/live-dashboard-stream.js +0 -234
  134. package/dist/src/gateway/live-dashboard-stream.js.map +0 -1
  135. package/dist/src/gateway/live-dashboard.d.ts +0 -28
  136. package/dist/src/gateway/live-dashboard.js +0 -154
  137. package/dist/src/gateway/live-dashboard.js.map +0 -1
  138. package/dist/src/gateway/locale.d.ts +0 -4
  139. package/dist/src/gateway/locale.js +0 -10
  140. package/dist/src/gateway/locale.js.map +0 -1
  141. package/dist/src/gateway/progress-watch-machine.d.ts +0 -45
  142. package/dist/src/gateway/progress-watch-machine.js +0 -70
  143. package/dist/src/gateway/progress-watch-machine.js.map +0 -1
  144. package/docs/CONFIGURATION.zh-CN.md +0 -97
  145. package/docs/DASHBOARD.md +0 -98
  146. package/docs/DASHBOARD.zh-CN.md +0 -49
  147. package/docs/DELIVERY.zh-CN.md +0 -55
@@ -1,31 +0,0 @@
1
- /**
2
- * @license React
3
- * react.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */
10
- (function(){'use strict';(function(c,x){"object"===typeof exports&&"undefined"!==typeof module?x(exports):"function"===typeof define&&define.amd?define(["exports"],x):(c=c||self,x(c.React={}))})(this,function(c){function x(a){if(null===a||"object"!==typeof a)return null;a=V&&a[V]||a["@@iterator"];return"function"===typeof a?a:null}function w(a,b,e){this.props=a;this.context=b;this.refs=W;this.updater=e||X}function Y(){}function K(a,b,e){this.props=a;this.context=b;this.refs=W;this.updater=e||X}function Z(a,b,
11
- e){var m,d={},c=null,h=null;if(null!=b)for(m in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(c=""+b.key),b)aa.call(b,m)&&!ba.hasOwnProperty(m)&&(d[m]=b[m]);var l=arguments.length-2;if(1===l)d.children=e;else if(1<l){for(var f=Array(l),k=0;k<l;k++)f[k]=arguments[k+2];d.children=f}if(a&&a.defaultProps)for(m in l=a.defaultProps,l)void 0===d[m]&&(d[m]=l[m]);return{$$typeof:y,type:a,key:c,ref:h,props:d,_owner:L.current}}function oa(a,b){return{$$typeof:y,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}
12
- function M(a){return"object"===typeof a&&null!==a&&a.$$typeof===y}function pa(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}function N(a,b){return"object"===typeof a&&null!==a&&null!=a.key?pa(""+a.key):b.toString(36)}function B(a,b,e,m,d){var c=typeof a;if("undefined"===c||"boolean"===c)a=null;var h=!1;if(null===a)h=!0;else switch(c){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case y:case qa:h=!0}}if(h)return h=a,d=d(h),a=""===m?"."+
13
- N(h,0):m,ca(d)?(e="",null!=a&&(e=a.replace(da,"$&/")+"/"),B(d,b,e,"",function(a){return a})):null!=d&&(M(d)&&(d=oa(d,e+(!d.key||h&&h.key===d.key?"":(""+d.key).replace(da,"$&/")+"/")+a)),b.push(d)),1;h=0;m=""===m?".":m+":";if(ca(a))for(var l=0;l<a.length;l++){c=a[l];var f=m+N(c,l);h+=B(c,b,e,f,d)}else if(f=x(a),"function"===typeof f)for(a=f.call(a),l=0;!(c=a.next()).done;)c=c.value,f=m+N(c,l++),h+=B(c,b,e,f,d);else if("object"===c)throw b=String(a),Error("Objects are not valid as a React child (found: "+
14
- ("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}function C(a,b,e){if(null==a)return a;var c=[],d=0;B(a,c,"","",function(a){return b.call(e,a,d++)});return c}function ra(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=
15
- 0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}function O(a,b){var e=a.length;a.push(b);a:for(;0<e;){var c=e-1>>>1,d=a[c];if(0<D(d,b))a[c]=b,a[e]=d,e=c;else break a}}function p(a){return 0===a.length?null:a[0]}function E(a){if(0===a.length)return null;var b=a[0],e=a.pop();if(e!==b){a[0]=e;a:for(var c=0,d=a.length,k=d>>>1;c<k;){var h=2*(c+1)-1,l=a[h],f=h+1,g=a[f];if(0>D(l,e))f<d&&0>D(g,l)?(a[c]=g,a[f]=e,c=f):(a[c]=l,a[h]=e,c=h);else if(f<d&&0>D(g,e))a[c]=g,a[f]=e,c=f;else break a}}return b}
16
- function D(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}function P(a){for(var b=p(r);null!==b;){if(null===b.callback)E(r);else if(b.startTime<=a)E(r),b.sortIndex=b.expirationTime,O(q,b);else break;b=p(r)}}function Q(a){z=!1;P(a);if(!u)if(null!==p(q))u=!0,R(S);else{var b=p(r);null!==b&&T(Q,b.startTime-a)}}function S(a,b){u=!1;z&&(z=!1,ea(A),A=-1);F=!0;var c=k;try{P(b);for(n=p(q);null!==n&&(!(n.expirationTime>b)||a&&!fa());){var m=n.callback;if("function"===typeof m){n.callback=null;
17
- k=n.priorityLevel;var d=m(n.expirationTime<=b);b=v();"function"===typeof d?n.callback=d:n===p(q)&&E(q);P(b)}else E(q);n=p(q)}if(null!==n)var g=!0;else{var h=p(r);null!==h&&T(Q,h.startTime-b);g=!1}return g}finally{n=null,k=c,F=!1}}function fa(){return v()-ha<ia?!1:!0}function R(a){G=a;H||(H=!0,I())}function T(a,b){A=ja(function(){a(v())},b)}function ka(a){throw Error("act(...) is not supported in production builds of React.");}var y=Symbol.for("react.element"),qa=Symbol.for("react.portal"),sa=Symbol.for("react.fragment"),
18
- ta=Symbol.for("react.strict_mode"),ua=Symbol.for("react.profiler"),va=Symbol.for("react.provider"),wa=Symbol.for("react.context"),xa=Symbol.for("react.forward_ref"),ya=Symbol.for("react.suspense"),za=Symbol.for("react.memo"),Aa=Symbol.for("react.lazy"),V=Symbol.iterator,X={isMounted:function(a){return!1},enqueueForceUpdate:function(a,b,c){},enqueueReplaceState:function(a,b,c,m){},enqueueSetState:function(a,b,c,m){}},la=Object.assign,W={};w.prototype.isReactComponent={};w.prototype.setState=function(a,
19
- b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};w.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};Y.prototype=w.prototype;var t=K.prototype=new Y;t.constructor=K;la(t,w.prototype);t.isPureReactComponent=!0;var ca=Array.isArray,aa=Object.prototype.hasOwnProperty,L={current:null},
20
- ba={key:!0,ref:!0,__self:!0,__source:!0},da=/\/+/g,g={current:null},J={transition:null};if("object"===typeof performance&&"function"===typeof performance.now){var Ba=performance;var v=function(){return Ba.now()}}else{var ma=Date,Ca=ma.now();v=function(){return ma.now()-Ca}}var q=[],r=[],Da=1,n=null,k=3,F=!1,u=!1,z=!1,ja="function"===typeof setTimeout?setTimeout:null,ea="function"===typeof clearTimeout?clearTimeout:null,na="undefined"!==typeof setImmediate?setImmediate:null;"undefined"!==typeof navigator&&
21
- void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var H=!1,G=null,A=-1,ia=5,ha=-1,U=function(){if(null!==G){var a=v();ha=a;var b=!0;try{b=G(!0,a)}finally{b?I():(H=!1,G=null)}}else H=!1};if("function"===typeof na)var I=function(){na(U)};else if("undefined"!==typeof MessageChannel){t=new MessageChannel;var Ea=t.port2;t.port1.onmessage=U;I=function(){Ea.postMessage(null)}}else I=function(){ja(U,0)};t={ReactCurrentDispatcher:g,
22
- ReactCurrentOwner:L,ReactCurrentBatchConfig:J,Scheduler:{__proto__:null,unstable_ImmediatePriority:1,unstable_UserBlockingPriority:2,unstable_NormalPriority:3,unstable_IdlePriority:5,unstable_LowPriority:4,unstable_runWithPriority:function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=k;k=a;try{return b()}finally{k=c}},unstable_next:function(a){switch(k){case 1:case 2:case 3:var b=3;break;default:b=k}var c=k;k=b;try{return a()}finally{k=c}},unstable_scheduleCallback:function(a,
23
- b,c){var e=v();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?e+c:e):c=e;switch(a){case 1:var d=-1;break;case 2:d=250;break;case 5:d=1073741823;break;case 4:d=1E4;break;default:d=5E3}d=c+d;a={id:Da++,callback:b,priorityLevel:a,startTime:c,expirationTime:d,sortIndex:-1};c>e?(a.sortIndex=c,O(r,a),null===p(q)&&a===p(r)&&(z?(ea(A),A=-1):z=!0,T(Q,c-e))):(a.sortIndex=d,O(q,a),u||F||(u=!0,R(S)));return a},unstable_cancelCallback:function(a){a.callback=null},unstable_wrapCallback:function(a){var b=
24
- k;return function(){var c=k;k=b;try{return a.apply(this,arguments)}finally{k=c}}},unstable_getCurrentPriorityLevel:function(){return k},unstable_shouldYield:fa,unstable_requestPaint:function(){},unstable_continueExecution:function(){u||F||(u=!0,R(S))},unstable_pauseExecution:function(){},unstable_getFirstCallbackNode:function(){return p(q)},get unstable_now(){return v},unstable_forceFrameRate:function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):
25
- ia=0<a?Math.floor(1E3/a):5},unstable_Profiling:null}};c.Children={map:C,forEach:function(a,b,c){C(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;C(a,function(){b++});return b},toArray:function(a){return C(a,function(a){return a})||[]},only:function(a){if(!M(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};c.Component=w;c.Fragment=sa;c.Profiler=ua;c.PureComponent=K;c.StrictMode=ta;c.Suspense=ya;c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=
26
- t;c.act=ka;c.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var e=la({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=L.current);void 0!==b.key&&(d=""+b.key);if(a.type&&a.type.defaultProps)var l=a.type.defaultProps;for(f in b)aa.call(b,f)&&!ba.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==l?l[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){l=
27
- Array(f);for(var g=0;g<f;g++)l[g]=arguments[g+2];e.children=l}return{$$typeof:y,type:a.type,key:d,ref:k,props:e,_owner:h}};c.createContext=function(a){a={$$typeof:wa,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:va,_context:a};return a.Consumer=a};c.createElement=Z;c.createFactory=function(a){var b=Z.bind(null,a);b.type=a;return b};c.createRef=function(){return{current:null}};c.forwardRef=function(a){return{$$typeof:xa,
28
- render:a}};c.isValidElement=M;c.lazy=function(a){return{$$typeof:Aa,_payload:{_status:-1,_result:a},_init:ra}};c.memo=function(a,b){return{$$typeof:za,type:a,compare:void 0===b?null:b}};c.startTransition=function(a,b){b=J.transition;J.transition={};try{a()}finally{J.transition=b}};c.unstable_act=ka;c.useCallback=function(a,b){return g.current.useCallback(a,b)};c.useContext=function(a){return g.current.useContext(a)};c.useDebugValue=function(a,b){};c.useDeferredValue=function(a){return g.current.useDeferredValue(a)};
29
- c.useEffect=function(a,b){return g.current.useEffect(a,b)};c.useId=function(){return g.current.useId()};c.useImperativeHandle=function(a,b,c){return g.current.useImperativeHandle(a,b,c)};c.useInsertionEffect=function(a,b){return g.current.useInsertionEffect(a,b)};c.useLayoutEffect=function(a,b){return g.current.useLayoutEffect(a,b)};c.useMemo=function(a,b){return g.current.useMemo(a,b)};c.useReducer=function(a,b,c){return g.current.useReducer(a,b,c)};c.useRef=function(a){return g.current.useRef(a)};
30
- c.useState=function(a){return g.current.useState(a)};c.useSyncExternalStore=function(a,b,c){return g.current.useSyncExternalStore(a,b,c)};c.useTransition=function(){return g.current.useTransition()};c.version="18.3.1"});
31
- })();
@@ -1,110 +0,0 @@
1
- import { type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from "node:child_process";
2
- export declare const ACP_MAX_REPLY_BYTES: number;
3
- type JsonObject = Record<string, unknown>;
4
- type AcpChild = Pick<ChildProcessWithoutNullStreams, "exitCode" | "kill" | "off" | "once" | "signalCode" | "stderr" | "stdin" | "stdout">;
5
- export type AcpSpawn = (command: string, args: readonly string[], options: SpawnOptionsWithoutStdio) => AcpChild;
6
- type AcpLaunchCommon = Readonly<{
7
- args?: readonly string[];
8
- cwd?: string;
9
- }>;
10
- export type AcpLaunchSpec = (AcpLaunchCommon & Readonly<{
11
- kind: "npx";
12
- package: string;
13
- }>) | (AcpLaunchCommon & Readonly<{
14
- kind: "binary";
15
- path: string;
16
- /** Registry metadata; artifact installation/verification is not this client's job. */
17
- sha256: string;
18
- }>) | (AcpLaunchCommon & Readonly<{
19
- kind: "local-checkout";
20
- command: string;
21
- }>);
22
- export type AcpAgentCapabilities = Readonly<JsonObject>;
23
- export type AcpConnectionInfo = Readonly<{
24
- protocolVersion: number;
25
- agentCapabilities: AcpAgentCapabilities;
26
- authMethods: readonly unknown[];
27
- }>;
28
- export type AcpRpcErrorDetail = Readonly<{
29
- code: number;
30
- message: string;
31
- data?: unknown;
32
- }>;
33
- export type AcpPromptReceipt = Readonly<{
34
- terminalState: "delivered";
35
- stopReason: "end_turn";
36
- text: string;
37
- textTruncated: boolean;
38
- }> | Readonly<{
39
- terminalState: "failed";
40
- stopReason: "max_tokens" | "max_turn_requests" | "refusal";
41
- text: string;
42
- textTruncated: boolean;
43
- }> | Readonly<{
44
- terminalState: "cancelled";
45
- stopReason: "cancelled";
46
- text: string;
47
- textTruncated: boolean;
48
- }> | Readonly<{
49
- terminalState: "failed";
50
- error: AcpRpcErrorDetail;
51
- reportOnly: boolean;
52
- text: string;
53
- textTruncated: boolean;
54
- }> | Readonly<{
55
- /** Process loss cannot prove whether the outstanding prompt completed. */
56
- terminalState: "unknown";
57
- text: string;
58
- textTruncated: boolean;
59
- }>;
60
- export type AcpPreparedPrompt = Readonly<{
61
- bodyBytes: number;
62
- frameBytes: number;
63
- sha256: string;
64
- /** Release a prepared-but-unperformed prompt exactly once. */
65
- cancel: () => void;
66
- /** Enqueue the exact pre-serialized frame exactly once. */
67
- perform: () => Promise<AcpPromptReceipt>;
68
- }>;
69
- export declare class AcpRequestError extends Error {
70
- readonly detail: AcpRpcErrorDetail;
71
- constructor(detail: AcpRpcErrorDetail);
72
- }
73
- export declare class AcpClient {
74
- private readonly child;
75
- private readonly pending;
76
- private readonly disabledMethods;
77
- private readonly activePrompts;
78
- private readonly lines;
79
- private nextRequestId;
80
- private writeChain;
81
- private exited;
82
- private infoValue;
83
- private constructor();
84
- static spawn(launch: AcpLaunchSpec, options?: Readonly<{
85
- spawn?: AcpSpawn;
86
- }>): Promise<AcpClient>;
87
- get connectionInfo(): AcpConnectionInfo;
88
- newSession(cwd: string, mcpServers?: readonly unknown[]): Promise<Readonly<{
89
- sessionId: string;
90
- }>>;
91
- prompt(sessionId: string, text: string): Promise<AcpPromptReceipt>;
92
- preparePrompt(sessionId: string, text: string): AcpPreparedPrompt;
93
- cancel(sessionId: string): Promise<void>;
94
- close(): void;
95
- private performPreparedPrompt;
96
- private initialize;
97
- private request;
98
- private requestSerialized;
99
- private notify;
100
- private write;
101
- private writeSerialized;
102
- private handleLine;
103
- private handleInbound;
104
- private consumeSessionUpdate;
105
- private handleProcessExit;
106
- }
107
- export declare function spawnAcpClient(launch: AcpLaunchSpec, options?: Readonly<{
108
- spawn?: AcpSpawn;
109
- }>): Promise<AcpClient>;
110
- export {};
@@ -1,407 +0,0 @@
1
- import { spawn as nodeSpawn, } from "node:child_process";
2
- import { Buffer } from "node:buffer";
3
- import { createHash } from "node:crypto";
4
- import readline from "node:readline";
5
- const ACP_PROTOCOL_VERSION = 1;
6
- const METHOD_NOT_FOUND = -32601;
7
- export const ACP_MAX_REPLY_BYTES = 64 * 1024;
8
- export class AcpRequestError extends Error {
9
- detail;
10
- constructor(detail) {
11
- super(detail.message);
12
- this.name = "AcpRequestError";
13
- this.detail = detail;
14
- }
15
- }
16
- class AcpProcessExitedError extends Error {
17
- constructor() {
18
- super("ACP subprocess exited");
19
- this.name = "AcpProcessExitedError";
20
- }
21
- }
22
- export class AcpClient {
23
- child;
24
- pending = new Map();
25
- disabledMethods = new Map();
26
- activePrompts = new Map();
27
- lines;
28
- nextRequestId = 1;
29
- writeChain = Promise.resolve();
30
- exited = false;
31
- infoValue;
32
- constructor(child) {
33
- this.child = child;
34
- child.stderr.resume();
35
- this.lines = readline.createInterface({ input: child.stdout });
36
- this.lines.on("line", (line) => this.handleLine(line));
37
- child.once("error", () => this.handleProcessExit());
38
- child.once("exit", () => this.handleProcessExit());
39
- }
40
- static async spawn(launch, options = {}) {
41
- const { command, args } = resolveLaunch(launch);
42
- let child;
43
- try {
44
- child = (options.spawn ?? nodeSpawn)(command, args, {
45
- ...(launch.cwd === undefined ? {} : { cwd: launch.cwd }),
46
- shell: false,
47
- stdio: ["pipe", "pipe", "pipe"],
48
- });
49
- }
50
- catch {
51
- throw new AcpProcessExitedError();
52
- }
53
- const client = new AcpClient(child);
54
- try {
55
- await client.initialize();
56
- return client;
57
- }
58
- catch (error) {
59
- client.close();
60
- throw error;
61
- }
62
- }
63
- get connectionInfo() {
64
- return this.infoValue;
65
- }
66
- async newSession(cwd, mcpServers = []) {
67
- const result = asObject(await this.request("session/new", { cwd, mcpServers: [...mcpServers] }), "session/new");
68
- if (typeof result.sessionId !== "string" || result.sessionId.length === 0) {
69
- throw new Error("ACP session/new returned an invalid sessionId");
70
- }
71
- return { sessionId: result.sessionId };
72
- }
73
- async prompt(sessionId, text) {
74
- try {
75
- return await this.preparePrompt(sessionId, text).perform();
76
- }
77
- catch (error) {
78
- if (error instanceof AcpRequestError) {
79
- return {
80
- terminalState: "failed",
81
- error: error.detail,
82
- reportOnly: error.detail.code === -32000,
83
- text: "",
84
- textTruncated: false,
85
- };
86
- }
87
- throw error;
88
- }
89
- }
90
- preparePrompt(sessionId, text) {
91
- const disabled = this.disabledMethods.get("session/prompt");
92
- if (disabled !== undefined)
93
- throw new AcpRequestError(disabled);
94
- if (this.activePrompts.has(sessionId)) {
95
- throw new Error("ACP session already has an outstanding prompt");
96
- }
97
- if (this.exited ||
98
- typeof sessionId !== "string" ||
99
- sessionId.length === 0 ||
100
- typeof text !== "string" ||
101
- text.length === 0) {
102
- throw new Error("ACP prompt preparation is unavailable");
103
- }
104
- const active = { bytes: 0, text: "", truncated: false };
105
- this.activePrompts.set(sessionId, active);
106
- const id = this.nextRequestId++;
107
- const serialized = `${JSON.stringify({
108
- jsonrpc: "2.0",
109
- id,
110
- method: "session/prompt",
111
- params: { sessionId, prompt: [{ type: "text", text }] },
112
- })}\n`;
113
- let disposition = "prepared";
114
- const rejectReuse = () => {
115
- throw new Error("ACP prepared prompt was already consumed");
116
- };
117
- return Object.freeze({
118
- bodyBytes: Buffer.byteLength(text, "utf8"),
119
- frameBytes: Buffer.byteLength(serialized, "utf8"),
120
- sha256: createHash("sha256").update(serialized).digest("hex"),
121
- cancel: () => {
122
- if (disposition !== "prepared")
123
- return rejectReuse();
124
- disposition = "cancelled";
125
- this.activePrompts.delete(sessionId);
126
- },
127
- perform: () => {
128
- if (disposition !== "prepared") {
129
- return Promise.reject(new Error("ACP prepared prompt was already consumed"));
130
- }
131
- disposition = "performed";
132
- return this.performPreparedPrompt(id, sessionId, active, serialized);
133
- },
134
- });
135
- }
136
- cancel(sessionId) {
137
- return this.notify("session/cancel", { sessionId });
138
- }
139
- close() {
140
- if (this.exited)
141
- return;
142
- this.handleProcessExit();
143
- this.child.kill();
144
- }
145
- async performPreparedPrompt(id, sessionId, active, serialized) {
146
- try {
147
- const result = asObject(await this.requestSerialized(id, "session/prompt", serialized), "session/prompt");
148
- return mapPromptResult(result.stopReason, active);
149
- }
150
- catch (error) {
151
- if (error instanceof AcpProcessExitedError) {
152
- return {
153
- terminalState: "unknown",
154
- text: active.text,
155
- textTruncated: active.truncated,
156
- };
157
- }
158
- if (error instanceof AcpRequestError) {
159
- return {
160
- terminalState: "failed",
161
- error: error.detail,
162
- reportOnly: error.detail.code === -32000,
163
- text: active.text,
164
- textTruncated: active.truncated,
165
- };
166
- }
167
- throw error;
168
- }
169
- finally {
170
- this.activePrompts.delete(sessionId);
171
- }
172
- }
173
- async initialize() {
174
- const result = asObject(await this.request("initialize", {
175
- protocolVersion: ACP_PROTOCOL_VERSION,
176
- clientCapabilities: {
177
- fs: { readTextFile: false, writeTextFile: false },
178
- terminal: false,
179
- },
180
- }), "initialize");
181
- if (!Number.isInteger(result.protocolVersion)) {
182
- throw new Error("ACP initialize returned an invalid protocolVersion");
183
- }
184
- if (result.protocolVersion !== ACP_PROTOCOL_VERSION) {
185
- throw new Error(`ACP protocol version mismatch: client supports ${ACP_PROTOCOL_VERSION}, agent selected ${String(result.protocolVersion)}`);
186
- }
187
- const agentCapabilities = result.agentCapabilities === undefined
188
- ? {}
189
- : asObject(result.agentCapabilities, "initialize.agentCapabilities");
190
- const authMethods = Array.isArray(result.authMethods)
191
- ? [...result.authMethods]
192
- : [];
193
- this.infoValue = Object.freeze({
194
- protocolVersion: result.protocolVersion,
195
- agentCapabilities: Object.freeze({ ...agentCapabilities }),
196
- authMethods: Object.freeze(authMethods),
197
- });
198
- }
199
- request(method, params) {
200
- const disabled = this.disabledMethods.get(method);
201
- if (disabled)
202
- return Promise.reject(new AcpRequestError(disabled));
203
- if (this.exited)
204
- return Promise.reject(new AcpProcessExitedError());
205
- const id = this.nextRequestId++;
206
- return new Promise((resolve, reject) => {
207
- this.pending.set(id, { method, resolve, reject });
208
- void this.write({ jsonrpc: "2.0", id, method, params }).catch((error) => {
209
- this.pending.delete(id);
210
- reject(error);
211
- });
212
- });
213
- }
214
- requestSerialized(id, method, serialized) {
215
- if (this.exited)
216
- return Promise.reject(new AcpProcessExitedError());
217
- return new Promise((resolve, reject) => {
218
- this.pending.set(id, { method, resolve, reject });
219
- void this.writeSerialized(serialized).catch((error) => {
220
- this.pending.delete(id);
221
- reject(error);
222
- });
223
- });
224
- }
225
- notify(method, params) {
226
- return this.write({ jsonrpc: "2.0", method, params });
227
- }
228
- write(message) {
229
- return this.writeSerialized(`${JSON.stringify(message)}\n`);
230
- }
231
- writeSerialized(serialized) {
232
- if (this.exited)
233
- return Promise.reject(new AcpProcessExitedError());
234
- const operation = this.writeChain.then(() => new Promise((resolve, reject) => {
235
- if (this.exited) {
236
- reject(new AcpProcessExitedError());
237
- return;
238
- }
239
- this.child.stdin.write(serialized, (error) => {
240
- if (error) {
241
- this.handleProcessExit();
242
- reject(new AcpProcessExitedError());
243
- }
244
- else
245
- resolve();
246
- });
247
- }));
248
- this.writeChain = operation.catch(() => undefined);
249
- return operation;
250
- }
251
- handleLine(line) {
252
- let message;
253
- try {
254
- message = JSON.parse(line);
255
- }
256
- catch {
257
- return;
258
- }
259
- if (!isObject(message))
260
- return;
261
- if (typeof message.method === "string") {
262
- this.handleInbound(message);
263
- return;
264
- }
265
- if ((typeof message.id !== "string" && typeof message.id !== "number") ||
266
- (!Object.hasOwn(message, "result") && !Object.hasOwn(message, "error"))) {
267
- return;
268
- }
269
- const pending = this.pending.get(message.id);
270
- if (!pending)
271
- return;
272
- this.pending.delete(message.id);
273
- if (Object.hasOwn(message, "error")) {
274
- const detail = rpcErrorDetail(message.error);
275
- if (detail.code === METHOD_NOT_FOUND) {
276
- this.disabledMethods.set(pending.method, detail);
277
- }
278
- pending.reject(new AcpRequestError(detail));
279
- }
280
- else {
281
- pending.resolve(message.result);
282
- }
283
- }
284
- handleInbound(message) {
285
- const hasId = typeof message.id === "string" || typeof message.id === "number";
286
- if (message.method === "session/update" && !hasId) {
287
- this.consumeSessionUpdate(message.params);
288
- return;
289
- }
290
- if (message.method === "session/request_permission" && hasId) {
291
- void this.write({
292
- jsonrpc: "2.0",
293
- id: message.id,
294
- result: { outcome: { outcome: "cancelled" } },
295
- }).catch(() => undefined);
296
- return;
297
- }
298
- if (hasId) {
299
- void this.write({
300
- jsonrpc: "2.0",
301
- id: message.id,
302
- error: { code: METHOD_NOT_FOUND, message: "Method not found" },
303
- }).catch(() => undefined);
304
- }
305
- }
306
- consumeSessionUpdate(params) {
307
- if (!isObject(params) || typeof params.sessionId !== "string")
308
- return;
309
- const update = params.update;
310
- if (!isObject(update) ||
311
- update.sessionUpdate !== "agent_message_chunk" ||
312
- !isObject(update.content) ||
313
- update.content.type !== "text" ||
314
- typeof update.content.text !== "string") {
315
- return;
316
- }
317
- const active = this.activePrompts.get(params.sessionId);
318
- if (active)
319
- appendPromptText(active, update.content.text);
320
- }
321
- handleProcessExit() {
322
- if (this.exited)
323
- return;
324
- this.exited = true;
325
- this.lines.close();
326
- const error = new AcpProcessExitedError();
327
- for (const pending of this.pending.values())
328
- pending.reject(error);
329
- this.pending.clear();
330
- this.activePrompts.clear();
331
- }
332
- }
333
- function resolveLaunch(launch) {
334
- const args = launch.args ?? [];
335
- if (launch.kind === "npx") {
336
- return { command: "npx", args: ["--yes", launch.package, ...args] };
337
- }
338
- if (launch.kind === "binary") {
339
- return { command: launch.path, args };
340
- }
341
- return { command: launch.command, args };
342
- }
343
- function mapPromptResult(stopReason, active) {
344
- const textResult = {
345
- text: active.text,
346
- textTruncated: active.truncated,
347
- };
348
- if (stopReason === "end_turn") {
349
- return { terminalState: "delivered", stopReason, ...textResult };
350
- }
351
- if (stopReason === "max_tokens" ||
352
- stopReason === "max_turn_requests" ||
353
- stopReason === "refusal") {
354
- return { terminalState: "failed", stopReason, ...textResult };
355
- }
356
- if (stopReason === "cancelled") {
357
- return { terminalState: "cancelled", stopReason, ...textResult };
358
- }
359
- throw new AcpRequestError({
360
- code: -32603,
361
- message: "ACP session/prompt returned an invalid stopReason",
362
- });
363
- }
364
- function appendPromptText(active, text) {
365
- if (active.truncated)
366
- return;
367
- const bytes = Buffer.from(text, "utf8");
368
- const remaining = ACP_MAX_REPLY_BYTES - active.bytes;
369
- if (bytes.length <= remaining) {
370
- active.text += text;
371
- active.bytes += bytes.length;
372
- return;
373
- }
374
- let end = remaining;
375
- while (end > 0 && (bytes[end] & 0xc0) === 0x80)
376
- end--;
377
- active.text += bytes.subarray(0, end).toString("utf8");
378
- active.bytes += end;
379
- active.truncated = true;
380
- }
381
- function rpcErrorDetail(value) {
382
- if (!isObject(value) || typeof value.code !== "number" ||
383
- typeof value.message !== "string") {
384
- return { code: -32603, message: "Invalid JSON-RPC error response" };
385
- }
386
- return {
387
- code: value.code,
388
- message: value.message,
389
- ...(Object.hasOwn(value, "data") ? { data: value.data } : {}),
390
- };
391
- }
392
- function asObject(value, method) {
393
- if (!isObject(value)) {
394
- throw new AcpRequestError({
395
- code: -32603,
396
- message: `ACP ${method} returned an invalid response`,
397
- });
398
- }
399
- return value;
400
- }
401
- function isObject(value) {
402
- return typeof value === "object" && value !== null && !Array.isArray(value);
403
- }
404
- export function spawnAcpClient(launch, options = {}) {
405
- return AcpClient.spawn(launch, options);
406
- }
407
- //# sourceMappingURL=acp-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../../src/gateway/acp-client.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import { type AcpClient, type AcpLaunchSpec } from "./acp-client.js";
2
- import type { GatewayAdapterCallbacks, GatewayAdapterDispatchInput, GatewayAdapterDispatchResult, GatewayProviderAdapter } from "./service.js";
3
- import type { GatewayProvider } from "./types.js";
4
- type AcpOwnedProvider = Extract<GatewayProvider, "deepseek" | "grok">;
5
- type Client = Pick<AcpClient, "close" | "newSession" | "preparePrompt">;
6
- export type AcpGatewayProviderOptions = Readonly<{
7
- provider: AcpOwnedProvider;
8
- alias: string;
9
- hostId: string;
10
- launch?: AcpLaunchSpec;
11
- unavailableCode?: string;
12
- workspace?: string;
13
- spawnClient?: (launch: AcpLaunchSpec) => Promise<Client>;
14
- now?: () => number;
15
- }>;
16
- export declare class AcpGatewayProvider implements GatewayProviderAdapter {
17
- private readonly options;
18
- readonly identity: Readonly<{
19
- provider: AcpOwnedProvider;
20
- hostId: string;
21
- }>;
22
- readonly protocol = "acp";
23
- readonly protocolVersion = "1";
24
- private readonly routeHandle;
25
- private readonly spawnClient;
26
- private readonly now;
27
- private callbacks;
28
- private client;
29
- private sessionId;
30
- private retryAt;
31
- private failures;
32
- private registrationId;
33
- private closed;
34
- constructor(options: AcpGatewayProviderOptions);
35
- initialize(callbacks: GatewayAdapterCallbacks): Promise<{
36
- ownedRoute: {
37
- alias: string;
38
- routeHandle: string;
39
- state: "idle";
40
- };
41
- safeErrorCode?: string;
42
- health: "healthy" | "degraded";
43
- }>;
44
- selectRoute(input: {
45
- alias: string;
46
- routeHandle: string;
47
- }): Promise<{
48
- routeHandle: string;
49
- state: "idle";
50
- }>;
51
- observeLogicalRoute(input: {
52
- alias: string;
53
- routeHandle: string;
54
- registrationId: string;
55
- }): void;
56
- forgetLogicalRoute(registrationId: string): void;
57
- dispatch(input: GatewayAdapterDispatchInput): Promise<GatewayAdapterDispatchResult>;
58
- close(): Promise<void>;
59
- private connect;
60
- private markStale;
61
- private dropClient;
62
- private resetRegistrationClient;
63
- private emitState;
64
- }
65
- export declare const createAcpGatewayProvider: (options: AcpGatewayProviderOptions) => GatewayProviderAdapter;
66
- export {};