@launchsecure/launch-kit 0.0.31 → 0.0.33
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/dist/beacon/beacon.mjs +550 -521
- package/dist/beacon/beacon.mjs.map +1 -1
- package/dist/beacon/beacon.umd.js +9 -9
- package/dist/beacon/beacon.umd.js.map +1 -1
- package/dist/beacon/types/internal/pick-mode-overlay.d.ts.map +1 -1
- package/dist/beacon/types/internal/picker.d.ts.map +1 -1
- package/dist/beacon/types/internal/pin-popover.d.ts.map +1 -1
- package/dist/beacon/types/internal/selector.d.ts.map +1 -1
- package/dist/chart-client/assets/{index-B__ARB8k.js → index-DFu2xIrM.js} +2 -2
- package/dist/chart-client/assets/index-DpKO9p0s.css +1 -0
- package/dist/chart-client/index.html +2 -2
- package/dist/client/assets/{index-h8kMzVtG.js → index-Cbw6bVdx.js} +2 -2
- package/dist/client/assets/index-Dv6dD2zY.css +32 -0
- package/dist/client/index.html +2 -2
- package/dist/council-client/assets/index-AqQ9Sei6.css +1 -0
- package/dist/council-client/assets/{index-CWaDcsFR.js → index-CAsmGTzg.js} +2 -2
- package/dist/council-client/index.html +2 -2
- package/dist/deck-client/assets/{_baseUniq-DdHaBFYO.js → _baseUniq-BiVx0WO_.js} +1 -1
- package/dist/deck-client/assets/{arc-D98e_18X.js → arc-DGMkiEzS.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-DNFZzh-4.js → architectureDiagram-Q4EWVU46-Y2WRmHtk.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-DeQvGUdX.js → blockDiagram-DXYQGD6D-_Lbfu5BQ.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-B6ekZf1n.js → c4Diagram-AHTNJAMY-CTqpYTBX.js} +1 -1
- package/dist/deck-client/assets/channel-DB6LxW_l.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-9aDWymq2.js → chunk-4BX2VUAB-liEIbPHs.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-DtKQqaI7.js → chunk-4TB4RGXK-CCc6lYvL.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-COy9hEae.js → chunk-55IACEB6-D02jJUR2.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-D_f861An.js → chunk-EDXVE4YY-BFmGMbLD.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-CmuA5UKn.js → chunk-FMBD7UC4-6wFLOVcJ.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-vT8z8D-0.js → chunk-OYMX7WX6-Bnr8RiBf.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-CTlwwg-R.js → chunk-QZHKN3VN-Ct82MksJ.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-C44yr620.js → chunk-YZCP3GAM-BXmN1diQ.js} +1 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-g944ZyG8.js +1 -0
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-g944ZyG8.js +1 -0
- package/dist/deck-client/assets/clone-DiIRH1pI.js +1 -0
- package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-DBB2J2nL.js → cose-bilkent-S5V4N54A-CmQCT-mH.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-DxDTYbKl.js → dagre-KV5264BT-DDdSa9EX.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-DByWrWd1.js → diagram-5BDNPKRD-Bccks2xJ.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-B8B6ddMq.js → diagram-G4DWMVQ6-CPPNgxmQ.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-BMUZ2PWK.js → diagram-MMDJMWI5-KrD300pS.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-Bk9e8BB-.js → diagram-TYMM5635-DefnLuQf.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-DcOSwSol.js → erDiagram-SMLLAGMA-DI9FfnFP.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DI-4BR0F.js → flowDiagram-DWJPFMVM-twKyd3Fx.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-BeZuXBoU.js → ganttDiagram-T4ZO3ILL-Wau3jhBr.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-Bcki__f-.js → gitGraphDiagram-UUTBAWPF-D9GgYXwb.js} +1 -1
- package/dist/deck-client/assets/{graph-CifKx6G1.js → graph-BhNLzyXS.js} +1 -1
- package/dist/deck-client/assets/index-B-YQq5b5.css +1 -0
- package/dist/deck-client/assets/{index-CB-qlwRT.js → index-BtQBaQ7s.js} +76 -76
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-CReN1nFN.js → infoDiagram-42DDH7IO-TylGlSG-.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-CDF_VLN_.js → ishikawaDiagram-UXIWVN3A-DAT8icpg.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-DwgGrNVB.js → journeyDiagram-VCZTEJTY-D3v_XL72.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-DB_zohh5.js → kanban-definition-6JOO6SKY-DNUOBiNr.js} +1 -1
- package/dist/deck-client/assets/{layout-DFfX1O3z.js → layout-COfodgwF.js} +1 -1
- package/dist/deck-client/assets/{linear-CtKb4EXj.js → linear-DmTsuIvK.js} +1 -1
- package/dist/deck-client/assets/{min-DCRRwUZv.js → min-BW1F7i1D.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-D0QBOiFe.js → mindmap-definition-QFDTVHPH-CErFzKWl.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-CD-EV5WB.js → pieDiagram-DEJITSTG-DW5F757o.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-B-JXZ8xI.js → quadrantDiagram-34T5L4WZ-B1S2-TfI.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-D2_OK5Dp.js → requirementDiagram-MS252O5E-BY5BAR-5.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-BbBJqVSC.js → sankeyDiagram-XADWPNL6-CE1Cp9HS.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-Db8A-Rkk.js → sequenceDiagram-FGHM5R23-IaHnbKye.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-DGJnanjS.js → stateDiagram-FHFEXIEX-CwPJm9hU.js} +1 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-DQYa2M1q.js +1 -0
- package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-BRkr6T4w.js → timeline-definition-GMOUNBTQ-DVFGGSgN.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-d0rsTqFo.js → vennDiagram-DHZGUBPP-C1194MJi.js} +1 -1
- package/dist/deck-client/assets/{wardley-RL74JXVD-2t7cMqdS.js → wardley-RL74JXVD-CHZiUbBa.js} +1 -1
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-DzboAsHh.js → wardleyDiagram-NUSXRM2D-hpwdFfGj.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-CgTP9u2V.js → xychartDiagram-5P7HB3ND-DYkotwy8.js} +1 -1
- package/dist/deck-client/index.html +2 -2
- package/dist/server/cli.js +91 -13
- package/dist/server/council-entry.js +0 -0
- package/dist/server/deck-mcp-entry.js +83 -40
- package/dist/server/deck-serve.js +54 -20
- package/dist/server/fb-wizard.js +0 -0
- package/dist/server/init-entry.js +952 -290
- package/dist/server/radar-docker-init-entry.js +239 -0
- package/dist/server/radar-entrypoint-entry.js +99 -0
- package/dist/server/radar-teardown-entry.js +477 -0
- package/dist/server/recall-entry.js +4 -1
- package/package.json +22 -23
- package/scaffolds/ls-marketplace/plugins/kit/commands/activate-statusline.md +5 -5
- package/scaffolds/ls-marketplace/plugins/kit/skills/diagram/SKILL.md +27 -5
- package/scaffolds/ls-marketplace/plugins/kit/skills/ship/SKILL.md +274 -0
- package/scaffolds/migrate-safety/scripts/migrate-with-backup.sh +0 -0
- package/scaffolds/recall-hook/scripts/ensure-recall.sh +0 -0
- package/scaffolds/statusline/statusline-mcp.sh +82 -2
- package/scaffolds/statusline/statusline-wrapper.sh +8 -1
- package/dist/chart-client/assets/index-CDIhdgWg.css +0 -1
- package/dist/client/assets/index-CfW4n40I.css +0 -32
- package/dist/council-client/assets/index-CZim6x1u.css +0 -1
- package/dist/deck-client/assets/channel-DmR7Tyyt.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-Bl4ozQWs.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-Bl4ozQWs.js +0 -1
- package/dist/deck-client/assets/clone-BAy58j24.js +0 -1
- package/dist/deck-client/assets/index-BlTlhxFW.css +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-CR7riiab.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,aC as Si,R as Wt}from"./index-
|
|
1
|
+
import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,aC as Si,R as Wt}from"./index-BtQBaQ7s.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-DmTsuIvK.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&>.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
|
|
2
2
|
`+D.showPosition()+`
|
|
3
3
|
Expecting `+gt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":yt="Parse error on line "+(ct+1)+": Unexpected "+(M==Mt?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(yt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:pt,expected:gt})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+M);switch(z[0]){case 1:g.push(M),C.push(D.yytext),r.push(D.yylloc),g.push(z[1]),M=null,It=D.yyleng,d=D.yytext,ct=D.yylineno,pt=D.yylloc;break;case 2:if(N=this.productions_[z[1]][1],G.$=C[C.length-N],G._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},ci&&(G._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),mt=this.performAction.apply(G,[d,It,ct,$.yy,z[1],C,r].concat(li)),typeof mt<"u")return mt;N&&(g=g.slice(0,-1*N*2),C=C.slice(0,-1*N),r=r.slice(0,-1*N)),g.push(this.productions_[z[1]][0]),C.push(G.$),r.push(G._$),Bt=rt[g[g.length-2]][g[g.length-1]],g.push(Bt);break;case 3:return!0}}return!0},"parse")},k=function(){var F={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
if (dark) document.documentElement.classList.add('dark');
|
|
13
13
|
})();
|
|
14
14
|
</script>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-BtQBaQ7s.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B-YQq5b5.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
<div id="root"></div>
|
package/dist/server/cli.js
CHANGED
|
@@ -28404,14 +28404,38 @@ var BACKOFF_MIN_MS = 1e3;
|
|
|
28404
28404
|
var BACKOFF_MAX_MS = 3e5;
|
|
28405
28405
|
var SELFTEST_INTERVAL_MS = 1e3;
|
|
28406
28406
|
var SELFTEST_TIMEOUT_MS = 9e4;
|
|
28407
|
+
function resolveTunnelMode(env = process.env) {
|
|
28408
|
+
const token = env.RADAR_CF_TUNNEL_TOKEN?.trim();
|
|
28409
|
+
const hostname = env.RADAR_CF_TUNNEL_HOSTNAME?.trim()?.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
28410
|
+
if (!token && !hostname) return { kind: "quick" };
|
|
28411
|
+
if (!token || !hostname) {
|
|
28412
|
+
const missing = !token ? "RADAR_CF_TUNNEL_TOKEN" : "RADAR_CF_TUNNEL_HOSTNAME";
|
|
28413
|
+
throw new Error(
|
|
28414
|
+
`[radar] named-tunnel config is partial \u2014 ${missing} is not set. Set BOTH RADAR_CF_TUNNEL_TOKEN and RADAR_CF_TUNNEL_HOSTNAME for a stable paid tunnel, or unset both to fall back to the free quick tunnel.`
|
|
28415
|
+
);
|
|
28416
|
+
}
|
|
28417
|
+
return { kind: "named", token, hostname };
|
|
28418
|
+
}
|
|
28419
|
+
var NAMED_FATAL_PATTERNS = [
|
|
28420
|
+
/\bunauthorized\b/i,
|
|
28421
|
+
/\b401\b/,
|
|
28422
|
+
/invalid (tunnel )?token/i,
|
|
28423
|
+
/token (is )?expired/i,
|
|
28424
|
+
/tunnel .{0,80}? not found/i,
|
|
28425
|
+
/failed to (provision|find|authenticate) tunnel/i,
|
|
28426
|
+
/failed to read tunnel credentials/i,
|
|
28427
|
+
/jwt.*expired/i
|
|
28428
|
+
];
|
|
28407
28429
|
var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
28408
|
-
constructor(localPort) {
|
|
28430
|
+
constructor(localPort, mode = { kind: "quick" }) {
|
|
28409
28431
|
super();
|
|
28410
28432
|
this.tunnel = null;
|
|
28411
28433
|
this.currentUrl = null;
|
|
28412
28434
|
this.stopping = false;
|
|
28435
|
+
this.fatal = false;
|
|
28413
28436
|
this.restartAttempt = 0;
|
|
28414
28437
|
this.localPort = localPort;
|
|
28438
|
+
this.mode = mode;
|
|
28415
28439
|
}
|
|
28416
28440
|
get publicUrl() {
|
|
28417
28441
|
return this.currentUrl;
|
|
@@ -28427,6 +28451,11 @@ var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
|
28427
28451
|
throw new Error(`Failed to install cloudflared binary: ${msg}`);
|
|
28428
28452
|
}
|
|
28429
28453
|
}
|
|
28454
|
+
if (this.mode.kind === "named") {
|
|
28455
|
+
console.log(`[radar] mode=named host=${this.mode.hostname} (paid \xB7 stable URL)`);
|
|
28456
|
+
} else {
|
|
28457
|
+
console.log(`[radar] mode=quick (free \xB7 *.trycloudflare.com \xB7 ephemeral URL)`);
|
|
28458
|
+
}
|
|
28430
28459
|
this.spawnOnce();
|
|
28431
28460
|
}
|
|
28432
28461
|
async stop() {
|
|
@@ -28447,10 +28476,11 @@ var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
|
28447
28476
|
});
|
|
28448
28477
|
}
|
|
28449
28478
|
spawnOnce() {
|
|
28450
|
-
|
|
28479
|
+
if (this.fatal) return;
|
|
28480
|
+
const tun = this.mode.kind === "named" ? import_cloudflared.Tunnel.withToken(this.mode.token) : import_cloudflared.Tunnel.quick(`http://127.0.0.1:${this.localPort}`);
|
|
28451
28481
|
this.tunnel = tun;
|
|
28452
28482
|
this.currentUrl = null;
|
|
28453
|
-
let urlSeen = null;
|
|
28483
|
+
let urlSeen = this.mode.kind === "named" ? `https://${this.mode.hostname}` : null;
|
|
28454
28484
|
let connectedSeen = false;
|
|
28455
28485
|
let announced = false;
|
|
28456
28486
|
const announceIfReady = () => {
|
|
@@ -28460,6 +28490,7 @@ var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
|
28460
28490
|
void this.selfTestAndAnnounce(url);
|
|
28461
28491
|
};
|
|
28462
28492
|
tun.on("url", (url) => {
|
|
28493
|
+
if (this.mode.kind === "named") return;
|
|
28463
28494
|
if (urlSeen === url) return;
|
|
28464
28495
|
urlSeen = url;
|
|
28465
28496
|
console.log(`[radar] tunnel subdomain assigned: ${url} (waiting for edge connection)`);
|
|
@@ -28472,6 +28503,17 @@ var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
|
28472
28503
|
}
|
|
28473
28504
|
announceIfReady();
|
|
28474
28505
|
});
|
|
28506
|
+
if (this.mode.kind === "named") {
|
|
28507
|
+
tun.on("stderr", (line) => {
|
|
28508
|
+
if (this.fatal) return;
|
|
28509
|
+
for (const pat of NAMED_FATAL_PATTERNS) {
|
|
28510
|
+
if (pat.test(line)) {
|
|
28511
|
+
this.markFatal(`cloudflared rejected the named-tunnel config \u2014 ${line.trim().slice(0, 200)}`);
|
|
28512
|
+
return;
|
|
28513
|
+
}
|
|
28514
|
+
}
|
|
28515
|
+
});
|
|
28516
|
+
}
|
|
28475
28517
|
tun.on("error", (err2) => {
|
|
28476
28518
|
if (this.stopping) return;
|
|
28477
28519
|
console.error(`[radar] cloudflared error: ${err2.message}`);
|
|
@@ -28480,10 +28522,28 @@ var CloudflaredTunnel = class extends import_node_events.EventEmitter {
|
|
|
28480
28522
|
if (this.stopping) return;
|
|
28481
28523
|
this.tunnel = null;
|
|
28482
28524
|
this.currentUrl = null;
|
|
28525
|
+
if (this.fatal) return;
|
|
28483
28526
|
this.emit("crashed", code);
|
|
28484
28527
|
this.scheduleRestart();
|
|
28485
28528
|
});
|
|
28486
28529
|
}
|
|
28530
|
+
/**
|
|
28531
|
+
* Mark the tunnel fatally broken. Suppresses restart-on-crash and notifies
|
|
28532
|
+
* the parent so it can surface status=error to the UI. Named-mode only —
|
|
28533
|
+
* quick mode has no auth surface to fail on.
|
|
28534
|
+
*/
|
|
28535
|
+
markFatal(reason) {
|
|
28536
|
+
if (this.fatal) return;
|
|
28537
|
+
this.fatal = true;
|
|
28538
|
+
this.stopping = true;
|
|
28539
|
+
console.error(`[radar] FATAL: ${reason}`);
|
|
28540
|
+
console.error(`[radar] not falling back to free tunnel \u2014 fix RADAR_CF_TUNNEL_TOKEN / RADAR_CF_TUNNEL_HOSTNAME (or unset both) and restart.`);
|
|
28541
|
+
this.emit("fatal", reason);
|
|
28542
|
+
try {
|
|
28543
|
+
this.tunnel?.stop();
|
|
28544
|
+
} catch {
|
|
28545
|
+
}
|
|
28546
|
+
}
|
|
28487
28547
|
/**
|
|
28488
28548
|
* Poll the public URL until any HTTP response comes back (proving DNS +
|
|
28489
28549
|
* edge + tunnel work end-to-end), then announce ready. Network errors are
|
|
@@ -28555,7 +28615,7 @@ var Radar = class {
|
|
|
28555
28615
|
orgSlug: opts.orgSlug,
|
|
28556
28616
|
projectSlug: opts.projectSlug
|
|
28557
28617
|
});
|
|
28558
|
-
this.tunnel = new CloudflaredTunnel(opts.localPort);
|
|
28618
|
+
this.tunnel = new CloudflaredTunnel(opts.localPort, resolveTunnelMode());
|
|
28559
28619
|
this.maxConcurrent = parsePositiveInt(process.env.RADAR_MAX_CONCURRENT_ANALYSES);
|
|
28560
28620
|
const callbacks = {
|
|
28561
28621
|
onLive: () => this.handleLive(),
|
|
@@ -28577,6 +28637,11 @@ var Radar = class {
|
|
|
28577
28637
|
this.tunnel.on("crashed", (code) => {
|
|
28578
28638
|
console.error(`[radar] tunnel exited (code=${code ?? "?"}) \u2014 restarting`);
|
|
28579
28639
|
});
|
|
28640
|
+
this.tunnel.on("fatal", (reason) => {
|
|
28641
|
+
this.status = "error";
|
|
28642
|
+
console.error(`[radar] named tunnel halted: ${reason}`);
|
|
28643
|
+
this.broadcastStatus();
|
|
28644
|
+
});
|
|
28580
28645
|
void this.tunnel.start();
|
|
28581
28646
|
this.autoResumeRecentlyInterrupted();
|
|
28582
28647
|
}
|
|
@@ -36999,6 +37064,14 @@ if (parsedArgs.subcommand === "graph:generate" || parsedArgs.subcommand === "gra
|
|
|
36999
37064
|
);
|
|
37000
37065
|
process.exit(result.status ?? 1);
|
|
37001
37066
|
}
|
|
37067
|
+
if (parsedArgs.subcommand === "radar:teardown") {
|
|
37068
|
+
const result = (0, import_child_process4.spawnSync)(
|
|
37069
|
+
process.execPath,
|
|
37070
|
+
[import_path9.default.join(__dirname, "radar-teardown-entry.js"), ...process.argv.slice(3)],
|
|
37071
|
+
{ stdio: "inherit" }
|
|
37072
|
+
);
|
|
37073
|
+
process.exit(result.status ?? 1);
|
|
37074
|
+
}
|
|
37002
37075
|
if (parsedArgs.subcommand === "mcp:graph") {
|
|
37003
37076
|
startGraphMcpServer();
|
|
37004
37077
|
}
|
|
@@ -37458,15 +37531,20 @@ if (!__isMcpMode) {
|
|
|
37458
37531
|
console.log(`LaunchPod radar \xB7 ${localUrl}`);
|
|
37459
37532
|
console.log(` cloud: ${cfg.serverUrl} \xB7 source: ${cfg.source}`);
|
|
37460
37533
|
console.log(` org: ${cfg.orgSlug} \xB7 project: ${cfg.projectSlug}`);
|
|
37461
|
-
|
|
37462
|
-
|
|
37463
|
-
|
|
37464
|
-
|
|
37465
|
-
|
|
37466
|
-
|
|
37467
|
-
|
|
37468
|
-
|
|
37469
|
-
|
|
37534
|
+
try {
|
|
37535
|
+
radar = new Radar({
|
|
37536
|
+
projectRoot: PROJECT_DIR,
|
|
37537
|
+
localPort: PORT,
|
|
37538
|
+
localUrl,
|
|
37539
|
+
serverUrl: cfg.serverUrl,
|
|
37540
|
+
pat: cfg.pat,
|
|
37541
|
+
orgSlug: cfg.orgSlug,
|
|
37542
|
+
projectSlug: cfg.projectSlug
|
|
37543
|
+
});
|
|
37544
|
+
} catch (err2) {
|
|
37545
|
+
console.error(`${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
37546
|
+
process.exit(1);
|
|
37547
|
+
}
|
|
37470
37548
|
radar.attachWebSocketServer(server, "/api/radar/stream");
|
|
37471
37549
|
radar.start();
|
|
37472
37550
|
initLaunchPodTerminalBridge(server, PROJECT_DIR);
|
|
File without changes
|
|
@@ -914,6 +914,31 @@ function renderRichHtml(opts) {
|
|
|
914
914
|
}
|
|
915
915
|
return opts.content;
|
|
916
916
|
}
|
|
917
|
+
function renderWiredBody(body) {
|
|
918
|
+
return `<style>
|
|
919
|
+
:host {
|
|
920
|
+
display: block;
|
|
921
|
+
padding: 24px;
|
|
922
|
+
font-family: 'Gloria Hallelujah', 'DM Sans', system-ui, sans-serif;
|
|
923
|
+
color: var(--page-fg, currentColor);
|
|
924
|
+
}
|
|
925
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
926
|
+
h1, h2, h3, h4 { font-family: 'Gloria Hallelujah', cursive; margin: 0.5em 0; }
|
|
927
|
+
a { color: var(--page-accent, #7c3aed); }
|
|
928
|
+
.row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
|
|
929
|
+
.col { display: flex; flex-direction: column; gap: 12px; align-items: stretch; }
|
|
930
|
+
.card { padding: 16px; }
|
|
931
|
+
wired-button, wired-card, wired-checkbox, wired-radio, wired-toggle,
|
|
932
|
+
wired-input, wired-textarea, wired-search-input, wired-combo, wired-item,
|
|
933
|
+
wired-listbox, wired-link, wired-tabs, wired-tab, wired-fab,
|
|
934
|
+
wired-icon-button, wired-divider, wired-progress, wired-slider,
|
|
935
|
+
wired-calendar, wired-dialog {
|
|
936
|
+
color: inherit;
|
|
937
|
+
background: transparent;
|
|
938
|
+
}
|
|
939
|
+
</style>
|
|
940
|
+
${body}`;
|
|
941
|
+
}
|
|
917
942
|
function themeResolverScript(initial) {
|
|
918
943
|
return `<script>
|
|
919
944
|
(function () {
|
|
@@ -1417,26 +1442,35 @@ async function startDeckServer(opts = {}) {
|
|
|
1417
1442
|
}
|
|
1418
1443
|
}
|
|
1419
1444
|
if (block.type === "rich-html" && block.content) {
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
content
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
}
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1445
|
+
const framework = block.framework ?? "raw";
|
|
1446
|
+
if (framework === "wired") {
|
|
1447
|
+
try {
|
|
1448
|
+
block.content = renderWiredBody(block.content);
|
|
1449
|
+
} catch (err) {
|
|
1450
|
+
console.error("Failed to render wired body:", err);
|
|
1451
|
+
}
|
|
1452
|
+
} else {
|
|
1453
|
+
try {
|
|
1454
|
+
const html = renderRichHtml({
|
|
1455
|
+
framework,
|
|
1456
|
+
content: block.content,
|
|
1457
|
+
theme: block.theme,
|
|
1458
|
+
title: block.label
|
|
1459
|
+
});
|
|
1460
|
+
const sessionEncoded = encodeURIComponent(body.session);
|
|
1461
|
+
const baseUrl = `/deck-files/${sessionEncoded}`;
|
|
1462
|
+
const filename = `${slugify(block.label)}.html`;
|
|
1463
|
+
const dir = import_node_path3.default.join(cwd, LAUNCHSECURE_DIR, "deck-files", body.session);
|
|
1464
|
+
import_node_fs3.default.mkdirSync(dir, { recursive: true });
|
|
1465
|
+
import_node_fs3.default.writeFileSync(import_node_path3.default.join(dir, filename), html);
|
|
1466
|
+
block.type = "iframe";
|
|
1467
|
+
block.src = `${baseUrl}/${filename}`;
|
|
1468
|
+
delete block.content;
|
|
1469
|
+
delete block.framework;
|
|
1470
|
+
delete block.theme;
|
|
1471
|
+
} catch (err) {
|
|
1472
|
+
console.error("Failed to generate rich-html:", err);
|
|
1473
|
+
}
|
|
1440
1474
|
}
|
|
1441
1475
|
}
|
|
1442
1476
|
}
|
|
@@ -1808,26 +1842,35 @@ async function handleTool(name, args) {
|
|
|
1808
1842
|
}
|
|
1809
1843
|
}
|
|
1810
1844
|
if (block.type === "rich-html" && block.content) {
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
content
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
}
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1845
|
+
const framework = block.framework ?? "raw";
|
|
1846
|
+
if (framework === "wired") {
|
|
1847
|
+
try {
|
|
1848
|
+
block.content = renderWiredBody(block.content);
|
|
1849
|
+
} catch (err) {
|
|
1850
|
+
return text(JSON.stringify({ error: `Failed to render wired body: ${err}` }));
|
|
1851
|
+
}
|
|
1852
|
+
} else {
|
|
1853
|
+
try {
|
|
1854
|
+
const html = renderRichHtml({
|
|
1855
|
+
framework,
|
|
1856
|
+
content: block.content,
|
|
1857
|
+
theme: block.theme,
|
|
1858
|
+
title: block.label
|
|
1859
|
+
});
|
|
1860
|
+
const sessionEncoded = encodeURIComponent(session);
|
|
1861
|
+
const baseUrl = `/deck-files/${sessionEncoded}`;
|
|
1862
|
+
const filename = `${slugify(block.label)}.html`;
|
|
1863
|
+
const dir = (0, import_node_path4.join)(projectRoot, LAUNCHSECURE_DIR, "deck-files", session);
|
|
1864
|
+
import_node_fs4.default.mkdirSync(dir, { recursive: true });
|
|
1865
|
+
import_node_fs4.default.writeFileSync((0, import_node_path4.join)(dir, filename), html);
|
|
1866
|
+
block.type = "iframe";
|
|
1867
|
+
block.src = `${baseUrl}/${filename}`;
|
|
1868
|
+
delete block.content;
|
|
1869
|
+
delete block.framework;
|
|
1870
|
+
delete block.theme;
|
|
1871
|
+
} catch (err) {
|
|
1872
|
+
return text(JSON.stringify({ error: `Failed to generate rich-html: ${err}` }));
|
|
1873
|
+
}
|
|
1831
1874
|
}
|
|
1832
1875
|
}
|
|
1833
1876
|
}
|
|
@@ -904,6 +904,31 @@ function renderRichHtml(opts) {
|
|
|
904
904
|
}
|
|
905
905
|
return opts.content;
|
|
906
906
|
}
|
|
907
|
+
function renderWiredBody(body) {
|
|
908
|
+
return `<style>
|
|
909
|
+
:host {
|
|
910
|
+
display: block;
|
|
911
|
+
padding: 24px;
|
|
912
|
+
font-family: 'Gloria Hallelujah', 'DM Sans', system-ui, sans-serif;
|
|
913
|
+
color: var(--page-fg, currentColor);
|
|
914
|
+
}
|
|
915
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
916
|
+
h1, h2, h3, h4 { font-family: 'Gloria Hallelujah', cursive; margin: 0.5em 0; }
|
|
917
|
+
a { color: var(--page-accent, #7c3aed); }
|
|
918
|
+
.row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
|
|
919
|
+
.col { display: flex; flex-direction: column; gap: 12px; align-items: stretch; }
|
|
920
|
+
.card { padding: 16px; }
|
|
921
|
+
wired-button, wired-card, wired-checkbox, wired-radio, wired-toggle,
|
|
922
|
+
wired-input, wired-textarea, wired-search-input, wired-combo, wired-item,
|
|
923
|
+
wired-listbox, wired-link, wired-tabs, wired-tab, wired-fab,
|
|
924
|
+
wired-icon-button, wired-divider, wired-progress, wired-slider,
|
|
925
|
+
wired-calendar, wired-dialog {
|
|
926
|
+
color: inherit;
|
|
927
|
+
background: transparent;
|
|
928
|
+
}
|
|
929
|
+
</style>
|
|
930
|
+
${body}`;
|
|
931
|
+
}
|
|
907
932
|
function themeResolverScript(initial) {
|
|
908
933
|
return `<script>
|
|
909
934
|
(function () {
|
|
@@ -1400,26 +1425,35 @@ async function startDeckServer(opts = {}) {
|
|
|
1400
1425
|
}
|
|
1401
1426
|
}
|
|
1402
1427
|
if (block.type === "rich-html" && block.content) {
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
content
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
}
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1428
|
+
const framework = block.framework ?? "raw";
|
|
1429
|
+
if (framework === "wired") {
|
|
1430
|
+
try {
|
|
1431
|
+
block.content = renderWiredBody(block.content);
|
|
1432
|
+
} catch (err) {
|
|
1433
|
+
console.error("Failed to render wired body:", err);
|
|
1434
|
+
}
|
|
1435
|
+
} else {
|
|
1436
|
+
try {
|
|
1437
|
+
const html = renderRichHtml({
|
|
1438
|
+
framework,
|
|
1439
|
+
content: block.content,
|
|
1440
|
+
theme: block.theme,
|
|
1441
|
+
title: block.label
|
|
1442
|
+
});
|
|
1443
|
+
const sessionEncoded = encodeURIComponent(body.session);
|
|
1444
|
+
const baseUrl = `/deck-files/${sessionEncoded}`;
|
|
1445
|
+
const filename = `${slugify(block.label)}.html`;
|
|
1446
|
+
const dir = import_node_path3.default.join(cwd, LAUNCHSECURE_DIR, "deck-files", body.session);
|
|
1447
|
+
import_node_fs3.default.mkdirSync(dir, { recursive: true });
|
|
1448
|
+
import_node_fs3.default.writeFileSync(import_node_path3.default.join(dir, filename), html);
|
|
1449
|
+
block.type = "iframe";
|
|
1450
|
+
block.src = `${baseUrl}/${filename}`;
|
|
1451
|
+
delete block.content;
|
|
1452
|
+
delete block.framework;
|
|
1453
|
+
delete block.theme;
|
|
1454
|
+
} catch (err) {
|
|
1455
|
+
console.error("Failed to generate rich-html:", err);
|
|
1456
|
+
}
|
|
1423
1457
|
}
|
|
1424
1458
|
}
|
|
1425
1459
|
}
|
package/dist/server/fb-wizard.js
CHANGED
|
File without changes
|