@juspay/shooter 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/build/client/_app/immutable/assets/{0.BZLcOr5z.css → 0.DEfoFaGR.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.DEfoFaGR.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.DEfoFaGR.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/Bkqjn62J.js +1 -0
  5. package/build/client/_app/immutable/chunks/Bkqjn62J.js.br +1 -0
  6. package/build/client/_app/immutable/chunks/Bkqjn62J.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{gxvWeAns.js → DOHhmtDH.js} +1 -1
  8. package/build/client/_app/immutable/chunks/DOHhmtDH.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/DOHhmtDH.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{pMo6RVvN.js → DlS3abGJ.js} +1 -1
  11. package/build/client/_app/immutable/chunks/DlS3abGJ.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DlS3abGJ.js.gz +0 -0
  13. package/build/client/_app/immutable/entry/{app.B0PrrcUG.js → app.CSJG7N9H.js} +2 -2
  14. package/build/client/_app/immutable/entry/app.CSJG7N9H.js.br +0 -0
  15. package/build/client/_app/immutable/entry/app.CSJG7N9H.js.gz +0 -0
  16. package/build/client/_app/immutable/entry/start.CTt1901T.js +1 -0
  17. package/build/client/_app/immutable/entry/start.CTt1901T.js.br +2 -0
  18. package/build/client/_app/immutable/entry/start.CTt1901T.js.gz +0 -0
  19. package/build/client/_app/immutable/nodes/{0.D4GLHqPM.js → 0.qOL7xtFn.js} +1 -1
  20. package/build/client/_app/immutable/nodes/0.qOL7xtFn.js.br +0 -0
  21. package/build/client/_app/immutable/nodes/0.qOL7xtFn.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{1.nJde5z5O.js → 1.Di708Ago.js} +1 -1
  23. package/build/client/_app/immutable/nodes/1.Di708Ago.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/1.Di708Ago.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{2.CLtsjLeG.js → 2.DSM1znqa.js} +1 -1
  26. package/build/client/_app/immutable/nodes/2.DSM1znqa.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/2.DSM1znqa.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{3.CKTUHtnx.js → 3.BPa5fh75.js} +1 -1
  29. package/build/client/_app/immutable/nodes/3.BPa5fh75.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/3.BPa5fh75.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/6.B1LwwEF-.js +1 -0
  32. package/build/client/_app/immutable/nodes/6.B1LwwEF-.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/6.B1LwwEF-.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/7.B7UJd8GQ.js +4 -0
  35. package/build/client/_app/immutable/nodes/7.B7UJd8GQ.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/7.B7UJd8GQ.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/8.CG0mrgBU.js +2 -0
  38. package/build/client/_app/immutable/nodes/8.CG0mrgBU.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/8.CG0mrgBU.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/9.KwzWaMHj.js +2 -0
  41. package/build/client/_app/immutable/nodes/9.KwzWaMHj.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/9.KwzWaMHj.js.gz +0 -0
  43. package/build/client/_app/version.json +1 -1
  44. package/build/client/_app/version.json.br +0 -0
  45. package/build/client/_app/version.json.gz +0 -0
  46. package/build/server/chunks/{0-BUSWGJr9.js → 0-D8uPamNd.js} +3 -3
  47. package/build/server/chunks/{0-BUSWGJr9.js.map → 0-D8uPamNd.js.map} +1 -1
  48. package/build/server/chunks/{1-DjiQE1K0.js → 1-DhtioHbs.js} +2 -2
  49. package/build/server/chunks/{1-DjiQE1K0.js.map → 1-DhtioHbs.js.map} +1 -1
  50. package/build/server/chunks/{2-ThgVrRKa.js → 2-Cgh7ZFgE.js} +2 -2
  51. package/build/server/chunks/{2-ThgVrRKa.js.map → 2-Cgh7ZFgE.js.map} +1 -1
  52. package/build/server/chunks/{3-G5LiDFQ9.js → 3-I6hnjssH.js} +2 -2
  53. package/build/server/chunks/{3-G5LiDFQ9.js.map → 3-I6hnjssH.js.map} +1 -1
  54. package/build/server/chunks/{6--I7fF3Bx.js → 6-bPDbH1_W.js} +2 -2
  55. package/build/server/chunks/{6--I7fF3Bx.js.map → 6-bPDbH1_W.js.map} +1 -1
  56. package/build/server/chunks/{7-BwPLVwOR.js → 7-CpBrOkxQ.js} +2 -2
  57. package/build/server/chunks/{7-BwPLVwOR.js.map → 7-CpBrOkxQ.js.map} +1 -1
  58. package/build/server/chunks/{8-BwOMHaoQ.js → 8-BRGAVfze.js} +2 -2
  59. package/build/server/chunks/{8-BwOMHaoQ.js.map → 8-BRGAVfze.js.map} +1 -1
  60. package/build/server/chunks/{9-DkO6aJIB.js → 9-C6xuAb_Y.js} +2 -2
  61. package/build/server/chunks/{9-DkO6aJIB.js.map → 9-C6xuAb_Y.js.map} +1 -1
  62. package/build/server/chunks/{_server.ts-ByPExYfO.js → _server.ts-BLNDdFWC.js} +3 -3
  63. package/build/server/chunks/_server.ts-BLNDdFWC.js.map +1 -0
  64. package/build/server/chunks/{_server.ts-40c_epk8.js → _server.ts-BrRZXr-8.js} +5 -4
  65. package/build/server/chunks/_server.ts-BrRZXr-8.js.map +1 -0
  66. package/build/server/chunks/{_server.ts-BuYyCrnF.js → _server.ts-C6xbNz6d.js} +4 -3
  67. package/build/server/chunks/_server.ts-C6xbNz6d.js.map +1 -0
  68. package/build/server/chunks/{_server.ts-CjpQ10xh.js → _server.ts-CjK0g9dO.js} +18 -2
  69. package/build/server/chunks/_server.ts-CjK0g9dO.js.map +1 -0
  70. package/build/server/chunks/{_server.ts-0Xr2fWaq.js → _server.ts-Cq9_scaV.js} +17 -7
  71. package/build/server/chunks/_server.ts-Cq9_scaV.js.map +1 -0
  72. package/build/server/chunks/{_server.ts-CilRds58.js → _server.ts-D--_NXt2.js} +25 -16
  73. package/build/server/chunks/_server.ts-D--_NXt2.js.map +1 -0
  74. package/build/server/chunks/{_server.ts-2ixC-X3K.js → _server.ts-Dekgb6Hx.js} +4 -3
  75. package/build/server/chunks/_server.ts-Dekgb6Hx.js.map +1 -0
  76. package/build/server/chunks/opencode-db-path-CRgzBK5U.js +402 -0
  77. package/build/server/chunks/opencode-db-path-CRgzBK5U.js.map +1 -0
  78. package/build/server/chunks/{pty-manager-TyMUpDA9.js → pty-manager-aFpChJah.js} +35 -2
  79. package/build/server/chunks/pty-manager-aFpChJah.js.map +1 -0
  80. package/build/server/index.js +1 -1
  81. package/build/server/index.js.map +1 -1
  82. package/build/server/manifest.js +16 -16
  83. package/build/server/manifest.js.map +1 -1
  84. package/package.json +2 -2
  85. package/server.ts +12 -0
  86. package/src/lib/modules/client/common/index.ts +1 -0
  87. package/src/lib/modules/client/common/provider.ts +30 -0
  88. package/src/lib/modules/client/terminal/LaunchSheet.svelte +2 -0
  89. package/src/lib/modules/server/sessions/codex-parser.ts +286 -0
  90. package/src/lib/modules/server/sessions/codex-reader.ts +293 -0
  91. package/src/lib/modules/server/sessions/process-detector.ts +23 -0
  92. package/src/lib/modules/server/terminal/codex-watcher.ts +179 -0
  93. package/src/lib/modules/server/terminal/pty-manager.ts +41 -0
  94. package/src/lib/theme.css +21 -1
  95. package/src/lib/types/codex.ts +21 -0
  96. package/src/lib/types/generated/Sessions.ts +5 -1
  97. package/src/lib/types/index.ts +1 -0
  98. package/src/lib/types/server.ts +18 -5
  99. package/src/lib/types/sessions.ts +1 -1
  100. package/src/routes/api/device-token/+server.ts +7 -3
  101. package/src/routes/api/sessions/+server.ts +27 -15
  102. package/src/routes/api/sessions/connect/+server.ts +19 -11
  103. package/src/routes/api/terminals/+server.ts +1 -1
  104. package/src/routes/project/+page.svelte +7 -23
  105. package/src/routes/session/[id]/+page.svelte +3 -3
  106. package/src/routes/terminals/+page.svelte +1 -1
  107. package/src/routes/terminals/[id]/+page.svelte +1 -1
  108. package/build/client/_app/immutable/assets/0.BZLcOr5z.css.br +0 -0
  109. package/build/client/_app/immutable/assets/0.BZLcOr5z.css.gz +0 -0
  110. package/build/client/_app/immutable/chunks/X-tVU_3P.js +0 -1
  111. package/build/client/_app/immutable/chunks/X-tVU_3P.js.br +0 -0
  112. package/build/client/_app/immutable/chunks/X-tVU_3P.js.gz +0 -0
  113. package/build/client/_app/immutable/chunks/gxvWeAns.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/gxvWeAns.js.gz +0 -0
  115. package/build/client/_app/immutable/chunks/pMo6RVvN.js.br +0 -0
  116. package/build/client/_app/immutable/chunks/pMo6RVvN.js.gz +0 -0
  117. package/build/client/_app/immutable/entry/app.B0PrrcUG.js.br +0 -0
  118. package/build/client/_app/immutable/entry/app.B0PrrcUG.js.gz +0 -0
  119. package/build/client/_app/immutable/entry/start.B1obDjVk.js +0 -1
  120. package/build/client/_app/immutable/entry/start.B1obDjVk.js.br +0 -0
  121. package/build/client/_app/immutable/entry/start.B1obDjVk.js.gz +0 -0
  122. package/build/client/_app/immutable/nodes/0.D4GLHqPM.js.br +0 -0
  123. package/build/client/_app/immutable/nodes/0.D4GLHqPM.js.gz +0 -0
  124. package/build/client/_app/immutable/nodes/1.nJde5z5O.js.br +0 -0
  125. package/build/client/_app/immutable/nodes/1.nJde5z5O.js.gz +0 -0
  126. package/build/client/_app/immutable/nodes/2.CLtsjLeG.js.br +0 -0
  127. package/build/client/_app/immutable/nodes/2.CLtsjLeG.js.gz +0 -0
  128. package/build/client/_app/immutable/nodes/3.CKTUHtnx.js.br +0 -0
  129. package/build/client/_app/immutable/nodes/3.CKTUHtnx.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/6.Cgc5iTlM.js +0 -1
  131. package/build/client/_app/immutable/nodes/6.Cgc5iTlM.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/6.Cgc5iTlM.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/7.BXKvUopV.js +0 -4
  134. package/build/client/_app/immutable/nodes/7.BXKvUopV.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/7.BXKvUopV.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/8.Df0leW0d.js +0 -2
  137. package/build/client/_app/immutable/nodes/8.Df0leW0d.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/8.Df0leW0d.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/9.C4-N3geF.js +0 -2
  140. package/build/client/_app/immutable/nodes/9.C4-N3geF.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/9.C4-N3geF.js.gz +0 -0
  142. package/build/server/chunks/_server.ts-0Xr2fWaq.js.map +0 -1
  143. package/build/server/chunks/_server.ts-2ixC-X3K.js.map +0 -1
  144. package/build/server/chunks/_server.ts-40c_epk8.js.map +0 -1
  145. package/build/server/chunks/_server.ts-BuYyCrnF.js.map +0 -1
  146. package/build/server/chunks/_server.ts-ByPExYfO.js.map +0 -1
  147. package/build/server/chunks/_server.ts-CilRds58.js.map +0 -1
  148. package/build/server/chunks/_server.ts-CjpQ10xh.js.map +0 -1
  149. package/build/server/chunks/opencode-db-path-DcfhJtJy.js +0 -15
  150. package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +0 -1
  151. package/build/server/chunks/pty-manager-TyMUpDA9.js.map +0 -1
@@ -10,18 +10,18 @@ return {
10
10
  assets: new Set(["app-icon.png","apple-touch-icon.png","favicon.png","favicon.svg","manifest.json","pwa-192x192.png","pwa-512x512.png"]),
11
11
  mimeTypes: {".png":"image/png",".svg":"image/svg+xml",".json":"application/json"},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start.B1obDjVk.js",app:"_app/immutable/entry/app.B0PrrcUG.js",imports:["_app/immutable/entry/start.B1obDjVk.js","_app/immutable/chunks/gxvWeAns.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/entry/app.B0PrrcUG.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/chunks/Cg3dlX05.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.CTt1901T.js",app:"_app/immutable/entry/app.CSJG7N9H.js",imports:["_app/immutable/entry/start.CTt1901T.js","_app/immutable/chunks/DOHhmtDH.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/entry/app.CSJG7N9H.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/chunks/Cg3dlX05.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./chunks/0-BUSWGJr9.js')),
16
- __memo(() => import('./chunks/1-DjiQE1K0.js')),
17
- __memo(() => import('./chunks/2-ThgVrRKa.js')),
18
- __memo(() => import('./chunks/3-G5LiDFQ9.js')),
15
+ __memo(() => import('./chunks/0-D8uPamNd.js')),
16
+ __memo(() => import('./chunks/1-DhtioHbs.js')),
17
+ __memo(() => import('./chunks/2-Cgh7ZFgE.js')),
18
+ __memo(() => import('./chunks/3-I6hnjssH.js')),
19
19
  __memo(() => import('./chunks/4-BtYdKCVW.js')),
20
20
  __memo(() => import('./chunks/5-CvJK3PiH.js')),
21
- __memo(() => import('./chunks/6--I7fF3Bx.js')),
22
- __memo(() => import('./chunks/7-BwPLVwOR.js')),
23
- __memo(() => import('./chunks/8-BwOMHaoQ.js')),
24
- __memo(() => import('./chunks/9-DkO6aJIB.js'))
21
+ __memo(() => import('./chunks/6-bPDbH1_W.js')),
22
+ __memo(() => import('./chunks/7-CpBrOkxQ.js')),
23
+ __memo(() => import('./chunks/8-BRGAVfze.js')),
24
+ __memo(() => import('./chunks/9-C6xuAb_Y.js'))
25
25
  ],
26
26
  remotes: {
27
27
 
@@ -60,7 +60,7 @@ return {
60
60
  pattern: /^\/api\/device-token\/?$/,
61
61
  params: [],
62
62
  page: null,
63
- endpoint: __memo(() => import('./chunks/_server.ts-ByPExYfO.js'))
63
+ endpoint: __memo(() => import('./chunks/_server.ts-BLNDdFWC.js'))
64
64
  },
65
65
  {
66
66
  id: "/api/health",
@@ -102,35 +102,35 @@ return {
102
102
  pattern: /^\/api\/sessions\/?$/,
103
103
  params: [],
104
104
  page: null,
105
- endpoint: __memo(() => import('./chunks/_server.ts-CilRds58.js'))
105
+ endpoint: __memo(() => import('./chunks/_server.ts-D--_NXt2.js'))
106
106
  },
107
107
  {
108
108
  id: "/api/sessions/connect",
109
109
  pattern: /^\/api\/sessions\/connect\/?$/,
110
110
  params: [],
111
111
  page: null,
112
- endpoint: __memo(() => import('./chunks/_server.ts-0Xr2fWaq.js'))
112
+ endpoint: __memo(() => import('./chunks/_server.ts-Cq9_scaV.js'))
113
113
  },
114
114
  {
115
115
  id: "/api/sessions/detect",
116
116
  pattern: /^\/api\/sessions\/detect\/?$/,
117
117
  params: [],
118
118
  page: null,
119
- endpoint: __memo(() => import('./chunks/_server.ts-CjpQ10xh.js'))
119
+ endpoint: __memo(() => import('./chunks/_server.ts-CjK0g9dO.js'))
120
120
  },
121
121
  {
122
122
  id: "/api/terminals",
123
123
  pattern: /^\/api\/terminals\/?$/,
124
124
  params: [],
125
125
  page: null,
126
- endpoint: __memo(() => import('./chunks/_server.ts-40c_epk8.js'))
126
+ endpoint: __memo(() => import('./chunks/_server.ts-BrRZXr-8.js'))
127
127
  },
128
128
  {
129
129
  id: "/api/terminals/[id]",
130
130
  pattern: /^\/api\/terminals\/([^/]+?)\/?$/,
131
131
  params: [{"name":"id","optional":false,"rest":false,"chained":false}],
132
132
  page: null,
133
- endpoint: __memo(() => import('./chunks/_server.ts-2ixC-X3K.js'))
133
+ endpoint: __memo(() => import('./chunks/_server.ts-Dekgb6Hx.js'))
134
134
  },
135
135
  {
136
136
  id: "/api/terminals/[id]/paste-image",
@@ -144,7 +144,7 @@ return {
144
144
  pattern: /^\/api\/terminals\/([^/]+?)\/resize\/?$/,
145
145
  params: [{"name":"id","optional":false,"rest":false,"chained":false}],
146
146
  page: null,
147
- endpoint: __memo(() => import('./chunks/_server.ts-BuYyCrnF.js'))
147
+ endpoint: __memo(() => import('./chunks/_server.ts-C6xbNz6d.js'))
148
148
  },
149
149
  {
150
150
  id: "/api/webhook",
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"app-icon.png\",\"apple-touch-icon.png\",\"favicon.png\",\"favicon.svg\",\"manifest.json\",\"pwa-192x192.png\",\"pwa-512x512.png\"]),\n\tmimeTypes: {\".png\":\"image/png\",\".svg\":\"image/svg+xml\",\".json\":\"application/json\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.B1obDjVk.js\",app:\"_app/immutable/entry/app.B0PrrcUG.js\",imports:[\"_app/immutable/entry/start.B1obDjVk.js\",\"_app/immutable/chunks/gxvWeAns.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/entry/app.B0PrrcUG.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/chunks/Cg3dlX05.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/activity\",\n\t\t\t\tpattern: /^\\/activity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/debug\",\n\t\t\t\tpattern: /^\\/api\\/debug\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/debug/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/decide/[requestId]\",\n\t\t\t\tpattern: /^\\/api\\/decide\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"requestId\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/decide/_requestId_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/device-token\",\n\t\t\t\tpattern: /^\\/api\\/device-token\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/device-token/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/neurolink-proxy\",\n\t\t\t\tpattern: /^\\/api\\/neurolink-proxy\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/neurolink-proxy/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/notify\",\n\t\t\t\tpattern: /^\\/api\\/notify\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/notify/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/qr-config\",\n\t\t\t\tpattern: /^\\/api\\/qr-config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/qr-config/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/response\",\n\t\t\t\tpattern: /^\\/api\\/response\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/response/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/connect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/connect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/connect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/detect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/detect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/detect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/paste-image\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/paste-image\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/paste-image/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/resize\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/resize\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/resize/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/webhook\",\n\t\t\t\tpattern: /^\\/api\\/webhook\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/webhook/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-status\",\n\t\t\t\tpattern: /^\\/api\\/ws-status\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-status/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-ticket\",\n\t\t\t\tpattern: /^\\/api\\/ws-ticket\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-ticket/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/config\",\n\t\t\t\tpattern: /^\\/config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/neurolink\",\n\t\t\t\tpattern: /^\\/neurolink\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/project\",\n\t\t\t\tpattern: /^\\/project\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/session/[id]\",\n\t\t\t\tpattern: /^\\/session\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals\",\n\t\t\t\tpattern: /^\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals/[id]\",\n\t\t\t\tpattern: /^\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACzI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAClF,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACza,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,EAAE;AACX;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,WAAW;AACnB,IAAI,OAAO,EAAE,iBAAiB;AAC9B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,OAAO,EAAE,mBAAmB;AAChC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA6C,CAAC;AAChF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,yBAAyB;AACjC,IAAI,OAAO,EAAE,8BAA8B;AAC3C,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChF,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA0D,CAAC;AAC7F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,mBAAmB;AAC3B,IAAI,OAAO,EAAE,0BAA0B;AACvC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAoD,CAAC;AACvF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,OAAO,EAAE,oBAAoB;AACjC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA8C,CAAC;AACjF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,sBAAsB;AAC9B,IAAI,OAAO,EAAE,6BAA6B;AAC1C,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAuD,CAAC;AAC1F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,OAAO,EAAE,oBAAoB;AACjC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA8C,CAAC;AACjF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,sBAAsB;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAgD,CAAC;AACnF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,sBAAsB;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAgD,CAAC;AACnF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,uBAAuB;AAC/B,IAAI,OAAO,EAAE,+BAA+B;AAC5C,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAwD,CAAC;AAC3F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,sBAAsB;AAC9B,IAAI,OAAO,EAAE,8BAA8B;AAC3C,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAuD,CAAC;AAC1F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,qBAAqB;AAC7B,IAAI,OAAO,EAAE,iCAAiC;AAC9C,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAsD,CAAC;AACzF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,iCAAiC;AACzC,IAAI,OAAO,EAAE,8CAA8C;AAC3D,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAkE,CAAC;AACrG,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,4BAA4B;AACpC,IAAI,OAAO,EAAE,yCAAyC;AACtD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA6D,CAAC;AAChG,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,cAAc;AACtB,IAAI,OAAO,EAAE,qBAAqB;AAClC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA+C,CAAC;AAClF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,OAAO,EAAE,eAAe;AAC5B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,OAAO,EAAE,kBAAkB;AAC/B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,0BAA0B;AACvC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,OAAO,EAAE,kBAAkB;AAC/B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,iBAAiB;AACzB,IAAI,OAAO,EAAE,4BAA4B;AACzC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACjC,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,EAAE,CAAC;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
1
+ {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"app-icon.png\",\"apple-touch-icon.png\",\"favicon.png\",\"favicon.svg\",\"manifest.json\",\"pwa-192x192.png\",\"pwa-512x512.png\"]),\n\tmimeTypes: {\".png\":\"image/png\",\".svg\":\"image/svg+xml\",\".json\":\"application/json\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.CTt1901T.js\",app:\"_app/immutable/entry/app.CSJG7N9H.js\",imports:[\"_app/immutable/entry/start.CTt1901T.js\",\"_app/immutable/chunks/DOHhmtDH.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/entry/app.CSJG7N9H.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/chunks/Cg3dlX05.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/activity\",\n\t\t\t\tpattern: /^\\/activity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/debug\",\n\t\t\t\tpattern: /^\\/api\\/debug\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/debug/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/decide/[requestId]\",\n\t\t\t\tpattern: /^\\/api\\/decide\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"requestId\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/decide/_requestId_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/device-token\",\n\t\t\t\tpattern: /^\\/api\\/device-token\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/device-token/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/neurolink-proxy\",\n\t\t\t\tpattern: /^\\/api\\/neurolink-proxy\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/neurolink-proxy/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/notify\",\n\t\t\t\tpattern: /^\\/api\\/notify\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/notify/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/qr-config\",\n\t\t\t\tpattern: /^\\/api\\/qr-config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/qr-config/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/response\",\n\t\t\t\tpattern: /^\\/api\\/response\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/response/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/connect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/connect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/connect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/detect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/detect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/detect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/paste-image\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/paste-image\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/paste-image/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/resize\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/resize\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/resize/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/webhook\",\n\t\t\t\tpattern: /^\\/api\\/webhook\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/webhook/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-status\",\n\t\t\t\tpattern: /^\\/api\\/ws-status\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-status/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-ticket\",\n\t\t\t\tpattern: /^\\/api\\/ws-ticket\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-ticket/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/config\",\n\t\t\t\tpattern: /^\\/config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/neurolink\",\n\t\t\t\tpattern: /^\\/neurolink\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/project\",\n\t\t\t\tpattern: /^\\/project\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/session/[id]\",\n\t\t\t\tpattern: /^\\/session\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals\",\n\t\t\t\tpattern: /^\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals/[id]\",\n\t\t\t\tpattern: /^\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juspay/shooter",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "Bidirectional communication server for Claude Code and iOS — push notifications, remote terminal, session viewing",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.28.2",
@@ -76,7 +76,7 @@
76
76
  "format:generated": "prettier --write ./src/lib/types/generated/*",
77
77
  "quality:all": "pnpm run lint && pnpm run format:check && pnpm run check",
78
78
  "gen:types": "npx type-crafter generate typescript-with-decoders ./specs/types/index.yaml ./src/lib/types/generated SingleFile SingleFile && bash scripts/postgen-types.sh && pnpm run format:generated",
79
- "test": "node tests/terminal-store.test.cjs && node tests/pending-requests.test.cjs && node tests/tunnel-discovery.test.cjs && node tests/plan-mode-routing.test.cjs && node tests/dynamic-options-extraction.test.cjs",
79
+ "test": "node tests/terminal-store.test.cjs && node tests/pending-requests.test.cjs && node tests/tunnel-discovery.test.cjs && node tests/plan-mode-routing.test.cjs && node tests/dynamic-options-extraction.test.cjs && node tests/codex-parser.test.cjs",
80
80
  "setup": "node scripts/setup.cjs",
81
81
  "prepare": "husky || true",
82
82
  "prepublishOnly": "pnpm build"
package/server.ts CHANGED
@@ -23,6 +23,7 @@ if (!existsSync(handlerPath)) {
23
23
  }
24
24
 
25
25
  const { handler } = await import('./build/handler.js');
26
+ import { codexWatcher } from './src/lib/modules/server/terminal/codex-watcher.js';
26
27
  import { openCodeWatcher } from './src/lib/modules/server/terminal/opencode-watcher.js';
27
28
  import { ptyManager } from './src/lib/modules/server/terminal/pty-manager.js';
28
29
  import { sessionWatcher } from './src/lib/modules/server/terminal/session-watcher.js';
@@ -69,6 +70,10 @@ const sessionWatcherAdapter = {
69
70
  if (!sessionFile.includes('/') && !sessionFile.includes('.jsonl')) {
70
71
  return openCodeWatcher.getHistory(sessionFile);
71
72
  }
73
+ // Codex rollout files live under ~/.codex/sessions (or archived_sessions).
74
+ if (sessionFile.includes('/.codex/')) {
75
+ return codexWatcher.getHistory(sessionFile);
76
+ }
72
77
  return sessionWatcher.getHistory(sessionFile);
73
78
  },
74
79
  subscribe(sessionFile: string, callback: Parameters<typeof sessionWatcher.watch>[1]) {
@@ -77,6 +82,12 @@ const sessionWatcherAdapter = {
77
82
  return () =>
78
83
  openCodeWatcher.stop(sessionFile, callback as (messages: ConversationMessage[]) => void);
79
84
  }
85
+ if (sessionFile.includes('/.codex/')) {
86
+ return codexWatcher.subscribe(
87
+ sessionFile,
88
+ callback as (messages: ConversationMessage[]) => void
89
+ );
90
+ }
80
91
  // Use subscribe() which returns a ref-counted unsubscribe function.
81
92
  // The watcher is only torn down when the last subscriber disconnects.
82
93
  return sessionWatcher.subscribe(sessionFile, callback);
@@ -209,6 +220,7 @@ function shutdown(signal: string): void {
209
220
  ptyManager.disconnectAll();
210
221
  sessionWatcher.stopAll();
211
222
  openCodeWatcher.stopAll();
223
+ codexWatcher.stopAll();
212
224
 
213
225
  // Terminate all remaining WebSocket clients (/ws/session, /ws/events)
214
226
  // so wss.close() doesn't hang waiting for them to disconnect.
@@ -4,5 +4,6 @@ export { getApiKey, isShooterConfig } from './config-guard';
4
4
  export { toErrorMessage } from './error';
5
5
  export { renderMarkdown } from './markdown';
6
6
  export { hasScanner, isNativeBridge, scanQR } from './native-bridge';
7
+ export { sourceLabel, sourceToCommand } from './provider';
7
8
  export { formatRelativeTime } from './time';
8
9
  export { getToolDescription } from './tool-title';
@@ -0,0 +1,30 @@
1
+ // Shared provider/source mappings used by the session + project UIs so every
2
+ // page agrees on which CLI binary and label corresponds to each SessionSource.
3
+ // Using Record<SessionSource, …> makes these exhaustive: adding a new provider
4
+ // to the SessionSource union forces a compile error here until it is handled.
5
+
6
+ import type { SessionSource } from '$lib/types';
7
+
8
+ const SOURCE_COMMAND: Record<SessionSource, string> = {
9
+ 'claude-code': 'claude',
10
+ codex: 'codex',
11
+ gemini: 'gemini',
12
+ opencode: 'opencode',
13
+ };
14
+
15
+ const SOURCE_LABEL: Record<SessionSource, string> = {
16
+ 'claude-code': 'Claude Code',
17
+ codex: 'Codex',
18
+ gemini: 'Gemini',
19
+ opencode: 'OpenCode',
20
+ };
21
+
22
+ /** Human-readable label for a session source. */
23
+ export function sourceLabel(source: SessionSource): string {
24
+ return SOURCE_LABEL[source] ?? 'Claude Code';
25
+ }
26
+
27
+ /** Map a session source to the CLI binary used to launch/resume it. */
28
+ export function sourceToCommand(source: SessionSource): string {
29
+ return SOURCE_COMMAND[source] ?? 'claude';
30
+ }
@@ -9,6 +9,8 @@
9
9
 
10
10
  const presets: Preset[] = [
11
11
  { args: [], command: 'claude', label: 'Claude Code' },
12
+ { args: [], command: 'codex', label: 'Codex' },
13
+ { args: [], command: 'gemini', label: 'Gemini' },
12
14
  { args: [], command: 'opencode', label: 'OpenCode' },
13
15
  { args: [], command: 'zsh', label: 'Shell / zsh' },
14
16
  { args: [], command: 'bash', label: 'Bash' },
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Codex CLI rollout JSONL parser.
3
+ *
4
+ * Codex writes one "rollout" JSONL file per session under
5
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-<ts>-<uuid>.jsonl. Each line is a
6
+ * record `{ timestamp, type, payload }`. The `response_item` records are the
7
+ * conversation source of truth (event_msg/turn_context/compacted are UI/control
8
+ * noise). This converts them into the canonical ConversationMessage[] shape,
9
+ * mirroring jsonl-parser.ts (Claude) and opencode-reader.ts (OpenCode).
10
+ *
11
+ * Grouping uses "role runs": consecutive parts of the same category
12
+ * (user | assistant-content | tool-result) are merged into one message and
13
+ * flushed when the category changes, producing clean chronological bubbles.
14
+ */
15
+
16
+ import type {
17
+ CodexParseResult,
18
+ CodexSessionMeta,
19
+ ConversationMessage,
20
+ MessagePart,
21
+ } from '$lib/types';
22
+
23
+ /** Accumulates parts into role-runs, flushing completed messages on category change. */
24
+ class TurnBuilder {
25
+ private current: null | {
26
+ category: 'assistant' | 'system' | 'user';
27
+ parts: MessagePart[];
28
+ role: ConversationMessage['role'];
29
+ timestamp: string;
30
+ } = null;
31
+ private readonly messages: ConversationMessage[] = [];
32
+
33
+ /** Messages flushed so far (excludes the still-open run). */
34
+ completed(): ConversationMessage[] {
35
+ return this.messages;
36
+ }
37
+
38
+ flush(): void {
39
+ if (this.current && this.current.parts.length > 0) {
40
+ this.messages.push({
41
+ id: `codex-${this.messages.length}`,
42
+ parts: this.current.parts,
43
+ role: this.current.role,
44
+ timestamp: this.current.timestamp,
45
+ });
46
+ }
47
+ this.current = null;
48
+ }
49
+
50
+ push(role: 'assistant' | 'user', part: MessagePart, timestamp: string): void {
51
+ const category: 'assistant' | 'system' | 'user' =
52
+ role === 'user' ? 'user' : part.type === 'tool_result' ? 'system' : 'assistant';
53
+ const messageRole: ConversationMessage['role'] = category === 'system' ? 'system' : role;
54
+ if (this.current?.category !== category) {
55
+ this.flush();
56
+ this.current = { category, parts: [], role: messageRole, timestamp };
57
+ }
58
+ this.current.parts.push(part);
59
+ }
60
+
61
+ result(): ConversationMessage[] {
62
+ this.flush();
63
+ return this.messages;
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Incremental Codex parser for live streaming. Feed raw JSONL lines as they are
69
+ * appended to a rollout file; returns messages that became *complete* on each
70
+ * call (a run completes when the next run of a different category begins).
71
+ * Call flushOpen() when the session goes idle to emit the final open run.
72
+ */
73
+ export class CodexStreamParser {
74
+ private readonly builder = new TurnBuilder();
75
+ private emitted = 0;
76
+
77
+ /** Emit the final open run when the session goes idle (no more lines are coming). */
78
+ flushOpen(): ConversationMessage[] {
79
+ this.builder.flush();
80
+ return this.drain();
81
+ }
82
+
83
+ /** Feed one raw JSONL line; returns any messages that became complete as a result. */
84
+ pushLine(rawLine: string): ConversationMessage[] {
85
+ const trimmed = rawLine.trim();
86
+ if (trimmed) {
87
+ try {
88
+ const entry: unknown = JSON.parse(trimmed);
89
+ if (isRecord(entry) && entry.type === 'response_item' && isRecord(entry.payload)) {
90
+ const mapped = responseItemToPart(entry.payload);
91
+ if (mapped) {
92
+ this.builder.push(mapped.role, mapped.part, str(entry, 'timestamp'));
93
+ }
94
+ }
95
+ } catch {
96
+ // skip malformed line
97
+ }
98
+ }
99
+ return this.drain();
100
+ }
101
+
102
+ private drain(): ConversationMessage[] {
103
+ const all = this.builder.completed();
104
+ const fresh = all.slice(this.emitted);
105
+ this.emitted = all.length;
106
+ return fresh;
107
+ }
108
+ }
109
+
110
+ /** Parse the `session_meta` payload (the first line of a rollout file). */
111
+ export function parseCodexMeta(line: string): CodexSessionMeta | null {
112
+ try {
113
+ const entry: unknown = JSON.parse(line);
114
+ if (!isRecord(entry) || entry.type !== 'session_meta' || !isRecord(entry.payload)) {
115
+ return null;
116
+ }
117
+ const p = entry.payload;
118
+ if (!str(p, 'id') || !str(p, 'cwd')) {
119
+ return null;
120
+ }
121
+ return {
122
+ cliVersion: str(p, 'cli_version'),
123
+ cwd: str(p, 'cwd'),
124
+ id: str(p, 'id'),
125
+ model: str(p, 'model') || str(p, 'model_provider'),
126
+ startedAt: str(p, 'timestamp') || str(entry, 'timestamp'),
127
+ };
128
+ } catch {
129
+ return null;
130
+ }
131
+ }
132
+
133
+ /** Parse a full Codex rollout file's text into meta + canonical messages. */
134
+ export function parseCodexRollout(text: string): CodexParseResult {
135
+ const builder = new TurnBuilder();
136
+ let meta: CodexSessionMeta | null = null;
137
+
138
+ for (const line of text.split('\n')) {
139
+ const trimmed = line.trim();
140
+ if (!trimmed) {
141
+ continue;
142
+ }
143
+ let entry: unknown;
144
+ try {
145
+ entry = JSON.parse(trimmed);
146
+ } catch {
147
+ continue;
148
+ }
149
+ if (!isRecord(entry)) {
150
+ continue;
151
+ }
152
+
153
+ const ts = str(entry, 'timestamp');
154
+
155
+ if (entry.type === 'session_meta') {
156
+ meta = parseCodexMeta(trimmed);
157
+ continue;
158
+ }
159
+ if (entry.type !== 'response_item' || !isRecord(entry.payload)) {
160
+ continue; // event_msg, turn_context, compacted — not conversation content
161
+ }
162
+
163
+ const mapped = responseItemToPart(entry.payload);
164
+ if (mapped) {
165
+ builder.push(mapped.role, mapped.part, ts);
166
+ }
167
+ }
168
+
169
+ return { messages: builder.result(), meta };
170
+ }
171
+
172
+ /** Narrow an unknown value to a plain object with string keys. */
173
+ function isRecord(value: unknown): value is Record<string, unknown> {
174
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
175
+ }
176
+
177
+ /** Join the text blocks of a Codex `message` content array. */
178
+ function joinMessageText(content: unknown): string {
179
+ if (!Array.isArray(content)) {
180
+ return typeof content === 'string' ? content : '';
181
+ }
182
+ return content
183
+ .filter((c): c is Record<string, unknown> => isRecord(c))
184
+ .filter((c) => c.type === 'input_text' || c.type === 'output_text' || c.type === 'text')
185
+ .map((c) => str(c, 'text'))
186
+ .join('\n')
187
+ .trim();
188
+ }
189
+
190
+ /** Coerce a tool-call argument (JSON string, raw string, or object) into a record. */
191
+ function parseToolInput(raw: unknown): Record<string, unknown> {
192
+ if (isRecord(raw)) {
193
+ return raw;
194
+ }
195
+ if (typeof raw === 'string') {
196
+ try {
197
+ const parsed: unknown = JSON.parse(raw);
198
+ return isRecord(parsed) ? parsed : { raw };
199
+ } catch {
200
+ return { raw };
201
+ }
202
+ }
203
+ return {};
204
+ }
205
+
206
+ /** Extract the visible reasoning text (Codex reasoning is usually encrypted-only). */
207
+ function reasoningText(payload: Record<string, unknown>): string {
208
+ const summary = payload.summary;
209
+ if (Array.isArray(summary) && summary.length > 0) {
210
+ const text = summary
211
+ .map((s) => (typeof s === 'string' ? s : isRecord(s) ? str(s, 'text') : ''))
212
+ .join('\n')
213
+ .trim();
214
+ if (text) {
215
+ return text;
216
+ }
217
+ }
218
+ return typeof payload.content === 'string' ? payload.content.trim() : '';
219
+ }
220
+
221
+ /** Map one Codex `response_item` payload to a canonical role + MessagePart, or null to skip. */
222
+ function responseItemToPart(
223
+ p: Record<string, unknown>
224
+ ): null | { part: MessagePart; role: 'assistant' | 'user' } {
225
+ switch (p.type) {
226
+ case 'custom_tool_call':
227
+ case 'function_call': {
228
+ const args = p.type === 'function_call' ? p.arguments : p.input;
229
+ return {
230
+ part: {
231
+ id: str(p, 'call_id'),
232
+ input: parseToolInput(args),
233
+ toolName: str(p, 'name') || 'tool',
234
+ type: 'tool_use',
235
+ },
236
+ role: 'assistant',
237
+ };
238
+ }
239
+ case 'custom_tool_call_output':
240
+ case 'function_call_output':
241
+ case 'tool_search_output': {
242
+ const output = typeof p.output === 'string' ? p.output : JSON.stringify(p.output ?? '');
243
+ return {
244
+ part: {
245
+ isError: /exit code:\s*[1-9]/i.test(output),
246
+ output: output.slice(0, 2000),
247
+ toolUseId: str(p, 'call_id'),
248
+ type: 'tool_result',
249
+ },
250
+ role: 'assistant',
251
+ };
252
+ }
253
+ case 'message': {
254
+ if (p.role === 'developer') {
255
+ return null; // instructions/permissions preamble — skip (like Claude skips system)
256
+ }
257
+ const content = joinMessageText(p.content);
258
+ return content
259
+ ? { part: { content, type: 'text' }, role: p.role === 'user' ? 'user' : 'assistant' }
260
+ : null;
261
+ }
262
+ case 'reasoning': {
263
+ const think = reasoningText(p);
264
+ return think ? { part: { content: think, type: 'thinking' }, role: 'assistant' } : null;
265
+ }
266
+ case 'tool_search_call':
267
+ case 'web_search_call':
268
+ return {
269
+ part: {
270
+ id: str(p, 'call_id'),
271
+ input: parseToolInput(p.action ?? p.query),
272
+ toolName: str(p, 'type'),
273
+ type: 'tool_use',
274
+ },
275
+ role: 'assistant',
276
+ };
277
+ default:
278
+ return null;
279
+ }
280
+ }
281
+
282
+ /** Safely read a string property from a record (returns '' on miss). */
283
+ function str(obj: Record<string, unknown>, key: string): string {
284
+ const v = obj[key];
285
+ return typeof v === 'string' ? v : '';
286
+ }