@mulmochat-plugin/quiz 0.4.0 → 0.4.3

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.
@@ -6,5 +6,5 @@
6
6
  */
7
7
  import type { ToolPluginCore, ToolContext, ToolResult } from "gui-chat-protocol";
8
8
  import type { QuizData, QuizArgs } from "./types";
9
- export declare const executeQuiz: (_context: ToolContext, args: QuizArgs) => Promise<ToolResult<never, QuizData>>;
10
- export declare const pluginCore: ToolPluginCore<never, QuizData, QuizArgs>;
9
+ export declare const executeQuiz: (_context: ToolContext, args: QuizArgs) => Promise<ToolResult<QuizData, QuizData>>;
10
+ export declare const pluginCore: ToolPluginCore<QuizData, QuizData, QuizArgs>;
@@ -10,7 +10,10 @@ export interface QuizQuestion {
10
10
  choices: string[];
11
11
  correctAnswer?: number;
12
12
  }
13
- /** Quiz data stored in result.jsonData */
13
+ /** Quiz data set on both `result.data` (the view binds it; the
14
+ * protocol's render-eligibility signal) and `result.jsonData` (the
15
+ * LLM reads it back when the user answers). Same payload, two
16
+ * audiences. */
14
17
  export interface QuizData {
15
18
  title?: string;
16
19
  questions: QuizQuestion[];
package/dist/core.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./plugin-BDTug9SB.cjs`);exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.executeQuiz=e.t,exports.pluginCore=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./plugin-Ds8BW53G.cjs`);exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.executeQuiz=e.t,exports.pluginCore=e.n;
package/dist/core.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./plugin-Dc-SF02-.js";
1
+ import { a as e, i as t, n, r, t as i } from "./plugin-B1Q2QkbY.js";
2
2
  export { r as SAMPLES, t as TOOL_DEFINITION, e as TOOL_NAME, i as executeQuiz, n as pluginCore };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./plugin-BDTug9SB.cjs`);require(`./core.cjs`),exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.default=e.n,exports.pluginCore=e.n,exports.executeQuiz=e.t;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./plugin-Ds8BW53G.cjs`);require(`./core.cjs`),exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.default=e.n,exports.pluginCore=e.n,exports.executeQuiz=e.t;
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as e, i as t, n, r, t as i } from "./plugin-Dc-SF02-.js";
1
+ import { a as e, i as t, n, r, t as i } from "./plugin-B1Q2QkbY.js";
2
2
  import "./core.js";
3
3
  export { r as SAMPLES, t as TOOL_DEFINITION, e as TOOL_NAME, n as default, n as pluginCore, i as executeQuiz };
@@ -127,6 +127,7 @@ var e = "putQuestions", t = {
127
127
  };
128
128
  return {
129
129
  message: `Quiz presented with ${n.length} question${n.length > 1 ? "s" : ""}`,
130
+ data: r,
130
131
  jsonData: r,
131
132
  instructions: "The quiz has been presented to the user. Wait for the user to submit their answers. They will tell you their answers in text format."
132
133
  };
