ripplo 0.7.23 → 0.7.24

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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{aa as a,ba as b,ca as c,da as d,ea as e,fa as f,ga as g,ha as h,ia as i,ja as j,ka as k}from"./chunk-R7CQWEBF.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";export{b as renderDaemonBindError,g as renderDaemonLockCompromised,f as renderDaemonLockHeld,e as renderDaemonReady,h as renderDaemonStatus,j as renderDaemonVersionNote,i as renderExplorationProgress,d as renderNotSignedIn,c as renderProjectAccessDenied,a as renderTunnelProvisionFailed,k as wireOutcome};
2
+ import{aa as a,ba as b,ca as c,da as d,ea as e,fa as f,ga as g,ha as h,ia as i,ja as j,ka as k}from"./chunk-E4ODIHV7.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";export{b as renderDaemonBindError,g as renderDaemonLockCompromised,f as renderDaemonLockHeld,e as renderDaemonReady,h as renderDaemonStatus,j as renderDaemonVersionNote,i as renderExplorationProgress,d as renderNotSignedIn,c as renderProjectAccessDenied,a as renderTunnelProvisionFailed,k as wireOutcome};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{A as re,C as de,F as C,H as ce,I as ue,K as pe,L as fe,N as h,O as Re,b as G,ba as w,ca as T,da as ve,e as Q,ea as q,fa as Pe,h as y,ha as _,i as A,ia as xe,ja as he,l as H,la as be,na as Ee,pa as Ie,q as X,qa as Ce,ra as Te,sa as We,t as I,ta as Le,ua as De,v as Z,va as Ae,w as ee,wa as He,ya as Fe,za as qe}from"./chunk-MOJRP3IN.js";import{H as te,N as ie,P as ae,Q as se,R as F,Z as le,ba as me,c as J,ca as ye,da as ge,ea as ke,fa as we,g as K,ga as Se,h as V,k as Y,n as ne,p as oe}from"./chunk-R7CQWEBF.js";import{b as _e}from"./chunk-BJVAPI4P.js";import{c as B,d as E,e as l,f as D,g as z}from"./chunk-EVYYSTR7.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";import sn from"path";import{createClient as ln}from"graphql-sse";import dn,{AbortError as cn}from"p-retry";import{graphql as N}from"gql.tada";import{graphql as Pr}from"gql.tada";import{print as xr}from"graphql";async function $e({config:e,cwd:n,headed:r,pool:t,runId:o,signal:i,testSlug:a,workClass:s,workflowSlug:d}){let{fingerprint:c,result:u}=await y(n);if(u.isErr())return await C(e,o,`lockfile:${u.error.kind}`),{kind:"dispatch-error",reason:{detail:`lockfile:${u.error.kind}`,type:"generic"}};let f=vr(u.value,{testSlug:a,workflowSlug:d});if(f==null)return await C(e,o,`no-test:${d}/${a}`),{kind:"dispatch-error",reason:{detail:`no-test:${d}/${a}`,type:"generic"}};let m=await w({headed:r,workClass:s,task:()=>t.execute({headed:r,lockfileFingerprint:c,runId:o,testRef:f},i)});return!m.serverNotified&&m.outcome.kind==="error"&&await C(e,o,m.outcome.detail),m.outcome}function vr(e,{testSlug:n,workflowSlug:r}){let o=e.workflows.find(i=>Y(i.name)===r)?.tests.find(i=>i.slug===n);return o==null?void 0:ne(o)}var hr=6e4,br=Pr(`
2
+ import{A as re,C as de,F as C,H as ce,I as ue,K as pe,L as fe,N as h,O as Re,b as G,ba as w,ca as T,da as ve,e as Q,ea as q,fa as Pe,h as y,ha as _,i as A,ia as xe,ja as he,l as H,la as be,na as Ee,pa as Ie,q as X,qa as Ce,ra as Te,sa as We,t as I,ta as Le,ua as De,v as Z,va as Ae,w as ee,wa as He,ya as Fe,za as qe}from"./chunk-3NSJ5N67.js";import{H as te,N as ie,P as ae,Q as se,R as F,Z as le,ba as me,c as J,ca as ye,da as ge,ea as ke,fa as we,g as K,ga as Se,h as V,k as Y,n as ne,p as oe}from"./chunk-E4ODIHV7.js";import{b as _e}from"./chunk-BJVAPI4P.js";import{c as B,d as E,e as l,f as D,g as z}from"./chunk-EVYYSTR7.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";import sn from"path";import{createClient as ln}from"graphql-sse";import dn,{AbortError as cn}from"p-retry";import{graphql as N}from"gql.tada";import{graphql as Pr}from"gql.tada";import{print as xr}from"graphql";async function $e({config:e,cwd:n,headed:r,pool:t,runId:o,signal:i,testSlug:a,workClass:s,workflowSlug:d}){let{fingerprint:c,result:u}=await y(n);if(u.isErr())return await C(e,o,`lockfile:${u.error.kind}`),{kind:"dispatch-error",reason:{detail:`lockfile:${u.error.kind}`,type:"generic"}};let f=vr(u.value,{testSlug:a,workflowSlug:d});if(f==null)return await C(e,o,`no-test:${d}/${a}`),{kind:"dispatch-error",reason:{detail:`no-test:${d}/${a}`,type:"generic"}};let m=await w({headed:r,workClass:s,task:()=>t.execute({headed:r,lockfileFingerprint:c,runId:o,testRef:f},i)});return!m.serverNotified&&m.outcome.kind==="error"&&await C(e,o,m.outcome.detail),m.outcome}function vr(e,{testSlug:n,workflowSlug:r}){let o=e.workflows.find(i=>Y(i.name)===r)?.tests.find(i=>i.slug===n);return o==null?void 0:ne(o)}var hr=6e4,br=Pr(`
3
3
  subscription RunRequestedWatch($devSessionId: String!) {
4
4
  runRequested(devSessionId: $devSessionId) {
5
5
  runId
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{$ as Tn,A as oe,B as Hr,C as ie,D as b,E as un,G as mn,H as fn,I as gn,J as hn,L as yn,M as kn,N as er,O as V,P as rr,Q as Sn,R as xn,S as Rn,T as Cn,U as Pn,V as En,W as $n,X as In,Y as jn,Z as An,_ as Se,a as $r,aa as Ln,b as B,c as Ir,d as jr,e as P,f as ye,g as L,ga as ae,h as Tr,ha as Dn,i as x,ia as nr,j as c,k as Lr,ka as On,l as v,m as Dr,ma as _n,n as Or,o as _r,oa as Fn,p as Fr,q as E,qa as Nn,r as I,ra as Un,s as Nr,sa as Mn,t as w,ta as Hn,u as ke,ua as Wn,va as qn,x as _,xa as Bn,y as Ur,ya as Vn,z as Mr}from"./chunk-MOJRP3IN.js";import{$ as pn,A as Zr,B as en,C as rn,D as nn,E as tn,F as on,I as ve,N as sn,P as Ye,Q as Ze,R as an,S as ln,T as be,Y as dn,_ as cn,c as J,d as Ar,g as N,ha as wn,ia as se,ja as vn,k as O,ka as bn,l as Wr,m as qr,n as Xe,o as Br,p as K,q as Vr,r as Gr,s as we,t as C,u as zr,v as Jr,w as Kr,x as Qr,y as Xr,z as Yr}from"./chunk-R7CQWEBF.js";import{a as wr,b as vr,c as br,d as m,e as $,g as he,h as Sr,k as D,l as xr,m as Rr,n as Qe,o as Cr,p as Pr,q as Er}from"./chunk-EVYYSTR7.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";import Ac from"update-notifier";import Tc from"yargs";import{hideBin as Lc}from"yargs/helpers";function xe({current:e,latest:r}){return r==null?`ripplo v${e} (latest: unknown)`:r===e?`ripplo v${e} (latest)`:`ripplo v${e} (latest: v${r} \u2014 run \`npx ripplo update\`)`}function Gn(){return"Update available {currentVersion} \u2192 {latestVersion}\nRun `npx ripplo update`"}import{graphql as Wi}from"gql.tada";import{exec as Ai}from"child_process";import{createAuthClient as Ii}from"better-auth/client";import{deviceAuthorizationClient as ji}from"better-auth/client/plugins";function zn({baseURL:e}){return Ii({baseURL:e,fetchOptions:{headers:{"User-Agent":"Ripplo CLI"}},plugins:[ji()]})}import{err as Jn,ok as Ti}from"neverthrow";var Li=5e3,Kn="ripplo-cli";async function Qn({onDeviceCode:e,url:r}){let n=r??Nr().RIPPLO_SERVER_URL,t=zn({baseURL:n}),o=await t.device.code({client_id:Kn});if(o.error!=null)return Jn({description:o.error.error_description,kind:"oauth-device-code-failed"});let{device_code:i,user_code:a,verification_uri_complete:s}=o.data;return e({userCode:a,verificationUrl:s}),Ui(s),(await Di({authClient:t,deviceCode:i})).map(d=>(xr({serverUrl:n,token:d}),d))}async function Di({authClient:e,deviceCode:r}){for(;;){await Fi(Li);let n=await e.device.token({client_id:Kn,device_code:r,grant_type:"urn:ietf:params:oauth:grant-type:device_code"});if(n.data?.access_token!=null)return Ti(n.data.access_token);if(n.error==null)continue;if(!_i(n.error.error))return Jn({code:n.error.error,description:n.error.error_description,kind:"oauth-authorization-failed"})}}var Oi=new Set(["authorization_pending","slow_down"]);function _i(e){return Oi.has(e)}function Fi(e){return new Promise(r=>{setTimeout(r,e)})}function Ni(){return process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open"}function Ui(e){let r=Ni();Ai(`${r} "${e}"`,()=>{})}function U({serverUrl:e,token:r}){return{appUrl:"",cwd:process.cwd(),engineUrl:"",projectId:"",ripploServerUrl:e,token:r,tunnelAuth:void 0,webhookSecret:""}}import Mi from"fs";import Hi from"path";function f(e){return Mi.existsSync(Hi.join(e,".ripplo"))}var qi=Wi(`
2
+ import{$ as Tn,A as oe,B as Hr,C as ie,D as b,E as un,G as mn,H as fn,I as gn,J as hn,L as yn,M as kn,N as er,O as V,P as rr,Q as Sn,R as xn,S as Rn,T as Cn,U as Pn,V as En,W as $n,X as In,Y as jn,Z as An,_ as Se,a as $r,aa as Ln,b as B,c as Ir,d as jr,e as P,f as ye,g as L,ga as ae,h as Tr,ha as Dn,i as x,ia as nr,j as c,k as Lr,ka as On,l as v,m as Dr,ma as _n,n as Or,o as _r,oa as Fn,p as Fr,q as E,qa as Nn,r as I,ra as Un,s as Nr,sa as Mn,t as w,ta as Hn,u as ke,ua as Wn,va as qn,x as _,xa as Bn,y as Ur,ya as Vn,z as Mr}from"./chunk-3NSJ5N67.js";import{$ as pn,A as Zr,B as en,C as rn,D as nn,E as tn,F as on,I as ve,N as sn,P as Ye,Q as Ze,R as an,S as ln,T as be,Y as dn,_ as cn,c as J,d as Ar,g as N,ha as wn,ia as se,ja as vn,k as O,ka as bn,l as Wr,m as qr,n as Xe,o as Br,p as K,q as Vr,r as Gr,s as we,t as C,u as zr,v as Jr,w as Kr,x as Qr,y as Xr,z as Yr}from"./chunk-E4ODIHV7.js";import{a as wr,b as vr,c as br,d as m,e as $,g as he,h as Sr,k as D,l as xr,m as Rr,n as Qe,o as Cr,p as Pr,q as Er}from"./chunk-EVYYSTR7.js";import"./chunk-IHSHBPJY.js";import"./chunk-7UWDMECF.js";import Ac from"update-notifier";import Tc from"yargs";import{hideBin as Lc}from"yargs/helpers";function xe({current:e,latest:r}){return r==null?`ripplo v${e} (latest: unknown)`:r===e?`ripplo v${e} (latest)`:`ripplo v${e} (latest: v${r} \u2014 run \`npx ripplo update\`)`}function Gn(){return"Update available {currentVersion} \u2192 {latestVersion}\nRun `npx ripplo update`"}import{graphql as Wi}from"gql.tada";import{exec as Ai}from"child_process";import{createAuthClient as Ii}from"better-auth/client";import{deviceAuthorizationClient as ji}from"better-auth/client/plugins";function zn({baseURL:e}){return Ii({baseURL:e,fetchOptions:{headers:{"User-Agent":"Ripplo CLI"}},plugins:[ji()]})}import{err as Jn,ok as Ti}from"neverthrow";var Li=5e3,Kn="ripplo-cli";async function Qn({onDeviceCode:e,url:r}){let n=r??Nr().RIPPLO_SERVER_URL,t=zn({baseURL:n}),o=await t.device.code({client_id:Kn});if(o.error!=null)return Jn({description:o.error.error_description,kind:"oauth-device-code-failed"});let{device_code:i,user_code:a,verification_uri_complete:s}=o.data;return e({userCode:a,verificationUrl:s}),Ui(s),(await Di({authClient:t,deviceCode:i})).map(d=>(xr({serverUrl:n,token:d}),d))}async function Di({authClient:e,deviceCode:r}){for(;;){await Fi(Li);let n=await e.device.token({client_id:Kn,device_code:r,grant_type:"urn:ietf:params:oauth:grant-type:device_code"});if(n.data?.access_token!=null)return Ti(n.data.access_token);if(n.error==null)continue;if(!_i(n.error.error))return Jn({code:n.error.error,description:n.error.error_description,kind:"oauth-authorization-failed"})}}var Oi=new Set(["authorization_pending","slow_down"]);function _i(e){return Oi.has(e)}function Fi(e){return new Promise(r=>{setTimeout(r,e)})}function Ni(){return process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open"}function Ui(e){let r=Ni();Ai(`${r} "${e}"`,()=>{})}function U({serverUrl:e,token:r}){return{appUrl:"",cwd:process.cwd(),engineUrl:"",projectId:"",ripploServerUrl:e,token:r,tunnelAuth:void 0,webhookSecret:""}}import Mi from"fs";import Hi from"path";function f(e){return Mi.existsSync(Hi.join(e,".ripplo"))}var qi=Wi(`
3
3
  query AuthViewer {
4
4
  currentUser {
5
5
  name
@@ -342,7 +342,7 @@ ${e.findings.map(t=>zr({evidencePath:void 0,finding:t})).join(`
342
342
  `);return}Jl(e)}function Jl(e){let r=`ripplo@${e}`,n=Hl("npm",["install","-g",r],{stdio:"inherit"});if(n.status!==0){let t=`exit ${String(n.status)}`;process.stderr.write(`${$o(t)}
343
343
  `),process.exit(1)}process.stdout.write(`${fr({evicted:0,latest:e,mode:"global"})}
344
344
  `)}async function Kl(e){if((await Oe(e)).kind==="not-running")return;let n=await Gt(e);process.stdout.write(`${Io(n)}
345
- `)}async function Ao({executor:e,explore:r,exploreConcurrency:n}){let{runDaemon:t}=await import("./daemon-A5IWWSRC.js"),{TunnelProvisionFailedError:o}=await import("./daemon-tunnel-AG6FGNXC.js"),{renderTunnelProvisionFailed:i}=await import("./daemon-APJHNVIG.js");try{await t({executor:e,explore:r,exploreConcurrency:n})}catch(a){throw a instanceof o&&(process.stderr.write(`${i(a.failure)}
345
+ `)}async function Ao({executor:e,explore:r,exploreConcurrency:n}){let{runDaemon:t}=await import("./daemon-FFCQZ4IN.js"),{TunnelProvisionFailedError:o}=await import("./daemon-tunnel-AG6FGNXC.js"),{renderTunnelProvisionFailed:i}=await import("./daemon-5EX742HH.js");try{await t({executor:e,explore:r,exploreConcurrency:n})}catch(a){throw a instanceof o&&(process.stderr.write(`${i(a.failure)}
346
346
  `),process.exit(1)),a}}import{graphql as Be}from"gql.tada";function To(){return"No scope items added \u2014 the matched tests are already in scope (check `npx ripplo scope status`)."}function Lo(e){return[`No test found for: ${e.join(", ")}`,"Pass a test id (kebab-case slug of the test name) or the exact intent string.","List known tests with `npx ripplo status`. To add one, stub it first via the testing DSL.",c("create")].join(`
347
347
  `)}import{graphql as Ql}from"gql.tada";var Do=Ql(`
348
348
  query ScopeStatus($projectId: String!, $cwd: String!) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ripplo",
3
- "version": "0.7.23",
3
+ "version": "0.7.24",
4
4
  "description": "CLI for Ripplo — AI-powered end-to-end testing",
5
5
  "type": "module",
6
6
  "homepage": "https://ripplo.ai",
@@ -59,13 +59,13 @@
59
59
  "eslint-plugin-neverthrow": "^1.1.4",
60
60
  "tsup": "^8.5.1",
61
61
  "vitest": "^4.1.4",
62
- "@ripplo/core": "^0.0.0",
62
+ "@ripplo/graphql": "^0.0.0",
63
63
  "@ripplo/eslint-config": "0.0.0",
64
- "@ripplo/run-report": "0.0.0",
65
- "@ripplo/spec": "^0.0.0",
66
- "@ripplo/rrweb-bundle": "0.0.0",
67
64
  "@ripplo/runtime": "^0.0.0",
68
- "@ripplo/graphql": "^0.0.0"
65
+ "@ripplo/rrweb-bundle": "0.0.0",
66
+ "@ripplo/spec": "^0.0.0",
67
+ "@ripplo/core": "^0.0.0",
68
+ "@ripplo/run-report": "0.0.0"
69
69
  },
70
70
  "scripts": {
71
71
  "dev": "tsx watch src/index.ts",