@schlenkr/ragents 0.1.9 → 0.1.10

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 (82) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +6 -36
  3. package/apps/server/src/api/contracts.ts +5 -2
  4. package/apps/server/src/api/core-methods.ts +5 -3
  5. package/apps/server/src/config-file.ts +1 -1
  6. package/apps/server/src/host-api.json +2 -0
  7. package/apps/server/src/plugin-support/process-sandbox.ts +16 -15
  8. package/apps/server/src/provider.ts +2 -2
  9. package/apps/server/src/ragents/engine.ts +2 -1
  10. package/apps/server/src/ragents/global-chat.ts +7 -1
  11. package/apps/server/src/server.ts +3 -1
  12. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BO4wLQtE.js} +1 -1
  13. package/apps/web/dist/assets/main-DnnqWHkH.js +11 -0
  14. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +568 -0
  15. package/apps/web/dist/assets/{runPanel-ZT6TPDLM.js → runPanel-DPm7s3KM.js} +2 -2
  16. package/apps/web/dist/help/guide-clients.html +17 -7
  17. package/apps/web/dist/help/guide-clients.md +18 -7
  18. package/apps/web/dist/help/index.html +1911 -908
  19. package/apps/web/dist/help/mini-app.css +24 -0
  20. package/apps/web/dist/host-web.json +2 -2
  21. package/apps/web/dist/index.html +2 -2
  22. package/apps/web/dist/run-panel.html +2 -2
  23. package/apps/web/package.json +1 -1
  24. package/apps/web/src/panel/ConnectionsPage.tsx +3 -0
  25. package/apps/web/src/panel/StartPage.tsx +3 -0
  26. package/apps/web/src/panel/contract.ts +7 -0
  27. package/bundles/ragents.activity/ragents-bundle.json +1 -1
  28. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  29. package/bundles/ragents.actor-programs/server/index.js +31 -3
  30. package/bundles/ragents.actor-programs/server/index.js.map +4 -4
  31. package/bundles/ragents.actor-programs/web/index.js.map +1 -1
  32. package/bundles/ragents.ask/ragents-bundle.json +2 -4
  33. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-MBRPS477.js} +2 -2
  34. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-MBRPS477.js.map} +4 -4
  35. package/bundles/ragents.ask/web/classes.json +1 -1
  36. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  37. package/bundles/ragents.ask/web/index.js +1 -1
  38. package/bundles/ragents.ask/web/index.js.map +4 -4
  39. package/bundles/ragents.browser/ragents-bundle.json +1 -1
  40. package/bundles/ragents.documents/ragents-bundle.json +1 -1
  41. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +1 -1
  42. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +1 -1
  43. package/bundles/ragents.lsp-typescript/ragents-bundle.json +1 -1
  44. package/bundles/ragents.model-relay/ragents-bundle.json +1 -1
  45. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  46. package/bundles/ragents.orchestration/web/classes.json +1 -1
  47. package/bundles/ragents.orchestration/web/index.js +6 -6
  48. package/bundles/ragents.orchestration/web/index.js.map +3 -3
  49. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  50. package/bundles/ragents.overseer/server/index.js +1 -1
  51. package/bundles/ragents.overseer/server/index.js.map +2 -2
  52. package/bundles/ragents.processes/ragents-bundle.json +1 -1
  53. package/bundles/ragents.product/ragents-bundle.json +1 -1
  54. package/bundles/ragents.profile-distribution/ragents-bundle.json +1 -1
  55. package/bundles/ragents.reference/ragents-bundle.json +1 -1
  56. package/bundles/ragents.todo/ragents-bundle.json +1 -1
  57. package/bundles/ragents.transcript/ragents-bundle.json +1 -1
  58. package/bundles/ragents.watch/ragents-bundle.json +1 -1
  59. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  60. package/bundles/ragents.workspace/server/index.js +4 -2
  61. package/bundles/ragents.workspace/server/index.js.map +2 -2
  62. package/package.json +3 -3
  63. package/packages/agent/dist/core/tools/bash.d.ts +1 -1
  64. package/packages/agent/src/core/tools/bash.ts +1 -1
  65. package/packages/ragents/src/index.ts +1 -0
  66. package/packages/ragents/src/plugin-host.ts +46 -0
  67. package/packages/ragents/src/plugin-types.ts +19 -0
  68. package/packages/workspace-executor/src/managed-process.ts +28 -0
  69. package/packages/workspace-executor/src/sandbox-tools.ts +9 -3
  70. package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
  71. package/plugins/ragents.actor-programs/server/index.ts +2 -0
  72. package/plugins/ragents.ask/web/index.tsx +0 -6
  73. package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
  74. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +8 -7
  75. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +3 -3
  76. package/plugins/ragents.overseer/server/api.ts +2 -2
  77. package/plugins/ragents.workspace/client/workspace-client.ts +19 -6
  78. package/plugins/ragents.workspace/server/config.ts +3 -0
  79. package/plugins/ragents.workspace/server/index.ts +3 -2
  80. package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
  81. package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
  82. package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
@@ -46,14 +46,12 @@
46
46
  "rpc"
47
47
  ],
48
48
  "@ragents/web/run-view": [
49
- "runActorFrom",
50
49
  "runViewFrom"
51
50
  ],
52
51
  "@ragents/web/ui": [
53
52
  "Button",
54
53
  "Card",
55
54
  "Input",
56
- "SectionLabel",
57
55
  "cn"
58
56
  ],
59
57
  "react": [
@@ -73,8 +71,8 @@
73
71
  ]
74
72
  }
75
73
  },
76
- "stand": "0c13aeadc67e74c8e07ec3f547f2a5e56c9cd807d2259d874382b6309c0f902a",
77
- "sourceStand": "ffa758a97707149a471be3345b2ab0cf5ef17cef8dd8149978f62b8ce9485802",
74
+ "stand": "01dc1af9ab43d91930716022bdd8fe8cd851316deced6f38b1b37bf14cacad61",
75
+ "sourceStand": "16ec9fca07952d7e84bf27ccf48a65142f3d2cdf8384fca45fe1ff0a004f4221",
78
76
  "server": "server/index.js",