@@ -1 +1 @@
1
- var e=`putQuestions`,t={type:`function`,name:e,description:`Present a set of multiple choice questions to test the user's knowledge or abilities. Each question should have 2-6 answer choices.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Optional title for the quiz (e.g., 'JavaScript Basics Quiz')`},questions:{type:`array`,description:`Array of multiple choice questions`,items:{type:`object`,properties:{question:{type:`string`,description:`The question text`},choices:{type:`array`,description:`Array of answer choices (2-6 choices)`,items:{type:`string`},minItems:2,maxItems:6},correctAnswer:{type:`number`,description:`Optional: The index of the correct answer (0-based). Include this if you want to track correct answers.`}},required:[`question`,`choices`]},minItems:1}},required:[`questions`]}},n=[{name:`JavaScript Quiz`,args:{title:`JavaScript Basics`,questions:[{question:`What does 'const' do in JavaScript?`,choices:[`Declares a constant variable`,`Declares a mutable variable`,`Creates a function`,`Imports a module`],correctAnswer:0},{question:`Which method adds an element to the end of an array?`,choices:[`pop()`,`shift()`,`push()`,`unshift()`],correctAnswer:2},{question:`What is the output of: typeof null?`,choices:[`"null"`,`"undefined"`,`"object"`,`"boolean"`],correctAnswer:2}]}},{name:`World Capitals`,args:{title:`World Capitals Quiz`,questions:[{question:`What is the capital of Japan?`,choices:[`Osaka`,`Kyoto`,`Tokyo`,`Hiroshima`],correctAnswer:2},{question:`What is the capital of Australia?`,choices:[`Sydney`,`Melbourne`,`Canberra`,`Brisbane`],correctAnswer:2}]}},{name:`Simple Yes/No`,args:{questions:[{question:`Is the Earth round?`,choices:[`Yes`,`No`],correctAnswer:0}]}}],r=async(e,t)=>{try{let{title:e,questions:n}=t;if(!n||!Array.isArray(n)||n.length===0)throw Error(`At least one question is required`);for(let e=0;e<n.length;e++){let t=n[e];if(!t.question||typeof t.question!=`string`)throw Error(`Question ${e+1} must have a question text`);if(!Array.isArray(t.choices)||t.choices.length<2)throw Error(`Question ${e+1} must have at least 2 choices`);if(t.choices.length>6)throw Error(`Question ${e+1} cannot have more than 6 choices`)}let r={title:e,questions:n};return{message:`Quiz presented with ${n.length} question${n.length>1?`s`:``}`,jsonData:r,instructions:`The quiz has been presented to the user. Wait for the user to submit their answers. They will tell you their answers in text format.`}}catch(e){return console.error(`Quiz creation error`,e),{message:`Quiz error: ${e instanceof Error?e.message:`Unknown error`}`,instructions:`Acknowledge that there was an error creating the quiz and suggest trying again.`}}},i={toolDefinition:t,execute:r,generatingMessage:`Preparing quiz...`,isEnabled:()=>!0,samples:n};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
1
+ var e=`putQuestions`,t={type:`function`,name:e,description:`Present a set of multiple choice questions to test the user's knowledge or abilities. Each question should have 2-6 answer choices.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Optional title for the quiz (e.g., 'JavaScript Basics Quiz')`},questions:{type:`array`,description:`Array of multiple choice questions`,items:{type:`object`,properties:{question:{type:`string`,description:`The question text`},choices:{type:`array`,description:`Array of answer choices (2-6 choices)`,items:{type:`string`},minItems:2,maxItems:6},correctAnswer:{type:`number`,description:`Optional: The index of the correct answer (0-based). Include this if you want to track correct answers.`}},required:[`question`,`choices`]},minItems:1}},required:[`questions`]}},n=[{name:`JavaScript Quiz`,args:{title:`JavaScript Basics`,questions:[{question:`What does 'const' do in JavaScript?`,choices:[`Declares a constant variable`,`Declares a mutable variable`,`Creates a function`,`Imports a module`],correctAnswer:0},{question:`Which method adds an element to the end of an array?`,choices:[`pop()`,`shift()`,`push()`,`unshift()`],correctAnswer:2},{question:`What is the output of: typeof null?`,choices:[`"null"`,`"undefined"`,`"object"`,`"boolean"`],correctAnswer:2}]}},{name:`World Capitals`,args:{title:`World Capitals Quiz`,questions:[{question:`What is the capital of Japan?`,choices:[`Osaka`,`Kyoto`,`Tokyo`,`Hiroshima`],correctAnswer:2},{question:`What is the capital of Australia?`,choices:[`Sydney`,`Melbourne`,`Canberra`,`Brisbane`],correctAnswer:2}]}},{name:`Simple Yes/No`,args:{questions:[{question:`Is the Earth round?`,choices:[`Yes`,`No`],correctAnswer:0}]}}],r=async(e,t)=>{try{let{title:e,questions:n}=t;if(!n||!Array.isArray(n)||n.length===0)throw Error(`At least one question is required`);for(let e=0;e<n.length;e++){let t=n[e];if(!t.question||typeof t.question!=`string`)throw Error(`Question ${e+1} must have a question text`);if(!Array.isArray(t.choices)||t.choices.length<2)throw Error(`Question ${e+1} must have at least 2 choices`);if(t.choices.length>6)throw Error(`Question ${e+1} cannot have more than 6 choices`)}let r={title:e,questions:n};return{message:`Quiz presented with ${n.length} question${n.length>1?`s`:``}`,data:r,jsonData:r,instructions:`The quiz has been presented to the user. Wait for the user to submit their answers. They will tell you their answers in text format.`}}catch(e){return console.error(`Quiz creation error`,e),{message:`Quiz error: ${e instanceof Error?e.message:`Unknown error`}`,instructions:`Acknowledge that there was an error creating the quiz and suggest trying again.`}}},i={toolDefinition:t,execute:r,generatingMessage:`Preparing quiz...`,isEnabled:()=>!0,samples:n};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
@@ -3,6 +3,6 @@
3
3
  */
4
4
  import type { PreviewComponentProps } from "gui-chat-protocol";
5
5
  import type { QuizData } from "../core/types";
6
- type PreviewProps = PreviewComponentProps<never, QuizData>;
6
+ type PreviewProps = PreviewComponentProps<QuizData, QuizData>;
7
7
  export declare function Preview({ result }: PreviewProps): import("react/jsx-runtime").JSX.Element | null;
8
8
  export default Preview;
@@ -3,6 +3,6 @@
3
3
  */
4
4
  import type { ViewComponentProps } from "gui-chat-protocol";
5
5
  import type { QuizData } from "../core/types";
6
- type ViewProps = ViewComponentProps<never, QuizData>;
6
+ type ViewProps = ViewComponentProps<QuizData, QuizData>;
7
7
  export declare function View({ selectedResult, sendTextMessage, onUpdateResult }: ViewProps): import("react/jsx-runtime").JSX.Element | null;
8
8
  export default View;
@@ -12,13 +12,13 @@ import { Preview } from "./Preview";
12
12
  /**
13
13
  * Quiz plugin instance with React components
14
14
  */
15
- export declare const plugin: ToolPluginReact<never, QuizData, QuizArgs>;
15
+ export declare const plugin: ToolPluginReact<QuizData, QuizData, QuizArgs>;
16
16
  export type { QuizQuestion, QuizData, QuizArgs } from "../core/types";
17
17
  export { pluginCore, executeQuiz } from "../core/plugin";
18
18
  export { TOOL_NAME, TOOL_DEFINITION } from "../core/definition";
