thursday-agent 0.22.0 → 0.23.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 (455) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +4 -4
  4. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +12 -12
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +11 -11
  16. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/server/app/api/artifact/route.js +6 -6
  18. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  19. package/.next/server/app/api/bot/memory/files/route.js +5 -4
  20. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/route.js +9 -9
  22. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/route.js +9 -9
  24. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/thread/[id]/route.js +2 -2
  26. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/bot/thread/file/route.js +12 -12
  28. package/.next/server/app/api/bot/thread/file/route.js.nft.json +1 -1
  29. package/.next/server/app/api/bot/thread/route.js +2 -2
  30. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  31. package/.next/server/app/api/config/route.js +2 -2
  32. package/.next/server/app/api/config/route.js.nft.json +1 -1
  33. package/.next/server/app/api/events/route.js.nft.json +1 -1
  34. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/file/[...path]/route.js +3 -3
  36. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  37. package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -1
  38. package/.next/server/app/api/llm-model/catalog/[provider]/route.js.nft.json +1 -1
  39. package/.next/server/app/api/llm-model/credits/[provider]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  41. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  42. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  43. package/.next/server/app/api/mcp/oauth/callback/route.js +2 -2
  44. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  45. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  46. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  47. package/.next/server/app/api/memory/edit/route.js +13 -13
  48. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  49. package/.next/server/app/api/memory/route.js +1 -1
  50. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  51. package/.next/server/app/api/reach/route.js +11 -11
  52. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  53. package/.next/server/app/api/routine/route.js +9 -9
  54. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  55. package/.next/server/app/api/running/route.js.nft.json +1 -1
  56. package/.next/server/app/api/signins/route.js +7 -6
  57. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  58. package/.next/server/app/api/skills/[source]/[name]/route.js +8 -8
  59. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  60. package/.next/server/app/api/skills/route.js +8 -8
  61. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  62. package/.next/server/app/api/thursday/call/end/route.js +6 -6
  63. package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -1
  64. package/.next/server/app/api/thursday/call/plan/route.js +16 -16
  65. package/.next/server/app/api/thursday/call/plan/route.js.nft.json +1 -1
  66. package/.next/server/app/api/thursday/call/route.js +6 -6
  67. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  68. package/.next/server/app/api/thursday/settings/route.js +6 -6
  69. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  70. package/.next/server/app/api/thursday/text/route.js +16 -16
  71. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  72. package/.next/server/app/api/thursday/tool-call/route.js +10 -10
  73. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  74. package/.next/server/app/api/workspace/files/route.js +1 -1
  75. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  76. package/.next/server/app/api/workspace/route.js +1 -1
  77. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  78. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +11 -11
  79. package/.next/server/app/artifact/[...path]/page.js +5 -5
  80. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  81. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  83. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  84. package/.next/server/app/page/react-loadable-manifest.json +2 -2
  85. package/.next/server/app/page/server-reference-manifest.json +162 -162
  86. package/.next/server/app/page.js +7 -7
  87. package/.next/server/app/page.js.nft.json +1 -1
  88. package/.next/server/app/page_client-reference-manifest.js +1 -1
  89. package/.next/server/chunks/[root-of-the-server]__019e1fy._.js +2 -2
  90. package/.next/server/chunks/[root-of-the-server]__01jpmcj._.js +2 -2
  91. package/.next/server/chunks/[root-of-the-server]__03bjojd._.js +2 -2
  92. package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
  93. package/.next/server/chunks/[root-of-the-server]__06kxzw-._.js +2 -2
  94. package/.next/server/chunks/[root-of-the-server]__0atwstu._.js +1 -1
  95. package/.next/server/chunks/{[root-of-the-server]__005onk_._.js → [root-of-the-server]__0cfv4rq._.js} +1 -1
  96. package/.next/server/chunks/[root-of-the-server]__0d-dfqm._.js +1 -1
  97. package/.next/server/chunks/{[root-of-the-server]__1-i6lgn._.js → [root-of-the-server]__0d00o4_._.js} +1 -1
  98. package/.next/server/chunks/{[root-of-the-server]__0itmdqy._.js → [root-of-the-server]__0e8y4ok._.js} +1 -1
  99. package/.next/server/chunks/{[root-of-the-server]__1tyftcr._.js → [root-of-the-server]__0eem_66._.js} +1 -1
  100. package/.next/server/chunks/{[root-of-the-server]__0xn7a8p._.js → [root-of-the-server]__0jn2qbf._.js} +1 -1
  101. package/.next/server/chunks/{[root-of-the-server]__08922kg._.js → [root-of-the-server]__0l563r8._.js} +1 -1
  102. package/.next/server/chunks/[root-of-the-server]__0mh1tgg._.js +1 -1
  103. package/.next/server/chunks/[root-of-the-server]__0mq0qmk._.js +3 -0
  104. package/.next/server/chunks/[root-of-the-server]__0ncs9uu._.js +1 -1
  105. package/.next/server/chunks/{[root-of-the-server]__1a7rgvy._.js → [root-of-the-server]__0pp2355._.js} +1 -1
  106. package/.next/server/chunks/{[root-of-the-server]__1g08s7l._.js → [root-of-the-server]__0r77huw._.js} +2 -2
  107. package/.next/server/chunks/[root-of-the-server]__10_v9ml._.js +3 -0
  108. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  109. package/.next/server/chunks/[root-of-the-server]__1478lu3._.js +1 -1
  110. package/.next/server/chunks/[root-of-the-server]__16xao_p._.js +5 -0
  111. package/.next/server/chunks/[root-of-the-server]__17kdjf6._.js +2 -2
  112. package/.next/server/chunks/[root-of-the-server]__17m7ag9._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__17yv6lg._.js +5 -0
  114. package/.next/server/chunks/[root-of-the-server]__19aqyg-._.js +1 -1
  115. package/.next/server/chunks/[root-of-the-server]__19imprr._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
  117. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  118. package/.next/server/chunks/[root-of-the-server]__1fhule0._.js +3 -0
  119. package/.next/server/chunks/[root-of-the-server]__1hing45._.js +3 -0
  120. package/.next/server/chunks/{[root-of-the-server]__0mttntm._.js → [root-of-the-server]__1ivfglf._.js} +1 -1
  121. package/.next/server/chunks/[root-of-the-server]__1jcu_e9._.js +5 -0
  122. package/.next/server/chunks/{[root-of-the-server]__0m0qglo._.js → [root-of-the-server]__1kb-dkn._.js} +2 -2
  123. package/.next/server/chunks/{[root-of-the-server]__0eluax8._.js → [root-of-the-server]__1mowvzz._.js} +1 -1
  124. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  125. package/.next/server/chunks/[root-of-the-server]__1o7z93z._.js +1 -1
  126. package/.next/server/chunks/[root-of-the-server]__1onvx8x._.js +1 -1
  127. package/.next/server/chunks/[root-of-the-server]__1q_d6dj._.js +3 -0
  128. package/.next/server/chunks/[root-of-the-server]__1u_6dhy._.js +1 -1
  129. package/.next/server/chunks/{[root-of-the-server]__1_wtn0q._.js → [root-of-the-server]__1yiqjfx._.js} +1 -1
  130. package/.next/server/chunks/[root-of-the-server]__1yr_vvq._.js +3 -0
  131. package/.next/server/chunks/_0-mqt2w._.js +3 -0
  132. package/.next/server/chunks/_0-qt5if._.js +1 -1
  133. package/.next/server/chunks/{_0fau3ya._.js → _00aztuo._.js} +2 -2
  134. package/.next/server/chunks/_021kabv._.js +53 -0
  135. package/.next/server/chunks/_032k4m6._.js +3 -0
  136. package/.next/server/chunks/_03p6r2-._.js +1 -1
  137. package/.next/server/chunks/_06b5b4-._.js +2 -2
  138. package/.next/server/chunks/_06u9yo-._.js +1 -1
  139. package/.next/server/chunks/_07mczew._.js +3 -0
  140. package/.next/server/chunks/_07pkeds._.js +1 -1
  141. package/.next/server/chunks/_08354bn._.js +22 -22
  142. package/.next/server/chunks/_083t_nr._.js +5 -0
  143. package/.next/server/chunks/_0c-s0ei._.js +3 -0
  144. package/.next/server/chunks/_0cq69mm._.js +1 -1
  145. package/.next/server/chunks/_0gifi_2._.js +7 -0
  146. package/.next/server/chunks/_0gxz_1b._.js +1 -1
  147. package/.next/server/chunks/{_1tjwvoz._.js → _0la8s6t._.js} +2 -2
  148. package/.next/server/chunks/_0p27in2._.js +1 -1
  149. package/.next/server/chunks/{_09rtyfn._.js → _0rn3c_0._.js} +24 -26
  150. package/.next/server/chunks/_0ue8nq-._.js +5 -1
  151. package/.next/server/chunks/{_1uu4wjr._.js → _0wkhub3._.js} +2 -2
  152. package/.next/server/chunks/_0wyh244._.js +22 -22
  153. package/.next/server/chunks/_0ynjnhl._.js +5 -0
  154. package/.next/server/chunks/_1-wp0r0._.js +1 -1
  155. package/.next/server/chunks/{_201k0ah._.js → _12-7atf._.js} +2 -2
  156. package/.next/server/chunks/{_02mn8d7._.js → _124q1p2._.js} +2 -2
  157. package/.next/server/chunks/{_14xuq46._.js → _13qoxq9._.js} +24 -26
  158. package/.next/server/chunks/{_11y8h29._.js → _15-_mie._.js} +2 -2
  159. package/.next/server/chunks/_1823_7a._.js +1 -1
  160. package/.next/server/chunks/{_0uir6hb._.js → _186uku9._.js} +2 -2
  161. package/.next/server/chunks/{_0ggqpiz._.js → _18sj4xf._.js} +2 -2
  162. package/.next/server/chunks/_19kea1l._.js +12 -12
  163. package/.next/server/chunks/_1ac33qw._.js +2 -2
  164. package/.next/server/chunks/{_18z965x._.js → _1chy-lk._.js} +2 -2
  165. package/.next/server/chunks/_1cw6-rv._.js +1 -1
  166. package/.next/server/chunks/_1evvnbp._.js +1 -1
  167. package/.next/server/chunks/_1f_x75d._.js +3 -0
  168. package/.next/server/chunks/_1gn2r2q._.js +7 -9
  169. package/.next/server/chunks/_1icgbi8._.js +1 -1
  170. package/.next/server/chunks/{_1ozcb6o._.js → _1k6bmez._.js} +2 -2
  171. package/.next/server/chunks/_1ko5shz._.js +1 -1
  172. package/.next/server/chunks/_1ksyu6r._.js +1 -1
  173. package/.next/server/chunks/_1kwmzab._.js +3 -0
  174. package/.next/server/chunks/_1lg0lsu._.js +1 -1
  175. package/.next/server/chunks/_1pv6xbq._.js +5 -0
  176. package/.next/server/chunks/_1q42187._.js +2 -2
  177. package/.next/server/chunks/_1q6e56i._.js +7 -9
  178. package/.next/server/chunks/_1t43w6q._.js +1 -1
  179. package/.next/server/chunks/_1t8fv7b._.js +1 -1
  180. package/.next/server/chunks/_1ufbxe1._.js +1 -1
  181. package/.next/server/chunks/_1wgae1c._.js +1 -1
  182. package/.next/server/chunks/_1xps4ob._.js +1 -1
  183. package/.next/server/chunks/_1znrlca._.js +3 -0
  184. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  185. package/.next/server/chunks/features_14kex_m._.js +11 -11
  186. package/.next/server/chunks/features_bot_08z387_._.js +2 -2
  187. package/.next/server/chunks/features_bot_1d6ghh5._.js +41 -0
  188. package/.next/server/chunks/features_bot_1dfrdsb._.js +10 -6
  189. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0yd5xa0._.js → node_modules_consola_dist_chunks_prompt_mjs_0k--vqs._.js} +1 -1
  190. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0ufuc3s._.js +3 -0
  191. package/.next/server/chunks/ssr/[root-of-the-server]__05qiosr._.js +3 -0
  192. package/.next/server/chunks/ssr/[root-of-the-server]__0y03pu0._.js +3 -0
  193. package/.next/server/chunks/ssr/[root-of-the-server]__0zt_au4._.js +3 -0
  194. package/.next/server/chunks/ssr/{[root-of-the-server]__0eloa6y._.js → [root-of-the-server]__17yeveo._.js} +5 -5
  195. package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
  196. package/.next/server/chunks/ssr/[root-of-the-server]__1t38-p_._.js +3 -0
  197. package/.next/server/chunks/ssr/[root-of-the-server]__1u42eh0._.js +3 -0
  198. package/.next/server/chunks/ssr/[root-of-the-server]__203utm3._.js +1 -1
  199. package/.next/server/chunks/ssr/{_0xurp8n._.js → _0-s7ria._.js} +2 -2
  200. package/.next/server/chunks/ssr/_03vw3u5._.js +3 -0
  201. package/.next/server/chunks/ssr/_088qe9a._.js +162 -0
  202. package/.next/server/chunks/ssr/_09a6bpd._.js +1 -1
  203. package/.next/server/chunks/ssr/{_0u43zjx._.js → _0a_pedm._.js} +2 -2
  204. package/.next/server/chunks/ssr/_0ali_i8._.js +3 -0
  205. package/.next/server/chunks/ssr/_0cd6g3l._.js +3 -3
  206. package/.next/server/chunks/ssr/{_1nwey7a._.js → _0eprrig._.js} +2 -2
  207. package/.next/server/chunks/ssr/_0flnog5._.js +3 -0
  208. package/.next/server/chunks/ssr/_0iuvjnw._.js +1 -1
  209. package/.next/server/chunks/ssr/{_0t_e9rd._.js → _0k-gl8l._.js} +2 -2
  210. package/.next/server/chunks/ssr/_0kmldic._.js +41 -0
  211. package/.next/server/chunks/ssr/_0ks03l-._.js +3 -0
  212. package/.next/server/chunks/ssr/_0mng-y8._.js +6 -0
  213. package/.next/server/chunks/ssr/_0tg3o37._.js +1 -1
  214. package/.next/server/chunks/ssr/_0ugzm_0._.js +3 -0
  215. package/.next/server/chunks/ssr/{_0ntol64._.js → _0wnv6c0._.js} +2 -2
  216. package/.next/server/chunks/ssr/{_0-y08rv._.js → _0z9zkd-._.js} +2 -2
  217. package/.next/server/chunks/ssr/_11l9kc0._.js +1 -1
  218. package/.next/server/chunks/ssr/_12_ail7._.js +3 -0
  219. package/.next/server/chunks/ssr/_16_7zeo._.js +1 -1
  220. package/.next/server/chunks/ssr/_16wjbs2._.js +3 -0
  221. package/.next/server/chunks/ssr/{_16o81mn._.js → _18rmqqu._.js} +2 -2
  222. package/.next/server/chunks/ssr/_1bfrntd._.js +2 -2
  223. package/.next/server/chunks/ssr/{_0gn_i4s._.js → _1ckje8g._.js} +2 -2
  224. package/.next/server/chunks/ssr/_1crszf7._.js +1 -1
  225. package/.next/server/chunks/ssr/_1h3qetc._.js +3 -0
  226. package/.next/server/chunks/ssr/{_1gz4ov7._.js → _1kpvfmn._.js} +3 -3
  227. package/.next/server/chunks/ssr/{_12hdw8x._.js → _1l-3enz._.js} +26 -28
  228. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  229. package/.next/server/chunks/ssr/_1soynbw._.js +2 -2
  230. package/.next/server/chunks/ssr/{_0ux4i2m._.js → _1v1pcoh._.js} +2 -2
  231. package/.next/server/chunks/ssr/features_ai_components_model-picker_tsx_0ucb1y9._.js +1 -1
  232. package/.next/server/chunks/ssr/{features_bot_06n7hmd._.js → features_bot_0-7flc-._.js} +2 -2
  233. package/.next/server/chunks/ssr/features_bot_0tb4ui-._.js +1 -1
  234. package/.next/server/chunks/ssr/features_bot_1stfytf._.js +41 -0
  235. package/.next/server/chunks/ssr/features_config_10xs4l1._.js +20 -0
  236. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  237. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  238. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  239. package/.next/server/chunks/ssr/features_thursday_0cf9y0b._.js +1 -1
  240. package/.next/server/chunks/ssr/features_thursday_components_here-globe_tsx_055duhw._.js +1 -1
  241. package/.next/server/chunks/ssr/lib_utils_ts_0_f1xvm._.js +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_1i-g3bz._.js → node_modules_00mh9o-._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_1bvw77g._.js → node_modules_04f_uw2._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_16tn8xu._.js → node_modules_07udd3z._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_0ksqeyy._.js → node_modules_08-pj-2._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_0e398ts._.js → node_modules_098h6h5._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_19r9vjv._.js → node_modules_0_7yfem._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_01v7ybp._.js → node_modules_0ayoorn._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_0_zk6yd._.js → node_modules_0bp3vfu._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_0m-dnm-._.js → node_modules_0ch5hqr._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_0536cp2._.js → node_modules_0e-hyim._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_0yn2z6s._.js → node_modules_0ffm9w3._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_1jf8aik._.js → node_modules_0jzyuwk._.js} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules_0m2oth3._.js → node_modules_0ln4iwf._.js} +1 -1
  255. package/.next/server/chunks/ssr/{node_modules_1dlue-g._.js → node_modules_0my2hph._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_0cpegwf._.js → node_modules_0y_k4h5._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules_13dwal5._.js → node_modules_10bzndo._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules_1ctm_ju._.js → node_modules_1b5rxw5._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules_01fukqn._.js → node_modules_1b_h09q._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules_12hh0bx._.js → node_modules_1e83j9e._.js} +1 -1
  261. package/.next/server/chunks/ssr/{node_modules_08m1gvh._.js → node_modules_1e9ugfy._.js} +1 -1
  262. package/.next/server/chunks/ssr/{node_modules_06n6ruk._.js → node_modules_1hd66k0._.js} +1 -1
  263. package/.next/server/chunks/ssr/{node_modules_1zdz2zf._.js → node_modules_1inwr2m._.js} +1 -1
  264. package/.next/server/chunks/ssr/{node_modules_1zalmtr._.js → node_modules_1j9xx1k._.js} +1 -1
  265. package/.next/server/chunks/ssr/{node_modules_1kfbdfo._.js → node_modules_1k8kypa._.js} +1 -1
  266. package/.next/server/chunks/ssr/{node_modules_056xgci._.js → node_modules_1oeu85h._.js} +1 -1
  267. package/.next/server/chunks/ssr/{node_modules_0ie8g6a._.js → node_modules_1r2ghv5._.js} +2 -2
  268. package/.next/server/chunks/ssr/{node_modules_1fqgrh0._.js → node_modules_1ttpnib._.js} +1 -1
  269. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0nj1l8f._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ir6p7s._.js} +1 -1
  270. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_17ok98u._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1ejf5ye._.js} +1 -1
  271. package/.next/server/middleware-build-manifest.js +3 -3
  272. package/.next/server/pages/404.html +1 -1
  273. package/.next/server/pages/500.html +1 -1
  274. package/.next/server/server-reference-manifest.js +1 -1
  275. package/.next/server/server-reference-manifest.json +163 -163
  276. package/.next/static/chunks/02lze_e5sagjn.js +1 -0
  277. package/.next/static/chunks/{3866u-edsoyj3.js → 081kl7k8r6f8z.js} +1 -1
  278. package/.next/static/chunks/0_s4z70lx1tgs.js +1 -0
  279. package/.next/static/chunks/0fklfoj8o_msg.js +18 -0
  280. package/.next/static/chunks/0ve2gb0hw3wkq.js +1 -0
  281. package/.next/static/chunks/11c3uijgqik4m.js +39 -0
  282. package/.next/static/chunks/{0go5_9zqag7l0.js → 125lh2zzxk3r2.js} +1 -1
  283. package/.next/static/chunks/{3zv4wiqjl5kex.js → 166v36614ycsf.js} +1 -1
  284. package/.next/static/chunks/16np6727e61io.js +1 -0
  285. package/.next/static/chunks/18amidjlaqexf.js +1 -0
  286. package/.next/static/chunks/{35ehi-okrfot5.js → 1ettmta9iet7b.js} +1 -1
  287. package/.next/static/chunks/{1dy5xaxjdsy11.js → 1j4rndg17wgfk.js} +1 -1
  288. package/.next/static/chunks/{01r1uco3ikisc.js → 1mpz4epyg-7pz.js} +1 -1
  289. package/.next/static/chunks/{05blzta_1i7c2.js → 1oh4hbusfz97l.js} +1 -1
  290. package/.next/static/chunks/{3qfhjwd9yuijo.js → 1x1-44qmhu437.js} +1 -1
  291. package/.next/static/chunks/{0hpx0--bh7vld.js → 22jb4s3-8ckup.js} +1 -1
  292. package/.next/static/chunks/236le5kv_yj6a.css +1 -0
  293. package/.next/static/chunks/24op50z6sqi_5.js +1 -0
  294. package/.next/static/chunks/2eczs-lporqt6.js +1 -0
  295. package/.next/static/chunks/{2nbj2t9yp8ke9.js → 2sxclirl-c-um.js} +1 -1
  296. package/.next/static/chunks/2yfmmo4qr_f-m.js +1 -0
  297. package/.next/static/chunks/2z4sodeldj_86.js +1 -0
  298. package/.next/static/chunks/{3tyacy8fh5_18.js → 2zhiqxw61qowv.js} +2 -2
  299. package/.next/static/chunks/338dt83llhu5m.js +1 -0
  300. package/.next/static/chunks/3ezjz93yvzmop.js +4 -0
  301. package/.next/static/chunks/3h6rqjx92wva9.js +1 -0
  302. package/.next/static/chunks/3ph9u-51x6jhe.js +15 -0
  303. package/.next/static/chunks/{052u13mcoxt87.js → 3uf32hp_g9stz.js} +1 -1
  304. package/.next/static/chunks/3w7zt3xzyjn86.js +3 -0
  305. package/.next/static/chunks/3xkx7vqefm7on.js +2 -0
  306. package/.next/static/chunks/3ygk41pgsw7nv.js +1 -0
  307. package/.next/static/chunks/{3146sccz1j76i.js → 411uyd0is9u5s.js} +1 -1
  308. package/.next/static/chunks/4384atd5zerir.js +1 -0
  309. package/README.md +1 -1
  310. package/database/migrations/20260929121448_thread_started_by/migration.sql +1 -0
  311. package/database/migrations/20260929121448_thread_started_by/snapshot.json +1969 -0
  312. package/guide/bots.md +89 -44
  313. package/guide/calls.md +41 -25
  314. package/guide/index.md +5 -2
  315. package/guide/phone.md +7 -4
  316. package/guide/setup.md +12 -6
  317. package/guide/trouble.md +3 -2
  318. package/package.json +1 -1
  319. package/public/voices/intro/mic-b17ca82d.ogg +0 -0
  320. package/seed-skills/concierge/travel/SKILL.md +2 -1
  321. package/seed-skills/concierge/travel/page/itinerary.css +1009 -257
  322. package/seed-skills/concierge/travel/references/itinerary.md +95 -35
  323. package/seed-skills/concierge/travel/references/plan.md +11 -4
  324. package/seed-skills/concierge/travel/scripts/itinerary.mjs +754 -138
  325. package/skills/README.md +7 -4
  326. package/skills/artifact/SKILL.md +17 -13
  327. package/skills/artifact/references/canvas.md +4 -5
  328. package/skills/artifact/references/deck.md +93 -2
  329. package/skills/artifact/runtime/app/kit/src/index.css +35 -0
  330. package/skills/artifact/runtime/app/kit/tailwind.config.js +6 -0
  331. package/skills/artifact/runtime/deck/data.mjs +21 -0
  332. package/skills/artifact/runtime/deck/deck.css +254 -4
  333. package/skills/artifact/runtime/deck/deck.html +3 -0
  334. package/skills/artifact/runtime/deck/deck.js +88 -5
  335. package/skills/artifact/runtime/deck/deck.mjs +1 -17
  336. package/skills/artifact/runtime/document/quick.css +264 -89
  337. package/skills/artifact/runtime/document/quick.html +16 -7
  338. package/skills/artifact/runtime/document/quick.js +377 -98
  339. package/skills/artifact/runtime/render.mjs +52 -6
  340. package/skills/artifact/runtime/sheet/sheet.css +29 -21
  341. package/skills/artifact/runtime/shell/drafts.js +25 -0
  342. package/skills/artifact/runtime/shell/fonts/Geist-latin-ext.woff2 +0 -0
  343. package/skills/artifact/runtime/shell/fonts/Geist-latin.woff2 +0 -0
  344. package/skills/artifact/runtime/shell/fonts/GeistMono-latin-ext.woff2 +0 -0
  345. package/skills/artifact/runtime/shell/fonts/GeistMono-latin.woff2 +0 -0
  346. package/skills/artifact/runtime/shell/fonts/OFL.txt +93 -0
  347. package/skills/artifact/runtime/shell/head.html +27 -2
  348. package/skills/artifact/runtime/shell/shell.css +88 -8
  349. package/skills/artifact/runtime/shell/shell.js +318 -22
  350. package/skills/artifact/runtime/shell/wear.mjs +114 -12
  351. package/skills/artifact/scripts/app.mjs +5 -0
  352. package/skills/artifact/scripts/chart.mjs +20 -19
  353. package/skills/artifact/scripts/deck.mjs +276 -0
  354. package/skills/artifact/scripts/document.mjs +55 -2
  355. package/skills/artifact/scripts/media.mjs +1 -1
  356. package/skills/artifact/templates/boards/direction.html +55 -2
  357. package/skills/browser/SKILL.md +1 -1
  358. package/skills/browser/references/scripts.md +1 -1
  359. package/skills/daily-brief/SKILL.md +2 -0
  360. package/skills/daily-brief/page/brief.css +460 -302
  361. package/skills/daily-brief/references/brief.md +33 -7
  362. package/skills/daily-brief/scripts/page.mjs +241 -48
  363. package/skills/media-digest/SKILL.md +1 -0
  364. package/skills/media-digest/scripts/digest.mjs +57 -43
  365. package/.next/server/chunks/[root-of-the-server]__00f051a._.js +0 -7
  366. package/.next/server/chunks/[root-of-the-server]__0340k46._.js +0 -7
  367. package/.next/server/chunks/[root-of-the-server]__0ndw2yj._.js +0 -5
  368. package/.next/server/chunks/[root-of-the-server]__16y0k92._.js +0 -3
  369. package/.next/server/chunks/[root-of-the-server]__18e65_-._.js +0 -3
  370. package/.next/server/chunks/[root-of-the-server]__1a0xgyh._.js +0 -5
  371. package/.next/server/chunks/[root-of-the-server]__1dth047._.js +0 -5
  372. package/.next/server/chunks/[root-of-the-server]__1huywqp._.js +0 -5
  373. package/.next/server/chunks/[root-of-the-server]__1ij4h2a._.js +0 -3
  374. package/.next/server/chunks/[root-of-the-server]__1q1s4ls._.js +0 -3
  375. package/.next/server/chunks/[root-of-the-server]__1qa67zs._.js +0 -3
  376. package/.next/server/chunks/[root-of-the-server]__1t-mfa4._.js +0 -5
  377. package/.next/server/chunks/[root-of-the-server]__20ofm9t._.js +0 -3
  378. package/.next/server/chunks/_0483t_f._.js +0 -5
  379. package/.next/server/chunks/_0lcthk8._.js +0 -3
  380. package/.next/server/chunks/_0uv1gs1._.js +0 -3
  381. package/.next/server/chunks/_17fjc-7._.js +0 -5
  382. package/.next/server/chunks/_1dcbwn-._.js +0 -3
  383. package/.next/server/chunks/_1mgzs18._.js +0 -3
  384. package/.next/server/chunks/_20qn224._.js +0 -3
  385. package/.next/server/chunks/features_bot_0zy_q8y._.js +0 -37
  386. package/.next/server/chunks/ssr/[root-of-the-server]__04upd5v._.js +0 -3
  387. package/.next/server/chunks/ssr/[root-of-the-server]__0dy20eb._.js +0 -3
  388. package/.next/server/chunks/ssr/[root-of-the-server]__0yyxgt2._.js +0 -3
  389. package/.next/server/chunks/ssr/[root-of-the-server]__14j8gxy._.js +0 -3
  390. package/.next/server/chunks/ssr/[root-of-the-server]__20t_4l2._.js +0 -3
  391. package/.next/server/chunks/ssr/_00buy3i._.js +0 -162
  392. package/.next/server/chunks/ssr/_014_wjp._.js +0 -3
  393. package/.next/server/chunks/ssr/_07m4ii5._.js +0 -3
  394. package/.next/server/chunks/ssr/_0cv9tmv._.js +0 -3
  395. package/.next/server/chunks/ssr/_0j6rtjm._.js +0 -6
  396. package/.next/server/chunks/ssr/_0ogkeu-._.js +0 -3
  397. package/.next/server/chunks/ssr/_10sc7ab._.js +0 -3
  398. package/.next/server/chunks/ssr/_14nwim3._.js +0 -37
  399. package/.next/server/chunks/ssr/_1e01b-_._.js +0 -3
  400. package/.next/server/chunks/ssr/_1nfv27b._.js +0 -3
  401. package/.next/server/chunks/ssr/features_bot_1c56lew._.js +0 -37
  402. package/.next/server/chunks/ssr/features_bot_1knyan7._.js +0 -3
  403. package/.next/server/chunks/ssr/features_config_09wq1s9._.js +0 -20
  404. package/.next/static/chunks/01gkq9y6_xk4a.js +0 -1
  405. package/.next/static/chunks/09kwsjbmr_z1w.js +0 -1
  406. package/.next/static/chunks/0ynv7zu_bguve.js +0 -1
  407. package/.next/static/chunks/0zi59tghmg1lu.js +0 -18
  408. package/.next/static/chunks/1_ftsgxa-sia_.js +0 -1
  409. package/.next/static/chunks/1cg3torc90q5t.js +0 -1
  410. package/.next/static/chunks/1qnx1h5c8f93b.js +0 -1
  411. package/.next/static/chunks/1rwn3d9ji5w35.js +0 -1
  412. package/.next/static/chunks/1so3f5fi7e5g9.js +0 -35
  413. package/.next/static/chunks/1ya41wxfmp4s8.js +0 -1
  414. package/.next/static/chunks/27rwkfu7_xvs1.js +0 -4
  415. package/.next/static/chunks/2hueh8masqd91.js +0 -15
  416. package/.next/static/chunks/2jrt_752fqz2f.js +0 -1
  417. package/.next/static/chunks/2ogme4qydxnaq.js +0 -3
  418. package/.next/static/chunks/2r2tocw2rpvm2.js +0 -1
  419. package/.next/static/chunks/2t4kimg1lt-p7.js +0 -2
  420. package/.next/static/chunks/2w6y71o27my_z.js +0 -1
  421. package/.next/static/chunks/31_am8rtmk_tv.css +0 -1
  422. package/.next/static/chunks/337g9g_ux2gj-.js +0 -1
  423. package/public/voices/intro/heard-1f12cd45.ogg +0 -0
  424. package/public/voices/intro/mic-e561372a.ogg +0 -0
  425. package/skills/artifact/references/book.md +0 -163
  426. package/skills/artifact/runtime/book/book.css +0 -256
  427. package/skills/artifact/runtime/book/book.html +0 -38
  428. package/skills/artifact/runtime/book/book.js +0 -81
  429. package/skills/artifact/scripts/book-pdf.mjs +0 -73
  430. package/skills/artifact/scripts/book-video.mjs +0 -168
  431. package/skills/artifact/scripts/book.mjs +0 -291
  432. /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_buildManifest.js +0 -0
  433. /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_clientMiddlewareManifest.js +0 -0
  434. /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_ssgManifest.js +0 -0
  435. /package/seed-skills/{marketer → writer}/marketing/LICENSE +0 -0
  436. /package/seed-skills/{marketer → writer}/marketing/SKILL.md +0 -0
  437. /package/seed-skills/{marketer → writer}/marketing/references/copywriting-copy-frameworks.md +0 -0
  438. /package/seed-skills/{marketer → writer}/marketing/references/copywriting-natural-transitions.md +0 -0
  439. /package/seed-skills/{marketer → writer}/marketing/references/copywriting.md +0 -0
  440. /package/seed-skills/{marketer → writer}/marketing/references/emails-copy-guidelines.md +0 -0
  441. /package/seed-skills/{marketer → writer}/marketing/references/emails-email-types.md +0 -0
  442. /package/seed-skills/{marketer → writer}/marketing/references/emails-sequence-templates.md +0 -0
  443. /package/seed-skills/{marketer → writer}/marketing/references/emails.md +0 -0
  444. /package/seed-skills/{marketer → writer}/marketing/references/launch.md +0 -0
  445. /package/seed-skills/{marketer → writer}/marketing/references/product-marketing.md +0 -0
  446. /package/seed-skills/{marketer → writer}/marketing/references/seo-audit-ai-writing-detection.md +0 -0
  447. /package/seed-skills/{marketer → writer}/marketing/references/seo-audit-international-seo.md +0 -0
  448. /package/seed-skills/{marketer → writer}/marketing/references/seo-audit.md +0 -0
  449. /package/seed-skills/{marketer → writer}/marketing/references/social-carousel-frameworks.md +0 -0
  450. /package/seed-skills/{marketer → writer}/marketing/references/social-platform-limits.md +0 -0
  451. /package/seed-skills/{marketer → writer}/marketing/references/social-platforms.md +0 -0
  452. /package/seed-skills/{marketer → writer}/marketing/references/social-post-templates.md +0 -0
  453. /package/seed-skills/{marketer → writer}/marketing/references/social-reverse-engineering.md +0 -0
  454. /package/seed-skills/{marketer → writer}/marketing/references/social-short-form-video.md +0 -0
  455. /package/seed-skills/{marketer → writer}/marketing/references/social.md +0 -0