79
77
  "web": {
80
78
  "entry": "web/index.js",
@@ -1,4 +1,4 @@
1
- import{a as u}from"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";var M=u("react","createContext");var C=u("react","createElement");var k=u("react","forwardRef");var F=u("react","useContext");var D=u("react","useState");var b=a=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function U(a,e,d=[]){if(e==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:b(a),size:24,node:e,...d.length>0?{aliases:d}:{}}}var O=a=>{let e="",d=!1;for(let t of a){if(t==="-"||t==="_"||t<=" "){d=e.length>0;continue}e.length===0?e+=t.toLowerCase():e+=d?t.toUpperCase():t,d=!1}return e};var H=a=>{let e=O(a);return e.charAt(0).toUpperCase()+e.slice(1)};var P=(...a)=>a.filter((e,d,t)=>!!e&&e.trim()!==""&&t.indexOf(e)===d).join(" ").trim();var c={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function R(a){return a!=null}function v(a,e={}){let d=e.attributeNames??{},t=l=>d[l]??l,r=a.size??a.width??c.width,p=a.size??a.height??c.height,s=a.aliases?.filter(l=>typeof l=="string"&&l.trim()!=="").map(l=>`lucide-${l}`)??[],m=[...a.name?[`lucide-${a.name}`]:[],...s],i=e.className?.split(" ").filter(Boolean)??[],L=e.includeDefaultClasses===!1?P(...i):P("lucide",...m,...i),o=e.absoluteStrokeWidth?Number(e.strokeWidth??c["stroke-width"])*Number(a.size??a.width??c.width)/Number(e.size??e.width??c.width):e.strokeWidth??c["stroke-width"];return["svg",{...Object.entries(c).reduce((l,[x,h])=>(l[t(x)]=h,l),{}),..."color"in e&&e.color&&{[t("stroke")]:e.color},..."size"in e&&R(e.size)&&{[t("width")]:e.size,[t("height")]:e.size},..."width"in e&&R(e.width)&&{[t("width")]:e.width},..."height"in e&&R(e.height)&&{[t("height")]:e.height},[t("stroke-width")]:o,...L&&{[t("class")]:L},[t("viewBox")]:`0 0 ${r} ${p}`,...e.hasA11yProp===!1?{[t("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},a.node.map(l=>{let[x,h,A]=l,B=e.nonScalingStroke?{[t("vector-effect")]:"non-scaling-stroke",...h}:h;return A?[x,B,A]:[x,B]})]}function G(a,e={}){return v(a,{...e,attributeNames:{...e.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var E=a=>{for(let e in a)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};var ee=M({});var W=()=>F(ee);var V=k(({color:a,size:e,width:d,height:t,strokeWidth:r,absoluteStrokeWidth:p,nonScalingStroke:s,className:m="",children:i,iconNode:L=[],icon:o={node:L,aliases:[],size:24},...I},l)=>{let{size:x=24,strokeWidth:h=2,absoluteStrokeWidth:A=!1,nonScalingStroke:B=!1,color:K="currentColor",className:Z=""}=W()??{},Q=!!i||E(I),[J,j,Y=[]]=G(o,{color:a??K,width:d??e??x,height:t??e??x,strokeWidth:r??h,absoluteStrokeWidth:p??A,nonScalingStroke:s??B,className:P(Z,m),hasA11yProp:Q,attributes:I});return C(J,{ref:l,...j},[...Y.map(([$,_])=>C($,_)),...Array.isArray(i)?i:[i]])});function z(a,e=[],d=[]){let t=typeof a=="string"?U(a,e,d):a,r=k(({className:p,...s},m)=>C(V,{ref:m,icon:t,className:p,...s}));return t.name&&(r.displayName=H(t.name)),r}var X={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};X.node;var S=z(X);var g=u("@ragents/web/ui","Button");var w=u("@ragents/web/ui","Card");var T=u("@ragents/web/ui","Input");var ae=u("@ragents/web/ui","SectionLabel");var y=u("@ragents/web/ui","cn");var te=u("react/jsx-runtime","Fragment");var f=u("react/jsx-runtime","jsx");var n=u("react/jsx-runtime","jsxs");var q="gap-2.5 bg-background px-3.5 text-sm",N="h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal";function Ba({text:a,question:e,answer:d,onAnswer:t}){let[r,p]=D([]),[s,m]=D("");if(d!==void 0)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),n("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground","data-question":"answered",children:[f(S,{className:"text-success",size:12}),d]})]});if(!t)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("ul",{className:"list-disc pl-6",children:e.options.map(o=>f("li",{children:o},o))})]});let i=o=>p(I=>I.includes(o)?I.filter(l=>l!==o):[...I,o]),L=()=>{let o=s.trim();o&&t(o)};return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("div",{className:"flex flex-col items-stretch gap-1.5",children:e.options.map(o=>e.multi?n(g,{"aria-pressed":r.includes(o),className:y(N,"aria-pressed:border-primary aria-pressed:bg-accent"),"data-question":"option",onClick:()=>i(o),variant:"outline",children:[f("span",{className:"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary",children:r.includes(o)&&f(S,{size:10})}),o]},o):f(g,{className:N,"data-question":"option",onClick:()=>t(o),variant:"outline",children:o},o))}),e.multi&&f(g,{className:"self-start",disabled:r.length===0,onClick:()=>t(r.join("; ")),size:"sm",children:"Auswahl \xFCbernehmen"}),n("div",{className:"flex gap-1.5",children:[f(T,{className:"flex-1",onChange:o=>m(o.target.value),onKeyDown:o=>{o.key==="Enter"&&L()},placeholder:"... oder frei antworten",value:s}),f(g,{disabled:s.trim()==="",onClick:L,size:"sm",variant:"outline",children:"Antworten"})]})]})}export{D as a,ae as b,te as c,f as d,n as e,Ba as f};
1
+ import{a as u}from"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";var M=u("react","createContext");var C=u("react","createElement");var k=u("react","forwardRef");var F=u("react","useContext");var D=u("react","useState");var b=a=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function U(a,e,d=[]){if(e==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:b(a),size:24,node:e,...d.length>0?{aliases:d}:{}}}var O=a=>{let e="",d=!1;for(let t of a){if(t==="-"||t==="_"||t<=" "){d=e.length>0;continue}e.length===0?e+=t.toLowerCase():e+=d?t.toUpperCase():t,d=!1}return e};var H=a=>{let e=O(a);return e.charAt(0).toUpperCase()+e.slice(1)};var P=(...a)=>a.filter((e,d,t)=>!!e&&e.trim()!==""&&t.indexOf(e)===d).join(" ").trim();var c={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function R(a){return a!=null}function v(a,e={}){let d=e.attributeNames??{},t=l=>d[l]??l,r=a.size??a.width??c.width,p=a.size??a.height??c.height,s=a.aliases?.filter(l=>typeof l=="string"&&l.trim()!=="").map(l=>`lucide-${l}`)??[],m=[...a.name?[`lucide-${a.name}`]:[],...s],i=e.className?.split(" ").filter(Boolean)??[],L=e.includeDefaultClasses===!1?P(...i):P("lucide",...m,...i),o=e.absoluteStrokeWidth?Number(e.strokeWidth??c["stroke-width"])*Number(a.size??a.width??c.width)/Number(e.size??e.width??c.width):e.strokeWidth??c["stroke-width"];return["svg",{...Object.entries(c).reduce((l,[x,h])=>(l[t(x)]=h,l),{}),..."color"in e&&e.color&&{[t("stroke")]:e.color},..."size"in e&&R(e.size)&&{[t("width")]:e.size,[t("height")]:e.size},..."width"in e&&R(e.width)&&{[t("width")]:e.width},..."height"in e&&R(e.height)&&{[t("height")]:e.height},[t("stroke-width")]:o,...L&&{[t("class")]:L},[t("viewBox")]:`0 0 ${r} ${p}`,...e.hasA11yProp===!1?{[t("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},a.node.map(l=>{let[x,h,A]=l,B=e.nonScalingStroke?{[t("vector-effect")]:"non-scaling-stroke",...h}:h;return A?[x,B,A]:[x,B]})]}function G(a,e={}){return v(a,{...e,attributeNames:{...e.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var E=a=>{for(let e in a)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};var ee=M({});var W=()=>F(ee);var V=k(({color:a,size:e,width:d,height:t,strokeWidth:r,absoluteStrokeWidth:p,nonScalingStroke:s,className:m="",children:i,iconNode:L=[],icon:o={node:L,aliases:[],size:24},...I},l)=>{let{size:x=24,strokeWidth:h=2,absoluteStrokeWidth:A=!1,nonScalingStroke:B=!1,color:K="currentColor",className:Z=""}=W()??{},Q=!!i||E(I),[J,j,Y=[]]=G(o,{color:a??K,width:d??e??x,height:t??e??x,strokeWidth:r??h,absoluteStrokeWidth:p??A,nonScalingStroke:s??B,className:P(Z,m),hasA11yProp:Q,attributes:I});return C(J,{ref:l,...j},[...Y.map(([$,_])=>C($,_)),...Array.isArray(i)?i:[i]])});function z(a,e=[],d=[]){let t=typeof a=="string"?U(a,e,d):a,r=k(({className:p,...s},m)=>C(V,{ref:m,icon:t,className:p,...s}));return t.name&&(r.displayName=H(t.name)),r}var X={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};X.node;var S=z(X);var g=u("@ragents/web/ui","Button");var w=u("@ragents/web/ui","Card");var T=u("@ragents/web/ui","Input");var y=u("@ragents/web/ui","cn");var ae=u("react/jsx-runtime","Fragment");var f=u("react/jsx-runtime","jsx");var n=u("react/jsx-runtime","jsxs");var q="gap-2.5 bg-background px-3.5 text-sm",N="h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal";function ka({text:a,question:e,answer:d,onAnswer:t}){let[r,p]=D([]),[s,m]=D("");if(d!==void 0)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),n("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground","data-question":"answered",children:[f(S,{className:"text-success",size:12}),d]})]});if(!t)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("ul",{className:"list-disc pl-6",children:e.options.map(o=>f("li",{children:o},o))})]});let i=o=>p(I=>I.includes(o)?I.filter(l=>l!==o):[...I,o]),L=()=>{let o=s.trim();o&&t(o)};return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("div",{className:"flex flex-col items-stretch gap-1.5",children:e.options.map(o=>e.multi?n(g,{"aria-pressed":r.includes(o),className:y(N,"aria-pressed:border-primary aria-pressed:bg-accent"),"data-question":"option",onClick:()=>i(o),variant:"outline",children:[f("span",{className:"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary",children:r.includes(o)&&f(S,{size:10})}),o]},o):f(g,{className:N,"data-question":"option",onClick:()=>t(o),variant:"outline",children:o},o))}),e.multi&&f(g,{className:"self-start",disabled:r.length===0,onClick:()=>t(r.join("; ")),size:"sm",children:"Auswahl \xFCbernehmen"}),n("div",{className:"flex gap-1.5",children:[f(T,{className:"flex-1",onChange:o=>m(o.target.value),onKeyDown:o=>{o.key==="Enter"&&L()},placeholder:"... oder frei antworten",value:s}),f(g,{disabled:s.trim()==="",onClick:L,size:"sm",variant:"outline",children:"Antworten"})]})]})}export{D as a,ae as b,f as c,n as d,ka as e};
2
2
  /*! Bundled license information:
3
3
 
4
4
  lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
@@ -22,4 +22,4 @@ lucide-react/dist/esm/lucide-react.mjs:
22
22
  * See the LICENSE file in the root directory of this source tree.
23
23
  *)
24
24
  */
25
- //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map
25
+ //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-MBRPS477.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["ragents-host-value:react#createContext", "ragents-host-value:react#createElement", "ragents-host-value:react#forwardRef", "ragents-host-value:react#useContext", "ragents-host-value:react#useState", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toKebabCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toLucideIconData.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toCamelCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toPascalCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/mergeClasses.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/defaultAttributes.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconNode.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconForReact.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/hasA11yProp.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/context.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/Icon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/createLucideIcon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/check.ts", "ragents-host-value:@ragents/web/ui#Button", "ragents-host-value:@ragents/web/ui#Card", "ragents-host-value:@ragents/web/ui#Input", "ragents-host-value:@ragents/web/ui#SectionLabel", "ragents-host-value:@ragents/web/ui#cn", "ragents-host-value:react/jsx-runtime#Fragment", "ragents-host-value:react/jsx-runtime#jsx", "ragents-host-value:react/jsx-runtime#jsxs", "../../../../plugins/ragents.ask/web/QuestionCard.tsx"],
4
- "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createElement\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"forwardRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useState\");\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "import { toKebabCase } from './toKebabCase';\nimport type { LucideIconData, LucideIconNode } from '../build/types';\n\n/**\n * Converts legacy `(name, iconNode, aliases?)` icon arguments into icon data object format.\n */\nexport function toLucideIconData(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases: string[] = [],\n): LucideIconData {\n if (iconNode == null) {\n throw new Error('[lucide]: iconNode is required when icon name is used');\n }\n\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...(aliases.length > 0 ? { aliases } : {}),\n };\n}\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) => {\n let out = '';\n let upperNext = false;\n\n for (const ch of string) {\n if (ch === '-' || ch === '_' || ch <= ' ') {\n upperNext = out.length > 0;\n continue;\n }\n\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n\n upperNext = false;\n }\n\n return out as string;\n};\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "const defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName: string) =>\n attributeNames[attributeName] ?? attributeName;\n\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n const aliasClassNames =\n icon.aliases\n ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n .map((alias: string) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n const className =\n params.includeDefaultClasses === false\n ? mergeClasses(...classNamesFromClassName)\n : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n const calculatedStrokeWidth = params.absoluteStrokeWidth\n ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n Number(params.size ?? params.width ?? defaultAttributes['width'])\n : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {} as SVGProps),\n ...('color' in params &&\n params.color && {\n [getAttributeName('stroke')]: params.color,\n }),\n ...('size' in params &&\n isDefined(params.size) && {\n [getAttributeName('width')]: params.size,\n [getAttributeName('height')]: params.size,\n }),\n ...('width' in params &&\n isDefined(params.width) && {\n [getAttributeName('width')]: params.width,\n }),\n ...('height' in params &&\n isDefined(params.height) && {\n [getAttributeName('height')]: params.height,\n }),\n [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n ...(className && {\n [getAttributeName('class')]: className,\n }),\n [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...(params.hasA11yProp === false\n ? {\n [getAttributeName('aria-hidden')]: 'true',\n }\n : {}),\n ...('attributes' in params && params.attributes),\n };\n\n return [\n 'svg',\n attributes,\n icon.node.map((child): LucideIconNode => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke\n ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n : attrs;\n\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n }),\n ];\n}\n\nexport default buildLucideIconNode;\n", "import buildLucideIconNode from './buildLucideIconNode';\nimport type { LucideBuildParams, LucideIconData, LucideIconNode } from './types';\n\n/**\n * Creates a React-compatible Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconForReact(\n icon: LucideIconData,\n params: LucideBuildParams = {},\n): LucideIconNode {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: 'className',\n 'stroke-width': 'strokeWidth',\n 'stroke-linecap': 'strokeLinecap',\n 'stroke-linejoin': 'strokeLinejoin',\n 'vector-effect': 'vectorEffect',\n },\n });\n}\n\nexport default buildLucideIconForReact;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n /**\n * @deprecated Use `nonScalingStroke` instead.\n */\n absoluteStrokeWidth: boolean;\n nonScalingStroke: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n", "'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport { buildLucideIconForReact, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { useLucideContext } from './context';\n\ntype IconComponentProps = LucideProps &\n (\n | {\n iconNode: LucideIconNode[];\n icon?: never;\n }\n | {\n icon: LucideIconData;\n iconNode?: never;\n }\n );\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {boolean} props.nonScalingStroke - Whether to use non scaling strokes\n * @param {string} props.className - The class name of the icon\n * @param {LucideIconNode[]} props.children - The children of the icon\n * @param {LucideIconNode[]} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = '',\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24,\n },\n ...rest\n },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest,\n });\n\n return createElement(\n name,\n {\n ref,\n ...svgAttributes,\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { toLucideIconData, toPascalCase } from '@lucide/shared';\nimport { LucideIcon, LucideIconData, LucideIconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Creates a Lucide icon component from icon data.\n *\n * @param icon Icon data object.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(icon: LucideIconData): LucideIcon;\n\n/**\n * Creates a Lucide icon component from the legacy icon arguments.\n *\n * @param iconName Icon name.\n * @param iconNode Icon node.\n * @param aliases Optional icon aliases.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases?: string[],\n): LucideIcon;\n\nfunction createLucideIcon(\n iconDataOrName: LucideIconData | string,\n iconNode: LucideIconNode[] = [],\n aliases: string[] = [],\n): LucideIcon {\n const iconData =\n typeof iconDataOrName === 'string'\n ? toLucideIconData(iconDataOrName, iconNode, aliases)\n : iconDataOrName;\n\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props,\n }),\n );\n\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n\n return Component;\n}\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'check',\n size: 24,\n node: [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon(__iconData);\n\nexport default Check;\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Button\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Card\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Input\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"SectionLabel\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"cn\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"Fragment\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsxs\");\n", "import { CheckIcon } from \"lucide-react\";\nimport { Button, Card, cn, Input } from \"@ragents/web/ui\";\nimport { useState } from \"react\";\nimport type { AskPayload } from \"../ask-payload\";\n\nconst cardClasses = \"gap-2.5 bg-background px-3.5 text-sm\";\nconst optionClasses = \"h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal\";\n\n/**\n * R\u00FCckfrage-Karte: Optionen untereinander, wahlweise Einzel- oder Mehrfachauswahl\n * (question.multi), dazu immer eine freie Antwortzeile. Nach der Antwort nur noch Beleg.\n */\nexport function QuestionCard({\n text,\n question,\n answer,\n onAnswer,\n}: {\n text: string;\n question: AskPayload;\n answer?: string;\n onAnswer?: (text: string) => void;\n}) {\n const [gewaehlt, setGewaehlt] = useState<string[]>([]);\n const [frei, setFrei] = useState(\"\");\n\n if (answer !== undefined) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\" data-question=\"answered\">\n <CheckIcon className=\"text-success\" size={12} />\n {answer}\n </div>\n </Card>\n );\n }\n\n if (!onAnswer) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <ul className=\"list-disc pl-6\">{question.options.map((option) => <li key={option}>{option}</li>)}</ul>\n </Card>\n );\n }\n\n const umschalten = (option: string) =>\n setGewaehlt((bisher) =>\n bisher.includes(option) ? bisher.filter((o) => o !== option) : [...bisher, option]);\n\n const freiSenden = () => {\n const wert = frei.trim();\n if (wert) onAnswer(wert);\n };\n\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex flex-col items-stretch gap-1.5\">\n {question.options.map((option) =>\n question.multi ? (\n <Button\n aria-pressed={gewaehlt.includes(option)}\n className={cn(optionClasses, \"aria-pressed:border-primary aria-pressed:bg-accent\")}\n data-question=\"option\"\n key={option}\n onClick={() => umschalten(option)}\n variant=\"outline\"\n >\n <span className=\"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary\">\n {gewaehlt.includes(option) && <CheckIcon size={10} />}\n </span>\n {option}\n </Button>\n ) : (\n <Button className={optionClasses} data-question=\"option\" key={option} onClick={() => onAnswer(option)} variant=\"outline\">\n {option}\n </Button>\n ),\n )}\n </div>\n {question.multi && (\n <Button\n className=\"self-start\"\n disabled={gewaehlt.length === 0}\n onClick={() => onAnswer(gewaehlt.join(\"; \"))}\n size=\"sm\"\n >\n Auswahl \u00FCbernehmen\n </Button>\n )}\n <div className=\"flex gap-1.5\">\n <Input\n className=\"flex-1\"\n onChange={(event) => setFrei(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") freiSenden();\n }}\n placeholder=\"... oder frei antworten\"\n value={frei}\n />\n <Button disabled={frei.trim() === \"\"} onClick={freiSenden} size=\"sm\" variant=\"outline\">\n Antworten\n </Button>\n </div>\n </Card>\n );\n}\n"],
5
- "mappings": "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",
6
- "names": ["react_createContext_default", "read", "react_createElement_default", "read", "react_forwardRef_default", "read", "react_useContext_default", "read", "react_useState_default", "read", "toKebabCase", "string", "toLucideIconData", "iconName", "iconNode", "aliases", "toKebabCase", "toCamelCase", "string", "out", "upperNext", "ch", "toPascalCase", "string", "camelCase", "toCamelCase", "mergeClasses", "classes", "className", "index", "array", "defaultAttributes", "isDefined", "value", "buildLucideIconNode", "icon", "params", "attributeNames", "getAttributeName", "attributeName", "viewBoxWidth", "defaultAttributes", "viewBoxHeight", "aliasClassNames", "alias", "iconClassNames", "classNamesFromClassName", "className", "mergeClasses", "calculatedStrokeWidth", "attrs", "attrName", "child", "name", "children", "nextAttrs", "buildLucideIconForReact", "icon", "params", "buildLucideIconNode", "hasA11yProp", "props", "prop", "LucideContext", "react_createContext_default", "useLucideContext", "react_useContext_default", "LucideContext", "Icon", "react_forwardRef_default", "color", "size", "width", "height", "strokeWidth", "absoluteStrokeWidth", "nonScalingStroke", "className", "children", "iconNode", "icon", "rest", "ref", "contextSize", "contextStrokeWidth", "contextAbsoluteStrokeWidth", "contextNonScalingStroke", "contextColor", "contextClass", "useLucideContext", "hasAccessibleProp", "hasA11yProp", "name", "svgAttributes", "builtIconNode", "buildLucideIconForReact", "mergeClasses", "react_createElement_default", "tag", "attrs", "createLucideIcon", "iconDataOrName", "iconNode", "aliases", "iconData", "toLucideIconData", "Component", "react_forwardRef_default", "className", "props", "ref", "react_createElement_default", "Icon", "toPascalCase", "__iconData", "Check", "createLucideIcon", "ui_Button_default", "read", "ui_Card_default", "read", "ui_Input_default", "read", "ui_SectionLabel_default", "read", "ui_cn_default", "read", "jsx_runtime_Fragment_default", "read", "jsx_runtime_jsx_default", "read", "jsx_runtime_jsxs_default", "read", "cardClasses", "optionClasses", "QuestionCard", "text", "question", "answer", "onAnswer", "gewaehlt", "setGewaehlt", "react_useState_default", "frei", "setFrei", "jsx_runtime_jsxs_default", "ui_Card_default", "jsx_runtime_jsx_default", "Check", "option", "umschalten", "bisher", "o", "freiSenden", "wert", "ui_Button_default", "ui_cn_default", "ui_Input_default", "event"]
3
+ "sources": ["ragents-host-value:react#createContext", "ragents-host-value:react#createElement", "ragents-host-value:react#forwardRef", "ragents-host-value:react#useContext", "ragents-host-value:react#useState", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toKebabCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toLucideIconData.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toCamelCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toPascalCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/mergeClasses.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/defaultAttributes.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconNode.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconForReact.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/hasA11yProp.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/context.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/Icon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/createLucideIcon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/check.ts", "ragents-host-value:@ragents/web/ui#Button", "ragents-host-value:@ragents/web/ui#Card", "ragents-host-value:@ragents/web/ui#Input", "ragents-host-value:@ragents/web/ui#cn", "ragents-host-value:react/jsx-runtime#Fragment", "ragents-host-value:react/jsx-runtime#jsx", "ragents-host-value:react/jsx-runtime#jsxs", "../../../../plugins/ragents.ask/web/QuestionCard.tsx"],
4
+ "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createElement\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"forwardRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useState\");\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "import { toKebabCase } from './toKebabCase';\nimport type { LucideIconData, LucideIconNode } from '../build/types';\n\n/**\n * Converts legacy `(name, iconNode, aliases?)` icon arguments into icon data object format.\n */\nexport function toLucideIconData(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases: string[] = [],\n): LucideIconData {\n if (iconNode == null) {\n throw new Error('[lucide]: iconNode is required when icon name is used');\n }\n\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...(aliases.length > 0 ? { aliases } : {}),\n };\n}\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) => {\n let out = '';\n let upperNext = false;\n\n for (const ch of string) {\n if (ch === '-' || ch === '_' || ch <= ' ') {\n upperNext = out.length > 0;\n continue;\n }\n\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n\n upperNext = false;\n }\n\n return out as string;\n};\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "const defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName: string) =>\n attributeNames[attributeName] ?? attributeName;\n\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n const aliasClassNames =\n icon.aliases\n ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n .map((alias: string) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n const className =\n params.includeDefaultClasses === false\n ? mergeClasses(...classNamesFromClassName)\n : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n const calculatedStrokeWidth = params.absoluteStrokeWidth\n ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n Number(params.size ?? params.width ?? defaultAttributes['width'])\n : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {} as SVGProps),\n ...('color' in params &&\n params.color && {\n [getAttributeName('stroke')]: params.color,\n }),\n ...('size' in params &&\n isDefined(params.size) && {\n [getAttributeName('width')]: params.size,\n [getAttributeName('height')]: params.size,\n }),\n ...('width' in params &&\n isDefined(params.width) && {\n [getAttributeName('width')]: params.width,\n }),\n ...('height' in params &&\n isDefined(params.height) && {\n [getAttributeName('height')]: params.height,\n }),\n [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n ...(className && {\n [getAttributeName('class')]: className,\n }),\n [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...(params.hasA11yProp === false\n ? {\n [getAttributeName('aria-hidden')]: 'true',\n }\n : {}),\n ...('attributes' in params && params.attributes),\n };\n\n return [\n 'svg',\n attributes,\n icon.node.map((child): LucideIconNode => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke\n ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n : attrs;\n\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n }),\n ];\n}\n\nexport default buildLucideIconNode;\n", "import buildLucideIconNode from './buildLucideIconNode';\nimport type { LucideBuildParams, LucideIconData, LucideIconNode } from './types';\n\n/**\n * Creates a React-compatible Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconForReact(\n icon: LucideIconData,\n params: LucideBuildParams = {},\n): LucideIconNode {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: 'className',\n 'stroke-width': 'strokeWidth',\n 'stroke-linecap': 'strokeLinecap',\n 'stroke-linejoin': 'strokeLinejoin',\n 'vector-effect': 'vectorEffect',\n },\n });\n}\n\nexport default buildLucideIconForReact;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n /**\n * @deprecated Use `nonScalingStroke` instead.\n */\n absoluteStrokeWidth: boolean;\n nonScalingStroke: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n", "'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport { buildLucideIconForReact, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { useLucideContext } from './context';\n\ntype IconComponentProps = LucideProps &\n (\n | {\n iconNode: LucideIconNode[];\n icon?: never;\n }\n | {\n icon: LucideIconData;\n iconNode?: never;\n }\n );\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {boolean} props.nonScalingStroke - Whether to use non scaling strokes\n * @param {string} props.className - The class name of the icon\n * @param {LucideIconNode[]} props.children - The children of the icon\n * @param {LucideIconNode[]} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = '',\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24,\n },\n ...rest\n },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest,\n });\n\n return createElement(\n name,\n {\n ref,\n ...svgAttributes,\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { toLucideIconData, toPascalCase } from '@lucide/shared';\nimport { LucideIcon, LucideIconData, LucideIconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Creates a Lucide icon component from icon data.\n *\n * @param icon Icon data object.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(icon: LucideIconData): LucideIcon;\n\n/**\n * Creates a Lucide icon component from the legacy icon arguments.\n *\n * @param iconName Icon name.\n * @param iconNode Icon node.\n * @param aliases Optional icon aliases.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases?: string[],\n): LucideIcon;\n\nfunction createLucideIcon(\n iconDataOrName: LucideIconData | string,\n iconNode: LucideIconNode[] = [],\n aliases: string[] = [],\n): LucideIcon {\n const iconData =\n typeof iconDataOrName === 'string'\n ? toLucideIconData(iconDataOrName, iconNode, aliases)\n : iconDataOrName;\n\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props,\n }),\n );\n\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n\n return Component;\n}\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'check',\n size: 24,\n node: [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon(__iconData);\n\nexport default Check;\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Button\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Card\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Input\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"cn\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"Fragment\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsxs\");\n", "import { CheckIcon } from \"lucide-react\";\nimport { Button, Card, cn, Input } from \"@ragents/web/ui\";\nimport { useState } from \"react\";\nimport type { AskPayload } from \"../ask-payload\";\n\nconst cardClasses = \"gap-2.5 bg-background px-3.5 text-sm\";\nconst optionClasses = \"h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal\";\n\n/**\n * R\u00FCckfrage-Karte: Optionen untereinander, wahlweise Einzel- oder Mehrfachauswahl\n * (question.multi), dazu immer eine freie Antwortzeile. Nach der Antwort nur noch Beleg.\n */\nexport function QuestionCard({\n text,\n question,\n answer,\n onAnswer,\n}: {\n text: string;\n question: AskPayload;\n answer?: string;\n onAnswer?: (text: string) => void;\n}) {\n const [gewaehlt, setGewaehlt] = useState<string[]>([]);\n const [frei, setFrei] = useState(\"\");\n\n if (answer !== undefined) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\" data-question=\"answered\">\n <CheckIcon className=\"text-success\" size={12} />\n {answer}\n </div>\n </Card>\n );\n }\n\n if (!onAnswer) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <ul className=\"list-disc pl-6\">{question.options.map((option) => <li key={option}>{option}</li>)}</ul>\n </Card>\n );\n }\n\n const umschalten = (option: string) =>\n setGewaehlt((bisher) =>\n bisher.includes(option) ? bisher.filter((o) => o !== option) : [...bisher, option]);\n\n const freiSenden = () => {\n const wert = frei.trim();\n if (wert) onAnswer(wert);\n };\n\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex flex-col items-stretch gap-1.5\">\n {question.options.map((option) =>\n question.multi ? (\n <Button\n aria-pressed={gewaehlt.includes(option)}\n className={cn(optionClasses, \"aria-pressed:border-primary aria-pressed:bg-accent\")}\n data-question=\"option\"\n key={option}\n onClick={() => umschalten(option)}\n variant=\"outline\"\n >\n <span className=\"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary\">\n {gewaehlt.includes(option) && <CheckIcon size={10} />}\n </span>\n {option}\n </Button>\n ) : (\n <Button className={optionClasses} data-question=\"option\" key={option} onClick={() => onAnswer(option)} variant=\"outline\">\n {option}\n </Button>\n ),\n )}\n </div>\n {question.multi && (\n <Button\n className=\"self-start\"\n disabled={gewaehlt.length === 0}\n onClick={() => onAnswer(gewaehlt.join(\"; \"))}\n size=\"sm\"\n >\n Auswahl \u00FCbernehmen\n </Button>\n )}\n <div className=\"flex gap-1.5\">\n <Input\n className=\"flex-1\"\n onChange={(event) => setFrei(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") freiSenden();\n }}\n placeholder=\"... oder frei antworten\"\n value={frei}\n />\n <Button disabled={frei.trim() === \"\"} onClick={freiSenden} size=\"sm\" variant=\"outline\">\n Antworten\n </Button>\n </div>\n </Card>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["react_createContext_default", "read", "react_createElement_default", "read", "react_forwardRef_default", "read", "react_useContext_default", "read", "react_useState_default", "read", "toKebabCase", "string", "toLucideIconData", "iconName", "iconNode", "aliases", "toKebabCase", "toCamelCase", "string", "out", "upperNext", "ch", "toPascalCase", "string", "camelCase", "toCamelCase", "mergeClasses", "classes", "className", "index", "array", "defaultAttributes", "isDefined", "value", "buildLucideIconNode", "icon", "params", "attributeNames", "getAttributeName", "attributeName", "viewBoxWidth", "defaultAttributes", "viewBoxHeight", "aliasClassNames", "alias", "iconClassNames", "classNamesFromClassName", "className", "mergeClasses", "calculatedStrokeWidth", "attrs", "attrName", "child", "name", "children", "nextAttrs", "buildLucideIconForReact", "icon", "params", "buildLucideIconNode", "hasA11yProp", "props", "prop", "LucideContext", "react_createContext_default", "useLucideContext", "react_useContext_default", "LucideContext", "Icon", "react_forwardRef_default", "color", "size", "width", "height", "strokeWidth", "absoluteStrokeWidth", "nonScalingStroke", "className", "children", "iconNode", "icon", "rest", "ref", "contextSize", "contextStrokeWidth", "contextAbsoluteStrokeWidth", "contextNonScalingStroke", "contextColor", "contextClass", "useLucideContext", "hasAccessibleProp", "hasA11yProp", "name", "svgAttributes", "builtIconNode", "buildLucideIconForReact", "mergeClasses", "react_createElement_default", "tag", "attrs", "createLucideIcon", "iconDataOrName", "iconNode", "aliases", "iconData", "toLucideIconData", "Component", "react_forwardRef_default", "className", "props", "ref", "react_createElement_default", "Icon", "toPascalCase", "__iconData", "Check", "createLucideIcon", "ui_Button_default", "read", "ui_Card_default", "read", "ui_Input_default", "read", "ui_cn_default", "read", "jsx_runtime_Fragment_default", "read", "jsx_runtime_jsx_default", "read", "jsx_runtime_jsxs_default", "read", "cardClasses", "optionClasses", "QuestionCard", "text", "question", "answer", "onAnswer", "gewaehlt", "setGewaehlt", "react_useState_default", "frei", "setFrei", "jsx_runtime_jsxs_default", "ui_Card_default", "jsx_runtime_jsx_default", "Check", "option", "umschalten", "bisher", "o", "freiSenden", "wert", "ui_Button_default", "ui_cn_default", "ui_Input_default", "event"]
7
7
  }
@@ -1 +1 @@
1
- ["a","access","actionId","actionViews","activate","active","actorId","additionalProperties","alert","animate-ring-pulse","answer","answerQuestion","answerTextOf","answered","antworten","approved","aria-pressed","aria-pressed:bg-accent","aria-pressed:border-primary","as","ask","askContracts","askPayloadOf","askedBy","asker","askerHandle","asking","assess","async","attention","attentionFor","await","beantworten","bg-background","border","border-border","call","candidate","cardClasses","cardSections","caught","className","closes","configuredPlugin","const","data-question","dazu","defineOperation","den","der","des","description","descriptor","die","disabled","dismiss","eine","eines","entry","export","false","flex","flex-1","flex-col","flex-none","font-normal","fragt","frei","freiSenden","freie","from","function","gap-1.5","gap-2","gap-2.5","gets","grid","group-aria-pressed/button:border-primary","h-auto","handle","hat","id","if","immer","import","inline-flex","input","instanceof","interface","items-center","items-stretch","its","justify-center","justify-start","key","label","leading-[1.35]","leading-normal","length","list-disc","lucide-react","maxLength","mb-1.5","message","minLength","motion-reduce:animate-none","multi","needsRunView","new","noch","null","nur","o","object","oder","offen","ohne","onAnswer","onChange","onClick","onKeyDown","option","optionClasses","options","order","outline","owner","payload","pending","pending-questions","pendingQuestions","person","pl-6","placeholder","px-3","px-3.5","py-1.5","question","questions","react","read","recipient","rest","result","return","rights","role","rounded-lg","rounded-sm","rpc","runId","runViewFrom","s","self-start","sent","session","setError","setFrei","setGewaehlt","sie","size","size-3.5","sm","status","string","stringArrayOf","supersededBy","supersedingInputOf","text","text-[0.7rem]","text-destructive","text-left","text-muted-foreground","text-primary","text-sm","text-success","the","to","tool","true","type","typebox","typeof","umschalten","und","undefined","unknown","useAccess","useState","user","value","variant","verwirft","view","w-full","wahlweise","webPlugin","wenn","wert","when","whitespace-normal","write"]
1
+ ["a","access","actionId","actionViews","activate","active","additionalProperties","alert","answer","answerQuestion","answerTextOf","answered","antworten","approved","aria-pressed","aria-pressed:bg-accent","aria-pressed:border-primary","as","ask","askContracts","askPayloadOf","askedBy","asker","askerHandle","asking","assess","async","attention","attentionFor","await","beantworten","bg-background","border","border-border","call","candidate","cardClasses","caught","className","closes","configuredPlugin","const","data-question","dazu","defineOperation","den","der","des","description","descriptor","die","disabled","dismiss","eine","eines","entry","export","false","flex","flex-1","flex-col","flex-none","font-normal","fragt","frei","freiSenden","freie","from","function","gap-1.5","gap-2","gap-2.5","gets","group-aria-pressed/button:border-primary","h-auto","handle","hat","id","if","immer","import","inline-flex","input","instanceof","interface","items-center","items-stretch","its","justify-center","justify-start","key","label","leading-normal","length","list-disc","lucide-react","maxLength","message","minLength","multi","needsRunView","new","noch","null","nur","o","object","oder","offen","ohne","onAnswer","onChange","onClick","onKeyDown","option","optionClasses","options","outline","owner","payload","pending","pending-questions","pendingQuestions","person","pl-6","placeholder","px-3","px-3.5","py-1.5","question","react","read","recipient","rest","result","return","rights","role","rounded-sm","rpc","runId","s","self-start","sent","session","setError","setFrei","setGewaehlt","sie","size","size-3.5","sm","status","string","stringArrayOf","supersededBy","supersedingInputOf","text","text-[0.7rem]","text-destructive","text-left","text-muted-foreground","text-primary","text-sm","text-success","the","to","tool","true","type","typebox","typeof","umschalten","und","undefined","unknown","useAccess","useState","user","value","variant","verwirft","view","w-full","wahlweise","webPlugin","wenn","wert","when","whitespace-normal","write"]
@@ -1,2 +1,2 @@
1
- import{f as a}from"/plugins/ragents.ask/web/chunks/chunk-V7W3QDVS.js";import"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";export{a as QuestionCard};
1
+ import{e as a}from"/plugins/ragents.ask/web/chunks/chunk-MBRPS477.js";import"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";export{a as QuestionCard};
2
2
  //# sourceMappingURL=/plugins/ragents.ask/web/exports/web/QuestionCard.js.map
@@ -1,2 +1,2 @@
1
- import{a as u,b as V,c as i,d as k}from"/plugins/ragents.ask/web/chunks/chunk-WFN4374U.js";import{a as A,b as v,c as C,d as o,e as d,f as y}from"/plugins/ragents.ask/web/chunks/chunk-V7W3QDVS.js";import{a as S}from"/plugins/ragents.ask/web/chunks/chunk-4VXWWEG7.js";import{a}from"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";var b=a("@ragents/web/run-view","runActorFrom");var l=a("@ragents/web/run-view","runViewFrom");var g=a("@ragents/web/AccessContext","useAccess");var N=e=>typeof e=="string"?e:e==null?"":JSON.stringify(e);function R({action:e,session:r,text:n}){let s=g(),[f,m]=A(),w=i(e.payload);if(!w)return null;let p=P=>{m(void 0),S(r.session.id,e.actionId,P).catch(t=>m(t instanceof Error?t.message:String(t)))};return d(C,{children:[o(y,{answer:e.status===void 0?void 0:e.status==="approved"?N(e.result):k(e.result)!==void 0?V:"Der Benutzer hat die Frage verworfen.",onAnswer:s.can("runs.write")?p:void 0,question:w,text:n}),f&&o("p",{className:"text-[0.7rem] text-destructive",role:"alert",children:f})]})}function F({actor:e,session:r}){let n=g(),[s,f]=A(),m=l(r.runView);if(!m)return null;let w=b(e).id,p=m.actions.filter(t=>t.owner===u&&(i(t.payload)?.recipient??t.askedBy)===w&&t.status==="pending");if(p.length===0)return null;let P=(t,x)=>{f(void 0),S(r.session.id,t,x).catch(c=>f(c instanceof Error?c.message:String(c)))};return d("section",{className:"grid gap-1.5",children:[d(v,{children:[o("span",{children:"R\xFCckfrage"}),o("small",{children:p.length})]}),p.map(t=>{let x=i(t.payload);return x&&d("div",{className:"rounded-lg animate-ring-pulse motion-reduce:animate-none",children:[t.description&&o("p",{className:"mb-1.5 text-[0.7rem] leading-[1.35] text-muted-foreground",children:t.description}),o(y,{onAnswer:n.can("runs.write")?c=>P(t.id,c):void 0,question:x,text:t.title})]},t.id)}),s&&o("p",{className:"text-[0.7rem] text-destructive",role:"alert",children:s})]})}var D=e=>e.actions.filter(r=>r.owner===u&&r.status==="pending"),E=(e,r)=>e.actors.find(n=>n.id===r)?.handle??r,Q=e=>{let r=l(e.runView);if(!r)return;let[n,...s]=D(r);if(n)return{active:!0,label:s.length===0?`@${E(r,i(n.payload)?.recipient??n.askedBy)} fragt`:`${s.length+1} R\xFCckfragen offen`}},W=e=>({...e,needsRunView:!0,actionViews:[{owner:u,View:R}],cardSections:[{id:"ragents.ask.questions",order:100,Section:F}],attention:[{id:"ragents.ask.pending-questions",assess:Q}]}),I={id:u},pe={...I,activate:()=>W(I)};export{pe as webPlugin};
1
+ import{a as s,b as l,c as i,d as g}from"/plugins/ragents.ask/web/chunks/chunk-WFN4374U.js";import{a as w,b as A,c as u,d as P,e as V}from"/plugins/ragents.ask/web/chunks/chunk-MBRPS477.js";import{a as x}from"/plugins/ragents.ask/web/chunks/chunk-4VXWWEG7.js";import{a as o}from"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";var f=o("@ragents/web/run-view","runViewFrom");var d=o("@ragents/web/AccessContext","useAccess");var R=e=>typeof e=="string"?e:e==null?"":JSON.stringify(e);function y({action:e,session:t,text:n}){let r=d(),[p,c]=w(),m=i(e.payload);if(!m)return null;let S=k=>{c(void 0),x(t.session.id,e.actionId,k).catch(a=>c(a instanceof Error?a.message:String(a)))};return P(A,{children:[u(V,{answer:e.status===void 0?void 0:e.status==="approved"?R(e.result):g(e.result)!==void 0?l:"Der Benutzer hat die Frage verworfen.",onAnswer:r.can("runs.write")?S:void 0,question:m,text:n}),p&&u("p",{className:"text-[0.7rem] text-destructive",role:"alert",children:p})]})}var v=e=>e.actions.filter(t=>t.owner===s&&t.status==="pending"),C=(e,t)=>e.actors.find(n=>n.id===t)?.handle??t,D=e=>{let t=f(e.runView);if(!t)return;let[n,...r]=v(t);if(n)return{active:!0,label:r.length===0?`@${C(t,i(n.payload)?.recipient??n.askedBy)} fragt`:`${r.length+1} R\xFCckfragen offen`}},W=e=>({...e,needsRunView:!0,actionViews:[{owner:s,View:y}],attention:[{id:"ragents.ask.pending-questions",assess:D}]}),b={id:s},L={...b,activate:()=>W(b)};export{L as webPlugin};
2
2
  //# sourceMappingURL=/plugins/ragents.ask/web/index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["ragents-host-value:@ragents/web/run-view#runActorFrom", "ragents-host-value:@ragents/web/run-view#runViewFrom", "ragents-host-value:@ragents/web/AccessContext#useAccess", "../../../plugins/ragents.ask/web/AskActionView.tsx", "../../../plugins/ragents.ask/web/QuestionSection.tsx", "../../../plugins/ragents.ask/web/index.tsx"],
4
- "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/run-view\", \"runActorFrom\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/run-view\", \"runViewFrom\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/AccessContext\", \"useAccess\");\n", "import { useAccess } from \"@ragents/web/AccessContext\";\nimport { useState } from \"react\";\nimport type { ActionViewContext } from \"@ragents/web/PluginRegistry\";\nimport { askPayloadOf, SUPERSEDED_ANSWER, supersedingInputOf } from \"../ask-payload\";\nimport { answerQuestion } from \"./api\";\nimport { QuestionCard } from \"./QuestionCard\";\n\nconst answerTextOf = (result: unknown): string =>\n typeof result === \"string\" ? result : result === null || result === undefined ? \"\" : JSON.stringify(result);\n\nexport function AskActionView({ action, session, text }: ActionViewContext) {\n const access = useAccess();\n const [error, setError] = useState<string>();\n const question = askPayloadOf(action.payload);\n if (!question) return null;\n\n const answer = (value: string) => {\n setError(undefined);\n answerQuestion(session.session.id, action.actionId, value)\n .catch((caught: unknown) => setError(caught instanceof Error ? caught.message : String(caught)));\n };\n\n return (\n <>\n <QuestionCard\n answer={action.status === undefined\n ? undefined\n : action.status === \"approved\" ? answerTextOf(action.result)\n : supersedingInputOf(action.result) !== undefined ? SUPERSEDED_ANSWER : \"Der Benutzer hat die Frage verworfen.\"}\n onAnswer={access.can(\"runs.write\") ? answer : undefined}\n question={question}\n text={text}\n />\n {error && <p className=\"text-[0.7rem] text-destructive\" role=\"alert\">{error}</p>}\n </>\n );\n}\n", "import { useAccess } from \"@ragents/web/AccessContext\";\nimport { useState } from \"react\";\nimport { runActorFrom, runViewFrom } from \"@ragents/web/run-view\";\nimport type { CardSectionContext } from \"@ragents/web/PluginRegistry\";\nimport { SectionLabel } from \"@ragents/web/ui\";\nimport { askPayloadOf, ASK_PLUGIN_ID } from \"../ask-payload\";\nimport { answerQuestion } from \"./api\";\nimport { QuestionCard } from \"./QuestionCard\";\n\nexport function QuestionSection({ actor, session }: CardSectionContext) {\n const access = useAccess();\n const [error, setError] = useState<string>();\n const view = runViewFrom(session.runView);\n if (!view) return null;\n const actorId = runActorFrom(actor).id;\n const pending = view.actions.filter((action) =>\n action.owner === ASK_PLUGIN_ID && (askPayloadOf(action.payload)?.recipient ?? action.askedBy) === actorId && action.status === \"pending\");\n if (pending.length === 0) return null;\n\n const answer = (actionId: string, text: string) => {\n setError(undefined);\n answerQuestion(session.session.id, actionId, text)\n .catch((caught: unknown) => setError(caught instanceof Error ? caught.message : String(caught)));\n };\n\n return (\n <section className=\"grid gap-1.5\">\n <SectionLabel>\n <span>R\u00FCckfrage</span>\n <small>{pending.length}</small>\n </SectionLabel>\n {pending.map((action) => {\n const question = askPayloadOf(action.payload);\n return question && (\n <div className=\"rounded-lg animate-ring-pulse motion-reduce:animate-none\" key={action.id}>\n {action.description && <p className=\"mb-1.5 text-[0.7rem] leading-[1.35] text-muted-foreground\">{action.description}</p>}\n <QuestionCard\n onAnswer={access.can(\"runs.write\") ? (text) => answer(action.id, text) : undefined}\n question={question}\n text={action.title}\n />\n </div>\n );\n })}\n {error && <p className=\"text-[0.7rem] text-destructive\" role=\"alert\">{error}</p>}\n </section>\n );\n}\n", "import {\n type SessionContext,\n type WebPlugin,\n type WebPluginDescriptor,\n} from \"@ragents/web/PluginRegistry\";\nimport { runViewFrom, type RunView } from \"@ragents/web/run-view\";\nimport { askPayloadOf, ASK_PLUGIN_ID } from \"../ask-payload\";\nimport { AskActionView } from \"./AskActionView\";\nimport { QuestionSection } from \"./QuestionSection\";\n\nconst pendingQuestions = (view: RunView) =>\n view.actions.filter((action) => action.owner === ASK_PLUGIN_ID && action.status === \"pending\");\n\nconst askerHandle = (view: RunView, askedBy: string): string =>\n view.actors.find((actor) => actor.id === askedBy)?.handle ?? askedBy;\n\nconst attentionFor = (session: SessionContext) => {\n const view = runViewFrom(session.runView);\n if (!view) return undefined;\n const [first, ...rest] = pendingQuestions(view);\n if (!first) return undefined;\n return {\n active: true as const,\n label: rest.length === 0\n ? `@${askerHandle(view, askPayloadOf(first.payload)?.recipient ?? first.askedBy)} fragt`\n : `${rest.length + 1} R\u00FCckfragen offen`,\n };\n};\n\nconst configuredPlugin = (descriptor: WebPluginDescriptor): WebPlugin => ({\n ...descriptor,\n needsRunView: true,\n actionViews: [{\n owner: ASK_PLUGIN_ID,\n View: AskActionView,\n }],\n cardSections: [{\n id: \"ragents.ask.questions\",\n order: 100,\n Section: QuestionSection,\n }],\n attention: [{\n id: \"ragents.ask.pending-questions\",\n assess: attentionFor,\n }],\n});\n\nconst descriptor: WebPluginDescriptor = { id: ASK_PLUGIN_ID };\n\nexport const webPlugin: WebPlugin = {\n ...descriptor,\n activate: () => configuredPlugin(descriptor),\n};\n"],
5
- "mappings": "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",
6
- "names": ["run_view_runActorFrom_default", "read", "run_view_runViewFrom_default", "read", "AccessContext_useAccess_default", "read", "answerTextOf", "result", "AskActionView", "action", "session", "text", "access", "AccessContext_useAccess_default", "error", "setError", "react_useState_default", "question", "askPayloadOf", "answer", "value", "answerQuestion", "caught", "jsx_runtime_jsxs_default", "jsx_runtime_Fragment_default", "jsx_runtime_jsx_default", "QuestionCard", "supersedingInputOf", "SUPERSEDED_ANSWER", "QuestionSection", "actor", "session", "access", "AccessContext_useAccess_default", "error", "setError", "react_useState_default", "view", "run_view_runViewFrom_default", "actorId", "run_view_runActorFrom_default", "pending", "action", "ASK_PLUGIN_ID", "askPayloadOf", "answer", "actionId", "text", "answerQuestion", "caught", "jsx_runtime_jsxs_default", "ui_SectionLabel_default", "jsx_runtime_jsx_default", "question", "QuestionCard", "pendingQuestions", "view", "action", "ASK_PLUGIN_ID", "askerHandle", "askedBy", "actor", "attentionFor", "session", "run_view_runViewFrom_default", "first", "rest", "askPayloadOf", "configuredPlugin", "descriptor", "AskActionView", "QuestionSection", "webPlugin"]
3
+ "sources": ["ragents-host-value:@ragents/web/run-view#runViewFrom", "ragents-host-value:@ragents/web/AccessContext#useAccess", "../../../plugins/ragents.ask/web/AskActionView.tsx", "../../../plugins/ragents.ask/web/index.tsx"],
4
+ "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/run-view\", \"runViewFrom\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/AccessContext\", \"useAccess\");\n", "import { useAccess } from \"@ragents/web/AccessContext\";\nimport { useState } from \"react\";\nimport type { ActionViewContext } from \"@ragents/web/PluginRegistry\";\nimport { askPayloadOf, SUPERSEDED_ANSWER, supersedingInputOf } from \"../ask-payload\";\nimport { answerQuestion } from \"./api\";\nimport { QuestionCard } from \"./QuestionCard\";\n\nconst answerTextOf = (result: unknown): string =>\n typeof result === \"string\" ? result : result === null || result === undefined ? \"\" : JSON.stringify(result);\n\nexport function AskActionView({ action, session, text }: ActionViewContext) {\n const access = useAccess();\n const [error, setError] = useState<string>();\n const question = askPayloadOf(action.payload);\n if (!question) return null;\n\n const answer = (value: string) => {\n setError(undefined);\n answerQuestion(session.session.id, action.actionId, value)\n .catch((caught: unknown) => setError(caught instanceof Error ? caught.message : String(caught)));\n };\n\n return (\n <>\n <QuestionCard\n answer={action.status === undefined\n ? undefined\n : action.status === \"approved\" ? answerTextOf(action.result)\n : supersedingInputOf(action.result) !== undefined ? SUPERSEDED_ANSWER : \"Der Benutzer hat die Frage verworfen.\"}\n onAnswer={access.can(\"runs.write\") ? answer : undefined}\n question={question}\n text={text}\n />\n {error && <p className=\"text-[0.7rem] text-destructive\" role=\"alert\">{error}</p>}\n </>\n );\n}\n", "import {\n type SessionContext,\n type WebPlugin,\n type WebPluginDescriptor,\n} from \"@ragents/web/PluginRegistry\";\nimport { runViewFrom, type RunView } from \"@ragents/web/run-view\";\nimport { askPayloadOf, ASK_PLUGIN_ID } from \"../ask-payload\";\nimport { AskActionView } from \"./AskActionView\";\n\nconst pendingQuestions = (view: RunView) =>\n view.actions.filter((action) => action.owner === ASK_PLUGIN_ID && action.status === \"pending\");\n\nconst askerHandle = (view: RunView, askedBy: string): string =>\n view.actors.find((actor) => actor.id === askedBy)?.handle ?? askedBy;\n\nconst attentionFor = (session: SessionContext) => {\n const view = runViewFrom(session.runView);\n if (!view) return undefined;\n const [first, ...rest] = pendingQuestions(view);\n if (!first) return undefined;\n return {\n active: true as const,\n label: rest.length === 0\n ? `@${askerHandle(view, askPayloadOf(first.payload)?.recipient ?? first.askedBy)} fragt`\n : `${rest.length + 1} R\u00FCckfragen offen`,\n };\n};\n\nconst configuredPlugin = (descriptor: WebPluginDescriptor): WebPlugin => ({\n ...descriptor,\n needsRunView: true,\n actionViews: [{\n owner: ASK_PLUGIN_ID,\n View: AskActionView,\n }],\n attention: [{\n id: \"ragents.ask.pending-questions\",\n assess: attentionFor,\n }],\n});\n\nconst descriptor: WebPluginDescriptor = { id: ASK_PLUGIN_ID };\n\nexport const webPlugin: WebPlugin = {\n ...descriptor,\n activate: () => configuredPlugin(descriptor),\n};\n"],
5
+ "mappings": "yUACA,IAAOA,EAAQC,EAAK,wBAAyB,aAAa,ECA1D,IAAOC,EAAQC,EAAK,6BAA8B,WAAW,ECM7D,IAAMC,EAAgBC,GACpB,OAAOA,GAAW,SAAWA,EAASA,GAAW,KAA+B,GAAK,KAAK,UAAUA,CAAM,EAErG,SAASC,EAAc,CAAE,OAAAC,EAAQ,QAAAC,EAAS,KAAAC,CAAK,EAAsB,CAC1E,IAAMC,EAASC,EAAU,EACnB,CAACC,EAAOC,CAAQ,EAAIC,EAAiB,EACrCC,EAAWC,EAAaT,EAAO,OAAO,EAC5C,GAAI,CAACQ,EAAU,OAAO,KAEtB,IAAME,EAAUC,GAAkB,CAChCL,EAAS,MAAS,EAClBM,EAAeX,EAAQ,QAAQ,GAAID,EAAO,SAAUW,CAAK,EACtD,MAAOE,GAAoBP,EAASO,aAAkB,MAAQA,EAAO,QAAU,OAAOA,CAAM,CAAC,CAAC,CACnG,EAEA,OACEC,EAAAC,EAAA,CACE,UAAAC,EAACC,EAAA,CACC,OAAQjB,EAAO,SAAW,OACtB,OACAA,EAAO,SAAW,WAAaH,EAAaG,EAAO,MAAM,EACzDkB,EAAmBlB,EAAO,MAAM,IAAM,OAAYmB,EAAoB,wCAC1E,SAAUhB,EAAO,IAAI,YAAY,EAAIO,EAAS,OAC9C,SAAUF,EACV,KAAMN,EACR,EACCG,GAASW,EAAC,KAAE,UAAU,iCAAiC,KAAK,QAAS,SAAAX,EAAM,GAC9E,CAEJ,CC3BA,IAAMe,EAAoBC,GACxBA,EAAK,QAAQ,OAAQC,GAAWA,EAAO,QAAUC,GAAiBD,EAAO,SAAW,SAAS,EAEzFE,EAAc,CAACH,EAAeI,IAClCJ,EAAK,OAAO,KAAMK,GAAUA,EAAM,KAAOD,CAAO,GAAG,QAAUA,EAEzDE,EAAgBC,GAA4B,CAChD,IAAMP,EAAOQ,EAAYD,EAAQ,OAAO,EACxC,GAAI,CAACP,EAAM,OACX,GAAM,CAACS,EAAO,GAAGC,CAAI,EAAIX,EAAiBC,CAAI,EAC9C,GAAKS,EACL,MAAO,CACL,OAAQ,GACR,MAAOC,EAAK,SAAW,EACnB,IAAIP,EAAYH,EAAMW,EAAaF,EAAM,OAAO,GAAG,WAAaA,EAAM,OAAO,CAAC,SAC9E,GAAGC,EAAK,OAAS,CAAC,sBACxB,CACF,EAEME,EAAoBC,IAAgD,CACxE,GAAGA,EACH,aAAc,GACd,YAAa,CAAC,CACZ,MAAOX,EACP,KAAMY,CACR,CAAC,EACD,UAAW,CAAC,CACV,GAAI,gCACJ,OAAQR,CACV,CAAC,CACH,GAEMO,EAAkC,CAAE,GAAIX,CAAc,EAE/Ca,EAAuB,CAClC,GAAGF,EACH,SAAU,IAAMD,EAAiBC,CAAU,CAC7C",
6
+ "names": ["run_view_runViewFrom_default", "read", "AccessContext_useAccess_default", "read", "answerTextOf", "result", "AskActionView", "action", "session", "text", "access", "AccessContext_useAccess_default", "error", "setError", "react_useState_default", "question", "askPayloadOf", "answer", "value", "answerQuestion", "caught", "jsx_runtime_jsxs_default", "jsx_runtime_Fragment_default", "jsx_runtime_jsx_default", "QuestionCard", "supersedingInputOf", "SUPERSEDED_ANSWER", "pendingQuestions", "view", "action", "ASK_PLUGIN_ID", "askerHandle", "askedBy", "actor", "attentionFor", "session", "run_view_runViewFrom_default", "first", "rest", "askPayloadOf", "configuredPlugin", "descriptor", "AskActionView", "webPlugin"]
7
7
  }
@@ -32,7 +32,7 @@
32
32
  "web": {}
33
33
  },