19
19
  export { SAMPLES } from "../core/samples";
20
20
  export { View, Preview };
21
21
  declare const _default: {
22
- plugin: ToolPluginReact<never, QuizData, QuizArgs, import("gui-chat-protocol/react").InputHandler, Record<string, unknown>>;
22
+ plugin: ToolPluginReact<QuizData, QuizData, QuizArgs, import("gui-chat-protocol/react").InputHandler, Record<string, unknown>>;
23
23
  };
24
24
  export default _default;
package/dist/react.cjs CHANGED
@@ -1,7 +1,7 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);const t=require(`./plugin-BDTug9SB.cjs`);;/* empty css */let n=require(`react`);var r=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),i=e((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);const t=require(`./plugin-Ds8BW53G.cjs`);;/* empty css */let n=require(`react`);var r=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),i=e((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),a=e(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=r():t.exports=i()}))();function o({selectedResult:e,sendTextMessage:t,onUpdateResult:r}){let[i,o]=(0,n.useState)(null),[s,c]=(0,n.useState)([]);(0,n.useEffect)(()=>{if(e?.toolName===`putQuestions`&&e.jsonData){let t=e.jsonData;o(t),e.viewState?.userAnswers?c(e.viewState.userAnswers):c(Array(t.questions.length).fill(null))}},[e]);let l=(0,n.useCallback)(e=>{c(e),r&&r({viewState:{userAnswers:e}})},[r]),u=(e,t)=>{let n=[...s];n[e]=t,l(n)},d=s.filter(e=>e!==null).length,f=i&&d===i.questions.length,p=(e,t)=>s[e]===t?`border-blue-500 bg-blue-500/20`:`border-slate-600 hover:border-slate-500 hover:bg-slate-500/20`;return i?(0,a.jsx)(`div`,{className:`w-full min-h-96 overflow-y-auto p-8 bg-slate-900 rounded-lg`,children:(0,a.jsxs)(`div`,{className:`max-w-3xl mx-auto`,children:[i.title&&(0,a.jsx)(`h2`,{className:`text-gray-100 text-3xl font-bold mb-8 text-center`,children:i.title}),(0,a.jsx)(`div`,{className:`flex flex-col gap-6`,children:i.questions.map((e,t)=>(0,a.jsxs)(`div`,{className:`bg-slate-800 rounded-lg p-6 border-2 border-slate-700`,children:[(0,a.jsxs)(`div`,{className:`text-white text-lg font-semibold mb-4`,children:[(0,a.jsxs)(`span`,{className:`text-blue-400 mr-2`,children:[t+1,`.`]}),e.question]}),(0,a.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.choices.map((e,n)=>(0,a.jsxs)(`label`,{className:`flex items-start p-4 rounded-lg cursor-pointer transition-all duration-200 border-2 ${p(t,n)}`,children:[(0,a.jsx)(`input`,{type:`radio`,name:`question-${t}`,value:n,checked:s[t]===n,onChange:()=>u(t,n),className:`mt-1 mr-3 size-4 shrink-0`}),(0,a.jsxs)(`span`,{className:`text-white flex-1`,children:[(0,a.jsxs)(`span`,{className:`font-semibold mr-2`,children:[String.fromCharCode(65+n),`.`]}),e]})]},n))})]},t))}),(0,a.jsx)(`div`,{className:`mt-8 flex justify-center`,children:(0,a.jsx)(`button`,{onClick:()=>{!i||!f||t(`Here are my answers:\n${s.map((e,t)=>e===null?null:`Q${t+1}: ${String.fromCharCode(65+e)} - ${i.questions[t].choices[e]}`).filter(e=>e!==null).join(`
7
- `)}`)},disabled:!f,className:`py-3 px-8 rounded-lg text-white font-semibold text-lg transition-colors border-none cursor-pointer ${f?`bg-blue-600 hover:bg-blue-700`:`bg-gray-600 cursor-not-allowed opacity-50`}`,children:`Submit Answers`})}),(0,a.jsxs)(`div`,{className:`mt-4 text-center text-gray-400 text-sm`,children:[d,` / `,i.questions.length,` questions answered`]})]})}):null}function s({result:e}){let t=e.jsonData;return t?(0,a.jsx)(`div`,{className:`p-3 bg-blue-50 rounded-md`,children:(0,a.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,a.jsx)(`div`,{className:`text-sm font-semibold text-gray-800 text-center`,children:t.title||`Quiz`}),(0,a.jsx)(`div`,{className:`text-center`,children:(0,a.jsxs)(`span`,{className:`inline-block bg-blue-600 text-white text-xs font-bold py-1 px-3 rounded-full`,children:[t.questions.length,` `,t.questions.length===1?`Question`:`Questions`]})}),(0,a.jsx)(`div`,{className:`text-xs text-gray-600 overflow-hidden line-clamp-2`,children:t.questions[0]?.question}),(0,a.jsxs)(`div`,{className:`flex justify-center gap-1`,children:[Array.from({length:Math.min(t.questions[0]?.choices.length||0,4)}).map((e,t)=>(0,a.jsx)(`div`,{className:`size-2 bg-gray-400 rounded-full`},t)),(t.questions[0]?.choices.length||0)>4&&(0,a.jsxs)(`span`,{className:`text-xs text-gray-500`,children:[`+`,t.questions[0].choices.length-4]})]})]})}):null}var c={...t.n,ViewComponent:o,PreviewComponent:s},l={plugin:c};exports.Preview=s,exports.SAMPLES=t.r,exports.TOOL_DEFINITION=t.i,exports.TOOL_NAME=t.a,exports.View=o,exports.default=l,exports.executeQuiz=t.t,exports.plugin=c,exports.pluginCore=t.n;
6
+ <%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),a=e(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=r():t.exports=i()}))();function o({selectedResult:e,sendTextMessage:t,onUpdateResult:r}){let[i,o]=(0,n.useState)(null),[s,c]=(0,n.useState)([]);(0,n.useEffect)(()=>{let t=e?.data??e?.jsonData;if(e?.toolName===`putQuestions`&&t){let n=t;o(n),e.viewState?.userAnswers?c(e.viewState.userAnswers):c(Array(n.questions.length).fill(null))}},[e]);let l=(0,n.useCallback)(e=>{c(e),r&&r({viewState:{userAnswers:e}})},[r]),u=(e,t)=>{let n=[...s];n[e]=t,l(n)},d=s.filter(e=>e!==null).length,f=i&&d===i.questions.length,p=(e,t)=>s[e]===t?`border-blue-500 bg-blue-500/20`:`border-slate-600 hover:border-slate-500 hover:bg-slate-500/20`;return i?(0,a.jsx)(`div`,{className:`w-full min-h-96 overflow-y-auto p-8 bg-slate-900 rounded-lg`,children:(0,a.jsxs)(`div`,{className:`max-w-3xl mx-auto`,children:[i.title&&(0,a.jsx)(`h2`,{className:`text-gray-100 text-3xl font-bold mb-8 text-center`,children:i.title}),(0,a.jsx)(`div`,{className:`flex flex-col gap-6`,children:i.questions.map((e,t)=>(0,a.jsxs)(`div`,{className:`bg-slate-800 rounded-lg p-6 border-2 border-slate-700`,children:[(0,a.jsxs)(`div`,{className:`text-white text-lg font-semibold mb-4`,children:[(0,a.jsxs)(`span`,{className:`text-blue-400 mr-2`,children:[t+1,`.`]}),e.question]}),(0,a.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.choices.map((e,n)=>(0,a.jsxs)(`label`,{className:`flex items-start p-4 rounded-lg cursor-pointer transition-all duration-200 border-2 ${p(t,n)}`,children:[(0,a.jsx)(`input`,{type:`radio`,name:`question-${t}`,value:n,checked:s[t]===n,onChange:()=>u(t,n),className:`mt-1 mr-3 size-4 shrink-0`}),(0,a.jsxs)(`span`,{className:`text-white flex-1`,children:[(0,a.jsxs)(`span`,{className:`font-semibold mr-2`,children:[String.fromCharCode(65+n),`.`]}),e]})]},n))})]},t))}),(0,a.jsx)(`div`,{className:`mt-8 flex justify-center`,children:(0,a.jsx)(`button`,{onClick:()=>{!i||!f||t(`Here are my answers:\n${s.map((e,t)=>e===null?null:`Q${t+1}: ${String.fromCharCode(65+e)} - ${i.questions[t].choices[e]}`).filter(e=>e!==null).join(`
7
+ `)}`)},disabled:!f,className:`py-3 px-8 rounded-lg text-white font-semibold text-lg transition-colors border-none cursor-pointer ${f?`bg-blue-600 hover:bg-blue-700`:`bg-gray-600 cursor-not-allowed opacity-50`}`,children:`Submit Answers`})}),(0,a.jsxs)(`div`,{className:`mt-4 text-center text-gray-400 text-sm`,children:[d,` / `,i.questions.length,` questions answered`]})]})}):null}function s({result:e}){let t=e.data??e.jsonData;return t?(0,a.jsx)(`div`,{className:`p-3 bg-blue-50 rounded-md`,children:(0,a.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,a.jsx)(`div`,{className:`text-sm font-semibold text-gray-800 text-center`,children:t.title||`Quiz`}),(0,a.jsx)(`div`,{className:`text-center`,children:(0,a.jsxs)(`span`,{className:`inline-block bg-blue-600 text-white text-xs font-bold py-1 px-3 rounded-full`,children:[t.questions.length,` `,t.questions.length===1?`Question`:`Questions`]})}),(0,a.jsx)(`div`,{className:`text-xs text-gray-600 overflow-hidden line-clamp-2`,children:t.questions[0]?.question}),(0,a.jsxs)(`div`,{className:`flex justify-center gap-1`,children:[Array.from({length:Math.min(t.questions[0]?.choices.length||0,4)}).map((e,t)=>(0,a.jsx)(`div`,{className:`size-2 bg-gray-400 rounded-full`},t)),(t.questions[0]?.choices.length||0)>4&&(0,a.jsxs)(`span`,{className:`text-xs text-gray-500`,children:[`+`,t.questions[0].choices.length-4]})]})]})}):null}var c={...t.n,ViewComponent:o,PreviewComponent:s},l={plugin:c};exports.Preview=s,exports.SAMPLES=t.r,exports.TOOL_DEFINITION=t.i,exports.TOOL_NAME=t.a,exports.View=o,exports.default=l,exports.executeQuiz=t.t,exports.plugin=c,exports.pluginCore=t.n;
package/dist/react.js CHANGED
@@ -1,8 +1,8 @@
1
- import { a as e, i as t, n, r, t as i } from "./plugin-Dc-SF02-.js";
1
+ import { a as e, i as t, n, r, t as i } from "./plugin-B1Q2QkbY.js";
2
2
  /* empty css */
