@10play/expo-air 0.3.0 → 0.3.2

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.
@@ -16,6 +16,7 @@ export declare class PromptServer {
16
16
  private getGitChanges;
17
17
  private startGitWatcher;
18
18
  private stopGitWatcher;
19
+ private getPRStatus;
19
20
  private broadcastGitStatus;
20
21
  private getConfigPath;
21
22
  private loadSession;
@@ -1 +1 @@
1
- {"version":3,"file":"promptServer.d.ts","sourceRoot":"","sources":["../../server/promptServer.ts"],"names":[],"mappings":"AAkBA,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAM9C,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,oBAAoB;IActB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B3B,OAAO,CAAC,gBAAgB;IAuDxB,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,0BAA0B;YAWpB,cAAc;IAgO5B,OAAO,CAAC,YAAY;YAMN,oBAAoB;IA2BlC,OAAO,CAAC,GAAG;CAyBZ"}
1
+ {"version":3,"file":"promptServer.d.ts","sourceRoot":"","sources":["../../server/promptServer.ts"],"names":[],"mappings":"AAkBA,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAM9C,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,oBAAoB;IActB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B3B,OAAO,CAAC,gBAAgB;IA0DxB,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,0BAA0B;YAWpB,cAAc;IAmP5B,OAAO,CAAC,YAAY;YAMN,oBAAoB;IA2BlC,OAAO,CAAC,GAAG;CAyBZ"}
@@ -92,17 +92,33 @@ export class PromptServer {
92
92
  this.gitWatchInterval = null;
93
93
  }
94
94
  }
95
+ getPRStatus() {
96
+ try {
97
+ const result = execSync("gh pr view --json url -q .url", {
98
+ cwd: this.projectRoot,
99
+ encoding: "utf-8",
100
+ stdio: ["pipe", "pipe", "pipe"],
101
+ }).trim();
102
+ return { hasPR: true, prUrl: result || undefined };
103
+ }
104
+ catch {
105
+ return { hasPR: false };
106
+ }
107
+ }
95
108
  broadcastGitStatus(branchName, changes) {
109
+ const prStatus = this.getPRStatus();
96
110
  const message = {
97
111
  type: "git_status",
98
112
  branchName,
99
113
  changes,
114
+ hasPR: prStatus.hasPR,
115
+ prUrl: prStatus.prUrl,
100
116
  timestamp: Date.now(),
101
117
  };
102
118
  for (const client of this.clients) {
103
119
  this.sendToClient(client, message);
104
120
  }
105
- this.log(`Git status updated: ${branchName} (${changes.length} changes)`, "info");
121
+ this.log(`Git status updated: ${branchName} (${changes.length} changes, PR: ${prStatus.hasPR})`, "info");
106
122
  }