34
34
  "stand": "7da41ec4995b51a143b3e7d7c32f231db7b4ac353fe01df9bd0f02fb7b2c2eaf",
35
- "sourceStand": "2b63191b5a2bff6a8f4f0dece586671a44df7be033a54975cb4617dca4e22325",
35
+ "sourceStand": "956dfae6e6397e718d0a726b60efea5b798a07551af23190d3f70963e215d454",
36
36
  "server": "server/index.js",
37
37
  "executor": "executor/index.mjs",
38
38
  "exports": {
@@ -101,7 +101,7 @@
101
101
  }
102
102
  },
103
103
  "stand": "54b40df2365ff3facc92feab74c674d0dc8a14e091227de1df650cb8b28cdd46",
104
- "sourceStand": "773bf56a39fe1595ce86d07580cfc7ca6c0e45c36cdb33cbd2cb30d581e06c50",
104
+ "sourceStand": "0ca7e55ce809628cbfd53431f690df48d4b6207f59b2ac53d5e269532259fb68",
105
105
  "server": "server/index.js",
106
106
  "web": {
107
107
  "entry": "web/index.js",
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "stand": "4c213b3b9447a430f9afc54ea8fb3ec22a9073b9d7422332c982c5f5cb5259b9",
32
- "sourceStand": "5b6eff8966a5e1a237153907746ebf649de7e7179091729710fd53d722ac719a",
32
+ "sourceStand": "d40d7a5d009b8d477f3118b677b049107a8df49b26ad27c54ef059067164fb5a",
33
33
  "server": "server/index.js",
34
34
  "web": {
35
35
  "entry": "web/index.js",
@@ -41,7 +41,7 @@
41
41
  }
42
42
  },