@@ -5,10 +5,15 @@
5
5
  appears when its field is there.
6
6
  Words on the page are yours, in the user's language: set `lang` and `labels` when it is not English.
7
7
 
8
+ The page is read the way a traveller reads a trip: pictures first; what it costs and what is
9
+ still to price, always in view; the way from place to place; what to do before leaving, by when;
10
+ then each day, each place with its pictures, what to do there, what to watch for and its price.
11
+ Write for that reader: short lines, the thing to do, never how you found it — that goes in `notes`.
12
+
8
13
  ```json
9
14
  {
10
15
  "title": "Lisbon, three easy days",
11
- "lede": "Nov 12–15 · 2 adults from London · food, the river, a palace on a hill",
16
+ "lede": "Food, the river and a palace on a hill, at an easy pace.",
12
17
  "lang": "en",
13
18
  "place": "Lisbon, Portugal",
14
19
  "currency": "GBP",
@@ -19,65 +24,120 @@ Words on the page are yours, in the user's language: set `lang` and `labels` whe
19
24
  { "value": "Nov 12 – 15", "label": "3 nights" },
20
25
  { "value": "18° / 11°", "label": "Usual high / low" }
21
26
  ],
27
+ "route": [
28
+ { "place": "Lisbon", "nights": 2, "dates": "Nov 12–14", "wiki": "Alfama", "next": "Train, 40 min" },
29
+ { "place": "Sintra", "nights": 1, "dates": "Nov 14–15", "wiki": "Sintra" }
30
+ ],
31
+ "musts": [
32
+ { "icon": "ticket", "title": "Book Pena Palace's timed entry", "text": "It sells out on weekends.",
33
+ "when": "By Nov 10", "link": "https://<the ticket page>", "linkText": "Tickets" }
34
+ ],
22
35
  "flights": {
23
36
  "legs": [
24
37
  { "label": "Out", "date": "2026-11-12", "from": "LHR", "to": "LIS", "dep": "07:25", "arr": "10:05",
25
- "duration": "2h40", "stops": "nonstop", "airline": "<the airline>" },
26
- { "label": "Back", "date": "2026-11-15", "from": "LIS", "to": "LHR", "dep": "18:40", "arr": "21:20",
27
38
  "duration": "2h40", "stops": "nonstop", "airline": "<the airline>" }
28
39
  ],
29
- "price": 312,
30
- "priceNote": "round trip for 2, taxes in",
31
- "note": "Seen on Oct 20 on the flight search.",
32
- "link": "<the booking link the search gave>"
40
+ "price": 312, "priceNote": "round trip for 2, taxes in",
41
+ "note": "Seen on Oct 20 on the flight search.", "link": "<the booking link the search gave>"
33
42
  },
34
- "stay": { "name": "<the stay's name>", "area": "Alfama, 5 min walk to the tram", "nights": 3,
35
- "price": 96, "rating": "4.6 (812 reviews)", "photo": "https://<its own page>",
36
- "why": "The best-rated private room under £120 a night.", "link": "<its page>" },
43
+ "stays": [
44
+ { "name": "<the stay's name>", "area": "Alfama, 5 min walk to the tram", "nights": 2,
45
+ "price": 96, "rating": "4.6 (812 reviews)", "photo": "https://<its own page>",
46
+ "why": "The best-rated private room under £120 a night.", "link": "<its page>" }
47
+ ],
37
48
  "climate": "No forecast reaches these days yet; the same days in 2021–2025: highs 18°, lows 11°, rain on 7 of 20 days.",
38
49
  "days": [
39
50
  { "date": "2026-11-13", "title": "The castle hill, then the palace at Sintra", "weather": "18°/11°, dry",
40
- "travel": "walking",
51
+ "lede": "A day on foot: comfortable shoes.",
41
52
  "stops": [
42
53
  { "time": "09:30", "name": "São Jorge Castle", "what": "Walk up through Alfama, 20 minutes.",
43
- "wiki": "São Jorge Castle" },
44
- { "time": "14:00", "name": "Pena Palace", "what": "Train to Sintra from Rossio, 40 minutes.",
45
- "wiki": "Pena Palace", "cost": 20, "tip": "Buy the timed ticket the day before." },
46
- { "time": "19:00", "name": "<a place to eat>", "photo": "https://<the place's own page>",
47
- "map": "<its name>, Lisbon", "link": "https://<its site>", "linkText": "Hours", "cost": 30 }
54
+ "wiki": "São Jorge Castle", "hours": "Open 9:00–18:00", "duration": "About 1½ h",
55
+ "see": ["Walk the walls for the view over the roofs and the river", "The camera obscura in Ulysses Tower"] },
56
+ { "time": "13:00", "name": "Train to Sintra", "move": true, "what": "From Rossio, 40 minutes" },
57
+ { "time": "14:00", "name": "Pena Palace", "wiki": "Pena Palace",
58
+ "what": "The painted palace on the hill; fog makes it a fairy tale.",
59
+ "cost": 20, "costNote": "per person", "book": "Timed entry",
60
+ "watch": "The climb from the gate is long: the shuttle is £4 return.",
61
+ "link": "https://<the ticket page>", "linkText": "Tickets" }
48
62
  ] }
49
63
  ],
50
64
  "costs": [
51
- { "item": "Flights, 2 people", "amount": 312, "note": "round trip" },
52
- { "item": "<the stay>, 3 nights", "amount": 288 },
53
- { "item": "Food, about £40 a person a day", "amount": 320 }
65
+ { "item": "Flights, 2 people", "kind": "flight", "amount": 312, "note": "round trip" },
66
+ { "item": "<the stay>, 2 nights", "kind": "stay", "amount": 192 },
67
+ { "item": "Sintra stay, 1 night", "kind": "stay", "pending": true, "link": "https://<where to find it>" },
68
+ { "item": "Pena Palace, 2 people", "kind": "ticket", "amount": 40 }
69
+ ],
70
+ "more": [
71
+ { "name": "Pastéis de Belém", "tag": "Eat · £", "what": "The custard tart's first bakery.",
72
+ "near": "30 min by tram 15", "wiki": "Pastéis de Belém" }
54
73
  ],
55
74
  "fx": "<the line fx.mjs printed>",
75
+ "before": [
76
+ { "icon": "entry", "label": "Entry", "text": "UK passports: up to 90 days in any 180 without a visa." },
77
+ { "icon": "power", "label": "Power", "text": "Type C and F plugs, 230 V: a UK plug needs an adapter." }
78
+ ],
56
79
  "notes": ["Entry rules checked for the travellers' passports on 2026-10-20."],
57
80
  "sources": [{ "url": "https://<the flight search's page>", "label": "<where the flights came from>" }]
58
81
  }
59
82
  ```
