@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.
Files changed (33) hide show
  1. package/dist/collector/feedback-collector.d.ts +77 -0
  2. package/dist/collector/feedback-collector.d.ts.map +1 -0
  3. package/dist/collector/feedback-collector.js +119 -0
  4. package/dist/collector/feedback-collector.js.map +1 -0
  5. package/dist/index.d.ts +20 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +18 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/interfaces.d.ts +19 -0
  10. package/dist/interfaces.d.ts.map +1 -0
  11. package/dist/interfaces.js +5 -0
  12. package/dist/interfaces.js.map +1 -0
  13. package/dist/learning/learning-engine.d.ts +96 -0
  14. package/dist/learning/learning-engine.d.ts.map +1 -0
  15. package/dist/learning/learning-engine.js +187 -0
  16. package/dist/learning/learning-engine.js.map +1 -0
  17. package/dist/patterns/pattern-detector.d.ts +88 -0
  18. package/dist/patterns/pattern-detector.d.ts.map +1 -0
  19. package/dist/patterns/pattern-detector.js +211 -0
  20. package/dist/patterns/pattern-detector.js.map +1 -0
  21. package/dist/recommender/adaptive-recommender.d.ts +84 -0
  22. package/dist/recommender/adaptive-recommender.d.ts.map +1 -0
  23. package/dist/recommender/adaptive-recommender.js +155 -0
  24. package/dist/recommender/adaptive-recommender.js.map +1 -0
  25. package/dist/storage/feedback-storage.d.ts +87 -0
  26. package/dist/storage/feedback-storage.d.ts.map +1 -0
  27. package/dist/storage/feedback-storage.js +143 -0
  28. package/dist/storage/feedback-storage.js.map +1 -0
  29. package/dist/types.d.ts +27 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +5 -0
  32. package/dist/types.js.map +1 -0
  33. 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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"}
@@ -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,5 @@
1
+ /**
2
+ * Feedback型定義
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -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
+ }