@kienmatu/inkos-studio 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/api/server.d.ts.map +1 -1
  2. package/dist/api/server.js +134 -122
  3. package/dist/api/server.js.map +1 -1
  4. package/dist/assets/FilmWizard-CuCB-1xV.js +1 -0
  5. package/dist/assets/{FlowView-CZ7fxX3n.js → FlowView-rMLtzFZK.js} +3 -3
  6. package/dist/assets/{_baseUniq-DhsR81PW.js → _baseUniq-xbTfIKo7.js} +1 -1
  7. package/dist/assets/{arc-Ca3YI7OI.js → arc-BJ0Jn4qy.js} +1 -1
  8. package/dist/assets/{architectureDiagram-Q4EWVU46-DDwYWwqm.js → architectureDiagram-Q4EWVU46-B54hBS8X.js} +1 -1
  9. package/dist/assets/{blockDiagram-DXYQGD6D-kqPOxZ2q.js → blockDiagram-DXYQGD6D-BrQpuNBu.js} +1 -1
  10. package/dist/assets/{c4Diagram-AHTNJAMY-DBL27B73.js → c4Diagram-AHTNJAMY-nN4kJiPC.js} +1 -1
  11. package/dist/assets/channel-BMnRcRpv.js +1 -0
  12. package/dist/assets/{chunk-4BX2VUAB-BBF1yv__.js → chunk-4BX2VUAB-DnzQoX6p.js} +1 -1
  13. package/dist/assets/{chunk-4TB4RGXK-DEDtFRAF.js → chunk-4TB4RGXK-PeEeEWP2.js} +1 -1
  14. package/dist/assets/{chunk-55IACEB6-DMKAeQw_.js → chunk-55IACEB6-BZHFzH6I.js} +1 -1
  15. package/dist/assets/{chunk-EDXVE4YY-DMqU-4EI.js → chunk-EDXVE4YY-B06PJNq-.js} +1 -1
  16. package/dist/assets/{chunk-FMBD7UC4-CZTsFDcK.js → chunk-FMBD7UC4-Cny1qCNu.js} +1 -1
  17. package/dist/assets/{chunk-OYMX7WX6-CenEcrGy.js → chunk-OYMX7WX6-MqHFCczv.js} +1 -1
  18. package/dist/assets/{chunk-QZHKN3VN-DXpv8Mti.js → chunk-QZHKN3VN-Bu8oSEuV.js} +1 -1
  19. package/dist/assets/{chunk-YZCP3GAM-DLM5M52k.js → chunk-YZCP3GAM-DW9WLjg7.js} +1 -1
  20. package/dist/assets/classDiagram-6PBFFD2Q-BpMdbRYm.js +1 -0
  21. package/dist/assets/classDiagram-v2-HSJHXN6E-BpMdbRYm.js +1 -0
  22. package/dist/assets/clone-Bfx4_ecn.js +1 -0
  23. package/dist/assets/{cose-bilkent-S5V4N54A-DUMnmCfq.js → cose-bilkent-S5V4N54A-BFF3VF0W.js} +1 -1
  24. package/dist/assets/{dagre-KV5264BT-DCU2j_Xn.js → dagre-KV5264BT-7wO_SFt1.js} +1 -1
  25. package/dist/assets/{diagram-5BDNPKRD-CNmXjIem.js → diagram-5BDNPKRD-DpdLNbTp.js} +1 -1
  26. package/dist/assets/{diagram-G4DWMVQ6-BJB7dwH0.js → diagram-G4DWMVQ6-B2Xd9yJj.js} +1 -1
  27. package/dist/assets/{diagram-MMDJMWI5-5OEVcoMB.js → diagram-MMDJMWI5-BcJABwZb.js} +1 -1
  28. package/dist/assets/{diagram-TYMM5635-BH2d24yw.js → diagram-TYMM5635-ByagqgDJ.js} +1 -1
  29. package/dist/assets/{erDiagram-SMLLAGMA-DhzfgmWY.js → erDiagram-SMLLAGMA-zfdClUWU.js} +1 -1
  30. package/dist/assets/{flowDiagram-DWJPFMVM-Dq699o3O.js → flowDiagram-DWJPFMVM-Cign1ovE.js} +1 -1
  31. package/dist/assets/{ganttDiagram-T4ZO3ILL-D2bwmYj5.js → ganttDiagram-T4ZO3ILL-zHFblbgr.js} +1 -1
  32. package/dist/assets/{gitGraphDiagram-UUTBAWPF-BkH_ILeo.js → gitGraphDiagram-UUTBAWPF-DgUNvxqj.js} +1 -1
  33. package/dist/assets/{graph-BiqUEdJM.js → graph-CT_N4MvP.js} +1 -1
  34. package/dist/assets/{highlighted-body-OFNGDK62-BD0SXLUv.js → highlighted-body-OFNGDK62-CbTQmRda.js} +1 -1
  35. package/dist/assets/{index-CRZhDmRu.js → index-C5AvWGUU.js} +253 -253
  36. package/dist/assets/index-DaFEDFsq.css +1 -0
  37. package/dist/assets/{infoDiagram-42DDH7IO-BVDONA_E.js → infoDiagram-42DDH7IO-B1j6wnrX.js} +1 -1
  38. package/dist/assets/{ishikawaDiagram-UXIWVN3A-CBELCuuM.js → ishikawaDiagram-UXIWVN3A-CmTERA2Q.js} +1 -1
  39. package/dist/assets/{journeyDiagram-VCZTEJTY-CpXgU8Ln.js → journeyDiagram-VCZTEJTY-lXMvtopT.js} +1 -1
  40. package/dist/assets/{kanban-definition-6JOO6SKY-DmjKOkdI.js → kanban-definition-6JOO6SKY-D2nd3IRf.js} +1 -1
  41. package/dist/assets/{layout-DXBAgkSC.js → layout-Dwdg17w2.js} +1 -1
  42. package/dist/assets/{linear-D5tXMFlB.js → linear-BGLXP-7J.js} +1 -1
  43. package/dist/assets/{min-Cd4glxaN.js → min-CWmMAm2D.js} +1 -1
  44. package/dist/assets/{mindmap-definition-QFDTVHPH-DTq5iIBu.js → mindmap-definition-QFDTVHPH-Bc_KwUJk.js} +1 -1
  45. package/dist/assets/{pieDiagram-DEJITSTG-Diz1Rvfr.js → pieDiagram-DEJITSTG-Dk4TEXCU.js} +1 -1
  46. package/dist/assets/{quadrantDiagram-34T5L4WZ-58cr5yzB.js → quadrantDiagram-34T5L4WZ-DjpGwBeJ.js} +1 -1
  47. package/dist/assets/{requirementDiagram-MS252O5E-DDbIc9eT.js → requirementDiagram-MS252O5E-D-KTxT1S.js} +1 -1
  48. package/dist/assets/{sankeyDiagram-XADWPNL6-Cdx6EKcx.js → sankeyDiagram-XADWPNL6-CAAThfhf.js} +1 -1
  49. package/dist/assets/{sequenceDiagram-FGHM5R23-KfheY5t3.js → sequenceDiagram-FGHM5R23-EhYXipit.js} +1 -1
  50. package/dist/assets/{stateDiagram-FHFEXIEX-C5Ob61Ab.js → stateDiagram-FHFEXIEX-DlwRa19l.js} +1 -1
  51. package/dist/assets/stateDiagram-v2-QKLJ7IA2-DWOlnZT2.js +1 -0
  52. package/dist/assets/{timeline-definition-GMOUNBTQ-FSj6jaSw.js → timeline-definition-GMOUNBTQ-CnNt36mp.js} +1 -1
  53. package/dist/assets/{value-1MrA2_VI.js → value-BUuNnoEe.js} +1 -1
  54. package/dist/assets/{vennDiagram-DHZGUBPP-BQW3LO_W.js → vennDiagram-DHZGUBPP-CONWdidS.js} +1 -1
  55. package/dist/assets/{wardley-RL74JXVD-D1hNSINM.js → wardley-RL74JXVD-Dx3T9_uF.js} +1 -1
  56. package/dist/assets/{wardleyDiagram-NUSXRM2D-SCZLQyge.js → wardleyDiagram-NUSXRM2D-Brxifhti.js} +1 -1
  57. package/dist/assets/{xychartDiagram-5P7HB3ND-DhvOA02s.js → xychartDiagram-5P7HB3ND-DkX9QW6S.js} +1 -1
  58. package/dist/index.html +2 -2
  59. package/package.json +2 -2
  60. package/dist/assets/FilmWizard-DW5wLwAY.js +0 -1
  61. package/dist/assets/channel-yY1GNn4w.js +0 -1
  62. package/dist/assets/classDiagram-6PBFFD2Q-BPxDssBj.js +0 -1
  63. package/dist/assets/classDiagram-v2-HSJHXN6E-BPxDssBj.js +0 -1
  64. package/dist/assets/clone-C9djMHZG.js +0 -1
  65. package/dist/assets/index-CbBLpAjo.css +0 -1
  66. package/dist/assets/stateDiagram-v2-QKLJ7IA2-CcmSvc6O.js +0 -1
