@nahisaho/katashiro-feedback 0.1.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/dist/collector/feedback-collector.d.ts +77 -0
- package/dist/collector/feedback-collector.d.ts.map +1 -0
- package/dist/collector/feedback-collector.js +119 -0
- package/dist/collector/feedback-collector.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +19 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +5 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/learning/learning-engine.d.ts +96 -0
- package/dist/learning/learning-engine.d.ts.map +1 -0
- package/dist/learning/learning-engine.js +187 -0
- package/dist/learning/learning-engine.js.map +1 -0
- package/dist/patterns/pattern-detector.d.ts +88 -0
- package/dist/patterns/pattern-detector.d.ts.map +1 -0
- package/dist/patterns/pattern-detector.js +211 -0
- package/dist/patterns/pattern-detector.js.map +1 -0
- package/dist/recommender/adaptive-recommender.d.ts +84 -0
- package/dist/recommender/adaptive-recommender.d.ts.map +1 -0
- package/dist/recommender/adaptive-recommender.js +155 -0
- package/dist/recommender/adaptive-recommender.js.map +1 -0
- package/dist/storage/feedback-storage.d.ts +87 -0
- package/dist/storage/feedback-storage.d.ts.map +1 -0
- package/dist/storage/feedback-storage.js +143 -0
- package/dist/storage/feedback-storage.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedbackStorage - フィードバックの永続化
|
|
3
|
+
*
|
|
4
|
+
* フィードバックの保存・読み込み・エクスポート
|
|
5
|
+
*
|
|
6
|
+
* @module @nahisaho/katashiro-feedback
|
|
7
|
+
* @task TSK-051
|
|
8
|
+
*/
|
|
9
|
+
import { ok, err } from '@nahisaho/katashiro-core';
|
|
10
|
+
/**
|
|
11
|
+
* FeedbackStorage
|
|
12
|
+
*
|
|
13
|
+
* Manages feedback persistence
|
|
14
|
+
*/
|
|
15
|
+
export class FeedbackStorage {
|
|
16
|
+
feedbacks = new Map();
|
|
17
|
+
version = '1.0.0';
|
|
18
|
+
/**
|
|
19
|
+
* Save feedback
|
|
20
|
+
*
|
|
21
|
+
* @param feedback - Feedback to save
|
|
22
|
+
* @returns Saved feedback
|
|
23
|
+
*/
|
|
24
|
+
save(feedback) {
|
|
25
|
+
try {
|
|
26
|
+
this.feedbacks.set(feedback.id, feedback);
|
|
27
|
+
return ok(feedback);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load feedback by ID
|
|
35
|
+
*
|
|
36
|
+
* @param id - Feedback ID
|
|
37
|
+
* @returns Feedback or null
|
|
38
|
+
*/
|
|
39
|
+
load(id) {
|
|
40
|
+
try {
|
|
41
|
+
return ok(this.feedbacks.get(id) ?? null);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Delete feedback
|
|
49
|
+
*
|
|
50
|
+
* @param id - Feedback ID
|
|
51
|
+
* @returns Whether deleted
|
|
52
|
+
*/
|
|
53
|
+
delete(id) {
|
|
54
|
+
try {
|
|
55
|
+
return ok(this.feedbacks.delete(id));
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* List feedback with options
|
|
63
|
+
*
|
|
64
|
+
* @param options - List options
|
|
65
|
+
* @returns Feedback list
|
|
66
|
+
*/
|
|
67
|
+
list(options = {}) {
|
|
68
|
+
try {
|
|
69
|
+
let feedbacks = Array.from(this.feedbacks.values());
|
|
70
|
+
// Filter by action
|
|
71
|
+
if (options.action) {
|
|
72
|
+
feedbacks = feedbacks.filter((f) => f.action === options.action);
|
|
73
|
+
}
|
|
74
|
+
// Apply pagination
|
|
75
|
+
const offset = options.offset ?? 0;
|
|
76
|
+
const limit = options.limit ?? feedbacks.length;
|
|
77
|
+
feedbacks = feedbacks.slice(offset, offset + limit);
|
|
78
|
+
return ok(feedbacks);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Export to JSON
|
|
86
|
+
*
|
|
87
|
+
* @returns JSON string
|
|
88
|
+
*/
|
|
89
|
+
exportToJSON() {
|
|
90
|
+
try {
|
|
91
|
+
const data = {
|
|
92
|
+
version: this.version,
|
|
93
|
+
feedbacks: Array.from(this.feedbacks.values()),
|
|
94
|
+
exportedAt: new Date().toISOString(),
|
|
95
|
+
};
|
|
96
|
+
return ok(JSON.stringify(data, null, 2));
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Import from JSON
|
|
104
|
+
*
|
|
105
|
+
* @param json - JSON string
|
|
106
|
+
* @returns Number of imported feedbacks
|
|
107
|
+
*/
|
|
108
|
+
importFromJSON(json) {
|
|
109
|
+
try {
|
|
110
|
+
const data = JSON.parse(json);
|
|
111
|
+
if (!data.feedbacks || !Array.isArray(data.feedbacks)) {
|
|
112
|
+
return err(new Error('Invalid format: feedbacks array required'));
|
|
113
|
+
}
|
|
114
|
+
for (const feedback of data.feedbacks) {
|
|
115
|
+
this.feedbacks.set(feedback.id, feedback);
|
|
116
|
+
}
|
|
117
|
+
return ok(data.feedbacks.length);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get total count
|
|
125
|
+
*
|
|
126
|
+
* @returns Count
|
|
127
|
+
*/
|
|
128
|
+
count() {
|
|
129
|
+
try {
|
|
130
|
+
return ok(this.feedbacks.size);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Clear all feedback
|
|
138
|
+
*/
|
|
139
|
+
clear() {
|
|
140
|
+
this.feedbacks.clear();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=feedback-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-storage.js","sourceRoot":"","sources":["../../src/storage/feedback-storage.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback型定義
|
|
3
|
+
*/
|
|
4
|
+
import type { ID, Timestamp } from '@nahisaho/katashiro-core';
|
|
5
|
+
export type FeedbackAction = 'accept' | 'reject' | 'modify';
|
|
6
|
+
export interface Feedback {
|
|
7
|
+
readonly id: ID;
|
|
8
|
+
readonly action: FeedbackAction;
|
|
9
|
+
readonly rating?: number;
|
|
10
|
+
readonly originalContent: string;
|
|
11
|
+
readonly modifiedContent?: string;
|
|
12
|
+
readonly context?: Record<string, unknown>;
|
|
13
|
+
readonly createdAt: Timestamp;
|
|
14
|
+
}
|
|
15
|
+
export type PatternType = 'success' | 'error' | 'modification';
|
|
16
|
+
export interface Pattern {
|
|
17
|
+
readonly id: ID;
|
|
18
|
+
readonly type: PatternType;
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly description: string;
|
|
21
|
+
readonly confidence: number;
|
|
22
|
+
readonly occurrences: number;
|
|
23
|
+
readonly template?: string;
|
|
24
|
+
readonly createdAt: Timestamp;
|
|
25
|
+
readonly updatedAt: Timestamp;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;AAE/D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nahisaho/katashiro-feedback",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "KATASHIRO Feedback - フィードバック学習パッケージ",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"test": "vitest run"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@nahisaho/katashiro-core": "*"
|
|
24
|
+
},
|
|
25
|
+
"author": "nahisaho",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/nahisaho/katashiro.git",
|
|
30
|
+
"directory": "packages/feedback"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/nahisaho/katashiro#readme",
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/nahisaho/katashiro/issues"
|
|
38
|
+
}
|
|
39
|
+
}
|