thursday-agent 0.6.0 → 0.7.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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/artifact/route.js +3 -3
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
- package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/edit/route.js +1 -1
- package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/missing/route.js +2 -2
- package/.next/server/app/api/workspace/missing/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
- package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page/server-reference-manifest.json +42 -42
- package/.next/server/app/page.js +5 -4
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0-06t3f._.js +8 -0
- package/.next/server/chunks/{[root-of-the-server]__049f521._.js → [root-of-the-server]__06l05n_._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0_ue8oe._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0ye3da2._.js → [root-of-the-server]__0btqrct._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0c9fgca._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0zp35ul._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1kv8p3e._.js +1 -1
- package/.next/server/chunks/_02szwk8._.js +1 -1
- package/.next/server/chunks/_06c9kie._.js +24 -24
- package/.next/server/chunks/_0i55en5._.js +6 -6
- package/.next/server/chunks/_0p56fn0._.js +1 -1
- package/.next/server/chunks/_11ujpya._.js +1 -1
- package/.next/server/chunks/_1dbixxz._.js +1 -1
- package/.next/server/chunks/_1dc_d1q._.js +16 -16
- package/.next/server/chunks/_1gnjfli._.js +3 -0
- package/.next/server/chunks/_1klbcft._.js +1 -1
- package/.next/server/chunks/features_0-cnt0l._.js +1 -1
- package/.next/server/chunks/features_0hdaci0._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0-e011f._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0pd8yr7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1nygfik._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1sdphb0._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__1fll8dc._.js → [root-of-the-server]__1vdmfbe._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__1waa3rc._.js +34 -49
- package/.next/server/chunks/ssr/{_1anqots._.js → _0-2qsxo._.js} +2 -2
- package/.next/server/chunks/ssr/_02oc_h5._.js +9 -9
- package/.next/server/chunks/ssr/_05yghx6._.js +1 -1
- package/.next/server/chunks/ssr/_07nbwap._.js +3 -0
- package/.next/server/chunks/ssr/_08c4z-9._.js +1 -1
- package/.next/server/chunks/ssr/_0_qfdlw._.js +1 -1
- package/.next/server/chunks/ssr/_0b6_jv-._.js +3 -0
- package/.next/server/chunks/ssr/_0hxt2ul._.js +1 -1
- package/.next/server/chunks/ssr/_0i_6q1w._.js +1 -1
- package/.next/server/chunks/ssr/{_18xqmny._.js → _0no7i1o._.js} +2 -2
- package/.next/server/chunks/ssr/_0tzg--b._.js +3 -0
- package/.next/server/chunks/ssr/{_1ztk7p6._.js → _114ylv7._.js} +3 -3
- package/.next/server/chunks/ssr/{_1k0spz7._.js → _12c-iwh._.js} +2 -2
- package/.next/server/chunks/ssr/_12w42gi._.js +1 -1
- package/.next/server/chunks/ssr/{_0eaog6_._.js → _167hchk._.js} +2 -2
- package/.next/server/chunks/ssr/{_1x9pskj._.js → _1_x5spz._.js} +3 -3
- package/.next/server/chunks/ssr/{_0dr-ddg._.js → _1a61fc9._.js} +2 -2
- package/.next/server/chunks/ssr/_1jmz33w._.js +1 -1
- package/.next/server/chunks/ssr/{_1y6b5mr._.js → _1w_t7h7._.js} +2 -2
- package/.next/server/chunks/ssr/{_0dh2e1j._.js → _1wyfaq_._.js} +7 -7
- package/.next/server/chunks/ssr/{[root-of-the-server]__0bxsfyn._.js → _200gt-m._.js} +4 -3
- package/.next/server/chunks/ssr/features_config_components_config-setting_tsx_0xfwqdg._.js +1 -1
- package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
- package/.next/server/chunks/ssr/{_0c9e5w6._.js → features_workspace_00jz2hu._.js} +3 -4
- package/.next/server/chunks/ssr/{node_modules_0746rzi._.js → node_modules_02ai7br._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0vsxbzp._.js → node_modules_02deexj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1g1eihe._.js → node_modules_07za262._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0332gw4._.js → node_modules_0_s9get._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1gpednh._.js → node_modules_0n3c7h0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0t-9nup._.js → node_modules_0od6jwr._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0mxvg8h._.js → node_modules_0rdt7pk._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0vv0-fg._.js → node_modules_0w1z7kz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1d53yiq._.js → node_modules_0wdupfz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1u6w1pb._.js → node_modules_1720w0a._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1gu1pph._.js → node_modules_18lsg7d._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1he1w8_._.js → node_modules_1b94fxf._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0qbfyjh._.js → node_modules_1ecdo1s._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0qapgjr._.js → node_modules_1fa9ag7._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0d5uzof._.js → node_modules_1fv-_si._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1lnjapm._.js → node_modules_1hf461g._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1-urho9._.js → node_modules_1m71ta-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1lynj9m._.js → node_modules_1n93n-g._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fr-ml8._.js → node_modules_1n9lqu9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_04vxchl._.js → node_modules_1npnsvd._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0exkwcm._.js → node_modules_1rn2r0n._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_022sipm._.js → node_modules_1vq-mfk._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_00_51_v._.js → node_modules_1vzyw1t._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0wsvp00._.js → node_modules_1w359w4._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1xn6saw._.js → node_modules_1yajbl6._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_16pi_dd._.js → node_modules_20eqhy8._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_067_exa._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_019sbis._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0nrrdaq._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0s6piq3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@vercel_oidc_dist_21a5haa._.js → node_modules_@vercel_oidc_dist_05itbb1._.js} +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +43 -43
- package/.next/static/chunks/{0dr16v67vj4n7.js → 07vqbk_9t4em4.js} +2 -2
- package/.next/static/chunks/{2nvepds1fu2ux.js → 08krja1zx7nqg.js} +1 -1
- package/.next/static/chunks/{42wcg3wfg_m_p.js → 0qcuwdk132jjt.js} +1 -1
- package/.next/static/chunks/{2_pnccjp6j1ca.js → 0z69gvysmave7.js} +1 -1
- package/.next/static/chunks/12fvz1w5ows75.js +1 -0
- package/.next/static/chunks/14t03ned286iu.js +1 -0
- package/.next/static/chunks/{2jlz8zp4jax_m.js → 156xxbkrz5lzu.js} +1 -1
- package/.next/static/chunks/1fz14reod4lft.js +1 -0
- package/.next/static/chunks/{0joan-69kbspd.js → 1g23dbabl-vkr.js} +1 -1
- package/.next/static/chunks/{18mkhstgiqcbt.js → 1qy_rc3oxfxok.js} +1 -1
- package/.next/static/chunks/1zea7qdl-7365.js +1 -0
- package/.next/static/chunks/1zvqumkg7kmo0.css +1 -0
- package/.next/static/chunks/26hpqt3y6bogl.js +12 -0
- package/.next/static/chunks/{3zk6q3-3f9swq.js → 2_j5mqm6d-z18.js} +1 -1
- package/.next/static/chunks/{1vj_5bnbxx84e.js → 2dt6tu7a22svs.js} +1 -1
- package/.next/static/chunks/2h5ls3d86kya6.js +1 -0
- package/.next/static/chunks/2wc6y1ht6dfuy.js +1 -0
- package/.next/static/chunks/{1i-u2wzub_to1.js → 2xr0zpll7thyi.js} +6 -6
- package/.next/static/chunks/{26ql4y-43xwhp.js → 31jztc-yq30m7.js} +1 -1
- package/.next/static/chunks/391af0i8eljzk.js +1 -0
- package/.next/static/chunks/{1kp5nfp06nj9h.js → 3p2s2cjokx1aa.js} +2 -2
- package/.next/static/chunks/{1wlo979mx-y3w.js → 41s3fml5oivsa.js} +1 -1
- package/README.md +60 -19
- package/docs/how-it-works.md +2 -0
- package/docs/live-calls.md +38 -33
- package/features/ai/load-tools.ts +4 -2
- package/features/ai/prompts/bot.prompt.ts +5 -5
- package/features/ai/prompts/live.prompt.ts +36 -132
- package/features/ai/prompts/prompt-helper.ts +5 -4
- package/features/ai/prompts/thursday.prompt.ts +75 -54
- package/features/ai/tools/call.tool.ts +32 -4
- package/features/ai/tools/tool-name.ts +1 -0
- package/features/bot/bot.runner.ts +5 -5
- package/features/thursday/ascii.const.ts +74 -0
- package/features/thursday/components/ascii-orb.tsx +173 -30
- package/features/thursday/components/face.tsx +6 -1
- package/features/thursday/components/side-captions.tsx +273 -0
- package/features/thursday/components/tab-state.tsx +11 -3
- package/features/thursday/components/thursday-setting.tsx +6 -5
- package/features/thursday/components/thursday.tsx +227 -251
- package/features/thursday/face.store.ts +5 -0
- package/features/thursday/thursday.action.ts +4 -6
- package/features/thursday/thursday.schema.ts +10 -5
- package/features/thursday/thursday.store.ts +3 -0
- package/features/thursday/use-thursday.ts +461 -392
- package/features/workspace/file-kind.ts +9 -0
- package/hooks/use-hotkey.ts +3 -2
- package/lib/live/live.schema.ts +0 -21
- package/lib/live/live.server.ts +1 -3
- package/package.json +1 -1
- package/scripts/artifact-paths.test.mts +13 -0
- package/scripts/live-session.test.mts +56 -66
- package/.next/server/chunks/[root-of-the-server]__0g-ueei._.js +0 -8
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1kipdeo._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__172cq4x._.js +0 -3
- package/.next/server/chunks/ssr/_03_928f._.js +0 -3
- package/.next/server/chunks/ssr/_0g_rlog._.js +0 -3
- package/.next/server/chunks/ssr/_123ttsf._.js +0 -3
- package/.next/static/chunks/10k2xvap03z20.css +0 -1
- package/.next/static/chunks/1t9qms5pwwa3n.js +0 -1
- package/.next/static/chunks/2a51-ywz9b2a3.js +0 -1
- package/.next/static/chunks/2fvdgxih7x7hr.js +0 -1
- package/.next/static/chunks/3addj3i4-izma.js +0 -1
- package/.next/static/chunks/3gfh7nxwusbt0.js +0 -1
- package/.next/static/chunks/3gwa44cvz4qoi.js +0 -1
- package/.next/static/chunks/3zkg5iup3v4a2.js +0 -12
- package/.next/static/chunks/405m0bqtoihev.js +0 -1
- /package/.next/static/{0qzGoKn2wTERVZtblX1tp → yyRVBc0xxYQsh3GpbQX9b}/_buildManifest.js +0 -0
- /package/.next/static/{0qzGoKn2wTERVZtblX1tp → yyRVBc0xxYQsh3GpbQX9b}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{0qzGoKn2wTERVZtblX1tp → yyRVBc0xxYQsh3GpbQX9b}/_ssgManifest.js +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
module.exports=[851372,e=>e.a(async(t,a)=>{try{var r=e.i(343747),o=e.i(687388),n=e.i(353885),
|
|
1
|
+
module.exports=[851372,e=>e.a(async(t,a)=>{try{var r=e.i(343747),o=e.i(687388),n=e.i(353885),s=e.i(393189),i=e.i(265143),l=e.i(148831),d=e.i(619898),h=e.i(636882),u=e.i(786025),c=e.i(704161),w=e.i(640911),p=e.i(41444),b=e.i(660948),m=e.i(54282),y=t([i,l,d,b]);async function f(e,t,a,y){var f,k,I,v,W,$,q,x,R;let M,O,A,N,S,E,C=await (0,u.openWorkspace)(),D=e.trim(),[_,B,U,P,j,L,H,Y]=await Promise.all([(0,h.loadSkills)(C),(0,d.listNoteIndex)(),(0,b.listConnectedToolNames)(),(0,l.findPinnedTools)(D),(0,i.listJobBots)(),(0,s.listBotMemory)(D),(0,i.readBotMemoryOn)(),(0,u.readMachineTools)(C)]),J=j.filter(e=>e.name!==D),F=[(f=D,k=a,O=(M=k?.owner??f)===f?"**You** coordinate this thread: its result goes from you to Thursday.":`**${M}** coordinates this thread and brings its result to Thursday.`,A=k?`
|
|
2
2
|
|
|
3
3
|
Current conversation: ${k.caller} → ${f}. Your final text goes back to ${k.caller}. Message ID: ${k.messageId??"initial request"}.`:"",`You are ${f}, one of the bots in this thread. ${(0,m.nowLine)()}
|
|
4
4
|
|
|
5
5
|
- **The user** — the one person all of this is for. They talk with Thursday by voice and follow this thread on their screen.
|
|
6
6
|
- **Thursday** — their personal assistant. She talks with them, hands bots the work that takes time, and tells them what comes back.
|
|
7
|
-
- ${
|
|
7
|
+
- ${O}
|
|
8
8
|
- **Everyone on it** keeps their own work and conversation; the others see only the messages sent to them.${A}
|
|
9
9
|
|
|
10
10
|
**The job is done, not described.** You are on the user's own computer, with a shell, files and the web, and how you get there is yours: when one way fails, try another; where no tool exists, write one — \`node\` is always here. Before deciding something cannot be done, look at what you have — your tools, the other bots, this machine. Bring back the thing itself — their account, their file, the real result — not a smaller, safer stand-in, and not a note on why not.
|
|
@@ -23,17 +23,17 @@ Names only: \`${n.TOOL_NAMES.tool_search}\` returns what each one takes, \`${n.T
|
|
|
23
23
|
|
|
24
24
|
Written-down ways of doing things. Open one with \`${n.TOOL_NAMES.load_skill}\` before a job it covers, unless its instructions are already in your conversation.
|
|
25
25
|
|
|
26
|
-
${(0,m.skillLines)(v)}`),T(C.cwd,Y,y),H?(W=(0,
|
|
26
|
+
${(0,m.skillLines)(v)}`),T(C.cwd,Y,y),H?(W=(0,s.botMemoryFolder)(D),N=($=L).entries.length?$.entries.map(({file:e,line:t,at:a})=>{let n=t?` — ${(0,p.clip)(t,o.PROMPT_LINE.botMemory)}`:"";return`- ${e}${n} \xb7 ${(0,r.format)((0,c.toDate)(a),"yyyy-MM-dd")}`}).join("\n"):"Empty.",S=$.total>$.entries.length?`
|
|
27
27
|
|
|
28
28
|
The newest ${$.entries.length} of ${$.total}; \`ls ${W}\` for the rest.`:"",`## Your memory
|
|
29
29
|
|
|
30
|
-
What you learned on your own earlier jobs, in \`${W}/\`: one topic per file, its first line saying what it holds, read by no other bot, up to ${o.BOT_MEMORY_LIMITS.files} files of ${o.BOT_MEMORY_LIMITS.chars.toLocaleString("en-US")} characters each. It is how you get better at this work. When a job teaches you something a later one would otherwise find out again — how a site signs in, the way through its screens, a command that turned out right — keep it with the date it was true, and fix or delete what proved wrong. No passwords, keys or codes.
|
|
30
|
+
What you learned on your own earlier jobs, in \`${W}/\`: one topic per file, its first line saying what it holds, read by no other bot, up to ${o.BOT_MEMORY_LIMITS.files} files of ${o.BOT_MEMORY_LIMITS.chars.toLocaleString("en-US")} characters each. It is how you get better at this work. When a job teaches you something a later one would otherwise find out again — how a site signs in, the way through its screens, a command that turned out right — or the user asks you to remember how to work, keep it with the date it was true, and fix or delete what proved wrong. No passwords, keys or codes.
|
|
31
31
|
|
|
32
32
|
${N}${S}`):"",(q=J,0===q.length?"":`## Bots
|
|
33
33
|
|
|
34
34
|
${q.map(e=>`- **${e.name}** — ${e.description}`).join("\n")}
|
|
35
35
|
|
|
36
|
-
These lines were written for the user: where one says "you", it means them. When part of the job is another bot's strength, bring it in with \`${n.TOOL_NAMES.send_message}\` rather than rebuilding it yourself.`),(x=D,R=a,E=(R?.owner??x)===x
|
|
36
|
+
These lines were written for the user: where one says "you", it means them. When part of the job is another bot's strength, bring it in with \`${n.TOOL_NAMES.send_message}\` rather than rebuilding it yourself.`),(x=D,R=a,E=(R?.owner??x)===x?`Bring what you received together into one result for Thursday: what was done, where it is, what you decided that the request did not say, and what is still open, at the detail the user asked for. When the job ends, the first Markdown or HTML file under \`${o.PATHS.artifacts}/\` it names opens on the user's screen by itself; any other file opens only when they click it in the thread, so when one matters, say they can open it there.`:`Your final text goes back to ${R?.caller??"whoever asked"}: give them everything they need to carry on.`,`## Working together
|
|
37
37
|
|
|
38
38
|
Nobody sees your work but you, and you see only what others send you, so whatever crosses between you has to stand on its own. A request says what is wanted, what is already known or done, and where the files are; an answer gives exact values, file paths and what is still unverified. Tell whoever is waiting when something they depend on changes. End your turn when you have nothing more to do now: replies arrive as new messages and wake you.
|
|
39
39
|
|
|
@@ -41,16 +41,16 @@ Ask Thursday with kind \`question\` only for a decision, permission or something
|
|
|
41
41
|
|
|
42
42
|
${E}
|
|
43
43
|
|
|
44
|
-
Write in the user's language
|
|
45
|
-
${F}`),{text:F}}[
|
|
44
|
+
Write in the user's language, and name the paths of finished work. The app opens Markdown with its tables and mermaid blocks drawn, CSV as a table, HTML and PDF as pages, and images, audio and video; in Markdown, reference images by absolute route (\`/api/file/${o.PATHS.artifacts}/…\`).`),g(t)].filter(Boolean).join("\n\n");return(0,m.logPromptSize)("bot",F),w.logger.debug(`bot prompt
|
|
45
|
+
${F}`),{text:F}}[i,l,d,b]=y.then?(await y)():y;let g=e=>e?.trim()?`## Owner's instructions
|
|
46
46
|
|
|
47
47
|
Written by the person this bot works for. Where these and anything above disagree, these win.
|
|
48
48
|
|
|
49
|
-
${e.trim()}`:"",T=(e,t,a)=>{var r;let i
|
|
49
|
+
${e.trim()}`:"",T=(e,t,a)=>{var r;let s,i;return`## Environment
|
|
50
50
|
|
|
51
51
|
Current Cwd: ${e}
|
|
52
52
|
Platform: ${process.platform}
|
|
53
|
-
${r=t,
|
|
53
|
+
${r=t,s=(e,t)=>`${e}: ${t.found.length?t.found.join(", "):"none"}.${t.missing.length?` Not here: ${t.missing.join(", ")}.`:""}`,i=r.managers.found.includes("pnpm")?" Use pnpm, not npm — this workspace is fenced for it (`pnpm-workspace.yaml`, `.npmrc`).":"",[s("Runtimes",r.runtimes),`${s("Package managers",r.managers)}${i}`,null===r.browser?"":`Browser: ${r.browser?"installed":"not installed"}.`].filter(Boolean).join("\n")}
|
|
54
54
|
|
|
55
55
|
Read off this machine as the job opened: what is already here, not the limit of what you can use.
|
|
56
56
|
|
|
@@ -63,10 +63,10 @@ Your workspace, where \`${n.TOOL_NAMES.bash}\` runs. Everything you write goes i
|
|
|
63
63
|
|
|
64
64
|
Inside the workspace, set up whatever the job needs yourself; installing anything machine-wide waits for the user's yes. Never the directory above the workspace — it is the app's, not the user's; outside the workspace, only where the user pointed you.`};e.s(["buildThreadOpening",0,function(e){let t="user"===e.from?"The user":"Thursday";return[{type:"text",text:`You are ${e.bot}. ${t} hands you this thread${"user"===e.from?" on screen":" during a call"}.`},{type:"text",text:`## ${t} → ${e.bot}: the job
|
|
65
65
|
|
|
66
|
-
${e.request.trim()}`}]},"loadBotPrompt",0,f]),a()}catch(e){a(e)}},!1),585099,e=>e.a(async(t,a)=>{try{var r=e.i(68356),o=e.i(847841),n=e.i(687388),
|
|
66
|
+
${e.request.trim()}`}]},"loadBotPrompt",0,f]),a()}catch(e){a(e)}},!1),585099,e=>e.a(async(t,a)=>{try{var r=e.i(68356),o=e.i(847841),n=e.i(687388),s=e.i(159479),i=e.i(386075),l=e.i(851372),d=e.i(316172),h=e.i(353885),u=e.i(944971),c=e.i(786025),w=e.i(640911),p=e.i(388439),b=e.i(265143),m=e.i(378884),y=t([s,i,l,b,m]);[s,i,l,b,m]=y.then?(await y)():y;let I=n.BOT_RUN.steps;async function f(e,t){var a,y;let f,k,W,$,q,x,R,M,O,A=t.parent??null,N=await (0,b.findJobBot)(e.bot.trim()),S=N?.name??e.bot.trim(),E=e=>t.emit({...e,bot:S,parent:A});if(!N)return void await E({type:"error",message:`No bot named "${e.bot}". Use a name from the list.`,retry:!1});let C=e.messages,D=await ((a=N).provider&&a.model?(0,i.getTextModel)({provider:a.provider,model:a.model}):(0,i.resolveDefaultModel)().then(i.getTextModel)),_=t.threadId?await (0,m.findThread)(t.threadId):null,[B,{own:U,artifacts:P}]=await Promise.all([t.threadId?(0,c.openJobScratch)(t.threadId,_?.label??"job"):null,(0,c.openBotFolders)(S)]),[j,L]=await Promise.all([(0,l.loadBotPrompt)(S,N.systemPrompt,{owner:t.owner,caller:t.caller,messageId:A},{scratch:B,own:U,artifacts:P}),(0,s.loadTools)({target:"bot",bot:S,session:t.session??(t.threadId?(0,c.botBrowserSession)(t.threadId,S):null),model:D})]),H=Math.min(await (0,i.compactBudget)(D.ref,N.compactAt),t.contextBudget||1/0),Y=!1,J={...L,[h.TOOL_NAMES.send_message]:(0,o.tool)({description:d.sendMessageSpec.description,inputSchema:d.sendMessageSpec.parameters,execute:async(e,a)=>{let r=await t.send({...e,id:a.toolCallId});return"question"===e.kind&&(Y=!0),r}})},F=new Set,K=(y=n.BOT_RUN.silenceMs,k=new AbortController,W=0,$=!1,q=()=>{clearTimeout(f),f=void 0,$||W>0||(f=setTimeout(()=>{k.abort(new DOMException(`The model sent nothing for ${Math.round(y/6e4)} minutes.`,"TimeoutError"))},y))},{signal:k.signal,touch:q,hold:()=>{W+=1,q()},release:()=>{W=Math.max(0,W-1),q()},end:()=>{$=!0,q()}});for(let[e,a]of Object.entries(J)){let r=a.execute;r&&(a.execute=(a,o)=>{let n=(async()=>{t.signal?.throwIfAborted(),await E({type:"tool",id:o.toolCallId,name:e,input:a}),K.hold();try{t.signal?.throwIfAborted();let n=await r(a,o);if(n&&"object"==typeof n&&Symbol.asyncIterator in n){let e;for await(let t of n)e=t;n=e}return await E({type:"tool-result",id:o.toolCallId,name:e,output:n}),n}catch(t){throw await E({type:"tool-result",id:o.toolCallId,name:e,output:(0,i.modelErrorToString)(t),error:!0}),t}finally{K.release()}})();return F.add(n),n.finally(()=>F.delete(n)).catch(()=>{}),n})}let z=Promise.resolve(),G=()=>{},V=0,Q=new r.ToolLoopAgent({model:D.model,instructions:j.text,tools:J,stopWhen:[(0,r.stepCountIs)(I),()=>Y],prepareStep:async({stepNumber:e,steps:a,messages:r})=>{await z,t.signal?.throwIfAborted();let o={},n=a.at(-1)?.usage.inputTokens??0,s=Math.max(n,r.reduce((e,t)=>e+(0,p.estimateTokens)("string"==typeof t.content?t.content:JSON.stringify(t.content))+4,0));V=s;let i=r;if(s>H&&r.length>2){K.hold();let e=await T(D.model,J,r,{signal:t.signal,budget:H,instructions:j.text}).finally(K.release);w.logger.debug(`compacted ${r.length} messages at ${s} tokens (budget ${H})`);let a=`${e.text}${await g(_?.id??null,r,B)}`;await E({type:"compact",text:a,usage:e.usage,messages:r.length,tokens:s}),i=[r[0],{role:"user",content:a}]}let l=e>0?await t.notes?.()??[]:[];return(l.length&&(i=[...i,...l.map(e=>({role:"user",content:e}))]),i===r)?o:{...o,messages:i}}}),X=(x=[],R=[],M=!1,{push(e){let t=R.shift();t?t(e):x.push(e)},take(){let e=x.shift();return e?Promise.resolve(e):M?Promise.resolve(null):new Promise(e=>R.push(e))},end(){for(let e of(M=!0,R.splice(0)))e(null)}}),Z=t.signal?AbortSignal.any([t.signal,K.signal]):K.signal;K.touch();let ee=new AbortController,et=AbortSignal.any([Z,ee.signal]);try{O=await Q.stream({messages:C,abortSignal:et,onStepEnd:e=>{z=new Promise(e=>{G=e}),X.push({messages:e.response.messages,usage:v(e.usage)})}})}catch(e){throw K.end(),ee.abort(),await Promise.allSettled([...F]),e}let ea="",er="",eo=null,en=e=>{w.logger.error(`${S}: the model run broke`,e);let t=(0,i.modelErrorToString)(e),a=!(0,i.isProviderRefusal)(e);if(!(0,i.isContextOverflow)(e))return{type:"error",message:t,retry:a};let r=Math.floor(Math.min(H,V||H)*n.BOT_RUN.overflowShrink);return{type:"error",message:t,budget:Math.max(u.COMPACT_AT_MIN,r),retry:a}};Z.addEventListener("abort",()=>{X.end(),G()},{once:!0});try{for await(let e of O.fullStream)switch(K.touch(),e.type){case"start-step":er="",ea="";break;case"text-delta":ea+=e.text;break;case"text-end":{let e=ea.trim();if(ea="",!e)break;er=[er,e].filter(Boolean).join("\n\n"),await E({type:"text",text:e});break}case"tool-call":await E({type:"tool",id:e.toolCallId,name:e.toolName,input:e.input,providerExecuted:e.providerExecuted,providerOptions:e.providerMetadata});break;case"tool-result":await E({type:"tool-result",id:e.toolCallId,name:e.toolName,output:e.output});break;case"tool-error":await E({type:"tool-result",id:e.toolCallId,name:e.toolName,output:(0,i.modelErrorToString)(e.error),error:!0});break;case"finish-step":{eo=e.finishReason;let t=await X.take();t&&await E({type:"step",...t,budget:H}),G();break}case"abort":if(t.signal?.aborted)return;await E(en(e.reason??"The model stopped sending."));return;case"error":await E(en(e.error));return}}finally{ee.abort(),X.end(),K.end(),G(),await Promise.allSettled([...F])}try{await O.response}catch(e){if(t.signal?.aborted)return;await E(en(e));return}"content-filter"===eo?await E({type:"error",message:"The provider's content filter stopped the response.",retry:!1}):await E({type:"turn-end",text:er,stopped:!Y&&("length"===eo||"error"===eo||"tool-calls"===eo)})}async function g(e,t,a){try{let r=e?await (0,m.listWrittenPaths)(e):(0,m.writtenPathsIn)(t.map(e=>e.content)),o=await (0,c.filesOnDisk)(r,a);if(!o.length)return"";let s=o.slice(-n.BOT_RUN.compactFiles),i=o.length-s.length,l=s.map(e=>`- ${e}`);return i&&l.unshift(`- …and ${i} older ones`),`
|
|
67
67
|
|
|
68
68
|
Files this job has on disk now — open one rather than fetching again what is in it:
|
|
69
|
-
${l.join("\n")}`}catch(e){return w.logger.warn("files under the summary could not be listed",e),""}}async function T(e,t,a,o){let n;try{return await k(e,t,a,o)}catch(e){if(o.signal?.aborted)throw e;n=e}if((0,
|
|
69
|
+
${l.join("\n")}`}catch(e){return w.logger.warn("files under the summary could not be listed",e),""}}async function T(e,t,a,o){let n;try{return await k(e,t,a,o)}catch(e){if(o.signal?.aborted)throw e;n=e}if((0,i.isContextOverflow)(n)){let s=(0,r.pruneMessages)({messages:a,toolCalls:"before-last-4-messages",emptyMessages:"remove"});try{return await k(e,t,s,o)}catch(e){if(o.signal?.aborted)throw e;n=e}}throw Error(`Could not compact the context (${(0,i.modelErrorToString)(n)}).`,{cause:n})}async function k(e,t,a,o){let s,{text:i,usage:l}=await (0,r.generateText)({model:e,system:o.instructions,tools:t,toolChoice:"none",messages:[...a,{role:"user",content:(s=(e=>{let{min:t,max:a,perTokens:r}=n.BOT_RUN.summaryWords;return Math.min(a,Math.max(t,Math.round(e/r)))})(o.budget),`Compact your context. The first message above — who handed you the job, and the job — stays exactly as it is. Everything after it is replaced by what you write now, and you carry on from that first message and this alone; nothing else above can be read again. Write it for a fresh copy of you that has your tools, your instructions and that first message, but has seen none of the rest.
|
|
70
70
|
|
|
71
71
|
Cover all of it, and prefer a fact over a description of a fact:
|
|
72
72
|
|
|
@@ -77,12 +77,12 @@ Cover all of it, and prefer a fact over a description of a fact:
|
|
|
77
77
|
- **What did not work**, and why: the url that 404s, the endpoint that needs POST not GET, the selector that is not there, the site that refuses a headless browser, the argument a tool rejected. This is the part that stops the next steps repeating an hour of yours.
|
|
78
78
|
- **What is left**, in the order you would do it.
|
|
79
79
|
|
|
80
|
-
Plain text, under ${
|
|
80
|
+
Plain text, under ${s} words. No preamble, no headings about the summary itself, no account of how you have been going.`)}],abortSignal:o.signal,timeout:n.BOT_RUN.silenceMs}),d=i.trim();if(!d)throw Object.assign(Error("The summary of the context came back empty, so there is nothing to carry on from."),{isRetryable:!0});return{text:`Everything between the first message and here was compacted. Below is your own summary of it; carry on from the first message and this.
|
|
81
81
|
|
|
82
|
-
${d}`,usage:v(l)}}let v=e=>({input:e.inputTokens??0,output:e.outputTokens??0});e.s(["resumeTranscript",0,function(e,t=new Map){let a=new Map,r=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(a.has(e.toolCallId)||a.set(e.toolCallId,e),"assistant"===t.role&&r.add(e.toolCallId));let o=[],n=new Set;for(let
|
|
82
|
+
${d}`,usage:v(l)}}let v=e=>({input:e.inputTokens??0,output:e.outputTokens??0});e.s(["resumeTranscript",0,function(e,t=new Map){let a=new Map,r=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(a.has(e.toolCallId)||a.set(e.toolCallId,e),"assistant"===t.role&&r.add(e.toolCallId));let o=[],n=new Set;for(let s of e){if("tool"===s.role){let e=s.content.filter(e=>"tool-result"!==e.type);e.length&&o.push({...s,content:e});continue}if("assistant"!==s.role||"string"==typeof s.content){o.push(s);continue}let e=[],i=[];for(let o of s.content){if("tool-call"!==o.type){i.push(o);continue}if(n.has(o.toolCallId))continue;let s=o.input;if("string"==typeof s)try{s=JSON.parse(s)}catch{s=void 0}if(!o.toolCallId||void 0===s){i.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let l=o.toolName===h.TOOL_NAMES.send_message?t.get(o.toolCallId):void 0,d=a.get(o.toolCallId)??(l?{type:"tool-result",toolCallId:o.toolCallId,toolName:o.toolName,output:{type:"json",value:l}}:void 0);if(o.providerExecuted&&(!d||!r.has(o.toolCallId))){i.push({type:"text",text:d?`The provider operation ${o.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(d.output)}`:`The provider operation ${o.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}n.add(o.toolCallId),i.push({...o,input:s}),r.has(o.toolCallId)||e.push(d??{type:"tool-result",toolCallId:o.toolCallId,toolName:o.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}i.length&&o.push({...s,content:i}),e.length&&o.push({role:"tool",content:e})}return o},"runBot",0,f]),a()}catch(e){a(e)}},!1),742712,e=>e.a(async(t,a)=>{try{var r=e.i(666680),o=e.i(875225),n=e.i(260338),s=e.i(518899),i=e.i(380690),l=e.i(687388),d=e.i(528790),h=e.i(613240),u=e.i(353885),c=e.i(53748),w=e.i(944971),p=e.i(889034),b=t([d]);[d]=b.then?(await b)():b;let B=()=>i.appEvents.emit({type:"threads"}),U=e=>"done"===e||"cancelled"===e,P=(e,t,a)=>`message:${(0,r.createHash)("sha256").update(JSON.stringify([e,t,a])).digest("hex")}`;async function m(e,t,a){let[r]=await e.select({id:h.threadWorkTable.id}).from(h.threadWorkTable).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,t),(0,o.eq)(h.threadWorkTable.state,"external"),(0,o.eq)(h.threadWorkTable.caller,a))).limit(1);return!!r}async function y(e,t,a){let r=a.flatMap(e=>"assistant"===e.role&&Array.isArray(e.content)?e.content.flatMap(e=>"tool-call"===e.type&&e.toolName===u.TOOL_NAMES.send_message?[e.toolCallId]:[]):[]),n=r.map(a=>P(e,t,a)),s=new Map;if(!n.length)return s;let[i,l]=await Promise.all([d.database.select({key:h.threadWorkTable.id,to:h.threadWorkTable.bot}).from(h.threadWorkTable).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.inArray)(h.threadWorkTable.id,n))),d.database.select({key:h.threadDeliveryTable.key,to:h.threadWorkTable.bot}).from(h.threadDeliveryTable).innerJoin(h.threadWorkTable,(0,o.eq)(h.threadWorkTable.id,h.threadDeliveryTable.workId)).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.threadId,e),(0,o.inArray)(h.threadDeliveryTable.key,n)))]),c=new Map([...i,...l].map(e=>[e.key,e.to]));for(let[e,t]of r.entries()){let a=c.get(n[e]);a&&s.set(t,{messageId:n[e],to:a})}return s}async function f(e,t,a){let[r]=await e.select({seq:(0,n.max)(h.threadMessageTable.seq)}).from(h.threadMessageTable).where((0,o.eq)(h.threadMessageTable.threadId,t)),s=(r?.seq??-1)+1;return await e.insert(h.threadMessageTable).values({threadId:t,seq:s,...a}),s}let j=(e,t)=>({bot:e.bot,parent:e.id,role:"user",content:`${t} ${p.RESUME_CHECK}`,note:!0});async function g(e,t){await T(e.threadId,j(e,t))}async function T(e,t){let a=await d.database.transaction(a=>f(a,e,t));return B(),a}async function k(e){return d.database.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt,h.threadWorkTable.id)}async function I(e,t){let[a]=await d.database.select({budget:s.sql`min(nullif(${h.threadWorkTable.contextBudget}, 0))`}).from(h.threadWorkTable).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.bot,t)));return a?.budget??void 0}async function v(e,t){await d.database.transaction(async a=>{await W(a,e),await a.update(h.threadWorkTable).set({contextBudget:t}).where((0,o.eq)(h.threadWorkTable.id,e.id))}),B()}async function W(e,t){let[a]=await e.select().from(h.threadWorkTable).where((0,o.and)((0,o.eq)(h.threadWorkTable.id,t.id),(0,o.eq)(h.threadWorkTable.generation,t.generation),(0,o.eq)(h.threadWorkTable.state,"running")));return a||(0,c.publicError)("This turn is no longer running."),a}async function $(e,t){await e.insert(h.threadDeliveryTable).values(t).onConflictDoNothing();let[a]=await e.select({bot:h.threadWorkTable.bot}).from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.id,t.workId));a&&await m(e,t.threadId,a.bot)||await e.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.id,t.workId),(0,o.inArray)(h.threadWorkTable.state,["waiting","done"])))}async function q(e,t){let a={...p.RoomMessageSchema.parse(t),id:t.id};"question"===a.kind&&a.to!==p.ROOM_THURSDAY&&(0,c.publicError)("Address user questions to Thursday; use a message to contact another bot."),a.options?.length&&"question"!==a.kind&&(0,c.publicError)("Offer answer choices only with a user question.");let r=await d.database.transaction(async t=>{await W(t,e);let r=P(e.threadId,e.bot,a.id),[n]=await t.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.id,r));if(n)return{messageId:r,to:n.bot};let[s]=await t.select({to:h.threadWorkTable.bot}).from(h.threadDeliveryTable).innerJoin(h.threadWorkTable,(0,o.eq)(h.threadWorkTable.id,h.threadDeliveryTable.workId)).where((0,o.eq)(h.threadDeliveryTable.key,r));if(s)return{messageId:r,to:s.to};if(a.to===e.bot&&(0,c.publicError)("Continue your own work directly; choose another recipient."),a.replyTo){let[n]=await t.select().from(h.threadWorkTable).where((0,o.and)((0,o.eq)(h.threadWorkTable.id,a.replyTo),(0,o.eq)(h.threadWorkTable.threadId,e.threadId)));if((!n||n.bot!==e.bot||n.caller!==a.to||U(n.state))&&(0,c.publicError)("Reply to an open message addressed to you from that recipient."),n.parentId)return await $(t,{key:r,threadId:e.threadId,workId:n.parentId,speaker:e.bot,text:a.text}),{messageId:r,to:a.to}}let i=await t.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e.threadId)),d=new Set(i.map(e=>e.bot).filter(e=>e!==p.ROOM_THURSDAY));a.to!==p.ROOM_THURSDAY&&!d.has(a.to)&&d.size>=l.BOT_RUN.participants&&(0,c.publicError)("This thread has reached its participant limit."),i.filter(e=>!U(e.state)).length>=l.BOT_RUN.queuedMessages&&(0,c.publicError)("This thread has reached its pending message limit.");let u=a.to!==p.ROOM_THURSDAY&&await m(t,e.threadId,a.to);return await t.insert(h.threadWorkTable).values({id:r,threadId:e.threadId,bot:a.to,caller:e.bot,parentId:e.id,state:a.to===p.ROOM_THURSDAY?"question"===a.kind?"external":"done":u?"waiting":"queued",result:a.to===p.ROOM_THURSDAY?a.text:null,options:[...new Set(a.options??[])]}),a.to===p.ROOM_THURSDAY?await t.insert(h.threadRelayTable).values({key:r,threadId:e.threadId,bot:e.bot,text:a.text,kind:a.kind,messageId:"question"===a.kind?r:null}):await $(t,{key:r,threadId:e.threadId,workId:r,speaker:e.bot,text:a.text}),await t.update(h.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e.threadId)),{messageId:r,to:a.to,...u?{note:`${a.to} is waiting for the user's answer and reads this after it.`}:{}}});return B(),r}async function x(e){let t=!1,a=await d.database.transaction(async a=>{let[r]=await a.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e));if(!r||"running"!==r.status)return null;let n=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e)).orderBy(s.sql`${h.threadWorkTable}.rowid`),i=new Set(n.filter(e=>"external"===e.state).map(e=>e.caller));for(let e of n)"queued"===e.state&&i.has(e.bot)&&(await a.update(h.threadWorkTable).set({state:"waiting"}).where((0,o.eq)(h.threadWorkTable.id,e.id)),e.state="waiting",t=!0);let d=n.filter(e=>"running"===e.state);if(d.length>=l.BOT_RUN.concurrent)return null;let u=n.find(e=>"queued"===e.state&&!d.some(t=>t.bot===e.bot));if(!u)return null;if(r.turns>=l.BOT_RUN.turns)return await a.update(h.threadWorkTable).set({state:"paused"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.state,"queued"))),null;let[c]=await a.update(h.threadWorkTable).set({state:"running",generation:u.generation+1}).where((0,o.eq)(h.threadWorkTable.id,u.id)).returning();return await a.update(h.threadTable).set({turns:r.turns+1}).where((0,o.eq)(h.threadTable.id,e)),c});return(a||t)&&B(),a}async function R(e){let t=await d.database.transaction(async t=>{await W(t,e);let a=await t.select().from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.workId,e.id),(0,o.eq)(h.threadDeliveryTable.consumed,!1))).orderBy(h.threadDeliveryTable.id);for(let r of a){let a=M(r);await f(t,e.threadId,{bot:e.bot,parent:e.id,role:"user",content:a,hidden:!r.visible}),await t.update(h.threadDeliveryTable).set({consumed:!0}).where((0,o.eq)(h.threadDeliveryTable.id,r.id))}return a.map(M)});return t.length&&B(),t}function M(e){return e.visible?(0,w.tagSpeaker)("The user"===e.speaker?"user":"thursday",e.text):`${e.speaker}:
|
|
83
83
|
|
|
84
|
-
${e.text}`}async function M(e,t){await d.database.transaction(async a=>{await W(a,e);let r=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.parentId,e.id)),n=await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.workId,e.id),(0,o.eq)(h.threadDeliveryTable.consumed,!1))).limit(1),i=await m(a,e.threadId,e.bot),s=n.length&&!i?"queued":n.length||r.some(e=>!U(e.state))?"waiting":"done";if(await a.update(h.threadWorkTable).set({state:s,result:t}).where((0,o.eq)(h.threadWorkTable.id,e.id)),"done"!==s)return;if(e.parentId){let[r]=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.id,e.parentId)),[n]=t?[]:await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.workId,e.parentId),(0,o.eq)(h.threadDeliveryTable.speaker,e.bot),(0,o.eq)(h.threadDeliveryTable.consumed,!1))).limit(1);r&&"cancelled"!==r.state&&!n&&await $(a,{key:`return:${e.id}:${e.generation}`,threadId:e.threadId,workId:r.id,speaker:e.bot,text:t||"This turn ended without a message."})}let[l]=await a.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e.threadId)),d=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e.threadId));l&&e.bot===l.bot&&!e.parentId&&d.every(e=>U(e.state))&&(await a.update(h.threadTable).set({status:t?"done":"waiting",outcome:t||"The room is idle. Send a message to continue.",pending:t?null:{options:[w.THREAD_CONTINUE]},wrapped:!0,endedAt:t?new Date:null,seen:!1,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e.threadId)),t&&await a.insert(h.threadRelayTable).values({key:`report:${e.threadId}:${l.generation}`,threadId:e.threadId,bot:e.bot,text:t,kind:"report"}).onConflictDoNothing())}),B()}async function A(e){await d.database.transaction(async t=>{let[a]=await t.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e));if(!a||"running"!==a.status)return;let r=await t.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e));if(r.some(e=>"queued"===e.state||"running"===e.state))return;let n=r.find(e=>"external"===e.state);if(n)return void await t.update(h.threadTable).set({status:"waiting",outcome:n.result,pending:{options:n.options,messageId:n.id,bot:n.caller},updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e));if(r.some(e=>!U(e.state))||a.wrapped)return void await t.update(h.threadTable).set({status:"waiting",outcome:a.turns>=l.BOT_RUN.turns?"The room reached its automatic turn limit. Continue from the saved conversation.":"Work is paused. Continue from the saved conversation.",pending:{options:[w.THREAD_CONTINUE]},updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e));let i=crypto.randomUUID();await t.insert(h.threadWorkTable).values({id:i,threadId:e,bot:a.bot,caller:p.ROOM_THURSDAY,state:"queued"}),await $(t,{key:i,threadId:e,workId:i,speaker:"Thread activity",text:"The participants have finished their current turns. Bring together the results you received for Thursday, including anything still unresolved."}),await t.update(h.threadTable).set({wrapped:!0}).where((0,o.eq)(h.threadTable.id,e))}),B()}async function N(e,t,a=!1){await d.database.transaction(async r=>{let n=await r.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e));for(let a of n.filter(e=>"running"===e.state||"queued"===e.state))await r.update(h.threadWorkTable).set({state:"paused",generation:a.generation+1}).where((0,o.eq)(h.threadWorkTable.id,a.id)),await f(r,e,j(a,t));await r.update(h.threadTable).set({status:"waiting",outcome:t,pending:{options:[w.THREAD_CONTINUE],...a?{auto:!0}:{}},seen:!1,endedAt:null,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await r.insert(h.threadRelayTable).values({key:crypto.randomUUID(),threadId:e,bot:n.find(e=>!e.parentId)?.bot??"Bot",text:t,kind:"interrupted",accepted:a})}),B()}async function S(e,t=!0){await d.database.transaction(async a=>{await a.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.state,"paused"))),await a.update(h.threadTable).set({status:"running",...t?{generation:i.sql`${h.threadTable.generation} + 1`,turns:0}:{},pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await a.update(h.threadRelayTable).set({accepted:!0}).where((0,o.and)((0,o.eq)(h.threadRelayTable.threadId,e),(0,o.eq)(h.threadRelayTable.kind,"interrupted")))}),B()}async function E(e,t,a){let r=e.select({workId:h.threadDeliveryTable.workId}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.threadId,t),(0,o.eq)(h.threadDeliveryTable.consumed,!1)));await e.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,t),(0,o.eq)(h.threadWorkTable.bot,a),(0,o.inArray)(h.threadWorkTable.state,["waiting","done"]),(0,o.inArray)(h.threadWorkTable.id,r)))}async function C(e,t,a,r,n,s=!0){let l=await d.database.transaction(async l=>{let[d]=await l.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e));d||(0,c.publicError)("No such thread.");let u=await l.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt),w=u.filter(e=>"external"===e.state),b=n?w.find(e=>e.id===n)??(0,c.publicError)("That question is no longer waiting for an answer."):s?function(e,t){let a=t?e.filter(e=>e.caller===t):e;if(a.length<=1)return a[0];(0,c.publicError)(`Several questions are waiting for an answer: ${a.map(e=>`${e.caller} (replyTo ${e.id}): “${(e.result??"").slice(0,160)}”`).join("; ")}. Answer one of them by its replyTo.`)}(w,r):void 0,y=b?.caller??r??d.bot,f=b?u.find(e=>e.id===b.parentId):u.find(e=>e.bot===y&&"running"===e.state)??u.find(e=>e.bot===y&&!U(e.state)&&"external"!==e.state);if(b&&(await l.update(h.threadWorkTable).set({state:"done",result:t}).where((0,o.eq)(h.threadWorkTable.id,b.id)),await l.update(h.threadRelayTable).set({accepted:!0}).where((0,o.eq)(h.threadRelayTable.messageId,b.id))),!f){let t=null;if(y!==d.bot){let a=u.findLast(e=>e.bot===d.bot&&!e.parentId&&"cancelled"!==e.state);a?"done"===a.state&&await l.update(h.threadWorkTable).set({state:"waiting"}).where((0,o.eq)(h.threadWorkTable.id,a.id)):a=(await l.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:d.bot,caller:p.ROOM_THURSDAY,state:"waiting"}).returning())[0],t=a.id}f=(await l.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:y,caller:t?d.bot:p.ROOM_THURSDAY,parentId:t,state:"queued"}).returning())[0]}b&&await $(l,{key:`answer:${b.id}`,threadId:e,workId:f.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${b.result??""}”`});let g=crypto.randomUUID();return await $(l,{key:g,threadId:e,workId:f.id,speaker:a,text:t,visible:!0}),b&&!await m(l,e,y)&&await E(l,e,y),await l.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.state,"paused"))),await l.update(h.threadTable).set({status:"running",generation:i.sql`${h.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await l.update(h.threadRelayTable).set({accepted:!0}).where((0,o.and)((0,o.eq)(h.threadRelayTable.threadId,e),(0,o.inArray)(h.threadRelayTable.kind,["interrupted","report"]))),{key:g,to:y,answered:b?{bot:b.caller,question:b.result??""}:null}});return B(),l}async function D(e){await d.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"cancelled",generation:i.sql`${h.threadWorkTable.generation} + 1`}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.inArray)(h.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,o.eq)(h.threadRelayTable.threadId,e))}),B()}async function _(e,t){let[a]=await d.database.select({bot:h.threadTable.bot}).from(h.threadTable).where((0,o.eq)(h.threadTable.id,e)),r=await d.database.select().from(h.threadMessageTable).where((0,o.and)((0,o.eq)(h.threadMessageTable.threadId,e),(0,o.or)((0,o.eq)(h.threadMessageTable.bot,t),a?.bot===t?i.sql`${h.threadMessageTable.bot} is null AND ${h.threadMessageTable.parent} is null`:void 0))).orderBy(h.threadMessageTable.seq),n=r.findLastIndex(e=>e.compact);return(n>0?[r[0],...r.slice(n)]:r).map(e=>({role:e.role,content:e.content}))}e.s(["appendRoomMessage",0,T,"cancelRoom",0,D,"claimRoomWork",0,x,"consumeRoomInbox",0,R,"finishRoomWork",0,M,"listParticipantTranscript",0,_,"listRoomReceipts",0,y,"listRoomWork",0,k,"lowerRoomContextBudget",0,v,"noteRoomBreak",0,g,"pauseRoom",0,N,"resumeRoom",0,S,"roomContextBudget",0,I,"sendRoomMessage",0,q,"settleRoom",0,A,"tellRoom",0,C]),a()}catch(e){a(e)}},!1),39803,e=>e.a(async(t,a)=>{try{var r=e.i(136340),o=e.i(380690),n=e.i(687388),i=e.i(386075),s=e.i(851372),l=e.i(22676),d=e.i(629668),h=e.i(786025),u=e.i(167004),c=e.i(640911),w=e.i(53748),p=e.i(268486),b=e.i(41444),m=e.i(265143),y=e.i(585099),f=e.i(944971),g=e.i(742712),T=e.i(889034),k=e.i(378884),I=t([i,s,l,m,y,g,k]);[i,s,l,m,y,g,k]=I.then?(await I)():I;let M=globalThis.__roomRuns??=new Map,A=globalThis.__roomThreadLock??=(0,p.createKeyedLock)();async function v(e){let t=await (0,m.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:a,...r}={...e,bot:t.name},o=(0,s.buildThreadOpening)({bot:r.bot,request:r.request,from:a}),n=await (0,k.insertThread)({...r,opening:o});return await $(n.id),n.id}async function W(e,t,a="user",r,o){let n=null;return await A(e,async()=>{let i=await (0,k.findThread)(e);if(i||(0,w.publicError)("No such thread."),r){let t=(await (0,g.listRoomWork)(e)).find(e=>e.bot.toLowerCase()===r.trim().toLowerCase());t&&t.bot!==T.ROOM_THURSDAY||(0,w.publicError)("Choose a participant in this thread."),r=t.bot}t.trim()===f.THREAD_CONTINUE&&(0,f.isAppStop)(i.pending)?(await (0,g.resumeRoom)(e),(await (0,g.listRoomWork)(e)).some(e=>"queued"===e.state)||(n=await (0,g.tellRoom)(e,"Continue from the saved conversation.","user"===a?"The user":T.ROOM_THURSDAY,r,void 0,!1))):n=await (0,g.tellRoom)(e,t,"user"===a?"The user":T.ROOM_THURSDAY,r,o)}),await $(e),n}async function $(e){await A(e,async()=>{if(!o.presence.watching){let t=await (0,k.findThread)(e);t?.status!=="running"||[...M.values()].some(t=>t.threadId===e)||await (0,g.pauseRoom)(e,"The app is not open. Work resumes when it returns.",!0);return}for(let t=0;t<2;t++){let t;for(;t=await (0,g.claimRoomWork)(e);)!function(e){let t,a=new AbortController,r=new Promise(e=>{t=e});M.set(e.id,{threadId:e.threadId,stop:a,done:r}),q(e,a.signal).catch(t=>c.logger.error(`thread ${e.threadId}: participant`,t)).finally(()=>{M.delete(e.id),t(),$(e.threadId).catch(t=>c.logger.error(`thread ${e.threadId}: scheduling`,t))})}(t);await (0,g.settleRoom)(e)}})}async function q(e,t){let a=await x(e,t);if(a?.failure?.retry&&!t.aborted&&(await (0,g.noteRoomBreak)(e,a.failure.message),await (0,r.setTimeout)(n.BOT_RUN.retryMs,void 0,{signal:t}).catch(()=>{}),t.aborted||(a=await x(e,t))),!a||t.aborted)return;let i=a.failure?.message,s=a.ending;if(i||!s||s.stopped){let t=i??"The turn was interrupted. Continue from the saved conversation.";A(e.threadId,async()=>{let a=(await (0,g.listRoomWork)(e.threadId)).find(t=>t.id===e.id);if(a?.state!=="running"||a.generation!==e.generation)return;let r=R(e.threadId);await (0,g.pauseRoom)(e.threadId,t),await r}).catch(t=>c.logger.error(`thread ${e.threadId}: pausing`,t));return}await (0,g.finishRoomWork)(e,s.text);let w=await (0,k.findThread)(e.threadId);if(w?.status==="done"){await (0,l.isAnyCallLive)()||(0,u.desktopNotify)(w.label,w.outcome??"");let e=await (0,h.filesOnDisk)((0,d.pathsIn)(w.outcome??""),null),t=e.find(e=>e.startsWith(`${n.PATHS.artifacts}/`))??e[0];t&&o.appEvents.emit({type:"artifact",threadId:w.id,label:w.label,path:t})}}async function x(e,t){let a=new N(e,t),r=null,o=null;try{let n=await (0,k.findThread)(e.threadId);if(!n)return null;(await (0,g.listParticipantTranscript)(e.threadId,e.bot)).length||await (0,g.appendRoomMessage)(e.threadId,{bot:e.bot,parent:e.id,role:"user",content:`Request: ${n.request}
|
|
85
|
-
Coordinator: ${n.bot}. Continue as ${e.bot} in this thread.`,hidden:!0}),await (0,g.consumeRoomInbox)(e);let
|
|
84
|
+
${e.text}`}async function O(e,t){await d.database.transaction(async a=>{await W(a,e);let r=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.parentId,e.id)),n=await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.workId,e.id),(0,o.eq)(h.threadDeliveryTable.consumed,!1))).limit(1),s=await m(a,e.threadId,e.bot),i=n.length&&!s?"queued":n.length||r.some(e=>!U(e.state))?"waiting":"done";if(await a.update(h.threadWorkTable).set({state:i,result:t}).where((0,o.eq)(h.threadWorkTable.id,e.id)),"done"!==i)return;if(e.parentId){let[r]=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.id,e.parentId)),[n]=t?[]:await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.workId,e.parentId),(0,o.eq)(h.threadDeliveryTable.speaker,e.bot),(0,o.eq)(h.threadDeliveryTable.consumed,!1))).limit(1);r&&"cancelled"!==r.state&&!n&&await $(a,{key:`return:${e.id}:${e.generation}`,threadId:e.threadId,workId:r.id,speaker:e.bot,text:t||"This turn ended without a message."})}let[l]=await a.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e.threadId)),d=await a.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e.threadId));l&&e.bot===l.bot&&!e.parentId&&d.every(e=>U(e.state))&&(await a.update(h.threadTable).set({status:t?"done":"waiting",outcome:t||"The room is idle. Send a message to continue.",pending:t?null:{options:[w.THREAD_CONTINUE]},wrapped:!0,endedAt:t?new Date:null,seen:!1,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e.threadId)),t&&await a.insert(h.threadRelayTable).values({key:`report:${e.threadId}:${l.generation}`,threadId:e.threadId,bot:e.bot,text:t,kind:"report"}).onConflictDoNothing())}),B()}async function A(e){await d.database.transaction(async t=>{let[a]=await t.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e));if(!a||"running"!==a.status)return;let r=await t.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e));if(r.some(e=>"queued"===e.state||"running"===e.state))return;let n=r.find(e=>"external"===e.state);if(n)return void await t.update(h.threadTable).set({status:"waiting",outcome:n.result,pending:{options:n.options,messageId:n.id,bot:n.caller},updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e));if(r.some(e=>!U(e.state))||a.wrapped)return void await t.update(h.threadTable).set({status:"waiting",outcome:a.turns>=l.BOT_RUN.turns?"The room reached its automatic turn limit. Continue from the saved conversation.":"Work is paused. Continue from the saved conversation.",pending:{options:[w.THREAD_CONTINUE]},updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e));let s=crypto.randomUUID();await t.insert(h.threadWorkTable).values({id:s,threadId:e,bot:a.bot,caller:p.ROOM_THURSDAY,state:"queued"}),await $(t,{key:s,threadId:e,workId:s,speaker:"Thread activity",text:"The participants have finished their current turns. Bring together the results you received for Thursday, including anything still unresolved."}),await t.update(h.threadTable).set({wrapped:!0}).where((0,o.eq)(h.threadTable.id,e))}),B()}async function N(e,t,a=!1){await d.database.transaction(async r=>{let n=await r.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e));for(let a of n.filter(e=>"running"===e.state||"queued"===e.state))await r.update(h.threadWorkTable).set({state:"paused",generation:a.generation+1}).where((0,o.eq)(h.threadWorkTable.id,a.id)),await f(r,e,j(a,t));await r.update(h.threadTable).set({status:"waiting",outcome:t,pending:{options:[w.THREAD_CONTINUE],...a?{auto:!0}:{}},seen:!1,endedAt:null,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await r.insert(h.threadRelayTable).values({key:crypto.randomUUID(),threadId:e,bot:n.find(e=>!e.parentId)?.bot??"Bot",text:t,kind:"interrupted",accepted:a})}),B()}async function S(e,t=!0){await d.database.transaction(async a=>{await a.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.state,"paused"))),await a.update(h.threadTable).set({status:"running",...t?{generation:s.sql`${h.threadTable.generation} + 1`,turns:0}:{},pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await a.update(h.threadRelayTable).set({accepted:!0}).where((0,o.and)((0,o.eq)(h.threadRelayTable.threadId,e),(0,o.eq)(h.threadRelayTable.kind,"interrupted")))}),B()}async function E(e,t,a){let r=e.select({workId:h.threadDeliveryTable.workId}).from(h.threadDeliveryTable).where((0,o.and)((0,o.eq)(h.threadDeliveryTable.threadId,t),(0,o.eq)(h.threadDeliveryTable.consumed,!1)));await e.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,t),(0,o.eq)(h.threadWorkTable.bot,a),(0,o.inArray)(h.threadWorkTable.state,["waiting","done"]),(0,o.inArray)(h.threadWorkTable.id,r)))}async function C(e,t,a,r,n,i=!0){let l=await d.database.transaction(async l=>{let[d]=await l.select().from(h.threadTable).where((0,o.eq)(h.threadTable.id,e));d||(0,c.publicError)("No such thread.");let u=await l.select().from(h.threadWorkTable).where((0,o.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt),w=u.filter(e=>"external"===e.state),b=n?w.find(e=>e.id===n)??(0,c.publicError)("That question is no longer waiting for an answer."):i?function(e,t){let a=t?e.filter(e=>e.caller===t):e;if(a.length<=1)return a[0];(0,c.publicError)(`Several questions are waiting for an answer: ${a.map(e=>`${e.caller} (replyTo ${e.id}): “${(e.result??"").slice(0,160)}”`).join("; ")}. Answer one of them by its replyTo.`)}(w,r):void 0,y=b?.caller??r??d.bot,f=b?u.find(e=>e.id===b.parentId):u.find(e=>e.bot===y&&"running"===e.state)??u.find(e=>e.bot===y&&!U(e.state)&&"external"!==e.state);if(b&&(await l.update(h.threadWorkTable).set({state:"done",result:t}).where((0,o.eq)(h.threadWorkTable.id,b.id)),await l.update(h.threadRelayTable).set({accepted:!0}).where((0,o.eq)(h.threadRelayTable.messageId,b.id))),!f){let t=null;if(y!==d.bot){let a=u.findLast(e=>e.bot===d.bot&&!e.parentId&&"cancelled"!==e.state);a?"done"===a.state&&await l.update(h.threadWorkTable).set({state:"waiting"}).where((0,o.eq)(h.threadWorkTable.id,a.id)):a=(await l.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:d.bot,caller:p.ROOM_THURSDAY,state:"waiting"}).returning())[0],t=a.id}f=(await l.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:y,caller:t?d.bot:p.ROOM_THURSDAY,parentId:t,state:"queued"}).returning())[0]}b&&await $(l,{key:`answer:${b.id}`,threadId:e,workId:f.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${b.result??""}”`});let g=crypto.randomUUID();return await $(l,{key:g,threadId:e,workId:f.id,speaker:a,text:t,visible:!0}),b&&!await m(l,e,y)&&await E(l,e,y),await l.update(h.threadWorkTable).set({state:"queued"}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.eq)(h.threadWorkTable.state,"paused"))),await l.update(h.threadTable).set({status:"running",generation:s.sql`${h.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,o.eq)(h.threadTable.id,e)),await l.update(h.threadRelayTable).set({accepted:!0}).where((0,o.and)((0,o.eq)(h.threadRelayTable.threadId,e),(0,o.inArray)(h.threadRelayTable.kind,["interrupted","report"]))),{key:g,to:y,answered:b?{bot:b.caller,question:b.result??""}:null}});return B(),l}async function D(e){await d.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"cancelled",generation:s.sql`${h.threadWorkTable.generation} + 1`}).where((0,o.and)((0,o.eq)(h.threadWorkTable.threadId,e),(0,o.inArray)(h.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,o.eq)(h.threadRelayTable.threadId,e))}),B()}async function _(e,t){let[a]=await d.database.select({bot:h.threadTable.bot}).from(h.threadTable).where((0,o.eq)(h.threadTable.id,e)),r=await d.database.select().from(h.threadMessageTable).where((0,o.and)((0,o.eq)(h.threadMessageTable.threadId,e),(0,o.or)((0,o.eq)(h.threadMessageTable.bot,t),a?.bot===t?s.sql`${h.threadMessageTable.bot} is null AND ${h.threadMessageTable.parent} is null`:void 0))).orderBy(h.threadMessageTable.seq),n=r.findLastIndex(e=>e.compact);return(n>0?[r[0],...r.slice(n)]:r).map(e=>({role:e.role,content:e.content}))}e.s(["appendRoomMessage",0,T,"cancelRoom",0,D,"claimRoomWork",0,x,"consumeRoomInbox",0,R,"finishRoomWork",0,O,"listParticipantTranscript",0,_,"listRoomReceipts",0,y,"listRoomWork",0,k,"lowerRoomContextBudget",0,v,"noteRoomBreak",0,g,"pauseRoom",0,N,"resumeRoom",0,S,"roomContextBudget",0,I,"sendRoomMessage",0,q,"settleRoom",0,A,"tellRoom",0,C]),a()}catch(e){a(e)}},!1),39803,e=>e.a(async(t,a)=>{try{var r=e.i(136340),o=e.i(380690),n=e.i(687388),s=e.i(386075),i=e.i(851372),l=e.i(22676),d=e.i(629668),h=e.i(786025),u=e.i(167004),c=e.i(640911),w=e.i(53748),p=e.i(268486),b=e.i(41444),m=e.i(265143),y=e.i(585099),f=e.i(944971),g=e.i(742712),T=e.i(889034),k=e.i(378884),I=t([s,i,l,m,y,g,k]);[s,i,l,m,y,g,k]=I.then?(await I)():I;let O=globalThis.__roomRuns??=new Map,A=globalThis.__roomThreadLock??=(0,p.createKeyedLock)();async function v(e){let t=await (0,m.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:a,...r}={...e,bot:t.name},o=(0,i.buildThreadOpening)({bot:r.bot,request:r.request,from:a}),n=await (0,k.insertThread)({...r,opening:o});return await $(n.id),n.id}async function W(e,t,a="user",r,o){let n=null;return await A(e,async()=>{let s=await (0,k.findThread)(e);if(s||(0,w.publicError)("No such thread."),r){let t=(await (0,g.listRoomWork)(e)).find(e=>e.bot.toLowerCase()===r.trim().toLowerCase());t&&t.bot!==T.ROOM_THURSDAY||(0,w.publicError)("Choose a participant in this thread."),r=t.bot}t.trim()===f.THREAD_CONTINUE&&(0,f.isAppStop)(s.pending)?(await (0,g.resumeRoom)(e),(await (0,g.listRoomWork)(e)).some(e=>"queued"===e.state)||(n=await (0,g.tellRoom)(e,"Continue from the saved conversation.","user"===a?"The user":T.ROOM_THURSDAY,r,void 0,!1))):n=await (0,g.tellRoom)(e,t,"user"===a?"The user":T.ROOM_THURSDAY,r,o)}),await $(e),n}async function $(e){await A(e,async()=>{if(!o.presence.watching){let t=await (0,k.findThread)(e);t?.status!=="running"||[...O.values()].some(t=>t.threadId===e)||await (0,g.pauseRoom)(e,"The app is not open. Work resumes when it returns.",!0);return}for(let t=0;t<2;t++){let t;for(;t=await (0,g.claimRoomWork)(e);)!function(e){let t,a=new AbortController,r=new Promise(e=>{t=e});O.set(e.id,{threadId:e.threadId,stop:a,done:r}),q(e,a.signal).catch(t=>c.logger.error(`thread ${e.threadId}: participant`,t)).finally(()=>{O.delete(e.id),t(),$(e.threadId).catch(t=>c.logger.error(`thread ${e.threadId}: scheduling`,t))})}(t);await (0,g.settleRoom)(e)}})}async function q(e,t){let a=await x(e,t);if(a?.failure?.retry&&!t.aborted&&(await (0,g.noteRoomBreak)(e,a.failure.message),await (0,r.setTimeout)(n.BOT_RUN.retryMs,void 0,{signal:t}).catch(()=>{}),t.aborted||(a=await x(e,t))),!a||t.aborted)return;let s=a.failure?.message,i=a.ending;if(s||!i||i.stopped){let t=s??"The turn was interrupted. Continue from the saved conversation.";A(e.threadId,async()=>{let a=(await (0,g.listRoomWork)(e.threadId)).find(t=>t.id===e.id);if(a?.state!=="running"||a.generation!==e.generation)return;let r=R(e.threadId);await (0,g.pauseRoom)(e.threadId,t),await r}).catch(t=>c.logger.error(`thread ${e.threadId}: pausing`,t));return}await (0,g.finishRoomWork)(e,i.text);let w=await (0,k.findThread)(e.threadId);if(w?.status==="done"){await (0,l.isAnyCallLive)()||(0,u.desktopNotify)(w.label,w.outcome??"");let e=(await (0,h.filesOnDisk)((0,d.pathsIn)(w.outcome??""),null)).find(d.opensOnFinish);e&&o.appEvents.emit({type:"artifact",threadId:w.id,label:w.label,path:e})}}async function x(e,t){let a=new N(e,t),r=null,o=null;try{let n=await (0,k.findThread)(e.threadId);if(!n)return null;(await (0,g.listParticipantTranscript)(e.threadId,e.bot)).length||await (0,g.appendRoomMessage)(e.threadId,{bot:e.bot,parent:e.id,role:"user",content:`Request: ${n.request}
|
|
85
|
+
Coordinator: ${n.bot}. Continue as ${e.bot} in this thread.`,hidden:!0}),await (0,g.consumeRoomInbox)(e);let s=await (0,g.listParticipantTranscript)(e.threadId,e.bot);await (0,y.runBot)({bot:e.bot,messages:(0,y.resumeTranscript)(s,await (0,g.listRoomReceipts)(e.threadId,e.bot,s))},{signal:t,threadId:e.threadId,parent:e.id,caller:e.caller,owner:n.bot,contextBudget:await (0,g.roomContextBudget)(e.threadId,e.bot),session:(0,h.botBrowserSession)(e.threadId,e.bot),notes:()=>(0,g.consumeRoomInbox)(e),send:async a=>{t.throwIfAborted();let r=a.to.trim();if(r.toLowerCase()===T.ROOM_THURSDAY.toLowerCase())r=T.ROOM_THURSDAY;else{let e=await (0,m.findJobBot)(r);(!e||e.disabled)&&(0,w.publicError)(`No enabled bot named "${r}".`),r=e.name}let o=await (0,g.sendRoomMessage)(e,{...a,to:r});return $(e.threadId).catch(e=>c.logger.error("room message scheduling",e)),o},emit:async s=>{(!t.aborted||"tool-result"===s.type)&&(await a.on(s),"step"===s.type&&await (0,k.addThreadUsage)(e.threadId,s.usage,e.bot===n.bot?{tokens:s.usage.input,budget:s.budget}:null),"compact"===s.type&&await (0,k.addThreadUsage)(e.threadId,s.usage),"turn-end"===s.type&&(r=s),"error"===s.type&&(o={message:s.message,retry:s.retry},s.budget&&await (0,g.lowerRoomContextBudget)(e,s.budget)))}})}catch(a){t.aborted||(c.logger.error(`thread ${e.threadId}: ${e.bot} broke`,a),o={message:(0,s.modelErrorToString)(a),retry:!(0,w.isPublicError)(a)&&!(0,s.isProviderRefusal)(a)})}return{ending:r,failure:o}}globalThis.__roomPausing??={current:Promise.resolve()};class N{work;signal;lane;assistant;tool;parts;calls;results;constructor(e,t){this.work=e,this.signal=t,this.lane=(0,b.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(e,t,a=!1){let r={bot:this.work.bot,parent:this.work.id,role:t.role,content:t.content,compact:a,note:a};return null===e?(0,g.appendRoomMessage)(this.work.threadId,r):(await (0,k.upsertMessage)(this.work.threadId,e,r),e)}on(e){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===e.type)if("text"===e.type)this.parts.assistant.push({type:"text",text:e.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===e.type){if(this.calls.has(e.id)){let t=this.parts.assistant.find(t=>"tool-call"===t.type&&t.toolCallId===e.id);t&&"tool-call"===t.type&&e.providerOptions&&(t.providerOptions=e.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(e.id),this.parts.assistant.push({type:"tool-call",toolCallId:e.id,toolName:e.name,input:e.input,...e.providerExecuted?{providerExecuted:!0}:{},...e.providerOptions?{providerOptions:e.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===e.type){if(this.results.has(e.id))return;this.results.add(e.id),this.parts.tool.push({type:"tool-result",toolCallId:e.id,toolName:e.name,output:e.error?{type:"error-text",value:String(e.output)}:"string"==typeof e.output?{type:"text",value:e.output}:{type:"json",value:e.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===e.type){let t=[this.assistant,this.tool];for(let[a,r]of e.messages.entries())await this.write(t[a]??null,r);let a=t.slice(e.messages.length).filter(e=>null!==e);a.length&&await (0,k.deleteMessages)(this.work.threadId,a),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===e.type&&await this.write(null,{role:"user",content:e.text},!0)})}}async function R(e){let t=[...O.values()].filter(t=>t.threadId===e);for(let e of t)e.stop.abort();await Promise.all(t.map(e=>e.done))}async function M(e){await A(e,async()=>{let t=await (0,k.findThread)(e);t||(0,w.publicError)("No such thread."),t.endedAt&&(0,w.publicError)("That thread has already ended."),await (0,g.cancelRoom)(e),await (0,k.updateThread)(e,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await R(e),await (0,h.closeJobShell)(e)})}e.s(["answerThread",0,W,"cancelThread",0,M,"startThread",0,v]),a()}catch(e){a(e)}},!1),167004,e=>{"use strict";var t=e.i(874533),a=e.i(687388);let r=`on run argv
|
|
86
86
|
display notification (item 2 of argv) with title (item 1 of argv)
|
|
87
87
|
end run`,o=`
|
|
88
88
|
$ErrorActionPreference = 'Stop'
|
|
@@ -93,6 +93,6 @@ $text = $xml.GetElementsByTagName('text')
|
|
|
93
93
|
[void]$text.Item(1).AppendChild($xml.CreateTextNode($env:NOTIFY_BODY))
|
|
94
94
|
$id = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\WindowsPowerShell\\v1.0\\powershell.exe'
|
|
95
95
|
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($id).Show([Windows.UI.Notifications.ToastNotification]::new($xml))
|
|
96
|
-
`,n={darwin:(e,t)=>["osascript",["-e",r,"--",e,t]],win32:()=>["powershell.exe",["-NoProfile","-NonInteractive","-Command",o]],linux:(e,t)=>["notify-send",["--app-name",a.APP_NAME,"--",e,t]]};e.s(["desktopNotify",0,function(e,a){let r=e.slice(0,80),o=a.slice(0,200),
|
|
96
|
+
`,n={darwin:(e,t)=>["osascript",["-e",r,"--",e,t]],win32:()=>["powershell.exe",["-NoProfile","-NonInteractive","-Command",o]],linux:(e,t)=>["notify-send",["--app-name",a.APP_NAME,"--",e,t]]};e.s(["desktopNotify",0,function(e,a){let r=e.slice(0,80),o=a.slice(0,200),s=n[process.platform]?.(r,o);if(!s)return;let[i,l]=s;(0,t.execFile)(i,l,{env:{...process.env,NOTIFY_TITLE:r,NOTIFY_BODY:o},timeout:1e4,windowsHide:!0},()=>{})}])}];
|
|
97
97
|
|
|
98
98
|
//# sourceMappingURL=_1dc_d1q._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[265143,e=>e.a(async(t,a)=>{try{var o=e.i(875225),l=e.i(518899),n=e.i(528790),r=e.i(613240),s=e.i(340698);e.i(786025);var b=e.i(944971),m=t([n,s]);[n,s]=m.then?(await m)():m;let f=e=>({name:e.name,description:e.description,systemPrompt:e.systemPrompt,icon:e.icon,provider:e.provider,model:e.model,disabled:e.disabled,compactAt:e.compactAt});async function i(){let e=await n.database.select().from(r.botTable).orderBy(r.botTable.createdAt);return e.length?e.filter(e=>!e.disabled).map(f):[b.DEFAULT_BOT]}async function c(e){let t=await T(e);if(t)return f(t);let a=e.trim().toLowerCase(),[s]=await n.database.select().from(r.botTable).where((0,o.eq)(l.sql`lower(${r.botTable.name})`,a));return s?f(s):b.DEFAULT_BOT.name.toLowerCase()===a?b.DEFAULT_BOT:null}async function u(){let[e,t,a]=await Promise.all([n.database.select().from(r.botTable).orderBy(r.botTable.createdAt),n.database.select({botName:r.botMcpToolTable.botName,id:r.mcpToolTable.id,name:r.mcpToolTable.name,serverName:r.mcpToolTable.serverName}).from(r.botMcpToolTable).innerJoin(r.mcpToolTable,(0,o.eq)(r.botMcpToolTable.toolId,r.mcpToolTable.id)),n.database.select({bot:r.threadTable.bot,input:l.sql`coalesce(sum(${r.threadTable.inputTokens}), 0)`,output:l.sql`coalesce(sum(${r.threadTable.outputTokens}), 0)`,lastJobAt:l.sql`max(${r.threadTable.updatedAt})`}).from(r.threadTable).groupBy(r.threadTable.bot)]),s=new Map;for(let{botName:e,...a}of t){let t=s.get(e)??[];t.push(a),s.set(e,t)}let b=new Map(a.map(e=>[e.bot,{input:Number(e.input),output:Number(e.output)}])),m=new Map(a.flatMap(e=>null==e.lastJobAt?[]:[[e.bot,new Date(1e3*Number(e.lastJobAt))]]));return e.map(e=>({...e,tools:s.get(e.name)??[],tokens:b.get(e.name)??{input:0,output:0},lastJobAt:m.get(e.name)??null}))}async function d(){return(0,b.isBotMemoryOn)(await (0,s.readConfig)(b.BOT_MEMORY_KEY))}async function T(e){let[t]=await n.database.select().from(r.botTable).where((0,o.eq)(r.botTable.name,e));return t??null}async function p(){let e=await n.database.select({name:r.botTable.name}).from(r.botTable);return[...new Set([...e.map(e=>e.name),b.DEFAULT_BOT.name])]}e.s(["findAllBots",0,u,"findJobBot",0,c,"listBotNames",0,p,"listJobBots",0,i,"readBotMemoryOn",0,d]),a()}catch(e){a(e)}},!1),329280,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_readline_1u65a-m._.js","server/chunks/node_modules_consola_dist_chunks_prompt_mjs_02axwqv._.js"].map(t=>e.l(t))).then(()=>t(781937)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1gnjfli._.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[380690,e=>{"use strict";let t,a,l,r,n,s;var i,o=e.i(687388),d=e.i(640911);let c={threads:!0,memory:!0,mcp:!0,config:!0},u=globalThis,p=u.__appEvents??=(t=new Set,{emit(e){for(let a of[...t])try{a(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),f=u.__presence??=(i=o.BROWSER_GONE_MS,a=!1,l=null,r=new Set,n=new Set,s=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return a},track(e){if(e>0){l&&clearTimeout(l),l=null,a||(a=!0,s(n));return}!l&&a&&(l=setTimeout(()=>{l=null,a=!1,s(r)},i))},onGone:e=>(r.add(e),()=>r.delete(e)),onBack:e=>(n.add(e),()=>n.delete(e))}),m=u.__appEventStream??=function(e,t={}){let a=new TextEncoder,l=t.heartbeatMs??2e4,r=0;return{respond:(n,s)=>{let i=()=>{};return new Response(new ReadableStream({async start(o){let c=!1,u=new Map,p=[],f=e=>{if(!c)try{o.enqueue(a.encode(e))}catch{i()}},m=e=>f(`data: ${JSON.stringify(e)}
|
|
2
2
|
|
|
3
|
-
`),h=e=>{let a=t.coalesce?.keyOf(e)??null;if(null===a)return m(e);let l=u.get(a);l&&clearTimeout(l),u.set(a,setTimeout(()=>{u.delete(a),m(e)},t.coalesce?.ms))},b=e.subscribe(e=>p?p.push(e):h(e)),g=setInterval(()=>f(": ping\n\n"),l);r+=1,t.onWatchers?.(r),i=()=>{if(!c){for(let e of(c=!0,r-=1,t.onWatchers?.(r),b(),clearInterval(g),u.values()))clearTimeout(e);try{o.close()}catch{}}},n.addEventListener("abort",i);try{for(let e of await s?.()??[])m(e)}catch(e){d.logger.error("event stream opening failed",e),i();return}let T=p;for(let e of(p=null,T))h(e)},cancel(){i()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return r}}}(p,{coalesce:{ms:150,keyOf:e=>e.type in c?e.type:null},onWatchers:f.track}),h=u.__bootId??=crypto.randomUUID();e.s(["BOOT_ID",0,h,"appEventStream",0,m,"appEvents",0,p,"presence",0,f],380690)},850777,e=>e.a(async(t,a)=>{try{var l=e.i(22676),r=e.i(91264),n=t([l]);[l]=n.then?(await n)():n;let s=(0,r.serverRoute)(()=>(0,l.readCallSkillsOn)());e.s(["GET",0,s]),a()}catch(e){a(e)}},!1),684330,e=>{"use strict";var t=e.i(747909),a=e.i(174017),l=e.i(996250),r=e.i(759756),n=e.i(561916),s=e.i(174677),i=e.i(869741),o=e.i(316795),d=e.i(487718),c=e.i(995169),u=e.i(47587),p=e.i(666012),f=e.i(570101),m=e.i(626937),h=e.i(10372),b=e.i(193695);e.i(52474);var g=e.i(600220);let T=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/thursday/skills/route",pathname:"/api/thursday/skills",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/thursday/skills/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(850777),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:R,serverHooks:w}=T;async function y(e,t,l){l.requestMeta&&(0,r.setRequestMeta)(e,l.requestMeta),T.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/thursday/skills/route";v=v.replace(/\/index$/,"")||"/";let R=await T.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==l.waitUntil||l.waitUntil.call(l,Promise.resolve()),null;let{buildId:w,deploymentId:y,params:C,nextConfig:A,parsedUrl:S,isDraftMode:E,prerenderManifest:x,routerServerContext:I,isOnDemandRevalidate:_,revalidateOnlyGenerated:M,resolvedPathname:O,clientReferenceManifest:k,serverActionsManifest:q}=R,N=(0,i.normalizeAppPath)(v),P=!!(x.dynamicRoutes[N]||x.routes[O]),H=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,S,!1):t.end("This page could not be found"),null);if(P&&!E){let e=!!x.routes[O],t=x.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await H();throw new b.NoFallbackError}}let D=null;!P||T.isDev||E||(D="/index"===(D=O)?"/":D);let U=!0===T.isDev||!P,F=P&&!U;q&&k&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:k,serverActionsManifest:q});let L=e.method||"GET",j=(0,n.getTracer)(),B=j.getActiveScopeSpan(),K=!!(null==I?void 0:I.isWrappedByNextServer),G=!!(0,r.getRequestMeta)(e,"minimalMode"),z=(0,r.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,A,x,G);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let $={params:C,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,supportsDynamicResponse:U,incrementalCache:z,hmrRefreshHash:(0,r.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:l.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,l,r)=>T.onRequestError(e,t,l,r,I)},sharedContext:{buildId:w,deploymentId:y}},W=new o.NodeNextRequest(e),Y=new o.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!G&&_&&M&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await T.handle(X,$);e.fetchMetrics=$.renderOpts.fetchMetrics;let n=$.renderOpts.pendingWaitUntil;n&&l.waitUntil&&(l.waitUntil(n),n=void 0);let s=$.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(W,Y,r,n),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);s&&(t[h.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,l=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==a&&a>0?A.expireTime:void 0:$.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:l}}}}catch(t){throw(null==a?void 0:a.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:_})},!1,I),t}},V=async(r,s)=>{try{var i,o;let r=await T.handleResponse({req:e,nextConfig:A,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:M,responseGenerator:J,waitUntil:l.waitUntil,isMinimalMode:G});if(!P)return;if((null==r||null==(i=r.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==r||null==(o=r.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",_?"REVALIDATED":r.isMiss?"MISS":r.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,f.fromNodeOutgoingHttpHeaders)(r.value.headers);G&&P||n.delete(h.NEXT_CACHE_TAGS_HEADER),!r.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,m.getCacheControlHeader)(r.cacheControl)),await (0,p.sendResponse)(W,Y,new Response(r.value.body,{headers:n,status:r.value.status||200}));return}catch(t){if(t instanceof b.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:_})},!1,I),P)throw t;await (0,p.sendResponse)(W,Y,new Response(null,{status:500}));return}finally{(()=>{if(!r)return;let e=t.statusCode;r.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(r.setStatus({code:n.SpanStatusCode.ERROR}),r.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let l=a.get("next.route")||N,i=`${L} ${l}`;r.setAttributes({"next.route":l,"http.route":l,"next.span_name":i}),r.updateName(i),s&&s!==r&&(s.setAttribute("http.route",l),s.updateName(i))})()}};if(K&&B)await V(B,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${L} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>V(e,t)),void 0,!K)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,l.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:R})},"routeModule",0,T,"serverHooks",0,w,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,R])},134344,e=>{"use strict";var t=e.i(105249),a=e.i(687388),l=e.i(911757),r=e.i(944971),n=e.i(904309);l.LiveSettingsSchema.extend({locale:t.default.string().max(35).nullish()}),r.botIconSchema.extend({kind:t.default.enum(["mark","ascii"]).default("ascii"),charset:t.default.enum(["ascii","emoji","emojiOnly"]).default(a.ASCII_FACE.charset),fontSize:t.default.number().min(a.ASCII_FACE.fontSize.min).max(a.ASCII_FACE.fontSize.max).default(a.ASCII_FACE.fontSize.default),density:t.default.number().min(a.ASCII_FACE.density.min).max(a.ASCII_FACE.density.max).default(a.ASCII_FACE.density.default)}).parse({});t.default.object({enabled:t.default.boolean(),phrase:t.default.string().trim().min(3).max(32)}),t.default.object({enabled:t.default.boolean(),combo:t.default.string().trim().min(1).max(64)}),t.default.enum(["off","waiting","any"]),t.default.enum(["center","sides"]),t.default.object({id:t.default.string().min(1),role:t.default.enum(["user","assistant","tool"]),tool:t.default.string().nullish(),text:t.default.string(),seq:t.default.number().int().min(0),fragments:t.default.array(n.LiveFragmentSchema).nullish()}),t.default.object({id:t.default.string().min(1),text:t.default.string(),seq:t.default.number().int().min(0)}),e.s(["THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"isSkillsOn",0,e=>e?.trim()==="on"],134344)},22676,e=>e.a(async(t,a)=>{try{var l=e.i(349129),r=e.i(875225),n=e.i(518899),s=e.i(687388),i=e.i(528790),o=e.i(613240),d=e.i(378884),c=e.i(340698),u=e.i(134344),p=t([i,d,c]);async function f(){return(0,u.isSkillsOn)(await (0,c.readConfig)(u.THURSDAY_KEYS.skills))}async function m(e,t,a){let[s]=await i.database.select({startedAt:o.callTable.startedAt}).from(o.callTable).where((0,r.eq)(o.callTable.id,e));if(!s)return null;let[d]=await i.database.select({total:n.sql`count(*)`}).from(o.callMessageTable).where((0,r.eq)(o.callMessageTable.callId,e)),c=await i.database.select({role:o.callMessageTable.role,tool:o.callMessageTable.tool,text:o.callMessageTable.text}).from(o.callMessageTable).where((0,r.eq)(o.callMessageTable.callId,e)).orderBy((0,l.asc)(o.callMessageTable.seq)).limit(a).offset((t-1)*a);return{startedAt:s.startedAt,total:Number(d?.total??0),turns:c}}async function h(){return(await i.database.select({id:o.callTable.id}).from(o.callTable).where((0,r.isNull)(o.callTable.endedAt)).limit(1)).length>0}async function b(e){let t=e.limit??s.CALL_HISTORY_PAGE,a=await i.database.select({id:o.callTable.id,provider:o.callTable.provider,model:o.callTable.model,backendModel:o.callTable.backendModel,startedAt:o.callTable.startedAt,endedAt:o.callTable.endedAt,endedReason:o.callTable.endedReason,seconds:o.callTable.seconds}).from(o.callTable).innerJoin(o.callMessageTable,(0,r.eq)(o.callMessageTable.callId,o.callTable.id)).where(e.before?(0,r.lt)(o.callTable.startedAt,e.before):void 0).groupBy(o.callTable.id).orderBy((0,l.desc)(o.callTable.startedAt)).limit(t);if(0===a.length)return[];let n=await i.database.select({callId:o.callMessageTable.callId,id:o.callMessageTable.id,role:o.callMessageTable.role,tool:o.callMessageTable.tool,text:o.callMessageTable.text,seq:o.callMessageTable.seq,fragments:o.callMessageTable.fragments,at:o.callMessageTable.at}).from(o.callMessageTable).where((0,r.inArray)(o.callMessageTable.callId,a.map(e=>e.id))).orderBy((0,l.asc)(o.callMessageTable.callId),(0,l.asc)(o.callMessageTable.seq)),c=new Map;for(let e of n){let{callId:t,...a}=e,l=c.get(t);l?l.push(a):c.set(t,[a])}let u=await (0,d.listCallJobs)(a.map(e=>e.id));return a.map(e=>({...e,turns:c.get(e.id)??[],jobs:u.filter(t=>t.callId===e.id).map(e=>({id:e.id,label:e.label,status:e.status,outcome:e.outcome}))}))}[i,d,c]=p.then?(await p)():p,e.s(["isAnyCallLive",0,h,"listCallHistory",0,b,"readCallConversation",0,m,"readCallSkillsOn",0,f]),a()}catch(e){a(e)}},!1),704161,e=>{"use strict";var t=e.i(469719);let a=t.z.union([t.z.date(),t.z.iso.datetime()]);e.s(["DateLikeSchema",0,a,"toDate",0,e=>new Date(e)])}];
|
|
3
|
+
`),h=e=>{let a=t.coalesce?.keyOf(e)??null;if(null===a)return m(e);let l=u.get(a);l&&clearTimeout(l),u.set(a,setTimeout(()=>{u.delete(a),m(e)},t.coalesce?.ms))},b=e.subscribe(e=>p?p.push(e):h(e)),g=setInterval(()=>f(": ping\n\n"),l);r+=1,t.onWatchers?.(r),i=()=>{if(!c){for(let e of(c=!0,r-=1,t.onWatchers?.(r),b(),clearInterval(g),u.values()))clearTimeout(e);try{o.close()}catch{}}},n.addEventListener("abort",i);try{for(let e of await s?.()??[])m(e)}catch(e){d.logger.error("event stream opening failed",e),i();return}let T=p;for(let e of(p=null,T))h(e)},cancel(){i()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return r}}}(p,{coalesce:{ms:150,keyOf:e=>e.type in c?e.type:null},onWatchers:f.track}),h=u.__bootId??=crypto.randomUUID();e.s(["BOOT_ID",0,h,"appEventStream",0,m,"appEvents",0,p,"presence",0,f],380690)},850777,e=>e.a(async(t,a)=>{try{var l=e.i(22676),r=e.i(91264),n=t([l]);[l]=n.then?(await n)():n;let s=(0,r.serverRoute)(()=>(0,l.readCallSkillsOn)());e.s(["GET",0,s]),a()}catch(e){a(e)}},!1),684330,e=>{"use strict";var t=e.i(747909),a=e.i(174017),l=e.i(996250),r=e.i(759756),n=e.i(561916),s=e.i(174677),i=e.i(869741),o=e.i(316795),d=e.i(487718),c=e.i(995169),u=e.i(47587),p=e.i(666012),f=e.i(570101),m=e.i(626937),h=e.i(10372),b=e.i(193695);e.i(52474);var g=e.i(600220);let T=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/thursday/skills/route",pathname:"/api/thursday/skills",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/thursday/skills/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(850777),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:R,serverHooks:w}=T;async function y(e,t,l){l.requestMeta&&(0,r.setRequestMeta)(e,l.requestMeta),T.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/thursday/skills/route";v=v.replace(/\/index$/,"")||"/";let R=await T.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==l.waitUntil||l.waitUntil.call(l,Promise.resolve()),null;let{buildId:w,deploymentId:y,params:C,nextConfig:A,parsedUrl:S,isDraftMode:E,prerenderManifest:x,routerServerContext:I,isOnDemandRevalidate:_,revalidateOnlyGenerated:M,resolvedPathname:O,clientReferenceManifest:k,serverActionsManifest:q}=R,N=(0,i.normalizeAppPath)(v),P=!!(x.dynamicRoutes[N]||x.routes[O]),H=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,S,!1):t.end("This page could not be found"),null);if(P&&!E){let e=!!x.routes[O],t=x.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await H();throw new b.NoFallbackError}}let D=null;!P||T.isDev||E||(D="/index"===(D=O)?"/":D);let U=!0===T.isDev||!P,F=P&&!U;q&&k&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:k,serverActionsManifest:q});let L=e.method||"GET",j=(0,n.getTracer)(),B=j.getActiveScopeSpan(),K=!!(null==I?void 0:I.isWrappedByNextServer),G=!!(0,r.getRequestMeta)(e,"minimalMode"),z=(0,r.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,A,x,G);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let $={params:C,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,supportsDynamicResponse:U,incrementalCache:z,hmrRefreshHash:(0,r.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:l.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,l,r)=>T.onRequestError(e,t,l,r,I)},sharedContext:{buildId:w,deploymentId:y}},W=new o.NodeNextRequest(e),Y=new o.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!G&&_&&M&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await T.handle(X,$);e.fetchMetrics=$.renderOpts.fetchMetrics;let n=$.renderOpts.pendingWaitUntil;n&&l.waitUntil&&(l.waitUntil(n),n=void 0);let s=$.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(W,Y,r,n),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);s&&(t[h.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,l=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==a&&a>0?A.expireTime:void 0:$.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:l}}}}catch(t){throw(null==a?void 0:a.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:_})},!1,I),t}},V=async(r,s)=>{try{var i,o;let r=await T.handleResponse({req:e,nextConfig:A,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:M,responseGenerator:J,waitUntil:l.waitUntil,isMinimalMode:G});if(!P)return;if((null==r||null==(i=r.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==r||null==(o=r.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",_?"REVALIDATED":r.isMiss?"MISS":r.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,f.fromNodeOutgoingHttpHeaders)(r.value.headers);G&&P||n.delete(h.NEXT_CACHE_TAGS_HEADER),!r.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,m.getCacheControlHeader)(r.cacheControl)),await (0,p.sendResponse)(W,Y,new Response(r.value.body,{headers:n,status:r.value.status||200}));return}catch(t){if(t instanceof b.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:_})},!1,I),P)throw t;await (0,p.sendResponse)(W,Y,new Response(null,{status:500}));return}finally{(()=>{if(!r)return;let e=t.statusCode;r.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(r.setStatus({code:n.SpanStatusCode.ERROR}),r.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let l=a.get("next.route")||N,i=`${L} ${l}`;r.setAttributes({"next.route":l,"http.route":l,"next.span_name":i}),r.updateName(i),s&&s!==r&&(s.setAttribute("http.route",l),s.updateName(i))})()}};if(K&&B)await V(B,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${L} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>V(e,t)),void 0,!K)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,l.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:R})},"routeModule",0,T,"serverHooks",0,w,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,R])},134344,e=>{"use strict";var t=e.i(105249),a=e.i(687388),l=e.i(911757),r=e.i(944971),n=e.i(904309);l.LiveSettingsSchema.extend({locale:t.default.string().max(35).nullish(),faceWords:t.default.boolean().optional()}),r.botIconSchema.extend({kind:t.default.enum(["mark","ascii"]).default("ascii"),charset:t.default.enum(["ascii","emoji","emojiOnly"]).default(a.ASCII_FACE.charset),fontSize:t.default.number().min(a.ASCII_FACE.fontSize.min).max(a.ASCII_FACE.fontSize.max).default(a.ASCII_FACE.fontSize.default),density:t.default.number().min(a.ASCII_FACE.density.min).max(a.ASCII_FACE.density.max).default(a.ASCII_FACE.density.default)}).parse({});t.default.object({enabled:t.default.boolean(),phrase:t.default.string().trim().min(3).max(32)}),t.default.object({enabled:t.default.boolean(),combo:t.default.string().trim().min(1).max(64)}),t.default.enum(["off","waiting","any"]),t.default.enum(["center","sides"]),t.default.object({id:t.default.string().min(1),role:t.default.enum(["user","assistant","tool"]),tool:t.default.string().nullish(),text:t.default.string(),seq:t.default.number().int().min(0),fragments:t.default.array(n.LiveFragmentSchema).nullish()}),t.default.object({id:t.default.string().min(1),text:t.default.string(),seq:t.default.number().int().min(0)}),e.s(["THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"isSkillsOn",0,e=>e?.trim()==="on"],134344)},22676,e=>e.a(async(t,a)=>{try{var l=e.i(349129),r=e.i(875225),n=e.i(518899),s=e.i(687388),i=e.i(528790),o=e.i(613240),d=e.i(378884),c=e.i(340698),u=e.i(134344),p=t([i,d,c]);async function f(){return(0,u.isSkillsOn)(await (0,c.readConfig)(u.THURSDAY_KEYS.skills))}async function m(e,t,a){let[s]=await i.database.select({startedAt:o.callTable.startedAt}).from(o.callTable).where((0,r.eq)(o.callTable.id,e));if(!s)return null;let[d]=await i.database.select({total:n.sql`count(*)`}).from(o.callMessageTable).where((0,r.eq)(o.callMessageTable.callId,e)),c=await i.database.select({role:o.callMessageTable.role,tool:o.callMessageTable.tool,text:o.callMessageTable.text}).from(o.callMessageTable).where((0,r.eq)(o.callMessageTable.callId,e)).orderBy((0,l.asc)(o.callMessageTable.seq)).limit(a).offset((t-1)*a);return{startedAt:s.startedAt,total:Number(d?.total??0),turns:c}}async function h(){return(await i.database.select({id:o.callTable.id}).from(o.callTable).where((0,r.isNull)(o.callTable.endedAt)).limit(1)).length>0}async function b(e){let t=e.limit??s.CALL_HISTORY_PAGE,a=await i.database.select({id:o.callTable.id,provider:o.callTable.provider,model:o.callTable.model,backendModel:o.callTable.backendModel,startedAt:o.callTable.startedAt,endedAt:o.callTable.endedAt,endedReason:o.callTable.endedReason,seconds:o.callTable.seconds}).from(o.callTable).innerJoin(o.callMessageTable,(0,r.eq)(o.callMessageTable.callId,o.callTable.id)).where(e.before?(0,r.lt)(o.callTable.startedAt,e.before):void 0).groupBy(o.callTable.id).orderBy((0,l.desc)(o.callTable.startedAt)).limit(t);if(0===a.length)return[];let n=await i.database.select({callId:o.callMessageTable.callId,id:o.callMessageTable.id,role:o.callMessageTable.role,tool:o.callMessageTable.tool,text:o.callMessageTable.text,seq:o.callMessageTable.seq,fragments:o.callMessageTable.fragments,at:o.callMessageTable.at}).from(o.callMessageTable).where((0,r.inArray)(o.callMessageTable.callId,a.map(e=>e.id))).orderBy((0,l.asc)(o.callMessageTable.callId),(0,l.asc)(o.callMessageTable.seq)),c=new Map;for(let e of n){let{callId:t,...a}=e,l=c.get(t);l?l.push(a):c.set(t,[a])}let u=await (0,d.listCallJobs)(a.map(e=>e.id));return a.map(e=>({...e,turns:c.get(e.id)??[],jobs:u.filter(t=>t.callId===e.id).map(e=>({id:e.id,label:e.label,status:e.status,outcome:e.outcome}))}))}[i,d,c]=p.then?(await p)():p,e.s(["isAnyCallLive",0,h,"listCallHistory",0,b,"readCallConversation",0,m,"readCallSkillsOn",0,f]),a()}catch(e){a(e)}},!1),704161,e=>{"use strict";var t=e.i(469719);let a=t.z.union([t.z.date(),t.z.iso.datetime()]);e.s(["DateLikeSchema",0,a,"toDate",0,e=>new Date(e)])}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=_1klbcft._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[353885,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",delegate:"delegate",thread:"thread",send_message:"send_message",end_call:"end_call"}])},378884,e=>e.a(async(t,a)=>{try{var r=e.i(875225),n=e.i(349129),l=e.i(518899),i=e.i(380690),s=e.i(687388),o=e.i(528790),d=e.i(613240),u=e.i(353885),c=e.i(41444),h=e.i(944971),b=e.i(889034),p=t([o]);[o]=p.then?(await p)():p;let C=()=>i.appEvents.emit({type:"threads"}),D={id:d.threadTable.id,bot:d.threadTable.bot,label:d.threadTable.label,request:d.threadTable.request,status:d.threadTable.status,outcome:d.threadTable.outcome,pending:d.threadTable.pending,seen:d.threadTable.seen,inputTokens:d.threadTable.inputTokens,outputTokens:d.threadTable.outputTokens,contextTokens:d.threadTable.contextTokens,contextBudget:d.threadTable.contextBudget,createdAt:d.threadTable.createdAt,updatedAt:d.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await o.database.transaction(async e=>{let[r]=await e.insert(d.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(d.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(d.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:b.ROOM_THURSDAY,state:"queued"}),r});return C(),r}async function T(e,t){await o.database.update(d.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(d.threadTable.id,e)),C()}async function m(e){0!==e.length&&(await o.database.transaction(async t=>{await t.update(d.threadTable).set({seen:!0}).where((0,r.inArray)(d.threadTable.id,e)),await t.update(d.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(d.threadRelayTable.threadId,e))}),C())}async function y(e,t,a=null){(t.input||t.output||null!==a)&&(await o.database.update(d.threadTable).set({inputTokens:l.sql`${d.threadTable.inputTokens} + ${t.input}`,outputTokens:l.sql`${d.threadTable.outputTokens} + ${t.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(d.threadTable.id,e)),C())}async function g(e){let[t]=await o.database.select(D).from(d.threadTable).where((0,r.eq)(d.threadTable.id,e));if(!t)return null;let[a]=await v([t]);return a??null}async function w(e){let[t]=await o.database.select().from(d.threadTable).where((0,r.eq)(d.threadTable.id,e));return t??null}async function A(){let[e,t,a,l]=await Promise.all([o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.status,["running","waiting"])).orderBy((0,n.desc)(d.threadTable.updatedAt)),o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.status,["done","cancelled"])).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(s.INBOX_FINISHED),o.database.select(D).from(d.threadTable).where((0,r.and)((0,r.inArray)(d.threadTable.status,["done","cancelled"]),(0,r.eq)(d.threadTable.seen,!1))),o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.id,o.database.select({id:d.threadRelayTable.threadId}).from(d.threadRelayTable).where((0,r.eq)(d.threadRelayTable.accepted,!1))))]),i=[...new Map([...e,...t,...a,...l].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return v(i)}async function _(){let e=await o.database.select(D).from(d.threadTable).orderBy(l.sql`case when ${d.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,n.desc)(d.threadTable.updatedAt),(0,n.desc)(d.threadTable.id)).limit(s.THREAD_STATUS_LIMIT);return v(e)}async function I(e={}){let t=await o.database.select(D).from(d.threadTable).where(e.before?(0,r.lt)(d.threadTable.updatedAt,e.before):void 0).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(e.limit??s.PAGE_SIZE);return v(t)}async function M(e){return e.length?await o.database.select({id:d.threadTable.id,callId:d.threadTable.callId,label:d.threadTable.label,status:d.threadTable.status,outcome:d.threadTable.outcome}).from(d.threadTable).where((0,r.inArray)(d.threadTable.callId,e)).orderBy(d.threadTable.createdAt):[]}function x(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function S(e){let t=await o.database.select({content:d.threadMessageTable.content}).from(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.eq)(d.threadMessageTable.role,"assistant"))).orderBy(d.threadMessageTable.seq);return x(t.map(e=>e.content))}async function O(e){let t=e.trim();if(!t)return null;let a=await w(t);if(a)return a;let r=t.toLowerCase();return(await o.database.select().from(d.threadTable).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(20)).find(e=>e.label.toLowerCase()===r)??null}async function k(e,t,a){await o.database.insert(d.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[d.threadMessageTable.threadId,d.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),C()}async function q(e,t){t.length&&(await o.database.delete(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.inArray)(d.threadMessageTable.seq,t))),C())}async function v(e){if(0===e.length)return[];let t=await o.database.select().from(d.threadMessageTable).where((0,r.inArray)(d.threadMessageTable.threadId,e.map(e=>e.id))).orderBy(d.threadMessageTable.seq),a=e.map(e=>e.id),[n,l,i]=await Promise.all([o.database.select().from(d.threadWorkTable).where((0,r.inArray)(d.threadWorkTable.threadId,a)),o.database.select().from(d.threadDeliveryTable).where((0,r.and)((0,r.inArray)(d.threadDeliveryTable.threadId,a),(0,r.eq)(d.threadDeliveryTable.visible,!0))),o.database.select().from(d.threadRelayTable).where((0,r.and)((0,r.inArray)(d.threadRelayTable.threadId,a),(0,r.eq)(d.threadRelayTable.accepted,!1)))]),s=new Map(e.map(e=>[e.id,e.bot])),p=new Map(n.map(e=>[e.id,e.caller])),f=new Map;for(let e of t){let t=f.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,n=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof n?n:n.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(b.RESUME_CHECK)?t.slice(0,-b.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,h.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let n=[];return t.forEach((e,t)=>{if("text"===e.type){let l=e.text.trim();l&&n.push({...a,id:r(t),kind:"text",text:l});return}if("tool-result"===e.type)return void n.push(R(a,r(t),e));if("tool-call"!==e.type)return;let l=e.input??{};if(e.toolName===u.TOOL_NAMES.send_message){let i;n.push({...a,id:r(t),kind:"ask",callId:e.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===b.ROOM_THURSDAY.toLowerCase()?b.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind})}else e.toolName===u.TOOL_NAMES.bash?n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:(0,c.clip)(String(l.command??""),120),note:N(l)}):n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:function(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,c.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return N(a)??(0,c.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args&&"object"==typeof a.args?JSON.stringify(a.args):"";return(0,c.clip)([String(a.server??""),e,t].filter(Boolean).join(" "),120)}for(let e of L){let t=U(a,e);if(t)return(0,c.clip)(t,120)}for(let e of Object.keys(a)){let t=U(a,e);if(t)return(0,c.clip)(t,120)}return Object.keys(a).length?(0,c.clip)(JSON.stringify(a),120):""}(e.toolName,l),note:N(l),path:e.toolName===u.TOOL_NAMES.write_file?U(l,"path")??null:null})}),n}if("tool"===e.role){let t=[];return e.content.forEach((e,n)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(R(a,r(n),e))}),t}return[]}(e,(e.parent?p.get(e.parent):null)??s.get(e.threadId)??"")),f.set(e.threadId,t)}return e.map(e=>{let t=n.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==b.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:n,...l}=e;return{...l,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],auto:a?.auto===!0,messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:n},lines:t}}(e,f.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:l.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:i.filter(t=>t.threadId===e.id)}}})}let L=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],U=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function N(e){let t=U(e,"description");return t?(0,c.clip)(t,120):null}async function E(e,t){for(let a of(await o.database.select({role:d.threadMessageTable.role,content:d.threadMessageTable.content}).from(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.inArray)(d.threadMessageTable.role,["tool","assistant"])))))if("string"!=typeof a.content){for(let e of a.content)if("tool-result"===e.type&&e.toolCallId===t)return $(e.output,400,!0)}return null}function R(e,t,a){let r=$(a.output,5),n=r.flatMap(e=>"text"===e.type?[e.text]:[]),l=n.slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:l.map(e=>({type:"text",text:(0,c.clip)(e,200)})),more:n.length>l.length||r.length>n.length||l.some(e=>e.length>200)}}function $(e,t,a=!1){var r;if(null==e)return[];if("string"==typeof e)return B(e,t,a);if("object"!=typeof e)return B(String(e),t,a);switch(e.type){case"text":case"error-text":return B(String(e.value??""),t,a);case"json":case"error-json":return $(e.value,t,a);case"execution-denied":return B("Denied.",t,a);case"content":{if(!Array.isArray(e.value))return[];let r=[];for(let n of e.value){if("text"===n.type&&"string"==typeof n.text){r.push(...B(n.text,t,a));continue}let e=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(n);e&&r.push({type:"image",src:e})}return r}}return Array.isArray(e.sources)?e.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e})):"string"==typeof e.stdout?B(e.stdout||String(e.stderr??""),t,a):"string"==typeof e.answer?B(e.answer,t,a):B(a?(r=e,Array.isArray(r)?JSON.stringify(r,null,2):Object.entries(r).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
|
|
1
|
+
module.exports=[353885,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",delegate:"delegate",thread:"thread",send_message:"send_message",end_call:"end_call",emote:"emote"}])},378884,e=>e.a(async(t,a)=>{try{var r=e.i(875225),n=e.i(349129),l=e.i(518899),i=e.i(380690),s=e.i(687388),o=e.i(528790),d=e.i(613240),u=e.i(353885),c=e.i(41444),h=e.i(944971),b=e.i(889034),p=t([o]);[o]=p.then?(await p)():p;let C=()=>i.appEvents.emit({type:"threads"}),D={id:d.threadTable.id,bot:d.threadTable.bot,label:d.threadTable.label,request:d.threadTable.request,status:d.threadTable.status,outcome:d.threadTable.outcome,pending:d.threadTable.pending,seen:d.threadTable.seen,inputTokens:d.threadTable.inputTokens,outputTokens:d.threadTable.outputTokens,contextTokens:d.threadTable.contextTokens,contextBudget:d.threadTable.contextBudget,createdAt:d.threadTable.createdAt,updatedAt:d.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await o.database.transaction(async e=>{let[r]=await e.insert(d.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(d.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(d.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:b.ROOM_THURSDAY,state:"queued"}),r});return C(),r}async function T(e,t){await o.database.update(d.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(d.threadTable.id,e)),C()}async function m(e){0!==e.length&&(await o.database.transaction(async t=>{await t.update(d.threadTable).set({seen:!0}).where((0,r.inArray)(d.threadTable.id,e)),await t.update(d.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(d.threadRelayTable.threadId,e))}),C())}async function y(e,t,a=null){(t.input||t.output||null!==a)&&(await o.database.update(d.threadTable).set({inputTokens:l.sql`${d.threadTable.inputTokens} + ${t.input}`,outputTokens:l.sql`${d.threadTable.outputTokens} + ${t.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(d.threadTable.id,e)),C())}async function g(e){let[t]=await o.database.select(D).from(d.threadTable).where((0,r.eq)(d.threadTable.id,e));if(!t)return null;let[a]=await v([t]);return a??null}async function w(e){let[t]=await o.database.select().from(d.threadTable).where((0,r.eq)(d.threadTable.id,e));return t??null}async function A(){let[e,t,a,l]=await Promise.all([o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.status,["running","waiting"])).orderBy((0,n.desc)(d.threadTable.updatedAt)),o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.status,["done","cancelled"])).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(s.INBOX_FINISHED),o.database.select(D).from(d.threadTable).where((0,r.and)((0,r.inArray)(d.threadTable.status,["done","cancelled"]),(0,r.eq)(d.threadTable.seen,!1))),o.database.select(D).from(d.threadTable).where((0,r.inArray)(d.threadTable.id,o.database.select({id:d.threadRelayTable.threadId}).from(d.threadRelayTable).where((0,r.eq)(d.threadRelayTable.accepted,!1))))]),i=[...new Map([...e,...t,...a,...l].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return v(i)}async function _(){let e=await o.database.select(D).from(d.threadTable).orderBy(l.sql`case when ${d.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,n.desc)(d.threadTable.updatedAt),(0,n.desc)(d.threadTable.id)).limit(s.THREAD_STATUS_LIMIT);return v(e)}async function I(e={}){let t=await o.database.select(D).from(d.threadTable).where(e.before?(0,r.lt)(d.threadTable.updatedAt,e.before):void 0).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(e.limit??s.PAGE_SIZE);return v(t)}async function M(e){return e.length?await o.database.select({id:d.threadTable.id,callId:d.threadTable.callId,label:d.threadTable.label,status:d.threadTable.status,outcome:d.threadTable.outcome}).from(d.threadTable).where((0,r.inArray)(d.threadTable.callId,e)).orderBy(d.threadTable.createdAt):[]}function x(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function S(e){let t=await o.database.select({content:d.threadMessageTable.content}).from(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.eq)(d.threadMessageTable.role,"assistant"))).orderBy(d.threadMessageTable.seq);return x(t.map(e=>e.content))}async function O(e){let t=e.trim();if(!t)return null;let a=await w(t);if(a)return a;let r=t.toLowerCase();return(await o.database.select().from(d.threadTable).orderBy((0,n.desc)(d.threadTable.updatedAt)).limit(20)).find(e=>e.label.toLowerCase()===r)??null}async function k(e,t,a){await o.database.insert(d.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[d.threadMessageTable.threadId,d.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),C()}async function q(e,t){t.length&&(await o.database.delete(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.inArray)(d.threadMessageTable.seq,t))),C())}async function v(e){if(0===e.length)return[];let t=await o.database.select().from(d.threadMessageTable).where((0,r.inArray)(d.threadMessageTable.threadId,e.map(e=>e.id))).orderBy(d.threadMessageTable.seq),a=e.map(e=>e.id),[n,l,i]=await Promise.all([o.database.select().from(d.threadWorkTable).where((0,r.inArray)(d.threadWorkTable.threadId,a)),o.database.select().from(d.threadDeliveryTable).where((0,r.and)((0,r.inArray)(d.threadDeliveryTable.threadId,a),(0,r.eq)(d.threadDeliveryTable.visible,!0))),o.database.select().from(d.threadRelayTable).where((0,r.and)((0,r.inArray)(d.threadRelayTable.threadId,a),(0,r.eq)(d.threadRelayTable.accepted,!1)))]),s=new Map(e.map(e=>[e.id,e.bot])),p=new Map(n.map(e=>[e.id,e.caller])),f=new Map;for(let e of t){let t=f.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,n=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof n?n:n.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(b.RESUME_CHECK)?t.slice(0,-b.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,h.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let n=[];return t.forEach((e,t)=>{if("text"===e.type){let l=e.text.trim();l&&n.push({...a,id:r(t),kind:"text",text:l});return}if("tool-result"===e.type)return void n.push(R(a,r(t),e));if("tool-call"!==e.type)return;let l=e.input??{};if(e.toolName===u.TOOL_NAMES.send_message){let i;n.push({...a,id:r(t),kind:"ask",callId:e.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===b.ROOM_THURSDAY.toLowerCase()?b.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind})}else e.toolName===u.TOOL_NAMES.bash?n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:(0,c.clip)(String(l.command??""),120),note:N(l)}):n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:function(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,c.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return N(a)??(0,c.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args&&"object"==typeof a.args?JSON.stringify(a.args):"";return(0,c.clip)([String(a.server??""),e,t].filter(Boolean).join(" "),120)}for(let e of L){let t=U(a,e);if(t)return(0,c.clip)(t,120)}for(let e of Object.keys(a)){let t=U(a,e);if(t)return(0,c.clip)(t,120)}return Object.keys(a).length?(0,c.clip)(JSON.stringify(a),120):""}(e.toolName,l),note:N(l),path:e.toolName===u.TOOL_NAMES.write_file?U(l,"path")??null:null})}),n}if("tool"===e.role){let t=[];return e.content.forEach((e,n)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(R(a,r(n),e))}),t}return[]}(e,(e.parent?p.get(e.parent):null)??s.get(e.threadId)??"")),f.set(e.threadId,t)}return e.map(e=>{let t=n.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==b.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:n,...l}=e;return{...l,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],auto:a?.auto===!0,messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:n},lines:t}}(e,f.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:l.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:i.filter(t=>t.threadId===e.id)}}})}let L=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],U=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function N(e){let t=U(e,"description");return t?(0,c.clip)(t,120):null}async function E(e,t){for(let a of(await o.database.select({role:d.threadMessageTable.role,content:d.threadMessageTable.content}).from(d.threadMessageTable).where((0,r.and)((0,r.eq)(d.threadMessageTable.threadId,e),(0,r.inArray)(d.threadMessageTable.role,["tool","assistant"])))))if("string"!=typeof a.content){for(let e of a.content)if("tool-result"===e.type&&e.toolCallId===t)return $(e.output,400,!0)}return null}function R(e,t,a){let r=$(a.output,5),n=r.flatMap(e=>"text"===e.type?[e.text]:[]),l=n.slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:l.map(e=>({type:"text",text:(0,c.clip)(e,200)})),more:n.length>l.length||r.length>n.length||l.some(e=>e.length>200)}}function $(e,t,a=!1){var r;if(null==e)return[];if("string"==typeof e)return B(e,t,a);if("object"!=typeof e)return B(String(e),t,a);switch(e.type){case"text":case"error-text":return B(String(e.value??""),t,a);case"json":case"error-json":return $(e.value,t,a);case"execution-denied":return B("Denied.",t,a);case"content":{if(!Array.isArray(e.value))return[];let r=[];for(let n of e.value){if("text"===n.type&&"string"==typeof n.text){r.push(...B(n.text,t,a));continue}let e=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(n);e&&r.push({type:"image",src:e})}return r}}return Array.isArray(e.sources)?e.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e})):"string"==typeof e.stdout?B(e.stdout||String(e.stderr??""),t,a):"string"==typeof e.answer?B(e.answer,t,a):B(a?(r=e,Array.isArray(r)?JSON.stringify(r,null,2):Object.entries(r).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
|
|
2
2
|
${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(e),t,a)}function B(e,t,a=!1){if(a){let a=e.split("\n"),r=a.slice(0,t);a.length>t&&r.push(`… ${a.length-t} more lines`);let n=r.join("\n").trimEnd();return n?[{type:"text",text:n}]:[]}return e.split("\n").map(e=>e.trim()).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e}))}e.s(["addThreadUsage",0,y,"deleteMessages",0,q,"findThread",0,w,"findThreadView",0,g,"insertThread",0,f,"listCallJobs",0,M,"listInboxThreads",0,A,"listThreadHistory",0,I,"listThreadOverview",0,_,"listWrittenPaths",0,S,"markSeen",0,m,"readToolResult",0,E,"resolveThread",0,O,"updateThread",0,T,"upsertMessage",0,k,"writtenPathsIn",0,x]),a()}catch(e){a(e)}},!1)];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=features_0-cnt0l._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[51083,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",delegate:"delegate",thread:"thread",send_message:"send_message",end_call:"end_call"}])},5509,e=>e.a(async(t,a)=>{try{var r=e.i(336763),n=e.i(396918),l=e.i(533102),i=e.i(232347),d=e.i(333925),s=e.i(876393),o=e.i(220376),u=e.i(51083),c=e.i(64774),h=e.i(951056),p=e.i(600690),b=t([s]);[s]=b.then?(await b)():b;let D=()=>i.appEvents.emit({type:"threads"}),L={id:o.threadTable.id,bot:o.threadTable.bot,label:o.threadTable.label,request:o.threadTable.request,status:o.threadTable.status,outcome:o.threadTable.outcome,pending:o.threadTable.pending,seen:o.threadTable.seen,inputTokens:o.threadTable.inputTokens,outputTokens:o.threadTable.outputTokens,contextTokens:o.threadTable.contextTokens,contextBudget:o.threadTable.contextBudget,createdAt:o.threadTable.createdAt,updatedAt:o.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await s.database.transaction(async e=>{let[r]=await e.insert(o.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(o.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(o.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:p.ROOM_THURSDAY,state:"queued"}),r});return D(),r}async function T(e,t){await s.database.update(o.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(o.threadTable.id,e)),D()}async function m(e){0!==e.length&&(await s.database.transaction(async t=>{await t.update(o.threadTable).set({seen:!0}).where((0,r.inArray)(o.threadTable.id,e)),await t.update(o.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(o.threadRelayTable.threadId,e))}),D())}async function y(e,t,a=null){(t.input||t.output||null!==a)&&(await s.database.update(o.threadTable).set({inputTokens:l.sql`${o.threadTable.inputTokens} + ${t.input}`,outputTokens:l.sql`${o.threadTable.outputTokens} + ${t.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(o.threadTable.id,e)),D())}async function g(e){let[t]=await s.database.select(L).from(o.threadTable).where((0,r.eq)(o.threadTable.id,e));if(!t)return null;let[a]=await N([t]);return a??null}async function w(e){let[t]=await s.database.select().from(o.threadTable).where((0,r.eq)(o.threadTable.id,e));return t??null}async function A(){let[e,t,a,l]=await Promise.all([s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.status,["running","waiting"])).orderBy((0,n.desc)(o.threadTable.updatedAt)),s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.status,["done","cancelled"])).orderBy((0,n.desc)(o.threadTable.updatedAt)).limit(d.INBOX_FINISHED),s.database.select(L).from(o.threadTable).where((0,r.and)((0,r.inArray)(o.threadTable.status,["done","cancelled"]),(0,r.eq)(o.threadTable.seen,!1))),s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.id,s.database.select({id:o.threadRelayTable.threadId}).from(o.threadRelayTable).where((0,r.eq)(o.threadRelayTable.accepted,!1))))]),i=[...new Map([...e,...t,...a,...l].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return N(i)}async function _(){let e=await s.database.select(L).from(o.threadTable).orderBy(l.sql`case when ${o.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,n.desc)(o.threadTable.updatedAt),(0,n.desc)(o.threadTable.id)).limit(d.THREAD_STATUS_LIMIT);return N(e)}async function x(){return(await s.database.select({id:o.threadTable.id}).from(o.threadTable).where((0,r.eq)(o.threadTable.status,"running"))).map(e=>e.id)}async function S(){return await s.database.select({id:o.threadTable.id,label:o.threadTable.label,status:o.threadTable.status,endedAt:o.threadTable.endedAt,updatedAt:o.threadTable.updatedAt}).from(o.threadTable)}async function O(){return(await s.database.select({id:o.threadTable.id,pending:o.threadTable.pending}).from(o.threadTable).where((0,r.eq)(o.threadTable.status,"waiting"))).flatMap(e=>e.pending?.auto?[e.id]:[])}function M(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function I(e){let t=await s.database.select({content:o.threadMessageTable.content}).from(o.threadMessageTable).where((0,r.and)((0,r.eq)(o.threadMessageTable.threadId,e),(0,r.eq)(o.threadMessageTable.role,"assistant"))).orderBy(o.threadMessageTable.seq);return M(t.map(e=>e.content))}async function k(e){let t=e.trim();if(!t)return null;let a=await w(t);if(a)return a;let r=t.toLowerCase();return(await s.database.select().from(o.threadTable).orderBy((0,n.desc)(o.threadTable.updatedAt)).limit(20)).find(e=>e.label.toLowerCase()===r)??null}async function q(e,t,a){await s.database.insert(o.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[o.threadMessageTable.threadId,o.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),D()}async function v(e,t){t.length&&(await s.database.delete(o.threadMessageTable).where((0,r.and)((0,r.eq)(o.threadMessageTable.threadId,e),(0,r.inArray)(o.threadMessageTable.seq,t))),D())}async function N(e){if(0===e.length)return[];let t=await s.database.select().from(o.threadMessageTable).where((0,r.inArray)(o.threadMessageTable.threadId,e.map(e=>e.id))).orderBy(o.threadMessageTable.seq),a=e.map(e=>e.id),[n,l,i]=await Promise.all([s.database.select().from(o.threadWorkTable).where((0,r.inArray)(o.threadWorkTable.threadId,a)),s.database.select().from(o.threadDeliveryTable).where((0,r.and)((0,r.inArray)(o.threadDeliveryTable.threadId,a),(0,r.eq)(o.threadDeliveryTable.visible,!0))),s.database.select().from(o.threadRelayTable).where((0,r.and)((0,r.inArray)(o.threadRelayTable.threadId,a),(0,r.eq)(o.threadRelayTable.accepted,!1)))]),d=new Map(e.map(e=>[e.id,e.bot])),b=new Map(n.map(e=>[e.id,e.caller])),f=new Map;for(let e of t){let t=f.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,n=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof n?n:n.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(p.RESUME_CHECK)?t.slice(0,-p.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,h.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let n=[];return t.forEach((e,t)=>{if("text"===e.type){let l=e.text.trim();l&&n.push({...a,id:r(t),kind:"text",text:l});return}if("tool-result"===e.type)return void n.push(R(a,r(t),e));if("tool-call"!==e.type)return;let l=e.input??{};if(e.toolName===u.TOOL_NAMES.send_message){let i;n.push({...a,id:r(t),kind:"ask",callId:e.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===p.ROOM_THURSDAY.toLowerCase()?p.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind})}else e.toolName===u.TOOL_NAMES.bash?n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:(0,c.clip)(String(l.command??""),120),note:E(l)}):n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:function(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,c.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return E(a)??(0,c.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args&&"object"==typeof a.args?JSON.stringify(a.args):"";return(0,c.clip)([String(a.server??""),e,t].filter(Boolean).join(" "),120)}for(let e of U){let t=j(a,e);if(t)return(0,c.clip)(t,120)}for(let e of Object.keys(a)){let t=j(a,e);if(t)return(0,c.clip)(t,120)}return Object.keys(a).length?(0,c.clip)(JSON.stringify(a),120):""}(e.toolName,l),note:E(l),path:e.toolName===u.TOOL_NAMES.write_file?j(l,"path")??null:null})}),n}if("tool"===e.role){let t=[];return e.content.forEach((e,n)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(R(a,r(n),e))}),t}return[]}(e,(e.parent?b.get(e.parent):null)??d.get(e.threadId)??"")),f.set(e.threadId,t)}return e.map(e=>{let t=n.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==p.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:n,...l}=e;return{...l,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],auto:a?.auto===!0,messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:n},lines:t}}(e,f.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:l.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:i.filter(t=>t.threadId===e.id)}}})}let U=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],j=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function E(e){let t=j(e,"description");return t?(0,c.clip)(t,120):null}function R(e,t,a){let r=function e(t,a,r=!1){var n;if(null==t)return[];if("string"==typeof t)return $(t,a,r);if("object"!=typeof t)return $(String(t),a,r);switch(t.type){case"text":case"error-text":return $(String(t.value??""),a,r);case"json":case"error-json":return e(t.value,a,r);case"execution-denied":return $("Denied.",a,r);case"content":{if(!Array.isArray(t.value))return[];let e=[];for(let n of t.value){if("text"===n.type&&"string"==typeof n.text){e.push(...$(n.text,a,r));continue}let t=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(n);t&&e.push({type:"image",src:t})}return e}}return Array.isArray(t.sources)?t.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,a).map(e=>({type:"text",text:e})):"string"==typeof t.stdout?$(t.stdout||String(t.stderr??""),a,r):"string"==typeof t.answer?$(t.answer,a,r):$(r?(n=t,Array.isArray(n)?JSON.stringify(n,null,2):Object.entries(n).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
|
|
1
|
+
module.exports=[51083,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",delegate:"delegate",thread:"thread",send_message:"send_message",end_call:"end_call",emote:"emote"}])},5509,e=>e.a(async(t,a)=>{try{var r=e.i(336763),n=e.i(396918),l=e.i(533102),i=e.i(232347),d=e.i(333925),s=e.i(876393),o=e.i(220376),u=e.i(51083),c=e.i(64774),h=e.i(951056),p=e.i(600690),b=t([s]);[s]=b.then?(await b)():b;let D=()=>i.appEvents.emit({type:"threads"}),L={id:o.threadTable.id,bot:o.threadTable.bot,label:o.threadTable.label,request:o.threadTable.request,status:o.threadTable.status,outcome:o.threadTable.outcome,pending:o.threadTable.pending,seen:o.threadTable.seen,inputTokens:o.threadTable.inputTokens,outputTokens:o.threadTable.outputTokens,contextTokens:o.threadTable.contextTokens,contextBudget:o.threadTable.contextBudget,createdAt:o.threadTable.createdAt,updatedAt:o.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await s.database.transaction(async e=>{let[r]=await e.insert(o.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(o.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(o.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:p.ROOM_THURSDAY,state:"queued"}),r});return D(),r}async function T(e,t){await s.database.update(o.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(o.threadTable.id,e)),D()}async function m(e){0!==e.length&&(await s.database.transaction(async t=>{await t.update(o.threadTable).set({seen:!0}).where((0,r.inArray)(o.threadTable.id,e)),await t.update(o.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(o.threadRelayTable.threadId,e))}),D())}async function y(e,t,a=null){(t.input||t.output||null!==a)&&(await s.database.update(o.threadTable).set({inputTokens:l.sql`${o.threadTable.inputTokens} + ${t.input}`,outputTokens:l.sql`${o.threadTable.outputTokens} + ${t.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(o.threadTable.id,e)),D())}async function g(e){let[t]=await s.database.select(L).from(o.threadTable).where((0,r.eq)(o.threadTable.id,e));if(!t)return null;let[a]=await N([t]);return a??null}async function w(e){let[t]=await s.database.select().from(o.threadTable).where((0,r.eq)(o.threadTable.id,e));return t??null}async function A(){let[e,t,a,l]=await Promise.all([s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.status,["running","waiting"])).orderBy((0,n.desc)(o.threadTable.updatedAt)),s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.status,["done","cancelled"])).orderBy((0,n.desc)(o.threadTable.updatedAt)).limit(d.INBOX_FINISHED),s.database.select(L).from(o.threadTable).where((0,r.and)((0,r.inArray)(o.threadTable.status,["done","cancelled"]),(0,r.eq)(o.threadTable.seen,!1))),s.database.select(L).from(o.threadTable).where((0,r.inArray)(o.threadTable.id,s.database.select({id:o.threadRelayTable.threadId}).from(o.threadRelayTable).where((0,r.eq)(o.threadRelayTable.accepted,!1))))]),i=[...new Map([...e,...t,...a,...l].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return N(i)}async function _(){let e=await s.database.select(L).from(o.threadTable).orderBy(l.sql`case when ${o.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,n.desc)(o.threadTable.updatedAt),(0,n.desc)(o.threadTable.id)).limit(d.THREAD_STATUS_LIMIT);return N(e)}async function x(){return(await s.database.select({id:o.threadTable.id}).from(o.threadTable).where((0,r.eq)(o.threadTable.status,"running"))).map(e=>e.id)}async function S(){return await s.database.select({id:o.threadTable.id,label:o.threadTable.label,status:o.threadTable.status,endedAt:o.threadTable.endedAt,updatedAt:o.threadTable.updatedAt}).from(o.threadTable)}async function O(){return(await s.database.select({id:o.threadTable.id,pending:o.threadTable.pending}).from(o.threadTable).where((0,r.eq)(o.threadTable.status,"waiting"))).flatMap(e=>e.pending?.auto?[e.id]:[])}function M(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function I(e){let t=await s.database.select({content:o.threadMessageTable.content}).from(o.threadMessageTable).where((0,r.and)((0,r.eq)(o.threadMessageTable.threadId,e),(0,r.eq)(o.threadMessageTable.role,"assistant"))).orderBy(o.threadMessageTable.seq);return M(t.map(e=>e.content))}async function k(e){let t=e.trim();if(!t)return null;let a=await w(t);if(a)return a;let r=t.toLowerCase();return(await s.database.select().from(o.threadTable).orderBy((0,n.desc)(o.threadTable.updatedAt)).limit(20)).find(e=>e.label.toLowerCase()===r)??null}async function q(e,t,a){await s.database.insert(o.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[o.threadMessageTable.threadId,o.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),D()}async function v(e,t){t.length&&(await s.database.delete(o.threadMessageTable).where((0,r.and)((0,r.eq)(o.threadMessageTable.threadId,e),(0,r.inArray)(o.threadMessageTable.seq,t))),D())}async function N(e){if(0===e.length)return[];let t=await s.database.select().from(o.threadMessageTable).where((0,r.inArray)(o.threadMessageTable.threadId,e.map(e=>e.id))).orderBy(o.threadMessageTable.seq),a=e.map(e=>e.id),[n,l,i]=await Promise.all([s.database.select().from(o.threadWorkTable).where((0,r.inArray)(o.threadWorkTable.threadId,a)),s.database.select().from(o.threadDeliveryTable).where((0,r.and)((0,r.inArray)(o.threadDeliveryTable.threadId,a),(0,r.eq)(o.threadDeliveryTable.visible,!0))),s.database.select().from(o.threadRelayTable).where((0,r.and)((0,r.inArray)(o.threadRelayTable.threadId,a),(0,r.eq)(o.threadRelayTable.accepted,!1)))]),d=new Map(e.map(e=>[e.id,e.bot])),b=new Map(n.map(e=>[e.id,e.caller])),f=new Map;for(let e of t){let t=f.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,n=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof n?n:n.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(p.RESUME_CHECK)?t.slice(0,-p.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,h.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let n=[];return t.forEach((e,t)=>{if("text"===e.type){let l=e.text.trim();l&&n.push({...a,id:r(t),kind:"text",text:l});return}if("tool-result"===e.type)return void n.push(R(a,r(t),e));if("tool-call"!==e.type)return;let l=e.input??{};if(e.toolName===u.TOOL_NAMES.send_message){let i;n.push({...a,id:r(t),kind:"ask",callId:e.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===p.ROOM_THURSDAY.toLowerCase()?p.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind})}else e.toolName===u.TOOL_NAMES.bash?n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:(0,c.clip)(String(l.command??""),120),note:E(l)}):n.push({...a,id:r(t),kind:"tool",callId:e.toolCallId,name:e.toolName,input:function(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,c.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return E(a)??(0,c.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args&&"object"==typeof a.args?JSON.stringify(a.args):"";return(0,c.clip)([String(a.server??""),e,t].filter(Boolean).join(" "),120)}for(let e of U){let t=j(a,e);if(t)return(0,c.clip)(t,120)}for(let e of Object.keys(a)){let t=j(a,e);if(t)return(0,c.clip)(t,120)}return Object.keys(a).length?(0,c.clip)(JSON.stringify(a),120):""}(e.toolName,l),note:E(l),path:e.toolName===u.TOOL_NAMES.write_file?j(l,"path")??null:null})}),n}if("tool"===e.role){let t=[];return e.content.forEach((e,n)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(R(a,r(n),e))}),t}return[]}(e,(e.parent?b.get(e.parent):null)??d.get(e.threadId)??"")),f.set(e.threadId,t)}return e.map(e=>{let t=n.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==p.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:n,...l}=e;return{...l,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],auto:a?.auto===!0,messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:n},lines:t}}(e,f.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:l.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:i.filter(t=>t.threadId===e.id)}}})}let U=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],j=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function E(e){let t=j(e,"description");return t?(0,c.clip)(t,120):null}function R(e,t,a){let r=function e(t,a,r=!1){var n;if(null==t)return[];if("string"==typeof t)return $(t,a,r);if("object"!=typeof t)return $(String(t),a,r);switch(t.type){case"text":case"error-text":return $(String(t.value??""),a,r);case"json":case"error-json":return e(t.value,a,r);case"execution-denied":return $("Denied.",a,r);case"content":{if(!Array.isArray(t.value))return[];let e=[];for(let n of t.value){if("text"===n.type&&"string"==typeof n.text){e.push(...$(n.text,a,r));continue}let t=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(n);t&&e.push({type:"image",src:t})}return e}}return Array.isArray(t.sources)?t.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,a).map(e=>({type:"text",text:e})):"string"==typeof t.stdout?$(t.stdout||String(t.stderr??""),a,r):"string"==typeof t.answer?$(t.answer,a,r):$(r?(n=t,Array.isArray(n)?JSON.stringify(n,null,2):Object.entries(n).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
|
|
2
2
|
${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(t),a,r)}(a.output,5),n=r.flatMap(e=>"text"===e.type?[e.text]:[]),l=n.slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:l.map(e=>({type:"text",text:(0,c.clip)(e,200)})),more:n.length>l.length||r.length>n.length||l.some(e=>e.length>200)}}function $(e,t,a=!1){if(a){let a=e.split("\n"),r=a.slice(0,t);a.length>t&&r.push(`… ${a.length-t} more lines`);let n=r.join("\n").trimEnd();return n?[{type:"text",text:n}]:[]}return e.split("\n").map(e=>e.trim()).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e}))}e.s(["addThreadUsage",0,y,"deleteMessages",0,v,"findThread",0,w,"findThreadView",0,g,"insertThread",0,f,"listAutoStoppedThreads",0,O,"listInboxThreads",0,A,"listRunningThreadIds",0,x,"listThreadFolders",0,S,"listThreadOverview",0,_,"listWrittenPaths",0,I,"markSeen",0,m,"resolveThread",0,k,"updateThread",0,T,"upsertMessage",0,q,"writtenPathsIn",0,M]),a()}catch(e){a(e)}},!1)];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=features_0hdaci0._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[70729,a=>{a.v(a=>Promise.resolve().then(()=>a(666680)))},133300,a=>{a.v(a=>Promise.resolve().then(()=>a(203469)))},276307,a=>{a.v(a=>Promise.resolve().then(()=>a(221214)))},763543,a=>{a.v(a=>Promise.resolve().then(()=>a(674986)))},951922,a=>{a.v(a=>Promise.resolve().then(()=>a(839430)))},343064,a=>{a.v(a=>Promise.resolve().then(()=>a(344853)))},682672,a=>{a.v(a=>Promise.resolve().then(()=>a(72918)))},966249,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_@vercel_oidc_dist_token_16gdpgb.js"].map(b=>a.l(b))).then(()=>b(860544)))},832030,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_readline_1u65a-m._.js","server/chunks/ssr/node_modules_consola_dist_chunks_prompt_mjs_1j4x-_j._.js"].map(b=>a.l(b))).then(()=>b(322479)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0-e011f._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},59639,(a,b,c)=>{b.exports=a.x("node:process",()=>require("node:process"))},287702,a=>{"use strict";process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),process.env.THURSDAY_HOME?.trim()||process.cwd(),process.env.THURSDAY_URL?.trim()||process.env.PORT?.trim();let b=".ai-workspace",c={workspace:b,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",skills:{default:"skills",custom:`${b}/.agents/skills`}};a.s(["APP_NAME",0,"Thursday","ARTIFACT_VIEW",0,{rows:200,setFiles:120},"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BROWSER_SKILL",0,"browser","CALL_BACK",0,{ringMs:3e4},"CALL_END",0,{quietMs:600,unsaidMs:2e3,maxMs:8e3},"CALL_HISTORY_PAGE",0,10,"CALL_IDLE",0,{hangUpMs:3e4,warnMs:1e4},"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3},"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3},"PAGE_SIZE",0,50,"PATHS",0,c,"PROMPT_CROWDED",0,{bots:10,skills:20},"ROOM_KEEP_READ_MS",0,6e5,"STUDIO_SERVER",0,"studio","WORKSPACE_VIEW",0,{rows:200,textMax:524288,elementMax:0x3200000}])},992025,a=>{a.v(a=>Promise.resolve().then(()=>a(948986)))},929490,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1rn2r0n._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SVP7TREG_mjs_03r5m21._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0lct0v1._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(161868)))},969267,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1vq-mfk._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1feyqvf._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_cytoscape_dist_cytoscape_esm_mjs_0arohj6._.js","server/chunks/ssr/node_modules_11trqmi._.js"].map(b=>a.l(b))).then(()=>b(626047)))},784520,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0qwth-_._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-I7D4REHJ_mjs_0qg1lr5._.js"].map(b=>a.l(b))).then(()=>b(155638)))},613707,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-F27PBJKO_mjs_0ms0zmb._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-7LVT6UL2_mjs_06bhe3-._.js"].map(b=>a.l(b))).then(()=>b(557384)))},53467,a=>{"use strict";var b=a.i(261234),c=a.i(539110);a.i(975930);var d=a.i(671731),e=(0,c.__name)(a=>{let{securityLevel:c}=(0,b.getConfig2)(),e=(0,d.select)("body");if("sandbox"===c){let b=(0,d.select)(`#i${a}`),c=b.node()?.contentDocument??document;e=(0,d.select)(c.body)}return e.select(`#${a}`)},"selectSvgElement");a.s(["selectSvgElement",0,e])},882458,a=>{"use strict";var b=a.i(416635),c=a.i(43429),d=a.i(428212),e=a.i(916573),f=a.i(887370),g=a.i(261234),h=a.i(875117),i=a.i(539110),j={common:g.common_default,getConfig:g.getConfig,insertCluster:b.insertCluster,insertEdge:c.insertEdge,insertEdgeLabel:c.insertEdgeLabel,insertMarkers:c.markers_default,insertNode:d.insertNode,interpolateToCurve:f.interpolateToCurve,labelHelper:e.labelHelper,log:h.log,positionEdgeLabel:c.positionEdgeLabel},k={},l=(0,i.__name)(a=>{for(let b of a)k[b.name]=b},"registerLayoutLoaders");(0,i.__name)(()=>{l([{name:"dagre",loader:(0,i.__name)(async()=>await a.A(390118),"loader")},{name:"swimlane",loader:(0,i.__name)(async()=>await a.A(860094),"loader")},{name:"cose-bilkent",loader:(0,i.__name)(async()=>await a.A(989520),"loader")}])},"registerDefaultLayoutLoaders")();var m=(0,i.__name)(async(a,b)=>{if(!(a.layoutAlgorithm in k))throw Error(`Unknown layout algorithm: ${a.layoutAlgorithm}`);if(a.diagramId)for(let b of a.nodes){let c=b.domId||b.id;b.domId=`${a.diagramId}-${c}`}let c=k[a.layoutAlgorithm],d=await c.loader(),{theme:e,themeVariables:f}=a.config,{useGradient:g,gradientStart:h,gradientStop:i}=f,l=b.attr("id");if(b.append("defs").append("filter").attr("id",`${l}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${e?.includes("dark")?"#FFFFFF":"#000000"}`),b.append("defs").append("filter").attr("id",`${l}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${e?.includes("dark")?"#FFFFFF":"#000000"}`),g){let a=b.append("linearGradient").attr("id",b.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");a.append("svg:stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),a.append("svg:stop").attr("offset","100%").attr("stop-color",i).attr("stop-opacity",1)}return d.render(a,b,j,{algorithm:c.algorithm})},"render"),n=(0,i.__name)((a="",{fallback:b="dagre"}={})=>{if(a in k)return a;if(b in k)return h.log.warn(`Layout algorithm ${a} is not registered. Using ${b} as fallback.`),b;throw Error(`Both layout algorithms ${a} and ${b} are not registered.`)},"getRegisteredLayoutAlgorithm");a.s(["getRegisteredLayoutAlgorithm",0,n,"registerLayoutLoaders",0,l,"render",0,m])},854712,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1v463pe._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TICWLB2K_mjs_1t97mh7._.js"].map(b=>a.l(b))).then(()=>b(336243)))},892569,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_0thh8pk._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TICWLB2K_mjs_1t97mh7._.js"].map(b=>a.l(b))).then(()=>b(538994)))},989520,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1nl12mt._.js","server/chunks/ssr/node_modules_cytoscape_dist_cytoscape_esm_mjs_0arohj6._.js"].map(b=>a.l(b))).then(()=>b(127273)))},388833,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1m71ta-._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_18pinup._.js"].map(b=>a.l(b))).then(()=>b(517237)))},390118,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_dagre-GXQ25YYZ_mjs_0k_lz8d._.js","server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_0g66msq.js"].map(b=>a.l(b))).then(()=>b(920028)))},831868,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1hf461g._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0eji647._.js"].map(b=>a.l(b))).then(()=>b(767190)))},840309,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0od6jwr._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_18pinup._.js"].map(b=>a.l(b))).then(()=>b(464445)))},835410,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_02ai7br._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_18pinup._.js"].map(b=>a.l(b))).then(()=>b(617803)))},728413,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1n93n-g._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_diagram-VX7I27RA_mjs_0dl8gzm._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_13hksv_._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(217755)))},992149,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0wdupfz._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_18pinup._.js"].map(b=>a.l(b))).then(()=>b(752425)))},70220,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1yajbl6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SVP7TREG_mjs_03r5m21._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0lct0v1._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(137554)))},595386,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0il0v7d._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-RLTQ6QDP_mjs_18g60i7._.js"].map(b=>a.l(b))).then(()=>b(239909)))},707604,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0ql0igl._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SHT3W25Y_mjs_00p5j42._.js"].map(b=>a.l(b))).then(()=>b(1258)))},598518,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1831lye._.js","server/chunks/ssr/node_modules_1_d0q_7._.js"].map(b=>a.l(b))).then(()=>b(722966)))},126571,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0w1z7kz._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0dlpxwr._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-WWUBYQGX_mjs_0g15hiw._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(349834)))},814636,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1vzyw1t._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1ok0411._.js"].map(b=>a.l(b))).then(()=>b(525902)))},147136,a=>{a.v(b=>Promise.all(["server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_ishikawaDiagram-5VMMS53U_mjs_05o2e4d._.js"].map(b=>a.l(b))).then(()=>b(206340)))},719552,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_201yvda._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-3NMN7TZE_mjs_16ehrbl._.js"].map(b=>a.l(b))).then(()=>b(450754)))},653408,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-5VM5RSS4_mjs_0tg6kya._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-UXKFOSKX_mjs_1uiqd5g._.js"].map(b=>a.l(b))).then(()=>b(301315)))},165250,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1turj0n._.js","server/chunks/ssr/1daa_mermaid_dist_chunks_mermaid_core_mindmap-definition-YA3MSWOX_mjs_19k8byt._.js"].map(b=>a.l(b))).then(()=>b(790158)))},325455,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1fv-_si._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SVP7TREG_mjs_03r5m21._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0lct0v1._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(595628)))},934650,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0s6piq3._.js","server/chunks/ssr/node_modules_1rg7lj4._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1sgfrma._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(748116)))},389088,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_111pp7w._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-AXDQQJYC_mjs_0h4a9wq._.js"].map(b=>a.l(b))).then(()=>b(888630)))},523431,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1w359w4._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SVP7TREG_mjs_03r5m21._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0lct0v1._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(846881)))},458290,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1turj0n._.js","server/chunks/ssr/1daa_mermaid_dist_chunks_mermaid_core_requirementDiagram-BXWQKSXE_mjs_0kwiv6n._.js"].map(b=>a.l(b))).then(()=>b(443250)))},215730,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_d3-scale_src_1tr1qwb._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-P5KCCOFB_mjs_187yyta._.js"].map(b=>a.l(b))).then(()=>b(656950)))},295724,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1o1kg4c._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-WJ2MYXX4_mjs_1n01m3a._.js"].map(b=>a.l(b))).then(()=>b(571979)))},482052,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_sizeCapture-INFHLROL_mjs_179zv_p._.js"].map(b=>a.l(b))).then(()=>b(865684)))},438231,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1rxlz7e._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-D77RDMKH_mjs_1mer5fv._.js","server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_0g66msq.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-IMKFNOWR_mjs_0vdq1-l._.js"].map(b=>a.l(b))).then(()=>b(168538)))},991687,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_0jkhu0x._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-IMKFNOWR_mjs_0vdq1-l._.js"].map(b=>a.l(b))).then(()=>b(472309)))},860094,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_swimlanes-42K2YHIH_mjs_0scuk32._.js"].map(b=>a.l(b))).then(()=>b(827033)))},819980,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_04f6p6a._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-SHT3W25Y_mjs_00p5j42._.js"].map(b=>a.l(b))).then(()=>b(1471)))},623969,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_d3-shape_src_arc_1-w13bo.js","server/chunks/ssr/1daa_mermaid_dist_chunks_mermaid_core_timeline-definition-24CTP7MA_mjs_10dmaxt._.js"].map(b=>a.l(b))).then(()=>b(301394)))},788557,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_vennDiagram-4TSXK5OY_mjs_0anqu7y._.js"].map(b=>a.l(b))).then(()=>b(509170)))},925161,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_1vq-mfk._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_wardleyDiagram-VM6X3IG4_mjs_0kh3fjb._.js","server/chunks/ssr/node_modules_@mermaid-js_parser_dist_17wxxyr._.js","server/chunks/ssr/1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-FOHPRMQF_mjs_0ybwfeq._.js"].map(b=>a.l(b))).then(()=>b(914844)))},506751,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0xht9wg._.js","server/chunks/ssr/1q96_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-S5SC5T6Z_mjs_08t5e44._.js"].map(b=>a.l(b))).then(()=>b(176947)))},236914,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_streamdown_dist_highlighted-body-KPVGNVTW_1fnf894.js"].map(b=>a.l(b))).then(()=>b(391282)))},172487,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_streamdown_dist_mermaid-HWGCJPDP_093xi20.js"].map(b=>a.l(b))).then(()=>b(853409)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0pd8yr7._.js.map
|