60
83
 
61
- - **A photo per stop** is one of three: `"wiki"`, the English Wikipedia title of the place
62
- (`"pt:Mosteiro dos Jerónimos"` for another language's — a place outside the English-speaking
63
- world often has an article, or a picture, only in its own language), whose lead picture comes
64
- with who made it and, where its file says, its licence; `"photo"` as a page url, whose own share picture is taken through the browser; `"photo"` as a
65
- file beside the JSON. A stop with none shows without one — the airport, the hotel check-in, a walk.
66
- - **Every link is a full `http(s)` address** — `flights.link`, `stay.link`, a stop's `link`, a
67
- source's `url`. Anything shorter stops the build by name before a single photo is fetched.
84
+ - **Pictures.** A stop's, a stay's, a route place's or a `more` card's picture is one of three:
85
+ `"wiki"`, the English Wikipedia title of the place (`"pt:Mosteiro dos Jerónimos"` for another
86
+ language's — a place outside the English-speaking world often has an article, or a picture,
87
+ only in its own language), whose lead picture comes with who made it and its licence; `"photo"`
88
+ as a page url, whose own share picture is taken through the browser; `"photo"` as a file beside
89
+ the JSON. An article led by a drawing (a logo, a map) gives none: pick the place's own article.
90
+ **A stop with a `wiki` also gets three more of the place's own pictures** from its Wikimedia
91
+ Commons category, beside its lead one, so a reader sees the place before going; `"gallery":
92
+ false` keeps a stop to its one. `photos` adds up to four of your own (`{ "wiki" }` or
93
+ `{ "photo" }`, with an optional `"caption"`). A page carries 60 pictures at most, and the build
94
+ names the stops left without a gallery. A stop with none shows without — a check-in, a walk.
95
+ Every picture opens large, one after another, when tapped.
96
+ - **What to know at a stop** is a few words each, in the user's language, and only what you read
97
+ on the place's own site or a page you name in `sources`: `"see"` (up to four things to do or
98
+ look for there), `"hours"` (the hours on that day, or "Closed Mondays"), `"duration"` (how long
99
+ people stay), `"book"` (true, or what to book: "Timed entry"), `"watch"` (the one thing to watch
100
+ for: a climb, cash only, a queue), `"tip"`. Every stop with `book` is also listed under *Good to
101
+ know* to tick off. A reading you are unsure of goes in `notes`, not on the stop.
102
+ - **`"move": true`** makes a stop a move between places — a train, a transfer, the flight home —
103
+ drawn as a line of its own, not a place: its `name`, `time` and `what`.
104
+ - **A stop's price** is `cost` (a number in `currency`, or a string) with `costNote` under it
105
+ ("per person", "£20 each"). It is shown, not added up: what the trip costs is `costs`.
106
+ - **Costs** are what the money card at the top and the table add up: each `amount` a number in
107
+ `currency`, the price you read; a price you could not read is `"pending": true` with no amount
108
+ (and a `link` to where it is found), said on the page as still to price — never a guess or a
109
+ range. `kind` (`flight`, `stay`, `food`, `ticket`, `transport`, `other`) gives the bar its shares.
110
+ With a price pending, the total is said to be what is settled so far.
111
+ - **`route`** is the way from place to place: `place`, `nights`, `dates`, a picture, and `next`,
112
+ how the traveller gets to the following one ("Train, 2 h 40").
113
+ - **`musts`** are the few things that go wrong if left undone, each with `when` it must be done
114
+ by: a timed ticket, a restaurant that books out, a visa, a missing direct flight. An `icon`
115
+ from the list below; a `link` to where it is done.
116
+ - **`stays`** are the places to sleep, a card each (`stay` alone still works for one). `price` is
117
+ one night's; the stay's total is worked out from `nights`.
118
+ - **Every link is a full `http(s)` address** — `flights.link`, a stay's, a stop's or a card's
119
+ `link`, a must's, a cost's, a source's `url`. Anything shorter stops the build by name before a
120
+ single photo is fetched.
68
121
  - **Maps.** Each stop links to Google Maps by `"<name>, <place>"`; `"map"` sets a better query,
