cici 0.2.0 → 0.3.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 (388) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-build-manifest.json +122 -0
  3. package/.next/app-path-routes-manifest.json +1 -0
  4. package/.next/build-manifest.json +32 -0
  5. package/.next/export-marker.json +1 -0
  6. package/.next/images-manifest.json +1 -0
  7. package/.next/next-minimal-server.js.nft.json +1 -0
  8. package/.next/next-server.js.nft.json +1 -0
  9. package/.next/package.json +1 -0
  10. package/.next/prerender-manifest.json +1 -0
  11. package/.next/react-loadable-manifest.json +1886 -0
  12. package/.next/required-server-files.json +1 -0
  13. package/.next/routes-manifest.json +1 -0
  14. package/.next/server/app/_not-found/page.js +1 -0
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  17. package/.next/server/app/api/asset/[...path]/route.js +1 -0
  18. package/.next/server/app/api/asset/[...path]/route.js.nft.json +1 -0
  19. package/.next/server/app/api/auth/[...nextauth]/route.js +1 -0
  20. package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -0
  21. package/.next/server/app/api/blog/[id]/highlights/[hid]/comments/[cid]/reactions/route.js +1 -0
  22. package/.next/server/app/api/blog/[id]/highlights/[hid]/comments/[cid]/reactions/route.js.nft.json +1 -0
  23. package/.next/server/app/api/blog/[id]/highlights/[hid]/comments/[cid]/route.js +1 -0
  24. package/.next/server/app/api/blog/[id]/highlights/[hid]/comments/[cid]/route.js.nft.json +1 -0
  25. package/.next/server/app/api/blog/[id]/highlights/[hid]/replies/route.js +1 -0
  26. package/.next/server/app/api/blog/[id]/highlights/[hid]/replies/route.js.nft.json +1 -0
  27. package/.next/server/app/api/blog/[id]/highlights/[hid]/resolve/route.js +1 -0
  28. package/.next/server/app/api/blog/[id]/highlights/[hid]/resolve/route.js.nft.json +1 -0
  29. package/.next/server/app/api/blog/[id]/highlights/[hid]/route.js +1 -0
  30. package/.next/server/app/api/blog/[id]/highlights/[hid]/route.js.nft.json +1 -0
  31. package/.next/server/app/api/blog/[id]/highlights/route.js +1 -0
  32. package/.next/server/app/api/blog/[id]/highlights/route.js.nft.json +1 -0
  33. package/.next/server/app/api/graphql/route.js +140 -0
  34. package/.next/server/app/api/graphql/route.js.nft.json +1 -0
  35. package/.next/server/app/api/mile/prompts/route.js +230 -0
  36. package/.next/server/app/api/mile/prompts/route.js.nft.json +1 -0
  37. package/.next/server/app/api/mile/prompts.body +1 -0
  38. package/.next/server/app/api/mile/prompts.meta +1 -0
  39. package/.next/server/app/api/upload/route.js +1 -0
  40. package/.next/server/app/api/upload/route.js.nft.json +1 -0
  41. package/.next/server/app/api/webhooks/notification/route.js +1 -0
  42. package/.next/server/app/api/webhooks/notification/route.js.nft.json +1 -0
  43. package/.next/server/app/atom.xml/route.js +34 -0
  44. package/.next/server/app/atom.xml/route.js.nft.json +1 -0
  45. package/.next/server/app/atom.xml.body +15 -0
  46. package/.next/server/app/atom.xml.meta +1 -0
  47. package/.next/server/app/blog/[id]/page.js +30 -0
  48. package/.next/server/app/blog/[id]/page.js.nft.json +1 -0
  49. package/.next/server/app/blog/[id]/page_client-reference-manifest.js +1 -0
  50. package/.next/server/app/blog/page.js +1 -0
  51. package/.next/server/app/blog/page.js.nft.json +1 -0
  52. package/.next/server/app/blog/page_client-reference-manifest.js +1 -0
  53. package/.next/server/app/editor/page.js +45 -0
  54. package/.next/server/app/editor/page.js.nft.json +1 -0
  55. package/.next/server/app/editor/page_client-reference-manifest.js +1 -0
  56. package/.next/server/app/favicon.ico/route.js +1 -0
  57. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  58. package/.next/server/app/favicon.ico.body +0 -0
  59. package/.next/server/app/favicon.ico.meta +1 -0
  60. package/.next/server/app/login/page.js +1 -0
  61. package/.next/server/app/login/page.js.nft.json +1 -0
  62. package/.next/server/app/login/page_client-reference-manifest.js +1 -0
  63. package/.next/server/app/memos/page.js +26 -0
  64. package/.next/server/app/memos/page.js.nft.json +1 -0
  65. package/.next/server/app/memos/page_client-reference-manifest.js +1 -0
  66. package/.next/server/app/page.js +1 -0
  67. package/.next/server/app/page.js.nft.json +1 -0
  68. package/.next/server/app/page_client-reference-manifest.js +1 -0
  69. package/.next/server/app/robots.txt/route.js +1 -0
  70. package/.next/server/app/robots.txt/route.js.nft.json +1 -0
  71. package/.next/server/app/robots.txt.body +8 -0
  72. package/.next/server/app/robots.txt.meta +1 -0
  73. package/.next/server/app/rss.xml/route.js +18 -0
  74. package/.next/server/app/rss.xml/route.js.nft.json +1 -0
  75. package/.next/server/app/rss.xml.body +12 -0
  76. package/.next/server/app/rss.xml.meta +1 -0
  77. package/.next/server/app/sitemap.xml/route.js +76 -0
  78. package/.next/server/app/sitemap.xml/route.js.nft.json +1 -0
  79. package/.next/server/app/sitemap.xml.body +33 -0
  80. package/.next/server/app/sitemap.xml.meta +1 -0
  81. package/.next/server/app/unavailable/page.js +1 -0
  82. package/.next/server/app/unavailable/page.js.nft.json +1 -0
  83. package/.next/server/app/unavailable/page_client-reference-manifest.js +1 -0
  84. package/.next/server/app-paths-manifest.json +27 -0
  85. package/.next/server/chunks/1230.js +1 -0
  86. package/.next/server/chunks/1446.js +1 -0
  87. package/.next/server/chunks/1450.js +1 -0
  88. package/.next/server/chunks/1536.js +1 -0
  89. package/.next/server/chunks/1615.js +1 -0
  90. package/.next/server/chunks/1682.js +6 -0
  91. package/.next/server/chunks/179.js +14 -0
  92. package/.next/server/chunks/2448.js +34 -0
  93. package/.next/server/chunks/2481.js +1 -0
  94. package/.next/server/chunks/2518.js +12 -0
  95. package/.next/server/chunks/2581.js +1 -0
  96. package/.next/server/chunks/2878.js +63 -0
  97. package/.next/server/chunks/3125.js +1 -0
  98. package/.next/server/chunks/330.js +1 -0
  99. package/.next/server/chunks/3381.js +1 -0
  100. package/.next/server/chunks/3464.js +1 -0
  101. package/.next/server/chunks/3573.js +1 -0
  102. package/.next/server/chunks/3607.js +14 -0
  103. package/.next/server/chunks/3844.js +1 -0
  104. package/.next/server/chunks/4536.js +1 -0
  105. package/.next/server/chunks/4742.js +1 -0
  106. package/.next/server/chunks/4857.js +1 -0
  107. package/.next/server/chunks/6621.js +1 -0
  108. package/.next/server/chunks/7070.js +12 -0
  109. package/.next/server/chunks/719.js +1 -0
  110. package/.next/server/chunks/7667.js +1 -0
  111. package/.next/server/chunks/7674.js +1 -0
  112. package/.next/server/chunks/7937.js +1 -0
  113. package/.next/server/chunks/7990.js +1 -0
  114. package/.next/server/chunks/8038.js +1 -0
  115. package/.next/server/chunks/8195.js +1 -0
  116. package/.next/server/chunks/8198.js +1 -0
  117. package/.next/server/chunks/8224.js +1 -0
  118. package/.next/server/chunks/8398.js +1 -0
  119. package/.next/server/chunks/8948.js +2 -0
  120. package/.next/server/chunks/9600.js +1 -0
  121. package/.next/server/chunks/9627.js +1 -0
  122. package/.next/server/chunks/9715.js +1 -0
  123. package/.next/server/chunks/9772.js +2 -0
  124. package/.next/server/chunks/font-manifest.json +1 -0
  125. package/.next/server/font-manifest.json +1 -0
  126. package/.next/server/functions-config-manifest.json +1 -0
  127. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  128. package/.next/server/middleware-build-manifest.js +1 -0
  129. package/.next/server/middleware-manifest.json +6 -0
  130. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  131. package/.next/server/next-font-manifest.js +1 -0
  132. package/.next/server/next-font-manifest.json +1 -0
  133. package/.next/server/pages/500.html +1 -0
  134. package/.next/server/pages/_app.js +1 -0
  135. package/.next/server/pages/_app.js.nft.json +1 -0
  136. package/.next/server/pages/_document.js +1 -0
  137. package/.next/server/pages/_document.js.nft.json +1 -0
  138. package/.next/server/pages/_error.js +1 -0
  139. package/.next/server/pages/_error.js.nft.json +1 -0
  140. package/.next/server/pages-manifest.json +1 -0
  141. package/.next/server/server-reference-manifest.js +1 -0
  142. package/.next/server/server-reference-manifest.json +1 -0
  143. package/.next/server/webpack-runtime.js +1 -0
  144. package/.next/standalone/.next/BUILD_ID +1 -1
  145. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  146. package/.next/standalone/.next/build-manifest.json +2 -2
  147. package/.next/standalone/.next/prerender-manifest.json +1 -1
  148. package/.next/standalone/.next/server/app/api/mile/prompts.body +1 -1
  149. package/.next/standalone/.next/server/app/atom.xml.body +1 -1
  150. package/.next/standalone/.next/server/app/rss.xml.body +1 -1
  151. package/.next/standalone/.next/server/app/sitemap.xml.body +5 -5
  152. package/.next/standalone/.next/server/app-paths-manifest.json +3 -3
  153. package/.next/standalone/.next/server/pages/500.html +1 -1
  154. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  155. package/.next/standalone/package.json +5 -4
  156. package/.next/static/PDn4f_-4CIbfG8EmueowG/_buildManifest.js +1 -0
  157. package/.next/static/PDn4f_-4CIbfG8EmueowG/_ssgManifest.js +1 -0
  158. package/.next/static/chunks/0e5ce63c-dc8fe6cd5df6dc6f.js +1 -0
  159. package/.next/static/chunks/0e762574-561b753e40bf5566.js +1 -0
  160. package/.next/static/chunks/117-70c87e31cd233c14.js +2 -0
  161. package/.next/static/chunks/152-16409649f7f42f9f.js +1 -0
  162. package/.next/static/chunks/153-f9c1aae3150e3029.js +1 -0
  163. package/.next/static/chunks/164-27f8b4187a29c395.js +1 -0
  164. package/.next/static/chunks/306-8d9c9a07b04a69f4.js +1 -0
  165. package/.next/static/chunks/343-ef3404804cc77cf3.js +1 -0
  166. package/.next/static/chunks/37-4aae6f4051a21b05.js +1 -0
  167. package/.next/static/chunks/479ba886-f76cebda33235b4d.js +1 -0
  168. package/.next/static/chunks/586-51f7e768b82803f6.js +1 -0
  169. package/.next/static/chunks/654-13e1845df8edb304.js +1 -0
  170. package/.next/static/chunks/767-2ec5d3ea9fe43cfa.js +1 -0
  171. package/.next/static/chunks/789-9810818d7be29598.js +1 -0
  172. package/.next/static/chunks/795d4814-090707ad3f792458.js +1 -0
  173. package/.next/static/chunks/878-b71984a1ef1b61e8.js +1 -0
  174. package/.next/static/chunks/8e1d74a4-f0365ca0a1823520.js +1 -0
  175. package/.next/static/chunks/961-29616c8a08e9f439.js +1 -0
  176. package/.next/static/chunks/972-774fbff93f73f32d.js +1 -0
  177. package/.next/static/chunks/app/_not-found/page-3061d7e79b77cf51.js +1 -0
  178. package/.next/static/chunks/app/blog/[id]/page-1fc779790ce384a8.js +1 -0
  179. package/.next/static/chunks/app/blog/page-096c29c6f69ebc33.js +1 -0
  180. package/.next/static/chunks/app/editor/page-f387899e39bc5e66.js +1 -0
  181. package/.next/static/chunks/app/layout-3439dc235234d73d.js +1 -0
  182. package/.next/static/chunks/app/login/page-6b91892f0e29c5e9.js +1 -0
  183. package/.next/static/chunks/app/memos/page-1b33cb7e1f301ba0.js +1 -0
  184. package/.next/static/chunks/app/page-f7dabeade6df80fd.js +1 -0
  185. package/.next/static/chunks/app/unavailable/page-c7774081778f08fc.js +1 -0
  186. package/.next/static/chunks/c916193b-16ee67ea0eb0c9df.js +1 -0
  187. package/.next/static/chunks/d3ac728e-709e52b22b85fd0a.js +1 -0
  188. package/.next/static/chunks/ee560e2c-0aeb447bc68f09f5.js +1 -0
  189. package/.next/static/chunks/fd9d1056-a4afdface6e53879.js +1 -0
  190. package/.next/static/chunks/framework-00a8ba1a63cfdc9e.js +1 -0
  191. package/.next/static/chunks/main-530e55a5659ae7e4.js +1 -0
  192. package/.next/static/chunks/main-app-838433dc18720d83.js +1 -0
  193. package/.next/static/chunks/pages/_app-15e2daefa259f0b5.js +1 -0
  194. package/.next/static/chunks/pages/_error-28b803cb2479b966.js +1 -0
  195. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  196. package/.next/static/chunks/webpack-a3d722a538b58757.js +1 -0
  197. package/.next/static/css/3864b451a61e4546.css +1 -0
  198. package/.next/static/css/67e4cfd62ab3f75c.css +1 -0
  199. package/.next/static/css/bf9d0ede562bd061.css +3 -0
  200. package/.next/static/media/04b170fa1114a606-s.woff2 +0 -0
  201. package/.next/static/media/08e5276c49c9ea3c-s.woff2 +0 -0
  202. package/.next/static/media/095b3ef40b322df1-s.woff2 +0 -0
  203. package/.next/static/media/0d843c40cdb24da5-s.woff2 +0 -0
  204. package/.next/static/media/16198ffb9c9fdd71-s.woff2 +0 -0
  205. package/.next/static/media/185e1e5dfa43e25f-s.woff2 +0 -0
  206. package/.next/static/media/1cfb11966f8bf838-s.woff2 +0 -0
  207. package/.next/static/media/1f4ef3a7563c157c-s.woff2 +0 -0
  208. package/.next/static/media/207ad64b019bcdef-s.woff2 +0 -0
  209. package/.next/static/media/21f0145a081cb2c8-s.woff2 +0 -0
  210. package/.next/static/media/25169183b7610496-s.woff2 +0 -0
  211. package/.next/static/media/2c913da5dc1da2ce-s.woff2 +0 -0
  212. package/.next/static/media/2d7ca78015d280d1-s.woff2 +0 -0
  213. package/.next/static/media/32be0b7a9127e345-s.woff2 +0 -0
  214. package/.next/static/media/33a4c9c744d0f9cd-s.woff2 +0 -0
  215. package/.next/static/media/3579da1a17de9863-s.woff2 +0 -0
  216. package/.next/static/media/36524af73d313f3b-s.woff2 +0 -0
  217. package/.next/static/media/3683934951fcdfff-s.woff2 +0 -0
  218. package/.next/static/media/3a3a2937d60ce37f-s.woff2 +0 -0
  219. package/.next/static/media/3e2c1db9f0de322f-s.woff2 +0 -0
  220. package/.next/static/media/3f282b8fe3ef7004-s.woff2 +0 -0
  221. package/.next/static/media/4294bde93a0ebb03-s.woff2 +0 -0
  222. package/.next/static/media/4cb92749e68500bf-s.woff2 +0 -0
  223. package/.next/static/media/4d3ec3b19c6bf06c-s.woff2 +0 -0
  224. package/.next/static/media/4eaaaae34a570973-s.woff2 +0 -0
  225. package/.next/static/media/4f45b9473df2758b-s.woff2 +0 -0
  226. package/.next/static/media/59769944ee073575-s.woff2 +0 -0
  227. package/.next/static/media/5bca2cb7d28055ae-s.woff2 +0 -0
  228. package/.next/static/media/5d217fec32e2068e-s.woff2 +0 -0
  229. package/.next/static/media/5f46c2de3a30070d-s.woff2 +0 -0
  230. package/.next/static/media/651d2e07f2cec067-s.woff2 +0 -0
  231. package/.next/static/media/684008be259a59c6-s.woff2 +0 -0
  232. package/.next/static/media/6858bbe75ab53fba-s.woff2 +0 -0
  233. package/.next/static/media/6cbcf0df7f219406-s.woff2 +0 -0
  234. package/.next/static/media/6d92d05365182413-s.woff2 +0 -0
  235. package/.next/static/media/7470b994d8569922-s.woff2 +0 -0
  236. package/.next/static/media/74e7e1e3fdad08dd-s.woff2 +0 -0
  237. package/.next/static/media/77901e7a9559d10c-s.woff2 +0 -0
  238. package/.next/static/media/796fab757a0e6146-s.woff2 +0 -0
  239. package/.next/static/media/7a830ebca9fe9db7-s.woff2 +0 -0
  240. package/.next/static/media/7bef3958b14cb6e3-s.woff2 +0 -0
  241. package/.next/static/media/81eb003b78a42a7b-s.woff2 +0 -0
  242. package/.next/static/media/84057adca98c0827-s.woff2 +0 -0
  243. package/.next/static/media/84a87fc9f232641e-s.woff2 +0 -0
  244. package/.next/static/media/84efce35a48f395c-s.woff2 +0 -0
  245. package/.next/static/media/872bfc82854f88b2-s.woff2 +0 -0
  246. package/.next/static/media/878380e8db69cb31-s.woff2 +0 -0
  247. package/.next/static/media/89c333b5a8239870-s.woff2 +0 -0
  248. package/.next/static/media/8a2e82a5f6677757-s.woff2 +0 -0
  249. package/.next/static/media/8cb8df5532e281af-s.woff2 +0 -0
  250. package/.next/static/media/8efbe4984052b206-s.woff2 +0 -0
  251. package/.next/static/media/8f2ab7576a12de97-s.woff2 +0 -0
  252. package/.next/static/media/905b23b26fa2645b-s.woff2 +0 -0
  253. package/.next/static/media/91fb5c9b9b43e9ec-s.woff2 +0 -0
  254. package/.next/static/media/92079ce87aa6c00d-s.woff2 +0 -0
  255. package/.next/static/media/9d87bcf0c05a83d6-s.p.woff2 +0 -0
  256. package/.next/static/media/9e9c82ad03b7dfa5-s.woff2 +0 -0
  257. package/.next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
  258. package/.next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
  259. package/.next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
  260. package/.next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
  261. package/.next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
  262. package/.next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
  263. package/.next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
  264. package/.next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
  265. package/.next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
  266. package/.next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
  267. package/.next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
  268. package/.next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
  269. package/.next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
  270. package/.next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
  271. package/.next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
  272. package/.next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
  273. package/.next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
  274. package/.next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
  275. package/.next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
  276. package/.next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
  277. package/.next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
  278. package/.next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
  279. package/.next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
  280. package/.next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
  281. package/.next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
  282. package/.next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
  283. package/.next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
  284. package/.next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
  285. package/.next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
  286. package/.next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
  287. package/.next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
  288. package/.next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
  289. package/.next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
  290. package/.next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
  291. package/.next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
  292. package/.next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
  293. package/.next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
  294. package/.next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
  295. package/.next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
  296. package/.next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
  297. package/.next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
  298. package/.next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
  299. package/.next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
  300. package/.next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
  301. package/.next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
  302. package/.next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
  303. package/.next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
  304. package/.next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
  305. package/.next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
  306. package/.next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
  307. package/.next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
  308. package/.next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
  309. package/.next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
  310. package/.next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
  311. package/.next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
  312. package/.next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
  313. package/.next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
  314. package/.next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
  315. package/.next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
  316. package/.next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
  317. package/.next/static/media/a0c7b168290800ea-s.woff2 +0 -0
  318. package/.next/static/media/a211c214b387705f-s.woff2 +0 -0
  319. package/.next/static/media/a515f80c15233dd2-s.woff2 +0 -0
  320. package/.next/static/media/a59cf4e3704a8bf9-s.woff2 +0 -0
  321. package/.next/static/media/a7107da688a6a6c4-s.woff2 +0 -0
  322. package/.next/static/media/b0785a8aafa8fb40-s.woff2 +0 -0
  323. package/.next/static/media/b3afeb402d0641d1-s.woff2 +0 -0
  324. package/.next/static/media/b3d4f23ea9869e41-s.woff2 +0 -0
  325. package/.next/static/media/b88b6f09060fd402-s.woff2 +0 -0
  326. package/.next/static/media/b9bde58fd979694e-s.woff2 +0 -0
  327. package/.next/static/media/bdb722ed5812b325-s.woff2 +0 -0
  328. package/.next/static/media/c24e4778556eba42-s.woff2 +0 -0
  329. package/.next/static/media/c3040269b1771b02-s.woff2 +0 -0
  330. package/.next/static/media/c4123b44ca624496-s.woff2 +0 -0
  331. package/.next/static/media/ccadbccc98acfb1c-s.woff2 +0 -0
  332. package/.next/static/media/d04351f5bc3644ea-s.woff2 +0 -0
  333. package/.next/static/media/d1778a980b3fad78-s.woff2 +0 -0
  334. package/.next/static/media/d416562cb7cba055-s.woff2 +0 -0
  335. package/.next/static/media/d872fd07230782c0-s.woff2 +0 -0
  336. package/.next/static/media/db3791bbb1ae5747-s.woff2 +0 -0
  337. package/.next/static/media/dd090f323c5887c3-s.woff2 +0 -0
  338. package/.next/static/media/dd1fcf6432702b11-s.woff2 +0 -0
  339. package/.next/static/media/e45abf9e3abcfe63-s.woff2 +0 -0
  340. package/.next/static/media/e6e70594dba816d3-s.woff2 +0 -0
  341. package/.next/static/media/e8a6cb3b0c8c1d41-s.woff2 +0 -0
  342. package/.next/static/media/e8fdc46fb8ed5f75-s.woff2 +0 -0
  343. package/.next/static/media/ed7a78808c74aaab-s.woff2 +0 -0
  344. package/.next/static/media/ef9a93445fe49953-s.woff2 +0 -0
  345. package/.next/static/media/f00fd2cfeda7750f-s.woff2 +0 -0
  346. package/.next/static/media/f0863c4be7cb812e-s.woff2 +0 -0
  347. package/.next/static/media/f2fb250c4baa1fea-s.woff2 +0 -0
  348. package/.next/static/media/f392a13a0094c3d1-s.woff2 +0 -0
  349. package/.next/static/media/f42f4d2ecc3cba08-s.woff2 +0 -0
  350. package/.next/static/media/f8f98f7e33dde58b-s.woff2 +0 -0
  351. package/.next/static/media/fba9d66c2358f8e6-s.woff2 +0 -0
  352. package/.next/static/media/fc8b52876cd8aa42-s.woff2 +0 -0
  353. package/.next/static/media/fcc5ccbd071c5f3e-s.woff2 +0 -0
  354. package/.next/static/media/fe9908567bfd9cbf-s.woff2 +0 -0
  355. package/.next/trace +120 -0
  356. package/.next/types/app/api/asset/[...path]/route.ts +343 -0
  357. package/.next/types/app/api/auth/[...nextauth]/route.ts +343 -0
  358. package/.next/types/app/api/blog/[id]/highlights/[hid]/comments/[cid]/reactions/route.ts +343 -0
  359. package/.next/types/app/api/blog/[id]/highlights/[hid]/comments/[cid]/route.ts +343 -0
  360. package/.next/types/app/api/blog/[id]/highlights/[hid]/replies/route.ts +343 -0
  361. package/.next/types/app/api/blog/[id]/highlights/[hid]/resolve/route.ts +343 -0
  362. package/.next/types/app/api/blog/[id]/highlights/[hid]/route.ts +343 -0
  363. package/.next/types/app/api/blog/[id]/highlights/route.ts +343 -0
  364. package/.next/types/app/api/graphql/route.ts +343 -0
  365. package/.next/types/app/api/mile/prompts/route.ts +343 -0
  366. package/.next/types/app/api/upload/route.ts +343 -0
  367. package/.next/types/app/api/webhooks/notification/route.ts +343 -0
  368. package/.next/types/app/atom.xml/route.ts +343 -0
  369. package/.next/types/app/blog/[id]/page.ts +79 -0
  370. package/.next/types/app/blog/page.ts +79 -0
  371. package/.next/types/app/editor/page.ts +79 -0
  372. package/.next/types/app/login/page.ts +79 -0
  373. package/.next/types/app/memos/page.ts +79 -0
  374. package/.next/types/app/page.ts +79 -0
  375. package/.next/types/app/rss.xml/route.ts +343 -0
  376. package/.next/types/app/unavailable/page.ts +79 -0
  377. package/.next/types/package.json +1 -0
  378. package/bin/cici.js +9 -7
  379. package/package.json +5 -4
  380. package/public/Tinymind-banner.png +0 -0
  381. package/public/Tinymind.dmg +0 -0
  382. package/public/icon-144.jpg +0 -0
  383. package/public/icon.jpg +0 -0
  384. package/public/manifest.json +25 -0
  385. package/public/presentations/coordinated-access-control-with-policy/index.html +1593 -0
  386. package/public/tinymind.icns +0 -0
  387. /package/.next/standalone/.next/static/{Pl18p4h2shbbqjypPxStc → PDn4f_-4CIbfG8EmueowG}/_buildManifest.js +0 -0
  388. /package/.next/standalone/.next/static/{Pl18p4h2shbbqjypPxStc → PDn4f_-4CIbfG8EmueowG}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../../sample-content/assets/.gitkeep","../../../../../sample-content/blog/hello-cici.md","../../../../../sample-content/highlights/.gitkeep","../../../../../sample-content/likes.json","../../../../../sample-content/memos.json","../../../../../sample-content/site-config.json","../../../../package.json","../../../chunks/2878.js","../../../chunks/330.js","../../../chunks/3607.js","../../../chunks/8948.js","../../../webpack-runtime.js"]}