107
123
  getConfigPath() {
108
124
  return join(this.projectRoot, ".expo-air.local.json");
@@ -217,10 +233,13 @@ export class PromptServer {
217
233
  // Send initial git status
218
234
  const branchName = this.getBranchName();
219
235
  const changes = this.getGitChanges();
236
+ const prStatus = this.getPRStatus();
220
237
  this.sendToClient(ws, {
221
238
  type: "git_status",
222
239
  branchName,
223
240
  changes,
241
+ hasPR: prStatus.hasPR,
242
+ prUrl: prStatus.prUrl,
224
243
  timestamp: Date.now(),
225
244
  });
226
245
  ws.on("message", (data) => {
@@ -402,7 +421,7 @@ export class PromptServer {
402
421
  cwd: this.projectRoot,
403
422
  abortController: this.abortController,
404
423
  includePartialMessages: true,
405
- permissionMode: "acceptEdits", // Auto-accept edits for dev workflow
424
+ permissionMode: "bypassPermissions", // YOLO mode - bypass all permission prompts
406
425
  systemPrompt: `You are Claude, running as part of Expo Flow - an AI-powered development tool that runs on the developer's local machine and developer runs the app on their phone with a widget that help him develop the app on the go.
407
426
 
408
427
  IMPORTANT CONSTRAINTS:
@@ -433,7 +452,10 @@ IMPORTANT CONSTRAINTS:
433
452
  input: input.tool_input,
434
453
  timestamp: Date.now(),
435
454
  });
436
- this.log(`Tool started: ${input.tool_name}`, "info");
455
+ // Log tool name and truncated input for debugging
456
+ const inputStr = JSON.stringify(input.tool_input || {});
457
+ const truncatedInput = inputStr.length > 100 ? inputStr.substring(0, 100) + "..." : inputStr;
458
+ this.log(`Tool started: ${input.tool_name} - ${truncatedInput}`, "info");
437
459
  }
438
460
  return {};
439
461
  },
@@ -453,7 +475,14 @@ IMPORTANT CONSTRAINTS:
453
475
  output: input.tool_response,
454
476
  timestamp: Date.now(),
455
477
  });
456
- this.log(`Tool completed: ${input.tool_name}`, "success");
478
+ // Log completion with truncated response for debugging
479
+ const responseStr = typeof input.tool_response === 'string'
480
+ ? input.tool_response
481
+ : JSON.stringify(input.tool_response || '');
482
+ const truncatedResponse = responseStr.length > 150
483
+ ? responseStr.substring(0, 150) + "..."
484
+ : responseStr;
485
+ this.log(`Tool completed: ${input.tool_name} - ${truncatedResponse.replace(/\n/g, ' ')}`, "success");
457
486
  }
458
487
  return {};
459
488
  },
@@ -465,15 +494,24 @@ IMPORTANT CONSTRAINTS:
465
494
  hooks: [
466
495
  async (input) => {
467
496
  if (input.hook_event_name === "PostToolUseFailure") {
497
+ const errorStr = typeof input.error === 'string'
498
+ ? input.error
499
+ : JSON.stringify(input.error || 'Unknown error');
468
500
  this.sendToClient(ws, {
469
501
  type: "tool",
470
502
  promptId,
471
503
  toolName: input.tool_name,
472
504
  status: "failed",
473
- output: input.error,
505
+ output: errorStr,
474
506
  timestamp: Date.now(),
475
507
  });
476
- this.log(`Tool failed: ${input.tool_name}`, "error");
508
+ // Log detailed error information
509
+ this.log(`Tool FAILED: ${input.tool_name}`, "error");
510
+ this.log(` Error: ${errorStr.substring(0, 500)}`, "error");
511
+ if (input.tool_input) {
512
+ const inputStr = JSON.stringify(input.tool_input);
513
+ this.log(` Input was: ${inputStr.substring(0, 200)}`, "error");
514
+ }
477
515
  }
478
516
  return {};
479
517
  },
@@ -1 +1 @@
1
- {"version":3,"file":"promptServer.js","sourceRoot":"","sources":["../../server/promptServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promptServer.js","sourceRoot":"","sources":["../../server/promptServer.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,8 @@ export interface GitStatusMessage {
53
53
  type: "git_status";
54
54
  branchName: string;
55
55
  changes: GitChange[];
56
+ hasPR: boolean;
57
+ prUrl?: string;
56
58
  timestamp: number;
57
59
  }
58
60
  export interface ResultMessage {
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../types/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../types/messages.ts"],"names":[],"mappings":"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"}
@@ -534,12 +534,12 @@ __d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,'__esModule',{v
534
534
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return c}});var e,t=r(d[0]),n=(e=t)&&e.__esModule?e:{default:e},u=(r(d[1]).default,!1),o=0;function f(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];u||(u=!0,0===e[0]&&(n.default.vibrate(400),e=e.slice(1)),0!==e.length?setTimeout(()=>l(++o,e,t,1),e[0]):u=!1)}function l(e,t,f,v){if(u&&e===o){if(n.default.vibrate(400),v>=t.length){if(!f)return void(u=!1);v=0}setTimeout(()=>l(e,t,f,v+1),t[v])}}var v={vibrate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!u)if('number'==typeof e)n.default.vibrate(e);else{if(!Array.isArray(e))throw new Error('Vibration pattern should be a number or array');f(e,t)}},cancel:function(){u=!1}},c=v},482,[483,60]);
535
535
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return n}});var e=r(d[0]);Object.keys(e).forEach(function(t){'default'===t||Object.prototype.hasOwnProperty.call(_e,t)||Object.defineProperty(_e,t,{enumerable:!0,get:function(){return e[t]}})});var t,n=((t=e)&&t.__esModule?t:{default:t}).default},483,[484]);
536
536
  __d(function(g,r,i,a,m,_e,_d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return e}});var e=(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach(function(n){var u=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,u.get?u:{enumerable:!0,get:function(){return e[n]}})}),t.default=e,t})(r(_d[0])).getEnforcing('Vibration')},484,[50]);
537
- __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.BubbleContent=function(e){e.size,e.color;var f=e.expanded,x=void 0!==f&&f,v=e.serverUrl,j=void 0===v?"ws://localhost:3847":v,k=(0,o.useState)("disconnected"),S=(0,n.default)(k,2),B=S[0],V=S[1],A=(0,o.useState)([]),D=(0,n.default)(A,2),N=D[0],W=D[1],R=(0,o.useState)(""),F=(0,n.default)(R,2),P=F[0],_=F[1],E=(0,o.useState)("main"),I=(0,n.default)(E,2),z=I[0],O=I[1],q=(0,o.useState)([]),M=(0,n.default)(q,2),H=M[0],G=M[1],L=(0,o.useState)("chat"),U=(0,n.default)(L,2),J=U[0],K=U[1],Q=(0,o.useRef)(!1);(0,o.useEffect)(()=>{console.log("[expo-air] Connecting to:",j);var e=(0,b.createWebSocketClient)({url:j,onStatusChange:V,onMessage:X,onError:e=>{console.error("[expo-air] WebSocket error:",e)}});return e.connect(),()=>{e.disconnect()}},[j]),(0,o.useEffect)(()=>(0,h.setupTapHandler)((e,t)=>{var n=(0,b.getWebSocketClient)();n&&!n.isConnected()&&n.connect()}),[]);var X=(0,o.useCallback)(e=>{switch(e.type){case"stream":e.done||_(t=>t+e.chunk);break;case"result":case"error":W(t=>[...t,e]),_("");break;case"tool":W(t=>[...t,e]);break;case"status":case"stopped":break;case"session_cleared":W([]),_("");break;case"history":var t=e.entries.map(e=>"user"===e.role?{type:"user_prompt",content:e.content,timestamp:e.timestamp}:{type:"history_result",content:e.content,timestamp:e.timestamp});W(t);break;case"git_status":O(e.branchName),G(e.changes)}},[]),Y=(0,o.useCallback)((function(){var e=(0,t.default)(function*(e){if(!Q.current){var t=yield(0,h.requestPushToken)();if(t){var n=(0,b.getWebSocketClient)();n?.isConnected()&&(n.sendPushToken(t),Q.current=!0)}}W(t=>[...t,{type:"user_prompt",content:e,timestamp:Date.now()}]),_("");var o=(0,b.getWebSocketClient)();o&&o.sendPrompt(e)});return function(t){return e.apply(this,arguments)}})(),[]),Z=(0,o.useCallback)(()=>{var e=(0,b.getWebSocketClient)();e&&e.requestNewSession()},[]),$=(0,o.useCallback)(()=>{var e=(0,b.getWebSocketClient)();e&&e.requestStop()},[]),ee=(0,o.useCallback)(()=>{var e=(0,b.getWebSocketClient)();e&&e.requestDiscardChanges()},[]);if(!x)return(0,p.jsx)(s.View,{style:T.collapsedPill,children:(0,p.jsx)(C,{status:B})});return(0,p.jsxs)(s.View,{style:T.expanded,children:[(0,p.jsx)(w,{status:B,branchName:z}),(0,p.jsx)(y,{activeTab:J,onTabChange:K,onNewSession:Z,canStartNew:"connected"===B}),(0,p.jsx)(s.View,{style:T.body,children:"chat"===J?(0,p.jsx)(l.ResponseArea,{messages:N,currentResponse:P}):(0,p.jsx)(u.GitChangesTab,{changes:H,onDiscard:ee})}),"chat"===J&&(0,p.jsx)(c.PromptInput,{onSubmit:Y,onStop:$,disabled:"disconnected"===B,isProcessing:"processing"===B})]})};var t=e(r(d[0])),n=e(r(d[1])),o=r(d[2]),s=r(d[3]),c=r(d[4]),l=r(d[5]),u=r(d[6]),b=r(d[7]),h=r(d[8]),p=r(d[9]),f=s.NativeModules.WidgetBridge,x=s.NativeModules.ExpoAir;function v(){try{f?.collapse?f.collapse():x?.collapse?x.collapse():console.warn("[expo-air] No collapse method available")}catch(e){console.warn("[expo-air] Failed to collapse:",e)}}function w(e){var t=e.status,n=e.branchName;return(0,p.jsxs)(s.View,{style:T.header,children:[(0,p.jsx)(s.TouchableOpacity,{onPress:v,style:T.closeButton,children:(0,p.jsx)(s.Text,{style:T.closeButtonText,children:"\u2715"})}),(0,p.jsx)(s.Text,{style:T.branchName,numberOfLines:1,children:n}),(0,p.jsx)(s.View,{style:[T.statusDot,{backgroundColor:{disconnected:"#FF3B30",connecting:"#007AFF",connected:"#30D158",processing:"#007AFF"}[t]}]})]})}function y(e){var t=e.activeTab,n=e.onTabChange,o=e.onNewSession,c=e.canStartNew;return(0,p.jsxs)(s.View,{style:T.tabBar,children:[(0,p.jsxs)(s.View,{style:T.tabButtons,children:[(0,p.jsx)(s.TouchableOpacity,{onPress:()=>n("chat"),children:(0,p.jsx)(s.Text,{style:[T.tabText,"chat"===t?T.tabTextActive:T.tabTextInactive],children:"Chat"})}),(0,p.jsx)(s.TouchableOpacity,{onPress:()=>n("changes"),children:(0,p.jsx)(s.Text,{style:[T.tabText,"changes"===t?T.tabTextActive:T.tabTextInactive],children:"Changes"})})]}),"chat"===t&&(0,p.jsx)(s.TouchableOpacity,{onPress:o,style:[T.newButton,!c&&T.newButtonDisabled],disabled:!c,children:(0,p.jsx)(s.Text,{style:[T.newButtonText,!c&&T.newButtonTextDisabled],children:"New"})})]})}function C(e){var t=e.status,n={disconnected:"#FF3B30",connecting:"#007AFF",connected:"#30D158",processing:"#007AFF"},c="processing"===t||"connecting"===t,l=(0,o.useRef)(new s.Animated.Value(1)).current,u=(0,o.useRef)(new s.Animated.Value(.4)).current;return(0,o.useEffect)(()=>{if(c){var e=s.Animated.loop(s.Animated.sequence([s.Animated.parallel([s.Animated.timing(l,{toValue:1.3,duration:1200,easing:s.Easing.inOut(s.Easing.ease),useNativeDriver:!0}),s.Animated.timing(u,{toValue:0,duration:1200,easing:s.Easing.inOut(s.Easing.ease),useNativeDriver:!0})]),s.Animated.parallel([s.Animated.timing(l,{toValue:1,duration:0,useNativeDriver:!0}),s.Animated.timing(u,{toValue:.4,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()}l.setValue(1),u.setValue(.4)},[c,l,u]),(0,p.jsxs)(s.View,{style:T.indicatorContainer,children:[(0,p.jsx)(s.View,{style:[T.indicator,{backgroundColor:n[t]}]}),c&&(0,p.jsx)(s.Animated.View,{style:[T.indicatorRing,{borderColor:n[t],transform:[{scale:l}],opacity:u}]})]})}var T=s.StyleSheet.create({collapsedPill:{width:100,height:32,backgroundColor:"transparent",alignItems:"center",justifyContent:"center"},indicatorContainer:{width:20,height:20,alignItems:"center",justifyContent:"center"},indicator:{width:8,height:8,borderRadius:4},indicatorRing:{position:"absolute",width:16,height:16,borderRadius:8,borderWidth:1.5,opacity:.4},expanded:{flex:1,backgroundColor:"#000",borderRadius:32,overflow:"hidden"},header:{flexDirection:"row",alignItems:"center",paddingHorizontal:16,paddingVertical:14,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.08)"},closeButton:{width:30,height:30,borderRadius:15,backgroundColor:"transparent",alignItems:"center",justifyContent:"center",marginRight:12},closeButtonText:{color:"transparent",fontSize:14,fontWeight:"600"},branchName:{flex:1,color:"rgba(255,255,255,0.6)",fontSize:14,fontWeight:"500"},statusDot:{width:8,height:8,borderRadius:4},newButton:{paddingHorizontal:12,paddingVertical:6,borderRadius:14,backgroundColor:"rgba(255,255,255,0.15)"},newButtonDisabled:{opacity:.4},newButtonText:{color:"#fff",fontSize:13,fontWeight:"600"},newButtonTextDisabled:{opacity:.6},tabBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:16,paddingVertical:10,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.08)"},tabButtons:{flexDirection:"row",gap:20},tabText:{fontSize:15,fontWeight:"500"},tabTextActive:{color:"#fff"},tabTextInactive:{color:"rgba(255,255,255,0.4)"},body:{flex:1,backgroundColor:"rgba(255,255,255,0.03)"}})},485,[346,29,63,258,486,487,488,489,490,250]);
537
+ __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.BubbleContent=function(e){e.size,e.color;var f=e.expanded,x=void 0!==f&&f,v=e.serverUrl,w=void 0===v?"ws://localhost:3847":v,k=(0,s.useState)("disconnected"),S=(0,n.default)(k,2),A=S[0],P=S[1],V=(0,s.useState)([]),R=(0,n.default)(V,2),N=R[0],B=R[1],D=(0,s.useState)(""),W=(0,n.default)(D,2),E=W[0],F=W[1],O=(0,s.useState)("main"),_=(0,n.default)(O,2),I=_[0],z=_[1],q=(0,s.useState)([]),M=(0,n.default)(q,2),H=M[0],L=M[1],U=(0,s.useState)(!1),G=(0,n.default)(U,2),J=G[0],K=G[1],Q=(0,s.useState)(),X=(0,n.default)(Q,2),Y=X[0],Z=X[1],$=(0,s.useState)("chat"),ee=(0,n.default)($,2),te=ee[0],ae=ee[1],ne=(0,s.useRef)(!1),ie=Y?.match(/\/pull\/(\d+)/)?.[1];(0,s.useEffect)(()=>{console.log("[expo-air] Connecting to:",w);var e=(0,h.createWebSocketClient)({url:w,onStatusChange:P,onMessage:se,onError:e=>{console.error("[expo-air] WebSocket error:",e)}});return e.connect(),()=>{e.disconnect()}},[w]),(0,s.useEffect)(()=>(0,b.setupTapHandler)((e,t)=>{var n=(0,h.getWebSocketClient)();n&&!n.isConnected()&&n.connect()}),[]);var se=(0,s.useCallback)(e=>{switch(e.type){case"stream":e.done||F(t=>t+e.chunk);break;case"result":case"error":B(t=>[...t,e]),F("");break;case"tool":B(t=>[...t,e]);break;case"status":case"stopped":break;case"session_cleared":B([]),F("");break;case"history":var t=e.entries.map(e=>"user"===e.role?{type:"user_prompt",content:e.content,timestamp:e.timestamp}:{type:"history_result",content:e.content,timestamp:e.timestamp});B(t);break;case"git_status":z(e.branchName),L(e.changes),K(e.hasPR),Z(e.prUrl)}},[]),oe=(0,s.useCallback)((function(){var e=(0,t.default)(function*(e){if(!ne.current){var t=yield(0,b.requestPushToken)();if(t){var n=(0,h.getWebSocketClient)();n?.isConnected()&&(n.sendPushToken(t),ne.current=!0)}}B(t=>[...t,{type:"user_prompt",content:e,timestamp:Date.now()}]),F("");var s=(0,h.getWebSocketClient)();s&&s.sendPrompt(e)});return function(t){return e.apply(this,arguments)}})(),[]),re=(0,s.useCallback)(()=>{var e=(0,h.getWebSocketClient)();e&&e.requestNewSession()},[]),ce=(0,s.useCallback)(()=>{var e=(0,h.getWebSocketClient)();e&&e.requestStop()},[]),le=(0,s.useCallback)(()=>{ae("chat"),oe("Look at my current git changes and create a commit with a good conventional commit message. Stage all changes and commit them.")},[oe]),de=(0,s.useCallback)(()=>{ae("chat"),oe("Create a pull request for my current branch. First commit any uncommitted changes with a good message. Then generate a title and description based on the commits, and use `gh pr create --title \"...\" --body \"...\"` (non-interactive mode) to create it. Push to remote first if needed.")},[oe]),ue=(0,s.useCallback)(()=>{Y&&o.Linking.openURL(Y)},[Y]),he=(0,s.useCallback)(()=>{var e=(0,h.getWebSocketClient)();e&&e.requestDiscardChanges()},[]);if(!x)return(0,p.jsx)(o.View,{style:j.collapsedPill,children:(0,p.jsx)(T,{status:A})});return(0,p.jsxs)(o.View,{style:j.expanded,children:[(0,p.jsx)(y,{status:A,branchName:I}),(0,p.jsx)(C,{activeTab:te,onTabChange:ae,onNewSession:re,canStartNew:"connected"===A,hasPR:J,hasChanges:H.length>0,prNumber:ie,onCreatePR:de,onCommit:le,onViewPR:ue}),(0,p.jsx)(o.View,{style:j.body,children:"chat"===te?(0,p.jsx)(l.ResponseArea,{messages:N,currentResponse:E}):(0,p.jsx)(u.GitChangesTab,{changes:H,onDiscard:he})}),"chat"===te&&(0,p.jsx)(c.PromptInput,{onSubmit:oe,onStop:ce,disabled:"disconnected"===A,isProcessing:"processing"===A})]})};var t=e(r(d[0])),n=e(r(d[1])),s=r(d[2]),o=r(d[3]),c=r(d[4]),l=r(d[5]),u=r(d[6]),h=r(d[7]),b=r(d[8]),p=r(d[9]),f=o.NativeModules.WidgetBridge,x=o.NativeModules.ExpoAir;function v(){try{f?.collapse?f.collapse():x?.collapse?x.collapse():console.warn("[expo-air] No collapse method available")}catch(e){console.warn("[expo-air] Failed to collapse:",e)}}function y(e){var t=e.status,n=e.branchName;return(0,p.jsxs)(o.View,{style:j.header,children:[(0,p.jsx)(o.TouchableOpacity,{onPress:v,style:j.closeButton,children:(0,p.jsx)(o.Text,{style:j.closeButtonText,children:"\u2715"})}),(0,p.jsx)(o.Text,{style:j.branchName,numberOfLines:1,children:n}),(0,p.jsx)(o.View,{style:[j.statusDot,{backgroundColor:{disconnected:"#FF3B30",connecting:"#007AFF",connected:"#30D158",processing:"#007AFF"}[t]}]})]})}function C(e){var t=e.activeTab,n=e.onTabChange,s=e.onNewSession,c=e.canStartNew,l=e.hasPR,u=e.hasChanges,h=e.prNumber,b=e.onCreatePR,f=e.onCommit,x=e.onViewPR;return(0,p.jsxs)(o.View,{style:j.tabBar,children:[(0,p.jsxs)(o.View,{style:j.tabButtons,children:[(0,p.jsx)(o.TouchableOpacity,{onPress:()=>n("chat"),children:(0,p.jsx)(o.Text,{style:[j.tabText,"chat"===t?j.tabTextActive:j.tabTextInactive],children:"Chat"})}),(0,p.jsx)(o.TouchableOpacity,{onPress:()=>n("changes"),children:(0,p.jsx)(o.Text,{style:[j.tabText,"changes"===t?j.tabTextActive:j.tabTextInactive],children:"Changes"})})]}),"chat"===t?(0,p.jsx)(o.TouchableOpacity,{onPress:s,style:[j.ctaButton,!c&&j.ctaButtonDisabled],disabled:!c,children:(0,p.jsx)(o.Text,{style:[j.ctaText,!c&&j.ctaTextDisabled],children:"New"})}):!l&&u?(0,p.jsx)(w,{onPress:b,children:"Create PR"}):l&&u?(0,p.jsx)(w,{onPress:f,children:"Commit"}):l&&!u&&h?(0,p.jsxs)(w,{onPress:x,children:["#",h]}):null]})}function w(e){var t=e.children,n=e.onPress,c=(0,s.useRef)(new o.Animated.Value(.6)).current;return(0,s.useEffect)(()=>{var e=o.Animated.loop(o.Animated.sequence([o.Animated.timing(c,{toValue:.9,duration:1500,easing:o.Easing.inOut(o.Easing.ease),useNativeDriver:!0}),o.Animated.timing(c,{toValue:.6,duration:1500,easing:o.Easing.inOut(o.Easing.ease),useNativeDriver:!0})]));return e.start(),()=>e.stop()},[c]),(0,p.jsx)(o.TouchableOpacity,{onPress:n,style:j.ctaButton,activeOpacity:.7,children:(0,p.jsx)(o.Animated.Text,{style:[j.ctaText,{opacity:c}],children:t})})}function T(e){var t=e.status,n={disconnected:"#FF3B30",connecting:"#007AFF",connected:"#30D158",processing:"#007AFF"},c="processing"===t||"connecting"===t,l=(0,s.useRef)(new o.Animated.Value(1)).current,u=(0,s.useRef)(new o.Animated.Value(.4)).current;return(0,s.useEffect)(()=>{if(c){var e=o.Animated.loop(o.Animated.sequence([o.Animated.parallel([o.Animated.timing(l,{toValue:1.3,duration:1200,easing:o.Easing.inOut(o.Easing.ease),useNativeDriver:!0}),o.Animated.timing(u,{toValue:0,duration:1200,easing:o.Easing.inOut(o.Easing.ease),useNativeDriver:!0})]),o.Animated.parallel([o.Animated.timing(l,{toValue:1,duration:0,useNativeDriver:!0}),o.Animated.timing(u,{toValue:.4,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()}l.setValue(1),u.setValue(.4)},[c,l,u]),(0,p.jsxs)(o.View,{style:j.indicatorContainer,children:[(0,p.jsx)(o.View,{style:[j.indicator,{backgroundColor:n[t]}]}),c&&(0,p.jsx)(o.Animated.View,{style:[j.indicatorRing,{borderColor:n[t],transform:[{scale:l}],opacity:u}]})]})}var j=o.StyleSheet.create({collapsedPill:{width:100,height:32,backgroundColor:"transparent",alignItems:"center",justifyContent:"center"},indicatorContainer:{width:20,height:20,alignItems:"center",justifyContent:"center"},indicator:{width:8,height:8,borderRadius:4},indicatorRing:{position:"absolute",width:16,height:16,borderRadius:8,borderWidth:1.5,opacity:.4},expanded:{flex:1,backgroundColor:"#000",borderRadius:32,overflow:"hidden"},header:{flexDirection:"row",alignItems:"center",paddingHorizontal:16,paddingVertical:14,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.08)"},closeButton:{width:30,height:30,borderRadius:15,backgroundColor:"transparent",alignItems:"center",justifyContent:"center",marginRight:12},closeButtonText:{color:"transparent",fontSize:14,fontWeight:"600"},branchName:{flex:1,color:"rgba(255,255,255,0.6)",fontSize:14,fontWeight:"500"},statusDot:{width:8,height:8,borderRadius:4},ctaButton:{paddingHorizontal:12,paddingVertical:6,borderRadius:14,backgroundColor:"rgba(255,255,255,0.08)"},ctaButtonDisabled:{opacity:.4},ctaText:{color:"#fff",fontSize:13,fontWeight:"600"},ctaTextDisabled:{opacity:.6},tabBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:16,paddingVertical:10,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.08)"},tabButtons:{flexDirection:"row",gap:20},tabText:{fontSize:15,fontWeight:"500"},tabTextActive:{color:"#fff"},tabTextInactive:{color:"rgba(255,255,255,0.4)"},body:{flex:1,backgroundColor:"rgba(255,255,255,0.03)"}})},485,[346,29,63,258,486,487,488,489,490,250]);
538
538
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.PromptInput=function(t){var e=t.onSubmit,h=t.onStop,p=t.disabled,f=void 0!==p&&p,y=t.isProcessing,x=void 0!==y&&y,w=(0,n.useState)(""),C=(0,o.default)(w,2),j=C[0],v=C[1],B=()=>{var t=j.trim();!t||f||x||(e(t),v(""))},I=j.trim().length>0&&!f&&!x;return(0,l.jsxs)(s.View,{style:b.container,children:[(0,l.jsx)(s.TextInput,{style:b.input,placeholder:"Ask Claude...",placeholderTextColor:"rgba(255,255,255,0.5)",value:j,onChangeText:v,onSubmitEditing:B,editable:!x,multiline:!0,maxLength:2e3,returnKeyType:"send",blurOnSubmit:!0}),x?(0,l.jsx)(s.TouchableOpacity,{style:[b.submitButton,b.stopButton],onPress:h,activeOpacity:.7,children:(0,l.jsx)(c,{})}):(0,l.jsx)(s.TouchableOpacity,{style:[b.submitButton,!I&&b.submitButtonDisabled],onPress:B,disabled:!I,activeOpacity:.7,children:(0,l.jsx)(u,{})})]})};var t,e=r(d[0]),o=(t=e)&&t.__esModule?t:{default:t},n=r(d[1]),s=r(d[2]),l=r(d[3]);function u(){return(0,l.jsxs)(s.View,{style:b.arrowIcon,children:[(0,l.jsx)(s.View,{style:b.arrowLine}),(0,l.jsx)(s.View,{style:b.arrowHead})]})}function c(){return(0,l.jsx)(s.View,{style:b.stopIcon})}var b=s.StyleSheet.create({container:{flexDirection:"row",alignItems:"flex-end",paddingHorizontal:12,paddingVertical:12,borderTopWidth:1,borderTopColor:"rgba(255,255,255,0.08)",backgroundColor:"#000"},input:{flex:1,backgroundColor:"rgba(255,255,255,0.1)",borderRadius:22,paddingHorizontal:18,paddingVertical:12,color:"#fff",fontSize:15,maxHeight:100},submitButton:{width:40,height:40,borderRadius:20,backgroundColor:"rgba(255,255,255,0.15)",alignItems:"center",justifyContent:"center",marginLeft:10},submitButtonDisabled:{opacity:.4},stopButton:{backgroundColor:"#8E8E93"},stopIcon:{width:12,height:12,backgroundColor:"#fff",borderRadius:2},arrowIcon:{width:16,height:16,alignItems:"center",justifyContent:"center"},arrowLine:{width:2,height:10,backgroundColor:"#fff",borderRadius:1},arrowHead:{position:"absolute",top:0,width:0,height:0,borderLeftWidth:5,borderRightWidth:5,borderBottomWidth:6,borderLeftColor:"transparent",borderRightColor:"transparent",borderBottomColor:"#fff"}})},486,[29,63,258,250]);
539
539
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.ResponseArea=function(l){var c=l.messages,u=l.currentResponse,x=(0,t.useRef)(null);if((0,t.useEffect)(()=>{x.current?.scrollToEnd({animated:!0})},[c,u]),!(c.length>0||u.length>0))return(0,o.jsx)(n.View,{style:f.emptyContainer,children:(0,o.jsx)(n.Text,{style:f.emptyText,children:"Send a prompt to start coding with Claude"})});return(0,o.jsxs)(n.ScrollView,{ref:x,style:f.container,contentContainerStyle:f.content,showsVerticalScrollIndicator:!0,children:[c.map((t,n)=>(0,o.jsx)(s,{message:t},n)),u.length>0&&(0,o.jsxs)(n.View,{style:f.messageContainer,children:[(0,o.jsx)(n.Text,{style:f.responseText,children:u}),(0,o.jsx)(n.View,{style:f.cursor})]})]})};var t=r(d[0]),n=r(d[1]),o=r(d[2]);function s(t){var s=t.message;switch(s.type){case"stream":case"status":default:return null;case"tool":return(0,o.jsx)(u,{tool:s});case"result":return(0,o.jsx)(x,{result:s});case"error":return(0,o.jsx)(n.View,{style:f.errorContainer,children:(0,o.jsx)(n.Text,{style:f.errorText,children:s.message})});case"user_prompt":return(0,o.jsx)(l,{message:s});case"history_result":return(0,o.jsx)(c,{message:s})}}function l(t){var s=t.message;return(0,o.jsx)(n.View,{style:f.userPromptContainer,children:(0,o.jsx)(n.Text,{style:f.userPromptText,children:s.content})})}function c(t){var s=t.message;return(0,o.jsx)(n.View,{style:f.resultContainer,children:(0,o.jsx)(n.Text,{style:f.responseText,children:s.content})})}function u(t){var s=t.tool,l={started:"\u27f3",completed:"\u2713",failed:"\u2715"}[s.status],c={started:"#FF9500",completed:"#30D158",failed:"#FF453A"}[s.status],u=s.input?"string"==typeof s.input?s.input:JSON.stringify(s.input).substring(0,100):null;return(0,o.jsxs)(n.View,{style:f.toolContainer,children:[(0,o.jsxs)(n.View,{style:f.toolHeader,children:[(0,o.jsx)(n.Text,{style:[f.toolStatus,{color:c}],children:l}),(0,o.jsx)(n.Text,{style:f.toolName,children:s.toolName})]}),u&&(0,o.jsx)(n.Text,{style:f.toolInput,numberOfLines:2,children:u})]})}function x(t){var s=t.result;return!s.success&&s.error?(0,o.jsx)(n.View,{style:f.errorContainer,children:(0,o.jsx)(n.Text,{style:f.errorText,children:s.error})}):(0,o.jsxs)(n.View,{style:f.resultContainer,children:[s.result&&(0,o.jsx)(n.Text,{style:f.responseText,children:s.result}),(void 0!==s.costUsd||void 0!==s.durationMs)&&(0,o.jsxs)(n.Text,{style:f.metaText,children:[void 0!==s.durationMs&&`${s.durationMs}ms`,void 0!==s.costUsd&&void 0!==s.durationMs&&" \u2022 ",void 0!==s.costUsd&&`$${s.costUsd.toFixed(4)}`]})]})}var f=n.StyleSheet.create({container:{flex:1,backgroundColor:"#000"},content:{padding:16,paddingBottom:24},emptyContainer:{flex:1,alignItems:"center",justifyContent:"center",padding:24},emptyText:{color:"rgba(255,255,255,0.4)",fontSize:15,textAlign:"center",lineHeight:22},messageContainer:{flexDirection:"row",flexWrap:"wrap"},responseText:{color:"rgba(255,255,255,0.95)",fontSize:15,lineHeight:22},cursor:{width:2,height:18,backgroundColor:"#fff",marginLeft:2,opacity:.7},resultContainer:{marginTop:8},metaText:{color:"rgba(255,255,255,0.4)",fontSize:12,marginTop:10},errorContainer:{backgroundColor:"rgba(255,59,48,0.15)",borderRadius:12,padding:12,marginVertical:6},errorText:{color:"#FF6B6B",fontSize:14},toolContainer:{backgroundColor:"rgba(255,255,255,0.06)",borderRadius:12,padding:12,marginVertical:6},toolHeader:{flexDirection:"row",alignItems:"center"},toolStatus:{fontSize:15,marginRight:8},toolName:{color:"rgba(255,255,255,0.7)",fontSize:14,fontWeight:"500"},toolInput:{color:"rgba(255,255,255,0.4)",fontSize:12,marginTop:6,fontFamily:"monospace"},userPromptContainer:{backgroundColor:"rgba(0,122,255,0.15)",borderRadius:16,padding:12,marginVertical:8,alignSelf:"flex-end",maxWidth:"85%"},userPromptText:{color:"#fff",fontSize:15,lineHeight:20}})},487,[63,258,250]);
540
- __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.GitChangesTab=function(l){var c=l.changes,u=l.onDiscard,f=c.length>0;return(0,n.jsx)(t.View,{style:s.container,children:f?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.ScrollView,{style:s.fileList,contentContainerStyle:s.fileListContent,children:c.map((l,c)=>(0,n.jsxs)(t.View,{style:s.fileItem,children:[(0,n.jsx)(t.Text,{style:[s.fileStatus,s[`status_${l.status}`]],children:o(l.status)}),(0,n.jsx)(t.Text,{style:s.fileName,numberOfLines:1,children:l.file})]},c))}),(0,n.jsxs)(t.View,{style:s.footer,children:[(0,n.jsx)(t.TouchableOpacity,{style:s.discardButton,onPress:u,children:(0,n.jsx)(t.Text,{style:s.discardButtonText,children:"Discard All Changes"})}),(0,n.jsx)(t.Text,{style:s.warningText,children:"Note: Discarding changes won't reset Claude's memory"})]})]}):(0,n.jsxs)(t.View,{style:s.emptyContainer,children:[(0,n.jsx)(t.Text,{style:s.emptyText,children:"No uncommitted changes"}),(0,n.jsx)(t.Text,{style:s.emptySubtext,children:"Your working directory is clean"})]})})},r(d[0]);var t=r(d[1]),n=r(d[2]);function o(t){switch(t){case"added":return"+";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";case"untracked":return"?";default:return"\u2022"}}var s=t.StyleSheet.create({container:{flex:1,backgroundColor:"#000"},fileList:{flex:1},fileListContent:{padding:16},fileItem:{flexDirection:"row",alignItems:"center",paddingVertical:10,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.06)"},fileStatus:{width:24,fontSize:14,fontWeight:"600",fontFamily:"monospace"},status_added:{color:"#30D158"},status_modified:{color:"#FF9F0A"},status_deleted:{color:"#FF453A"},status_renamed:{color:"#5E5CE6"},status_untracked:{color:"rgba(255,255,255,0.5)"},fileName:{flex:1,color:"rgba(255,255,255,0.85)",fontSize:14,fontFamily:"monospace"},footer:{padding:16,borderTopWidth:1,borderTopColor:"rgba(255,255,255,0.08)"},discardButton:{backgroundColor:"rgba(255,69,58,0.15)",borderRadius:12,paddingVertical:14,alignItems:"center"},discardButtonText:{color:"#FF453A",fontSize:15,fontWeight:"600"},warningText:{color:"rgba(255,255,255,0.4)",fontSize:12,textAlign:"center",marginTop:10},emptyContainer:{flex:1,alignItems:"center",justifyContent:"center",padding:24},emptyText:{color:"rgba(255,255,255,0.6)",fontSize:16,fontWeight:"500"},emptySubtext:{color:"rgba(255,255,255,0.35)",fontSize:14,marginTop:6}})},488,[63,258,250]);
540
+ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.GitChangesTab=function(c){var f=c.changes,x=c.onDiscard;if(!(f.length>0))return(0,n.jsxs)(t.View,{style:s.emptyContainer,children:[(0,n.jsx)(t.Text,{style:s.emptyTitle,children:"No uncommitted changes"}),(0,n.jsx)(t.Text,{style:s.emptySubtext,children:"Your working directory is clean"})]});return(0,n.jsxs)(t.View,{style:s.container,children:[(0,n.jsx)(t.ScrollView,{style:s.fileList,contentContainerStyle:s.fileListContent,children:f.map((c,f)=>(0,n.jsxs)(t.View,{style:s.fileRow,children:[(0,n.jsx)(t.Text,{style:[s.statusIcon,{color:l[c.status]}],children:o[c.status]}),(0,n.jsx)(t.Text,{style:s.fileName,numberOfLines:1,children:c.file})]},`${c.file}-${f}`))}),(0,n.jsxs)(t.View,{style:s.footer,children:[(0,n.jsx)(t.TouchableOpacity,{style:s.discardButton,onPress:x,children:(0,n.jsx)(t.Text,{style:s.discardText,children:"Discard All Changes"})}),(0,n.jsx)(t.Text,{style:s.warningText,children:"Note: Discarding won't reset memory"})]})]})},r(d[0]);var t=r(d[1]),n=r(d[2]),o={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"?"},l={added:"#30D158",modified:"#FFD60A",deleted:"#FF453A",renamed:"#BF5AF2",untracked:"#8E8E93"};var s=t.StyleSheet.create({container:{flex:1,backgroundColor:"#000"},emptyContainer:{flex:1,backgroundColor:"#000",alignItems:"center",justifyContent:"center",padding:24},emptyTitle:{color:"rgba(255,255,255,0.6)",fontSize:16,fontWeight:"500",marginBottom:8},emptySubtext:{color:"rgba(255,255,255,0.4)",fontSize:14},fileList:{flex:1},fileListContent:{padding:16},fileRow:{flexDirection:"row",alignItems:"center",paddingVertical:8,borderBottomWidth:1,borderBottomColor:"rgba(255,255,255,0.06)"},statusIcon:{width:20,fontSize:13,fontWeight:"600",fontFamily:"Menlo"},fileName:{flex:1,color:"rgba(255,255,255,0.8)",fontSize:14,fontFamily:"Menlo"},footer:{padding:16,borderTopWidth:1,borderTopColor:"rgba(255,255,255,0.08)",alignItems:"center"},discardButton:{backgroundColor:"rgba(255,59,48,0.15)",borderRadius:12,paddingVertical:12,paddingHorizontal:24,marginBottom:8},discardText:{color:"#FF3B30",fontSize:15,fontWeight:"500"},warningText:{color:"rgba(255,255,255,0.3)",fontSize:12}})},488,[63,258,250]);
541
541
  __d(function(g,r,i,a,m,_e,d){"use strict";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"WebSocketClient",{enumerable:!0,get:function(){return n}}),_e.getWebSocketClient=function(){return o},_e.createWebSocketClient=function(t){o&&o.disconnect();return o=new n(t)};var e=t(r(d[0])),s=t(r(d[1])),n=(function(){return(0,s.default)(function t(s){(0,e.default)(this,t),this.ws=null,this.reconnectAttempts=0,this.reconnectTimeout=null,this._status="disconnected",this.shouldReconnect=!0,this.options={reconnectInterval:3e3,maxReconnectAttempts:10,onConnect:()=>{},onDisconnect:()=>{},onMessage:()=>{},onError:()=>{},onStatusChange:()=>{},...s}},[{key:"status",get:function(){return this._status}},{key:"setStatus",value:function(t){this._status=t,this.options.onStatusChange(t)}},{key:"connect",value:function(){if(this.ws?.readyState!==WebSocket.OPEN){this.shouldReconnect=!0,this.setStatus("connecting");try{this.ws=new WebSocket(this.options.url),this.ws.onopen=()=>{this.reconnectAttempts=0,this.setStatus("connected"),this.options.onConnect()},this.ws.onclose=()=>{this.setStatus("disconnected"),this.options.onDisconnect(),this.attemptReconnect()},this.ws.onerror=()=>{var t=new Error("WebSocket error");this.options.onError(t)},this.ws.onmessage=t=>{try{var e=JSON.parse(t.data);this.handleMessage(e)}catch(t){console.error("[expo-air] Failed to parse message:",t)}}}catch(t){this.options.onError(t),this.attemptReconnect()}}}},{key:"handleMessage",value:function(t){"status"===t.type?"processing"===t.status?this.setStatus("processing"):"idle"!==t.status&&"connected"!==t.status||this.setStatus("connected"):"result"===t.type||"error"===t.type?this.setStatus("connected"):"stopped"!==t.type&&"session_cleared"!==t.type||this.setStatus("connected"),this.options.onMessage(t)}},{key:"attemptReconnect",value:function(){this.shouldReconnect&&(this.reconnectAttempts>=this.options.maxReconnectAttempts?console.log("[expo-air] Max reconnect attempts reached"):(this.reconnectTimeout&&clearTimeout(this.reconnectTimeout),this.reconnectAttempts++,console.log(`[expo-air] Reconnecting... (attempt ${this.reconnectAttempts}/${this.options.maxReconnectAttempts})`),this.reconnectTimeout=setTimeout(()=>{this.connect()},this.options.reconnectInterval)))}},{key:"disconnect",value:function(){this.shouldReconnect=!1,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.ws&&(this.ws.close(),this.ws=null),this.setStatus("disconnected")}},{key:"sendPrompt",value:function(t){if(this.ws&&this.ws.readyState===WebSocket.OPEN){var e={type:"prompt",content:t,id:Math.random().toString(36).substring(2,15)};this.ws.send(JSON.stringify(e)),this.setStatus("processing")}else this.options.onError(new Error("Not connected"))}},{key:"requestNewSession",value:function(){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify({type:"new_session"})):this.options.onError(new Error("Not connected"))}},{key:"requestStop",value:function(){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify({type:"stop"})):this.options.onError(new Error("Not connected"))}},{key:"requestDiscardChanges",value:function(){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify({type:"discard_changes"})):this.options.onError(new Error("Not connected"))}},{key:"sendPushToken",value:function(t){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"register_push_token",token:t}))}},{key:"isConnected",value:function(){return this.ws?.readyState===WebSocket.OPEN}}])})();var o=null},489,[8,9]);