3
3
  import { useCallback as a, useEffect as o, useState as s } from "react";
4
4
  //#region \0rolldown/runtime.js
5
- var c = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), l = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
5
+ var c = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), l = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
6
6
  if (typeof require < "u") return require.apply(this, arguments);
7
7
  throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
8
8
  }), u = /* @__PURE__ */ c(((e) => {
@@ -184,9 +184,10 @@ var c = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), l
184
184
  function p({ selectedResult: e, sendTextMessage: t, onUpdateResult: n }) {
185
185
  let [r, i] = s(null), [c, l] = s([]);
186
186
  o(() => {
187
- if (e?.toolName === "putQuestions" && e.jsonData) {
188
- let t = e.jsonData;
189
- i(t), e.viewState?.userAnswers ? l(e.viewState.userAnswers) : l(Array(t.questions.length).fill(null));
187
+ let t = e?.data ?? e?.jsonData;
188
+ if (e?.toolName === "putQuestions" && t) {
189
+ let n = t;
190
+ i(n), e.viewState?.userAnswers ? l(e.viewState.userAnswers) : l(Array(n.questions.length).fill(null));
190
191
  }
191
192
  }, [e]);
192
193
  let u = a((e) => {
@@ -263,7 +264,7 @@ function p({ selectedResult: e, sendTextMessage: t, onUpdateResult: n }) {
263
264
  //#endregion
264
265
  //#region src/react/Preview.tsx
265
266
  function m({ result: e }) {
266
- let t = e.jsonData;
267
+ let t = e.data ?? e.jsonData;
267
268
  return t ? /* @__PURE__ */ (0, f.jsx)("div", {
268
269
  className: "p-3 bg-blue-50 rounded-md",
269
270
  children: /* @__PURE__ */ (0, f.jsxs)("div", {
package/dist/style.css CHANGED
@@ -1,3 +1,3 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
2
2
  @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-50:oklch(97% .014 254.604);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.static{position:static}.end{inset-inline-end:var(--spacing)}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.inline{display:inline}.inline-block{display:inline-block}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-full{width:100%;height:100%}.h-32{height:calc(var(--spacing) * 32)}.h-full{height:100%}.min-h-96{min-height:calc(var(--spacing) * 96)}.w-48{width:calc(var(--spacing) * 48)}.w-\[137px\]{width:137px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[200px\]{max-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-6{gap:calc(var(--spacing) * 6)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-none{--tw-border-style:none;border-style:none}.border-\[\#3d3d5c\]{border-color:#3d3d5c}.border-blue-500{border-color:var(--color-blue-500)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-slate-600{border-color:var(--color-slate-600)}.border-slate-700{border-color:var(--color-slate-700)}.bg-\[\#1a1a2e\]{background-color:#1a1a2e}.bg-\[\#2d2d44\]{background-color:#2d2d44}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/20{background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-white{background-color:var(--color-white)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[10px\]{padding:10px}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#f0f0f0\]{color:#f0f0f0}.text-blue-400{color:var(--color-blue-400)}.text-emerald-800{color:var(--color-emerald-800)}.text-gray-100{color:var(--color-gray-100)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-indigo-700{color:var(--color-indigo-700)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.opacity-50{opacity:.5}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:border-slate-500:hover{border-color:var(--color-slate-500)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-slate-500\/20:hover{background-color:#62748e33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-500\/20:hover{background-color:color-mix(in oklab, var(--color-slate-500) 20%, transparent)}}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-\[3px\]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-indigo-500\/10:focus{--tw-ring-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.focus\:ring-indigo-500\/10:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}}body{margin:calc(var(--spacing) * 0);background-color:var(--color-gray-100);padding:calc(var(--spacing) * 5);font-family:var(--font-sans)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}
3
3
  /*$vite$:1*/
@@ -12,13 +12,13 @@ import Preview from "./Preview.vue";
12
12
  /**
13
13
  * Quiz plugin instance with Vue components
14
14
  */
15
- export declare const plugin: ToolPlugin<never, QuizData, QuizArgs>;
15
+ export declare const plugin: ToolPlugin<QuizData, QuizData, QuizArgs>;
16
16
  export type { QuizQuestion, QuizData, QuizArgs } from "../core/types";
17
17
  export { pluginCore, executeQuiz } from "../core/plugin";
18
18
  export { TOOL_NAME, TOOL_DEFINITION } from "../core/definition";
19
19
  export { SAMPLES } from "../core/samples";
20
20
  export { View, Preview };
21
21
  declare const _default: {
22
- plugin: ToolPlugin<never, QuizData, QuizArgs, import("gui-chat-protocol/vue").InputHandler, Record<string, unknown>>;
22
+ plugin: ToolPlugin<QuizData, QuizData, QuizArgs, import("gui-chat-protocol/vue").InputHandler, Record<string, unknown>>;
23
23
  };
24
24
  export default _default;
package/dist/vue.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./plugin-BDTug9SB.cjs`);;/* empty css */let t=require(`vue`);var n={class:`size-full overflow-y-auto p-8 bg-slate-900`},r={key:0,class:`max-w-3xl w-full mx-auto`},i={key:0,class:`text-gray-100 text-3xl font-bold mb-8 text-center`},a={class:`flex flex-col gap-6`},o={class:`text-white text-lg font-semibold mb-4`},s={class:`text-blue-400 mr-2`},c={class:`flex flex-col gap-3`},l=[`name`,`value`,`onUpdate:modelValue`],u={class:`text-white flex-1`},d={class:`font-semibold mr-2`},f={class:`mt-8 flex justify-center`},p=[`disabled`],m={class:`mt-4 text-center text-gray-400 text-sm`},h=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{},sendTextMessage:{type:Function}},emits:[`updateResult`],setup(e,{emit:h}){let g=e,_=h,v=(0,t.ref)(null),y=(0,t.ref)([]);(0,t.watch)(()=>g.selectedResult,e=>{e?.toolName===`putQuestions`&&e.jsonData&&(v.value=e.jsonData,e.viewState?.userAnswers?y.value=e.viewState.userAnswers:y.value=Array(v.value.questions.length).fill(null))},{immediate:!0}),(0,t.watch)(y,e=>{g.selectedResult&&e&&_(`updateResult`,{...g.selectedResult,viewState:{userAnswers:e}})},{deep:!0});let b=(0,t.computed)(()=>y.value.filter(e=>e!==null).length),x=(0,t.computed)(()=>v.value&&b.value===v.value.questions.length);function S(e,t){return y.value[e]===t?`border-blue-500 bg-blue-500/20`:`border-slate-600 hover:border-slate-500 hover:bg-slate-500/20`}function C(){if(!v.value||!x.value)return;let e=`Here are my answers:\n${y.value.map((e,t)=>e===null?null:`Q${t+1}: ${String.fromCharCode(65+e)} - ${v.value.questions[t].choices[e]}`).filter(e=>e!==null).join(`
2
- `)}`;g.sendTextMessage(e)}return(e,h)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[v.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,r,[v.value.title?((0,t.openBlock)(),(0,t.createElementBlock)(`h2`,i,(0,t.toDisplayString)(v.value.title),1)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,a,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(v.value.questions,(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n,class:`bg-slate-800 rounded-lg p-6 border-2 border-slate-700`},[(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`span`,s,(0,t.toDisplayString)(n+1)+`.`,1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(e.question),1)]),(0,t.createElementVNode)(`div`,c,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.choices,(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`label`,{key:r,class:(0,t.normalizeClass)([S(n,r),`flex items-start p-4 rounded-lg cursor-pointer transition-all duration-200 border-2`])},[(0,t.withDirectives)((0,t.createElementVNode)(`input`,{type:`radio`,name:`question-${n}`,value:r,"onUpdate:modelValue":e=>y.value[n]=e,class:`mt-1 mr-3 size-4 shrink-0`},null,8,l),[[t.vModelRadio,y.value[n]]]),(0,t.createElementVNode)(`span`,u,[(0,t.createElementVNode)(`span`,d,(0,t.toDisplayString)(String.fromCharCode(65+r))+`.`,1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(e),1)])],2))),128))])]))),128))]),(0,t.createElementVNode)(`div`,f,[(0,t.createElementVNode)(`button`,{onClick:C,disabled:!x.value,class:(0,t.normalizeClass)([x.value?`bg-blue-600 hover:bg-blue-700`:`bg-gray-600 cursor-not-allowed opacity-50`,`py-3 px-8 rounded-lg text-white font-semibold text-lg transition-colors border-none cursor-pointer`])},` Submit Answers `,10,p)]),(0,t.createElementVNode)(`div`,m,(0,t.toDisplayString)(b.value)+` / `+(0,t.toDisplayString)(v.value.questions.length)+` questions answered `,1)])):(0,t.createCommentVNode)(``,!0)]))}}),g={class:`p-3 bg-blue-50 rounded-md`},_={key:0,class:`flex flex-col gap-2`},v={class:`text-sm font-semibold text-gray-800 text-center`},y={class:`text-center`},b={class:`inline-block bg-blue-600 text-white text-xs font-bold py-1 px-3 rounded-full`},x={class:`text-xs text-gray-600 overflow-hidden line-clamp-2`},S={class:`flex justify-center gap-1`},C={key:0,class:`text-xs text-gray-500`},w=(0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let n=e,r=(0,t.computed)(()=>n.result.jsonData);return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,g,[r.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_,[(0,t.createElementVNode)(`div`,v,(0,t.toDisplayString)(r.value.title||`Quiz`),1),(0,t.createElementVNode)(`div`,y,[(0,t.createElementVNode)(`span`,b,(0,t.toDisplayString)(r.value.questions.length)+` `+(0,t.toDisplayString)(r.value.questions.length===1?`Question`:`Questions`),1)]),(0,t.createElementVNode)(`div`,x,(0,t.toDisplayString)(r.value.questions[0]?.question),1),(0,t.createElementVNode)(`div`,S,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(Math.min(r.value.questions[0]?.choices.length||0,4),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n,class:`size-2 bg-gray-400 rounded-full`}))),128)),(r.value.questions[0]?.choices.length||0)>4?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,C,` +`+(0,t.toDisplayString)(r.value.questions[0].choices.length-4),1)):(0,t.createCommentVNode)(``,!0)])])):(0,t.createCommentVNode)(``,!0)]))}}),T={...e.n,viewComponent:h,previewComponent:w},E={plugin:T};exports.Preview=w,exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.View=h,exports.default=E,exports.executeQuiz=e.t,exports.plugin=T,exports.pluginCore=e.n;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./plugin-Ds8BW53G.cjs`);;/* empty css */let t=require(`vue`);var n={class:`size-full overflow-y-auto p-8 bg-slate-900`},r={key:0,class:`max-w-3xl w-full mx-auto`},i={key:0,class:`text-gray-100 text-3xl font-bold mb-8 text-center`},a={class:`flex flex-col gap-6`},o={class:`text-white text-lg font-semibold mb-4`},s={class:`text-blue-400 mr-2`},c={class:`flex flex-col gap-3`},l=[`name`,`value`,`onUpdate:modelValue`],u={class:`text-white flex-1`},d={class:`font-semibold mr-2`},f={class:`mt-8 flex justify-center`},p=[`disabled`],m={class:`mt-4 text-center text-gray-400 text-sm`},h=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{},sendTextMessage:{type:Function}},emits:[`updateResult`],setup(e,{emit:h}){let g=e,_=h,v=(0,t.ref)(null),y=(0,t.ref)([]);(0,t.watch)(()=>g.selectedResult,e=>{let t=e?.data??e?.jsonData;e?.toolName===`putQuestions`&&t&&(v.value=t,e.viewState?.userAnswers?y.value=e.viewState.userAnswers:y.value=Array(v.value.questions.length).fill(null))},{immediate:!0}),(0,t.watch)(y,e=>{g.selectedResult&&e&&_(`updateResult`,{...g.selectedResult,viewState:{userAnswers:e}})},{deep:!0});let b=(0,t.computed)(()=>y.value.filter(e=>e!==null).length),x=(0,t.computed)(()=>v.value&&b.value===v.value.questions.length);function S(e,t){return y.value[e]===t?`border-blue-500 bg-blue-500/20`:`border-slate-600 hover:border-slate-500 hover:bg-slate-500/20`}function C(){if(!v.value||!x.value)return;let e=`Here are my answers:\n${y.value.map((e,t)=>e===null?null:`Q${t+1}: ${String.fromCharCode(65+e)} - ${v.value.questions[t].choices[e]}`).filter(e=>e!==null).join(`
2
+ `)}`;g.sendTextMessage(e)}return(e,h)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[v.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,r,[v.value.title?((0,t.openBlock)(),(0,t.createElementBlock)(`h2`,i,(0,t.toDisplayString)(v.value.title),1)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,a,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(v.value.questions,(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n,class:`bg-slate-800 rounded-lg p-6 border-2 border-slate-700`},[(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`span`,s,(0,t.toDisplayString)(n+1)+`.`,1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(e.question),1)]),(0,t.createElementVNode)(`div`,c,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.choices,(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`label`,{key:r,class:(0,t.normalizeClass)([S(n,r),`flex items-start p-4 rounded-lg cursor-pointer transition-all duration-200 border-2`])},[(0,t.withDirectives)((0,t.createElementVNode)(`input`,{type:`radio`,name:`question-${n}`,value:r,"onUpdate:modelValue":e=>y.value[n]=e,class:`mt-1 mr-3 size-4 shrink-0`},null,8,l),[[t.vModelRadio,y.value[n]]]),(0,t.createElementVNode)(`span`,u,[(0,t.createElementVNode)(`span`,d,(0,t.toDisplayString)(String.fromCharCode(65+r))+`.`,1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(e),1)])],2))),128))])]))),128))]),(0,t.createElementVNode)(`div`,f,[(0,t.createElementVNode)(`button`,{onClick:C,disabled:!x.value,class:(0,t.normalizeClass)([x.value?`bg-blue-600 hover:bg-blue-700`:`bg-gray-600 cursor-not-allowed opacity-50`,`py-3 px-8 rounded-lg text-white font-semibold text-lg transition-colors border-none cursor-pointer`])},` Submit Answers `,10,p)]),(0,t.createElementVNode)(`div`,m,(0,t.toDisplayString)(b.value)+` / `+(0,t.toDisplayString)(v.value.questions.length)+` questions answered `,1)])):(0,t.createCommentVNode)(``,!0)]))}}),g={class:`p-3 bg-blue-50 rounded-md`},_={key:0,class:`flex flex-col gap-2`},v={class:`text-sm font-semibold text-gray-800 text-center`},y={class:`text-center`},b={class:`inline-block bg-blue-600 text-white text-xs font-bold py-1 px-3 rounded-full`},x={class:`text-xs text-gray-600 overflow-hidden line-clamp-2`},S={class:`flex justify-center gap-1`},C={key:0,class:`text-xs text-gray-500`},w=(0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let n=e,r=(0,t.computed)(()=>n.result.data??n.result.jsonData);return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,g,[r.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_,[(0,t.createElementVNode)(`div`,v,(0,t.toDisplayString)(r.value.title||`Quiz`),1),(0,t.createElementVNode)(`div`,y,[(0,t.createElementVNode)(`span`,b,(0,t.toDisplayString)(r.value.questions.length)+` `+(0,t.toDisplayString)(r.value.questions.length===1?`Question`:`Questions`),1)]),(0,t.createElementVNode)(`div`,x,(0,t.toDisplayString)(r.value.questions[0]?.question),1),(0,t.createElementVNode)(`div`,S,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(Math.min(r.value.questions[0]?.choices.length||0,4),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n,class:`size-2 bg-gray-400 rounded-full`}))),128)),(r.value.questions[0]?.choices.length||0)>4?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,C,` +`+(0,t.toDisplayString)(r.value.questions[0].choices.length-4),1)):(0,t.createCommentVNode)(``,!0)])])):(0,t.createCommentVNode)(``,!0)]))}}),T={...e.n,viewComponent:h,previewComponent:w},E={plugin:T};exports.Preview=w,exports.SAMPLES=e.r,exports.TOOL_DEFINITION=e.i,exports.TOOL_NAME=e.a,exports.View=h,exports.default=E,exports.executeQuiz=e.t,exports.plugin=T,exports.pluginCore=e.n;
package/dist/vue.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, r, t as i } from "./plugin-Dc-SF02-.js";
1
+ import { a as e, i as t, n, r, t as i } from "./plugin-B1Q2QkbY.js";
2
2
  /* empty css */
