@more-ink/irt-edge 2.1.2 → 2.1.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.
- package/CHANGELOG.md +108 -99
- package/README.md +526 -526
- package/examples/sdk-usage.ts +130 -130
- package/package.json +53 -53
- package/sdk/client.d.ts +19 -2
- package/sdk/client.d.ts.map +1 -1
- package/sdk/client.js +36 -1
- package/sdk/client.js.map +1 -1
- package/sdk/index.d.ts +5 -3
- package/sdk/index.d.ts.map +1 -1
- package/sdk/index.js +4 -2
- package/sdk/index.js.map +1 -1
- package/sdk/types.d.ts +42 -2
- package/sdk/types.d.ts.map +1 -1
package/examples/sdk-usage.ts
CHANGED
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example usage of the @more-ink/irt-edge SDK
|
|
3
|
-
*
|
|
4
|
-
* This demonstrates how frontend applications can consume the IRT Edge API,
|
|
5
|
-
* including type-safe skill identifiers.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { IrtClient } from '../sdk/index'
|
|
9
|
-
|
|
10
|
-
// Define your app's skill types for compile-time type safety
|
|
11
|
-
type AppSkills = 'math-algebra' | 'math-geometry' | 'reading' | 'writing'
|
|
12
|
-
|
|
13
|
-
async function main() {
|
|
14
|
-
// Initialize the client with type-safe skills
|
|
15
|
-
const client = new IrtClient<AppSkills>({
|
|
16
|
-
baseUrl: 'http://localhost:9000',
|
|
17
|
-
headers: {
|
|
18
|
-
// Add any authentication headers here if needed
|
|
19
|
-
// 'Authorization': 'Bearer YOUR_TOKEN'
|
|
20
|
-
},
|
|
21
|
-
timeout: 10000, // 10 seconds
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
// 1. Check API health
|
|
26
|
-
console.log('=== Health Check ===')
|
|
27
|
-
const health = await client.health()
|
|
28
|
-
console.log('API Status:', health)
|
|
29
|
-
console.log()
|
|
30
|
-
|
|
31
|
-
// 2. Record an answer and get the next item
|
|
32
|
-
console.log('=== Record Answer & Get Next Item ===')
|
|
33
|
-
const answerResult = await client.recordAnswer({
|
|
34
|
-
userId: 'demo-user-001',
|
|
35
|
-
skillId: 'math-algebra',
|
|
36
|
-
itemId: 'question-42',
|
|
37
|
-
score: 0.8, // 80% correct
|
|
38
|
-
timestamp: Date.now(),
|
|
39
|
-
// Optional: override default update/selection options
|
|
40
|
-
updateOptions: {
|
|
41
|
-
thetaLR: 0.05,
|
|
42
|
-
aLR: 0.001,
|
|
43
|
-
bLR: 0.01,
|
|
44
|
-
},
|
|
45
|
-
selectionOptions: {
|
|
46
|
-
topKRandomize: 5,
|
|
47
|
-
explorationChance: 0.1,
|
|
48
|
-
},
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
console.log('Updated Ability (theta):', answerResult.theta.toFixed(3))
|
|
52
|
-
console.log('Standard Error (SE):', answerResult.se.toFixed(3))
|
|
53
|
-
console.log('Next Item:', answerResult.nextItem)
|
|
54
|
-
console.log()
|
|
55
|
-
|
|
56
|
-
// 3. Record multiple skill scores for a single multi-skill item
|
|
57
|
-
console.log('=== Record Multi-Skill Answer ===')
|
|
58
|
-
const multiResult = await client.recordMultiSkillAnswers({
|
|
59
|
-
userId: 'demo-user-001',
|
|
60
|
-
itemId: 'passage-77',
|
|
61
|
-
timestamp: Date.now(),
|
|
62
|
-
skillScores: [
|
|
63
|
-
{ skillId: 'math-algebra', score: 0.7 },
|
|
64
|
-
{ skillId: 'math-geometry', score: 0.45 },
|
|
65
|
-
],
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
multiResult.results.forEach((entry) => {
|
|
69
|
-
console.log(
|
|
70
|
-
`Skill ${entry.skillId}: theta=${entry.theta.toFixed(3)} (SE=${entry.se.toFixed(3)})`
|
|
71
|
-
)
|
|
72
|
-
})
|
|
73
|
-
console.log()
|
|
74
|
-
|
|
75
|
-
// 4. Get current user state
|
|
76
|
-
console.log('=== Get User State ===')
|
|
77
|
-
const userState = await client.getUserState('demo-user-001', 'math-algebra')
|
|
78
|
-
console.log('Current Theta:', userState.user.theta.toFixed(3))
|
|
79
|
-
console.log('Information Sum:', userState.user.infoSum.toFixed(3))
|
|
80
|
-
console.log('Standard Error:', userState.se.toFixed(3))
|
|
81
|
-
console.log()
|
|
82
|
-
|
|
83
|
-
// 5. Get all skill states for a user
|
|
84
|
-
console.log('=== Get All User Skills ===')
|
|
85
|
-
const allUserStates = await client.getUserStates('demo-user-001')
|
|
86
|
-
console.log(`User has ${allUserStates.count} skill(s):`)
|
|
87
|
-
allUserStates.skills.forEach(skill => {
|
|
88
|
-
console.log(` - ${skill.user.skillId}: theta=${skill.user.theta.toFixed(3)}, se=${skill.se.toFixed(3)}`)
|
|
89
|
-
})
|
|
90
|
-
console.log()
|
|
91
|
-
|
|
92
|
-
// 6. Select next item without recording a response
|
|
93
|
-
console.log('=== Select Next Item (without answer) ===')
|
|
94
|
-
const nextItem = await client.selectNextItem({
|
|
95
|
-
userId: 'demo-user-001',
|
|
96
|
-
skillId: 'math-algebra',
|
|
97
|
-
selectionOptions: {
|
|
98
|
-
topKRandomize: 3,
|
|
99
|
-
explorationChance: 0.15,
|
|
100
|
-
},
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
console.log('User Theta:', nextItem.user?.theta.toFixed(3))
|
|
104
|
-
console.log('Recommended Item:', nextItem.nextItem)
|
|
105
|
-
console.log()
|
|
106
|
-
|
|
107
|
-
// 7. Get item state
|
|
108
|
-
if (nextItem.nextItem) {
|
|
109
|
-
console.log('=== Get Item State ===')
|
|
110
|
-
const itemState = await client.getItemState(
|
|
111
|
-
nextItem.nextItem.id,
|
|
112
|
-
'math-algebra'
|
|
113
|
-
)
|
|
114
|
-
console.log('Item Parameters:')
|
|
115
|
-
console.log(' - Discrimination (a):', itemState.a.toFixed(3))
|
|
116
|
-
console.log(' - Difficulty (b):', itemState.b.toFixed(3))
|
|
117
|
-
console.log(' - Times Seen:', itemState.timesSeen)
|
|
118
|
-
console.log()
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
console.log('✅ All operations completed successfully!')
|
|
122
|
-
|
|
123
|
-
} catch (error) {
|
|
124
|
-
console.error('❌ Error:', error instanceof Error ? error.message : error)
|
|
125
|
-
process.exit(1)
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// Run the example
|
|
130
|
-
main()
|
|
1
|
+
/**
|
|
2
|
+
* Example usage of the @more-ink/irt-edge SDK
|
|
3
|
+
*
|
|
4
|
+
* This demonstrates how frontend applications can consume the IRT Edge API,
|
|
5
|
+
* including type-safe skill identifiers.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { IrtClient } from '../sdk/index'
|
|
9
|
+
|
|
10
|
+
// Define your app's skill types for compile-time type safety
|
|
11
|
+
type AppSkills = 'math-algebra' | 'math-geometry' | 'reading' | 'writing'
|
|
12
|
+
|
|
13
|
+
async function main() {
|
|
14
|
+
// Initialize the client with type-safe skills
|
|
15
|
+
const client = new IrtClient<AppSkills>({
|
|
16
|
+
baseUrl: 'http://localhost:9000',
|
|
17
|
+
headers: {
|
|
18
|
+
// Add any authentication headers here if needed
|
|
19
|
+
// 'Authorization': 'Bearer YOUR_TOKEN'
|
|
20
|
+
},
|
|
21
|
+
timeout: 10000, // 10 seconds
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// 1. Check API health
|
|
26
|
+
console.log('=== Health Check ===')
|
|
27
|
+
const health = await client.health()
|
|
28
|
+
console.log('API Status:', health)
|
|
29
|
+
console.log()
|
|
30
|
+
|
|
31
|
+
// 2. Record an answer and get the next item
|
|
32
|
+
console.log('=== Record Answer & Get Next Item ===')
|
|
33
|
+
const answerResult = await client.recordAnswer({
|
|
34
|
+
userId: 'demo-user-001',
|
|
35
|
+
skillId: 'math-algebra',
|
|
36
|
+
itemId: 'question-42',
|
|
37
|
+
score: 0.8, // 80% correct
|
|
38
|
+
timestamp: Date.now(),
|
|
39
|
+
// Optional: override default update/selection options
|
|
40
|
+
updateOptions: {
|
|
41
|
+
thetaLR: 0.05,
|
|
42
|
+
aLR: 0.001,
|
|
43
|
+
bLR: 0.01,
|
|
44
|
+
},
|
|
45
|
+
selectionOptions: {
|
|
46
|
+
topKRandomize: 5,
|
|
47
|
+
explorationChance: 0.1,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
console.log('Updated Ability (theta):', answerResult.theta.toFixed(3))
|
|
52
|
+
console.log('Standard Error (SE):', answerResult.se.toFixed(3))
|
|
53
|
+
console.log('Next Item:', answerResult.nextItem)
|
|
54
|
+
console.log()
|
|
55
|
+
|
|
56
|
+
// 3. Record multiple skill scores for a single multi-skill item
|
|
57
|
+
console.log('=== Record Multi-Skill Answer ===')
|
|
58
|
+
const multiResult = await client.recordMultiSkillAnswers({
|
|
59
|
+
userId: 'demo-user-001',
|
|
60
|
+
itemId: 'passage-77',
|
|
61
|
+
timestamp: Date.now(),
|
|
62
|
+
skillScores: [
|
|
63
|
+
{ skillId: 'math-algebra', score: 0.7 },
|
|
64
|
+
{ skillId: 'math-geometry', score: 0.45 },
|
|
65
|
+
],
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
multiResult.results.forEach((entry) => {
|
|
69
|
+
console.log(
|
|
70
|
+
`Skill ${entry.skillId}: theta=${entry.theta.toFixed(3)} (SE=${entry.se.toFixed(3)})`
|
|
71
|
+
)
|
|
72
|
+
})
|
|
73
|
+
console.log()
|
|
74
|
+
|
|
75
|
+
// 4. Get current user state
|
|
76
|
+
console.log('=== Get User State ===')
|
|
77
|
+
const userState = await client.getUserState('demo-user-001', 'math-algebra')
|
|
78
|
+
console.log('Current Theta:', userState.user.theta.toFixed(3))
|
|
79
|
+
console.log('Information Sum:', userState.user.infoSum.toFixed(3))
|
|
80
|
+
console.log('Standard Error:', userState.se.toFixed(3))
|
|
81
|
+
console.log()
|
|
82
|
+
|
|
83
|
+
// 5. Get all skill states for a user
|
|
84
|
+
console.log('=== Get All User Skills ===')
|
|
85
|
+
const allUserStates = await client.getUserStates('demo-user-001')
|
|
86
|
+
console.log(`User has ${allUserStates.count} skill(s):`)
|
|
87
|
+
allUserStates.skills.forEach(skill => {
|
|
88
|
+
console.log(` - ${skill.user.skillId}: theta=${skill.user.theta.toFixed(3)}, se=${skill.se.toFixed(3)}`)
|
|
89
|
+
})
|
|
90
|
+
console.log()
|
|
91
|
+
|
|
92
|
+
// 6. Select next item without recording a response
|
|
93
|
+
console.log('=== Select Next Item (without answer) ===')
|
|
94
|
+
const nextItem = await client.selectNextItem({
|
|
95
|
+
userId: 'demo-user-001',
|
|
96
|
+
skillId: 'math-algebra',
|
|
97
|
+
selectionOptions: {
|
|
98
|
+
topKRandomize: 3,
|
|
99
|
+
explorationChance: 0.15,
|
|
100
|
+
},
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
console.log('User Theta:', nextItem.user?.theta.toFixed(3))
|
|
104
|
+
console.log('Recommended Item:', nextItem.nextItem)
|
|
105
|
+
console.log()
|
|
106
|
+
|
|
107
|
+
// 7. Get item state
|
|
108
|
+
if (nextItem.nextItem) {
|
|
109
|
+
console.log('=== Get Item State ===')
|
|
110
|
+
const itemState = await client.getItemState(
|
|
111
|
+
nextItem.nextItem.id,
|
|
112
|
+
'math-algebra'
|
|
113
|
+
)
|
|
114
|
+
console.log('Item Parameters:')
|
|
115
|
+
console.log(' - Discrimination (a):', itemState.a.toFixed(3))
|
|
116
|
+
console.log(' - Difficulty (b):', itemState.b.toFixed(3))
|
|
117
|
+
console.log(' - Times Seen:', itemState.timesSeen)
|
|
118
|
+
console.log()
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
console.log('✅ All operations completed successfully!')
|
|
122
|
+
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.error('❌ Error:', error instanceof Error ? error.message : error)
|
|
125
|
+
process.exit(1)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Run the example
|
|
130
|
+
main()
|
package/package.json
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@more-ink/irt-edge",
|
|
3
|
-
"version": "2.1.
|
|
4
|
-
"description": "IRT Edge API client SDK for JavaScript/TypeScript frontends.",
|
|
5
|
-
"main": "sdk/index.js",
|
|
6
|
-
"types": "sdk/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./sdk/index.d.ts",
|
|
10
|
-
"import": "./sdk/index.js",
|
|
11
|
-
"require": "./sdk/index.js"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"sdk",
|
|
16
|
-
"README.md",
|
|
17
|
-
"CHANGELOG.md",
|
|
18
|
-
"examples"
|
|
19
|
-
],
|
|
20
|
-
"scripts": {
|
|
21
|
-
"build": "bash scripts/build.sh",
|
|
22
|
-
"build:sdk": "tsc -p tsconfig.sdk.json",
|
|
23
|
-
"start": "node dist/index.js",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
-
"test:watch": "vitest watch",
|
|
26
|
-
"lint": "echo \"Add ESLint config\" && exit 0",
|
|
27
|
-
"format": "echo \"Add Prettier config\" && exit 0",
|
|
28
|
-
"dev": "tsx watch --require dotenv/config src/index.ts",
|
|
29
|
-
"seed": "tsx src/seed.ts",
|
|
30
|
-
"deploy": "npm run build && npm run layer:deps && tsx scripts/deploy.ts",
|
|
31
|
-
"cost": "npx cost-of-modules --less --no-install",
|
|
32
|
-
"layer:clean": "rm -rf .layer",
|
|
33
|
-
"layer:deps": "bash scripts/layer-deps.sh"
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"@hono/node-server": "^1.19.6",
|
|
37
|
-
"@more-ink/irt-core": "^1.2.2",
|
|
38
|
-
"@prisma/adapter-pg": "^7.1.0",
|
|
39
|
-
"@prisma/client": "^7.1.0",
|
|
40
|
-
"dayjs": "^1.11.19",
|
|
41
|
-
"dotenv": "^16.6.1",
|
|
42
|
-
"hono": "^4.10.7",
|
|
43
|
-
"ioredis": "^5.8.2",
|
|
44
|
-
"tslib": "^2.8.1",
|
|
45
|
-
"undici": "^7.0.1"
|
|
46
|
-
},
|
|
47
|
-
"devDependencies": {
|
|
48
|
-
"@larksuiteoapi/node-sdk": "^1.55.0",
|
|
49
|
-
"@upstash/redis": "^1.35.7",
|
|
50
|
-
"fc-deploy": "^1.2.9",
|
|
51
|
-
"prisma": "^7.1.0"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@more-ink/irt-edge",
|
|
3
|
+
"version": "2.1.3",
|
|
4
|
+
"description": "IRT Edge API client SDK for JavaScript/TypeScript frontends.",
|
|
5
|
+
"main": "sdk/index.js",
|
|
6
|
+
"types": "sdk/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./sdk/index.d.ts",
|
|
10
|
+
"import": "./sdk/index.js",
|
|
11
|
+
"require": "./sdk/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"sdk",
|
|
16
|
+
"README.md",
|
|
17
|
+
"CHANGELOG.md",
|
|
18
|
+
"examples"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "bash scripts/build.sh",
|
|
22
|
+
"build:sdk": "tsc -p tsconfig.sdk.json",
|
|
23
|
+
"start": "node dist/index.js",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:watch": "vitest watch",
|
|
26
|
+
"lint": "echo \"Add ESLint config\" && exit 0",
|
|
27
|
+
"format": "echo \"Add Prettier config\" && exit 0",
|
|
28
|
+
"dev": "tsx watch --require dotenv/config src/index.ts",
|
|
29
|
+
"seed": "tsx src/seed.ts",
|
|
30
|
+
"deploy": "npm run build && npm run layer:deps && tsx scripts/deploy.ts",
|
|
31
|
+
"cost": "npx cost-of-modules --less --no-install",
|
|
32
|
+
"layer:clean": "rm -rf .layer",
|
|
33
|
+
"layer:deps": "bash scripts/layer-deps.sh"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@hono/node-server": "^1.19.6",
|
|
37
|
+
"@more-ink/irt-core": "^1.2.2",
|
|
38
|
+
"@prisma/adapter-pg": "^7.1.0",
|
|
39
|
+
"@prisma/client": "^7.1.0",
|
|
40
|
+
"dayjs": "^1.11.19",
|
|
41
|
+
"dotenv": "^16.6.1",
|
|
42
|
+
"hono": "^4.10.7",
|
|
43
|
+
"ioredis": "^5.8.2",
|
|
44
|
+
"tslib": "^2.8.1",
|
|
45
|
+
"undici": "^7.0.1"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@larksuiteoapi/node-sdk": "^1.55.0",
|
|
49
|
+
"@upstash/redis": "^1.35.7",
|
|
50
|
+
"fc-deploy": "^1.2.9",
|
|
51
|
+
"prisma": "^7.1.0"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/sdk/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IrtClientConfig, RecordAnswerRequest, RecordAnswerResponse, RecordAnswerOnlyResponse, RecordMultiSkillAnswersRequest, RecordMultiSkillAnswersResponse, SelectNextItemRequest, SelectNextItemResponse, UserStateResponse, UserStatesResponse, ItemStateResponse, ItemStatesResponse, HealthResponse, DeleteUserResponse, DeleteItemResponse } from './types';
|
|
1
|
+
import type { IrtClientConfig, RecordAnswerRequest, RecordAnswerResponse, RecordAnswerOnlyResponse, RecordMultiSkillAnswersRequest, RecordMultiSkillAnswersResponse, SelectNextItemRequest, SelectNextItemResponse, UserStateResponse, UserStatesResponse, ItemStateResponse, ItemStatesResponse, HealthResponse, DeleteUserResponse, DeleteItemResponse, BulkUpdateEvent, BulkUpdateResponse, ResetUserResponse, ResetItemResponse, BulkUpdateRequest } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* IRT Edge API Client
|
|
4
4
|
*
|
|
@@ -25,7 +25,8 @@ import type { IrtClientConfig, RecordAnswerRequest, RecordAnswerResponse, Record
|
|
|
25
25
|
* userId: 'user123',
|
|
26
26
|
* skillId: 'grammar', // ✅ Type-checked
|
|
27
27
|
* itemId: 'item456',
|
|
28
|
-
* score: 0.8
|
|
28
|
+
* score: 0.8,
|
|
29
|
+
* timestamp: Date.now(),
|
|
29
30
|
* })
|
|
30
31
|
*
|
|
31
32
|
* console.log('Updated theta:', result.theta)
|
|
@@ -106,6 +107,10 @@ export declare class IrtClient<TSkillId = string> {
|
|
|
106
107
|
* @returns Deletion result
|
|
107
108
|
*/
|
|
108
109
|
deleteUser(userId: string): Promise<DeleteUserResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* Reset a user and all associated skill states in Redis.
|
|
112
|
+
*/
|
|
113
|
+
resetUser(userId: string): Promise<ResetUserResponse>;
|
|
109
114
|
/**
|
|
110
115
|
* Delete an item and all associated skill calibrations.
|
|
111
116
|
*
|
|
@@ -113,6 +118,18 @@ export declare class IrtClient<TSkillId = string> {
|
|
|
113
118
|
* @returns Deletion result
|
|
114
119
|
*/
|
|
115
120
|
deleteItem(itemId: string): Promise<DeleteItemResponse>;
|
|
121
|
+
/**
|
|
122
|
+
* Reset an item and all associated skill calibrations in Redis.
|
|
123
|
+
*/
|
|
124
|
+
resetItem(itemId: string): Promise<ResetItemResponse>;
|
|
125
|
+
/**
|
|
126
|
+
* Bulk update user skills (user-only persistence).
|
|
127
|
+
*/
|
|
128
|
+
bulkUpdateUser(userId: string, events: BulkUpdateEvent<TSkillId>[], updateOptions?: BulkUpdateRequest<TSkillId>['updateOptions']): Promise<BulkUpdateResponse>;
|
|
129
|
+
/**
|
|
130
|
+
* Bulk update item parameters (item-only persistence).
|
|
131
|
+
*/
|
|
132
|
+
bulkUpdateItem(itemId: string, events: BulkUpdateEvent<TSkillId>[], updateOptions?: BulkUpdateRequest<TSkillId>['updateOptions']): Promise<BulkUpdateResponse>;
|
|
116
133
|
/**
|
|
117
134
|
* Check API health status
|
|
118
135
|
*
|
package/sdk/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EAEd,kBAAkB,EAClB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EAEd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,SAAS,CAAC,QAAQ,GAAG,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,MAAM,EAAE,eAAe;IASnC;;OAEG;YACW,OAAO;IAgDrB;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAOlG;;;;;OAKG;IACG,uBAAuB,CAC3B,MAAM,EAAE,8BAA8B,CAAC,QAAQ,CAAC,GAC/C,OAAO,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IAOrD;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAO1G;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAOxG;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAI3F;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAI1E;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAI3F;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAI1E;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM7D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM3D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM7D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM3D;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,EACnC,aAAa,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,GAC3D,OAAO,CAAC,kBAAkB,CAAC;IAO9B;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,EACnC,aAAa,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,GAC3D,OAAO,CAAC,kBAAkB,CAAC;IAO9B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;CAGxC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,CAE/F"}
|
package/sdk/client.js
CHANGED
|
@@ -28,7 +28,8 @@ exports.createIrtClient = createIrtClient;
|
|
|
28
28
|
* userId: 'user123',
|
|
29
29
|
* skillId: 'grammar', // ✅ Type-checked
|
|
30
30
|
* itemId: 'item456',
|
|
31
|
-
* score: 0.8
|
|
31
|
+
* score: 0.8,
|
|
32
|
+
* timestamp: Date.now(),
|
|
32
33
|
* })
|
|
33
34
|
*
|
|
34
35
|
* console.log('Updated theta:', result.theta)
|
|
@@ -184,6 +185,14 @@ class IrtClient {
|
|
|
184
185
|
method: 'DELETE',
|
|
185
186
|
});
|
|
186
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Reset a user and all associated skill states in Redis.
|
|
190
|
+
*/
|
|
191
|
+
async resetUser(userId) {
|
|
192
|
+
return this.request(`/api/irt/users/${encodeURIComponent(userId)}/reset`, {
|
|
193
|
+
method: 'POST',
|
|
194
|
+
});
|
|
195
|
+
}
|
|
187
196
|
/**
|
|
188
197
|
* Delete an item and all associated skill calibrations.
|
|
189
198
|
*
|
|
@@ -195,6 +204,32 @@ class IrtClient {
|
|
|
195
204
|
method: 'DELETE',
|
|
196
205
|
});
|
|
197
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Reset an item and all associated skill calibrations in Redis.
|
|
209
|
+
*/
|
|
210
|
+
async resetItem(itemId) {
|
|
211
|
+
return this.request(`/api/irt/items/${encodeURIComponent(itemId)}/reset`, {
|
|
212
|
+
method: 'POST',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Bulk update user skills (user-only persistence).
|
|
217
|
+
*/
|
|
218
|
+
async bulkUpdateUser(userId, events, updateOptions) {
|
|
219
|
+
return this.request(`/api/irt/bulk-update-user/${encodeURIComponent(userId)}`, {
|
|
220
|
+
method: 'POST',
|
|
221
|
+
body: JSON.stringify({ events, updateOptions }),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Bulk update item parameters (item-only persistence).
|
|
226
|
+
*/
|
|
227
|
+
async bulkUpdateItem(itemId, events, updateOptions) {
|
|
228
|
+
return this.request(`/api/irt/bulk-update-item/${encodeURIComponent(itemId)}`, {
|
|
229
|
+
method: 'POST',
|
|
230
|
+
body: JSON.stringify({ events, updateOptions }),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
198
233
|
/**
|
|
199
234
|
* Check API health status
|
|
200
235
|
*
|
package/sdk/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/sdk/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/sdk/client.ts"],"names":[],"mappings":"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"}
|
package/sdk/index.d.ts
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
* userId: 'user123',
|
|
18
18
|
* skillId: 'math',
|
|
19
19
|
* itemId: 'item456',
|
|
20
|
-
* score: 0.8
|
|
20
|
+
* score: 0.8,
|
|
21
|
+
* timestamp: Date.now(),
|
|
21
22
|
* })
|
|
22
23
|
* ```
|
|
23
24
|
*
|
|
@@ -36,11 +37,12 @@
|
|
|
36
37
|
* userId: 'user123',
|
|
37
38
|
* skillId: 'grammar', // ✅ Type-checked at compile time
|
|
38
39
|
* itemId: 'item456',
|
|
39
|
-
* score: 0.8
|
|
40
|
+
* score: 0.8,
|
|
41
|
+
* timestamp: Date.now(),
|
|
40
42
|
* })
|
|
41
43
|
* ```
|
|
42
44
|
*/
|
|
43
45
|
export { IrtClient, createIrtClient } from './client';
|
|
44
|
-
export type { IrtClientConfig, RecordAnswerRequest, RecordAnswerResponse, RecordAnswerOnlyResponse, RecordMultiSkillAnswersRequest, RecordMultiSkillAnswersResponse, SelectNextItemRequest, SelectNextItemResponse, UserStateResponse, UserStatesResponse, ItemStateResponse, ItemStatesResponse, HealthResponse, ApiResponse, GetUserStateRequest, GetUserStatesRequest, GetItemStateRequest, GetItemStatesRequest, DeleteUserResponse, DeleteItemResponse, } from './types';
|
|
46
|
+
export type { IrtClientConfig, RecordAnswerRequest, RecordAnswerResponse, RecordAnswerOnlyResponse, RecordMultiSkillAnswersRequest, RecordMultiSkillAnswersResponse, SelectNextItemRequest, SelectNextItemResponse, UserStateResponse, UserStatesResponse, ItemStateResponse, ItemStatesResponse, HealthResponse, ApiResponse, GetUserStateRequest, GetUserStatesRequest, GetItemStateRequest, GetItemStatesRequest, DeleteUserResponse, DeleteItemResponse, ResetUserResponse, ResetItemResponse, BulkUpdateEvent, BulkUpdateRequest, BulkUpdateResponse, } from './types';
|
|
45
47
|
export type { UserSkillState, ItemWithMetadata, UpdateOptions, NextItemOptions, } from '@more-ink/irt-core';
|
|
46
48
|
//# sourceMappingURL=index.d.ts.map
|
package/sdk/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAA"}
|
package/sdk/index.js
CHANGED
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
* userId: 'user123',
|
|
19
19
|
* skillId: 'math',
|
|
20
20
|
* itemId: 'item456',
|
|
21
|
-
* score: 0.8
|
|
21
|
+
* score: 0.8,
|
|
22
|
+
* timestamp: Date.now(),
|
|
22
23
|
* })
|
|
23
24
|
* ```
|
|
24
25
|
*
|
|
@@ -37,7 +38,8 @@
|
|
|
37
38
|
* userId: 'user123',
|
|
38
39
|
* skillId: 'grammar', // ✅ Type-checked at compile time
|
|
39
40
|
* itemId: 'item456',
|
|
40
|
-
* score: 0.8
|
|
41
|
+
* score: 0.8,
|
|
42
|
+
* timestamp: Date.now(),
|
|
41
43
|
* })
|
|
42
44
|
* ```
|
|
43
45
|
*/
|
package/sdk/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;;;AAEH,mCAAqD;AAA5C,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA"}
|
package/sdk/types.d.ts
CHANGED
|
@@ -15,13 +15,25 @@ export interface RecordAnswerRequest<TSkillId = string> {
|
|
|
15
15
|
itemId: string;
|
|
16
16
|
/** Observed performance score in [0, 1] or scaled equivalent. */
|
|
17
17
|
score: number;
|
|
18
|
-
/**
|
|
19
|
-
timestamp
|
|
18
|
+
/** Event timestamp (ms). */
|
|
19
|
+
timestamp: number;
|
|
20
20
|
/** Optional overrides for the IRT update (learning rate, clamps, etc.). */
|
|
21
21
|
updateOptions?: Partial<UpdateOptions>;
|
|
22
22
|
/** Optional overrides for the follow-up item selection call. */
|
|
23
23
|
selectionOptions?: Partial<NextItemOptions>;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Event payload for bulk update operations.
|
|
27
|
+
* Matches the core fields of RecordAnswerRequest.
|
|
28
|
+
*/
|
|
29
|
+
export type BulkUpdateEvent<TSkillId = string> = Pick<RecordAnswerRequest<TSkillId>, 'userId' | 'itemId' | 'skillId' | 'score' | 'timestamp'>;
|
|
30
|
+
/**
|
|
31
|
+
* Request payload for bulk update operations.
|
|
32
|
+
*/
|
|
33
|
+
export interface BulkUpdateRequest<TSkillId = string> {
|
|
34
|
+
events: BulkUpdateEvent<TSkillId>[];
|
|
35
|
+
updateOptions?: Partial<UpdateOptions>;
|
|
36
|
+
}
|
|
25
37
|
/**
|
|
26
38
|
* Payload for recording multiple skill responses tied to the same item interaction.
|
|
27
39
|
*/
|
|
@@ -189,6 +201,34 @@ export interface DeleteItemResponse {
|
|
|
189
201
|
/** Indicates whether the delete call succeeded. */
|
|
190
202
|
deleted: boolean;
|
|
191
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Response payload returned when resetting a user.
|
|
206
|
+
*/
|
|
207
|
+
export interface ResetUserResponse {
|
|
208
|
+
userId: string;
|
|
209
|
+
deleted: boolean;
|
|
210
|
+
skills: number;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Response payload returned when resetting an item.
|
|
214
|
+
*/
|
|
215
|
+
export interface ResetItemResponse {
|
|
216
|
+
itemId: string;
|
|
217
|
+
deleted: boolean;
|
|
218
|
+
skills: number;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Response payload returned after bulk update operations.
|
|
222
|
+
*/
|
|
223
|
+
export interface BulkUpdateResponse {
|
|
224
|
+
processed: number;
|
|
225
|
+
succeeded: number;
|
|
226
|
+
failed: number;
|
|
227
|
+
errors: Array<{
|
|
228
|
+
index: number;
|
|
229
|
+
reason: string;
|
|
230
|
+
}>;
|
|
231
|
+
}
|
|
192
232
|
/**
|
|
193
233
|
* Simple health check response from the Edge service.
|
|
194
234
|
*/
|
package/sdk/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,oBAAoB,CAAA;AAM3B;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,MAAM;IACpD,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,EAAE,QAAQ,CAAA;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,oBAAoB,CAAA;AAM3B;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,MAAM;IACpD,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,EAAE,QAAQ,CAAA;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACtC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAC5C;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,QAAQ,GAAG,MAAM,IAAI,IAAI,CACnD,mBAAmB,CAAC,QAAQ,CAAC,EAC7B,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CACxD,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,MAAM;IAClD,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B,CAAC,QAAQ,GAAG,MAAM;IAC/D,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACtC,0DAA0D;IAC1D,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,QAAQ,GAAG,MAAM;IACtD,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,EAAE,QAAQ,CAAA;IACjB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,MAAM;IACpD,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,OAAO,EAAE,QAAQ,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,MAAM;IACpD,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,OAAO,EAAE,QAAQ,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,8DAA8D;AAC9D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,QAAQ,GAAG,MAAM;IACrD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAA;IACV,mEAAmE;IACnE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC3C,iEAAiE;IACjE,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IACrC,yCAAyC;IACzC,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,QAAQ,GAAG,MAAM;IACzD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAA;IACV,iEAAiE;IACjE,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IACrC,yCAAyC;IACzC,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B,CAAC,QAAQ,GAAG,MAAM;IAChE,wDAAwD;IACxD,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,GAAG,MAAM;IACvD,oDAAoD;IACpD,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,MAAM;IAClD,4BAA4B;IAC5B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC9B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,GAAG,MAAM;IACnD,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAE,SAAQ,gBAAgB,CAAC,QAAQ,CAAC;CAAI;AAE5F;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,GAAG,MAAM;IACnD,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAA;IACpC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
|