542
- __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.requestPushToken=function(){return n.apply(this,arguments)},_e.setupTapHandler=function(e){return()=>{}};var e,t=r(d[0]),u=(e=t)&&e.__esModule?e:{default:e};function n(){return(n=(0,u.default)(function*(){return null})).apply(this,arguments)}},490,[346,null,491]);
542
+ __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.requestPushToken=function(){return c.apply(this,arguments)},_e.setupTapHandler=function(e){var t=null,s=!1;return(0,n.default)(function*(){try{var n=yield u();if(!n||s)return;t=n.addNotificationResponseReceivedListener(t=>{var n=t.notification.request.content.data;n?.source===o&&(console.log("[expo-air] Notification tapped:",n),e(n.promptId,n.success))})}catch(e){console.log("[expo-air] Notifications not available:",e)}})(),()=>{s=!0,t?.remove()}};var e,t=r(d[0]),n=(e=t)&&e.__esModule?e:{default:e},o="expo-air",s=null;function u(){return l.apply(this,arguments)}function l(){return(l=(0,n.default)(function*(){if(s)return s;try{return s=yield r(d[2])(d[1],d.paths,"expo-notifications")}catch{return null}})).apply(this,arguments)}function c(){return(c=(0,n.default)(function*(){try{var e=yield u();if(!e)return console.log("[expo-air] expo-notifications not available"),null;var t=(yield e.getPermissionsAsync()).status,n=t;if("granted"!==t)n=(yield e.requestPermissionsAsync()).status;if("granted"!==n)return console.log("[expo-air] Push notification permission denied"),null;var o=yield e.getExpoPushTokenAsync({projectId:void 0});return console.log("[expo-air] Push token:",o.data),o.data}catch(e){return console.error("[expo-air] Failed to get push token:",e),null}})).apply(this,arguments)}},490,[346,null,491]);
543
543
  __d(function(g,r,i,a,m,e,d){m.exports=r(d[0])},491,[492]);
