pi-roundtable-web 0.25.0 → 0.26.1
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/CHANGELOG.md +54 -0
- package/README.md +165 -12
- package/dist/account-zk4efb87.css +102 -0
- package/dist/chunk-account-ghq105t4.js +1 -0
- package/dist/chunk-action-menu-me0g9qsc.js +1 -0
- package/dist/{chunk-agent-0pm9p3nn.js → chunk-agent-rdv7ekrt.js} +1 -1
- package/dist/chunk-arranged-rooms-81rqhx9x.js +1 -0
- package/dist/chunk-character-creator-bd426yjw.js +1 -0
- package/dist/chunk-codeeditor-ajhgd33t.js +2 -0
- package/dist/chunk-confirm-p3mts8mx.js +1 -0
- package/dist/{chunk-connectors-anhghy3k.js → chunk-connectors-bkv3xn83.js} +1 -1
- package/dist/chunk-conversations-0e0vbxwr.js +1 -0
- package/dist/{chunk-drag-q4fx9b22.js → chunk-drag-peyb8t0k.js} +1 -1
- package/dist/{chunk-entry-he1embgp.js → chunk-entry-mv7q8br0.js} +1 -1
- package/dist/chunk-folder-list-era3tksh.js +1 -0
- package/dist/chunk-folds-hvws0bd5.js +1 -0
- package/dist/chunk-gate-hc7dd0fx.js +1 -0
- package/dist/chunk-group-scene-dkbpmbh5.js +1 -0
- package/dist/chunk-group-table-fqmxgdfw.js +1 -0
- package/dist/chunk-host-icons-4xde9ntk.js +1 -0
- package/dist/chunk-host-picture-014yzk20.js +1 -0
- package/dist/chunk-host-state-t56e5sdy.js +1 -0
- package/dist/chunk-host-ui-p1zy9nmp.js +1 -0
- package/dist/chunk-index-0fmmvgee.js +2 -0
- package/dist/chunk-index-0q15ysrb.js +1 -0
- package/dist/chunk-index-0xh24y25.js +2 -0
- package/dist/chunk-index-2yebd9tb.js +426 -0
- package/dist/chunk-index-4t0r3t3b.js +2 -0
- package/dist/chunk-index-5yzfrf7b.js +138 -0
- package/dist/{chunk-index-d5abvq7v.js → chunk-index-6twb7ccd.js} +2 -2
- package/dist/chunk-index-73gh7kgr.js +920 -0
- package/dist/chunk-index-7xffskfa.js +8 -0
- package/dist/chunk-index-aqw7cy5j.js +1 -0
- package/dist/chunk-index-b6ca02e8.js +2 -0
- package/dist/chunk-index-b8nvhcx5.js +2 -0
- package/dist/{chunk-index-bvfqjh77.js → chunk-index-cvbdf2ca.js} +2 -2
- package/dist/chunk-index-czdketze.js +2 -0
- package/dist/{chunk-index-9jqcskb4.js → chunk-index-dt9775ka.js} +5 -5
- package/dist/chunk-index-eg55mqqe.js +1 -0
- package/dist/chunk-index-gr6e0hse.js +2 -0
- package/dist/chunk-index-gyary7np.js +13 -0
- package/dist/chunk-index-j214tczc.js +1 -0
- package/dist/chunk-index-jd6632ef.js +2 -0
- package/dist/chunk-index-jw7dtshr.js +2 -0
- package/dist/{chunk-index-krtk6nn2.js → chunk-index-k7t14rwa.js} +2 -2
- package/dist/chunk-index-kwcx62wb.js +4 -0
- package/dist/chunk-index-m7fvw92f.js +2 -0
- package/dist/chunk-index-mmg788a1.js +2 -0
- package/dist/chunk-index-mq0dacwr.js +2 -0
- package/dist/chunk-index-p53ak25v.js +2 -0
- package/dist/{chunk-index-27qca4mr.js → chunk-index-pk1yxkv4.js} +2 -2
- package/dist/{chunk-index-9b1kt7qw.css → chunk-index-rbcz9jd4.css} +1 -1
- package/dist/{chunk-index-s681nny9.js → chunk-index-rmxbdmn2.js} +2 -2
- package/dist/chunk-index-rnxj3z8k.js +2 -0
- package/dist/chunk-index-snzzfhk3.js +2 -0
- package/dist/chunk-index-v3bmr0nw.js +2 -0
- package/dist/chunk-index-vcyzwtk2.js +2 -0
- package/dist/{chunk-index-zfd00hwb.js → chunk-index-w2j3njb6.js} +2 -2
- package/dist/chunk-index-w31c4yjv.js +2 -0
- package/dist/chunk-index-wrm8w165.js +2 -0
- package/dist/chunk-index-xh0mg9cw.js +2 -0
- package/dist/chunk-index-ybtvvx85.js +2 -0
- package/dist/chunk-index-yzsgsvnp.js +2 -0
- package/dist/{chunk-index-18gxy79n.js → chunk-index-z9x4cnzf.js} +2 -2
- package/dist/chunk-index-zrvg23jd.js +2 -0
- package/dist/chunk-index-zynq0b0w.js +50 -0
- package/dist/chunk-lang-css-88v3hp3d.js +1 -0
- package/dist/{chunk-lang-dockerfile-d5mzxs60.js → chunk-lang-dockerfile-k728ewsf.js} +1 -1
- package/dist/{chunk-lang-go-830fmhba.js → chunk-lang-go-wjwgay4v.js} +3 -3
- package/dist/chunk-lang-html-07d47es4.js +1 -0
- package/dist/chunk-lang-javascript-fmhhgzwd.js +1 -0
- package/dist/{chunk-lang-json-5eaarz7j.js → chunk-lang-json-7gd89mvs.js} +1 -1
- package/dist/chunk-lang-markdown-b6qbe8bt.js +6 -0
- package/dist/{chunk-lang-python-fjw84w10.js → chunk-lang-python-3v56y31b.js} +2 -2
- package/dist/{chunk-lang-rust-5rbp2zdk.js → chunk-lang-rust-kh0z74d1.js} +1 -1
- package/dist/{chunk-lang-shell-vzagpym3.js → chunk-lang-shell-9zv0zvbx.js} +1 -1
- package/dist/{chunk-lang-sql-0c2w9c2y.js → chunk-lang-sql-yw6bf3t7.js} +2 -2
- package/dist/{chunk-lang-toml-yr9fv6eb.js → chunk-lang-toml-tg1r96nq.js} +1 -1
- package/dist/chunk-lang-typescript-etjjvr2g.js +1 -0
- package/dist/{chunk-lang-xml-eze08p42.js → chunk-lang-xml-ev1mndd4.js} +1 -1
- package/dist/{chunk-lang-yaml-c4b6ft3y.js → chunk-lang-yaml-fz5qpb3r.js} +1 -1
- package/dist/chunk-layout-actions-48ecgtkg.js +1 -0
- package/dist/{chunk-menu-items-jrwxycr1.js → chunk-menu-items-1epy3h0t.js} +2 -2
- package/dist/chunk-mode-toggle-fxmfxsa4.js +1 -0
- package/dist/chunk-note-row-kd0fy7ee.js +75 -0
- package/dist/chunk-notes-yb8f057c.js +1 -0
- package/dist/chunk-notice-bell-wr4f1rph.js +1 -0
- package/dist/chunk-notices-x07da5bb.js +1 -0
- package/dist/chunk-onboarding-csrkbh9z.js +1 -0
- package/dist/chunk-overview-avc2d30t.js +1 -0
- package/dist/chunk-palette-9nhp95bz.js +1 -0
- package/dist/chunk-placement-items-q694dpgk.js +1 -0
- package/dist/chunk-profile-6qemf3m7.js +1 -0
- package/dist/chunk-prompt-history-7enzp2p3.js +1 -0
- package/dist/chunk-prompts-nv6mrn0q.js +1 -0
- package/dist/chunk-room-confirms-zz7n61y7.js +1 -0
- package/dist/chunk-room-menu-rr6nzap1.js +1 -0
- package/dist/chunk-rooms-menu-button-zbtwj47d.js +1 -0
- package/dist/chunk-schedules-rw57nr0m.js +1 -0
- package/dist/{chunk-seat-menu-jv4s7hmj.js → chunk-seat-menu-ys5v9abz.js} +1 -1
- package/dist/chunk-sheet-hosts-jhvaacst.js +1 -0
- package/dist/chunk-skill-editor-sz8an8qr.js +8 -0
- package/dist/chunk-skills-tnr1h16h.js +1 -0
- package/dist/chunk-switcher-list-17enhrse.js +1 -0
- package/dist/chunk-tab-dot-r6brdbmw.js +1 -0
- package/dist/chunk-table-r12cja6p.js +1 -0
- package/dist/chunk-table-seats-g3t392zz.js +1 -0
- package/dist/{chunk-table2d-4sje1fr0.js → chunk-table2d-p3ezsdcj.js} +1 -1
- package/dist/{chunk-table3d-h64skazp.js → chunk-table3d-4x2n2b00.js} +23 -23
- package/dist/chunk-thread-actions-qc6ezkha.js +1 -0
- package/dist/chunk-transcript-n2s6dher.js +1 -0
- package/dist/chunk-where-f3scdydc.js +1 -0
- package/dist/chunk-workspace-xs023bxm.js +1 -0
- package/dist/chunk-zh-tw-efvmk3fd.js +1 -0
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +5 -4
- package/src/api-types.ts +356 -4
- package/src/app/app.ts +201 -32
- package/src/app/desk.ts +47 -22
- package/src/app/files.ts +73 -7
- package/src/app/presence.ts +2 -2
- package/src/app/protocol.ts +63 -1
- package/src/app/room-log.ts +153 -14
- package/src/app/rooms.ts +39 -0
- package/src/app/routes.ts +168 -28
- package/src/app/socket.ts +349 -81
- package/src/app/sockets.ts +108 -20
- package/src/app/surface.ts +72 -36
- package/src/app/threads.ts +31 -2
- package/src/app/uploads.ts +33 -7
- package/src/auth/authenticator.ts +77 -8
- package/src/auth/login-page.ts +4 -2
- package/src/auth/next.ts +52 -0
- package/src/auth/oidc-pages.ts +62 -0
- package/src/auth/oidc.ts +649 -0
- package/src/auth/sessions.ts +193 -0
- package/src/authz.ts +173 -0
- package/src/console-api.ts +122 -25
- package/src/console-server.ts +102 -12
- package/src/gate.ts +90 -0
- package/src/host/access.ts +161 -0
- package/src/host/cards.ts +112 -0
- package/src/host/context.ts +188 -0
- package/src/host/forms.ts +240 -0
- package/src/host/frames.ts +349 -0
- package/src/host/host-app.ts +178 -0
- package/src/host/host-context.ts +49 -0
- package/src/host/host-routes.ts +396 -0
- package/src/host/pages.ts +266 -0
- package/src/host/reads.ts +155 -0
- package/src/host/retention.ts +41 -0
- package/src/host/room-views.ts +137 -0
- package/src/host/rooms-service.ts +429 -0
- package/src/host/stored-json.ts +13 -0
- package/src/host/views.ts +106 -0
- package/src/i18n/zh-tw.ts +139 -0
- package/src/index.ts +15 -1
- package/src/notices/api.ts +43 -0
- package/src/notices/mount.ts +292 -0
- package/src/notices/service.ts +294 -0
- package/src/notices/store.ts +298 -0
- package/src/notices/urls.ts +38 -0
- package/src/onboarding/api.ts +32 -0
- package/src/onboarding/service.ts +149 -0
- package/src/onboarding/steps.ts +75 -0
- package/src/onboarding/waivers.ts +40 -0
- package/src/options.ts +534 -34
- package/src/page-presentation.ts +47 -2
- package/src/profile/api.ts +175 -0
- package/src/profile/links.ts +162 -0
- package/src/push/api.ts +189 -52
- package/src/push/dispatch.ts +156 -0
- package/src/push/drain.ts +139 -0
- package/src/push/outbox.ts +218 -0
- package/src/push/prefs.ts +118 -0
- package/src/push/sender.ts +7 -2
- package/src/push/triggers.ts +56 -5
- package/src/push/vapid.ts +19 -0
- package/src/push/web-push-transport.ts +106 -0
- package/src/push-sender/index.ts +14 -0
- package/src/push-sender/run.ts +118 -0
- package/src/push-sender/session.ts +54 -0
- package/src/pwa.ts +32 -4
- package/src/visitors.ts +94 -6
- package/src/web-app.ts +718 -0
- package/src/web-plugin.ts +279 -26
- package/dist/chunk-action-menu-qe839g4b.js +0 -1
- package/dist/chunk-arranged-rooms-enpfswmg.js +0 -1
- package/dist/chunk-character-creator-6yf29xwx.js +0 -1
- package/dist/chunk-codeeditor-gdbdg7rp.js +0 -2
- package/dist/chunk-confirm-xrw7d732.js +0 -1
- package/dist/chunk-conversations-ry228aes.js +0 -1
- package/dist/chunk-folder-list-5cp8stna.js +0 -1
- package/dist/chunk-folds-hff104tk.js +0 -1
- package/dist/chunk-group-scene-h228jdat.js +0 -1
- package/dist/chunk-index-0p5h2kdz.js +0 -2
- package/dist/chunk-index-0pt08yd9.js +0 -1
- package/dist/chunk-index-12bw9yj8.js +0 -2
- package/dist/chunk-index-2ad17eh4.js +0 -2
- package/dist/chunk-index-31wh5twj.js +0 -52
- package/dist/chunk-index-4dy94pbz.js +0 -2
- package/dist/chunk-index-4ecjtdy8.js +0 -13
- package/dist/chunk-index-4v1b7ks9.js +0 -2
- package/dist/chunk-index-5d8yjj4m.js +0 -2
- package/dist/chunk-index-89ajmxh7.js +0 -2
- package/dist/chunk-index-b9ny4623.js +0 -2
- package/dist/chunk-index-e1dr6g10.js +0 -2
- package/dist/chunk-index-gpkzhq1g.js +0 -2
- package/dist/chunk-index-hk3xyy20.js +0 -2
- package/dist/chunk-index-jm23vn03.js +0 -4
- package/dist/chunk-index-k7gh0jvz.js +0 -2
- package/dist/chunk-index-ky42ev0b.js +0 -2
- package/dist/chunk-index-pa2yyqh0.js +0 -2
- package/dist/chunk-index-pcvt668q.js +0 -2
- package/dist/chunk-index-pqw27eye.js +0 -1
- package/dist/chunk-index-wmbmmrd4.js +0 -302
- package/dist/chunk-index-ymbjrsp6.js +0 -2
- package/dist/chunk-lang-css-t85r8rz0.js +0 -1
- package/dist/chunk-lang-html-n6jparge.js +0 -1
- package/dist/chunk-lang-javascript-xj00cp97.js +0 -1
- package/dist/chunk-lang-markdown-zxx8eke8.js +0 -6
- package/dist/chunk-lang-typescript-8f6yywt3.js +0 -1
- package/dist/chunk-layout-actions-bv0chj41.js +0 -1
- package/dist/chunk-notes-9b7pgqfe.js +0 -1
- package/dist/chunk-overview-8yw71esz.js +0 -1
- package/dist/chunk-palette-frms7axe.js +0 -1
- package/dist/chunk-placement-items-fvfy9m0y.js +0 -1
- package/dist/chunk-prompt-history-yrqehads.js +0 -1
- package/dist/chunk-prompts-g6609tqx.js +0 -1
- package/dist/chunk-room-confirms-0a2y0925.js +0 -1
- package/dist/chunk-room-menu-g11q97br.js +0 -1
- package/dist/chunk-rooms-menu-button-h9qge48n.js +0 -1
- package/dist/chunk-schedules-ezmacrbj.js +0 -1
- package/dist/chunk-sheet-hosts-b0azyfhb.js +0 -1
- package/dist/chunk-skill-editor-h6k6whwg.js +0 -8
- package/dist/chunk-skills-gqcfhq56.js +0 -1
- package/dist/chunk-switcher-list-mcpamqnj.js +0 -1
- package/dist/chunk-table-s8cde1xz.js +0 -1
- package/dist/chunk-table-seats-wqkjn8bc.js +0 -1
- package/dist/chunk-transcript-c59c6mpm.js +0 -1
- package/dist/chunk-workspace-0cyspkk4.js +0 -1
- package/dist/chunk-zh-tw-nc93jm10.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,W,P,Y,s,D,r,t,c,p,e,n,a,x,y,_,L,h,me,f,Q,J}from"./chunk-index-31wh5twj.js";import{ke,We}from"./chunk-index-jm23vn03.js";import{N}from"./chunk-index-5d8yjj4m.js";var I={"Shared prompt":c("Shared prompt"),"Guest prompt":c("Guest prompt"),"The base every agent's prompt starts with, the main assistant's included.":c("The base every agent's prompt starts with, the main assistant's included."),"Used instead of the shared prompt when the person speaking is not the owner.":c("Used instead of the shared prompt when the person speaking is not the owner.")},w=(l)=>t(I[l]??l);var U=P(()=>(O("yrqehads"),import("./chunk-prompt-history-yrqehads.js")).then((l)=>({default:l.HistorySheet}))),G=P(()=>(O("xrw7d732"),import("./chunk-confirm-xrw7d732.js")).then((l)=>({default:l.Confirm})));function pe(){let{timeZone:l}=Q(),[k,i]=r(),[d,g]=r(),[u,b]=r(),C=Y(()=>{ke.prompts().then((m)=>i(m.documents),(m)=>g(f(m)))},[]);return s(C,[C]),n("div",{className:"page",children:[e("header",{className:"page-head",children:e("h1",{children:t("Main prompts")})}),e("p",{className:"hint",children:t("The texts the assistant and the agents start from. A text you save here replaces the one from the file from the next turn on, until you go back to the file's.")}),d?e(y,{message:d}):null,!k&&!d?e(x,{}):null,k?.length===0?e(_,{children:t("No prompts to edit.")}):null,k?.map((m)=>n("article",{className:"card stack",children:[n("div",{className:"card-head",children:[e("strong",{children:w(m.label)}),m.differs?e(L,{tone:"warn",children:t("Differs from the file version")}):null,m.broken?e(L,{tone:"warn",children:t("File version cannot be read")}):null]}),m.description?e("p",{children:w(m.description)}):null,m.override?e("p",{className:"hint",children:t("Set by {name}, {time}",{name:m.override.by,time:J(m.override.at,l)})}):null,e("div",{className:"actions",children:e("button",{type:"button",onClick:()=>b(m.id),children:t("Edit")})})]},m.id)),u?e(M,{id:u,onClose:()=>{b(void 0),C()}}):null]})}function M({id:l,onClose:k}){let[i,d]=r(),[g,u]=r(""),[b,C]=r(),[m,S]=r(!1),[R,T]=r(!1),[B,E]=r(!1),[H,V]=r(!1),F=D();s(()=>{let o=!0;return ke.prompt(l).then((v)=>{if(!o)return;d(v),u(v.text)},(v)=>o&&C(f(v))),()=>{o=!1}},[l]);let z=async()=>{if(!i)return;T(!0);try{let o=await ke.savePrompt(l,{text:g,base:i.text});d(o),u(o.text),S(!1),h(t("Saved."))}catch(o){if(o instanceof me&&o.status===409){let{current:v}=o.body;d(v),h(o.message,"danger")}else h(f(o),"danger")}finally{T(!1)}},A=i!==void 0&&g!==i.text;return n(N,{open:!0,title:i?w(i.label):t("Main prompts"),size:"full",onClose:k,children:[b?e(y,{message:b}):null,!i&&!b?e(x,{}):null,i?.broken?e(y,{message:t("The file version of this prompt cannot be read, so it cannot be changed here until it can: {reason}",{reason:i.broken})}):null,i&&!i.broken?n("div",{className:"stack",children:[i.differs?e("p",{className:"hint",children:e(L,{tone:"warn",children:t("Differs from the file version")})}):null,m?n("section",{className:"stack review","aria-label":t("Review changes"),children:[e("h3",{children:t("Review changes")}),e(We,{label:t("Prompt"),before:i.text,after:g}),n("div",{className:"actions",children:[e("button",{type:"button",className:"secondary",disabled:R,onClick:()=>S(!1),children:t("Back to editing")}),e("button",{type:"button",disabled:R,onClick:z,children:R?t("Saving…"):t("Save")})]})]}):n(p,{children:[n("div",{className:"field",children:[n("div",{className:"field-head",children:[e("label",{htmlFor:F,children:t("Prompt")}),e("span",{className:"field-tools",children:n("button",{type:"button",className:"secondary compact","aria-haspopup":"dialog",onClick:()=>E(!0),children:[e(a,{name:"reset",size:16}),t("History")]})})]}),e("textarea",{id:F,className:"prompt-full",value:g,maxLength:i.maxChars,onChange:(o)=>u(o.target.value)})]}),n("div",{className:"actions",children:[i.override?e("button",{type:"button",className:"secondary",onClick:()=>V(!0),children:t("Revert to the file version")}):null,e("button",{type:"button",disabled:!A||!g.trim(),onClick:()=>S(!0),children:t("Review changes")})]})]}),B?e(W,{fallback:null,children:e(U,{open:B,title:t("History of {name}",{name:w(i.label)}),load:async()=>(await ke.promptHistory(l)).versions.map((o)=>({id:o.id,text:o.text,previous:o.previous,by:o.by,at:o.at,revert:o.action==="revert"})),onUse:(o)=>{u(o),S(!1),E(!1)},onClose:()=>E(!1)})}):null,H?e(W,{fallback:null,children:e(G,{open:H,title:t("Revert {name} to the file version?",{name:w(i.label)}),confirmLabel:t("Revert to the file version"),tone:"danger",onConfirm:async()=>{try{let o=await ke.revertPrompt(l,{base:i.text});d(o),u(o.text),S(!1),h(t("Back to the file version."))}catch(o){if(!(o instanceof me&&o.status===409))throw o;let{current:v}=o.body;d(v),h(o.message,"danger")}},onClose:()=>V(!1),children:e("p",{children:t("The text you saved is dropped and the text from the file applies from the next turn. It stays in the history, so you can bring it back.")})})}):null]}):null]})}export{pe as PromptsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{oi}from"./chunk-index-4v1b7ks9.js";import"./chunk-index-b9ny4623.js";import"./chunk-index-ky42ev0b.js";import"./chunk-index-5d8yjj4m.js";import"./chunk-index-12bw9yj8.js";import"./chunk-index-ymbjrsp6.js";import"./chunk-index-gpkzhq1g.js";export{oi as RoomConfirmHost};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,r,t,p,e,n,a,C,d,dt,De,Te,st}from"./chunk-index-31wh5twj.js";import{Se}from"./chunk-index-12bw9yj8.js";import{Ye}from"./chunk-index-27qca4mr.js";import{ze}from"./chunk-index-pa2yyqh0.js";import{N}from"./chunk-index-5d8yjj4m.js";var c="room-menu-yolo",g="room-menu-long",h="room-menu-mute";function D(o){let[l,m]=r(!1),b=d((s)=>s.rooms[o.room]?.view?.home===!1,o.room),i=d((s)=>s.pins.includes(o.room),o.room),u=o.mode??{yolo:!1,longRunning:!1},f=async(s)=>{m(!0),await dt(o.room,{longRunning:s}),m(!1)};return e(N,{open:o.open,title:t("Room menu"),onClose:o.onClose,children:n("ul",{className:"menu",children:[o.readOnly?e("li",{children:o.parent?n("a",{className:"menu-item menu-link",href:C("room",o.parent),onClick:o.onClose,children:[e("span",{className:"menu-icon",children:e(a,{name:"rooms"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Open the parent room")}),e("span",{className:"meta",children:t("Reply to the agent that started this thread.")})]}),e(a,{name:"chevron",size:16})]}):e("p",{className:"meta",children:t("A thread has no settings.")})}):null,o.readOnly?null:e("li",{children:n("label",{className:"menu-item menu-toggle",htmlFor:h,children:[e("span",{className:"menu-icon",children:e(a,{name:o.muted?"bell-off":"bell"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Notifications")}),e("span",{className:"meta",children:t("Push this room's posts to every owner's devices. A card that waits for you is always pushed.")})]}),e(Ye,{id:h,checked:!o.muted,label:t("Notifications"),onChange:async(s)=>{m(!0),await ze(o.room,!s),m(!1)},busy:l})]})}),o.readOnly?null:e("li",{children:n("label",{className:"menu-item menu-toggle",htmlFor:c,children:[e("span",{className:"menu-icon","data-tone":"yolo",children:e(a,{name:"bolt"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Yolo mode")}),e("span",{className:"meta",children:t("Approve held actions in this room without asking. Risky ones still ask.")})]}),e(Ye,{id:c,checked:u.yolo,label:t("Yolo mode"),onChange:(s)=>{if(s)o.onAskYolo();else m(!0),dt(o.room,{yolo:!1}).then(()=>m(!1))},busy:l})]})}),o.readOnly?null:e("li",{children:n("label",{className:"menu-item menu-toggle",htmlFor:g,children:[e("span",{className:"menu-icon","data-tone":"long",children:e(a,{name:"timer"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Long-running mode")}),e("span",{className:"meta",children:t("Let turns go on past their time limit, up to the host's cap. Questions still wait for you.")})]}),e(Ye,{id:g,checked:u.longRunning,label:t("Long-running mode"),onChange:f,busy:l})]})}),o.agent?e("li",{children:n("button",{type:"button",className:"menu-item menu-link","aria-haspopup":"dialog",onClick:()=>{o.onClose(),De(o.agent)},children:[e("span",{className:"menu-icon",children:e(a,{name:"profile"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Edit agent")}),e("span",{className:"meta",children:t("Name, prompt, model and picture")})]}),e(a,{name:"chevron",size:16})]})}):null,o.group?e("li",{children:n("button",{type:"button",className:"menu-item menu-link","aria-haspopup":"dialog",onClick:()=>{o.onClose(),st({kind:"group",name:o.group})},children:[e("span",{className:"menu-icon",children:e(a,{name:"profile"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Edit group")}),e("span",{className:"meta",children:t("Name, members and host")})]}),e(a,{name:"chevron",size:16})]})}):null,o.readOnly||!b?null:n(p,{children:[e("li",{children:n("button",{type:"button",className:"menu-item menu-link",onClick:()=>{o.onClose(),(O("bv0chj41"),import("./chunk-layout-actions-bv0chj41.js")).then((s)=>s.pinRoom(o.room,!i))},children:[e("span",{className:"menu-icon",children:e(a,{name:"pin"})}),n("span",{className:"menu-text",children:[e("strong",{children:i?t("Unpin"):t("Pin")}),e("span",{className:"meta",children:t("Keep this room at the top of the list.")})]})]})}),e("li",{children:n("button",{type:"button",className:"menu-item menu-link","aria-haspopup":"dialog",onClick:()=>{o.onClose(),Se({kind:"move",room:o.room})},children:[e("span",{className:"menu-icon",children:e(a,{name:"folder"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Move to folder…")}),e("span",{className:"meta",children:t("Put this room in a folder, or take it out.")})]}),e(a,{name:"chevron",size:16})]})})]}),o.readOnly?null:e("li",{children:n("button",{type:"button",className:"menu-item menu-link",onClick:o.onAskStartOver,children:[e("span",{className:"menu-icon","data-tone":"danger",children:e(a,{name:"reset"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Start over")}),e("span",{className:"meta",children:t("Archive this conversation and begin a new one. Memory stays.")})]})]})}),o.readOnly||o.coordinator?null:e("li",{children:n("button",{type:"button",className:"menu-item menu-link",onClick:()=>{o.onClose(),Te({kind:"archive",room:o.room,name:o.displayName??""})},children:[e("span",{className:"menu-icon","data-tone":"danger",children:e(a,{name:"archive"})}),n("span",{className:"menu-text",children:[e("strong",{children:o.group?t("Archive group"):t("Archive agent")}),e("span",{className:"meta",children:t("It stops answering. The history is kept and it can be restored.")})]})]})})]})})}export{D as RoomMenu};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t,e,a,d}from"./chunk-index-31wh5twj.js";import"./chunk-index-12bw9yj8.js";import{yn}from"./chunk-index-89ajmxh7.js";function r(){if(!d((o)=>o.listed))return null;return e("button",{type:"button",className:"header-button icon-button","aria-haspopup":"menu","aria-label":t("Folders and order"),onClick:(o)=>yn(o.currentTarget),children:e(a,{name:"more",size:18})})}export{r as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,t,c,e,n,a,C,x,y,_,L,h,m,Q,J}from"./chunk-index-31wh5twj.js";import{re}from"./chunk-index-ky42ev0b.js";import{fe}from"./chunk-index-hk3xyy20.js";import"./chunk-index-5d8yjj4m.js";var g={mon:c("Mon"),tue:c("Tue"),wed:c("Wed"),thu:c("Thu"),fri:c("Fri"),sat:c("Sat"),sun:c("Sun")};function w(d){if(typeof d!=="object"||d===null)return"";let i=d,s=typeof i.time==="string"?i.time:"";switch(i.kind){case"once":return t("Once on {date} at {time}",{date:String(i.date??""),time:s});case"every":return Number(i.everyDays)===1?t("Every day at {time}",{time:s}):t("Every {count} days at {time}",{count:Number(i.everyDays),time:s});case"weekly":{let l=Array.isArray(i.weekdays)?i.weekdays.map((u)=>t(g[String(u)]??String(u))).join(t(", ")):"";return t("{days} at {time}",{days:l,time:s})}default:return""}}function T(){let{timeZone:d}=Q(),[i,s]=r(0),[l,u]=r(),{data:p,error:f}=fe(()=>m.schedules(),`schedules:${i}`);return n("div",{className:"page",children:[e("header",{className:"page-head",children:e("h1",{children:t("Schedules")})}),f?e(y,{message:f}):null,!p&&!f?e(x,{}):null,p&&p.schedules.length===0?e(_,{children:t("Nothing is scheduled. Ask an agent to remind you or to run something later.")}):null,e("ul",{className:"schedule-list",children:p?.schedules.map((o)=>n("li",{className:"card schedule",children:[n("div",{className:"schedule-main",children:[n("div",{className:"card-head",children:[e("strong",{children:o.title}),o.lastStatus?e(L,{children:o.lastStatus}):null]}),n("p",{className:"meta",children:[w(o.recurrence)," ·"," ",t("next {when}",{when:J(o.nextRun,d)})]}),e("p",{className:"schedule-prompt",children:o.prompt}),n("p",{className:"meta",children:[o.room?e("a",{href:C("room",o.room),children:o.label}):o.label," ","· ",t("set by {name}",{name:o.createdBy})]})]}),e("button",{type:"button",className:"icon-button danger-icon","aria-label":t("Cancel {title}",{title:o.title}),onClick:()=>u(o),children:e(a,{name:"trash"})})]},o.id))}),e(re,{open:l!==void 0,title:t("Cancel this schedule?"),confirmLabel:t("Cancel schedule"),tone:"danger",onClose:()=>u(void 0),onConfirm:async()=>{if(!l)return;await m.cancelSchedule(l.id),s((o)=>o+1),h(t("Schedule cancelled."))},children:e("p",{children:t("“{title}” will not run again. Runs that already happened stay in the conversation.",{title:l?.title??""})})})]})}export{T as SchedulesPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,W,P,Y,s,D,X,l,r,t,c,p,e,n,a,H,d,x,y,_,h,me,m,f,oe,Kt,It,sr,or,Te,kn,ur}from"./chunk-index-31wh5twj.js";import{re}from"./chunk-index-ky42ev0b.js";import"./chunk-index-12bw9yj8.js";import"./chunk-index-ymbjrsp6.js";import{ye,rt,oi}from"./chunk-index-4v1b7ks9.js";import{Vt}from"./chunk-index-18gxy79n.js";import{ke,We}from"./chunk-index-jm23vn03.js";import"./chunk-index-b9ny4623.js";import{Ye}from"./chunk-index-27qca4mr.js";import{ze}from"./chunk-index-pa2yyqh0.js";import{N}from"./chunk-index-5d8yjj4m.js";import"./chunk-index-gpkzhq1g.js";function se(i){return n("fieldset",{className:"field",children:[e("legend",{children:i.label}),e("div",{className:"option-chips",children:i.options.map((u)=>e("button",{type:"button","aria-pressed":u.value===i.value,className:"option-chip",onClick:()=>i.onChange(u.value),children:u.label},u.value))})]})}var Fe=P(()=>(O("yrqehads"),import("./chunk-prompt-history-yrqehads.js")).then((i)=>({default:i.HistorySheet}))),Re=P(()=>(O("6yf29xwx"),import("./chunk-character-creator-6yf29xwx.js")).then((i)=>({default:i.CharacterCreator}))),xe=["default","off","minimal","low","medium","high","xhigh"],ve={default:c("Follow the assistant (automatic)"),off:c("Off"),minimal:c("Minimal"),low:c("Low"),medium:c("Medium"),high:c("High"),xhigh:c("Very high")},z="default",ce=(i)=>t(ve[i]??i),he=(i)=>({displayName:i.displayName,prompt:i.prompt,model:i.model??z,thinking:i.thinking??z});function ge(i,u){return{...u.displayName!==i.displayName?{displayName:u.displayName}:{},...u.prompt!==i.prompt?{prompt:u.prompt}:{},...u.model!==(i.model??z)?{model:u.model}:{},...u.thinking!==(i.thinking??z)?{thinking:u.thinking}:{}}}function be(){let i=or(),u=l(i);if(i)u.current=i;let o=u.current,w=i!==void 0;if(s(()=>{if(!w)return;let E=window.location.href,A=()=>{if(window.location.href!==E)It()};return window.addEventListener("popstate",A),window.addEventListener("hashchange",A),()=>{window.removeEventListener("popstate",A),window.removeEventListener("hashchange",A)}},[w]),!o)return null;return e(N,{open:i!==void 0,title:t("Edit agent"),size:"wide",onClose:It,children:e(He,{name:o.name,opened:o.id},o.name)})}function He({name:i,opened:u}){let[o,w]=r(),[E,A]=r([]),[k,T]=r(),[C,F]=r(),[g,I]=r(!1),[L,V]=r(!1),[Z,J]=r(!1),[G,K]=r(!1),ee=Kt(o?.room??""),U=l(null),j=o!==void 0,B=d((b)=>o?b.rooms[o.room]?.view?.muted===!0:!1,o?.room??""),[te,R]=r(!1),ae=d((b)=>o?b.rooms[o.room]?.view?.coordinator===!0:!1,o?.room??""),q=D(),Q=D(),S=D();s(()=>{if(!j||!sr()?.look)return;U.current?.scrollIntoView({block:"start"}),U.current?.focus({preventScroll:!0})},[j,u]);let v=l({});v.current={profile:o,draft:C},s(()=>{let b=!0;return Promise.all([m.agent(i),m.models()]).then(([ie,De])=>{if(!b)return;let{profile:fe,draft:le}=v.current,Pe=fe&&le&&Object.keys(ge(fe,le)).length>0;w(ie),A(De.models),F(Pe?le:he(ie))},(ie)=>b&&T(f(ie))),()=>{b=!1}},[i,u]);let M=X(()=>o&&C?ge(o,C):{},[o,C]);if(k)return e(y,{message:k});if(!o||!C)return e(x,{});let pe=Object.keys(M).length>0,Ie=Array.from(new Set([z,...E,C.model])),ue=async()=>{I(!0);try{let b=await m.updateAgent(i,M);w(b),F(he(b)),V(!1),h(t("Saved."))}catch(b){h(f(b),"danger")}finally{I(!1)}};return n("div",{className:"stack agent-sheet",children:[n("header",{className:"profile-head",children:[e(oe,{spec:o.character,name:o.name,size:72,state:ee,label:o.displayName}),n("div",{children:[e("h3",{children:o.displayName}),e("p",{className:"meta",children:t("Runs on {model}, thinking {thinking}",{model:o.effective.model,thinking:ce(o.effective.thinking)})})]})]}),e("ul",{className:"menu",children:e("li",{children:n("label",{className:"menu-item menu-toggle",htmlFor:S,children:[e("span",{className:"menu-icon",children:e(a,{name:B?"bell-off":"bell"})}),n("span",{className:"menu-text",children:[e("strong",{children:t("Notifications")}),e("span",{className:"meta",children:t("Push this room's posts to every owner's devices. A card that waits for you is always pushed.")})]}),e(Ye,{id:S,checked:!B,label:t("Notifications"),busy:te,onChange:async(b)=>{R(!0),await ze(o.room,!b),R(!1)}})]})})}),L?e(Ve,{profile:o,draft:C,saving:g,onBack:()=>V(!1),onSave:ue}):n("form",{className:"stack form",onSubmit:(b)=>{if(b.preventDefault(),!pe)return;if(M.prompt!==void 0)V(!0);else ue()},children:[n("label",{htmlFor:Q,children:[t("Name"),e("input",{id:Q,value:C.displayName,onChange:(b)=>F({...C,displayName:b.target.value})})]}),n("div",{className:"field",children:[n("div",{className:"field-head",children:[e("label",{htmlFor:q,children:t("Prompt")}),n("span",{className:"field-tools",children:[n("button",{type:"button",className:"secondary compact","aria-haspopup":"dialog",onClick:()=>K(!0),children:[e(a,{name:"reset",size:16}),t("History")]}),n("button",{type:"button",className:"secondary compact","aria-haspopup":"dialog",onClick:()=>J(!0),children:[e($e,{}),t("Full screen")]})]})]}),e("textarea",{id:q,rows:8,value:C.prompt,onChange:(b)=>F({...C,prompt:b.target.value})})]}),e(se,{label:t("Model"),value:C.model,onChange:(b)=>F({...C,model:b}),options:Ie.map((b)=>({value:b,label:b===z?t("Follow the assistant"):b}))}),e(se,{label:t("Thinking level"),value:C.thinking,onChange:(b)=>F({...C,thinking:b}),options:xe.map((b)=>({value:b,label:t(ve[b])}))}),e("div",{className:"actions",children:e("button",{type:"submit",disabled:!pe||g,children:g?t("Saving…"):M.prompt!==void 0?t("Review changes"):t("Save")})})]}),e(Oe,{name:i,opened:u}),n("section",{className:"card stack",ref:U,tabIndex:-1,children:[e("h3",{children:t("Look")}),e("p",{className:"meta",children:t("Class, colors and parts. The picture here, in the rooms and in Discord all follow it.")}),e(W,{fallback:e(x,{}),children:e(Re,{name:o.name,displayName:o.displayName,prompt:o.prompt,character:o.character,onSaved:(b)=>w(b)})})]}),ae?null:n("section",{className:"card stack",children:[e("h3",{children:t("Archive")}),e("p",{className:"meta",children:t("An archived agent stops answering and its schedules are cancelled. Its history is kept, and you can restore it from Archived.")}),e("div",{className:"actions",children:e("button",{type:"button",className:"danger",onClick:()=>{It(),Te({kind:"archive",room:o.room,name:o.displayName})},children:t("Archive {name}",{name:o.displayName})})})]}),G?e(W,{fallback:null,children:e(Fe,{open:G,title:t("History of the prompt"),load:async()=>(await ke.agentPromptHistory(i)).versions.map((b)=>({id:b.id,text:b.text,previous:b.previous,by:b.by,at:b.at})),onUse:(b)=>{F({...C,prompt:b}),K(!1)},onClose:()=>K(!1)})}):null,e(N,{open:Z,title:t("Prompt"),size:"full",onClose:()=>J(!1),children:e("textarea",{className:"prompt-full","aria-label":t("Prompt"),value:C.prompt,onChange:(b)=>F({...C,prompt:b.target.value})})})]})}function Oe({name:i,opened:u}){let[o,w]=r(),[E,A]=r(),[k,T]=r(),C=D();if(s(()=>{let g=!0;return ye.skills(i).then((I)=>g&&w(I),(I)=>{if(g&&!(I instanceof me&&I.status===404))T(f(I))}),()=>{g=!1}},[i,u]),k)return e(y,{message:k});if(!o)return null;let F=async(g,I)=>{A(g);try{w(await ye.setSkills(i,I?{add:[g]}:{remove:[g]}))}catch(L){h(f(L),"danger")}finally{A(void 0)}};return n("section",{className:"card stack","aria-label":t("Skills"),children:[e("h3",{children:t("Skills")}),e("p",{className:"meta",children:t("What the agent can load when a task calls for it. It applies from its next turn.")}),e("ul",{className:"menu",children:o.skills.map((g,I)=>{let L=`${C}-${I}`;return e("li",{children:n("label",{className:"menu-item menu-toggle",htmlFor:L,children:[n("span",{className:"menu-text",children:[e("strong",{children:g.name}),e("span",{className:"meta",children:g.missing?t("Its file cannot be read."):g.builtin?t("Built in: every agent carries it."):g.description??""})]}),e(Ye,{id:L,checked:g.carried,label:g.name,busy:E===g.name,disabled:g.builtin,onChange:(V)=>F(g.name,V)})]})},g.name)})})]})}var $e=()=>e("svg",{viewBox:"0 0 24 24",width:16,height:16,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",children:e("path",{d:"M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"})});function Ve(i){let{profile:u,draft:o}=i,w=l(null);s(()=>w.current?.focus(),[]);let E=[];if(o.displayName!==u.displayName)E.push({label:t("Name"),before:u.displayName,after:o.displayName});let A=(k)=>k===z?t("Follow the assistant"):k;if(o.model!==(u.model??z))E.push({label:t("Model"),before:A(u.model??z),after:A(o.model)});if(o.thinking!==(u.thinking??z))E.push({label:t("Thinking level"),before:ce(u.thinking??z),after:ce(o.thinking)});return n("section",{ref:w,className:"stack review",tabIndex:-1,"aria-label":t("Review changes"),children:[e("h3",{children:t("Review changes")}),E.length?e("ul",{className:"review-fields",children:E.map((k)=>n("li",{children:[e("strong",{children:k.label}),e("span",{className:"review-before",children:k.before}),e("span",{"aria-hidden":"true",children:"→"}),e("span",{className:"review-after",children:k.after})]},k.label))}):null,e(We,{label:t("Prompt"),before:u.prompt,after:o.prompt}),n("div",{className:"actions",children:[e("button",{type:"button",className:"secondary",disabled:i.saving,onClick:i.onBack,children:t("Back to editing")}),e("button",{type:"button",disabled:i.saving,onClick:i.onSave,children:i.saving?t("Saving…"):t("Save")})]})]})}function Ne(){let[i,u]=r(),[o,w]=r(),[E,A]=r(),[k,T]=r(),C=Y(async()=>{try{u((await ye.archive()).entries),w(void 0)}catch(g){w(f(g))}},[]);s(()=>{C()},[C]);let F=async(g)=>{A(g.name);try{if(g.kind==="agent")await ye.restoreAgent(g.name);else await ye.restoreGroup(g.name);await rt(),h(t("Restored {name}.",{name:g.displayName})),await C()}catch(I){h(f(I),"danger")}finally{A(void 0)}};if(o&&!i)return e(y,{message:o});if(!i)return e(x,{});return n("div",{className:"stack",children:[e("p",{className:"meta",children:t("Archived agents and groups no longer answer. Their history is kept until you delete them.")}),i.length===0?e(_,{children:t("Nothing is archived.")}):null,e("ul",{className:"menu",children:i.map((g)=>n("li",{className:"menu-item",children:[e("span",{className:"menu-icon",children:e(a,{name:g.kind==="agent"?"profile":"rooms"})}),n("span",{className:"menu-text",children:[e("strong",{children:g.displayName}),n("span",{className:"meta",children:[g.kind==="agent"?t("Agent"):t("Group")," ·"," ",g.name]})]}),e("button",{type:"button",className:"secondary compact",disabled:E===g.name,onClick:()=>F(g),children:t("Restore")}),e("button",{type:"button",className:"compact danger",disabled:E===g.name,onClick:()=>T(g),children:t("Delete")})]},`${g.kind}:${g.name}`))}),e(re,{open:k!==void 0,title:t("Delete {name}?",{name:k?.displayName??""}),confirmLabel:t("Delete"),tone:"danger",onClose:()=>T(void 0),onConfirm:async()=>{if(!k)return;if(k.kind==="agent")await ye.deleteAgent(k.name);else await ye.deleteGroup(k.name);await rt(),h(t("Deleted {name}.",{name:k.displayName})),await C()},children:e("p",{children:t("{name} and its messages in this app are deleted for good, and the name can be used again. This cannot be undone.",{name:k?.displayName??""})})})]})}var we=/^[a-z0-9-]{1,32}$/,Ce=2,Se=6,ne="\x00";function Ge(){let i=d((u)=>u.order.flatMap((o)=>{let w=u.rooms[o]?.view;return w?.kind==="agent"?[`${w.name}${ne}${w.displayName}`]:[]}).join(`${ne}${ne}`));return X(()=>i===""?[]:i.split(`${ne}${ne}`).map((u)=>{let[o="",w=""]=u.split(ne);return{name:o,displayName:w}}),[i])}function Ae(i){let u=Ge(),[o,w]=r(),[E,A]=r(),[k,T]=r(""),[C,F]=r(""),[g,I]=r(!1),[L,V]=r([]),[Z,J]=r(""),[G,K]=r(!1),[ee,U]=r(i.name===void 0),j=D(),B=D();s(()=>{let S=i.name;if(S===void 0)return;let v=!0;return ye.group(S).then((M)=>{if(!v)return;w(M),T(M.displayName),V(M.members),J(M.host),U(!0)},(M)=>v&&A(f(M))),()=>{v=!1}},[i.name]);let te=(S)=>u.find((v)=>v.name===S)?.displayName??S,R=L.includes(Z)?Z:L[0]??"",ae=o===void 0?!0:k.trim()!==o.displayName||L.join(",")!==o.members.join(",")||R!==o.host,q=k.trim()!==""&&L.length>=Ce&&L.length<=Se&&(o!==void 0||we.test(C));if(E&&!ee)return e(y,{message:E});if(!ee)return e(x,{});let Q=async()=>{K(!0),A(void 0);try{if(o){await ye.updateGroup(o.name,{...k.trim()!==o.displayName?{displayName:k.trim()}:{},...L.join(",")!==o.members.join(",")?{members:L}:{},...R!==o.host?{host:R}:{}}),await rt(),h(t("Saved.")),i.onDone();return}let S=await ye.createGroup({name:C,displayName:k.trim(),members:L,host:R});await rt(),h(t("Made {name}.",{name:S.displayName})),i.onDone(),H("room",S.room)}catch(S){A(f(S))}finally{K(!1)}};return n("form",{className:"stack form",onSubmit:(S)=>{if(S.preventDefault(),q&&ae&&!G)Q()},children:[n("label",{htmlFor:j,children:[t("Name"),e("input",{id:j,value:k,autoComplete:"off",onChange:(S)=>{if(T(S.target.value),!o&&!g)F(S.target.value.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32))}})]}),o?null:n("label",{htmlFor:B,children:[t("Permanent name"),e("input",{id:B,value:C,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,"aria-invalid":C!==""&&!we.test(C),onChange:(S)=>{I(!0),F(S.target.value)}}),e("span",{className:"meta",children:t("Lowercase letters, digits and dashes, up to 32. It names the room and cannot be changed.")})]}),n("fieldset",{className:"field",children:[e("legend",{children:t("Members")}),e("span",{className:"meta",children:t("Pick 2 to 6 agents. They take turns in the order picked.")}),e("ul",{className:"menu",children:u.map((S)=>{let v=L.includes(S.name);return e("li",{children:n("label",{className:"menu-item menu-toggle",children:[e("input",{type:"checkbox",checked:v,disabled:!v&&L.length>=Se,onChange:()=>V(v?L.filter((M)=>M!==S.name):[...L,S.name])}),e("span",{className:"menu-text",children:e("strong",{children:S.displayName})})]})},S.name)})})]}),L.length>=Ce?e(se,{label:t("Host"),value:R,onChange:J,options:L.map((S)=>({value:S,label:te(S)}))}):null,E?e(y,{message:E}):null,n("div",{className:"actions",children:[o?e("button",{type:"button",className:"danger",onClick:()=>{i.onDone(),Te({kind:"archive",room:o.room,name:o.displayName})},children:t("Archive group")}):null,e("button",{type:"submit",disabled:!q||!ae||G,children:G?t("Saving…"):o?t("Save"):t("Make group")})]})]})}var Be=P(()=>(O("6yf29xwx"),import("./chunk-character-creator-6yf29xwx.js")).then((i)=>({default:i.CharacterCreator}))),Ee=/^[a-z0-9-]{1,32}$/,de="default";function Ke(i){let u=[];for(let o of i){let w=o.indexOf("/"),E=w>0?o.slice(0,w):"",A=u.find((k)=>k.provider===E&&E!=="");if(A)A.models.push(o);else u.push({provider:E,models:[o]})}return u}var Ue=(i)=>i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32);function Me({onDone:i}){let[u,o]=r(""),[w,E]=r(""),[A,k]=r(!1),[T,C]=r(""),[F,g]=r(de),[I,L]=r(""),[V,Z]=r(),[J,G]=r(!1),[K,ee]=r([]),[U,j]=r(),[B,te]=r(!1),R=[D(),D(),D(),D(),D()];s(()=>{let v=!0;return m.models().then((M)=>v&&ee(M.models),()=>{return}),()=>{v=!1}},[]);let ae=X(()=>Vt({name:w,displayName:u,prompt:T}),[w,u,T]),q=V?.spec??ae,Q=Ee.test(w)&&u.trim()!==""&&T.trim()!=="";if(J)return e(W,{fallback:e(x,{}),children:e(Be,{name:w||"new",displayName:u,prompt:T,character:q,onPick:(v,M)=>{Z({input:v,spec:M}),G(!1)},onCancel:()=>G(!1)})});let S=async()=>{te(!0),j(void 0);try{let v={name:w,displayName:u.trim(),prompt:T,...F!==de?{model:F}:{},...I.trim()?{task:I.trim()}:{},...V?{character:V.input}:{}},M=await ye.createAgent(v);await rt(),h(t("Made {name}.",{name:M.displayName})),i(),H("room",M.room)}catch(v){j(v instanceof me&&v.field?`${v.field}: ${f(v)}`:f(v))}finally{te(!1)}};return n("form",{className:"stack form",onSubmit:(v)=>{if(v.preventDefault(),Q&&!B)S()},children:[n("label",{htmlFor:R[0],children:[t("Name"),e("input",{id:R[0],value:u,autoComplete:"off",onChange:(v)=>{if(o(v.target.value),!A)E(Ue(v.target.value))}})]}),n("label",{htmlFor:R[1],children:[t("Permanent name"),e("input",{id:R[1],value:w,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,"aria-invalid":w!==""&&!Ee.test(w),onChange:(v)=>{k(!0),E(v.target.value)}}),e("span",{className:"meta",children:t("Lowercase letters, digits and dashes, up to 32. It names the room and cannot be changed.")})]}),n("label",{htmlFor:R[2],children:[t("Prompt"),e("textarea",{id:R[2],rows:6,value:T,onChange:(v)=>C(v.target.value)}),e("span",{className:"meta",children:t("Its job, its sources, its limits and how it reports.")})]}),n("label",{htmlFor:R[4],children:[t("Model"),n("select",{id:R[4],value:F,onChange:(v)=>g(v.target.value),children:[e("option",{value:de,children:t("Follow the assistant")}),Ke(K).map((v)=>v.provider===""?v.models.map((M)=>e("option",{value:M,children:M},M)):e("optgroup",{label:v.provider,children:v.models.map((M)=>e("option",{value:M,children:M},M))},v.provider))]})]}),n("label",{htmlFor:R[3],children:[t("Opening task"),e("textarea",{id:R[3],rows:3,value:I,onChange:(v)=>L(v.target.value)}),e("span",{className:"meta",children:t("Optional. The agent starts on it as soon as it is made.")})]}),n("div",{className:"profile-head",children:[e(oe,{spec:q,name:w||"new",size:72,label:u}),n("div",{children:[e("strong",{children:t("Look")}),e("span",{className:"meta",children:V?t("Your look"):t("Suggested from its role")}),e("button",{type:"button",className:"secondary compact",onClick:()=>G(!0),children:t("Choose a look")})]})]}),U?e(y,{message:U}):null,e("div",{className:"actions",children:e("button",{type:"submit",disabled:!Q||B,children:B?t("Making…"):t("Make agent")})})]})}var _e=(i)=>i.kind==="new-agent"?t("New agent"):i.kind==="archive"?t("Archived"):i.name===void 0?t("New group"):t("Edit group");function Le(){let i=ur(),u=l(i);if(i)u.current=i;let o=u.current,w=i!==void 0;if(s(()=>{if(!w)return;let E=window.location.href,A=()=>{if(window.location.href!==E)kn()};return window.addEventListener("popstate",A),window.addEventListener("hashchange",A),()=>{window.removeEventListener("popstate",A),window.removeEventListener("hashchange",A)}},[w]),!o)return null;return e(N,{open:i!==void 0,title:_e(o),size:"wide",onClose:kn,children:e("div",{className:"stack agent-sheet",children:o.kind==="new-agent"?e(Me,{onDone:kn}):o.kind==="archive"?e(Ne,{}):e(Ae,{...o.name===void 0?{}:{name:o.name},onDone:kn})},o.id)})}function da(){return n(p,{children:[e(oi,{}),e(be,{}),e(Le,{})]})}export{da as SheetHosts};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{O,W,P,s,D,r,t,p,e,n,a,x,y,h,me,f}from"./chunk-index-31wh5twj.js";import{ke,We}from"./chunk-index-jm23vn03.js";import{N}from"./chunk-index-5d8yjj4m.js";var V=P(()=>(O("yrqehads"),import("./chunk-prompt-history-yrqehads.js")).then((c)=>({default:c.HistorySheet}))),K=`---
|
|
2
|
-
name: my-skill
|
|
3
|
-
description: "Use when "
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# My skill
|
|
7
|
-
|
|
8
|
-
`;function _(c){let{name:d}=c,[l,g]=r(),[m,u]=r(d?"":K),[v,F]=r(),[I,b]=r(!1),[k,S]=r(!1),[R,C]=r(!1),[H,w]=r(!1),T=D();s(()=>{if(!d)return;let i=!0;return ke.skillDocument(d).then((o)=>{if(!i)return;g(o),u(o.text)},(o)=>i&&F(f(o))),()=>{i=!1}},[d]);let L=l?.text??"",z=m!==L,E=d!==void 0&&!l&&!v,A=async()=>{S(!0);try{if(l){let i=await ke.saveSkillDocument(l.name,{text:m,baseHash:l.hash});g(i),u(i.text),b(!1),C(!1),h(t("Saved.")),c.onSaved()}else await ke.createSkillDocument({text:m}),h(t("Skill created.")),c.onSaved(),c.onClose()}catch(i){if(i instanceof me&&i.status===409){let{current:o}=i.body;g(o),C(!0)}else h(f(i),"danger")}finally{S(!1)}};return n(N,{open:!0,title:d??t("New skill"),size:"full",onClose:c.onClose,children:[v?e(y,{message:v}):null,E?e(x,{}):null,l&&!l.writable?e(y,{message:t("This skill cannot be edited here.")}):null,!E&&!v&&(!l||l.writable)?n("div",{className:"stack",children:[I?n("section",{className:"stack review","aria-label":t("Review changes"),children:[e("h3",{children:t("Review changes")}),R?e(y,{message:t("This skill changed while you were editing it. The changes below are against the version there now; save again to replace it, or go back to edit.")}):null,e(We,{label:"SKILL.md",before:L,after:m}),n("div",{className:"actions",children:[e("button",{type:"button",className:"secondary",disabled:k,onClick:()=>b(!1),children:t("Back to editing")}),e("button",{type:"button",disabled:k,onClick:A,children:k?t("Saving…"):l?t("Save"):t("Create skill")})]})]}):n(p,{children:[n("div",{className:"field",children:[n("div",{className:"field-head",children:[e("label",{htmlFor:T,children:"SKILL.md"}),l?e("span",{className:"field-tools",children:n("button",{type:"button",className:"secondary compact","aria-haspopup":"dialog",onClick:()=>w(!0),children:[e(a,{name:"reset",size:16}),t("History")]})}):null]}),e("textarea",{id:T,className:"prompt-full",spellCheck:!1,value:m,onChange:(i)=>u(i.target.value)}),e("p",{className:"meta",children:t("Frontmatter holds the name, which cannot change, and a description that starts with “Use when”. The rest is the skill.")})]}),e("div",{className:"actions",children:e("button",{type:"button",disabled:!z||!m.trim(),onClick:()=>b(!0),children:t("Review changes")})})]}),H&&l?e(W,{fallback:null,children:e(V,{open:H,title:t("History of {name}",{name:l.name}),load:async()=>{let{versions:i}=await ke.skillHistory(l.name);return i.map((o,U)=>({id:o.id,text:o.text,previous:i[U+1]?.text??"",by:o.by,at:o.at}))},onUse:(i)=>{u(i),b(!1),w(!1)},onClose:()=>w(!1)})}):null]}):null]})}export{_ as SkillEditor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,mi,W,P,s,r,t,p,e,n,a,x,y,_,L,m,f,Tn,Jt}from"./chunk-index-31wh5twj.js";import{fe}from"./chunk-index-hk3xyy20.js";import{pe}from"./chunk-index-b9ny4623.js";import"./chunk-index-5d8yjj4m.js";function b({source:i}){return e("div",{className:"prose document",children:e(Tn,{remarkPlugins:[Jt],components:{a:({href:o,children:d})=>o&&/^https?:\/\//.test(o)?e("a",{href:o,target:"_blank",rel:"noreferrer",children:d}):e("span",{children:d}),img:({alt:o})=>e("span",{children:o}),pre:({children:o})=>e("div",{className:"code-block",children:e("pre",{children:o})}),table:({children:o})=>e("div",{className:"table-wrap",children:e("table",{children:o})})},children:i})})}var S=P(()=>(O("h6k6whwg"),import("./chunk-skill-editor-h6k6whwg.js")).then((i)=>({default:i.SkillEditor})));function j(){let[i,o]=r(0),{data:d,error:l}=fe(()=>m.skills(),`skills:${i}`),[k,w]=r(),[u,g]=r();s(()=>{m.session().then(w,()=>{return})},[]);let h=k?.skillEdit===!0;return n("section",{className:"stack",children:[n("div",{className:"card-head",children:[e("h2",{children:t("Skills")}),h?n("button",{type:"button",className:"secondary",onClick:()=>g({name:void 0}),children:[e(a,{name:"plus",size:16}),t("New skill")]}):null]}),e("p",{className:"hint",children:h?t("Registered skills and their carriers. A skill an agent wrote can be edited here; the others are read-only."):t("Registered skills and their carriers; ask an agent on Discord to edit their contents.")}),l?e(y,{message:l}):null,!d&&!l?e(x,{}):null,d?.length===0?e(_,{children:t("No skills.")}):null,d?.map((c)=>e(v,{skill:c,onEdit:h&&c.source.kind==="written"?()=>g({name:c.name}):void 0},`${c.name}:${i}`)),u?e(W,{fallback:null,children:e(S,{name:u.name,onSaved:()=>o((c)=>c+1),onClose:()=>g(void 0)},u.name??"")}):null]})}function N(i){switch(i.kind){case"builtin":return t("Built in with the release; it changes with the release.");case"package":return t("From the package {package}; it changes when the package is upgraded.",{package:i.package});case"linked":return t("Linked from {repo}; change it in its repository.",{repo:`${i.repo}:${i.path}`});default:return}}function v({skill:i,onEdit:o}){let[d,l]=r(!1),[k,w]=r(),[u,g]=r(),h=i.source.kind==="builtin"?t("Built-in"):i.source.kind==="written"?t("Assistant-written"):i.source.kind==="package"?i.source.package:`${i.source.repo}:${i.source.path}`;return n("article",{className:"card",children:[n("div",{className:"card-head",children:[e("strong",{children:i.name}),e(L,{children:h}),i.missing?e(L,{tone:"warn",children:t("File missing")}):n(p,{children:[o?e("button",{type:"button",className:"secondary",onClick:o,children:t("Edit")}):null,e("button",{type:"button",className:"secondary",onClick:()=>{if(l(!0),!k)g(void 0),m.skill(i.name).then(w).catch((c)=>g(f(c)))},children:"SKILL.md"})]})]}),e("p",{children:i.missing??i.description}),i.source.kind!=="written"?n("p",{className:"hint skill-lock",children:[e(a,{name:"lock",size:14}),e("span",{children:N(i.source)})]}):null,n("p",{className:"hint",children:[t("Carriers"),":"," ",i.source.kind==="builtin"?t("All agents"):i.carriers.join(", ")||t("None")]}),i.groups.length?n("p",{className:"hint",children:[t("Groups"),": ",i.groups.join(", ")]}):null,e(pe,{open:d,title:i.name,size:"wide",onClose:()=>l(!1),children:u?e(y,{message:u}):!k?e(x,{}):e(E,{title:i.name,detail:k})})]})}function E({title:i,detail:o}){let d=o.metadata.filter((l)=>!(l.key==="name"&&l.value===i));return n("div",{className:"skill-document",children:[d.length?e("dl",{className:"skill-meta",children:d.map((l)=>n(mi,{children:[e("dt",{children:l.key}),e("dd",{children:l.value})]},l.key))}):null,e(b,{source:o.body})]})}export{j as SkillsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{X,l,r,t,ut,p,e,n,a,C,H,je,d,Lt,$e,kt,Dt,Ut}from"./chunk-index-31wh5twj.js";import{fn,pn,mn,wt}from"./chunk-index-wmbmmrd4.js";import{On}from"./chunk-index-bvfqjh77.js";import{Ir,gt}from"./chunk-index-gpkzhq1g.js";fn();function v(){let o=d((c)=>JSON.stringify(Ir(c,(s)=>gt(c,s),(s)=>je(c,s)>0,!0).map((s)=>({id:s.id,...s.title===void 0?{}:{title:s.title},entries:s.keys.map((u)=>({key:u,name:c.rooms[u]?.view?.displayName??u,waiting:je(c,u)>0}))})))),m=mn(),y=l(o);if(!m)y.current=o;let f=y.current;return X(()=>JSON.parse(f),[f])}function b(o){let{key:m,name:y}=o.entry,f=d((i)=>i.rooms[m]),c=d((i)=>je(i,m)),s=f?.view,u=$e(s?.character),g=wt(()=>kt(m,o.onLeave),o.liftable&&!s?.home?pn(m):void 0);if(!s)return null;return e("li",{...o.liftable&&!s.home?{"data-drop-item":"","data-key":m}:{},children:n("a",{className:"switcher-row",...g,href:C("room",m),"aria-current":m===o.current?"page":void 0,style:u,onClick:(i)=>{if(i.button!==0||i.metaKey||i.ctrlKey||i.shiftKey||i.altKey)return;i.preventDefault(),o.onPick(m)},children:[n("span",{className:"switcher-picture",children:[e(Ut,{view:s,size:40}),c?e("span",{className:"switcher-dot","aria-hidden":"true"}):null]}),n("span",{className:"switcher-name",children:[e("strong",{children:y}),f?.typing?n("span",{className:"switcher-working",children:[n("span",{className:"typing","aria-hidden":"true",children:[e("i",{}),e("i",{}),e("i",{})]}),t("Working")]}):null]}),c?e("span",{className:"badge badge-warn",children:ut(c,"{count} card waiting","{count} cards waiting")}):null,s.muted?n("span",{className:"switcher-mode","data-mode":"muted",title:t("Notifications are off"),children:[e(a,{name:"bell-off",size:14}),e("span",{className:"visually-hidden",children:t("Notifications are off")})]}):null,f?.mode.yolo?n("span",{className:"switcher-mode","data-mode":"yolo",title:t("Yolo"),children:[e(a,{name:"bolt",size:14}),e("span",{className:"visually-hidden",children:t("Yolo")})]}):null,f?.mode.longRunning?n("span",{className:"switcher-mode","data-mode":"long",title:t("Long-running"),children:[e(a,{name:"timer",size:14}),e("span",{className:"visually-hidden",children:t("Long-running")})]}):null]})})}function Y(o){let[m,y]=r(""),f=v(),c=f.map((i)=>({...i,entries:i.entries.filter((h)=>On(m,h.name)!==void 0)})).filter((i)=>i.entries.length>0||m===""),s=(i)=>o.close(i===o.current?void 0:()=>H("room",i)),u=f.some((i)=>i.id!=="waiting"&&i.id!=="home"&&i.id!=="rest"&&(i.id!=="pinned"||i.entries.length>0))?t("Ungrouped"):t("Rooms"),g=c.filter((i)=>i.entries.length>0).length>1;return n(p,{children:[n("div",{className:"switcher-search",children:[e(a,{name:"search",size:16}),e("input",{type:"search",value:m,placeholder:t("Find a room"),"aria-label":t("Find a room"),enterKeyHint:"go",autoComplete:"off",onChange:(i)=>y(i.target.value),onKeyDown:(i)=>{let h=c.flatMap((w)=>w.entries)[0];if(i.key==="Enter"&&h&&!Lt(i.nativeEvent))s(h.key)}}),e("button",{type:"button",className:"icon-button switcher-add","aria-label":t("Add"),"aria-haspopup":"menu",onClick:(i)=>Dt(i.currentTarget,o.close),children:e(a,{name:"plus"})})]}),e("div",{className:"switcher-scroll","data-drop-root":"",children:c.map((i)=>{let h=i.id==="waiting",w=i.id==="pinned"?"pinned":i.id==="rest"?"rest":h||i.id==="home"?void 0:"folder";return n("section",{"aria-label":h?t("Waiting for you"):i.id==="home"?t("Home"):i.id==="pinned"?t("Pinned"):i.id==="rest"?u:i.title??t("Rooms"),...i.entries.length===0?{"data-empty":""}:{},...w?{"data-drop-zone":w,"data-zone-id":i.id,...w==="folder"?{"data-folder":i.id}:{}}:{},children:[h?e("h2",{className:"switcher-heading","data-waiting":"",children:t("Waiting for you")}):g||i.entries.length===0?e("h2",{className:"switcher-heading",children:i.id==="home"?t("Home"):i.id==="pinned"?t("Pinned"):i.id==="rest"?u:i.title}):null,e("ul",{className:"switcher-list",children:i.entries.map((N)=>e(b,{entry:N,current:o.current,onPick:s,onLeave:o.close,liftable:!h&&i.id!=="home"},N.key))})]},i.id)})})]})}export{Y as SwitcherList};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,W,P,s,r,t,e,n,He,H,d,Vn,_n,Xt,Oe,dr}from"./chunk-index-31wh5twj.js";import{ji,gn}from"./chunk-index-4dy94pbz.js";import"./chunk-index-5d8yjj4m.js";var C=P(()=>(O("wqkjn8bc"),import("./chunk-table-seats-wqkjn8bc.js")).then((a)=>({default:a.TableSeatsSheet}))),w=300;function A(a){let[c,u]=r(!1);return s(()=>{if(!a){u(!1);return}if(He()){u(!0);return}let i=setTimeout(()=>u(!0),w);return()=>clearTimeout(i)},[a]),c}function v(a,c,u,i){dr(a).then((f)=>{if(f)Oe({...f,at:c,via:u,source:i})},()=>{return})}function _({focus:a}){let[c,u]=r(),i=Vn(void 0),f=_n(),[k,g]=r(!1),[S,T]=r(!1),h=d((o)=>o.listed),l=ji(a,i),p=i.find((o)=>o.name===l);s(()=>{if(a&&h&&l===null)H("table",void 0,{replace:!0})},[a,h,l]);let M=A(l!==null),b=(o)=>{if(o===l)return;H("table",o??void 0,{replace:l!==null})},y=()=>{T(!0),g(!0)},R=i.length===0&&f.length>0;return n("div",{className:"table-page","data-focused":l!==null||void 0,children:[n("header",{className:"page-head",children:[e("h1",{children:t("Round table")}),n("div",{className:"table-tools",children:[c?.kind==="webgl"?e("button",{type:"button",className:"secondary",onClick:()=>b(null),children:t("Reset view")}):null,f.length>0?e("button",{type:"button",className:"secondary","aria-haspopup":"dialog",onClick:y,children:t("Who's at the table")}):null]})]}),n("div",{className:"table-frame","data-focused":l!==null||void 0,children:[R?n("div",{className:"table-empty-state",children:[e("strong",{children:t("The table is empty")}),e("p",{className:"meta",children:t("Every agent has left the table. Choose who sits down.")}),e("button",{type:"button",onClick:y,children:t("Who's at the table")})]}):e(Xt,{onHandle:u,focus:l,onFocus:b,onSeat:b,onSeatMenu:(o)=>{let m=i.find((N)=>N.name===o.id);if(m)v(m.key,o.at,o.via,o.source)}}),p?e(gn,{roomKey:p.key,open:M,onBack:()=>b(null),onMenu:(o)=>{let m=o.getBoundingClientRect();v(p.key,{x:m.left,y:m.bottom},"key",o)}},p.key):null]}),S?e(W,{fallback:null,children:e(C,{open:k,onClose:()=>g(!1)})}):null]})}export{_ as TablePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D,r,t,e,n,_n,Ut}from"./chunk-index-31wh5twj.js";import{Ye}from"./chunk-index-27qca4mr.js";import{ze}from"./chunk-index-pa2yyqh0.js";import{N}from"./chunk-index-5d8yjj4m.js";function u({view:s}){let o=D(),[a,m]=r(!1),l=s.muted===!0;return e("li",{children:n("label",{className:"menu-item menu-toggle seat-row",htmlFor:o,children:[e(Ut,{view:s,size:40}),n("span",{className:"menu-text",children:[e("strong",{children:s.displayName}),l?e("span",{className:"meta",children:t("Off the table")}):null]}),e(Ye,{id:o,checked:!l,label:s.displayName,busy:a,onChange:async(i)=>{m(!0),await ze(s.key,!i),m(!1)}})]})})}function g(s){let o=_n();return e(N,{open:s.open,title:t("Who's at the table"),onClose:s.onClose,children:n("div",{className:"stack table-seats",children:[e("p",{className:"meta",children:t("An agent who leaves the table is muted: its room stops pushing to you. A card that waits for you is always pushed.")}),e("ul",{className:"menu",children:o.map((a)=>e(u,{view:a},a.key))})]})})}export{g as TableSeatsSheet};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s,l,r,t,c,p,e,n,C,x,y,_,L,m,Q,J,wn}from"./chunk-index-31wh5twj.js";import{fe}from"./chunk-index-hk3xyy20.js";function O({conversationKey:o}){let[d,v]=r(),u=l(!1),{data:a,error:f}=fe(()=>m.transcript(o,d),`${o}|${d??""}`);s(()=>{if(a&&!u.current)u.current=!0,window.scrollTo(0,document.body.scrollHeight)},[a]);let g=n("a",{className:"back",href:C("conversations"),children:["← ",t("Conversations")]});if(!a)return n(p,{children:[g,f?e(y,{message:f}):e(x,{})]});let{conversation:h}=a,N=h.kind==="outside"?t("Outside agent · {id}",{id:h.id.slice(0,8)}):wn(h);return n(p,{children:[g,n("section",{className:"stack",children:[n("div",{className:"card-head",children:[e("h2",{children:N}),h.busy>0?e(L,{tone:"busy",children:t("running")}):null]}),a.archives.length>0?n("label",{className:"inline",children:[t("Showing")," ",n("select",{value:d??"",onChange:(i)=>{u.current=!1,v(i.target.value||void 0)},children:[e("option",{value:"",children:t("Current conversation")}),a.archives.map((i)=>e("option",{value:i,children:t("Archived {name}",{name:i})},i))]})]}):null,f?e(y,{message:f}):null,a.truncated?e("p",{className:"hint",children:t("This conversation is longer than the console reads; the oldest entries are not shown.")}):null,a.entries.length===0?e(_,{children:t("Nothing to show.")}):null,e("ol",{className:"transcript",children:a.entries.map((i,T)=>e(w,{entry:i},T))})]})]})}function w({entry:o}){let{timeZone:d}=Q(),v=o.at?J(o.at,d):"";if(o.role==="tool")return e("li",{className:"entry entry-tool",children:n("details",{children:[n("summary",{children:[o.failed?t("Tool failed"):t("Tool result"),o.tool?` · ${o.tool}`:""]}),e("pre",{children:o.text||t("(empty)")})]})});return n("li",{className:`entry entry-${o.role}`,children:[n("div",{className:"entry-head",children:[e("span",{className:"role",children:t(E[o.role])}),e("span",{className:"meta",children:v})]}),o.text?e("p",{className:"text",children:o.text}):null,o.calls?.map((u,a)=>n("code",{className:"call",children:[u.name," ",u.preview]},a))]})}var E={user:c("User"),assistant:c("Assistant"),tool:c("Tool"),compaction:c("Summary of earlier conversation")};export{O as TranscriptPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O,At,Y,Ae,s,D,X,l,r,t,c,p,e,n,a,C,xn,H,Ln,x,y,_,L,h,me,b,f,Q,Ie,J,we}from"./chunk-index-31wh5twj.js";import{re}from"./chunk-index-ky42ev0b.js";import{pe}from"./chunk-index-b9ny4623.js";import{N}from"./chunk-index-5d8yjj4m.js";function ot(o,i,m){let[u,d]=r();s(()=>{if(!o)return;let k=(w)=>w.preventDefault(),M=(w)=>{if(w.button!==0||w.metaKey||w.ctrlKey||w.shiftKey||w.altKey)return;let W=w.target instanceof Element?w.target.closest("a"):null;if(!W||W.target||W.hasAttribute("download"))return;if(i.current?.contains(W))return;w.preventDefault(),w.stopPropagation(),d({kind:"link",anchor:W})},T=xn((w)=>d({kind:"navigate",proceed:w}));return window.addEventListener("beforeunload",k),document.addEventListener("click",M,!0),()=>{T(),window.removeEventListener("beforeunload",k),document.removeEventListener("click",M,!0)}},[o,i]);let g=Y(()=>d(void 0),[]),E=Y(()=>{let k=u;if(m(),d(void 0),k?.kind==="link")setTimeout(()=>k.anchor.click(),0);else if(k?.kind==="navigate")k.proceed()},[u,m]);return{leaving:u,stay:g,leave:E}}var se=(o)=>`workspace/${encodeURIComponent(o)}`,Ne=(o)=>`path=${encodeURIComponent(o)}`,je=(o)=>({body:JSON.stringify(o)});function ze(o){if(!(o instanceof me)||o.status!==409)return;let i=o.body;return i?.conflict==="changed"||i?.conflict==="gone"||i?.conflict==="exists"?i:void 0}var U={roots:()=>b("workspace"),list:(o,i)=>b(`${se(o)}/list?${Ne(i)}`),file:(o,i)=>b(`${se(o)}/file?${Ne(i)}`),save:(o,i,m,u)=>b(`${se(o)}/file?${Ne(i)}`,{method:"PUT",...je({text:m,baseHash:u})}),create:(o,i,m,u)=>b(`${se(o)}/new?${Ne(i)}`,{method:"POST",...je({kind:m,...u===void 0?{}:{text:u}})}),rename:(o,i,m)=>b(`${se(o)}/rename`,{method:"POST",...je({from:i,to:m})}),remove:(o,i)=>b(`${se(o)}/entry?${Ne(i)}`,{method:"DELETE"}),trash:(o)=>b(`${se(o)}/trash`),restore:(o,i)=>b(`${se(o)}/trash/${encodeURIComponent(i)}/restore`,{method:"POST"}),purge:(o,i)=>b(`${se(o)}/trash/${encodeURIComponent(i)}`,{method:"DELETE"})},ge=(o,i,m=!1)=>`api/${se(o)}/raw?${Ne(i)}${m?"&download=1":""}`;var Re=(o)=>o.split("/").filter(Boolean),be=(o)=>Re(o).slice(0,-1).join("/"),Ce=(o,i)=>o?`${o}/${i}`:i,Se=(o)=>`${o.root}:${o.path}${o.dir&&o.path?"/":""}`;function st(o){if(!o)return;let i=o.indexOf(":");if(i<1)return;let m=o.slice(i+1);return{root:o.slice(0,i),path:m.replace(/\/+$/,""),dir:m===""||m.endsWith("/")}}var it={folder:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z","folder-plus":"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7ZM12 10v6M9 13h6","file-plus":"M6 3h9l4 4v14H6zM14 3v5h5M12 12v6M9 15h6"},bt=(o)=>(o in it);function ve(o){let{name:i,size:m=20,className:u}=o;if(!bt(i))return e(a,{name:i,size:m,...u?{className:u}:{}});return e("svg",{viewBox:"0 0 24 24",width:m,height:m,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",...u?{className:u}:{},children:e("path",{d:it[i]})})}function Ye(o){return n("div",{className:"ws-media-actions",children:[o.open?e("a",{className:"button-link",href:ge(o.root,o.path),target:"_blank",rel:"noopener",children:t("Open")}):null,n("a",{className:"button-link",href:ge(o.root,o.path,!0),download:o.name,children:[e(a,{name:"download",size:18}),t("Download")]})]})}function Xe(o){let i=o.name.lastIndexOf("."),m=i>0?o.name.slice(i+1).toUpperCase():"";return n("div",{className:"card ws-card",children:[e("span",{className:"ws-card-icon","aria-hidden":"true",children:e(a,{name:"file",size:32})}),e("strong",{children:o.name}),e("span",{className:"meta",children:[m,we(o.bytes)].filter(Boolean).join(" · ")}),e("p",{children:o.message}),e(Ye,{root:o.root,path:o.path,name:o.name})]})}var vt=(o)=>!o&&navigator.pdfViewerEnabled!==!1;function rt(o){let{media:i,root:m,path:u,name:d,bytes:g,phone:E,onFacts:k}=o,[M,T]=r(!1),[w,W]=r(!1);s(()=>(T(!1),W(!1),k(void 0),()=>k(void 0)),[m,u]);let S=ge(m,u);if(M)return e(Xe,{root:m,path:u,name:d,bytes:g,message:t("This browser cannot show this file.")});switch(i){case"image":return e("div",{className:"ws-media ws-image","data-actual":w||void 0,children:e("button",{type:"button",className:"ws-image-toggle","aria-label":w?t("Fit to window"):t("Show at full size"),title:w?t("Fit to window"):t("Show at full size"),onClick:()=>W((P)=>!P),children:e("img",{src:S,alt:d,onLoad:(P)=>{let{naturalWidth:G,naturalHeight:K}=P.currentTarget;k(G>0?`${G} × ${K}`:void 0)},onError:()=>T(!0)})})});case"pdf":return vt(E)?n("div",{className:"ws-media ws-pdf-frame",children:[e("iframe",{className:"ws-pdf",src:S,title:d}),e(Ye,{root:m,path:u,name:d,open:!0})]}):e("div",{className:"ws-media",children:n("div",{className:"card ws-card",children:[e("span",{className:"ws-card-icon","aria-hidden":"true",children:e(a,{name:"file",size:32})}),e("strong",{children:d}),n("span",{className:"meta",children:["PDF · ",we(g)]}),e(Ye,{root:m,path:u,name:d,open:!0})]})});case"audio":return e("div",{className:"ws-media ws-sound",children:e("audio",{controls:!0,preload:"metadata",src:S,onError:()=>T(!0)})});case"video":return e("div",{className:"ws-media ws-film",children:e("video",{controls:!0,playsInline:!0,preload:"metadata",src:S,onLoadedMetadata:(P)=>{let{videoWidth:G,videoHeight:K}=P.currentTarget;k(G>0?`${G} × ${K}`:void 0)},onError:()=>T(!0)})})}}var kt={"read-only-root":c("this place is read-only"),"git-dir":c("inside .git"),trash:c("in the trash"),symlink:c("a link"),binary:c("binary file"),"too-large":c("too large"),"not-utf8":c("not UTF-8")};function qe(o){if(o.id==="agents")return t("Agents' workspace");if(o.id==="scratch")return t("Scratch");return o.label}var ct=new Set([".git","node_modules"]),_e=(o)=>`roundtable.workspace.open.${o}`,dt="roundtable.workspace.tree",lt="roundtable.workspace.wrap";function Ze(o,i){try{let m=localStorage.getItem(o);return m===null?i:JSON.parse(m)}catch{return i}}function Ve(o,i){try{localStorage.setItem(o,JSON.stringify(i))}catch{}}var Te=At({rev:0,bump:()=>{return}});function ut(o,i,m=!0){let{rev:u}=Ae(Te),[d,g]=r(0),[E,k]=r({key:""}),M=`${o}:${i}`;return s(()=>{let T=()=>g((w)=>w+1);return window.addEventListener("focus",T),()=>window.removeEventListener("focus",T)},[]),s(()=>{if(!m)return;let T=!0;return U.list(o,i).then((w)=>T&&k({key:M,data:w}),(w)=>T&&k({key:M,error:f(w)})),()=>{T=!1}},[o,i,m,u,d]),E.key===M?{data:E.data,error:E.error}:{data:void 0,error:void 0}}var xe=(o)=>C("workspace",Se(o));function Ge(o,i,m){let u=Ce(i,m.name);if(m.kind==="dir")return{root:o,path:u,dir:!0};if(m.kind==="file")return{root:o,path:u,dir:!1};if(m.kind==="symlink"&&m.inside)return{root:o,path:u,dir:m.target==="dir"};return}function yt(o){let i=Re(o.path),m=l(null);return s(()=>{m.current?.scrollIntoView?.({inline:"end",block:"nearest"})},[o.path]),n("nav",{className:"ws-crumbs","aria-label":t("Path"),children:[e("a",{ref:i.length===0?m:void 0,href:xe({root:o.root.id,path:"",dir:!0}),"aria-current":i.length===0?"page":void 0,children:qe(o.root)}),i.map((u,d)=>{let g=i.slice(0,d+1).join("/"),E=d===i.length-1;return e("a",{ref:E?m:void 0,href:xe({root:o.root.id,path:g,dir:!0}),"aria-current":E?"page":void 0,children:u},g)})]})}function mt(o){let{data:i,error:m}=ut(o.root,o.path);if(m)return e("p",{className:"ws-tree-note",children:m});if(!i)return e("p",{className:"ws-tree-note",children:"…"});if(i.entries.length===0)return e("p",{className:"ws-tree-note",children:t("This folder is empty")});return n("ul",{className:"ws-tree-list","data-depth":o.depth,children:[i.entries.map((u)=>{let d=Ge(o.root,o.path,u),g=Ce(o.path,u.name),E=d?.dir===!0,k=E&&o.open.has(g),M=o.current?.root===o.root&&o.current.path===g&&o.current.dir===E;return n("li",{children:[n("div",{className:"ws-tree-row","data-selected":M||void 0,"data-quiet":ct.has(u.name)||void 0,style:{paddingLeft:`${0.25+o.depth*0.875}rem`},children:[E?e("button",{type:"button",className:"ws-twist","aria-expanded":k,"aria-label":t("Show or hide {name}",{name:u.name}),onClick:()=>o.toggle(g),children:e(a,{name:"chevron",size:14})}):e("span",{className:"ws-twist"}),d?n("a",{href:xe(d),title:u.name,children:[e(ve,{name:E?"folder":"file",size:15}),e("span",{className:"ws-tree-label",children:u.name})]}):n("span",{className:"ws-tree-off",title:u.inside===!1?t("Outside the workspace"):"",children:[e(a,{name:"file",size:15}),e("span",{className:"ws-tree-label",children:u.name})]})]}),k?e(mt,{root:o.root,path:g,depth:o.depth+1,open:o.open,toggle:o.toggle,current:o.current}):null]},u.name)}),i.truncated?e("li",{className:"ws-tree-note",children:t("Only the first 2,000 items are listed")}):null]})}function Nt(o){let{data:i,error:m}=ut(o.root.id,o.path),{timeZone:u}=Q();if(m)return e(y,{message:m});if(!i)return e(x,{});if(i.missing)return e(_,{children:t("No files yet")});if(i.entries.length===0)return e(_,{children:t("This folder is empty")});return n(p,{children:[e("ul",{className:"ws-rows",children:i.entries.map((d)=>{let g=Ge(o.root.id,o.path,d),E=n(p,{children:[e(ve,{name:g?.dir?"folder":"file",size:20,className:"ws-row-icon"}),n("span",{className:"ws-row-main",children:[e("strong",{children:d.name}),e("span",{className:"meta",children:d.kind==="symlink"&&d.inside===!1?t("Outside the workspace"):d.kind==="other"?t("Not a regular file"):[g?.dir?void 0:we(d.size),J(new Date(d.mtimeMs).toISOString(),u)].filter(Boolean).join(" · ")})]})]});return n("li",{className:"ws-row","data-quiet":ct.has(d.name)||void 0,children:[g?e("a",{className:"ws-row-link",href:xe(g),children:E}):e("span",{className:"ws-row-link","data-off":!0,children:E}),o.root.writable||g?e("button",{type:"button",className:"icon-button","aria-label":t("Actions for {name}",{name:d.name}),onClick:()=>o.onMenu(d),children:e(a,{name:"menu"})}):null]},d.name)})}),i.truncated?e("p",{className:"meta",children:t("Only the first 2,000 items are listed")}):null]})}function Ct(o){let{timeZone:i}=Q(),{bump:m}=Ae(Te),{root:u,path:d}=o,[g,E]=r(),[k,M]=r(),[T,w]=r("read"),[W,S]=r(!1),[P,G]=r(!1),[K,He]=r(()=>Ze(lt,o.phone)),[We,ee]=r(!1),[Ee,ke]=r(),[I,F]=r(!1),[B,le]=r(!1),[Le,Ue]=r(!1),[ce,ie]=r(),[V,ue]=r(),[ye,Me]=r(),fe=l(null),z=l(void 0),R=l(null),ae=l(g);ae.current=g;let j=l(T);j.current=T;let q=Re(d).at(-1)??d,$e=g?.text!==void 0,De=$e&&(g?.media===void 0||I),Je=Y(async()=>{let v=await U.file(u.id,d);return E(v),v},[u.id,d]);s(()=>{let v=!0;return U.file(u.id,d).then((A)=>v&&E(A),(A)=>v&&M(f(A))),()=>{v=!1}},[u.id,d]);let Ke=ot(W,R,()=>{let v=ae.current;if(v?.text!==void 0)z.current?.replace(v.text,v.eol);S(!1),w("read")});s(()=>{if(!W)return;let v=document.title;return document.title=`• ${v}`,()=>{document.title=v}},[W]);let Oe=Y(async(v,A)=>{let de=ae.current,Z=z.current;if(!de||!Z||P)return;let te=A===void 0?Z.snapshot():void 0,Fe=A??Z.text();G(!0);try{let ne=await U.save(u.id,d,Fe,v??de.hash);Z.markSaved(te),S(Z.dirty()),ie(void 0),E({...de,hash:ne.hash,size:ne.size,mtimeMs:ne.mtimeMs,text:Fe}),h(t("Saved")),m()}catch(ne){let oe=ze(ne);if(oe)ue({kind:oe.conflict==="gone"?"gone":"changed",...oe.current?{hash:oe.current.hash}:{},text:Fe});else h(f(ne),"danger")}finally{G(!1)}},[u.id,d,P,m]),Qe=l(Oe);Qe.current=Oe;let he=Y(async()=>{try{let v=await Je();if(v.text!==void 0)z.current?.replace(v.text,v.eol);S(!1),ie(void 0),ue(void 0)}catch(v){h(f(v),"danger")}},[Je]),ft=l(he);ft.current=he;let Be=Y(()=>{if(z.current?.dirty()){et(!0);return}w("read")},[]),[pt,et]=r(!1),tt=l(Be);tt.current=Be,s(()=>{if(!De||!fe.current)return;let v=ae.current;if(!v||v.text===void 0)return;let A=!1,de;return (O("gdbdg7rp"),import("./chunk-codeeditor-gdbdg7rp.js")).then(async({createEditor:Z})=>{if(A||!fe.current)return;let te=await Z({parent:fe.current,text:v.text??"",eol:v.eol,language:v.language,editable:!1,wrap:K,phrases:{Find:t("Find"),Replace:t("Replace"),next:t("next"),previous:t("previous"),all:t("all"),"match case":t("match case"),regexp:t("regexp"),"by word":t("by word"),replace:t("replace"),"replace all":t("replace all"),close:t("close")},onChange:()=>S(te.dirty()),onSave:()=>{if(j.current==="edit"&&te.dirty())Qe.current()},onEscape:()=>{if(j.current==="edit")tt.current()}});if(A){te.destroy();return}de=te,z.current=te,le(!0)}).catch((Z)=>{if(console.warn("the editor failed to load",Z),!A)Ue(!0)}),()=>{A=!0,de?.destroy(),z.current=void 0,le(!1)}},[De,u.id,d]),s(()=>{if(!B)return;let v=T==="edit"&&g?.editable===!0;if(z.current?.setEditable(v),v)z.current?.focus()},[T,B,g?.editable]),s(()=>{if(!B)return;z.current?.setWrap(K),Ve(lt,K)},[K,B]);let nt=g!==void 0;if(s(()=>{if(!nt)return;let v=!1,A=async()=>{if(v||document.visibilityState==="hidden")return;let te=ae.current;if(!te)return;v=!0;try{let ne=(await U.list(u.id,be(d))).entries.find((wt)=>wt.name===q);if(!ne){ie("gone");return}if(ne.kind==="symlink")return;if(ne.size===te.size&&ne.mtimeMs===te.mtimeMs)return;if(j.current==="edit"&&z.current?.dirty()){ie("changed");return}let oe=await U.file(u.id,d);if(oe.hash!==te.hash){if(E(oe),oe.text!==void 0)z.current?.replace(oe.text,oe.eol)}ie(void 0)}catch{}finally{v=!1}},de=setInterval(()=>void A(),5000),Z=()=>void A();return window.addEventListener("focus",Z),document.addEventListener("visibilitychange",Z),()=>{clearInterval(de),window.removeEventListener("focus",Z),document.removeEventListener("visibilitychange",Z)}},[nt,u.id,d,q]),k)return e("div",{className:"ws-file",children:e(y,{message:k})});if(!g)return e("div",{className:"ws-file",children:e(x,{})});let at=g.reason,ht=!g.editable?e(L,{tone:"warn",children:t("Read only: {reason}",{reason:at?t(kt[at]):""})}):null,Pe=T==="edit",gt=n("div",{className:"ws-actions",children:[g.editable&&!Pe?e("button",{type:"button",onClick:()=>{F(!0),w("edit")},children:t("Edit")}):null,Pe?n(p,{children:[e("button",{type:"button",disabled:P||!W,onClick:()=>void Oe(),children:t("Save")}),e("button",{type:"button",className:"secondary",onClick:Be,children:t("Cancel")})]}):null,e("button",{type:"button",className:"icon-button","aria-label":t("File menu"),onClick:()=>ee(!0),children:e(a,{name:"menu"})})]});return n("div",{className:"ws-file",ref:R,children:[n("header",{className:"ws-file-head",children:[n("div",{className:"ws-file-title",children:[n("strong",{children:[W?"• ":"",q]}),n("span",{className:"meta",children:[we(g.size),Ee?` · ${Ee}`:""," ·"," ",J(new Date(g.mtimeMs).toISOString(),i)]})]}),ht,gt]}),ce?n("div",{className:"ws-banner",role:"status",children:[e("span",{className:"ws-banner-text",children:ce==="gone"?t("This file is gone"):t("A partner is changing this file")}),ce==="changed"?n(p,{children:[e("button",{type:"button",className:"secondary",onClick:()=>void he(),children:t("Reload (discard my edits)")}),e("button",{type:"button",className:"secondary",onClick:()=>ie(void 0),children:t("Keep editing")})]}):null]}):null,e("div",{className:"ws-view",children:g.media&&!De?e(rt,{media:g.media,root:u.id,path:d,name:q,bytes:g.size,phone:o.phone,onFacts:ke}):De?e("div",{ref:fe,className:"ws-editor","data-editing":Pe||void 0,children:!B?e("pre",{className:"ws-plain","aria-busy":!Le,children:g.text}):null}):e(Xe,{root:u.id,path:d,name:q,bytes:g.size,message:g.tooLarge?t("This file is too large to show here."):t("This file is not text, so it cannot be shown here.")})}),o.phone&&Pe?n("div",{className:"ws-editbar",role:"toolbar","aria-label":t("Editing"),children:[e("button",{type:"button",disabled:P||!W,onClick:()=>void Oe(),children:t("Save")}),e("button",{type:"button",className:"secondary",onClick:()=>z.current?.undo(),children:t("Undo")}),e("button",{type:"button",className:"secondary",onClick:()=>z.current?.redo(),children:t("Redo")}),e("button",{type:"button",className:"secondary",onClick:()=>z.current?.find(),children:t("Find")}),e("button",{type:"button",className:"secondary",onClick:()=>z.current?.tab(),children:t("Tab")})]}):null,e(N,{open:We,title:q,onClose:()=>ee(!1),children:e("div",{className:"stack",children:n("ul",{className:"more-list",children:[$e?e("li",{children:e("button",{type:"button",className:"menu-item",onClick:()=>{He((v)=>!v),ee(!1)},children:e("span",{className:"menu-text",children:e("strong",{children:K?t("Do not wrap lines"):t("Wrap lines")})})})}):null,e("li",{children:n("a",{className:"menu-item menu-link",href:ge(u.id,d,!0),download:q,onClick:()=>ee(!1),children:[e("span",{className:"menu-icon",children:e(a,{name:"download"})}),e("span",{className:"menu-text",children:e("strong",{children:t("Download")})})]})}),e("li",{children:n("button",{type:"button",className:"menu-item",onClick:()=>{ee(!1),he()},children:[e("span",{className:"menu-icon",children:e(a,{name:"refresh"})}),e("span",{className:"menu-text",children:e("strong",{children:t("Reload")})})]})})]})})}),e(pe,{open:V!==void 0,title:V?.kind==="gone"?t("This file is gone"):t("This file changed while you were editing"),onClose:()=>ue(void 0),children:n("div",{className:"stack",children:[e("p",{children:V?.kind==="gone"?t("Someone deleted it. Your text has not been saved."):t("Your text has not been saved. What should happen to it?")}),n("div",{className:"actions",children:[e("button",{type:"button",className:"secondary",onClick:()=>{navigator.clipboard?.writeText(V?.text??"").then(()=>h(t("Copied")))},children:t("Copy my text")}),V?.kind==="changed"?e("button",{type:"button",className:"secondary",onClick:()=>void he(),children:t("Reload (discard my edits)")}):null,e("button",{type:"button",className:"danger",onClick:()=>{if(!V)return;if(V.kind==="gone"){let v=V.text;ue(void 0),U.create(u.id,d,"file",v).then(async()=>{await he(),m()}).catch((A)=>h(f(A),"danger"));return}Me({hash:V.hash??"",text:V.text}),ue(void 0)},children:V?.kind==="gone"?t("Save mine as a new file"):t("Save mine anyway")})]})]})}),e(re,{open:ye!==void 0,title:t("Replace the partner's changes?"),confirmLabel:t("Save mine anyway"),tone:"danger",onClose:()=>Me(void 0),onConfirm:async()=>{if(!ye)return;await U.save(u.id,d,ye.text,ye.hash),await he(),h(t("Saved")),m()},children:e("p",{children:t("The file has been changed since you opened it. Saving yours writes over those changes.")})}),e(re,{open:pt,title:t("Unsaved changes, leave?"),confirmLabel:t("Discard"),cancelLabel:t("Keep editing"),tone:"danger",onClose:()=>et(!1),onConfirm:async()=>{if(g.text!==void 0)z.current?.replace(g.text,g.eol);S(!1),w("read")},children:e("p",{children:t("Your edits to {name} have not been saved.",{name:q})})}),e(re,{open:Ke.leaving!==void 0,title:t("Unsaved changes, leave?"),confirmLabel:t("Discard"),cancelLabel:t("Keep editing"),tone:"danger",onClose:Ke.stay,onConfirm:async()=>Ke.leave(),children:e("p",{children:t("Your edits to {name} have not been saved.",{name:q})})})]})}function xt(o){let{ask:i}=o,[m,u]=r(""),[d,g]=r(),[E,k]=r(!1),M=D();s(()=>{u(i?.kind==="rename"?i.name:""),g(void 0)},[i]);let T=i?.kind==="rename"?t("Rename"):i?.kind==="dir"?t("New folder"):t("New file"),w=async(W)=>{if(W.preventDefault(),!i)return;let S=m.trim();if(!S||S.includes("/")){g(t("Use a name without slashes."));return}k(!0),g(void 0);try{if(i.kind==="rename"){let P=Ce(be(i.path),S);await U.rename(o.root.id,i.path,P),h(t("Renamed")),o.onDone()}else{let P=Ce(i.dir,S);await U.create(o.root.id,P,i.kind),h(t("Created")),o.onDone({root:o.root.id,path:P,dir:i.kind==="dir"})}}catch(P){let G=ze(P);g(G?.conflict==="exists"?t("Something with that name is already there."):f(P))}finally{k(!1)}};return e(pe,{open:i!==void 0,title:T,onClose:o.onClose,children:n("form",{className:"stack",onSubmit:w,children:[e("label",{htmlFor:M,children:t("Name")}),e("input",{id:M,value:m,autoComplete:"off",autoCapitalize:"off",spellCheck:!1,onChange:(W)=>u(W.target.value)}),d?e(y,{message:d}):null,n("div",{className:"actions",children:[e("button",{type:"button",className:"secondary",onClick:o.onClose,children:t("Cancel")}),e("button",{type:"submit",disabled:E||!m.trim(),children:i?.kind==="rename"?t("Rename"):t("Create")})]})]})})}function Et(o){let{bump:i,rev:m}=Ae(Te),[u,d]=r(),[g,E]=r(),[k,M]=r(),{timeZone:T}=Q();return s(()=>{if(!o.open)return;let w=!0;return U.trash(o.root.id).then((W)=>w&&d(W.items),(W)=>w&&E(f(W))),()=>{w=!1}},[o.open,o.root.id,m]),n(pe,{open:o.open,title:t("Trash"),onClose:o.onClose,children:[n("div",{className:"stack",children:[g?e(y,{message:g}):null,!u&&!g?e(x,{}):null,u?.length===0?e(_,{children:t("The trash is empty")}):null,e("ul",{className:"ws-rows",children:u?.map((w)=>n("li",{className:"ws-row",children:[n("span",{className:"ws-row-link","data-off":!0,children:[e(ve,{name:w.kind==="dir"?"folder":"file",size:20,className:"ws-row-icon"}),n("span",{className:"ws-row-main",children:[e("strong",{children:w.path}),e("span",{className:"meta",children:J(w.deletedAt,T)})]})]}),e("button",{type:"button",className:"secondary",onClick:async()=>{try{await U.restore(o.root.id,w.id),h(t("Restored")),i()}catch(W){let S=ze(W);h(S?S.conflict==="exists"?t("Something with that name is already there."):t("The folder it was in is gone."):f(W),"danger")}},children:t("Restore")}),e("button",{type:"button",className:"icon-button danger-icon","aria-label":t("Delete {name} for good",{name:w.name}),onClick:()=>M(w),children:e(a,{name:"trash"})})]},w.id))})]}),e(re,{open:k!==void 0,title:t("Delete for good?"),confirmLabel:t("Delete for good"),tone:"danger",onClose:()=>M(void 0),onConfirm:async()=>{if(!k)return;await U.purge(o.root.id,k.id),i()},children:e("p",{children:t("“{name}” will be removed and cannot be brought back.",{name:k?.path??""})})})]})}function ln(){let o=Ln(),i=!Ie("(min-width: 720px)"),[m,u]=r(0),d=Y(()=>u((R)=>R+1),[]),g=X(()=>({rev:m,bump:d}),[m,d]),[E,k]=r(),[M,T]=r();s(()=>{U.roots().then((R)=>k(R.roots),(R)=>T(f(R)))},[]);let[w,W]=r(()=>Ze(dt,280)),[S,P]=r(),[G,K]=r(),[He,We]=r(!1),[ee,Ee]=r(),ke=st(o.key),I=E?.find((R)=>R.id===ke?.root)??(i?void 0:E?.[0]),F=I?ke&&ke.root===I.id?ke:{root:I.id,path:"",dir:!0}:void 0,B=I?.id,le=F?.path,Le=F?.dir,[Ue,ce]=r(new Set);s(()=>{if(!B)return;ce(new Set(Ze(_e(B),[])))},[B]);let ie=Y((R)=>{if(!B)return;ce((ae)=>{let j=new Set(ae);if(j.has(R))j.delete(R);else j.add(R);return Ve(_e(B),[...j]),j})},[B]);if(s(()=>{if(!B||le===void 0||i)return;let R=Re(Le?le:be(le)),ae=R.map((j,q)=>R.slice(0,q+1).join("/"));ce((j)=>{if(ae.every(($e)=>j.has($e)))return j;let q=new Set([...j,...ae]);return Ve(_e(B),[...q]),q})},[B,le,Le,i]),M)return e(y,{message:M});if(!E)return e(x,{});if(E.length===0)return e(_,{children:t("No files yet")});if(!I||!F)return e(Te.Provider,{value:g,children:n("div",{className:"page ws-page",children:[e("header",{className:"page-head",children:e("h1",{children:t("Files")})}),e("ul",{className:"more-list",children:E.map((R)=>e("li",{children:n("a",{className:"menu-item menu-link",href:xe({root:R.id,path:"",dir:!0}),children:[e("span",{className:"menu-icon",children:e(ve,{name:"folder"})}),n("span",{className:"menu-text",children:[e("strong",{children:qe(R)}),R.writable?null:e("span",{className:"meta",children:t("Read only")})]}),e(a,{name:"chevron",size:16})]})},R.id))})]})});let V=F.dir?F.path:be(F.path),ue=F.path===""?{root:I.id,path:"",dir:!0}:{root:I.id,path:be(F.path),dir:!0},ye=n("header",{className:"ws-head",children:[i?e("a",{className:"icon-button","aria-label":t("Back"),href:F.path===""?C("workspace"):xe(ue),children:e(a,{name:"back"})}):e("select",{className:"ws-root-picker","aria-label":t("Place"),value:I.id,onChange:(R)=>H("workspace",Se({root:R.target.value,path:"",dir:!0})),children:E.map((R)=>e("option",{value:R.id,children:qe(R)},R.id))}),e(yt,{root:I,path:F.path}),I.writable?n("div",{className:"ws-head-actions",children:[e("button",{type:"button",className:"icon-button","aria-label":t("New file"),title:t("New file"),onClick:()=>K({kind:"file",dir:V}),children:e(ve,{name:"file-plus"})}),e("button",{type:"button",className:"icon-button","aria-label":t("New folder"),title:t("New folder"),onClick:()=>K({kind:"dir",dir:V}),children:e(ve,{name:"folder-plus"})}),e("button",{type:"button",className:"icon-button","aria-label":t("Trash"),title:t("Trash"),onClick:()=>We(!0),children:e(a,{name:"trash"})})]}):null]}),Me=F.dir?e("div",{className:"ws-dir",children:e(Nt,{root:I,path:F.path,onMenu:(R)=>P(R)})}):e(Ct,{root:I,path:F.path,phone:i},`${I.id}:${F.path}`),fe=S?Ge(I.id,V,S):void 0,z=S?Ce(V,S.name):"";return n(Te.Provider,{value:g,children:[n("div",{className:"ws-page ws","data-wide":!i||void 0,style:{"--ws-tree":`${w}px`},children:[ye,n("div",{className:"ws-body",children:[!i?n(p,{children:[e("aside",{className:"ws-tree","aria-label":t("Folders"),children:e(mt,{root:I.id,path:"",depth:0,open:Ue,toggle:ie,current:F})}),e(Rt,{width:w,onChange:(R)=>{W(R),Ve(dt,R)}})]}):null,e("section",{className:"ws-main",children:Me})]})]}),e(N,{open:S!==void 0,title:S?.name??"",onClose:()=>P(void 0),children:n("ul",{className:"more-list",children:[fe&&!fe.dir?e("li",{children:n("a",{className:"menu-item menu-link",href:ge(I.id,z,!0),download:S?.name,onClick:()=>P(void 0),children:[e("span",{className:"menu-icon",children:e(a,{name:"download"})}),e("span",{className:"menu-text",children:e("strong",{children:t("Download")})})]})}):null,I.writable&&S?n(p,{children:[e("li",{children:n("button",{type:"button",className:"menu-item",onClick:()=>{K({kind:"rename",path:z,name:S.name}),P(void 0)},children:[e("span",{className:"menu-icon",children:e(a,{name:"notes"})}),e("span",{className:"menu-text",children:e("strong",{children:t("Rename")})})]})}),e("li",{children:n("button",{type:"button",className:"menu-item",onClick:()=>{Ee({path:z,name:S.name}),P(void 0)},children:[e("span",{className:"menu-icon",children:e(a,{name:"trash"})}),e("span",{className:"menu-text",children:e("strong",{children:t("Delete")})})]})})]}):null]})}),e(xt,{root:I,ask:G,onClose:()=>K(void 0),onDone:(R)=>{if(K(void 0),d(),R)H("workspace",Se(R))}}),e(Et,{root:I,open:He,onClose:()=>We(!1)}),e(re,{open:ee!==void 0,title:t("Move to the trash?"),confirmLabel:t("Delete"),tone:"danger",onClose:()=>Ee(void 0),onConfirm:async()=>{if(!ee)return;if(await U.remove(I.id,ee.path),h(t("Moved to the trash")),d(),!F.dir&&(F.path===ee.path||F.path.startsWith(`${ee.path}/`)))H("workspace",Se({root:I.id,path:be(F.path),dir:!0}))},children:e("p",{children:t("“{name}” goes to the trash, where you can bring it back.",{name:ee?.name??""})})})]})}function Rt(o){let u=(d)=>Math.min(560,Math.max(180,d));return e("div",{className:"ws-resizer",role:"separator","aria-orientation":"vertical","aria-valuenow":o.width,"aria-valuemin":180,"aria-valuemax":560,"aria-label":t("Resize the folder list"),tabIndex:0,onKeyDown:(d)=>{if(d.key==="ArrowLeft")o.onChange(u(o.width-16));if(d.key==="ArrowRight")o.onChange(u(o.width+16))},onPointerDown:(d)=>{let g=d.clientX,E=o.width,k=d.currentTarget;k.setPointerCapture(d.pointerId);let M=(w)=>o.onChange(u(E+w.clientX-g)),T=()=>{k.removeEventListener("pointermove",M),k.removeEventListener("pointerup",T)};k.addEventListener("pointermove",M),k.addEventListener("pointerup",T)}})}export{ln as WorkspacePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={Live:"即時",Panes:"頁面","Receiving live updates":"正在接收即時更新",Reconnecting:"重新連線中","Reconnecting…":"重新連線中…","Switch to dark":"切換為深色","Switch to light":"切換為淺色","This account is not an owner of this host, so the app stays closed. Reload the page to try again.":"這個帳號不是此主機的擁有者,因此無法開啟應用程式。請重新載入頁面再試一次。",Overview:"總覽",Conversations:"對話",Notes:"記憶",Skills:"技能",Connectors:"連接器",Rooms:"聊天室",Schedules:"排程","Round table":"圓桌",Settings:"設定",More:"更多",Files:"檔案","this place is read-only":"此區唯讀","inside .git":".git 內的檔案","in the trash":"垃圾桶內的檔案","a link":"連結","binary file":"二進位檔","too large":"檔案太大","not UTF-8":"不是 UTF-8","Agents' workspace":"夥伴工作區",Scratch:"暫存區",Path:"路徑","This folder is empty":"這個資料夾是空的","Show or hide {name}":"展開或收合 {name}","Outside the workspace":"連到工作區外","Only the first 2,000 items are listed":"只列出前 2,000 項","No files yet":"還沒有檔案","Not a regular file":"不是一般檔案","Actions for {name}":"{name} 的操作",Saved:"已存檔",Find:"尋找",Replace:"取代",next:"下一個",previous:"上一個",all:"全部","match case":"區分大小寫",regexp:"正規表示式","by word":"整個單字",replace:"取代","replace all":"全部取代",close:"關閉","Read only: {reason}":"唯讀:{reason}","File menu":"檔案選單","This file is gone":"這個檔案已經不見了","A partner is changing this file":"夥伴正在改這個檔案","Reload (discard my edits)":"重新載入(放棄我的修改)","This file is too large to show here.":"這個檔案太大,無法在這裡顯示。","This file is not text, so it cannot be shown here.":"這個檔案不是文字檔,無法在這裡顯示。","This browser cannot show this file.":"這個瀏覽器無法顯示這個檔案。","Fit to window":"符合視窗大小","Show at full size":"以原始大小顯示",Open:"開啟",Editing:"編輯中",Undo:"復原",Redo:"重做",Tab:"Tab","Do not wrap lines":"不要自動換行","Wrap lines":"自動換行","This file changed while you were editing":"你編輯時,這個檔案被改了","Someone deleted it. Your text has not been saved.":"有人把它刪除了。你的內容還沒有存檔。","Your text has not been saved. What should happen to it?":"你的內容還沒有存檔。要怎麼處理?","Copy my text":"複製我的內容","Save mine as a new file":"存成新檔案","Save mine anyway":"仍用我的版本覆蓋","Replace the partner's changes?":"要蓋掉夥伴的修改嗎?","The file has been changed since you opened it. Saving yours writes over those changes.":"你開啟後,這個檔案又被改過。存下你的版本會蓋掉那些修改。","Unsaved changes, leave?":"還沒存檔,要離開嗎?","Your edits to {name} have not been saved.":"你對 {name} 的修改還沒有存檔。",Rename:"重新命名","New folder":"新增資料夾","New file":"新增檔案","Use a name without slashes.":"名稱不能含有斜線。",Renamed:"已重新命名",Created:"已建立",Create:"建立",Trash:"垃圾桶","The trash is empty":"垃圾桶是空的",Restored:"已還原","The folder it was in is gone.":"它原本所在的資料夾已經不見了。",Restore:"還原","Delete {name} for good":"永久刪除 {name}","Delete for good?":"要永久刪除嗎?","Delete for good":"永久刪除","“{name}” will be removed and cannot be brought back.":"「{name}」會被永久移除,無法復原。","Read only":"唯讀",Back:"返回",Place:"位置",Folders:"資料夾","Move to the trash?":"要移到垃圾桶嗎?","Moved to the trash":"已移到垃圾桶","“{name}” goes to the trash, where you can bring it back.":"「{name}」會移到垃圾桶,之後可以還原。","Resize the folder list":"調整資料夾列表的寬度",Reload:"重新載入","Something went wrong":"發生了一些問題","The app was updated while this page was open, so part of it could not load.":"頁面開啟期間應用程式已更新,因此有部分內容無法載入。","This page stopped working. Reloading usually fixes it.":"這個頁面停止運作了。重新載入通常就能解決。","{names} can approve this, and so can an owner.":"{names}可以核准這項操作,擁有者也可以。",Action:"操作","Add a note":"新增備註",Approve:"核准",Continue:"繼續",Copied:"已複製","Copy {label}":"複製{label}",Copy:"複製",Decline:"拒絕",Details:"詳細資料",Late:"已逾時","Long values are cut here; the action runs with the full text.":"過長的內容在這裡會被截斷;執行操作時仍會使用完整內容。","Not connected right now. Try again when the connection is back.":"目前未連線。連線恢復後請再試一次。","Only the person this turn answers can approve it.":"只有這個回合所回應的對象可以核准。",Other:"其他","Send answer":"送出回答","Send answers":"送出回答","Stop turn":"停止回合","The turn stopped waiting. Your answer starts a new turn in this room.":"這個回合已不再等待。你的回答會在這個聊天室開啟新的回合。",Tool:"工具","Your answer":"你的回答",Approved:"已核准",Declined:"已拒絕",Answered:"已回答",Expired:"已過期",Cancelled:"已取消",Withdrawn:"已撤回","{name}, {state}":"{name},{state}","{name} ({state})":"{name}({state})",thinking:"思考中",working:"工作中",waiting:"等待中",speaking:"發言中",done:"完成",error:"錯誤",Body:"體型",Build:"體格","Character of {name}":"{name}的角色",Class:"職業",Colors:"配色","Discard your changes?":"要捨棄你的變更嗎?","Hair color {n}":"髮色 {n}","Hair color":"髮色","Keep editing":"繼續編輯",Palette:"色盤","Preview states":"預覽狀態","Primary (the accent)":"主色(強調色)",Randomize:"隨機",Secondary:"輔色","Skin tone {n}":"膚色 {n}","Skin tone":"膚色","Suggest from role":"依角色推薦","The new look for {name} has not been saved.":"{name}的新造型尚未儲存。",Trim:"滾邊",Hat:"帽子",Outfit:"服裝",Prop:"道具",Hair:"髮型",Beard:"鬍鬚",Accessory:"配件",Idle:"閒置",Thinking:"思考中","Thinking level":"思考強度",Working:"工作中","Waiting for you":"等你回應",Done:"完成",Error:"錯誤",Sleepy:"睏倦",Slim:"纖細",Regular:"標準",Stout:"壯碩","Delete permanently":"永久刪除","Permanently delete {name}?":"要永久刪除{name}嗎?","Starting over…":"重新開始中…","The current conversation will be archived; the next message starts a new one. Long-term memory is preserved. Active turns finish first.":"目前的對話會被封存,下一則訊息會開啟新的對話。長期記憶會保留。進行中的回合會先完成。","The live conversation and all archives will be permanently deleted. Memory and schedules are preserved.":"進行中的對話與所有封存都會被永久刪除。記憶與排程會保留。","Waiting for this turn…":"等待這個回合結束…","{name} is over the {limit} limit.":"{name}超過了 {limit} 的上限。","A message carries up to {count} files, so this long text cannot be added as one. Remove a file first.":"一則訊息最多附帶 {count} 個檔案,因此無法把這段長文字加成檔案。請先移除一個檔案。","A message carries up to {count} files. Remove one to add more.":"一則訊息最多附帶 {count} 個檔案。請先移除一個再新增。","Attach a file":"附加檔案","It is too long to put back into the message box.":"內容太長,無法放回訊息框。","Message {name}":"傳訊息給{name}","Put {name} back into the message":"把{name}放回訊息中","Remove {name}":"移除{name}",Send:"傳送",Stop:"停止","This message is too long to send as text, and its files take every slot. Remove one file.":"這則訊息太長,無法以文字傳送,而且檔案已佔滿所有名額。請移除一個檔案。","(long text attached)":"(已附上長文字)","{count} file":"{count} 個檔案","{count} files":"{count} 個檔案",Close:"關閉",Table:"圓桌","Conversation started over":"對話已重新開始",Discard:"捨棄","Not sent yet":"尚未傳送","Not sent":"未傳送","Sending…":"傳送中…","Try again":"再試一次","Waiting to send…":"等待傳送…","Yolo mode approved: {action}":"Yolo 模式已核准:{action}","{count} approved":"已核准 {count} 項","Long-running mode is on: turns go on past their time limit.":"長時間執行模式已開啟:回合可超過時間上限繼續進行。","Long-running on":"長時間執行已開啟","Turn off":"關閉","Yolo mode is on: held actions are approved without asking.":"Yolo 模式已開啟:保留的操作會直接核准,不再詢問。","Yolo mode on":"Yolo 模式已開啟",Agent:"夥伴","Find a room or page":"尋找聊天室或頁面","Nothing matches.":"沒有符合的項目。",Page:"頁面",Thread:"討論串","{name} is working…":"{name}正在處理…","Show the whole stream":"顯示完整串流","A thread has no settings.":"討論串沒有設定。","Approve held actions in this room without asking. Risky ones still ask.":"在這個聊天室直接核准保留的操作,不再詢問。高風險的操作仍會詢問。","Archive this conversation and begin a new one. Memory stays.":"封存這段對話並開始新的對話。記憶會保留。","Let turns go on past their time limit, up to the host's cap. Questions still wait for you.":"讓回合可超過時間上限繼續進行,最多到主機設定的上限。提問仍會等你回應。","Long-running mode":"長時間執行模式","Name, prompt, model and picture":"名稱、提示詞、模型與圖像","Reply to the agent that started this thread.":"回覆開啟這個討論串的夥伴。","Yolo mode":"Yolo 模式","No agents are seated yet.":"圓桌上還沒有夥伴入座。","Who's at the table":"誰上桌","Off the table":"離席中","Leave the table":"離席","{name} left the table":"{name}已離席","The table is empty":"圓桌空了","Every agent has left the table. Choose who sits down.":"所有夥伴都離席了。選擇誰要上桌。","An agent who leaves the table is muted: its room stops pushing to you. A card that waits for you is always pushed.":"離席的夥伴會被靜音:它的聊天室不再推播給你。等你回應的卡片仍會推播。","A file is no longer available. Attach it again.":"檔案已無法使用。請重新附加。",Dismiss:"關閉通知","Only an owner can do that.":"只有擁有者可以這麼做。","That card is no longer open.":"這張卡片已不再開啟。","That message is too long.":"這則訊息太長了。","That room is gone.":"這個聊天室已不存在。","The app could not read that. Reload the page and try again.":"應用程式無法讀取這項內容。請重新載入頁面再試一次。","The message was not taken. Check the connection and try again.":"訊息沒有被接收。請檢查連線後再試一次。","This room is read-only.":"這個聊天室為唯讀。","Write a message or attach a file.":"請輸入訊息或附加檔案。","The console answered {status}.":"主控台回應了 {status}。","The console is unreachable. Reload the page to sign in again.":"無法連線到主控台。請重新載入頁面並重新登入。","The request was refused. Reload the page to sign in again.":"請求被拒絕。請重新載入頁面並重新登入。","{count} d ago":"{count} 天前","{count} h ago":"{count} 小時前","{count} min ago":"{count} 分鐘前","channel name unavailable":"無法取得頻道名稱","channel no longer exists":"頻道已不存在","Conversation {key}":"對話 {key}","Direct message · {name}":"私訊 · {name}","Direct message":"私訊","just now":"剛剛","Session {id}":"工作階段 {id}",Today:"今天",Yesterday:"昨天","Class, colors and parts. The picture here, in the rooms and in Discord all follow it.":"職業、配色與部件。這裡、聊天室與 Discord 的圖像都會跟著改變。","Follow the assistant (automatic)":"跟隨夥伴(自動)","Follow the assistant":"跟隨夥伴",Look:"造型",Name:"名稱",Prompt:"提示詞","Runs on {model}, thinking {thinking}":"使用 {model},思考程度 {thinking}","Saved.":"已儲存。","{count} tools":"{count} 個工具",Disabled:"已停用",Enabled:"已啟用","No gateways.":"沒有閘道。","No virtual servers.":"沒有虛擬伺服器。","Open connector admin":"開啟連接器管理",Reachable:"可連線","Tool list":"工具清單",Unreachable:"無法連線","Upstream gateways":"上游閘道","Upstream MCP gateways and virtual servers used by the assistant.":"夥伴使用的上游 MCP 閘道與虛擬伺服器。","Used by":"使用者","Virtual servers":"虛擬伺服器","{count} archived":"已封存 {count} 筆","archived only":"僅有封存","None stored.":"沒有儲存的內容。",running:"進行中","Owner channels":"擁有者頻道","Direct messages and channels where the owner talks to the assistant.":"擁有者與夥伴交談的私訊與頻道。","Agent channels":"夥伴頻道","The agent server's one-to-one channels.":"夥伴伺服器的一對一頻道。","Group channels":"群組頻道","The agent server's group channels.":"夥伴伺服器的群組頻道。","Outside agents":"外部夥伴","Conversations an agent outside Discord holds over MCP.":"Discord 以外的夥伴透過 MCP 進行的對話。","Plugin conversations":"外掛對話","Conversations a plugin runs, such as a web chat, as the host recorded them.":"外掛(例如網頁聊天)進行的對話,內容為主機所記錄。","Private to {name}":"僅限{name}","Shared · {name}":"共用 · {name}",Started:"開始於","{name} (disabled)":"{name}(已停用)","{name} (you)":"{name}(你)","Add note":"新增記憶",Add:"新增",Cancel:"取消",Date:"日期","Delete this note?":"要刪除這則記憶嗎?",Delete:"刪除","Deleting…":"刪除中…","Edit note":"編輯記憶",Edit:"編輯",Kind:"種類","No matching notes.":"沒有符合的記憶。","Nothing of this kind yet.":"這個種類還沒有內容。",past:"已過",Save:"儲存","Saving…":"儲存中…","Search (words separated by spaces)":"搜尋(以空格分隔關鍵字)","Search notes":"搜尋記憶",Text:"內容","What the assistant remembers. A change applies from the next turn.":"夥伴記得的內容。變更會從下一個回合起生效。","Whose notes":"誰的記憶",Core:"核心","Carried into every turn.":"每個回合都會帶入。",Note:"備忘","Searched when the assistant needs them.":"夥伴需要時才會搜尋。",Events:"事件","Carried into every turn until their date.":"到期日之前每個回合都會帶入。","(No messages)":"(沒有訊息)","{count} waiting":"{count} 項等待中","Agent and group status; starting over archives the conversation and preserves memory.":"夥伴與群組的狀態;重新開始會封存對話並保留記憶。","Agent server":"夥伴伺服器",Context:"上下文","Conversation {size} · Archives {count}":"對話 {size} · 封存 {count} 筆","Conversations opened through remote MCP; after deletion the session ID cannot be resumed.":"透過遠端 MCP 開啟的對話;刪除後無法再用該工作階段 ID 接續。","Direct messages and channels where you mention the assistant. Start over archives; delete removes every archive permanently.":"你在私訊與頻道中提及夥伴的對話。重新開始會封存;刪除會永久移除所有封存。","Enabled by {name} at {time}":"由{name}於 {time} 啟用",idle:"閒置","Just compacted (limit {limit})":"剛完成壓縮(上限 {limit})","Last active":"最後活動","Members: {members} | Host: {host}":"成員:{members}|主持:{host}",Model:"模型","My workspaces":"我的工作區","No agents.":"沒有夥伴。","No live conversation · Archives {count}":"沒有進行中的對話 · 封存 {count} 筆","No outside-agent conversations.":"沒有外部夥伴的對話。","No party channels.":"沒有派對頻道。","No workspaces.":"沒有工作區。","Outside-agent conversations":"外部夥伴的對話","Party channels":"派對頻道","Replying in {name}'s channel":"正在{name}的頻道中回覆","Replying in another channel":"正在其他頻道中回覆","Starting over stops the container and archives role conversations; each speaker's memory is preserved.":"重新開始會停止容器並封存各角色的對話;每位發言者的記憶都會保留。",transcript:"對話記錄","Working in group {name}":"正在群組{name}中工作","Working in own channel":"正在自己的頻道中工作","Working, {count} waiting":"工作中,另有 {count} 項等待","Container running":"容器運行中","Container stopped":"容器已停止","No container yet":"尚無容器","Container status unknown":"容器狀態未知","Back to rooms":"回到聊天室列表","Every approval it makes is written into the conversation, and a banner stays up while yolo mode is on.":"它做的每一次核准都會寫進對話,而且 Yolo 模式開啟期間會一直顯示橫幅。","In this room, the agent's held actions are approved for you, without a card, as soon as they come up.":"在這個聊天室中,夥伴保留的操作一出現就會替你核准,不會顯示卡片。",Latest:"最新","Load earlier messages":"載入更早的訊息","Loading…":"載入中…","No messages yet. Say hello.":"還沒有訊息。打個招呼吧。","Open the parent room":"開啟上層聊天室","Read-only":"唯讀","Reconnecting… messages wait here until it is back.":"重新連線中…訊息會先留在這裡,等連線恢復再傳送。","Risky classes still ask: running as another user, deleting files, force pushes, disk, service and firewall changes, and anything that names its own approvers. The host can add more.":"高風險類別仍會詢問:以其他使用者身分執行、刪除檔案、強制推送、磁碟/服務/防火牆變更,以及指定了核准者的操作。主機還可以再增加類別。","Room menu":"聊天室選單","Start over {name}?":"要讓{name}重新開始嗎?","Start over":"重新開始","The current conversation is archived and the next message begins a new one. Long-term memory is kept. A turn that is running finishes first.":"目前的對話會被封存,下一則訊息會開啟新的對話。長期記憶會保留。進行中的回合會先完成。","This is a dispatch thread. It shows what was sent and answered; reply in its parent room.":"這是派工討論串,顯示已送出與已回覆的內容;請在上層聊天室中回覆。","This room is not available.":"這個聊天室無法使用。","Thread · finished":"討論串 · 已結束","Thread · read-only":"討論串 · 唯讀","Turn on yolo mode?":"要開啟 Yolo 模式嗎?","Turn on yolo mode":"開啟 Yolo 模式","Working…":"處理中…","Edit agent":"編輯夥伴","Change look":"換外觀","Notifications are off":"通知已關閉","Notifications are on for {name}":"已開啟{name}的通知","Notifications are off for {name}":"已關閉{name}的通知","Push this room's posts to every owner's devices. A card that waits for you is always pushed.":"把這個聊天室的發言推送到每位擁有者的裝置。等你處理的卡片一律會推送。","Full screen":"全螢幕","Review changes":"檢視變更","Back to editing":"繼續編輯","Lines: {added} added, {removed} removed":"新增 {added} 行、移除 {removed} 行",Added:"新增",Removed:"移除",Off:"關閉",Minimal:"最低",Low:"低",Medium:"中",High:"高","Very high":"極高","Copy as Markdown":"複製為 Markdown","Quote reply":"引用回覆","Select text":"選取文字",Share:"分享","Agent profile":"夥伴資料","Copy details":"複製細節",Download:"下載","Could not copy.":"無法複製。","Could not share.":"無法分享。","New agent":"新增夥伴","New group":"新增群組",Archived:"已封存",Archive:"封存","Archive {name}":"封存{name}","Archive {name}?":"要封存{name}嗎?","Archive agent":"封存夥伴","Archive group":"封存群組","Archived {name}.":"已封存{name}。","Restored {name}.":"已還原{name}。","Deleted {name}.":"已刪除{name}。","Delete {name}?":"要刪除{name}嗎?","Made {name}.":"已建立{name}。","Make agent":"建立夥伴","Make group":"建立群組","Making…":"建立中…","Permanent name":"固定名稱","Lowercase letters, digits and dashes, up to 32. It names the room and cannot be changed.":"小寫英文字母、數字與連字號,最多 32 個字元。它是聊天室的名稱,建立後無法更改。","Its job, its sources, its limits and how it reports.":"它的工作、資料來源、限制,以及怎麼回報。","Opening task":"開場任務","Optional. The agent starts on it as soon as it is made.":"可不填。夥伴建立後會立刻開始做。","Your look":"你選的外觀","Suggested from its role":"依角色建議的外觀","Choose a look":"選擇外觀","Use this look":"使用這個外觀","Edit group":"編輯群組","Name, members and host":"名稱、成員與主持人",Members:"成員","Pick 2 to 6 agents. They take turns in the order picked.":"選 2 到 6 位夥伴。他們依選取的順序輪流發言。",Host:"主持人","It stops answering. The history is kept and it can be restored.":"它會停止回應。歷史會保留,之後可以還原。","An archived agent stops answering and its schedules are cancelled. Its history is kept, and you can restore it from Archived.":"封存後的夥伴不再回應,排程也會取消。歷史會保留,之後可以從「已封存」還原。","{name} stops answering and its schedules are cancelled. A group loses it as a member. The history is kept, and Archived in the room list restores it.":"{name}會停止回應,排程也會取消;群組會少掉這位成員。歷史會保留,可以從聊天室列表的「已封存」還原。","Archived agents and groups no longer answer. Their history is kept until you delete them.":"已封存的夥伴與群組不再回應。歷史會保留,直到你刪除它們。","Nothing is archived.":"沒有已封存的項目。","{name} and its messages in this app are deleted for good, and the name can be used again. This cannot be undone.":"{name}和它在這個應用程式裡的訊息會永久刪除,名稱可以再使用。此動作無法復原。","What the agent can load when a task calls for it. It applies from its next turn.":"夥伴在任務需要時可以載入的技能。下一輪對話起生效。","Its file cannot be read.":"讀不到它的檔案。","Built in: every agent carries it.":"內建:每位夥伴都有。","This host has no skills.":"這個主機沒有技能。","Give add or remove.":"請給 add 或 remove。","members must be a list of text.":"members 必須是文字清單。","Give displayName, members or host.":"請給 displayName、members 或 host。",Agents:"夥伴","Dispatch threads":"派工討論串","Find a room":"尋找聊天室","Switch rooms":"切換聊天室",Group:"群組",Groups:"群組",Home:"首頁","Long-running":"長時間執行","No messages yet":"還沒有訊息","No rooms yet. Rooms appear when the team has an agent.":"還沒有聊天室。團隊有夥伴後,聊天室就會出現。",Yolo:"Yolo","{count} card waiting":"{count} 張卡片等待中","{count} cards waiting":"{count} 張卡片等待中","{count} finished thread":"{count} 個已結束的討論串","{count} finished threads":"{count} 個已結束的討論串","{days} at {time}":"每{days} {time}","“{title}” will not run again. Runs that already happened stay in the conversation.":"「{title}」不會再執行。已經執行過的紀錄會保留在對話中。","Cancel {title}":"取消「{title}」","Cancel schedule":"取消排程","Cancel this schedule?":"要取消這個排程嗎?","Every {count} days at {time}":"每 {count} 天 {time}","Every day at {time}":"每天 {time}","next {when}":"下次:{when}","Nothing is scheduled. Ask an agent to remind you or to run something later.":"目前沒有排程。你可以請夥伴提醒你,或稍後執行某件事。","Once on {date} at {time}":"{date} {time}(僅一次)","Schedule cancelled.":"排程已取消。","set by {name}":"由{name}設定",", ":"、",Mon:"週一",Tue:"週二",Wed:"週三",Thu:"週四",Fri:"週五",Sat:"週六",Sun:"週日",Account:"帳號",Appearance:"外觀","Color scheme":"色彩配置",Device:"裝置","Get a notification on this device when a card waits for you or an agent reports on its own, while the app is not open.":"應用程式未開啟時,只要有卡片等你處理,或夥伴主動回報,這台裝置就會收到通知。","Install it to open from your home screen or dock, in its own window.":"安裝後可從主畫面或 Dock 直接開啟,並使用獨立的視窗。","Install the app":"安裝應用程式",Install:"安裝","Log out":"登出","Notifications are blocked for this site. Allow them in the browser's site settings.":"此網站的通知已被封鎖。請在瀏覽器的網站設定中允許通知。","Notifications were not allowed. Allow them in the browser's site settings.":"通知未獲允許。請在瀏覽器的網站設定中允許通知。",Notifications:"通知","Quiet hours, {start} to {end} ({zone}): no notification for an agent's report or a notice. A card waiting for you still notifies. The server sets the hours.":"勿擾時段 {start} 至 {end}({zone}):這段時間內,夥伴的回報與通知不會推播;等你處理的卡片仍會推播。時段由伺服器設定。",Remove:"移除","Signed in as {name}.":"目前登入身分:{name}。","This browser cannot get push notifications. On iPhone and iPad, install the app from Share, Add to Home Screen, and open it from there.":"這個瀏覽器無法接收推播通知。在 iPhone 與 iPad 上,請先透過「分享」→「加入主畫面」安裝應用程式,再從主畫面開啟。","this device":"這台裝置","This page is installed on this device.":"這個頁面已安裝在這台裝置上。","To install it, use your browser's Install option, or on iPhone and iPad, Share and then Add to Home Screen.":"請使用瀏覽器的安裝選項來安裝;在 iPhone 與 iPad 上,請點選「分享」,再選擇「加入主畫面」。","Turn off on this device":"在這台裝置上關閉","Turn on for this device":"在這台裝置上開啟",System:"跟隨系統",Light:"淺色",Dark:"深色",Modern:"現代","Plain and neutral, with round avatars.":"簡潔中性,搭配圓形頭像。",Camelot:"卡美洛","Parchment by day, night castle by night, gold rules, shield avatars and wax seals.":"白天是羊皮紙,夜晚是夜間城堡,搭配金色分隔線、盾形頭像與蠟封印章。","All agents":"所有夥伴","Assistant-written":"夥伴撰寫","Built-in":"內建",Carriers:"搭載對象","File missing":"檔案遺失","No skills.":"沒有技能。",None:"無","Registered skills and their carriers; ask an agent on Discord to edit their contents.":"已登錄的技能與搭載對象;如要修改內容,請在 Discord 上請夥伴編輯。","Reset view":"重設視角",Log:"記錄","Hide the message box":"收起對話框","Show the message box":"展開對話框","Back to the whole table":"回到整張圓桌",You:"你","Tap to show the whole message":"點一下顯示整段訊息","(empty)":"(空白)","Archived {name}":"已封存的{name}","Current conversation":"目前的對話","Nothing to show.":"沒有可顯示的內容。","Outside agent · {id}":"外部夥伴 · {id}",Showing:"顯示","This conversation is longer than the console reads; the oldest entries are not shown.":"這段對話比主控台能讀取的長度還長,最舊的紀錄不會顯示。","Tool failed":"工具執行失敗","Tool result":"工具結果",User:"使用者",Assistant:"夥伴","Summary of earlier conversation":"先前對話的摘要","There is no such room, agent or file.":"找不到這個聊天室、夥伴或檔案。","The body is too large.":"內容太大。","The body is not JSON.":"內容不是 JSON。","The body is not an object.":"內容不是物件。","Only an owner may do this.":"只有擁有者可以這麼做。","That path is not allowed.":"不允許這個路徑。","There is no such place.":"沒有這個位置。","There is no such file or folder.":"沒有這個檔案或資料夾。","That is not a folder.":"這不是資料夾。","That is a folder, not a file.":"這是資料夾,不是檔案。","That is the top folder, which cannot be changed.":"這是最上層的資料夾,不能更動。","That points outside the workspace.":"這連到工作區外面。","That is not a regular file.":"這不是一般檔案。","That is a link; open the file it points to.":"這是連結;請開啟它指向的檔案。","This place is read-only.":"這個位置是唯讀的。","Files inside .git are read-only.":".git 內的檔案是唯讀的。","The trash cannot be changed this way.":"垃圾桶不能這樣更動。","This file is not text, so it cannot be edited.":"這個檔案不是文字檔,無法編輯。","This file is not UTF-8 text, so it cannot be edited.":"這個檔案不是 UTF-8 文字,無法編輯。","This file is too large.":"這個檔案太大了。","The text is too large to save (1 MiB at most).":"文字太大,無法存檔(最多 1 MiB)。","A folder cannot be moved into itself.":"資料夾不能移進它自己裡面。","That cannot be moved to another disk.":"這不能移到另一個磁碟。","The server is not allowed to change that.":"伺服器沒有權限更動這個項目。","This file changed while you were editing.":"你編輯時,這個檔案被改了。","This file is gone.":"這個檔案已經不見了。","Something with that name is already there.":"已經有同名的項目了。","text must be text.":"text 必須是文字。","baseHash must be the hash the file was read with.":"baseHash 必須是讀取檔案時取得的雜湊值。","kind must be file or dir.":"kind 必須是 file 或 dir。","from and to must be paths.":"from 與 to 必須是路徑。","Method not allowed.":"不允許使用這個方法。","There is no such API.":"沒有這個 API。","before and limit must be whole numbers.":"before 與 limit 必須是整數。","Give yolo or longRunning.":"請提供 yolo 或 longRunning。","muted must be true or false.":"muted 必須是 true 或 false。","Give the folder a name of 1 to 40 characters.":"分組名稱要 1 到 40 個字。","There is no such folder.":"找不到這個分組。","A folder of that name exists.":"已經有同名的分組。","There are 50 folders already.":"分組已達 50 個上限。","before must be a key or null.":"before 必須是聊天室代號或 null。","name must be text.":"name 必須是文字。","Give a name or a place.":"請提供名稱或位置。","A thread stays under its room.":"派工串跟著原本的聊天室。","Home stays at the top.":"首頁固定在最上面。","pinned must be true or false.":"pinned 必須是 true 或 false。","folder must be a folder id or null.":"folder 必須是分組 ID 或 null。","Add a folder":"新增分組","New folder…":"新增分組…","Folder name":"分組名稱","Rename folder":"重新命名分組","Delete folder":"刪除分組","Delete the folder {name}? Its rooms move to Ungrouped; no room is deleted.":"刪除分組「{name}」?裡面的聊天室會移到未分組,聊天室本身不會刪除。","Folder menu":"分組選單","Folders and order":"分組與排序","Move to folder…":"移到分組…","No rooms in this folder yet.":"這個分組還沒有聊天室。","Collapse {name}":"收合「{name}」","Expand {name}":"展開「{name}」","{count} room":"{count} 個聊天室","{count} rooms":"{count} 個聊天室",Ungrouped:"未分組",Pinned:"置頂",Pin:"置頂",Unpin:"取消置頂",Arrange:"整理","Keep this room at the top of the list.":"把這個聊天室固定在清單最上面。","Put this room in a folder, or take it out.":"把這個聊天室放進分組,或移出分組。","Move up":"上移","Move down":"下移","Mute the whole folder":"靜音整個分組","Unmute the whole folder":"取消靜音整個分組","Some notifications are off":"部分通知已關閉","This pane is not served.":"沒有提供這個頁面。","The schedule id is a number.":"排程 ID 必須是數字。","There is no such schedule.":"找不到這個排程。","character must be an object.":"character 必須是物件。","The upload has no length.":"上傳內容沒有長度。","The file is too large.":"檔案太大。","Too many files are waiting for a message.":"等待隨訊息送出的檔案太多。","Too much is waiting for a message. Send it, or wait a day for the rest to clear.":"等待隨訊息送出的內容太多。請先送出訊息,或等一天讓其餘內容清除。","The upload is not a form.":"上傳內容不是表單。","There is no file.":"沒有檔案。","The file is empty.":"檔案是空的。","The file is not what its type says.":"檔案內容與其類型不符。","Too many failed attempts. Try again later.":"失敗次數過多,請稍後再試。","Wrong password.":"密碼錯誤。",Password:"密碼","Sign in":"登入","There is no such conversation.":"找不到這段對話。","Only workspace and outside conversations can be deleted.":"只有工作區與外部的對話可以刪除。","The conversation is busy. Try again later.":"這段對話正在忙碌中,請稍後再試。","There is no such skill.":"找不到這個技能。","The skill file is missing: ":"找不到技能檔案:","The skill file is missing.":"找不到技能檔案。","The skill frontmatter could not be read: ":"無法讀取技能的 frontmatter:","The skill frontmatter could not be read.":"無法讀取技能的 frontmatter。","Push is not set up: set push.subject on the server.":"尚未設定推播:請在伺服器上設定 push.subject。","keys must hold p256dh and auth.":"keys 必須包含 p256dh 與 auth。","label must be text.":"label 必須是文字。","That device is already subscribed by someone else.":"這台裝置已被其他人訂閱。","Too many devices. Remove one in the settings first.":"裝置太多了。請先到設定中移除一台。","There is no such device.":"找不到這台裝置。","The push endpoint is not a URL.":"推播端點不是有效的網址。","The push endpoint must be https.":"推播端點必須使用 https。","The push endpoint must have no credentials, port or fragment.":"推播端點不可包含帳密、連接埠或片段。","That push service is not allowed.":"不允許使用這個推播服務。","The connector service did not respond. Try again later.":"連接器服務沒有回應,請稍後再試。","The console could not complete the request.":"主控台無法完成這個請求。","The path is not valid.":"路徑無效。","There is no such archive.":"找不到這個封存。","There is no such person.":"找不到這個人。","There is no such note.":"找不到這則記憶。","This method is not supported.":"不支援這個方法。","The request is too large.":"請求太大。","The body is not valid.":"內容無效。","The date is not valid.":"日期無效。","The note cannot be empty.":"記憶內容不能是空白。","An event needs its date as YYYY-MM-DD.":"事件的日期必須是 YYYY-MM-DD 格式。","Only an event has a date.":"只有事件才有日期。","character.class.wizard":"巫師","character.class.knight":"騎士","character.class.scholar":"學者","character.class.smith":"鐵匠","character.class.ranger":"遊俠","character.class.bard":"吟遊詩人","character.class.alchemist":"煉金術士","character.class.healer":"治療師","character.class.steward":"管家","character.class.navigator":"領航員","character.class.seer":"先知","character.class.scribe":"抄寫員","character.class.engineer":"工程師","character.class.druid":"德魯伊","character.class.innkeeper":"旅店老闆","character.class.sentinel":"哨兵","character.class.envoy":"使節","character.class.rogue":"盜賊","character.class.monk":"僧侶","character.class.falconer":"獵鷹人","character.class.shipwright":"造船師","character.class.jester":"弄臣","character.class.paladin":"聖騎士","character.class.archivist":"檔案管理員","character.jobs.wizard":"協調者、規劃者、主要夥伴","character.jobs.knight":"審查者、品質把關、守護者","character.jobs.scholar":"研究員、文獻回顧","character.jobs.smith":"程式開發、建置、重構","character.jobs.ranger":"偵察、網路搜尋、爬蟲","character.jobs.bard":"撰稿、公告、文案","character.jobs.alchemist":"資料分析、ETL、資料轉換","character.jobs.healer":"除錯、修復、支援","character.jobs.steward":"維運、帳務、存取金鑰","character.jobs.navigator":"規劃、路由、路線圖","character.jobs.seer":"預測、監控、分析","character.jobs.scribe":"文件、筆記、會議記錄","character.jobs.engineer":"DevOps、基礎架構、CI","character.jobs.druid":"清理、資料整頓、維護","character.jobs.innkeeper":"接待、新手引導、排程","character.jobs.sentinel":"資安、待命值班、警報","character.jobs.envoy":"電子郵件、對外合作溝通、通知","character.jobs.rogue":"滲透測試、稽核、情蒐","character.jobs.monk":"長時間作業、批次處理、耐心","character.jobs.falconer":"檢索、擷取、RAG 查詢","character.jobs.shipwright":"發佈、建置流程、封裝","character.jobs.jester":"腦力激盪、發想、幽默","character.jobs.paladin":"合規、政策、核准","character.jobs.archivist":"知識庫、索引、記憶","character.palette.azure":"蔚藍","character.palette.gules":"緋紅","character.palette.vert":"翠綠","character.palette.purpure":"紫紅","character.palette.amber":"琥珀","character.palette.sable":"墨黑","character.palette.teal":"青藍","character.palette.rose":"玫瑰","character.outfit.robe":"長袍","character.outfit.scholar":"學者服","character.outfit.armor":"鎖子甲","character.outfit.plate":"板甲","character.outfit.apron":"鐵匠皮圍裙","character.outfit.chef":"廚工束衣","character.outfit.cloak":"斗篷","character.outfit.tunic":"束腰外衣","character.outfit.coat":"緊身上衣","character.outfit.overalls":"工匠皮甲背心","character.outfit.vest":"絮縫短襖","character.outfit.habit":"修士服","character.outfit.surplice":"法衣","character.outfit.motley":"小丑裝","character.outfit.sailor":"水手束衣","character.hat.none":"無帽子","character.hat.wizard":"巫師帽","character.hat.helm":"頭盔","character.hat.mortar":"學者四角帽","character.hat.goggcap":"皮護耳帽","character.hat.hood":"兜帽","character.hat.beret":"夏普倫頭巾帽","character.hat.goggles":"尖頂軟帽","character.hat.coif":"緊身頭巾","character.hat.tallcap":"勃艮第氈帽","character.hat.tricorn":"朝聖者闊邊帽","character.hat.turban":"纏頭巾","character.hat.softcap":"軟帽","character.hat.hardhat":"鐵製圓盔","character.hat.wreath":"花冠","character.hat.toque":"廚工亞麻軟帽","character.hat.kettle":"鐵壺盔","character.hat.cavalier":"羽飾帽","character.hat.cowl":"風帽","character.hat.headband":"髮帶","character.hat.fcap":"獵人帽","character.hat.sailor":"草帽","character.hat.jester":"小丑帽","character.hat.winghelm":"翼盔","character.prop.staff":"法杖","character.prop.shield":"盾牌","character.prop.scroll":"卷軸","character.prop.hammer":"鎚子","character.prop.bow":"弓","character.prop.lute":"魯特琴","character.prop.flask":"煉金小瓶","character.prop.quill":"羽毛筆","character.prop.tome":"典籍","character.prop.bell":"鈴鐺","character.prop.keys":"鑰匙","character.prop.map":"海圖","character.prop.telescope":"星盤","character.prop.wrench":"圓規","character.prop.spade":"鏟子","character.prop.ladle":"長柄勺","character.prop.lantern":"提燈","character.prop.seal":"印章","character.prop.dagger":"匕首","character.prop.beads":"念珠","character.prop.bird":"小鳥","character.prop.anchor":"船錨","character.prop.marotte":"小丑權杖","character.prop.sword":"長劍","character.hair.none":"無頭髮","character.hair.short":"短髮","character.hair.bob":"鮑伯頭","character.hair.long":"長髮","character.hair.bun":"包包頭","character.hair.curly":"捲髮","character.hair.ponytail":"馬尾","character.hair.braid":"辮子","character.beard.none":"無鬍鬚","character.beard.full":"落腮鬍","character.beard.mustache":"八字鬍","character.beard.goatee":"山羊鬍","character.accessory.none":"無配件","character.accessory.glasses":"眼鏡","character.accessory.freckles":"雀斑","character.accessory.scar":"疤痕","Main prompts":"主要提示詞","Edit the main prompts":"編輯主要提示詞","The texts the assistant and the agents start from, with a diff to read before you save and a way back to the file's text.":"夥伴們開始工作時所依據的文字;儲存前可檢視差異,也能回到檔案裡的版本。","The texts the assistant and the agents start from. A text you save here replaces the one from the file from the next turn on, until you go back to the file's.":"夥伴們開始工作時所依據的文字。你在這裡儲存的文字,從下一回合起取代檔案裡的版本,直到你回到檔案版本為止。","Shared prompt":"共用提示詞","Guest prompt":"訪客提示詞","The base every agent's prompt starts with, the main assistant's included.":"每位夥伴的提示詞都以它開頭,主要夥伴也不例外。","Used instead of the shared prompt when the person speaking is not the owner.":"說話的人不是擁有者時,改用它取代共用提示詞。","No prompts to edit.":"沒有可編輯的提示詞。","Differs from the file version":"與檔案版本不同","File version cannot be read":"讀不到檔案版本","The file version of this prompt cannot be read, so it cannot be changed here until it can: {reason}":"這份提示詞的檔案版本讀不到,在讀得到之前無法在這裡修改:{reason}","Set by {name}, {time}":"由{name}設定,{time}","Revert to the file version":"還原為檔案版本","Revert {name} to the file version?":"要把{name}還原為檔案版本嗎?","Back to the file version.":"已還原為檔案版本。","The text you saved is dropped and the text from the file applies from the next turn. It stays in the history, so you can bring it back.":"你儲存的文字會被移除,從下一回合起改用檔案裡的文字。它仍留在歷史中,之後可以再取回。",History:"歷史","History of the prompt":"提示詞的歷史","History of {name}":"{name}的歷史","No changes have been kept yet.":"還沒有留下任何更動紀錄。","Back to the file version":"已回到檔案版本","This change":"這次更動","It goes into the editor, where you read it over and save it to put it in force.":"它會放進編輯器;檢視差異並儲存後才會生效。","Use this text":"使用這段文字","New skill":"新增技能","Create skill":"建立技能","Skill created.":"已建立技能。","This skill cannot be edited here.":"這個技能無法在這裡編輯。","This skill changed while you were editing it. The changes below are against the version there now; save again to replace it, or go back to edit.":"這個技能在你編輯時被更動了。下方的差異是對照目前的版本;再儲存一次會取代它,或回去繼續編輯。","Frontmatter holds the name, which cannot change, and a description that starts with “Use when”. The rest is the skill.":"Frontmatter 含有名稱(不能更改)與以「Use when」開頭的描述,其餘就是技能內容。","Registered skills and their carriers. A skill an agent wrote can be edited here; the others are read-only.":"已登錄的技能與攜帶者。夥伴撰寫的技能可以在這裡編輯,其他的唯讀。","Built in with the release; it changes with the release.":"隨版本內建;要隨版本更新才會改變。","From the package {package}; it changes when the package is upgraded.":"來自套件 {package};套件升級時才會改變。","Linked from {repo}; change it in its repository.":"連結自 {repo};請到它的儲存庫修改。","This host has no prompts to edit.":"這個主機沒有可編輯的提示詞。","There is no such prompt.":"沒有這份提示詞。","base must be the text the prompt was edited from.":"base 必須是編輯所依據的提示詞文字。","base must be the text the prompt was reverted from.":"base 必須是還原所依據的提示詞文字。","This prompt changed while you were editing it.":"這份提示詞在你編輯時被更動了。","baseHash must be the hash the skill was read with.":"baseHash 必須是讀取技能時的雜湊值。","This skill changed while you were editing it.":"這個技能在你編輯時被更動了。"};export{e as ZH_TW};
|