@aastrika/ai-elements 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +39 -8
- package/aastrika-elements.d.ts +29 -4
- package/aastrika-elements.js +9 -9
- package/package.json +2 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
`@aastrika/ai-elements`. Newest first. One line per change, so a host team can
|
|
4
|
+
see at a glance what to expect when they upgrade.
|
|
5
|
+
|
|
6
|
+
Versions follow semver: a **minor** adds something, a **patch** fixes something,
|
|
7
|
+
and neither removes anything a host was using.
|
|
8
|
+
|
|
9
|
+
## 0.3.0
|
|
10
|
+
|
|
11
|
+
**Added**
|
|
12
|
+
- `default-translate-into` on `<aastrika-assessment>` — produce the same
|
|
13
|
+
questions in other languages, comma-separated: `"ta,or,bn"`
|
|
14
|
+
- `assessmentReady` now carries `languages`, the translations actually produced
|
|
15
|
+
- Reviewers get a tab per language; Excel exports one sheet per language, CSV
|
|
16
|
+
one language at a time
|
|
17
|
+
|
|
18
|
+
**Fixed**
|
|
19
|
+
- `onError` was never called for hosts configuring through `provideAastrika()`
|
|
20
|
+
|
|
21
|
+
**Notes for integrators**
|
|
22
|
+
- Nothing is removed and nothing changes for a host that ignores the new input
|
|
23
|
+
- `languages` can be shorter than what was asked for: a translation that fails
|
|
24
|
+
its checks is dropped rather than stored wrong
|
|
25
|
+
|
|
26
|
+
## 0.2.1
|
|
27
|
+
|
|
28
|
+
**Fixed**
|
|
29
|
+
- Documentation corrections in the published README
|
|
30
|
+
|
|
31
|
+
## 0.2.0
|
|
32
|
+
|
|
33
|
+
**Added**
|
|
34
|
+
- Starting-value inputs (`default-language`, `default-difficulty` and others),
|
|
35
|
+
events (`planReady`, `videoReady`, `assessmentReady`, `reportLoaded`) and an
|
|
36
|
+
`onError` callback
|
|
37
|
+
|
|
38
|
+
## 0.1.0
|
|
39
|
+
|
|
40
|
+
**Added**
|
|
41
|
+
- First release: `<aastrika-content-studio>`, `<aastrika-assessment>` and
|
|
42
|
+
`<aastrika-reports>` as custom elements, with `configure()`
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Svelte or plain HTML.
|
|
|
9
9
|
| `<aastrika-assessment>` | Source material becomes a validated MCQ set |
|
|
10
10
|
| `<aastrika-reports>` | Who used what, and what it cost *(admin only)* |
|
|
11
11
|
|
|
12
|
-
One file,
|
|
12
|
+
One file, **~99 kB gzipped** (86 kB brotli), **no dependencies**. Angular is compiled
|
|
13
13
|
inside, so you never install it and never upgrade because we did.
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -20,6 +20,8 @@ inside, so you never install it and never upgrade because we did.
|
|
|
20
20
|
|---|---|
|
|
21
21
|
| [The three features](#the-three-features) | What each element does |
|
|
22
22
|
| [Setup](#setup) | Install, access, configure, mount |
|
|
23
|
+
| [Integration guide](../../../docs/INTEGRATION.md) | Step by step, both auth paths |
|
|
24
|
+
| [Angular example](../../lib-demo-app/) | A runnable app |
|
|
23
25
|
| [Framework notes](#framework-notes) | React · Angular · Plain HTML |
|
|
24
26
|
| [Configuration](#configuration) | The three values, and why two are functions |
|
|
25
27
|
| [Access](#access) | Which gateway groups each feature needs |
|
|
@@ -80,7 +82,7 @@ flowchart LR
|
|
|
80
82
|
cfg -.->|apiBase · auth · creator| int
|
|
81
83
|
tag --> el
|
|
82
84
|
el --> int
|
|
83
|
-
int -->|"Authorization<br/>
|
|
85
|
+
int -->|"Authorization<br/>creator in the body"| gw
|
|
84
86
|
gw --> api
|
|
85
87
|
api -.->|JSON| el
|
|
86
88
|
el -.->|onError| cfg
|
|
@@ -110,7 +112,7 @@ cost estimate, and can revise it in writing as many times as they like. Only
|
|
|
110
112
|
While it renders they get five-phase progress and a live log; at the end they
|
|
111
113
|
can play, download or delete it.
|
|
112
114
|
|
|
113
|
-
[Full walkthrough →](features/content-studio/README.md)
|
|
115
|
+
[Full walkthrough →](https://github.com/Sphere/aastrika-ai-service/blob/master/frontend/src/lib/features/content-studio/README.md)
|
|
114
116
|
|
|
115
117
|
### `<aastrika-assessment>`
|
|
116
118
|
|
|
@@ -121,7 +123,7 @@ Every question is checked before it is returned: one correct option, no
|
|
|
121
123
|
duplicates, nothing the source material does not support. The user can fix
|
|
122
124
|
wording, re-tick the correct option, then export XLSX or CSV.
|
|
123
125
|
|
|
124
|
-
[Full walkthrough →](features/assessment/README.md)
|
|
126
|
+
[Full walkthrough →](https://github.com/Sphere/aastrika-ai-service/blob/master/frontend/src/lib/features/assessment/README.md)
|
|
125
127
|
|
|
126
128
|
### `<aastrika-reports>`
|
|
127
129
|
|
|
@@ -133,7 +135,7 @@ spend figures are not for a partner's ordinary users. The service applies no
|
|
|
133
135
|
role check of its own, so the gateway's ACL is the only thing keeping them
|
|
134
136
|
apart.
|
|
135
137
|
|
|
136
|
-
[Full walkthrough →](features/reports/README.md)
|
|
138
|
+
[Full walkthrough →](https://github.com/Sphere/aastrika-ai-service/blob/master/frontend/src/lib/features/reports/README.md)
|
|
137
139
|
|
|
138
140
|
---
|
|
139
141
|
|
|
@@ -366,6 +368,7 @@ All are **starting values** the user can still change.
|
|
|
366
368
|
| `assessment` | `default-language` | |
|
|
367
369
|
| | `default-question-count` | |
|
|
368
370
|
| | `default-difficulty` | `mixed`, `easy`, `medium`, `hard` |
|
|
371
|
+
| | `default-translate-into` | Also produce the same questions in these languages, comma-separated: `"ta,or,bn"` |
|
|
369
372
|
| `reports` | `creator-filter` | Opens filtered to one creator |
|
|
370
373
|
|
|
371
374
|
```html
|
|
@@ -373,6 +376,34 @@ All are **starting values** the user can still change.
|
|
|
373
376
|
</aastrika-content-studio>
|
|
374
377
|
```
|
|
375
378
|
|
|
379
|
+
### One quiz, several languages
|
|
380
|
+
|
|
381
|
+
`default-translate-into` produces the **same** questions in other languages —
|
|
382
|
+
same order, same options, same answer key — so one answer key marks every
|
|
383
|
+
language and scores compare across them.
|
|
384
|
+
|
|
385
|
+
```html
|
|
386
|
+
<aastrika-assessment default-language="hi" default-translate-into="en,mr">
|
|
387
|
+
</aastrika-assessment>
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
The reviewer gets a tab per language. Excel holds every language, one sheet
|
|
391
|
+
each; CSV holds one language at a time.
|
|
392
|
+
|
|
393
|
+
`assessmentReady` reports what came back:
|
|
394
|
+
|
|
395
|
+
```js
|
|
396
|
+
el.addEventListener('assessmentReady', (e) => {
|
|
397
|
+
e.detail.language; // 'hi' — the one the questions were written in
|
|
398
|
+
e.detail.languages; // ['en','mr'] — the translations produced
|
|
399
|
+
});
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
`languages` can be shorter than what was asked for. A translation is checked for
|
|
403
|
+
question count, ids, answer key, clinical numbers and script; one that fails is
|
|
404
|
+
dropped rather than stored wrong. What is **not** checked is whether the
|
|
405
|
+
translation reads well — that still needs someone who speaks the language.
|
|
406
|
+
|
|
376
407
|
### Events
|
|
377
408
|
|
|
378
409
|
| Element | Event | Fires when | `detail` |
|
|
@@ -380,7 +411,7 @@ All are **starting values** the user can still change.
|
|
|
380
411
|
| `content-studio` | `planReady` | A plan comes back. **Repeatable** — free, so this can fire several times | `jobId`, `title`, `sceneCount`, `estimatedUsd` |
|
|
381
412
|
| | `videoStarted` | The user commits to a render. **This is where money is spent** | `jobId` |
|
|
382
413
|
| | `videoReady` | The video is finished | `jobId`, `videoUrl` |
|
|
383
|
-
| `assessment` | `assessmentReady` | A validated question set comes back | `jobId`, `questionCount`, `language` |
|
|
414
|
+
| `assessment` | `assessmentReady` | A validated question set comes back | `jobId`, `questionCount`, `language`, `languages` |
|
|
384
415
|
| `reports` | `reportLoaded` | The figures are on screen | `videos`, `assessments`, `users`, `spendUsd` |
|
|
385
416
|
|
|
386
417
|
```js
|
|
@@ -407,14 +438,14 @@ any DOM event: `(videoReady)="onReady($event)"`.
|
|
|
407
438
|
| `403` on revise only | missing `contentUpdate` |
|
|
408
439
|
| `403` on delete only | missing `contentAdmin` |
|
|
409
440
|
| `429` on Generate video | the low rate limit, and it is intentional |
|
|
410
|
-
|
|
|
441
|
+
| Everything recorded as `admin` | `creator` was not set, or it returned null |
|
|
411
442
|
| Blank box, no errors | the module did not load, so the tag is an unknown element |
|
|
412
443
|
|
|
413
444
|
---
|
|
414
445
|
|
|
415
446
|
## Browser support
|
|
416
447
|
|
|
417
|
-
Any browser with Custom Elements v1
|
|
448
|
+
Any browser with Custom Elements v1 — everything since 2018.
|
|
418
449
|
|
|
419
450
|
## Server rendering
|
|
420
451
|
|
package/aastrika-elements.d.ts
CHANGED
|
@@ -20,8 +20,15 @@
|
|
|
20
20
|
|
|
21
21
|
/** What a request failure tells the host. Stable across features. */
|
|
22
22
|
export interface AastrikaError {
|
|
23
|
-
/**
|
|
24
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Which element the failure came from.
|
|
25
|
+
*
|
|
26
|
+
* The three shipped today, and open to more: a future feature emits a name
|
|
27
|
+
* not in this list, and narrowing the type to only these three would turn
|
|
28
|
+
* that into a compile error in every host's handler. The literals stay so
|
|
29
|
+
* an editor still suggests them.
|
|
30
|
+
*/
|
|
31
|
+
feature: 'content-studio' | 'assessment' | 'reports' | (string & {});
|
|
25
32
|
/** The sentence already shown to the user. */
|
|
26
33
|
message: string;
|
|
27
34
|
/** HTTP status. 0 means the request never left the browser — usually CORS. */
|
|
@@ -116,11 +123,29 @@ interface AastrikaAssessmentElement extends HTMLElement {
|
|
|
116
123
|
defaultQuestionCount?: number;
|
|
117
124
|
/** `'mixed'`, `'easy'`, `'medium'` or `'hard'`. */
|
|
118
125
|
defaultDifficulty?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Languages to render the same questions into, comma-separated
|
|
128
|
+
* (`"ta,or,bn"`), written as `default-translate-into` in HTML. The SAME
|
|
129
|
+
* assessment in each — same order, same options, same answer key — so one
|
|
130
|
+
* key marks every language.
|
|
131
|
+
*
|
|
132
|
+
* A starting value like the others: the user can change the selection before
|
|
133
|
+
* generating.
|
|
134
|
+
*/
|
|
135
|
+
defaultTranslateInto?: string;
|
|
119
136
|
|
|
120
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* A validated question set came back.
|
|
139
|
+
*
|
|
140
|
+
* `language` is the primary; `languages` lists the translations that were
|
|
141
|
+
* produced, which may be shorter than what was asked for — a language the
|
|
142
|
+
* model could not render faithfully is dropped rather than stored wrong.
|
|
143
|
+
*/
|
|
121
144
|
addEventListener(
|
|
122
145
|
type: 'assessmentReady',
|
|
123
|
-
listener: (e: CustomEvent<{
|
|
146
|
+
listener: (e: CustomEvent<{
|
|
147
|
+
jobId: string; questionCount: number; language: string; languages: string[];
|
|
148
|
+
}>) => void,
|
|
124
149
|
options?: boolean | AddEventListenerOptions,
|
|
125
150
|
): void;
|
|
126
151
|
addEventListener(
|