544
544
  __d(function(g,r,i,a,m,e,d){var n=r(d[0]).default;function t(n,t){var o=g[`${__METRO_GLOBAL_PREFIX__}__loadBundleAsync`];if(null!=o){var u=String(n);if(null!=t){var s=t[u];if(null!=s)return o(s)}}}function o(n,o){var u=t(n,o),s=()=>r.importAll(n);return null!=u?u.then(s):s()}function u(n,t,o){return s.apply(this,arguments)}function s(){return(s=n(function*(n,t,u){return o(n,t)})).apply(this,arguments)}u.unstable_importMaybeSync=function(n,t){return o(n,t)},u.prefetch=function(n,o,u){t(n,o)?.then(()=>{},()=>{})},u.unstable_resolve=function(n,t){if(!t)throw new Error('Bundle splitting is required for Web Worker imports');var o=t[n];if(!o)throw new Error('Worker import is missing from split bundle paths: '+o);return o},u.unstable_createWorker=function(n,t){if('undefined'==typeof crossOriginIsolated||!crossOriginIsolated)return new Worker(n,t);try{var o=(u=n,`\n const ASYNC_WORKER_BASE = ${JSON.stringify(u)};\n const IMPORT_SCRIPTS = importScripts;\n const FETCH = fetch;\n const fromBaseURL = (input) => new URL(input, ASYNC_WORKER_BASE).href;\n self.fetch = function(input, init) {\n return FETCH(typeof input === 'string' ? fromBaseURL(input) : input, init);\n };\n self.importScripts = function(...urls) {\n return IMPORT_SCRIPTS.apply(self, urls.map(fromBaseURL));\n };\n importScripts(ASYNC_WORKER_BASE);\n `);return n=URL.createObjectURL(new Blob([o],{type:'text/javascript'})),new Worker(n,t)}finally{URL.revokeObjectURL(n)}var u},m.exports=u},492,[346]);