3
3
  import { Fragment as a, computed as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, defineComponent as d, normalizeClass as f, openBlock as p, ref as m, renderList as h, toDisplayString as g, vModelRadio as _, watch as v, withDirectives as y } from "vue";
4
4
  //#region src/vue/View.vue?vue&type=script&setup=true&lang.ts
@@ -22,7 +22,8 @@ var b = { class: "size-full overflow-y-auto p-8 bg-slate-900" }, x = {
22
22
  setup(e, { emit: t }) {
23
23
  let n = e, r = t, i = m(null), d = m([]);
24
24
  v(() => n.selectedResult, (e) => {
25
- e?.toolName === "putQuestions" && e.jsonData && (i.value = e.jsonData, e.viewState?.userAnswers ? d.value = e.viewState.userAnswers : d.value = Array(i.value.questions.length).fill(null));
25
+ let t = e?.data ?? e?.jsonData;
26
+ e?.toolName === "putQuestions" && t && (i.value = t, e.viewState?.userAnswers ? d.value = e.viewState.userAnswers : d.value = Array(i.value.questions.length).fill(null));
26
27
  }, { immediate: !0 }), v(d, (e) => {
27
28
  n.selectedResult && e && r("updateResult", {
28
29
  ...n.selectedResult,
@@ -71,7 +72,7 @@ var b = { class: "size-full overflow-y-auto p-8 bg-slate-900" }, x = {
71
72
  __name: "Preview",
72
73
  props: { result: {} },
73
74
  setup(e) {
74
- let t = e, n = o(() => t.result.jsonData);
75
+ let t = e, n = o(() => t.result.data ?? t.result.jsonData);
75
76
  return (e, t) => (p(), c("div", P, [n.value ? (p(), c("div", F, [
76
77
  l("div", I, g(n.value.title || "Quiz"), 1),
77
78
  l("div", L, [l("span", R, g(n.value.questions.length) + " " + g(n.value.questions.length === 1 ? "Question" : "Questions"), 1)]),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mulmochat-plugin/quiz",
3
- "version": "0.4.0",
3
+ "version": "0.4.3",
4
4
  "description": "Quiz plugin for MulmoChat",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -57,25 +57,25 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@eslint/js": "^10.0.1",
60
- "@tailwindcss/vite": "^4.2.2",
60
+ "@tailwindcss/vite": "^4.2.4",
61
61
  "@types/react": "^19.0.0",
62
62
  "@types/react-dom": "^19.0.0",
63
- "@typescript-eslint/eslint-plugin": "^8.58.0",
64
- "@typescript-eslint/parser": "^8.58.0",
63
+ "@typescript-eslint/eslint-plugin": "^8.59.2",
64
+ "@typescript-eslint/parser": "^8.59.2",
65
65
  "@vitejs/plugin-react": "^4.5.0",
66
66
  "@vitejs/plugin-vue": "^6.0.5",
67
- "eslint": "^10.1.0",
68
- "eslint-plugin-vue": "^10.8.0",
69
- "globals": "^17.4.0",
70
- "gui-chat-protocol": "^0.1.0",
67
+ "eslint": "^10.3.0",
68
+ "eslint-plugin-vue": "^10.9.1",
69
+ "globals": "^17.6.0",
70
+ "gui-chat-protocol": "^0.3.3",
71
71
  "react": "^19.0.0",
72
72
  "react-dom": "^19.0.0",
73
- "tailwindcss": "^4.2.2",
74
- "typescript": "~6.0.2",
75
- "vite": "^8.0.3",
76
- "vue": "^3.5.31",
73
+ "tailwindcss": "^4.2.4",
74
+ "typescript": "~6.0.3",
75
+ "vite": "^8.0.11",
76
+ "vue": "^3.5.34",
77
77
  "vue-eslint-parser": "^10.4.0",
78
- "vue-tsc": "^3.2.6"
78
+ "vue-tsc": "^3.2.8"
79
79
  },
80
80
  "keywords": [
81
81
  "mulmochat",
@@ -86,6 +86,6 @@
86
86
  ],
87
87
  "license": "MIT",
88
88
  "dependencies": {
89
- "gui-chat-protocol": "^0.1.0"
89
+ "gui-chat-protocol": "^0.3.3"
90
90
  }
91
91
  }