@@ -0,0 +1,230 @@
1
+ "use strict";(()=>{var e={};e.id=3580,e.ids=[3580],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},10985:(e,t,o)=>{o.r(t),o.d(t,{originalPathname:()=>y,patchFetch:()=>f,requestAsyncStorage:()=>p,routeModule:()=>d,serverHooks:()=>h,staticGenerationAsyncStorage:()=>m});var r={};o.r(r),o.d(r,{GET:()=>u});var n=o(49303),a=o(88716),i=o(60670),s=o(87070);let l=`You are a travel information extractor. Parse the user's natural language description and extract ALL trip details.
2
+
3
+ **User Locale Context:**
4
+ - Language: {{USER_LANGUAGE}}
5
+ - Region: {{USER_REGION}}
6
+ - Currency: {{USER_CURRENCY}}
7
+ - Timezone: {{USER_TIMEZONE}}
8
+ - Date format preference: {{DATE_FORMAT_ORDER}}
9
+
10
+ Use this locale context to:
11
+ 1. Interpret dates correctly (e.g., "1/2" means January 2nd in MM/DD regions, February 1st in DD/MM regions)
12
+ 2. Understand city names in the user's language (e.g., "北京" = Beijing, "東京" = Tokyo)
13
+ 3. Handle currency mentions appropriately
14
+ 4. Interpret relative dates based on the user's timezone
15
+
16
+ **Today's date: {{TODAY}}**
17
+ **Yesterday: {{YESTERDAY}}**
18
+ **Last Saturday: {{LAST_SATURDAY}}**
19
+ **Last weekday reference:**
20
+ - Last Sunday = {{LAST_SUNDAY}}
21
+ - Last Monday = {{LAST_MONDAY}}
22
+ - Last Tuesday = {{LAST_TUESDAY}}
23
+ - Last Wednesday = {{LAST_WEDNESDAY}}
24
+ - Last Thursday = {{LAST_THURSDAY}}
25
+ - Last Friday = {{LAST_FRIDAY}}
26
+ - Last Saturday = {{LAST_SATURDAY}}
27
+
28
+ Return ONLY valid JSON with this structure:
29
+
30
+ {
31
+ "segments": [
32
+ {
33
+ "mode": "flight|train|bus|car|rental car|boat|bike|walk",
34
+ "from": "departure city name",
35
+ "fromCountry": "ISO 3166-1 alpha-2 country code (e.g., US, GB, JP)",
36
+ "to": "destination city name",
37
+ "toCountry": "ISO 3166-1 alpha-2 country code (e.g., US, GB, JP)",
38
+ "date": "YYYY-MM-DD"
39
+ }
40
+ ],
41
+ "accommodations": [
42
+ {
43
+ "type": "hotel|airbnb|hostel|apartment|resort|other",
44
+ "name": "hotel/property name",
45
+ "city": "city name",
46
+ "country": "ISO 3166-1 alpha-2 country code",
47
+ "checkIn": "YYYY-MM-DD or null",
48
+ "checkOut": "YYYY-MM-DD or null",
49
+ "nights": number
50
+ }
51
+ ],
52
+ "places": [
53
+ {
54
+ "name": "attraction/place name",
55
+ "city": "city name or null",
56
+ "country": "ISO 3166-1 alpha-2 country code or null",
57
+ "date": "YYYY-MM-DD or null"
58
+ }
59
+ ],
60
+ "companions": ["person name 1", "person name 2"],
61
+ "confidence": 0.0 to 1.0
62
+ }
63
+
64
+ ## Extraction Rules
65
+
66
+ **1. Transportation (CRITICAL - extract from/to cities carefully):**
67
+ - "flew from London to Tokyo" → from: "London", to: "Tokyo"
68
+ - "flew to Paris" → from: null, to: "Paris"
69
+ - "flight from Beijing to Shanghai" → from: "Beijing", to: "Shanghai"
70
+ - "rental car from LA" -> from: "Los Angeles", mode: "rental car"
71
+ - Keywords for mode: flew/flight/plane → "flight", train/rail → "train", drove/car/road trip → "car", rental car -> "rental car", bus/coach → "bus", boat/ferry/ship/cruise → "boat", bike/cycle → "bike", walk/walked/hike → "walk"
72
+
73
+ **2. Accommodations (CRITICAL - extract hotel name with proper capitalization):**
74
+ - ALWAYS capitalize hotel/property names properly (Title Case)
75
+ - "stay in beijing season hotel" → name: "Beijing Season Hotel"
76
+ - "stay in hilton london hotel" → name: "Hilton London Hotel"
77
+ - "stayed at hotel marriott" → name: "Hotel Marriott"
78
+ - "stay in London Hilton for 2 nights" → name: "London Hilton", nights: 2
79
+ - "two nights at Hyatt" → name: "Hyatt", nights: 2
80
+ - "staying at Airbnb" → type: "airbnb"
81
+ - Pattern: "stay in X hotel" or "stay at X hotel" → extract X as the hotel name, properly capitalized
82
+ - Keywords: hotel, stay, stayed, staying, Hilton, Marriott, Hyatt, Airbnb, hostel, 酒店, 民宿
83
+ - Duration keywords: "for X nights", "X nights", "two/three/four nights"
84
+
85
+ **3. Date Calculation for Accommodations (CRITICAL):**
86
+ - When nights are specified, ALWAYS calculate checkOut from checkIn:
87
+ checkOut = checkIn + nights days
88
+ - If no checkIn date is mentioned, use the transportation arrival date as checkIn
89
+ - Example: Arrived {{LAST_TUESDAY}} + 2 nights → checkOut = {{TUESDAY_PLUS_2}}
90
+ - "for two nights" starting {{LAST_TUESDAY}} → checkIn: "{{LAST_TUESDAY}}", checkOut: "{{TUESDAY_PLUS_2}}", nights: 2
91
+
92
+ **4. Places/Attractions:**
93
+ - "visited the Eiffel Tower" → name: "Eiffel Tower"
94
+ - "saw Big Ben" → name: "Big Ben"
95
+ - Keywords: visited, saw, went to, toured, explored, 参观, 游览
96
+
97
+ **5. Travel Companions:**
98
+ - "traveling with John" → companions: ["John"]
99
+ - "with my wife Sarah" → companions: ["Sarah"]
100
+ - "with Chris and Adam" → companions: ["Chris", "Adam"]
101
+ - Keywords: with, traveling with, together with
102
+
103
+ **6. Date Parsing (use the reference dates above):**
104
+ - "last Saturday" → {{LAST_SATURDAY}}
105
+ - "yesterday" → {{YESTERDAY}}
106
+ - "last Monday" → {{LAST_MONDAY}}
107
+ - "last Tuesday" → {{LAST_TUESDAY}}
108
+ - "today" → {{TODAY}}
109
+
110
+ ## Examples
111
+
112
+ Input: "Last Tuesday I flew from Singapore to Beijing and stay in Beijing season hotel for two nights"
113
+ Output:
114
+ {
115
+ "segments": [{"mode": "flight", "from": "Singapore", "fromCountry": "SG", "to": "Beijing", "toCountry": "CN", "date": "{{LAST_TUESDAY}}"}],
116
+ "accommodations": [{"type": "hotel", "name": "Beijing Season Hotel", "city": "Beijing", "country": "CN", "checkIn": "{{LAST_TUESDAY}}", "checkOut": "{{TUESDAY_PLUS_2}}", "nights": 2}],
117
+ "places": [],
118
+ "companions": [],
119
+ "confidence": 0.95
120
+ }
121
+
122
+ Input: "I flew from London to Tokyo last Saturday and I stay in Hilton Tokyo hotel for two nights"
123
+ Output:
124
+ {
125
+ "segments": [{"mode": "flight", "from": "London", "fromCountry": "GB", "to": "Tokyo", "toCountry": "JP", "date": "{{LAST_SATURDAY}}"}],
126
+ "accommodations": [{"type": "hotel", "name": "Hilton Tokyo Hotel", "city": "Tokyo", "country": "JP", "checkIn": "{{LAST_SATURDAY}}", "checkOut": "{{SATURDAY_PLUS_2}}", "nights": 2}],
127
+ "places": [],
128
+ "companions": [],
129
+ "confidence": 0.9
130
+ }
131
+
132
+ Input: "Flew from Paris to Berlin yesterday with John, stayed at Hotel Adlon for 3 nights, visited Brandenburg Gate"
133
+ Output:
134
+ {
135
+ "segments": [{"mode": "flight", "from": "Paris", "fromCountry": "FR", "to": "Berlin", "toCountry": "DE", "date": "{{YESTERDAY}}"}],
136
+ "accommodations": [{"type": "hotel", "name": "Hotel Adlon", "city": "Berlin", "country": "DE", "checkIn": "{{YESTERDAY}}", "checkOut": "{{YESTERDAY_PLUS_3}}", "nights": 3}],
137
+ "places": [{"name": "Brandenburg Gate", "city": "Berlin", "country": "DE"}],
138
+ "companions": ["John"],
139
+ "confidence": 0.95
140
+ }
141
+
142
+ Input: "road trip to LA last Monday, stayed at Airbnb for a week, visited Hollywood and Santa Monica Pier"
143
+ Output:
144
+ {
145
+ "segments": [{"mode": "car", "from": null, "fromCountry": null, "to": "Los Angeles", "toCountry": "US", "date": "{{LAST_MONDAY}}"}],
146
+ "accommodations": [{"type": "airbnb", "city": "Los Angeles", "country": "US", "checkIn": "{{LAST_MONDAY}}", "nights": 7}],
147
+ "places": [{"name": "Hollywood", "city": "Los Angeles", "country": "US"}, {"name": "Santa Monica Pier", "city": "Los Angeles", "country": "US"}],
148
+ "companions": [],
149
+ "confidence": 0.85
150
+ }
151
+
152
+ Input: "rental car from SF to LA last Tuesday"
153
+ Output:
154
+ {
155
+ "segments": [{"mode": "rental car", "from": "San Francisco", "fromCountry": "US", "to": "Los Angeles", "toCountry": "US", "date": "{{LAST_TUESDAY}}"}]
156
+ }
157
+
158
+ ## User's description (extract ALL details):
159
+ "{{USER_INPUT}}"
160
+
161
+ IMPORTANT:
162
+ - Extract the EXACT city names mentioned (from: departure city, to: destination city)
163
+ - ALWAYS include country codes (ISO 3166-1 alpha-2) for all cities (e.g., Tokyo → JP, London → GB, Paris → FR, Beijing → CN, Singapore → SG)
164
+ - Use the reference dates provided above for relative dates
165
+ - Extract hotel names with PROPER CAPITALIZATION (Title Case): "beijing season hotel" → "Beijing Season Hotel"
166
+ - ALWAYS calculate checkOut date: checkOut = checkIn + nights
167
+ - "two nights" = 2, "three nights" = 3, "a week" = 7
168
+ - Return empty arrays if nothing found for that category`,c=`Extract transportation segments and accommodations from these calendar events grouped by trips.
169
+
170
+ **User Locale Context:**
171
+ - Language: {{USER_LANGUAGE}}
172
+ - Region: {{USER_REGION}}
173
+ - Timezone: {{USER_TIMEZONE}}
174
+
175
+ Use this locale context to interpret city names and dates correctly.
176
+
177
+ Return ONLY valid JSON with this exact structure:
178
+
179
+ {
180
+ "trips": [
181
+ {
182
+ "tripIndex": 1,
183
+ "segments": [
184
+ {
185
+ "mode": "flight|train|bus|car",
186
+ "from": "city name or null",
187
+ "to": "city name or null",
188
+ "date": "ISO 8601 date",
189
+ "flightNumber": "flight number or null"
190
+ }
191
+ ],
192
+ "accommodations": [
193
+ {
194
+ "name": "hotel/accommodation name",
195
+ "city": "city name",
196
+ "checkIn": "ISO 8601 date",
197
+ "checkOut": "ISO 8601 date",
198
+ "nights": number
199
+ }
200
+ ]
201
+ }
202
+ ]
203
+ }
204
+
205
+ Rules for extracting cities:
206
+ - Use the Location field to identify cities
207
+ - For flights: "Amsterdam → Porto" or "AMS - OPO" means from Amsterdam to Porto
208
+ - For trains: "Porto to Lisbon" means from Porto to Lisbon
209
+ - If only destination is mentioned (e.g., "Train to Porto"), use the PREVIOUS event's location or destination as origin
210
+ - For hotel stays: extract city from location or hotel name
211
+ - Flight numbers often indicate routes: "KL 1573" with location "Amsterdam Airport" means departing from Amsterdam
212
+ - ALWAYS try to infer origin city from context, previous events, or location field
213
+ - Only use null if city is truly unknown after all context analysis
214
+
215
+ Rules for filtering:
216
+ - Only extract actual transportation (flights, trains, buses, ferries) and hotel stays
217
+ - Skip work meetings, calls, conferences, presentations, town halls, webinars
218
+ - Skip restaurant reservations, social events, appointments
219
+ - Skip events without clear travel intent
220
+
221
+ Examples:
222
+ - "Flight KL 1573" with location "Amsterdam Airport" → from: "Amsterdam", mode: "flight"
223
+ - "Train to Lisbon" following event in Porto → from: "Porto", to: "Lisbon"
224
+ - "Porto → Lisbon" → from: "Porto", to: "Lisbon"
225
+ - "Moxy Lisbon City" → accommodation in Lisbon
226
+
227
+ Calendar events (grouped by trip):
228
+ {{CALENDAR_EVENTS}}
229
+
230
+ IMPORTANT: Return one entry in the "trips" array for each trip that contains valid travel data. Skip trips with no transportation or accommodations. Preserve the tripIndex for reference.`;async function u(){return s.NextResponse.json({version:"1.1.0",updatedAt:new Date().toISOString(),prompts:{siriTrip:l,calendarEvent:c},placeholders:["TODAY","YESTERDAY","LAST_SUNDAY","LAST_MONDAY","LAST_TUESDAY","LAST_WEDNESDAY","LAST_THURSDAY","LAST_FRIDAY","LAST_SATURDAY","TUESDAY_PLUS_2","SATURDAY_PLUS_2","YESTERDAY_PLUS_3","USER_INPUT","CALENDAR_EVENTS","USER_LANGUAGE","USER_REGION","USER_CURRENCY","USER_TIMEZONE","DATE_FORMAT_ORDER"]},{headers:{"Cache-Control":"public, max-age=300, stale-while-revalidate=60"}})}let d=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/mile/prompts/route",pathname:"/api/mile/prompts",filename:"route",bundlePath:"app/api/mile/prompts/route"},resolvedPagePath:"/home/runner/work/cici/cici/app/api/mile/prompts/route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:p,staticGenerationAsyncStorage:m,serverHooks:h}=d,y="/api/mile/prompts/route";function f(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:m})}},79925:e=>{var t=Object.defineProperty,o=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,a={};function i(e){var t;let o=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),r=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===o.length?r:`${r}; ${o.join("; ")}`}function s(e){let t=new Map;for(let o of e.split(/; */)){if(!o)continue;let e=o.indexOf("=");if(-1===e){t.set(o,"true");continue}let[r,n]=[o.slice(0,e),o.slice(e+1)];try{t.set(r,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function l(e){var t,o;if(!e)return;let[[r,n],...a]=s(e),{domain:i,expires:l,httponly:d,maxage:p,path:m,samesite:h,secure:y,partitioned:f,priority:g}=Object.fromEntries(a.map(([e,t])=>[e.toLowerCase(),t]));return function(e){let t={};for(let o in e)e[o]&&(t[o]=e[o]);return t}({name:r,value:decodeURIComponent(n),domain:i,...l&&{expires:new Date(l)},...d&&{httpOnly:!0},..."string"==typeof p&&{maxAge:Number(p)},path:m,...h&&{sameSite:c.includes(t=(t=h).toLowerCase())?t:void 0},...y&&{secure:!0},...g&&{priority:u.includes(o=(o=g).toLowerCase())?o:void 0},...f&&{partitioned:!0}})}((e,o)=>{for(var r in o)t(e,r,{get:o[r],enumerable:!0})})(a,{RequestCookies:()=>d,ResponseCookies:()=>p,parseCookie:()=>s,parseSetCookie:()=>l,stringifyCookie:()=>i}),e.exports=((e,a,i,s)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let i of r(a))n.call(e,i)||void 0===i||t(e,i,{get:()=>a[i],enumerable:!(s=o(a,i))||s.enumerable});return e})(t({},"__esModule",{value:!0}),a);var c=["strict","lax","none"],u=["low","medium","high"],d=class{constructor(e){this._parsed=new Map,this._headers=e;let t=e.get("cookie");if(t)for(let[e,o]of s(t))this._parsed.set(e,{name:e,value:o})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let o=Array.from(this._parsed);if(!e.length)return o.map(([e,t])=>t);let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return o.filter(([e])=>e===r).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,o]=1===e.length?[e[0].name,e[0].value]:e,r=this._parsed;return r.set(t,{name:t,value:o}),this._headers.set("cookie",Array.from(r).map(([e,t])=>i(t)).join("; ")),this}delete(e){let t=this._parsed,o=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>i(t)).join("; ")),o}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},p=class{constructor(e){var t,o,r;this._parsed=new Map,this._headers=e;let n=null!=(r=null!=(o=null==(t=e.getSetCookie)?void 0:t.call(e))?o:e.get("set-cookie"))?r:[];for(let e of Array.isArray(n)?n:function(e){if(!e)return[];var t,o,r,n,a,i=[],s=0;function l(){for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length}for(;s<e.length;){for(t=s,a=!1;l();)if(","===(o=e.charAt(s))){for(r=s,s+=1,l(),n=s;s<e.length&&"="!==(o=e.charAt(s))&&";"!==o&&","!==o;)s+=1;s<e.length&&"="===e.charAt(s)?(a=!0,s=n,i.push(e.substring(t,r)),t=s):s=r+1}else s+=1;(!a||s>=e.length)&&i.push(e.substring(t,e.length))}return i}(n)){let t=l(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let o=Array.from(this._parsed.values());if(!e.length)return o;let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return o.filter(e=>e.name===r)}has(e){return this._parsed.has(e)}set(...e){let[t,o,r]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:o,...r})),function(e,t){for(let[,o]of(t.delete("set-cookie"),e)){let e=i(o);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,o,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0].path,e[0].domain];return this.set({name:t,path:o,domain:r,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(i).join("; ")}}},49303:(e,t,o)=>{e.exports=o(30517)},38238:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return o}});class o{static get(e,t,o){let r=Reflect.get(e,t,o);return"function"==typeof r?r.bind(e):r}static set(e,t,o,r){return Reflect.set(e,t,o,r)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},92044:(e,t,o)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var o in t)Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}(t,{RequestCookies:function(){return r.RequestCookies},ResponseCookies:function(){return r.ResponseCookies},stringifyCookie:function(){return r.stringifyCookie}});let r=o(79925)}};var t=require("../../../../webpack-runtime.js");t.C(e);var o=e=>t(t.s=e),r=t.X(0,[8948,7070],()=>o(10985));module.exports=r})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/7070.js","../../../../chunks/8948.js","../../../../webpack-runtime.js"]}
@@ -0,0 +1 @@
1
+ {"version":"1.1.0","updatedAt":"2026-07-21T19:08:19.884Z","prompts":{"siriTrip":"You are a travel information extractor. Parse the user's natural language description and extract ALL trip details.\n\n**User Locale Context:**\n- Language: {{USER_LANGUAGE}}\n- Region: {{USER_REGION}}\n- Currency: {{USER_CURRENCY}}\n- Timezone: {{USER_TIMEZONE}}\n- Date format preference: {{DATE_FORMAT_ORDER}}\n\nUse this locale context to:\n1. Interpret dates correctly (e.g., \"1/2\" means January 2nd in MM/DD regions, February 1st in DD/MM regions)\n2. Understand city names in the user's language (e.g., \"北京\" = Beijing, \"東京\" = Tokyo)\n3. Handle currency mentions appropriately\n4. Interpret relative dates based on the user's timezone\n\n**Today's date: {{TODAY}}**\n**Yesterday: {{YESTERDAY}}**\n**Last Saturday: {{LAST_SATURDAY}}**\n**Last weekday reference:**\n- Last Sunday = {{LAST_SUNDAY}}\n- Last Monday = {{LAST_MONDAY}}\n- Last Tuesday = {{LAST_TUESDAY}}\n- Last Wednesday = {{LAST_WEDNESDAY}}\n- Last Thursday = {{LAST_THURSDAY}}\n- Last Friday = {{LAST_FRIDAY}}\n- Last Saturday = {{LAST_SATURDAY}}\n\nReturn ONLY valid JSON with this structure:\n\n{\n \"segments\": [\n {\n \"mode\": \"flight|train|bus|car|rental car|boat|bike|walk\",\n \"from\": \"departure city name\",\n \"fromCountry\": \"ISO 3166-1 alpha-2 country code (e.g., US, GB, JP)\",\n \"to\": \"destination city name\",\n \"toCountry\": \"ISO 3166-1 alpha-2 country code (e.g., US, GB, JP)\",\n \"date\": \"YYYY-MM-DD\"\n }\n ],\n \"accommodations\": [\n {\n \"type\": \"hotel|airbnb|hostel|apartment|resort|other\",\n \"name\": \"hotel/property name\",\n \"city\": \"city name\",\n \"country\": \"ISO 3166-1 alpha-2 country code\",\n \"checkIn\": \"YYYY-MM-DD or null\",\n \"checkOut\": \"YYYY-MM-DD or null\",\n \"nights\": number\n }\n ],\n \"places\": [\n {\n \"name\": \"attraction/place name\",\n \"city\": \"city name or null\",\n \"country\": \"ISO 3166-1 alpha-2 country code or null\",\n \"date\": \"YYYY-MM-DD or null\"\n }\n ],\n \"companions\": [\"person name 1\", \"person name 2\"],\n \"confidence\": 0.0 to 1.0\n}\n\n## Extraction Rules\n\n**1. Transportation (CRITICAL - extract from/to cities carefully):**\n- \"flew from London to Tokyo\" → from: \"London\", to: \"Tokyo\"\n- \"flew to Paris\" → from: null, to: \"Paris\"\n- \"flight from Beijing to Shanghai\" → from: \"Beijing\", to: \"Shanghai\"\n- \"rental car from LA\" -> from: \"Los Angeles\", mode: \"rental car\"\n- Keywords for mode: flew/flight/plane → \"flight\", train/rail → \"train\", drove/car/road trip → \"car\", rental car -> \"rental car\", bus/coach → \"bus\", boat/ferry/ship/cruise → \"boat\", bike/cycle → \"bike\", walk/walked/hike → \"walk\"\n\n**2. Accommodations (CRITICAL - extract hotel name with proper capitalization):**\n- ALWAYS capitalize hotel/property names properly (Title Case)\n- \"stay in beijing season hotel\" → name: \"Beijing Season Hotel\"\n- \"stay in hilton london hotel\" → name: \"Hilton London Hotel\"\n- \"stayed at hotel marriott\" → name: \"Hotel Marriott\"\n- \"stay in London Hilton for 2 nights\" → name: \"London Hilton\", nights: 2\n- \"two nights at Hyatt\" → name: \"Hyatt\", nights: 2\n- \"staying at Airbnb\" → type: \"airbnb\"\n- Pattern: \"stay in X hotel\" or \"stay at X hotel\" → extract X as the hotel name, properly capitalized\n- Keywords: hotel, stay, stayed, staying, Hilton, Marriott, Hyatt, Airbnb, hostel, 酒店, 民宿\n- Duration keywords: \"for X nights\", \"X nights\", \"two/three/four nights\"\n\n**3. Date Calculation for Accommodations (CRITICAL):**\n- When nights are specified, ALWAYS calculate checkOut from checkIn:\n checkOut = checkIn + nights days\n- If no checkIn date is mentioned, use the transportation arrival date as checkIn\n- Example: Arrived {{LAST_TUESDAY}} + 2 nights → checkOut = {{TUESDAY_PLUS_2}}\n- \"for two nights\" starting {{LAST_TUESDAY}} → checkIn: \"{{LAST_TUESDAY}}\", checkOut: \"{{TUESDAY_PLUS_2}}\", nights: 2\n\n**4. Places/Attractions:**\n- \"visited the Eiffel Tower\" → name: \"Eiffel Tower\"\n- \"saw Big Ben\" → name: \"Big Ben\"\n- Keywords: visited, saw, went to, toured, explored, 参观, 游览\n\n**5. Travel Companions:**\n- \"traveling with John\" → companions: [\"John\"]\n- \"with my wife Sarah\" → companions: [\"Sarah\"]\n- \"with Chris and Adam\" → companions: [\"Chris\", \"Adam\"]\n- Keywords: with, traveling with, together with\n\n**6. Date Parsing (use the reference dates above):**\n- \"last Saturday\" → {{LAST_SATURDAY}}\n- \"yesterday\" → {{YESTERDAY}}\n- \"last Monday\" → {{LAST_MONDAY}}\n- \"last Tuesday\" → {{LAST_TUESDAY}}\n- \"today\" → {{TODAY}}\n\n## Examples\n\nInput: \"Last Tuesday I flew from Singapore to Beijing and stay in Beijing season hotel for two nights\"\nOutput:\n{\n \"segments\": [{\"mode\": \"flight\", \"from\": \"Singapore\", \"fromCountry\": \"SG\", \"to\": \"Beijing\", \"toCountry\": \"CN\", \"date\": \"{{LAST_TUESDAY}}\"}],\n \"accommodations\": [{\"type\": \"hotel\", \"name\": \"Beijing Season Hotel\", \"city\": \"Beijing\", \"country\": \"CN\", \"checkIn\": \"{{LAST_TUESDAY}}\", \"checkOut\": \"{{TUESDAY_PLUS_2}}\", \"nights\": 2}],\n \"places\": [],\n \"companions\": [],\n \"confidence\": 0.95\n}\n\nInput: \"I flew from London to Tokyo last Saturday and I stay in Hilton Tokyo hotel for two nights\"\nOutput:\n{\n \"segments\": [{\"mode\": \"flight\", \"from\": \"London\", \"fromCountry\": \"GB\", \"to\": \"Tokyo\", \"toCountry\": \"JP\", \"date\": \"{{LAST_SATURDAY}}\"}],\n \"accommodations\": [{\"type\": \"hotel\", \"name\": \"Hilton Tokyo Hotel\", \"city\": \"Tokyo\", \"country\": \"JP\", \"checkIn\": \"{{LAST_SATURDAY}}\", \"checkOut\": \"{{SATURDAY_PLUS_2}}\", \"nights\": 2}],\n \"places\": [],\n \"companions\": [],\n \"confidence\": 0.9\n}\n\nInput: \"Flew from Paris to Berlin yesterday with John, stayed at Hotel Adlon for 3 nights, visited Brandenburg Gate\"\nOutput:\n{\n \"segments\": [{\"mode\": \"flight\", \"from\": \"Paris\", \"fromCountry\": \"FR\", \"to\": \"Berlin\", \"toCountry\": \"DE\", \"date\": \"{{YESTERDAY}}\"}],\n \"accommodations\": [{\"type\": \"hotel\", \"name\": \"Hotel Adlon\", \"city\": \"Berlin\", \"country\": \"DE\", \"checkIn\": \"{{YESTERDAY}}\", \"checkOut\": \"{{YESTERDAY_PLUS_3}}\", \"nights\": 3}],\n \"places\": [{\"name\": \"Brandenburg Gate\", \"city\": \"Berlin\", \"country\": \"DE\"}],\n \"companions\": [\"John\"],\n \"confidence\": 0.95\n}\n\nInput: \"road trip to LA last Monday, stayed at Airbnb for a week, visited Hollywood and Santa Monica Pier\"\nOutput:\n{\n \"segments\": [{\"mode\": \"car\", \"from\": null, \"fromCountry\": null, \"to\": \"Los Angeles\", \"toCountry\": \"US\", \"date\": \"{{LAST_MONDAY}}\"}],\n \"accommodations\": [{\"type\": \"airbnb\", \"city\": \"Los Angeles\", \"country\": \"US\", \"checkIn\": \"{{LAST_MONDAY}}\", \"nights\": 7}],\n \"places\": [{\"name\": \"Hollywood\", \"city\": \"Los Angeles\", \"country\": \"US\"}, {\"name\": \"Santa Monica Pier\", \"city\": \"Los Angeles\", \"country\": \"US\"}],\n \"companions\": [],\n \"confidence\": 0.85\n}\n\nInput: \"rental car from SF to LA last Tuesday\"\nOutput:\n{\n \"segments\": [{\"mode\": \"rental car\", \"from\": \"San Francisco\", \"fromCountry\": \"US\", \"to\": \"Los Angeles\", \"toCountry\": \"US\", \"date\": \"{{LAST_TUESDAY}}\"}]\n}\n\n## User's description (extract ALL details):\n\"{{USER_INPUT}}\"\n\nIMPORTANT:\n- Extract the EXACT city names mentioned (from: departure city, to: destination city)\n- ALWAYS include country codes (ISO 3166-1 alpha-2) for all cities (e.g., Tokyo → JP, London → GB, Paris → FR, Beijing → CN, Singapore → SG)\n- Use the reference dates provided above for relative dates\n- Extract hotel names with PROPER CAPITALIZATION (Title Case): \"beijing season hotel\" → \"Beijing Season Hotel\"\n- ALWAYS calculate checkOut date: checkOut = checkIn + nights\n- \"two nights\" = 2, \"three nights\" = 3, \"a week\" = 7\n- Return empty arrays if nothing found for that category","calendarEvent":"Extract transportation segments and accommodations from these calendar events grouped by trips.\n\n**User Locale Context:**\n- Language: {{USER_LANGUAGE}}\n- Region: {{USER_REGION}}\n- Timezone: {{USER_TIMEZONE}}\n\nUse this locale context to interpret city names and dates correctly.\n\nReturn ONLY valid JSON with this exact structure:\n\n{\n \"trips\": [\n {\n \"tripIndex\": 1,\n \"segments\": [\n {\n \"mode\": \"flight|train|bus|car\",\n \"from\": \"city name or null\",\n \"to\": \"city name or null\",\n \"date\": \"ISO 8601 date\",\n \"flightNumber\": \"flight number or null\"\n }\n ],\n \"accommodations\": [\n {\n \"name\": \"hotel/accommodation name\",\n \"city\": \"city name\",\n \"checkIn\": \"ISO 8601 date\",\n \"checkOut\": \"ISO 8601 date\",\n \"nights\": number\n }\n ]\n }\n ]\n}\n\nRules for extracting cities:\n- Use the Location field to identify cities\n- For flights: \"Amsterdam → Porto\" or \"AMS - OPO\" means from Amsterdam to Porto\n- For trains: \"Porto to Lisbon\" means from Porto to Lisbon\n- If only destination is mentioned (e.g., \"Train to Porto\"), use the PREVIOUS event's location or destination as origin\n- For hotel stays: extract city from location or hotel name\n- Flight numbers often indicate routes: \"KL 1573\" with location \"Amsterdam Airport\" means departing from Amsterdam\n- ALWAYS try to infer origin city from context, previous events, or location field\n- Only use null if city is truly unknown after all context analysis\n\nRules for filtering:\n- Only extract actual transportation (flights, trains, buses, ferries) and hotel stays\n- Skip work meetings, calls, conferences, presentations, town halls, webinars\n- Skip restaurant reservations, social events, appointments\n- Skip events without clear travel intent\n\nExamples:\n- \"Flight KL 1573\" with location \"Amsterdam Airport\" → from: \"Amsterdam\", mode: \"flight\"\n- \"Train to Lisbon\" following event in Porto → from: \"Porto\", to: \"Lisbon\"\n- \"Porto → Lisbon\" → from: \"Porto\", to: \"Lisbon\"\n- \"Moxy Lisbon City\" → accommodation in Lisbon\n\nCalendar events (grouped by trip):\n{{CALENDAR_EVENTS}}\n\nIMPORTANT: Return one entry in the \"trips\" array for each trip that contains valid travel data. Skip trips with no transportation or accommodations. Preserve the tripIndex for reference."},"placeholders":["TODAY","YESTERDAY","LAST_SUNDAY","LAST_MONDAY","LAST_TUESDAY","LAST_WEDNESDAY","LAST_THURSDAY","LAST_FRIDAY","LAST_SATURDAY","TUESDAY_PLUS_2","SATURDAY_PLUS_2","YESTERDAY_PLUS_3","USER_INPUT","CALENDAR_EVENTS","USER_LANGUAGE","USER_REGION","USER_CURRENCY","USER_TIMEZONE","DATE_FORMAT_ORDER"]}
@@ -0,0 +1 @@
1
+ {"status":200,"headers":{"cache-control":"public, max-age=300, stale-while-revalidate=60","content-type":"application/json","x-next-cache-tags":"_N_T_/layout,_N_T_/api/layout,_N_T_/api/mile/layout,_N_T_/api/mile/prompts/layout,_N_T_/api/mile/prompts/route,_N_T_/api/mile/prompts"}}
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var e={};e.id=5998,e.ids=[5998],e.modules={72934:e=>{e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},27790:e=>{e.exports=require("assert")},78893:e=>{e.exports=require("buffer")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},55315:e=>{e.exports=require("path")},86624:e=>{e.exports=require("querystring")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},7337:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>d,serverHooks:()=>g,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{POST:()=>l});var o=t(49303),n=t(88716),a=t(60670),i=t(87070),u=t(45609),p=t(90455),c=t(63607);async function l(e){let r=await (0,u.getServerSession)(p.L),t=(0,c.VH)(r?.accessToken);if(!t.canWrite())return i.NextResponse.json({error:"This cici instance is read-only."},{status:403});try{let r=(await e.formData()).get("file");if(!r||"string"==typeof r)return i.NextResponse.json({error:"No file provided."},{status:400});let s=await t.uploadAsset(r);return i.NextResponse.json({url:s})}catch(e){return console.error("Upload failed:",e),i.NextResponse.json({error:"Upload failed."},{status:500})}}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/upload/route",pathname:"/api/upload",filename:"route",bundlePath:"app/api/upload/route"},resolvedPagePath:"/home/runner/work/cici/cici/app/api/upload/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:x,staticGenerationAsyncStorage:f,serverHooks:g}=d,m="/api/upload/route";function q(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:f})}},90455:(e,r,t)=>{t.d(r,{G:()=>o,L:()=>n});var s=t(45609);async function o(){let e=await (0,s.getServerSession)(n);return e?(e.accessToken?console.log("Session found with access token"):console.log("Session found, but no access token"),e):(console.log("No session found"),null)}let n={providers:[(0,t(77210).Z)({clientId:process.env.GITHUB_ID,clientSecret:process.env.GITHUB_SECRET,authorization:{params:{scope:"public_repo workflow"}}})],callbacks:{async jwt({token:e,account:r,profile:t}){r&&r.access_token&&(e.accessToken=r.access_token);let s=t&&"object"==typeof t&&"login"in t?t.login:void 0,o=r&&"object"==typeof r&&"username"in r?r.username:void 0;return(s||o)&&(e.username=s??o),e},session:async({session:e,token:r})=>(e.accessToken=r.accessToken,e.user&&(e.user.username=r.username),e)},secret:process.env.NEXTAUTH_SECRET,debug:!1}},49303:(e,r,t)=>{e.exports=t(30517)}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,2878,1615,330,2448,7070,3607],()=>t(7337));module.exports=s})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../../sample-content/assets/.gitkeep","../../../../../sample-content/blog/hello-cici.md","../../../../../sample-content/highlights/.gitkeep","../../../../../sample-content/likes.json","../../../../../sample-content/memos.json","../../../../../sample-content/site-config.json","../../../../package.json","../../../chunks/1615.js","../../../chunks/2448.js","../../../chunks/2878.js","../../../chunks/330.js","../../../chunks/3607.js","../../../chunks/7070.js","../../../chunks/8948.js","../../../webpack-runtime.js"]}
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var e={};e.id=7654,e.ids=[7654],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},25046:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>D,patchFetch:()=>v,requestAsyncStorage:()=>h,routeModule:()=>m,serverHooks:()=>y,staticGenerationAsyncStorage:()=>g});var n={};r.r(n),r.d(n,{GET:()=>f,POST:()=>d});var o=r(49303),i=r(88716),s=r(60670),a=r(87070);let u={"app.milemile.monthly":{name:"Mile Premium",emoji:"✈️"},"app.expensee.premium":{name:"ExpenSee Premium",emoji:"\uD83D\uDCB0"},"app.wnder.premium":{name:"Wnder Premium",emoji:"\uD83C\uDFA7"}},l=new Set(["SUBSCRIBED","DID_RENEW","DID_FAIL_TO_RENEW","EXPIRED","REFUND","DID_CHANGE_RENEWAL_STATUS"]);function p(e){let t=e.split(".");if(3!==t.length)throw Error("Invalid JWT format");let r=t[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(Buffer.from(r,"base64").toString("utf-8"))}async function c(e,t){let r=process.env.DAY_APP_TOKEN;if(!r)return console.error("DAY_APP_TOKEN environment variable not set"),!1;try{let n=`https://api.day.app/${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`;console.log("Sending notification to Day.app:",{title:e,body:t});let o=await fetch(n,{method:"GET"});if(!o.ok)return console.error("Day.app error:",await o.text()),!1;return!0}catch(e){return console.error("Failed to send Day.app notification:",e),!1}}async function d(e){try{let t=await e.json();console.log("Received Apple notification:",JSON.stringify(t,null,2));let{signedPayload:r}=t;if(!r)return console.error("Missing signedPayload"),a.NextResponse.json({error:"Missing signedPayload"},{status:400});let n=p(r),{notificationType:o,data:i}=n;if(console.log("Notification type:",o),!l.has(o))return console.log(`Ignoring event type: ${o}`),a.NextResponse.json({message:"Event ignored"},{status:200});if(!i?.signedTransactionInfo)return console.error("Missing signedTransactionInfo"),a.NextResponse.json({error:"Missing transaction info"},{status:400});let s=p(i.signedTransactionInfo),d=s.productId;console.log("Product ID:",d);let f=d?u[d]||{name:d,emoji:"\uD83D\uDCF1"}:{name:"Unknown Product",emoji:"\uD83D\uDCF1"},m=function(e,t){let{name:r,emoji:n}=t;switch(e){case"SUBSCRIBED":return`${n} ${r} - New Subscription`;case"DID_RENEW":return`${n} ${r} - Renewed`;case"DID_FAIL_TO_RENEW":return`⚠️ ${r} - Payment Failed`;case"EXPIRED":return`⏰ ${r} - Expired`;case"REFUND":return`💸 ${r} - Refunded`;case"DID_CHANGE_RENEWAL_STATUS":return`⚙️ ${r} - Status Changed`;default:return`📱 ${r} - ${e}`}}(o,f),h=function(e,t){let r=[];if(e.productId&&r.push(`Product: ${e.productId}`),e.purchaseDate){let t=new Date(Number(e.purchaseDate));r.push(`Date: ${t.toUTCString()}`)}if(e.expiresDate){let t=new Date(Number(e.expiresDate));r.push(`Expires: ${t.toUTCString()}`)}e.originalTransactionId&&r.push(`TX: ${e.originalTransactionId}`);let n=t.environment||t.notificationEnvironment;return n&&r.push(`Env: ${"Sandbox"===n?"\uD83E\uDDEA Sandbox":"\uD83D\uDFE2 Production"}`),r.join("\n")}(s,n);return await c(m,h)?console.log("Notification sent successfully"):console.error("Failed to send notification"),a.NextResponse.json({message:"OK"},{status:200})}catch(e){return console.error("Error processing webhook:",e),a.NextResponse.json({message:"OK"},{status:200})}}async function f(){return a.NextResponse.json({message:"App Store webhook endpoint",status:"active",trackedEvents:Array.from(l),products:Object.keys(u)})}let m=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/webhooks/notification/route",pathname:"/api/webhooks/notification",filename:"route",bundlePath:"app/api/webhooks/notification/route"},resolvedPagePath:"/home/runner/work/cici/cici/app/api/webhooks/notification/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:y}=m,D="/api/webhooks/notification/route";function v(){return(0,s.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:g})}},79925:e=>{var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={};function s(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function a(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,o]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=o?o:"true"))}catch{}}return t}function u(e){var t,r;if(!e)return;let[[n,o],...i]=a(e),{domain:s,expires:u,httponly:c,maxage:d,path:f,samesite:m,secure:h,partitioned:g,priority:y}=Object.fromEntries(i.map(([e,t])=>[e.toLowerCase(),t]));return function(e){let t={};for(let r in e)e[r]&&(t[r]=e[r]);return t}({name:n,value:decodeURIComponent(o),domain:s,...u&&{expires:new Date(u)},...c&&{httpOnly:!0},..."string"==typeof d&&{maxAge:Number(d)},path:f,...m&&{sameSite:l.includes(t=(t=m).toLowerCase())?t:void 0},...h&&{secure:!0},...y&&{priority:p.includes(r=(r=y).toLowerCase())?r:void 0},...g&&{partitioned:!0}})}((e,r)=>{for(var n in r)t(e,n,{get:r[n],enumerable:!0})})(i,{RequestCookies:()=>c,ResponseCookies:()=>d,parseCookie:()=>a,parseSetCookie:()=>u,stringifyCookie:()=>s}),e.exports=((e,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let s of n(i))o.call(e,s)||void 0===s||t(e,s,{get:()=>i[s],enumerable:!(a=r(i,s))||a.enumerable});return e})(t({},"__esModule",{value:!0}),i);var l=["strict","lax","none"],p=["low","medium","high"],c=class{constructor(e){this._parsed=new Map,this._headers=e;let t=e.get("cookie");if(t)for(let[e,r]of a(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>s(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>s(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},d=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;let o=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(let e of Array.isArray(o)?o:function(e){if(!e)return[];var t,r,n,o,i,s=[],a=0;function u(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,i=!1;u();)if(","===(r=e.charAt(a))){for(n=a,a+=1,u(),o=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(i=!0,a=o,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!i||a>=e.length)&&s.push(e.substring(t,e.length))}return s}(o)){let t=u(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,o=this._parsed;return o.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=s(r);t.append("set-cookie",e)}}(o,this._headers),this}delete(...e){let[t,r,n]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0].path,e[0].domain];return this.set({name:t,path:r,domain:n,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(s).join("; ")}}},49303:(e,t,r)=>{e.exports=r(30517)},38238:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},92044:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RequestCookies:function(){return n.RequestCookies},ResponseCookies:function(){return n.ResponseCookies},stringifyCookie:function(){return n.stringifyCookie}});let n=r(79925)}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,7070],()=>r(25046));module.exports=n})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/7070.js","../../../../chunks/8948.js","../../../../webpack-runtime.js"]}
@@ -0,0 +1,34 @@
1
+ "use strict";(()=>{var e={};e.id=7478,e.ids=[7478],e.modules={72934:e=>{e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},70009:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>x,requestAsyncStorage:()=>p,routeModule:()=>c,serverHooks:()=>h,staticGenerationAsyncStorage:()=>m});var n={};r.r(n),r.d(n,{GET:()=>d,revalidate:()=>u});var o=r(49303),a=r(88716),i=r(60670),s=r(63607),l=r(94706);let u=3600;async function d(){let e=(0,l.q)();try{let t=(0,s.VH)(),r=(await t.getBlogPosts()).sort((e,t)=>new Date(t.date).getTime()-new Date(e.date).getTime()).slice(0,20),n=new Date().toISOString(),o=r[0],a=o?new Date(o.date).toISOString():n,i=`<?xml version="1.0" encoding="utf-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom">
3
+ <title>Minghe's Blog</title>
4
+ <subtitle>Minghe's personal blog sharing travel experiences across Europe and Asia, tech insights, and daily thoughts.</subtitle>
5
+ <link href="${e}/atom.xml" rel="self"/>
6
+ <link href="${e}"/>
7
+ <updated>${a}</updated>
8
+ <id>${e}/</id>
9
+ <author>
10
+ <name>Minghe</name>
11
+ <email>noreply@minghe.me</email>
12
+ </author>
13
+ <generator>Next.js</generator>
14
+ ${r.map(t=>`
15
+ <entry>
16
+ <title>${t.title.replace(/[<>&'"]/g,function(e){switch(e){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"'":return"&apos;";case'"':return"&quot;";default:return e}})}</title>
17
+ <link href="${e}/blog/${encodeURIComponent(t.id)}"/>
18
+ <updated>${new Date(t.date).toISOString()}</updated>
19
+ <id>${e}/blog/${encodeURIComponent(t.id)}</id>
20
+ <content type="html"><![CDATA[${t.content}]]></content>
21
+ <published>${new Date(t.date).toISOString()}</published>
22
+ </entry>`).join("")}
23
+ </feed>`;return new Response(i,{headers:{"Content-Type":"application/atom+xml; charset=utf-8"}})}catch(t){return console.error("Error generating Atom feed:",t),new Response(`<?xml version="1.0" encoding="utf-8"?>
24
+ <feed xmlns="http://www.w3.org/2005/Atom">
25
+ <title>Minghe's Blog</title>
26
+ <subtitle>Minghe's personal blog</subtitle>
27
+ <link href="${e}/atom.xml" rel="self"/>
28
+ <link href="${e}"/>
29
+ <updated>${new Date().toISOString()}</updated>
30
+ <id>${e}/</id>
31
+ <author>
32
+ <name>Minghe</name>
33
+ </author>
34
+ </feed>`,{headers:{"Content-Type":"application/atom+xml; charset=utf-8"}})}}let c=new o.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/atom.xml/route",pathname:"/atom.xml",filename:"route",bundlePath:"app/atom.xml/route"},resolvedPagePath:"/home/runner/work/cici/cici/app/atom.xml/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:p,staticGenerationAsyncStorage:m,serverHooks:h}=c,g="/atom.xml/route";function x(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:m})}},94706:(e,t,r)=>{r.d(t,{q:()=>i,Z:()=>a});let n=JSON.parse('{"title":"cici","description":"A git-backed blog and memo app that just works. Write posts and memos in Markdown, stored in your own repo and always in version control.","author":{"name":"Your Name","bio":"A short bio about yourself goes here.","location":"Somewhere on Earth"},"keywords":["blog","memo","markdown","github","cici"],"social":{"github":"your-github-username","twitter":"your_twitter_handle"},"links":{"github.com":"https://github.com/your-github-username","x.com":"https://x.com/your_twitter_handle"}}');var o=r(71615);function a(){return n}function i(){try{let e=(0,o.headers)(),t=e.get("host"),r=e.get("x-forwarded-proto")||"http";if(t)return`${r}://${t}`}catch(e){console.warn("Could not get dynamic base URL, falling back to default:",e)}return"https://blog.minghe.me"}},49303:(e,t,r)=>{e.exports=r(30517)}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,2878,1615,3607],()=>r(70009));module.exports=n})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../sample-content/assets/.gitkeep","../../../../sample-content/blog/hello-cici.md","../../../../sample-content/highlights/.gitkeep","../../../../sample-content/likes.json","../../../../sample-content/memos.json","../../../../sample-content/site-config.json","../../../package.json","../../chunks/1615.js","../../chunks/2878.js","../../chunks/3607.js","../../chunks/8948.js","../../webpack-runtime.js"]}
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom">
3
+ <title>Minghe's Blog</title>
4
+ <subtitle>Minghe's personal blog sharing travel experiences across Europe and Asia, tech insights, and daily thoughts.</subtitle>
5
+ <link href="https://blog.minghe.me/atom.xml" rel="self"/>
6
+ <link href="https://blog.minghe.me"/>
7
+ <updated>2026-07-21T19:08:20.287Z</updated>
8
+ <id>https://blog.minghe.me/</id>
9
+ <author>
10
+ <name>Minghe</name>
11
+ <email>noreply@minghe.me</email>
12
+ </author>
13
+ <generator>Next.js</generator>
14
+
15
+ </feed>
@@ -0,0 +1 @@
1
+ {"status":200,"headers":{"content-type":"application/atom+xml; charset=utf-8","x-next-cache-tags":"_N_T_/layout,_N_T_/atom.xml/layout,_N_T_/atom.xml/route,_N_T_/atom.xml"}}