545
545
  __r(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@10play/expo-air",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Vibe Coding for React-Native",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect, useCallback, useRef } from "react";
2
- import { View, Text, StyleSheet, NativeModules, TouchableOpacity, Animated, Easing } from "react-native";
2
+ import { View, Text, StyleSheet, NativeModules, TouchableOpacity, Animated, Easing, Linking } from "react-native";
3
3
  import { PromptInput } from "./components/PromptInput";
4
4
  import { ResponseArea } from "./components/ResponseArea";
5
5
  import { GitChangesTab } from "./components/GitChangesTab";
@@ -51,9 +51,14 @@ export function BubbleContent({
51
51
  const [currentResponse, setCurrentResponse] = useState("");
52
52
  const [branchName, setBranchName] = useState<string>("main");
53
53
  const [gitChanges, setGitChanges] = useState<GitChange[]>([]);
54
+ const [hasPR, setHasPR] = useState(false);
55
+ const [prUrl, setPrUrl] = useState<string | undefined>();
54
56
  const [activeTab, setActiveTab] = useState<TabType>("chat");
55
57
  const pushTokenSentRef = useRef(false);
56
58
 
59
+ // Extract PR number from URL (e.g., "https://github.com/org/repo/pull/12" → "12")
60
+ const prNumber = prUrl?.match(/\/pull\/(\d+)/)?.[1];
61
+
57
62
  // Initialize WebSocket connection immediately (even when collapsed)
58
63
  // so it's already connected when user expands the widget
59
64
  useEffect(() => {
@@ -136,9 +141,11 @@ export function BubbleContent({
136
141
  setMessages(historyMessages);
137
142
  break;
138
143
  case "git_status":
139
- // Update branch name and git changes
144
+ // Update branch name, git changes, and PR status
140
145
  setBranchName(message.branchName);
141
146
  setGitChanges(message.changes);
147
+ setHasPR(message.hasPR);
148
+ setPrUrl(message.prUrl);
142
149
  break;
143
150
  }
144
151
  }, []);
@@ -187,6 +194,22 @@ export function BubbleContent({
187
194
  }
188
195
  }, []);
189
196
 
197
+ const handleCommit = useCallback(() => {
198
+ setActiveTab("chat");
199
+ handleSubmit("Look at my current git changes and create a commit with a good conventional commit message. Stage all changes and commit them.");
200
+ }, [handleSubmit]);
201
+
202
+ const handleCreatePR = useCallback(() => {
203
+ setActiveTab("chat");
204
+ handleSubmit("Create a pull request for my current branch. First commit any uncommitted changes with a good message. Then generate a title and description based on the commits, and use `gh pr create --title \"...\" --body \"...\"` (non-interactive mode) to create it. Push to remote first if needed.");
205
+ }, [handleSubmit]);
206
+
207
+ const handleViewPR = useCallback(() => {
208
+ if (prUrl) {
209
+ Linking.openURL(prUrl);
210
+ }
211
+ }, [prUrl]);
212
+
190
213
  const handleDiscard = useCallback(() => {
191
214
  const client = getWebSocketClient();
192
215
  if (client) {
@@ -215,6 +238,12 @@ export function BubbleContent({
215
238
  onTabChange={setActiveTab}
216
239
  onNewSession={handleNewSession}
217
240
  canStartNew={status === "connected"}
241
+ hasPR={hasPR}
242
+ hasChanges={gitChanges.length > 0}
243
+ prNumber={prNumber}
244
+ onCreatePR={handleCreatePR}
245
+ onCommit={handleCommit}
246
+ onViewPR={handleViewPR}
218
247
  />
219
248
  <View style={styles.body}>
220
249
  {activeTab === "chat" ? (
@@ -268,9 +297,53 @@ interface TabBarProps {
268
297
  onTabChange: (tab: TabType) => void;
269
298
  onNewSession: () => void;
270
299
  canStartNew: boolean;
300
+ hasPR: boolean;
301
+ hasChanges: boolean;
302
+ prNumber?: string;
303
+ onCreatePR: () => void;
304
+ onCommit: () => void;
305
+ onViewPR: () => void;
271
306
  }
272
307
 
273
- function TabBar({ activeTab, onTabChange, onNewSession, canStartNew }: TabBarProps) {
308
+ function TabBar({
309
+ activeTab,
310
+ onTabChange,
311
+ onNewSession,
312
+ canStartNew,
313
+ hasPR,
314
+ hasChanges,
315
+ prNumber,
316
+ onCreatePR,
317
+ onCommit,
318
+ onViewPR,
319
+ }: TabBarProps) {
320
+ // Determine which CTA to show for Changes tab
321
+ const renderCTA = () => {
322
+ if (activeTab === "chat") {
323
+ return (
324
+ <TouchableOpacity
325
+ onPress={onNewSession}
326
+ style={[styles.ctaButton, !canStartNew && styles.ctaButtonDisabled]}
327
+ disabled={!canStartNew}
328
+ >
329
+ <Text style={[styles.ctaText, !canStartNew && styles.ctaTextDisabled]}>New</Text>
330
+ </TouchableOpacity>
331
+ );
332
+ }
333
+
334
+ // Changes tab - show smart CTA with breathing animation
335
+ if (!hasPR && hasChanges) {
336
+ return <BreathingButton onPress={onCreatePR}>Create PR</BreathingButton>;
337
+ }
338
+ if (hasPR && hasChanges) {
339
+ return <BreathingButton onPress={onCommit}>Commit</BreathingButton>;
340
+ }
341
+ if (hasPR && !hasChanges && prNumber) {
342
+ return <BreathingButton onPress={onViewPR}>#{prNumber}</BreathingButton>;
343
+ }
344
+ return null; // no PR + no changes = nothing
345
+ };
346
+
274
347
  return (
275
348
  <View style={styles.tabBar}>
276
349
  <View style={styles.tabButtons}>
@@ -291,19 +364,49 @@ function TabBar({ activeTab, onTabChange, onNewSession, canStartNew }: TabBarPro
291
364
  </Text>
292
365
  </TouchableOpacity>
293
366
  </View>
294
- {activeTab === "chat" && (
295
- <TouchableOpacity
296
- onPress={onNewSession}
297
- style={[styles.newButton, !canStartNew && styles.newButtonDisabled]}
298
- disabled={!canStartNew}
299
- >
300
- <Text style={[styles.newButtonText, !canStartNew && styles.newButtonTextDisabled]}>New</Text>
301
- </TouchableOpacity>
302
- )}
367
+ {renderCTA()}
303
368
  </View>
304
369
  );
305
370
  }
306
371
 
372
+ interface BreathingButtonProps {
373
+ children: React.ReactNode;
374
+ onPress: () => void;
375
+ }
376
+
377
+ function BreathingButton({ children, onPress }: BreathingButtonProps) {
378
+ const opacityAnim = useRef(new Animated.Value(0.6)).current;
379
+
380
+ useEffect(() => {
381
+ const animation = Animated.loop(
382
+ Animated.sequence([
383
+ Animated.timing(opacityAnim, {
384
+ toValue: 0.9,
385
+ duration: 1500,
386
+ easing: Easing.inOut(Easing.ease),
387
+ useNativeDriver: true,
388
+ }),
389
+ Animated.timing(opacityAnim, {
390
+ toValue: 0.6,
391
+ duration: 1500,
392
+ easing: Easing.inOut(Easing.ease),
393
+ useNativeDriver: true,
394
+ }),
395
+ ])
396
+ );
397
+ animation.start();
398
+ return () => animation.stop();
399
+ }, [opacityAnim]);
400
+
401
+ return (
402
+ <TouchableOpacity onPress={onPress} style={styles.ctaButton} activeOpacity={0.7}>
403
+ <Animated.Text style={[styles.ctaText, { opacity: opacityAnim }]}>
404
+ {children}
405
+ </Animated.Text>
406
+ </TouchableOpacity>
407
+ );
408
+ }
409
+
307
410
  function PulsingIndicator({ status }: { status: ConnectionStatus }) {
308
411
  const colors = {
309
412
  disconnected: "#FF3B30",
@@ -454,21 +557,21 @@ const styles = StyleSheet.create({
454
557
  height: 8,
455
558
  borderRadius: 4,
456
559
  },
457
- newButton: {
560
+ ctaButton: {
458
561
  paddingHorizontal: 12,
459
562
  paddingVertical: 6,
460
563
  borderRadius: 14,
461
- backgroundColor: "rgba(255,255,255,0.15)",
564
+ backgroundColor: "rgba(255,255,255,0.08)",
462
565
  },
463
- newButtonDisabled: {
566
+ ctaButtonDisabled: {
464
567
  opacity: 0.4,
465
568
  },
466
- newButtonText: {
569
+ ctaText: {
467
570
  color: "#fff",
468
571
  fontSize: 13,
469
572
  fontWeight: "600",
470
573
  },
471
- newButtonTextDisabled: {
574
+ ctaTextDisabled: {
472
575
  opacity: 0.6,
473
576
  },
474
577
  tabBar: {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { View, Text, ScrollView, TouchableOpacity, StyleSheet } from "react-native";
2
+ import { View, Text, TouchableOpacity, StyleSheet, ScrollView } from "react-native";
3
3
  import type { GitChange } from "../services/websocket";
4
4
 
5
5
  interface GitChangesTabProps {
@@ -7,142 +7,125 @@ interface GitChangesTabProps {
7
7
  onDiscard?: () => void;
8
8
  }
9
9
 
10
+ const STATUS_ICONS: Record<GitChange["status"], string> = {
11
+ added: "A",
12
+ modified: "M",
13
+ deleted: "D",
14
+ renamed: "R",
15
+ untracked: "?",
16
+ };
17
+
18
+ const STATUS_COLORS: Record<GitChange["status"], string> = {
19
+ added: "#30D158",
20
+ modified: "#FFD60A",
21
+ deleted: "#FF453A",
22
+ renamed: "#BF5AF2",
23
+ untracked: "#8E8E93",
24
+ };
25
+
10
26
  export function GitChangesTab({ changes, onDiscard }: GitChangesTabProps) {
11
27
  const hasChanges = changes.length > 0;
12
28
 
29
+ if (!hasChanges) {
30
+ return (
31
+ <View style={styles.emptyContainer}>
32
+ <Text style={styles.emptyTitle}>No uncommitted changes</Text>
33
+ <Text style={styles.emptySubtext}>Your working directory is clean</Text>
34
+ </View>
35
+ );
36
+ }
37
+
13
38
  return (
14
39
  <View style={styles.container}>
15
- {hasChanges ? (
16
- <>
17
- <ScrollView style={styles.fileList} contentContainerStyle={styles.fileListContent}>
18
- {changes.map((change, index) => (
19
- <View key={index} style={styles.fileItem}>
20
- <Text style={[styles.fileStatus, styles[`status_${change.status}`]]}>
21
- {getStatusIcon(change.status)}
22
- </Text>
23
- <Text style={styles.fileName} numberOfLines={1}>
24
- {change.file}
25
- </Text>
26
- </View>
27
- ))}
28
- </ScrollView>
29
- <View style={styles.footer}>
30
- <TouchableOpacity style={styles.discardButton} onPress={onDiscard}>
31
- <Text style={styles.discardButtonText}>Discard All Changes</Text>
32
- </TouchableOpacity>
33
- <Text style={styles.warningText}>
34
- Note: Discarding changes won't reset Claude's memory
40
+ <ScrollView style={styles.fileList} contentContainerStyle={styles.fileListContent}>
41
+ {changes.map((change, index) => (
42
+ <View key={`${change.file}-${index}`} style={styles.fileRow}>
43
+ <Text style={[styles.statusIcon, { color: STATUS_COLORS[change.status] }]}>
44
+ {STATUS_ICONS[change.status]}
45
+ </Text>
46
+ <Text style={styles.fileName} numberOfLines={1}>
47
+ {change.file}
35
48
  </Text>
36
49
  </View>
37
- </>
38
- ) : (
39
- <View style={styles.emptyContainer}>
40
- <Text style={styles.emptyText}>No uncommitted changes</Text>
41
- <Text style={styles.emptySubtext}>Your working directory is clean</Text>
42
- </View>
43
- )}
50
+ ))}
51
+ </ScrollView>
52
+ <View style={styles.footer}>
53
+ <TouchableOpacity style={styles.discardButton} onPress={onDiscard}>
54
+ <Text style={styles.discardText}>Discard All Changes</Text>
55
+ </TouchableOpacity>
56
+ <Text style={styles.warningText}>Note: Discarding won't reset memory</Text>
57
+ </View>
44
58
  </View>
45
59
  );
46
60
  }
47
61
 
48
- function getStatusIcon(status: GitChange["status"]): string {
49
- switch (status) {
50
- case "added":
51
- return "+";
52
- case "modified":
53
- return "M";
54
- case "deleted":
55
- return "D";
56
- case "renamed":
57
- return "R";
58
- case "untracked":
59
- return "?";
60
- default:
61
- return "•";
62
- }
63
- }
64
-
65
62
  const styles = StyleSheet.create({
66
63
  container: {
67
64
  flex: 1,
68
65
  backgroundColor: "#000",
69
66
  },
67
+ emptyContainer: {
68
+ flex: 1,
69
+ backgroundColor: "#000",
70
+ alignItems: "center",
71
+ justifyContent: "center",
72
+ padding: 24,
73
+ },
74
+ emptyTitle: {
75
+ color: "rgba(255,255,255,0.6)",
76
+ fontSize: 16,
77
+ fontWeight: "500",
78
+ marginBottom: 8,
79
+ },
80
+ emptySubtext: {
81
+ color: "rgba(255,255,255,0.4)",
82
+ fontSize: 14,
83
+ },
70
84
  fileList: {
71
85
  flex: 1,
72
86
  },
73
87
  fileListContent: {
74
88
  padding: 16,
75
89
  },
76
- fileItem: {
90
+ fileRow: {
77
91
  flexDirection: "row",
78
92
  alignItems: "center",
79
- paddingVertical: 10,
93
+ paddingVertical: 8,
80
94
  borderBottomWidth: 1,
81
95
  borderBottomColor: "rgba(255,255,255,0.06)",
82
96
  },
83
- fileStatus: {
84
- width: 24,
85
- fontSize: 14,
97
+ statusIcon: {
98
+ width: 20,
99
+ fontSize: 13,
86
100
  fontWeight: "600",
87
- fontFamily: "monospace",
88
- },
89
- status_added: {
90
- color: "#30D158",
91
- },
92
- status_modified: {
93
- color: "#FF9F0A",
94
- },
95
- status_deleted: {
96
- color: "#FF453A",
97
- },
98
- status_renamed: {
99
- color: "#5E5CE6",
100
- },
101
- status_untracked: {
102
- color: "rgba(255,255,255,0.5)",
101
+ fontFamily: "Menlo",
103
102
  },
104
103
  fileName: {
105
104
  flex: 1,
106
- color: "rgba(255,255,255,0.85)",
105
+ color: "rgba(255,255,255,0.8)",
107
106
  fontSize: 14,
108
- fontFamily: "monospace",
107
+ fontFamily: "Menlo",
109
108
  },
110
109
  footer: {
111
110
  padding: 16,
112
111
  borderTopWidth: 1,
113
112
  borderTopColor: "rgba(255,255,255,0.08)",
113
+ alignItems: "center",
114
114
  },
115
115
  discardButton: {
116
- backgroundColor: "rgba(255,69,58,0.15)",
116
+ backgroundColor: "rgba(255,59,48,0.15)",
117
117
  borderRadius: 12,
118
- paddingVertical: 14,
119
- alignItems: "center",
118
+ paddingVertical: 12,
119
+ paddingHorizontal: 24,
120
+ marginBottom: 8,
120
121
  },
121
- discardButtonText: {
122
- color: "#FF453A",
122
+ discardText: {
123
+ color: "#FF3B30",
123
124
  fontSize: 15,
124
- fontWeight: "600",
125
+ fontWeight: "500",
125
126
  },
126
127
  warningText: {
127
- color: "rgba(255,255,255,0.4)",
128
+ color: "rgba(255,255,255,0.3)",
128
129
  fontSize: 12,
129
- textAlign: "center",
130
- marginTop: 10,
131
- },
132
- emptyContainer: {
133
- flex: 1,
134
- alignItems: "center",
135
- justifyContent: "center",
136
- padding: 24,
137
- },
138
- emptyText: {
139
- color: "rgba(255,255,255,0.6)",
140
- fontSize: 16,
141
- fontWeight: "500",
142
- },
143
- emptySubtext: {
144
- color: "rgba(255,255,255,0.35)",
145
- fontSize: 14,
146
- marginTop: 6,
147
130
  },
148
131
  });
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Push notification service for expo-air widget.
3
- * Dev-only: all functions return early if not in __DEV__ mode.
4
3
  * Does NOT override existing app notification handlers.
5
4
  * Fails silently if push notifications aren't configured or expo-notifications isn't installed.
5
+ *
6
+ * Note: The widget is only shown in the host app's DEBUG mode (controlled by native code),
7
+ * so we don't need __DEV__ checks here. The pre-built widget bundle is always a production
8
+ * build (via expo export), so __DEV__ would always be false anyway.
6
9
  */
7
10
 
8
11
  const EXPO_AIR_SOURCE = "expo-air";
@@ -22,12 +25,9 @@ async function getNotifications(): Promise<typeof import("expo-notifications") |
22
25
 
23
26
  /**
24
27
  * Request push notification permissions and get Expo push token.
25
- * Only runs in __DEV__ mode.
26
28
  * @returns Expo push token string or null if failed/denied
27
29
  */
28
30
  export async function requestPushToken(): Promise<string | null> {
29
- if (!__DEV__) return null;
30
-
31
31
  try {
32
32
  const notif = await getNotifications();
33
33
  if (!notif) {
@@ -65,14 +65,12 @@ export async function requestPushToken(): Promise<string | null> {
65
65
  * Setup tap handler for expo-air notifications.
66
66
  * Uses addNotificationResponseReceivedListener (additive, non-overriding).
67
67
  * Filters by data.source === "expo-air" to ignore other app notifications.
68
- * Only runs in __DEV__ mode.
69
68
  * @param onTap Callback when user taps an expo-air notification
70
69
  * @returns Cleanup function to remove listener
71
70
  */
72
71
  export function setupTapHandler(
73
72
  onTap: (promptId?: string, success?: boolean) => void
74
73
  ): () => void {
75
- if (!__DEV__) return () => {};
76
74
 
77
75
  // Start async setup, return cleanup that handles pending setup
78
76
  let subscription: { remove: () => void } | null = null;
@@ -93,6 +93,8 @@ export interface GitStatusMessage {
93
93
  type: "git_status";
94
94
  branchName: string;
95
95
  changes: GitChange[];
96
+ hasPR: boolean;
97
+ prUrl?: string;
96
98
  timestamp: number;
97
99
  }
98
100