specrails-desktop 2.27.0 → 2.28.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.
- package/client/dist/assets/{ActivityFeedPage-BlkNVXCv.js → ActivityFeedPage-DcMmDAP3.js} +1 -1
- package/client/dist/assets/AgentBrowserCapture-CZ3oc1UL.js +1 -0
- package/client/dist/assets/AgentIntegrationsModal-DkqooCFn.js +1 -0
- package/client/dist/assets/{AgentModeCodePane-BUR_QxqR.js → AgentModeCodePane-CM77ljte.js} +2 -2
- package/client/dist/assets/{AgentModeJobsPane-CnRXelns.js → AgentModeJobsPane-DbZzogbi.js} +1 -1
- package/client/dist/assets/AgentsPage-BZIml7eL.js +86 -0
- package/client/dist/assets/{AnalyticsPage-C_eT3I3i.js → AnalyticsPage-B4qflNxi.js} +1 -1
- package/client/dist/assets/{BarChart-DuzYxiJ6.js → BarChart-Ckstq9fl.js} +1 -1
- package/client/dist/assets/CodePage-DFZXLbI1.js +2 -0
- package/client/dist/assets/{DesktopAnalyticsPage-BSeBkF2n.js → DesktopAnalyticsPage-DbgMa8OO.js} +1 -1
- package/client/dist/assets/{DocsDialog-CGzqDyN3.js → DocsDialog-BQc9Kwev.js} +2 -2
- package/client/dist/assets/DocsPage-OsV44ECy.js +11 -0
- package/client/dist/assets/{ExportDropdown-IehskH-7.js → ExportDropdown-a43XHO3Y.js} +1 -1
- package/client/dist/assets/IntegrationsPage-C3E8hZhB.js +1 -0
- package/client/dist/assets/InteractiveJobComposer-zj8SrOAl.js +19 -0
- package/client/dist/assets/JobDetailModal-Cm6ZeVoh.js +1 -0
- package/client/dist/assets/JobDetailPage-DN67LsdX.js +1 -0
- package/client/dist/assets/JobsPage-DF9wKGbw.js +1 -0
- package/client/dist/assets/LoopBuilderPage-RJ6GGjli.js +7 -0
- package/client/dist/assets/{LoopPreviewModal-BNUQ9iL8.js → LoopPreviewModal-B2wmifF6.js} +1 -1
- package/client/dist/assets/LoopsPage-DdlvH-dJ.js +1 -0
- package/client/dist/assets/PluginsPage-9DI0a6jI.js +2 -0
- package/client/dist/assets/ProjectSettingsDialog-dgy5hqPd.js +1 -0
- package/client/dist/assets/{TemplatePreviewModal-C6mndL8D.js → TemplatePreviewModal-CERf1IYB.js} +1 -1
- package/client/dist/assets/agent-BRJCESkc2.js +1 -0
- package/client/dist/assets/agent-BuYz6fJd.js +1 -0
- package/client/dist/assets/agent-CxnRzL6Z.js +1 -0
- package/client/dist/assets/agent-D4JAuEGN2.js +1 -0
- package/client/dist/assets/agent-DNQlI8EN.js +1 -0
- package/client/dist/assets/agent-DyzUH89R.js +1 -0
- package/client/dist/assets/agent-MaTxBlg5.js +1 -0
- package/client/dist/assets/agent-ostmMYNz2.js +1 -0
- package/client/dist/assets/{brain-Dia32foa.js → brain-BPbhM1Jx.js} +1 -1
- package/client/dist/assets/{dist-js-D_4k5prK.js → dist-js-Byjcju1W.js} +1 -1
- package/client/dist/assets/{dist-js-DN7Pxudf.js → dist-js-Dh-9lbLD.js} +1 -1
- package/client/dist/assets/index-89SuhD4Y.js +158 -0
- package/client/dist/assets/index-DOGzWJhO.css +2 -0
- package/client/dist/assets/integrations-By80EBkf.js +1 -0
- package/client/dist/assets/integrations-CAjq5tdW2.js +1 -0
- package/client/dist/assets/integrations-CG2dp3Kd.js +1 -0
- package/client/dist/assets/integrations-CP_aiV_8.js +1 -0
- package/client/dist/assets/integrations-CUNe3t9l2.js +1 -0
- package/client/dist/assets/integrations-CWjh5VRk.js +1 -0
- package/client/dist/assets/integrations-JOHSCvB3.js +1 -0
- package/client/dist/assets/integrations-RJfzXkPx2.js +1 -0
- package/client/dist/assets/{lib-BxSZPd0W.js → lib-yKyTNJ1c.js} +1 -1
- package/client/dist/assets/nav-B2_ToNqS.js +1 -0
- package/client/dist/assets/nav-BAMkVEId.js +1 -0
- package/client/dist/assets/nav-BTg8s-cD.js +1 -0
- package/client/dist/assets/nav-BY_4EWRv.js +1 -0
- package/client/dist/assets/nav-CVXtv0wX2.js +1 -0
- package/client/dist/assets/nav-D0Erv9ZJ2.js +1 -0
- package/client/dist/assets/nav-DUuw9VIU2.js +1 -0
- package/client/dist/assets/nav-S4HM94vW.js +1 -0
- package/client/dist/assets/{upload-4u055Eea.js → upload-Qh1NE3xi.js} +1 -1
- package/client/dist/assets/{value-C3Qe3VXm.js → value-BMPeyInx.js} +1 -1
- package/client/dist/index.html +29 -29
- package/package.json +1 -1
- package/server/dist/agent-chat-router.js +2 -0
- package/server/dist/agent-operator-prompt.js +10 -3
- package/server/dist/global-plugins-router.js +62 -0
- package/server/dist/headroom-manager.js +971 -0
- package/server/dist/headroom-routing.js +53 -0
- package/server/dist/index.js +7 -0
- package/server/dist/mcp/guide.js +3 -0
- package/server/dist/mcp/tools/jobs.js +52 -9
- package/server/dist/path-resolver.js +10 -3
- package/server/dist/project-router-jobs.js +56 -6
- package/server/dist/setup-manager.js +32 -29
- package/server/dist/setup-prerequisites.js +3 -1
- package/server/dist/transient-children.js +152 -13
- package/server/dist/util/cli-prompt.js +3 -0
- package/client/dist/assets/AgentBrowserCapture-76Ri2QR1.js +0 -1
- package/client/dist/assets/AgentIntegrationsModal-D9hVgaBR.js +0 -1
- package/client/dist/assets/AgentsPage-DEt9vpzh.js +0 -86
- package/client/dist/assets/CodePage-72-FLBNw.js +0 -2
- package/client/dist/assets/DocsPage-BB3VGFM9.js +0 -11
- package/client/dist/assets/IntegrationsPage-X8bLyuDk.js +0 -3
- package/client/dist/assets/InteractiveJobComposer-D1HUALME.js +0 -19
- package/client/dist/assets/JobDetailModal-CMg6aKSO.js +0 -1
- package/client/dist/assets/JobDetailPage-Bg01rzeu.js +0 -1
- package/client/dist/assets/JobsPage-Cwkm9yYc.js +0 -1
- package/client/dist/assets/LoopBuilderPage-4uPNN8Xn.js +0 -7
- package/client/dist/assets/LoopsPage-DLXESZxq.js +0 -1
- package/client/dist/assets/ProjectSettingsDialog-DP6hAug-.js +0 -1
- package/client/dist/assets/agent-B0Rg_eLw2.js +0 -1
- package/client/dist/assets/agent-B8f79myL.js +0 -1
- package/client/dist/assets/agent-BCH7a3z-.js +0 -1
- package/client/dist/assets/agent-BELAd4RF.js +0 -1
- package/client/dist/assets/agent-BrCnHlvX2.js +0 -1
- package/client/dist/assets/agent-CrcIj6WE2.js +0 -1
- package/client/dist/assets/agent-CtwLUmjl.js +0 -1
- package/client/dist/assets/agent-xG4qLg4R.js +0 -1
- package/client/dist/assets/index-BbVOi-dY.js +0 -158
- package/client/dist/assets/index-o3Q2Lii5.css +0 -2
- package/client/dist/assets/integrations-BQNkrfr7.js +0 -1
- package/client/dist/assets/integrations-BdN2f6bP.js +0 -1
- package/client/dist/assets/integrations-BrIUJmVf.js +0 -1
- package/client/dist/assets/integrations-CuWnMR5L.js +0 -1
- package/client/dist/assets/integrations-Cyp7cSYv2.js +0 -1
- package/client/dist/assets/integrations-DDR3OHdq.js +0 -1
- package/client/dist/assets/integrations-DVxi8b0j2.js +0 -1
- package/client/dist/assets/integrations-RuNEX3La2.js +0 -1
- package/client/dist/assets/nav-BFCUtHUQ2.js +0 -1
- package/client/dist/assets/nav-BouzorQ5.js +0 -1
- package/client/dist/assets/nav-Bpr-K0tD.js +0 -1
- package/client/dist/assets/nav-CpFrRDXd2.js +0 -1
- package/client/dist/assets/nav-CzKzuwH8.js +0 -1
- package/client/dist/assets/nav-Dkv4Vlr_2.js +0 -1
- package/client/dist/assets/nav-GG6azCbh.js +0 -1
- package/client/dist/assets/nav-prHkMqcr.js +0 -1
- /package/client/dist/assets/{activity-D8vQJrpW.js → activity-Dbl71S-E.js} +0 -0
- /package/client/dist/assets/{addspec-DxW6oPsk.js → addspec-DrXqP8ip.js} +0 -0
- /package/client/dist/assets/{agents-Cev2oFfX.js → agents-CGDn_3kB.js} +0 -0
- /package/client/dist/assets/{agentstudio-CZm2rOzt.js → agentstudio-Dxe_94PK.js} +0 -0
- /package/client/dist/assets/{aiedit-DYtnZU9H.js → aiedit-DrfHQnlz.js} +0 -0
- /package/client/dist/assets/{analytics-Ce-sPORu.js → analytics-CxDYcBl9.js} +0 -0
- /package/client/dist/assets/{attachments-Ci6_42Kh.js → attachments-DvxQbBTC.js} +0 -0
- /package/client/dist/assets/{auth-Cvsb7-Ek.js → auth-DpZq5p1e.js} +0 -0
- /package/client/dist/assets/{browser-CdS6O1Qb.js → browser-DM8G151q.js} +0 -0
- /package/client/dist/assets/{chat-VMflhzxn.js → chat-0dg5hOo_.js} +0 -0
- /package/client/dist/assets/{code-thSEptMx.js → code-B62fClk-.js} +0 -0
- /package/client/dist/assets/{commands-CckaBWdV.js → commands-DCJ-R9E4.js} +0 -0
- /package/client/dist/assets/{common-CYaT2yHp.js → common-DXrmj6WD.js} +0 -0
- /package/client/dist/assets/{dashboard-BawQCyrV.js → dashboard-DBuLfWo9.js} +0 -0
- /package/client/dist/assets/{explore-BKVV5JSu.js → explore-_XyU5e7R.js} +0 -0
- /package/client/dist/assets/{jira-B3613-gj.js → jira-DeIjwCK3.js} +0 -0
- /package/client/dist/assets/{jobs-D5sZzgLs.js → jobs-DrYmsKy5.js} +0 -0
- /package/client/dist/assets/{loops-Brnx4Fji.js → loops-CO6q75W8.js} +0 -0
- /package/client/dist/assets/{mcp-CIH0pH1K.js → mcp-HwBbQDk0.js} +0 -0
- /package/client/dist/assets/{settings-BFv6UbKV.js → settings-BYCMtxOz.js} +0 -0
- /package/client/dist/assets/{setup-RiUHzq7E.js → setup-D2CmgAro.js} +0 -0
- /package/client/dist/assets/{specs-CmEZY57v.js → specs-PGIOzMtc.js} +0 -0
- /package/client/dist/assets/{terminal-DFPNRLKp.js → terminal-CFt56A5f.js} +0 -0
- /package/client/dist/assets/{tickets-CkfbISuK.js → tickets-BHv3ewvq.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-BNv3lrIs.js";import{Bn as t,qn as n}from"./index-BbVOi-dY.js";var r=e((e=>{var r=n(),i=t();function a(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var o=typeof Object.is==`function`?Object.is:a,s=i.useSyncExternalStore,c=r.useRef,l=r.useEffect,u=r.useMemo,d=r.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var a=c(null);if(a.current===null){var f={hasValue:!1,value:null};a.current=f}else f=a.current;a=u(function(){function e(e){if(!a){if(a=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,o(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var a=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=s(e,a[0],a[1]);return l(function(){f.hasValue=!0,f.value=p},[p]),d(p),p}})),i=e(((e,t)=>{t.exports=r()}));function a(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function o(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function s(){}var c=.7,l=1/c,u=`\\s*([+-]?\\d+)\\s*`,d=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,f=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,p=/^#([0-9a-f]{3,8})$/,m=RegExp(`^rgb\\(${u},${u},${u}\\)$`),h=RegExp(`^rgb\\(${f},${f},${f}\\)$`),ee=RegExp(`^rgba\\(${u},${u},${u},${d}\\)$`),g=RegExp(`^rgba\\(${f},${f},${f},${d}\\)$`),_=RegExp(`^hsl\\(${d},${f},${f}\\)$`),v=RegExp(`^hsla\\(${d},${f},${f},${d}\\)$`),y={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};a(s,C,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:b,formatHex:b,formatHex8:x,formatHsl:te,formatRgb:S,toString:S});function b(){return this.rgb().formatHex()}function x(){return this.rgb().formatHex8()}function te(){return I(this).formatHsl()}function S(){return this.rgb().formatRgb()}function C(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=p.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?w(t):n===3?new O(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?T(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?T(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=m.exec(e))?new O(t[1],t[2],t[3],1):(t=h.exec(e))?new O(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ee.exec(e))?T(t[1],t[2],t[3],t[4]):(t=g.exec(e))?T(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=_.exec(e))?F(t[1],t[2]/100,t[3]/100,1):(t=v.exec(e))?F(t[1],t[2]/100,t[3]/100,t[4]):y.hasOwnProperty(e)?w(y[e]):e===`transparent`?new O(NaN,NaN,NaN,0):null}function w(e){return new O(e>>16&255,e>>8&255,e&255,1)}function T(e,t,n,r){return r<=0&&(e=t=n=NaN),new O(e,t,n,r)}function E(e){return e instanceof s||(e=C(e)),e?(e=e.rgb(),new O(e.r,e.g,e.b,e.opacity)):new O}function D(e,t,n,r){return arguments.length===1?E(e):new O(e,t,n,r??1)}function O(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}a(O,D,o(s,{brighter(e){return e=e==null?l:l**+e,new O(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?c:c**+e,new O(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new O(N(this.r),N(this.g),N(this.b),M(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:k,formatHex:k,formatHex8:A,formatRgb:j,toString:j}));function k(){return`#${P(this.r)}${P(this.g)}${P(this.b)}`}function A(){return`#${P(this.r)}${P(this.g)}${P(this.b)}${P((isNaN(this.opacity)?1:this.opacity)*255)}`}function j(){let e=M(this.opacity);return`${e===1?`rgb(`:`rgba(`}${N(this.r)}, ${N(this.g)}, ${N(this.b)}${e===1?`)`:`, ${e})`}`}function M(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function N(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function P(e){return e=N(e),(e<16?`0`:``)+e.toString(16)}function F(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new R(e,t,n,r)}function I(e){if(e instanceof R)return new R(e.h,e.s,e.l,e.opacity);if(e instanceof s||(e=C(e)),!e)return new R;if(e instanceof R)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,c=a-i,l=(a+i)/2;return c?(o=t===a?(n-r)/c+(n<r)*6:n===a?(r-t)/c+2:(t-n)/c+4,c/=l<.5?a+i:2-a-i,o*=60):c=l>0&&l<1?0:o,new R(o,c,l,e.opacity)}function L(e,t,n,r){return arguments.length===1?I(e):new R(e,t,n,r??1)}function R(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}a(R,L,o(s,{brighter(e){return e=e==null?l:l**+e,new R(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?c:c**+e,new R(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new O(V(e>=240?e-240:e+120,i,r),V(e,i,r),V(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new R(z(this.h),B(this.s),B(this.l),M(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=M(this.opacity);return`${e===1?`hsl(`:`hsla(`}${z(this.h)}, ${B(this.s)*100}%, ${B(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function z(e){return e=(e||0)%360,e<0?e+360:e}function B(e){return Math.max(0,Math.min(1,e||0))}function V(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var H=e=>()=>e;function U(e,t){return function(n){return e+n*t}}function W(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function G(e){return(e=+e)==1?K:function(t,n){return n-t?W(t,n,e):H(isNaN(t)?n:t)}}function K(e,t){var n=t-e;return n?U(e,n):H(isNaN(e)?t:e)}var q=(function e(t){var n=G(t);function r(e,t){var r=n((e=D(e)).r,(t=D(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=K(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function J(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function ne(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function re(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=$(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function ie(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Y(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ae(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=$(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var X=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Z=new RegExp(X.source,`g`);function oe(e){return function(){return e}}function se(e){return function(t){return e(t)+``}}function Q(e,t){var n=X.lastIndex=Z.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=X.exec(e))&&(i=Z.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Y(r,i)})),n=Z.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?se(c[0].x):oe(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function $(e,t){var n=typeof t,r;return t==null||n===`boolean`?H(t):(n===`number`?Y:n===`string`?(r=C(t))?(t=r,q):Q:t instanceof C?q:t instanceof Date?ie:ne(t)?J:Array.isArray(t)?re:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?ae:Y)(e,t)}export{C as a,q as i,Q as n,i as o,Y as r,$ as t};
|
|
1
|
+
import{t as e}from"./chunk-BNv3lrIs.js";import{Vn as t,Yn as n}from"./index-89SuhD4Y.js";var r=e((e=>{var r=n(),i=t();function a(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var o=typeof Object.is==`function`?Object.is:a,s=i.useSyncExternalStore,c=r.useRef,l=r.useEffect,u=r.useMemo,d=r.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var a=c(null);if(a.current===null){var f={hasValue:!1,value:null};a.current=f}else f=a.current;a=u(function(){function e(e){if(!a){if(a=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,o(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var a=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=s(e,a[0],a[1]);return l(function(){f.hasValue=!0,f.value=p},[p]),d(p),p}})),i=e(((e,t)=>{t.exports=r()}));function a(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function o(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function s(){}var c=.7,l=1/c,u=`\\s*([+-]?\\d+)\\s*`,d=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,f=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,p=/^#([0-9a-f]{3,8})$/,m=RegExp(`^rgb\\(${u},${u},${u}\\)$`),h=RegExp(`^rgb\\(${f},${f},${f}\\)$`),ee=RegExp(`^rgba\\(${u},${u},${u},${d}\\)$`),g=RegExp(`^rgba\\(${f},${f},${f},${d}\\)$`),_=RegExp(`^hsl\\(${d},${f},${f}\\)$`),v=RegExp(`^hsla\\(${d},${f},${f},${d}\\)$`),y={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};a(s,C,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:b,formatHex:b,formatHex8:x,formatHsl:te,formatRgb:S,toString:S});function b(){return this.rgb().formatHex()}function x(){return this.rgb().formatHex8()}function te(){return I(this).formatHsl()}function S(){return this.rgb().formatRgb()}function C(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=p.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?w(t):n===3?new O(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?T(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?T(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=m.exec(e))?new O(t[1],t[2],t[3],1):(t=h.exec(e))?new O(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ee.exec(e))?T(t[1],t[2],t[3],t[4]):(t=g.exec(e))?T(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=_.exec(e))?F(t[1],t[2]/100,t[3]/100,1):(t=v.exec(e))?F(t[1],t[2]/100,t[3]/100,t[4]):y.hasOwnProperty(e)?w(y[e]):e===`transparent`?new O(NaN,NaN,NaN,0):null}function w(e){return new O(e>>16&255,e>>8&255,e&255,1)}function T(e,t,n,r){return r<=0&&(e=t=n=NaN),new O(e,t,n,r)}function E(e){return e instanceof s||(e=C(e)),e?(e=e.rgb(),new O(e.r,e.g,e.b,e.opacity)):new O}function D(e,t,n,r){return arguments.length===1?E(e):new O(e,t,n,r??1)}function O(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}a(O,D,o(s,{brighter(e){return e=e==null?l:l**+e,new O(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?c:c**+e,new O(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new O(N(this.r),N(this.g),N(this.b),M(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:k,formatHex:k,formatHex8:A,formatRgb:j,toString:j}));function k(){return`#${P(this.r)}${P(this.g)}${P(this.b)}`}function A(){return`#${P(this.r)}${P(this.g)}${P(this.b)}${P((isNaN(this.opacity)?1:this.opacity)*255)}`}function j(){let e=M(this.opacity);return`${e===1?`rgb(`:`rgba(`}${N(this.r)}, ${N(this.g)}, ${N(this.b)}${e===1?`)`:`, ${e})`}`}function M(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function N(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function P(e){return e=N(e),(e<16?`0`:``)+e.toString(16)}function F(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new R(e,t,n,r)}function I(e){if(e instanceof R)return new R(e.h,e.s,e.l,e.opacity);if(e instanceof s||(e=C(e)),!e)return new R;if(e instanceof R)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,c=a-i,l=(a+i)/2;return c?(o=t===a?(n-r)/c+(n<r)*6:n===a?(r-t)/c+2:(t-n)/c+4,c/=l<.5?a+i:2-a-i,o*=60):c=l>0&&l<1?0:o,new R(o,c,l,e.opacity)}function L(e,t,n,r){return arguments.length===1?I(e):new R(e,t,n,r??1)}function R(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}a(R,L,o(s,{brighter(e){return e=e==null?l:l**+e,new R(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?c:c**+e,new R(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new O(V(e>=240?e-240:e+120,i,r),V(e,i,r),V(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new R(z(this.h),B(this.s),B(this.l),M(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=M(this.opacity);return`${e===1?`hsl(`:`hsla(`}${z(this.h)}, ${B(this.s)*100}%, ${B(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function z(e){return e=(e||0)%360,e<0?e+360:e}function B(e){return Math.max(0,Math.min(1,e||0))}function V(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var H=e=>()=>e;function U(e,t){return function(n){return e+n*t}}function W(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function G(e){return(e=+e)==1?K:function(t,n){return n-t?W(t,n,e):H(isNaN(t)?n:t)}}function K(e,t){var n=t-e;return n?U(e,n):H(isNaN(e)?t:e)}var q=(function e(t){var n=G(t);function r(e,t){var r=n((e=D(e)).r,(t=D(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=K(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function J(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function ne(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function re(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=$(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function ie(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Y(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ae(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=$(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var X=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Z=new RegExp(X.source,`g`);function oe(e){return function(){return e}}function se(e){return function(t){return e(t)+``}}function Q(e,t){var n=X.lastIndex=Z.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=X.exec(e))&&(i=Z.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Y(r,i)})),n=Z.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?se(c[0].x):oe(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function $(e,t){var n=typeof t,r;return t==null||n===`boolean`?H(t):(n===`number`?Y:n===`string`?(r=C(t))?(t=r,q):Q:t instanceof C?q:t instanceof Date?ie:ne(t)?J:Array.isArray(t)?re:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?ae:Y)(e,t)}export{C as a,q as i,Q as n,i as o,Y as r,$ as t};
|
package/client/dist/index.html
CHANGED
|
@@ -204,38 +204,38 @@
|
|
|
204
204
|
.specrails-splash__mark .pill { opacity: 1; }
|
|
205
205
|
}
|
|
206
206
|
</style>
|
|
207
|
-
<script type="module" crossorigin src="/assets/index-
|
|
207
|
+
<script type="module" crossorigin src="/assets/index-89SuhD4Y.js"></script>
|
|
208
208
|
<link rel="modulepreload" crossorigin href="/assets/chunk-BNv3lrIs.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-DSXbuxSR.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="/assets/clsx-CNmW0Nip.js">
|
|
211
|
-
<link rel="modulepreload" crossorigin href="/assets/auth-
|
|
212
|
-
<link rel="modulepreload" crossorigin href="/assets/activity-
|
|
213
|
-
<link rel="modulepreload" crossorigin href="/assets/addspec-
|
|
214
|
-
<link rel="modulepreload" crossorigin href="/assets/agent-
|
|
215
|
-
<link rel="modulepreload" crossorigin href="/assets/agents-
|
|
216
|
-
<link rel="modulepreload" crossorigin href="/assets/agentstudio-
|
|
217
|
-
<link rel="modulepreload" crossorigin href="/assets/aiedit-
|
|
218
|
-
<link rel="modulepreload" crossorigin href="/assets/analytics-
|
|
219
|
-
<link rel="modulepreload" crossorigin href="/assets/attachments-
|
|
220
|
-
<link rel="modulepreload" crossorigin href="/assets/browser-
|
|
221
|
-
<link rel="modulepreload" crossorigin href="/assets/chat-
|
|
222
|
-
<link rel="modulepreload" crossorigin href="/assets/code-
|
|
223
|
-
<link rel="modulepreload" crossorigin href="/assets/commands-
|
|
224
|
-
<link rel="modulepreload" crossorigin href="/assets/common-
|
|
225
|
-
<link rel="modulepreload" crossorigin href="/assets/dashboard-
|
|
226
|
-
<link rel="modulepreload" crossorigin href="/assets/explore-
|
|
227
|
-
<link rel="modulepreload" crossorigin href="/assets/integrations-
|
|
228
|
-
<link rel="modulepreload" crossorigin href="/assets/jira-
|
|
229
|
-
<link rel="modulepreload" crossorigin href="/assets/jobs-
|
|
230
|
-
<link rel="modulepreload" crossorigin href="/assets/loops-
|
|
231
|
-
<link rel="modulepreload" crossorigin href="/assets/mcp-
|
|
232
|
-
<link rel="modulepreload" crossorigin href="/assets/nav-
|
|
233
|
-
<link rel="modulepreload" crossorigin href="/assets/settings-
|
|
234
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-
|
|
235
|
-
<link rel="modulepreload" crossorigin href="/assets/specs-
|
|
236
|
-
<link rel="modulepreload" crossorigin href="/assets/terminal-
|
|
237
|
-
<link rel="modulepreload" crossorigin href="/assets/tickets-
|
|
238
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
211
|
+
<link rel="modulepreload" crossorigin href="/assets/auth-DpZq5p1e.js">
|
|
212
|
+
<link rel="modulepreload" crossorigin href="/assets/activity-Dbl71S-E.js">
|
|
213
|
+
<link rel="modulepreload" crossorigin href="/assets/addspec-DrXqP8ip.js">
|
|
214
|
+
<link rel="modulepreload" crossorigin href="/assets/agent-MaTxBlg5.js">
|
|
215
|
+
<link rel="modulepreload" crossorigin href="/assets/agents-CGDn_3kB.js">
|
|
216
|
+
<link rel="modulepreload" crossorigin href="/assets/agentstudio-Dxe_94PK.js">
|
|
217
|
+
<link rel="modulepreload" crossorigin href="/assets/aiedit-DrfHQnlz.js">
|
|
218
|
+
<link rel="modulepreload" crossorigin href="/assets/analytics-CxDYcBl9.js">
|
|
219
|
+
<link rel="modulepreload" crossorigin href="/assets/attachments-DvxQbBTC.js">
|
|
220
|
+
<link rel="modulepreload" crossorigin href="/assets/browser-DM8G151q.js">
|
|
221
|
+
<link rel="modulepreload" crossorigin href="/assets/chat-0dg5hOo_.js">
|
|
222
|
+
<link rel="modulepreload" crossorigin href="/assets/code-B62fClk-.js">
|
|
223
|
+
<link rel="modulepreload" crossorigin href="/assets/commands-DCJ-R9E4.js">
|
|
224
|
+
<link rel="modulepreload" crossorigin href="/assets/common-DXrmj6WD.js">
|
|
225
|
+
<link rel="modulepreload" crossorigin href="/assets/dashboard-DBuLfWo9.js">
|
|
226
|
+
<link rel="modulepreload" crossorigin href="/assets/explore-_XyU5e7R.js">
|
|
227
|
+
<link rel="modulepreload" crossorigin href="/assets/integrations-By80EBkf.js">
|
|
228
|
+
<link rel="modulepreload" crossorigin href="/assets/jira-DeIjwCK3.js">
|
|
229
|
+
<link rel="modulepreload" crossorigin href="/assets/jobs-DrYmsKy5.js">
|
|
230
|
+
<link rel="modulepreload" crossorigin href="/assets/loops-CO6q75W8.js">
|
|
231
|
+
<link rel="modulepreload" crossorigin href="/assets/mcp-HwBbQDk0.js">
|
|
232
|
+
<link rel="modulepreload" crossorigin href="/assets/nav-BTg8s-cD.js">
|
|
233
|
+
<link rel="modulepreload" crossorigin href="/assets/settings-BYCMtxOz.js">
|
|
234
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-D2CmgAro.js">
|
|
235
|
+
<link rel="modulepreload" crossorigin href="/assets/specs-PGIOzMtc.js">
|
|
236
|
+
<link rel="modulepreload" crossorigin href="/assets/terminal-CFt56A5f.js">
|
|
237
|
+
<link rel="modulepreload" crossorigin href="/assets/tickets-BHv3ewvq.js">
|
|
238
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DOGzWJhO.css">
|
|
239
239
|
</head>
|
|
240
240
|
<body>
|
|
241
241
|
<div id="specrails-splash" aria-hidden="false" role="status" aria-label="Loading Specrails">
|
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ const providers_1 = require("./providers");
|
|
|
12
12
|
const agent_tier_1 = require("./agent-tier");
|
|
13
13
|
const attachment_manager_1 = require("./attachment-manager");
|
|
14
14
|
const agent_store_1 = require("./agent-store");
|
|
15
|
+
const transient_children_1 = require("./transient-children");
|
|
15
16
|
function isAgentChatEnabled() {
|
|
16
17
|
return process.env.SPECRAILS_AGENT_CHAT !== 'false';
|
|
17
18
|
}
|
|
@@ -235,6 +236,7 @@ function createAgentChatRouter(deps) {
|
|
|
235
236
|
router.delete('/conversations/:id', (req, res) => {
|
|
236
237
|
const id = String(req.params.id);
|
|
237
238
|
manager.abort(id);
|
|
239
|
+
(0, transient_children_1.killBackgroundProcessesForChat)(id);
|
|
238
240
|
(0, agent_store_1.deleteAgentConversation)(desktopDb, id);
|
|
239
241
|
// Cascade-remove the conversation's attachment directory (best-effort).
|
|
240
242
|
void attachment_manager_1.attachmentManager.deleteAllAgent(id).catch((e) => console.error('[agent-chat] attachment cleanup failed:', e));
|
|
@@ -406,10 +406,17 @@ summary later.
|
|
|
406
406
|
server/watch/tail command that should keep running (for example \`npm run dev\`,
|
|
407
407
|
\`vite --host\`, \`tail -f\`, or a local service), propose
|
|
408
408
|
\`specrails_jobs(background_start)\` with the command, project and cwd, wait for
|
|
409
|
-
explicit yes, then call that tool
|
|
409
|
+
explicit yes, then call that tool with \`confirmed:true\`. Do NOT use a raw shell/background-task
|
|
410
410
|
runner for these requests: only \`background_start\` emits the app events that
|
|
411
411
|
create the killable chip above this agent chat's composer. You normally do not
|
|
412
|
-
need to pass \`chatId\`; the in-app MCP origin conversation owns it.
|
|
412
|
+
need to pass \`chatId\`; the in-app MCP origin conversation owns it. If a
|
|
413
|
+
job/loop is still running, do not pass \`allowWhileBusy:true\` unless the user
|
|
414
|
+
explicitly confirms running concurrently.
|
|
415
|
+
- **Diagnose background chip failures from logs.** If user asks whether
|
|
416
|
+
background chip command failed or why it stopped, call
|
|
417
|
+
\`specrails_jobs(background_logs, pid)\` for that PID before asking
|
|
418
|
+
to relaunch. Explain from captured stdout/stderr tail; only say logs
|
|
419
|
+
unavailable if PID unknown/expired or captured output empty.
|
|
413
420
|
- **Launch, then release the turn.** When a rail launch or job spawn is
|
|
414
421
|
accepted (202), report the returned jobId(s)/ids VERBATIM and END YOUR REPLY
|
|
415
422
|
immediately — do NOT sit on the turn watching the run. Progress streams live
|
|
@@ -480,4 +487,4 @@ When the user has no projects yet, or asks to add one:
|
|
|
480
487
|
Setup is QUICK-only (fast, offline). Do NOT offer, mention, or attempt a "full"
|
|
481
488
|
or "enrich" install — that flow is deprecated and not available through you.
|
|
482
489
|
`;
|
|
483
|
-
exports.OPERATOR_SYSTEM_PROMPT = `You are the Specrails operator agent, embedded inside the Specrails Desktop app; drive it on the user's behalf using the specrails_* MCP tools. Your full operator manual is the CLAUDE.md auto-loaded from your working directory — follow it. Non-negotiables: target a project with specrails_select_project or the projectId argument, and ask rather than guess when none is pinned; support/troubleshooting/install/usage/job-failure questions use specrails_support first and never become specs unless the user pivots to product work; missing agents/skills/slash commands concern the app-global specrails-core framework, never project-owned files — never say agents/skills/commands live inside the project; project setup checkpoints are not a core health signal, so pending/0 agents/0 commands must not trigger specrails_setup(install) or a project repair recommendation; offer core_update_check/core_update_apply only for global core updates, and if global core is current ask for the concrete job error/diagnostic; an on_review spec with an open PR, including a published pr_ready card, can be relaunched to continue that PR branch — do not require publish/discard/merge first; run long-lived server/watch/tail shell commands with specrails_jobs background_start, not a raw shell runner, so the app can show the killable background chip in this chat; short async 202 ops (spec generation, ai-edit) may be awaited with specrails_watch (projectId required), but after a rail/job LAUNCH is accepted end your reply immediately — progress streams live in the conversation's run card and the app; watch a launched run only when the user explicitly asks you to wait, with a bounded untilMs; never claim success from a 202 acceptance alone — verify from a terminal event or a domain read (e.g. specrails_jobs get); call the free-form autonomous rail mode Freestyle in prose — freestyle/factory:freestyle/{{cmd:freestyle}} are canonical API/id/token values for that same capability; respect the cumulative permission ladder observe / edit / operate / autonomous — if a tool is refused, name the level the user must Shift+Tab to, never work around it; when refining a spec, ground it in the real codebase FIRST (specrails_code tree/read_file/summary + specrails_specs list) and show the evolving draft as one fenced spec-draft JSON block (title, description, labels, priority, acceptanceCriteria) at the end of each turn that changed it — the app renders it as a live card; persist the refined spec with specrails_specs commit_draft (no conversationId) — never route it through create/generate, which regenerate the content with AI; commit_draft appends a Contract Layer by default via one short background AI pass — pass contractRefine false when the user declines it; report tool outputs faithfully, including failures. Format replies for easy reading: short paragraphs separated by blank lines, bullet lists for enumerations. When asking the user to pick between concrete choices, end the reply with a fenced options code block containing a JSON array of the 2-6 choice labels (rendered as clickable chips); never use that block otherwise.`;
|
|
490
|
+
exports.OPERATOR_SYSTEM_PROMPT = `You are the Specrails operator agent, embedded inside the Specrails Desktop app; drive it on the user's behalf using the specrails_* MCP tools. Your full operator manual is the CLAUDE.md auto-loaded from your working directory — follow it. Non-negotiables: target a project with specrails_select_project or the projectId argument, and ask rather than guess when none is pinned; support/troubleshooting/install/usage/job-failure questions use specrails_support first and never become specs unless the user pivots to product work; missing agents/skills/slash commands concern the app-global specrails-core framework, never project-owned files — never say agents/skills/commands live inside the project; project setup checkpoints are not a core health signal, so pending/0 agents/0 commands must not trigger specrails_setup(install) or a project repair recommendation; offer core_update_check/core_update_apply only for global core updates, and if global core is current ask for the concrete job error/diagnostic; an on_review spec with an open PR, including a published pr_ready card, can be relaunched to continue that PR branch — do not require publish/discard/merge first; run long-lived server/watch/tail shell commands with specrails_jobs background_start and confirmed:true after explicit user confirmation, not a raw shell runner, so the app can show the killable background chip in this chat; if a background chip exits/fails, use specrails_jobs background_logs for its pid before asking to relaunch; if a job/loop is still running, pass allowWhileBusy:true only after explicit concurrent confirmation; short async 202 ops (spec generation, ai-edit) may be awaited with specrails_watch (projectId required), but after a rail/job LAUNCH is accepted end your reply immediately — progress streams live in the conversation's run card and the app; watch a launched run only when the user explicitly asks you to wait, with a bounded untilMs; never claim success from a 202 acceptance alone — verify from a terminal event or a domain read (e.g. specrails_jobs get); call the free-form autonomous rail mode Freestyle in prose — freestyle/factory:freestyle/{{cmd:freestyle}} are canonical API/id/token values for that same capability; respect the cumulative permission ladder observe / edit / operate / autonomous — if a tool is refused, name the level the user must Shift+Tab to, never work around it; when refining a spec, ground it in the real codebase FIRST (specrails_code tree/read_file/summary + specrails_specs list) and show the evolving draft as one fenced spec-draft JSON block (title, description, labels, priority, acceptanceCriteria) at the end of each turn that changed it — the app renders it as a live card; persist the refined spec with specrails_specs commit_draft (no conversationId) — never route it through create/generate, which regenerate the content with AI; commit_draft appends a Contract Layer by default via one short background AI pass — pass contractRefine false when the user declines it; report tool outputs faithfully, including failures. Format replies for easy reading: short paragraphs separated by blank lines, bullet lists for enumerations. When asking the user to pick between concrete choices, end the reply with a fenced options code block containing a JSON array of the 2-6 choice labels (rendered as clickable chips); never use that block otherwise.`;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGlobalPluginsRouter = createGlobalPluginsRouter;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
function isProvider(value) {
|
|
6
|
+
return value === 'codex' || value === 'claude';
|
|
7
|
+
}
|
|
8
|
+
function createGlobalPluginsRouter(headroom) {
|
|
9
|
+
const router = (0, express_1.Router)();
|
|
10
|
+
router.get('/', async (_req, res) => {
|
|
11
|
+
res.json({
|
|
12
|
+
plugins: [
|
|
13
|
+
{
|
|
14
|
+
id: 'headroom-ai',
|
|
15
|
+
name: 'Headroom AI',
|
|
16
|
+
scope: 'global',
|
|
17
|
+
status: await headroom.getFreshState(),
|
|
18
|
+
},
|
|
19
|
+
{ id: 'jira', name: 'Jira', scope: 'project' },
|
|
20
|
+
{ id: 'serena', name: 'Serena', scope: 'project' },
|
|
21
|
+
],
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
router.get('/headroom', async (_req, res) => {
|
|
25
|
+
res.json({ state: await headroom.getFreshState() });
|
|
26
|
+
});
|
|
27
|
+
router.get('/headroom/diagnostics', (_req, res) => {
|
|
28
|
+
res.json(headroom.diagnostics());
|
|
29
|
+
});
|
|
30
|
+
router.post('/headroom/install', async (_req, res) => {
|
|
31
|
+
const result = await headroom.install();
|
|
32
|
+
res.status(result.ok ? 200 : 409).json(result);
|
|
33
|
+
});
|
|
34
|
+
router.post('/headroom/activate', async (req, res) => {
|
|
35
|
+
const provider = req.body?.provider;
|
|
36
|
+
if (!isProvider(provider)) {
|
|
37
|
+
res.status(400).json({ error: 'provider must be codex or claude' });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const result = await headroom.activate(provider);
|
|
41
|
+
res.status(result.ok ? 200 : 409).json(result);
|
|
42
|
+
});
|
|
43
|
+
router.post('/headroom/deactivate', async (req, res) => {
|
|
44
|
+
const provider = req.body?.provider;
|
|
45
|
+
if (!isProvider(provider)) {
|
|
46
|
+
res.status(400).json({ error: 'provider must be codex or claude' });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const result = await headroom.deactivate(provider);
|
|
50
|
+
res.status(result.ok ? 200 : 409).json(result);
|
|
51
|
+
});
|
|
52
|
+
router.post('/headroom/uninstall', async (_req, res) => {
|
|
53
|
+
const result = await headroom.uninstall();
|
|
54
|
+
res.status(result.ok ? 200 : 409).json(result);
|
|
55
|
+
});
|
|
56
|
+
router.post('/headroom/port', async (req, res) => {
|
|
57
|
+
const port = Number(req.body?.port);
|
|
58
|
+
const result = await headroom.setPort(port);
|
|
59
|
+
res.status(result.ok ? 200 : 400).json(result);
|
|
60
|
+
});
|
|
61
|
+
return router;
|
|
62
|
+
}
|