@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.
@@ -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.2",
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
  *
@@ -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,EACnB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;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;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM7D;;;;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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/sdk/client.ts"],"names":[],"mappings":"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"}
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":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;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,GACnB,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAA"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;;AAEH,mCAAqD;AAA5C,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA"}
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
- /** Optional event timestamp (ms). Defaults to `Date.now()` on server. */
19
- timestamp?: number;
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/sdk/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/sdk/types.ts"],"names":[],"mappings":"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"}