69
122
  `"map": false` leaves the stop off the map and off the day's route. Each day gets one link that
70
123
  opens its stops in order; `"travel"` is how it gets between them (`transit` unless said), on a
71
124
  day or on the trip.
72
- - **Costs** are numbers in `currency`; the total and per-person share are added up for you and
73
- also shown at the top. A range is a string (`"$30–50"`) and is left out of the total.
74
- - `stay.price` is one night's price; the stay's total is worked out from `nights`.
75
- - `facts` are the three or four numbers someone checks first: dates, flight time, weather.
76
- - Each `costs` amount is a number in `currency`, the price you read: the page adds them up. A cost
77
- you could not read is left out and said in `notes`, never given as a guess or a range.
125
+ - A day may open on a picture of its own, `"cover"`; each day's `lede` is its one line.
126
+ - `facts` are the three or four things someone checks first: dates, where, weather, how.
78
127
  - A leg of `flights.legs` may carry its own `price` when the two halves were bought apart;
79
128
  `flights.note` is a line under the panel, for what the price depends on.
80
- - A stop's `linkText` names its link, in place of the site's host.
129
+ - **`more`** is places beside the plan — somewhere to eat, a sight for a day that runs short —
130
+ shown as cards after the days: `name` (required), `tag` (what it is and its price band, "Eat ·
131
+ €€"), `what`, `near` (how far from the stay or the plan), a picture, `map`, `link`. Three to
132
+ six, or none.
133
+ - **`before`** is what to know before going, a line each: `label` and `text`. Entry rules are the
134
+ travellers' passports' and the date you read them goes in `notes`.
135
+ - The icons `before` and `musts` take: `entry`, `money`, `tipping`, `power`, `transit`,
136
+ `emergency`, `health`, `internet`, `flight`, `ticket`, `food`, `stay`.
137
+ - **`notes`** fold at the end: what was checked and when, what could not be read.
81
138
  - `sources` takes `{ "url", "label" }`, or a plain string when the source is not a page.
82
- - `labels` renames the page's own words: `flights`, `stay`, `weather`, `days`, `costs`, `notes`,
83
- `total`, `perPerson`, `map`, `route`, `book`, `night`, `nights`, `day`, `sources`.
139
+ - `labels` renames the page's own words: `way`, `musts`, `flights`, `stay`, `weather`, `days`,
140
+ `more`, `costs`, `before`, `notes`, `bookAhead`, `tip`, `total`, `known`, `pending`, `perPerson`,
141
+ `map`, `route`, `book`, `night`, `nights`, `day`, `photos`, `people`, `close`, `previous`,
142
+ `next`, `sources`. A label with a number in it takes `{n}` where the language puts it:
143
+ `"day": "{n}일차"`, `"nights": "{n}박"`, `"photos": "{n} photos"`.
@@ -63,7 +63,13 @@ Three to five stops a day, in an order that makes geographic sense, with the tra
63
63
  counted: the first and last day are short, shaped around the flights and the check-in. Places come
64
64
  from what you know and one search for what is current (a closure, a festival on those dates, an
65
65
  exhibition); a place you are unsure still exists is checked, not guessed. Rain in the weather moves
66
- the outdoor stop to a dry day, and the page says so.
66
+ the outdoor stop to a dry day, and the page says so. A stop's hours on that day, its price,
67
+ whether it must be booked and what to do there (`see`) come from its own site, read in that same
68
+ pass; what you did not read is left off the stop, not guessed. For a trip of more than a day, fill
69
+ the rest a traveller asks for: the way from place to place (`route`), the few things that go wrong
70
+ if left undone, each with its date (`musts`), three to six places beside the plan (`more`) and
71
+ what to know before going (`before`: entry for their passports, money, plugs, getting around).
72
+ A price you could not read is a `pending` cost, never left out without a word.
67
73
 
68
74
  ## 5. The page, in one call
69
75
 
@@ -74,9 +80,10 @@ node $S/itinerary.mjs <scratch>/trip.json --name lisbon-nov
74
80
  ```
75
81
 
76
82
  The page is built from a tested template, so it needs no screenshot: a look costs more than the
77
- rest of the job. The builder prints the page's path and any stop it found no photo for, with why;
78
- give those a Wikipedia title that exists or a page url and build once more, or leave them without
79
- one. Build it at most twice.
83
+ rest of the job. Fetching every stop's gallery takes a minute or two, one picture at a time. The
84
+ builder prints the page's path and any stop it found no photo for, with why; give those a
85
+ Wikipedia title that exists or a page url and build once more, or leave them without one. Build
86
+ it at most twice.
80
87
 
81
88
  ## What goes back
82
89