@@ -0,0 +1 @@
1
+ import{aH as N,j as e,aI as $,r as f,aJ as B,aK as W,aL as l,aM as U,aN as C,aO as H,aP as L}from"./index-C5AvWGUU.js";import V from"./FlowView-rMLtzFZK.js";import"./value-BUuNnoEe.js";function _({projectId:t,theme:s}){const n=$(),a=encodeURIComponent(t),d=N(`/projects/${a}/export/json`)??"#",i=N(`/projects/${a}/export/ink`)??"#",o=N(`/projects/${a}/export/html`)??"#";return e.jsxs("div",{className:"border border-border bg-card rounded p-3","data-testid":"export-bar",children:[e.jsx("div",{className:`text-sm font-medium mb-2 ${n.muted}`,children:"导出 / 交付"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("a",{href:d,download:!0,"data-testid":"export-json",className:`inline-flex items-center rounded px-3 py-1.5 text-sm font-medium no-underline ${n.btnSecondary}`,children:"导出 JSON"}),e.jsx("a",{href:i,download:!0,"data-testid":"export-ink",className:`inline-flex items-center rounded px-3 py-1.5 text-sm font-medium no-underline ${n.btnSecondary}`,children:"导出 Ink"}),e.jsx("a",{href:o,download:!0,"data-testid":"export-html",className:`inline-flex items-center rounded px-3 py-1.5 text-sm font-medium no-underline ${n.btnSecondary}`,children:"导出可玩网页(HTML)"})]})]})}const D=["world","scale","structure","workshop","validate"];function z(t){var x,b;const s=!!((b=(x=t.worldAnchor)==null?void 0:x.storyCore)!=null&&b.trim()),n=t.characters.length>0,a=s&&n?"done":s?"partial":"empty",d="empty",i=t.nodes.some(c=>c.type==="start"),o=t.nodes.some(c=>c.type==="ending"),p=t.nodes.some(c=>c.choices.length>0),y=i&&o&&p?"done":t.nodes.length>0?"partial":"empty",h=t.nodes.filter(c=>c.type!=="ending"),u=h.filter(c=>{var g,v;return!!((g=c.sceneDesc)!=null&&g.trim())||(((v=c.dialogue)==null?void 0:v.length)??0)>0}),j=h.length===0?"empty":u.length===h.length?"done":u.length>0?"partial":"empty",m=t.nodes.length>0&&t.endings.length>0?"partial":"empty";return{world:a,scale:d,structure:y,workshop:j,validate:m}}function F(t,s,n){const a=z(t),d=i=>{const o=s==null?void 0:s[i];return typeof o=="number"&&o<n&&a[i]!=="empty"};return{world:d("world"),scale:d("scale"),structure:d("structure"),workshop:d("workshop"),validate:d("validate")}}const k={world:{zh:"世界",en:"World",vi:"Thế giới"},scale:{zh:"规模",en:"Scale",vi:"Quy mô"},structure:{zh:"结构",en:"Structure",vi:"Cấu trúc"},workshop:{zh:"逐节点",en:"Nodes",vi:"Từng nút"},validate:{zh:"校验",en:"Validate",vi:"Kiểm tra"}},I={world:"chat",scale:"scale",structure:"flow",workshop:"tree",validate:"validate"},G={world:[{key:"chat",zh:"对话",en:"Chat",vi:"Trò chuyện"},{key:"anchor",zh:"世界锚点",en:"World anchor",vi:"Neo thế giới"}],scale:[],structure:[{key:"flow",zh:"流程图",en:"Flow",vi:"Sơ đồ luồng"},{key:"tree",zh:"树",en:"Tree",vi:"Cây"}],workshop:[{key:"tree",zh:"树",en:"Tree",vi:"Cây"},{key:"chat",zh:"对话",en:"Chat",vi:"Trò chuyện"}],validate:[]},O={world:"empty",scale:"empty",structure:"empty",workshop:"empty",validate:"empty"},R={world:!1,scale:!1,structure:!1,workshop:!1,validate:!1};function J({graph:t,c:s}){if(!(t!=null&&t.worldAnchor))return e.jsx("div",{className:`p-6 text-sm ${s.muted}`,children:l("暂无世界锚点。请先切换到「对话」,请 AI 帮您设定世界观和角色。","No world anchor yet. Switch to “Chat” and ask the AI to set up the world and characters.","Chưa có neo thế giới. Hãy chuyển sang “Trò chuyện” và nhờ AI thiết lập thế giới và nhân vật.")});const{worldAnchor:n}=t;return e.jsxs("div",{className:"p-4 space-y-3 text-sm","data-testid":"film-world",children:[e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-1 ${s.muted}`,children:l("故事核心","Story core","Cốt lõi câu chuyện")}),e.jsx("div",{className:"text-foreground",children:n.storyCore||"—"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-1 ${s.muted}`,children:l("主题","Theme","Chủ đề")}),e.jsx("div",{children:n.theme||"—"})]}),e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-1 ${s.muted}`,children:l("题材","Genre","Thể loại")}),e.jsx("div",{children:n.genre||"—"})]}),n.durationMinutes>0&&e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-1 ${s.muted}`,children:l("时长","Duration","Thời lượng")}),e.jsxs("div",{children:[n.durationMinutes," ",l("分钟","min","phút")]})]})]}),n.worldRules&&e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-1 ${s.muted}`,children:l("世界规则","World rules","Quy tắc thế giới")}),e.jsx("div",{className:"whitespace-pre-wrap",children:n.worldRules})]}),t.characters.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:`text-xs font-medium mb-2 ${s.muted}`,children:l("主要角色","Main characters","Nhân vật chính")}),e.jsx("ul",{className:"space-y-2",children:t.characters.map(a=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:`shrink-0 text-xs px-1.5 py-0.5 rounded border border-border ${s.muted}`,children:a.role}),e.jsxs("span",{children:[e.jsx("span",{className:"font-medium text-foreground",children:a.name}),a.motivation&&e.jsx("span",{className:` ml-2 ${s.muted}`,children:a.motivation})]})]},a.id))})]})]})}function K({c:t}){return e.jsx("div",{className:`p-6 text-sm ${t.muted}`,"data-testid":"film-scale-placeholder",children:l("规模配置(P2 功能)— 在此设定节点数量目标、分支深度、多结局数量等参数。","Scale settings (P2) — set node count targets, branch depth, number of endings, and other parameters here.","Cấu hình quy mô (tính năng P2) — đặt số nút mục tiêu, độ sâu nhánh, số kết thúc và các tham số khác tại đây.")})}function X({projectId:t,nav:s,theme:n,t:a,sse:d}){const i=$(),[o,p]=f.useState("world"),[y,h]=f.useState({...I}),[u,j]=f.useState(!1),{data:m,refetch:x}=B(`/projects/${t}/story-graph`);f.useEffect(()=>{x()},[o,x]);const b=f.useCallback(r=>{if(r.event!=="agent:complete")return;const w=r.data;(w==null?void 0:w.activeBookId)===t&&x()},[t,x]);W(d.messages,b);const c=f.useMemo(()=>m?z(m):O,[m]),g=f.useMemo(()=>m?F(m,void 0,0):R,[m]),v=y[o],S=G[o];function A(r){j(!1),p(r)}function E(r){h({...y,[o]:r})}function T(){j(r=>!r)}return e.jsxs("div",{"data-testid":"film-wizard",className:"flex flex-col h-screen bg-background text-foreground",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-4 py-2 shrink-0 gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("button",{type:"button","data-testid":"wizard-exit",onClick:s.toDashboard,className:i.link,children:["← ",l("互动影游","Interactive films","Phim tương tác")]}),e.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:D.map((r,w)=>{const M=o===r&&!u,P=c[r];return e.jsxs("button",{type:"button","data-testid":`wizard-step-${r}`,onClick:()=>A(r),className:["relative flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-all",M?i.btnPrimary:i.btnSecondary].join(" "),children:[g[r]&&e.jsx("span",{className:"absolute -top-1 -right-1 h-2 w-2 rounded-full bg-destructive"}),e.jsx("span",{className:["flex h-5 w-5 shrink-0 items-center justify-center rounded-full border text-[11px] font-semibold tabular-nums",P==="done"?"border-current bg-current/25":P==="partial"?"border-current/80":"border-current/40 opacity-70"].join(" "),children:w+1}),e.jsx("span",{children:l(k[r].zh,k[r].en,k[r].vi)})]},r)})})]}),e.jsx("button",{type:"button","data-testid":"wizard-preview",onClick:T,className:["shrink-0 flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium",u?i.btnPrimary:i.btnSecondary].join(" "),children:l("试玩","Play","Chơi thử")})]}),!u&&S.length>0&&e.jsx("div",{className:"flex items-center gap-1 border-b border-border px-4 py-1.5 shrink-0",children:S.map(r=>e.jsx("button",{type:"button","data-testid":`wizard-subview-${r.key}`,onClick:()=>E(r.key),className:["rounded px-3 py-1 text-sm font-medium transition-colors",v===r.key?i.btnPrimary:i.btnSecondary].join(" "),children:l(r.zh,r.en,r.vi)},r.key))}),e.jsx("div",{className:"flex-1 min-h-0 overflow-auto",children:e.jsx(Q,{showPreview:u,phase:o,subView:v,projectId:t,nav:s,theme:n,t:a,sse:d,graph:m,c:i})})]})}function Q({showPreview:t,phase:s,subView:n,projectId:a,nav:d,theme:i,t:o,sse:p,graph:y,c:h}){const u="mx-auto w-full max-w-4xl px-6 py-6";return t?e.jsx("div",{className:u,children:e.jsx(U,{projectId:a,nav:d,theme:i,t:o,embedded:!0})}):s==="world"&&n==="chat"?e.jsx("div",{className:"h-full relative overflow-hidden",children:e.jsx(C,{activeBookId:a,mode:"interactive-film-authoring",nav:d,theme:i,t:o,sse:p})}):s==="world"&&n==="anchor"?e.jsx(J,{graph:y,c:h}):s==="scale"?e.jsx(K,{c:h}):s==="structure"&&n==="flow"?e.jsx(V,{projectId:a,nav:d,theme:i,t:o,embedded:!0}):s==="structure"&&n==="tree"||s==="workshop"&&n==="tree"?e.jsx("div",{className:u,children:e.jsx(H,{projectId:a,nav:d,theme:i,t:o,embedded:!0})}):s==="workshop"&&n==="chat"?e.jsx("div",{className:"h-full relative overflow-hidden",children:e.jsx(C,{activeBookId:a,mode:"interactive-film-authoring",nav:d,theme:i,t:o,sse:p})}):s==="validate"?e.jsxs("div",{className:`${u} space-y-4`,children:[e.jsx(L,{projectId:a,theme:i}),e.jsx(_,{projectId:a,theme:i})]}):null}export{X as default};