@pie-players/pie-players-shared 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/types.d.ts +1 -1
- package/dist/pie/configure-initialization.d.ts +1 -16
- package/dist/pie/configure-initialization.d.ts.map +1 -1
- package/dist/pie/configure-initialization.js +0 -73
- package/dist/pie/configure-initialization.js.map +1 -1
- package/dist/pie/iife-loader.d.ts +1 -1
- package/dist/pie/index.d.ts +6 -0
- package/dist/pie/index.d.ts.map +1 -1
- package/dist/pie/index.js +3 -0
- package/dist/pie/index.js.map +1 -1
- package/dist/pie/initialization.d.ts +1 -0
- package/dist/pie/initialization.d.ts.map +1 -1
- package/dist/pie/initialization.js +52 -37
- package/dist/pie/initialization.js.map +1 -1
- package/dist/pie/item-controller-storage.d.ts +21 -0
- package/dist/pie/item-controller-storage.d.ts.map +1 -0
- package/dist/pie/item-controller-storage.js +44 -0
- package/dist/pie/item-controller-storage.js.map +1 -0
- package/dist/pie/item-controller.d.ts +29 -0
- package/dist/pie/item-controller.d.ts.map +1 -0
- package/dist/pie/item-controller.js +62 -0
- package/dist/pie/item-controller.js.map +1 -0
- package/dist/pie/item-session-contract.d.ts +20 -0
- package/dist/pie/item-session-contract.d.ts.map +1 -0
- package/dist/pie/item-session-contract.js +125 -0
- package/dist/pie/item-session-contract.js.map +1 -0
- package/dist/pie/logger.d.ts +2 -2
- package/dist/pie/logger.js +2 -2
- package/dist/pie/player-initializer.d.ts +4 -4
- package/dist/pie/player-initializer.js +4 -4
- package/dist/pie/updates.d.ts.map +1 -1
- package/dist/pie/updates.js +34 -70
- package/dist/pie/updates.js.map +1 -1
- package/dist/pie/use-resource-monitor.svelte.d.ts +1 -1
- package/dist/pie/use-resource-monitor.svelte.js +1 -1
- package/dist/player-strategy.d.ts +6 -0
- package/dist/player-strategy.d.ts.map +1 -0
- package/dist/player-strategy.js +13 -0
- package/dist/player-strategy.js.map +1 -0
- package/package.json +3 -3
- package/src/components/PieItemPlayer.svelte +200 -21
- package/dist/types/custom-elements.d.ts +0 -183
- package/dist/types/custom-elements.d.ts.map +0 -1
- package/dist/types/custom-elements.js +0 -8
- package/dist/types/custom-elements.js.map +0 -1
- package/dist/types/search.d.ts +0 -105
- package/dist/types/search.d.ts.map +0 -1
- package/dist/types/search.js +0 -12
- package/dist/types/search.js.map +0 -1
- package/dist/types/transform.d.ts +0 -48
- package/dist/types/transform.d.ts.map +0 -1
- package/dist/types/transform.js +0 -21
- package/dist/types/transform.js.map +0 -1
|
@@ -10,7 +10,13 @@
|
|
|
10
10
|
import { onDestroy, tick, untrack } from "svelte";
|
|
11
11
|
import type { LoaderConfig } from "../loader-config.js";
|
|
12
12
|
import { DEFAULT_LOADER_CONFIG } from "../loader-config.js";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
AssetEventManager,
|
|
15
|
+
createDefaultImageDeleteHandler,
|
|
16
|
+
createDefaultImageInsertHandler,
|
|
17
|
+
createDefaultSoundDeleteHandler,
|
|
18
|
+
createDefaultSoundInsertHandler,
|
|
19
|
+
} from "../pie/asset-handler.js";
|
|
14
20
|
import { initializeConfiguresFromLoadedBundle } from "../pie/configure-initialization.js";
|
|
15
21
|
import { initializePiesFromLoadedBundle } from "../pie/initialization.js";
|
|
16
22
|
import { createPieLogger, isGlobalDebugEnabled } from "../pie/logger.js";
|
|
@@ -47,6 +53,7 @@
|
|
|
47
53
|
// Authoring mode props
|
|
48
54
|
mode = "view" as "view" | "author",
|
|
49
55
|
configuration = {} as Record<string, any>,
|
|
56
|
+
authoringBackend = "demo" as "demo" | "required",
|
|
50
57
|
// Toolkit service integration (optional)
|
|
51
58
|
ttsService = null,
|
|
52
59
|
toolCoordinator = null,
|
|
@@ -75,6 +82,7 @@
|
|
|
75
82
|
// Authoring mode props
|
|
76
83
|
mode?: "view" | "author";
|
|
77
84
|
configuration?: Record<string, any>;
|
|
85
|
+
authoringBackend?: "demo" | "required";
|
|
78
86
|
// Toolkit service integration
|
|
79
87
|
ttsService?: any;
|
|
80
88
|
toolCoordinator?: any;
|
|
@@ -96,6 +104,8 @@
|
|
|
96
104
|
|
|
97
105
|
// Asset event manager for authoring mode
|
|
98
106
|
let assetEventManager: AssetEventManager | null = $state(null);
|
|
107
|
+
let authoringBlockedError: string | null = $state(null);
|
|
108
|
+
let lastReportedAuthoringError: string | null = $state(null);
|
|
99
109
|
|
|
100
110
|
// Transform markup for authoring mode (append -config suffix)
|
|
101
111
|
function transformMarkupForAuthoring(
|
|
@@ -159,6 +169,75 @@
|
|
|
159
169
|
dispatchEvent(event);
|
|
160
170
|
};
|
|
161
171
|
|
|
172
|
+
const requiredHandlerNames = [
|
|
173
|
+
"onInsertImage",
|
|
174
|
+
"onDeleteImage",
|
|
175
|
+
"onInsertSound",
|
|
176
|
+
"onDeleteSound",
|
|
177
|
+
] as const;
|
|
178
|
+
|
|
179
|
+
function reportAuthoringErrorOnce(message: string) {
|
|
180
|
+
if (lastReportedAuthoringError === message) return;
|
|
181
|
+
lastReportedAuthoringError = message;
|
|
182
|
+
logger.error(`[PieItemPlayer] ${message}`);
|
|
183
|
+
dispatch("player-error", {
|
|
184
|
+
code: "AUTHORING_BACKEND_CONFIG_ERROR",
|
|
185
|
+
message,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function buildEffectiveAuthoringHandlers() {
|
|
190
|
+
if (authoringBackend === "required") {
|
|
191
|
+
const missing: string[] = [];
|
|
192
|
+
if (!onInsertImage) missing.push("onInsertImage");
|
|
193
|
+
if (!onDeleteImage) missing.push("onDeleteImage");
|
|
194
|
+
if (!onInsertSound) missing.push("onInsertSound");
|
|
195
|
+
if (!onDeleteSound) missing.push("onDeleteSound");
|
|
196
|
+
|
|
197
|
+
if (missing.length > 0) {
|
|
198
|
+
const message = `Authoring backend is required but missing handlers: ${missing.join(", ")}. Provide all ${requiredHandlerNames.join(", ")} callbacks.`;
|
|
199
|
+
authoringBlockedError = message;
|
|
200
|
+
reportAuthoringErrorOnce(message);
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
onInsertImage: onInsertImage!,
|
|
206
|
+
onDeleteImage: onDeleteImage!,
|
|
207
|
+
onInsertSound: onInsertSound!,
|
|
208
|
+
onDeleteSound: onDeleteSound!,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (
|
|
213
|
+
onInsertImage ||
|
|
214
|
+
onDeleteImage ||
|
|
215
|
+
onInsertSound ||
|
|
216
|
+
onDeleteSound
|
|
217
|
+
) {
|
|
218
|
+
return {
|
|
219
|
+
onInsertImage,
|
|
220
|
+
onDeleteImage,
|
|
221
|
+
onInsertSound,
|
|
222
|
+
onDeleteSound,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
logger.warn(
|
|
227
|
+
"[PieItemPlayer] Authoring backend mode is 'demo'. Using non-production media handlers.",
|
|
228
|
+
);
|
|
229
|
+
return {
|
|
230
|
+
onInsertImage: createDefaultImageInsertHandler((src) => {
|
|
231
|
+
logger.debug("[PieItemPlayer] Demo image insert completed:", src);
|
|
232
|
+
}),
|
|
233
|
+
onDeleteImage: createDefaultImageDeleteHandler(),
|
|
234
|
+
onInsertSound: createDefaultSoundInsertHandler((src) => {
|
|
235
|
+
logger.debug("[PieItemPlayer] Demo sound insert completed:", src);
|
|
236
|
+
}),
|
|
237
|
+
onDeleteSound: createDefaultSoundDeleteHandler(),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
162
241
|
// Populate session with correct responses when addCorrectResponse is true
|
|
163
242
|
async function populateCorrectResponses(force = false) {
|
|
164
243
|
// Early return checks
|
|
@@ -287,10 +366,19 @@
|
|
|
287
366
|
|
|
288
367
|
// Flag to prevent infinite loop when re-dispatching events
|
|
289
368
|
let isDispatching = $state(false);
|
|
369
|
+
let lastDispatchedSessionDetailSignature = $state("");
|
|
290
370
|
|
|
291
371
|
// Root element reference for resource monitor
|
|
292
372
|
let rootElement: HTMLElement | null = $state(null);
|
|
293
373
|
|
|
374
|
+
function getSessionSignature(): string {
|
|
375
|
+
try {
|
|
376
|
+
return JSON.stringify(session ?? []);
|
|
377
|
+
} catch {
|
|
378
|
+
return String(session ?? "");
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
294
382
|
// Resource monitor (handles initialization and cleanup automatically)
|
|
295
383
|
const resourceMonitor = useResourceMonitor(
|
|
296
384
|
() => rootElement,
|
|
@@ -329,6 +417,12 @@
|
|
|
329
417
|
if (mode === "author") {
|
|
330
418
|
// AUTHORING MODE: Initialize configure elements
|
|
331
419
|
logger.debug("[PieItemPlayer] Initializing in authoring mode");
|
|
420
|
+
authoringBlockedError = null;
|
|
421
|
+
const effectiveHandlers = buildEffectiveAuthoringHandlers();
|
|
422
|
+
if (authoringBlockedError || !effectiveHandlers) {
|
|
423
|
+
initialized = false;
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
332
426
|
|
|
333
427
|
const authoringEnv: AuthoringEnv = {
|
|
334
428
|
...env,
|
|
@@ -350,17 +444,65 @@
|
|
|
350
444
|
);
|
|
351
445
|
}
|
|
352
446
|
|
|
353
|
-
|
|
354
|
-
if (
|
|
355
|
-
rootElement &&
|
|
356
|
-
(onInsertImage || onDeleteImage || onInsertSound || onDeleteSound)
|
|
357
|
-
) {
|
|
447
|
+
if (rootElement && effectiveHandlers) {
|
|
358
448
|
assetEventManager = new AssetEventManager(
|
|
359
449
|
rootElement,
|
|
360
|
-
onInsertImage
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
450
|
+
effectiveHandlers.onInsertImage
|
|
451
|
+
? (handler) => {
|
|
452
|
+
try {
|
|
453
|
+
effectiveHandlers.onInsertImage!(handler);
|
|
454
|
+
} catch (error: any) {
|
|
455
|
+
const err =
|
|
456
|
+
error instanceof Error
|
|
457
|
+
? error
|
|
458
|
+
: new Error(String(error ?? "Unknown upload error"));
|
|
459
|
+
logger.error("[PieItemPlayer] onInsertImage failed:", err);
|
|
460
|
+
handler.done(err);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
: undefined,
|
|
464
|
+
effectiveHandlers.onDeleteImage
|
|
465
|
+
? (src, done) => {
|
|
466
|
+
try {
|
|
467
|
+
effectiveHandlers.onDeleteImage!(src, done);
|
|
468
|
+
} catch (error: any) {
|
|
469
|
+
const err =
|
|
470
|
+
error instanceof Error
|
|
471
|
+
? error
|
|
472
|
+
: new Error(String(error ?? "Unknown delete error"));
|
|
473
|
+
logger.error("[PieItemPlayer] onDeleteImage failed:", err);
|
|
474
|
+
done(err);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
: undefined,
|
|
478
|
+
effectiveHandlers.onInsertSound
|
|
479
|
+
? (handler) => {
|
|
480
|
+
try {
|
|
481
|
+
effectiveHandlers.onInsertSound!(handler);
|
|
482
|
+
} catch (error: any) {
|
|
483
|
+
const err =
|
|
484
|
+
error instanceof Error
|
|
485
|
+
? error
|
|
486
|
+
: new Error(String(error ?? "Unknown upload error"));
|
|
487
|
+
logger.error("[PieItemPlayer] onInsertSound failed:", err);
|
|
488
|
+
handler.done(err);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
: undefined,
|
|
492
|
+
effectiveHandlers.onDeleteSound
|
|
493
|
+
? (src, done) => {
|
|
494
|
+
try {
|
|
495
|
+
effectiveHandlers.onDeleteSound!(src, done);
|
|
496
|
+
} catch (error: any) {
|
|
497
|
+
const err =
|
|
498
|
+
error instanceof Error
|
|
499
|
+
? error
|
|
500
|
+
: new Error(String(error ?? "Unknown delete error"));
|
|
501
|
+
logger.error("[PieItemPlayer] onDeleteSound failed:", err);
|
|
502
|
+
done(err);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
: undefined
|
|
364
506
|
);
|
|
365
507
|
assetEventManager.attach();
|
|
366
508
|
logger.debug("[PieItemPlayer] Asset event manager attached");
|
|
@@ -434,13 +576,20 @@
|
|
|
434
576
|
};
|
|
435
577
|
|
|
436
578
|
if (rootElement) {
|
|
437
|
-
|
|
579
|
+
// Capture phase ensures we receive author updates even when the event
|
|
580
|
+
// does not bubble from nested configure editors.
|
|
581
|
+
rootElement.addEventListener(
|
|
582
|
+
"model.updated",
|
|
583
|
+
handleModelUpdated,
|
|
584
|
+
true
|
|
585
|
+
);
|
|
438
586
|
sessionListenerAttached = true;
|
|
439
587
|
detachSessionChangedListener = () => {
|
|
440
588
|
try {
|
|
441
589
|
rootElement?.removeEventListener(
|
|
442
590
|
"model.updated",
|
|
443
|
-
handleModelUpdated
|
|
591
|
+
handleModelUpdated,
|
|
592
|
+
true
|
|
444
593
|
);
|
|
445
594
|
} catch {}
|
|
446
595
|
};
|
|
@@ -464,16 +613,30 @@
|
|
|
464
613
|
customEvent.detail
|
|
465
614
|
);
|
|
466
615
|
|
|
616
|
+
// Forward event detail with the latest in-memory session snapshot.
|
|
617
|
+
// PIE elements often emit metadata-only details, while the actual response
|
|
618
|
+
// array is mutated in-place on the `session` prop.
|
|
619
|
+
const forwardedDetail = {
|
|
620
|
+
...(customEvent.detail || {}),
|
|
621
|
+
session: { id: "", data: session },
|
|
622
|
+
};
|
|
623
|
+
|
|
624
|
+
// Ignore duplicate payloads that can occur during model wiring.
|
|
625
|
+
let detailSignature = "";
|
|
626
|
+
try {
|
|
627
|
+
detailSignature = JSON.stringify(forwardedDetail);
|
|
628
|
+
} catch {
|
|
629
|
+
detailSignature = String(customEvent.detail);
|
|
630
|
+
}
|
|
631
|
+
if (detailSignature === lastDispatchedSessionDetailSignature) {
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
lastDispatchedSessionDetailSignature = detailSignature;
|
|
635
|
+
|
|
467
636
|
// Set flag before dispatching
|
|
468
637
|
isDispatching = true;
|
|
469
638
|
try {
|
|
470
|
-
|
|
471
|
-
// The event detail only contains metadata like {complete: boolean, component: string}
|
|
472
|
-
// The actual session data is in the session array prop (it's already the data array)
|
|
473
|
-
dispatch("session-changed", {
|
|
474
|
-
...customEvent.detail,
|
|
475
|
-
session: { id: "", data: session },
|
|
476
|
-
});
|
|
639
|
+
dispatch("session-changed", forwardedDetail);
|
|
477
640
|
} finally {
|
|
478
641
|
// Reset flag after dispatch (use setTimeout to ensure it happens after event propagation)
|
|
479
642
|
setTimeout(() => {
|
|
@@ -581,13 +744,29 @@
|
|
|
581
744
|
</script>
|
|
582
745
|
|
|
583
746
|
<div class="pie-item-player" bind:this={rootElement}>
|
|
584
|
-
{#if
|
|
747
|
+
{#if authoringBlockedError}
|
|
748
|
+
<div
|
|
749
|
+
class="pie-player-error"
|
|
750
|
+
style="
|
|
751
|
+
padding: 20px;
|
|
752
|
+
margin: 20px 0;
|
|
753
|
+
border: 2px solid #d32f2f;
|
|
754
|
+
border-radius: 4px;
|
|
755
|
+
background-color: #ffebee;
|
|
756
|
+
color: #c62828;
|
|
757
|
+
font-family: sans-serif;
|
|
758
|
+
"
|
|
759
|
+
>
|
|
760
|
+
<h3 style="margin: 0 0 10px 0">Authoring Backend Configuration Error</h3>
|
|
761
|
+
<p style="margin: 0">{authoringBlockedError}</p>
|
|
762
|
+
</div>
|
|
763
|
+
{:else if passageMarkup}
|
|
585
764
|
<div class={passageContainerClassFinal}>
|
|
586
765
|
{@html passageMarkup}
|
|
587
766
|
</div>
|
|
588
767
|
{/if}
|
|
589
768
|
|
|
590
|
-
{#if itemMarkup}
|
|
769
|
+
{#if !authoringBlockedError && itemMarkup}
|
|
591
770
|
<div class={itemContainerClassFinal}>
|
|
592
771
|
{@html itemMarkup}
|
|
593
772
|
</div>
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TypeScript interfaces for custom PIE elements
|
|
3
|
-
*
|
|
4
|
-
* These interfaces provide type safety when working with custom elements
|
|
5
|
-
* that are defined as Svelte components with customElement option.
|
|
6
|
-
*/
|
|
7
|
-
import type { ItemConfig } from "./index.js";
|
|
8
|
-
/**
|
|
9
|
-
* PIE IIFE Player custom element interface
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const player = document.querySelector('pie-iife-player') as PieIifePlayerElement;
|
|
14
|
-
* player.config = itemConfig;
|
|
15
|
-
* player.session = { id: 'session-1', data: [] };
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export interface PieIifePlayerElement extends HTMLElement {
|
|
19
|
-
/** PIE item configuration */
|
|
20
|
-
config: ItemConfig;
|
|
21
|
-
/** Session state containing response data */
|
|
22
|
-
session: {
|
|
23
|
-
id: string;
|
|
24
|
-
data: any[];
|
|
25
|
-
};
|
|
26
|
-
/** Player environment (mode and role) */
|
|
27
|
-
env: {
|
|
28
|
-
mode: "gather" | "view" | "evaluate";
|
|
29
|
-
role: "student" | "instructor";
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Authoring mode toggle (separate from env.mode).
|
|
33
|
-
* - view: normal runtime rendering
|
|
34
|
-
* - author: loads editor bundles and enables configure/authoring flows
|
|
35
|
-
*/
|
|
36
|
-
mode?: "view" | "author";
|
|
37
|
-
/**
|
|
38
|
-
* Authoring configuration passed through to PIE elements (e.g. configure settings).
|
|
39
|
-
* In authoring mode this typically influences the element's configure UI and emitted
|
|
40
|
-
* `model.updated` events.
|
|
41
|
-
*/
|
|
42
|
-
configuration?: Record<string, any>;
|
|
43
|
-
/** Debug mode flag */
|
|
44
|
-
debug?: boolean;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* PIE ESM Player custom element interface
|
|
48
|
-
*
|
|
49
|
-
* Mirrors the pie-iife-player contract, but loads PIE bundles via native ESM from an ESM CDN.
|
|
50
|
-
*/
|
|
51
|
-
export interface PieEsmPlayerElement extends HTMLElement {
|
|
52
|
-
/** PIE item configuration */
|
|
53
|
-
config: ItemConfig;
|
|
54
|
-
/** Session state containing response data */
|
|
55
|
-
session: {
|
|
56
|
-
id: string;
|
|
57
|
-
data: any[];
|
|
58
|
-
};
|
|
59
|
-
/** Player environment (mode and role) */
|
|
60
|
-
env: {
|
|
61
|
-
mode: "gather" | "view" | "evaluate";
|
|
62
|
-
role: "student" | "instructor";
|
|
63
|
-
};
|
|
64
|
-
/** ESM CDN base URL (e.g. https://esm.sh) */
|
|
65
|
-
esmCdnUrl?: string;
|
|
66
|
-
/** Authoring mode toggle (separate from env.mode). */
|
|
67
|
-
mode?: "view" | "author";
|
|
68
|
-
/** Authoring configuration passed through to PIE elements. */
|
|
69
|
-
configuration?: Record<string, any>;
|
|
70
|
-
/** Debug mode flag */
|
|
71
|
-
debug?: boolean;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Tool Toolbar custom element interface
|
|
75
|
-
*/
|
|
76
|
-
export interface ToolToolbarElement extends HTMLElement {
|
|
77
|
-
/** Comma-separated list of enabled tools */
|
|
78
|
-
tools?: string;
|
|
79
|
-
/** Whether toolbar is disabled */
|
|
80
|
-
disabled?: boolean;
|
|
81
|
-
/** Toolbar position */
|
|
82
|
-
position?: "top" | "bottom" | "left" | "right";
|
|
83
|
-
/** Whether to show tool labels */
|
|
84
|
-
"show-labels"?: boolean;
|
|
85
|
-
/** Organization ID for tool configuration */
|
|
86
|
-
"organization-id"?: string;
|
|
87
|
-
/** Base URL for tool resources */
|
|
88
|
-
"base-url"?: string;
|
|
89
|
-
/** Tool coordinator instance (passed as property, not attribute) */
|
|
90
|
-
toolCoordinator?: any;
|
|
91
|
-
/** Highlight coordinator instance */
|
|
92
|
-
highlightCoordinator?: any;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Base tool element interface
|
|
96
|
-
*
|
|
97
|
-
* All tool custom elements share these properties
|
|
98
|
-
*/
|
|
99
|
-
export interface BaseToolElement extends HTMLElement {
|
|
100
|
-
/** Whether the tool is visible */
|
|
101
|
-
visible?: boolean;
|
|
102
|
-
/** Unique tool identifier */
|
|
103
|
-
"tool-id"?: string;
|
|
104
|
-
/** Tool coordinator instance (passed as property) */
|
|
105
|
-
coordinator?: any;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Calculator tool element
|
|
109
|
-
*/
|
|
110
|
-
export interface ToolCalculatorElement extends BaseToolElement {
|
|
111
|
-
/** Calculator type */
|
|
112
|
-
"calculator-type"?: "basic" | "scientific" | "graphing";
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Color Scheme tool element
|
|
116
|
-
*/
|
|
117
|
-
export interface ToolColorSchemeElement extends BaseToolElement {
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Graph tool element
|
|
121
|
-
*/
|
|
122
|
-
export interface ToolGraphElement extends BaseToolElement {
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Periodic Table tool element
|
|
126
|
-
*/
|
|
127
|
-
export interface ToolPeriodicTableElement extends BaseToolElement {
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Ruler tool element
|
|
131
|
-
*/
|
|
132
|
-
export interface ToolRulerElement extends BaseToolElement {
|
|
133
|
-
/** Initial units (cm or in) */
|
|
134
|
-
units?: "cm" | "in";
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Protractor tool element
|
|
138
|
-
*/
|
|
139
|
-
export interface ToolProtractorElement extends BaseToolElement {
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Line Reader tool element
|
|
143
|
-
*/
|
|
144
|
-
export interface ToolLineReaderElement extends BaseToolElement {
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Text-to-Speech tool element
|
|
148
|
-
*/
|
|
149
|
-
export interface ToolTextToSpeechElement extends BaseToolElement {
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Answer Eliminator tool element
|
|
153
|
-
*/
|
|
154
|
-
export interface ToolAnswerEliminatorElement extends BaseToolElement {
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Helper type to get element interface by tag name
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* ```typescript
|
|
161
|
-
* const player = document.querySelector('pie-iife-player') as CustomElementByTag<'pie-iife-player'>;
|
|
162
|
-
* ```
|
|
163
|
-
*/
|
|
164
|
-
export type CustomElementByTag<T extends string> = T extends "pie-iife-player" ? PieIifePlayerElement : T extends "pie-tool-toolbar" ? ToolToolbarElement : T extends "pie-tool-calculator" ? ToolCalculatorElement : T extends "pie-tool-color-scheme" ? ToolColorSchemeElement : T extends "pie-tool-graph" ? ToolGraphElement : T extends "pie-tool-periodic-table" ? ToolPeriodicTableElement : T extends "pie-tool-ruler" ? ToolRulerElement : T extends "pie-tool-protractor" ? ToolProtractorElement : T extends "pie-tool-line-reader" ? ToolLineReaderElement : T extends "pie-tool-text-to-speech" ? ToolTextToSpeechElement : T extends "pie-tool-answer-eliminator" ? ToolAnswerEliminatorElement : HTMLElement;
|
|
165
|
-
/**
|
|
166
|
-
* Declare custom elements in global namespace for TypeScript
|
|
167
|
-
*/
|
|
168
|
-
declare global {
|
|
169
|
-
interface HTMLElementTagNameMap {
|
|
170
|
-
"pie-iife-player": PieIifePlayerElement;
|
|
171
|
-
"pie-tool-toolbar": ToolToolbarElement;
|
|
172
|
-
"pie-tool-calculator": ToolCalculatorElement;
|
|
173
|
-
"pie-tool-color-scheme": ToolColorSchemeElement;
|
|
174
|
-
"pie-tool-graph": ToolGraphElement;
|
|
175
|
-
"pie-tool-periodic-table": ToolPeriodicTableElement;
|
|
176
|
-
"pie-tool-ruler": ToolRulerElement;
|
|
177
|
-
"pie-tool-protractor": ToolProtractorElement;
|
|
178
|
-
"pie-tool-line-reader": ToolLineReaderElement;
|
|
179
|
-
"pie-tool-text-to-speech": ToolTextToSpeechElement;
|
|
180
|
-
"pie-tool-answer-eliminator": ToolAnswerEliminatorElement;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=custom-elements.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-elements.d.ts","sourceRoot":"","sources":["../../src/types/custom-elements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-elements.js","sourceRoot":"","sources":["../../src/types/custom-elements.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/types/search.d.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local type definitions for search package types used in client code.
|
|
3
|
-
*
|
|
4
|
-
* These are copied from @pie-api-aws/search to avoid importing from a server-only package.
|
|
5
|
-
* This prevents Vite from trying to process the package and its Node.js dependencies.
|
|
6
|
-
*
|
|
7
|
-
* Server-side code should import directly from @pie-api-aws/search.
|
|
8
|
-
*
|
|
9
|
-
* When these types change in the search package, they should be updated here as well.
|
|
10
|
-
*/
|
|
11
|
-
export interface GenerationDebugInfo {
|
|
12
|
-
step1: {
|
|
13
|
-
prompt: string;
|
|
14
|
-
response: string;
|
|
15
|
-
parsedIntent: {
|
|
16
|
-
subject?: string;
|
|
17
|
-
standardSet?: string;
|
|
18
|
-
gradeLevels: number[];
|
|
19
|
-
keywords: string[];
|
|
20
|
-
standardSearchHints: string[];
|
|
21
|
-
[key: string]: any;
|
|
22
|
-
};
|
|
23
|
-
cost?: {
|
|
24
|
-
inputTokens: number;
|
|
25
|
-
outputTokens: number;
|
|
26
|
-
estimatedCost: number;
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
step2: {
|
|
30
|
-
intent: {
|
|
31
|
-
subject?: string;
|
|
32
|
-
standardSet?: string;
|
|
33
|
-
gradeLevels: number[];
|
|
34
|
-
keywords: string[];
|
|
35
|
-
standardSearchHints: string[];
|
|
36
|
-
[key: string]: any;
|
|
37
|
-
};
|
|
38
|
-
searchQuery?: {
|
|
39
|
-
filters: {
|
|
40
|
-
subject?: string;
|
|
41
|
-
standardSet?: string;
|
|
42
|
-
gradeLevels: number[];
|
|
43
|
-
};
|
|
44
|
-
keywords: string[];
|
|
45
|
-
searchHints: string[];
|
|
46
|
-
[key: string]: any;
|
|
47
|
-
};
|
|
48
|
-
candidatesFound: number;
|
|
49
|
-
candidatesEmbedded?: number;
|
|
50
|
-
topStandards?: Array<{
|
|
51
|
-
guid: string;
|
|
52
|
-
title?: string;
|
|
53
|
-
score?: number;
|
|
54
|
-
similarity?: number;
|
|
55
|
-
}>;
|
|
56
|
-
topStandardsReturned?: number;
|
|
57
|
-
cost?: {
|
|
58
|
-
embeddingCalls: number;
|
|
59
|
-
estimatedCost: number;
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
step3: {
|
|
63
|
-
prompt: string;
|
|
64
|
-
response: string;
|
|
65
|
-
parsedBlueprint: {
|
|
66
|
-
name: string;
|
|
67
|
-
description?: string;
|
|
68
|
-
subject?: string;
|
|
69
|
-
standardSet?: string;
|
|
70
|
-
gradeLevels: number[];
|
|
71
|
-
assessmentGoal?: {
|
|
72
|
-
dokDistribution?: {
|
|
73
|
-
dok1?: number;
|
|
74
|
-
dok2?: number;
|
|
75
|
-
dok3?: number;
|
|
76
|
-
dok4?: number;
|
|
77
|
-
};
|
|
78
|
-
totalItemCount?: {
|
|
79
|
-
target?: number;
|
|
80
|
-
min?: number;
|
|
81
|
-
max?: number;
|
|
82
|
-
};
|
|
83
|
-
[key: string]: any;
|
|
84
|
-
};
|
|
85
|
-
standards: Array<{
|
|
86
|
-
guid: string;
|
|
87
|
-
count: number;
|
|
88
|
-
rationale?: string;
|
|
89
|
-
[key: string]: any;
|
|
90
|
-
}>;
|
|
91
|
-
[key: string]: any;
|
|
92
|
-
};
|
|
93
|
-
cost?: {
|
|
94
|
-
inputTokens: number;
|
|
95
|
-
outputTokens: number;
|
|
96
|
-
estimatedCost: number;
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
totalCost?: {
|
|
100
|
-
llmCalls: number;
|
|
101
|
-
embeddingCalls?: number;
|
|
102
|
-
estimatedTotalCost: number;
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"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"}
|
package/dist/types/search.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local type definitions for search package types used in client code.
|
|
3
|
-
*
|
|
4
|
-
* These are copied from @pie-api-aws/search to avoid importing from a server-only package.
|
|
5
|
-
* This prevents Vite from trying to process the package and its Node.js dependencies.
|
|
6
|
-
*
|
|
7
|
-
* Server-side code should import directly from @pie-api-aws/search.
|
|
8
|
-
*
|
|
9
|
-
* When these types change in the search package, they should be updated here as well.
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=search.js.map
|
package/dist/types/search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|