43
43
  "stand": "552bc2063377364860e8366cb35071b33d3de3cc618bf813772cfa8cda157d20",
44
- "sourceStand": "8452a26733a8aeae5239d2b8c99f519d4f48a33fa0406b0d03282b55ae2128b7",
44
+ "sourceStand": "6e5ff77a56d86c61d2a1bbeb52db7cf6d35c70a8fb4db58cb4e212f345c75dc9",
45
45
  "server": "server/index.js",
46
46
  "web": {
47
47
  "entry": "web/index.js",
@@ -18,7 +18,7 @@
18
18
  }
19
19
  },
20
20
  "stand": "dd53ba53f6e472fce212ed551f10909efd9350762ad6a319a0a1e1fdf1366633",
21
- "sourceStand": "2be508860c9ec7d3ba61c558a25ab753c854ebc4bb95c27b7c35539d5a844bbf",
21
+ "sourceStand": "28ea0cecdb9caa4fb173831798ae34e6a8d08b73b1f4b8b0b909da0225314d84",
22
22
  "server": "server/index.js",
23
23
  "web": {
24
24
  "entry": "web/index.js",
@@ -22,7 +22,7 @@
22
22
  "web": {}
23
23
  },
24
24
  "stand": "d9b2bb73d0a0ce28e3dc6ba8ebb3e4468c622acbfd36252cd0107e78001aa155",
25
- "sourceStand": "c369f726eed75198cb6d9d4f97377969818766043a4ffa01fff99a3988919947",
25
+ "sourceStand": "b41d54a650ea23a1fbf999adabd997fc1f9091c7b7643a826f0a652891fb7364",
26
26
  "server": "server/index.js",
27
27
  "exports": {
28
28
  "server": {},
@@ -171,8 +171,8 @@
171
171
  ]
172
172
  }
173
173
  },
174
- "stand": "04d3cd3b2394dc698c36386e4e24a5f551d75207db44ceb6295e6b0aa688656d",
175
- "sourceStand": "7f9a2b6ec051509e1369004227985fbc3fc619376368badb393ba19ae9b73484",
174
+ "stand": "48bc275b47b4228a8f135c017d0c139819f6abe10dc37cfe077de6874314642b",
175
+ "sourceStand": "310b306e3eb56d1c97a357a44831b5907c722df27448c29f017f32eb9804ab6e",
176
176
  "server": "server/index.js",
177
177
  "web": {
178
178
  "entry": "web/index.js",