evo-skills 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 (188) hide show
  1. package/.eslintrc.json +36 -0
  2. package/.prettierrc +11 -0
  3. package/README.md +227 -0
  4. package/USER-GUIDE.md +382 -0
  5. package/dist/cli/commands/diff.d.ts +7 -0
  6. package/dist/cli/commands/diff.d.ts.map +1 -0
  7. package/dist/cli/commands/diff.js +126 -0
  8. package/dist/cli/commands/diff.js.map +1 -0
  9. package/dist/cli/commands/freeze.d.ts +12 -0
  10. package/dist/cli/commands/freeze.d.ts.map +1 -0
  11. package/dist/cli/commands/freeze.js +93 -0
  12. package/dist/cli/commands/freeze.js.map +1 -0
  13. package/dist/cli/commands/log.d.ts +7 -0
  14. package/dist/cli/commands/log.d.ts.map +1 -0
  15. package/dist/cli/commands/log.js +76 -0
  16. package/dist/cli/commands/log.js.map +1 -0
  17. package/dist/cli/commands/rollback.d.ts +7 -0
  18. package/dist/cli/commands/rollback.d.ts.map +1 -0
  19. package/dist/cli/commands/rollback.js +92 -0
  20. package/dist/cli/commands/rollback.js.map +1 -0
  21. package/dist/cli/commands/status.d.ts +7 -0
  22. package/dist/cli/commands/status.d.ts.map +1 -0
  23. package/dist/cli/commands/status.js +88 -0
  24. package/dist/cli/commands/status.js.map +1 -0
  25. package/dist/cli/index.d.ts +3 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +25 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/config/defaults.d.ts +6 -0
  30. package/dist/config/defaults.d.ts.map +1 -0
  31. package/dist/config/defaults.js +31 -0
  32. package/dist/config/defaults.js.map +1 -0
  33. package/dist/config/index.d.ts +68 -0
  34. package/dist/config/index.d.ts.map +1 -0
  35. package/dist/config/index.js +195 -0
  36. package/dist/config/index.js.map +1 -0
  37. package/dist/core/evaluator/base-rule.d.ts +50 -0
  38. package/dist/core/evaluator/base-rule.d.ts.map +1 -0
  39. package/dist/core/evaluator/base-rule.js +69 -0
  40. package/dist/core/evaluator/base-rule.js.map +1 -0
  41. package/dist/core/evaluator/index.d.ts +33 -0
  42. package/dist/core/evaluator/index.d.ts.map +1 -0
  43. package/dist/core/evaluator/index.js +74 -0
  44. package/dist/core/evaluator/index.js.map +1 -0
  45. package/dist/core/evaluator/rules/repeated-drift.d.ts +19 -0
  46. package/dist/core/evaluator/rules/repeated-drift.d.ts.map +1 -0
  47. package/dist/core/evaluator/rules/repeated-drift.js +82 -0
  48. package/dist/core/evaluator/rules/repeated-drift.js.map +1 -0
  49. package/dist/core/evaluator/rules/repeated-manual-fix.d.ts +23 -0
  50. package/dist/core/evaluator/rules/repeated-manual-fix.d.ts.map +1 -0
  51. package/dist/core/evaluator/rules/repeated-manual-fix.js +97 -0
  52. package/dist/core/evaluator/rules/repeated-manual-fix.js.map +1 -0
  53. package/dist/core/journal/index.d.ts +76 -0
  54. package/dist/core/journal/index.d.ts.map +1 -0
  55. package/dist/core/journal/index.js +207 -0
  56. package/dist/core/journal/index.js.map +1 -0
  57. package/dist/core/observer/base-observer.d.ts +64 -0
  58. package/dist/core/observer/base-observer.d.ts.map +1 -0
  59. package/dist/core/observer/base-observer.js +142 -0
  60. package/dist/core/observer/base-observer.js.map +1 -0
  61. package/dist/core/observer/codex-observer.d.ts +71 -0
  62. package/dist/core/observer/codex-observer.d.ts.map +1 -0
  63. package/dist/core/observer/codex-observer.js +248 -0
  64. package/dist/core/observer/codex-observer.js.map +1 -0
  65. package/dist/core/observer/index.d.ts +7 -0
  66. package/dist/core/observer/index.d.ts.map +1 -0
  67. package/dist/core/observer/index.js +7 -0
  68. package/dist/core/observer/index.js.map +1 -0
  69. package/dist/core/observer/trace-manager.d.ts +82 -0
  70. package/dist/core/observer/trace-manager.d.ts.map +1 -0
  71. package/dist/core/observer/trace-manager.js +196 -0
  72. package/dist/core/observer/trace-manager.js.map +1 -0
  73. package/dist/core/origin-registry/index.d.ts +59 -0
  74. package/dist/core/origin-registry/index.d.ts.map +1 -0
  75. package/dist/core/origin-registry/index.js +235 -0
  76. package/dist/core/origin-registry/index.js.map +1 -0
  77. package/dist/core/patch-generator/base-strategy.d.ts +35 -0
  78. package/dist/core/patch-generator/base-strategy.d.ts.map +1 -0
  79. package/dist/core/patch-generator/base-strategy.js +55 -0
  80. package/dist/core/patch-generator/base-strategy.js.map +1 -0
  81. package/dist/core/patch-generator/index.d.ts +32 -0
  82. package/dist/core/patch-generator/index.d.ts.map +1 -0
  83. package/dist/core/patch-generator/index.js +101 -0
  84. package/dist/core/patch-generator/index.js.map +1 -0
  85. package/dist/core/patch-generator/strategies/add-fallback.d.ts +11 -0
  86. package/dist/core/patch-generator/strategies/add-fallback.d.ts.map +1 -0
  87. package/dist/core/patch-generator/strategies/add-fallback.js +57 -0
  88. package/dist/core/patch-generator/strategies/add-fallback.js.map +1 -0
  89. package/dist/core/patch-generator/strategies/prune-noise.d.ts +11 -0
  90. package/dist/core/patch-generator/strategies/prune-noise.d.ts.map +1 -0
  91. package/dist/core/patch-generator/strategies/prune-noise.js +48 -0
  92. package/dist/core/patch-generator/strategies/prune-noise.js.map +1 -0
  93. package/dist/core/shadow-manager/index.d.ts +65 -0
  94. package/dist/core/shadow-manager/index.d.ts.map +1 -0
  95. package/dist/core/shadow-manager/index.js +229 -0
  96. package/dist/core/shadow-manager/index.js.map +1 -0
  97. package/dist/core/shadow-registry/index.d.ts +68 -0
  98. package/dist/core/shadow-registry/index.d.ts.map +1 -0
  99. package/dist/core/shadow-registry/index.js +173 -0
  100. package/dist/core/shadow-registry/index.js.map +1 -0
  101. package/dist/daemon/index.d.ts +43 -0
  102. package/dist/daemon/index.d.ts.map +1 -0
  103. package/dist/daemon/index.js +144 -0
  104. package/dist/daemon/index.js.map +1 -0
  105. package/dist/storage/index.d.ts +7 -0
  106. package/dist/storage/index.d.ts.map +1 -0
  107. package/dist/storage/index.js +7 -0
  108. package/dist/storage/index.js.map +1 -0
  109. package/dist/storage/markdown.d.ts +66 -0
  110. package/dist/storage/markdown.d.ts.map +1 -0
  111. package/dist/storage/markdown.js +227 -0
  112. package/dist/storage/markdown.js.map +1 -0
  113. package/dist/storage/ndjson.d.ts +118 -0
  114. package/dist/storage/ndjson.d.ts.map +1 -0
  115. package/dist/storage/ndjson.js +238 -0
  116. package/dist/storage/ndjson.js.map +1 -0
  117. package/dist/storage/sqlite.d.ts +131 -0
  118. package/dist/storage/sqlite.d.ts.map +1 -0
  119. package/dist/storage/sqlite.js +415 -0
  120. package/dist/storage/sqlite.js.map +1 -0
  121. package/dist/types/index.d.ts +158 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/types/index.js +5 -0
  124. package/dist/types/index.js.map +1 -0
  125. package/dist/utils/diff.d.ts +20 -0
  126. package/dist/utils/diff.d.ts.map +1 -0
  127. package/dist/utils/diff.js +47 -0
  128. package/dist/utils/diff.js.map +1 -0
  129. package/dist/utils/hash.d.ts +17 -0
  130. package/dist/utils/hash.d.ts.map +1 -0
  131. package/dist/utils/hash.js +28 -0
  132. package/dist/utils/hash.js.map +1 -0
  133. package/dist/utils/index.d.ts +8 -0
  134. package/dist/utils/index.d.ts.map +1 -0
  135. package/dist/utils/index.js +8 -0
  136. package/dist/utils/index.js.map +1 -0
  137. package/dist/utils/logger.d.ts +11 -0
  138. package/dist/utils/logger.d.ts.map +1 -0
  139. package/dist/utils/logger.js +64 -0
  140. package/dist/utils/logger.js.map +1 -0
  141. package/dist/utils/path.d.ts +67 -0
  142. package/dist/utils/path.d.ts.map +1 -0
  143. package/dist/utils/path.js +115 -0
  144. package/dist/utils/path.js.map +1 -0
  145. package/docs/ENGINEERING_PLAN.md +1065 -0
  146. package/docs/PRD.md +1004 -0
  147. package/docs/PROGRESS.md +523 -0
  148. package/package.json +60 -0
  149. package/src/cli/commands/diff.ts +158 -0
  150. package/src/cli/commands/freeze.ts +108 -0
  151. package/src/cli/commands/log.ts +87 -0
  152. package/src/cli/commands/rollback.ts +99 -0
  153. package/src/cli/commands/status.ts +101 -0
  154. package/src/cli/index.ts +31 -0
  155. package/src/config/defaults.ts +32 -0
  156. package/src/config/index.ts +220 -0
  157. package/src/core/evaluator/base-rule.ts +90 -0
  158. package/src/core/evaluator/index.ts +86 -0
  159. package/src/core/evaluator/rules/repeated-drift.ts +109 -0
  160. package/src/core/evaluator/rules/repeated-manual-fix.ts +129 -0
  161. package/src/core/journal/index.ts +286 -0
  162. package/src/core/observer/base-observer.ts +200 -0
  163. package/src/core/observer/codex-observer.ts +309 -0
  164. package/src/core/observer/index.ts +7 -0
  165. package/src/core/observer/trace-manager.ts +250 -0
  166. package/src/core/origin-registry/index.ts +264 -0
  167. package/src/core/patch-generator/base-strategy.ts +67 -0
  168. package/src/core/patch-generator/index.ts +118 -0
  169. package/src/core/patch-generator/strategies/add-fallback.ts +69 -0
  170. package/src/core/patch-generator/strategies/prune-noise.ts +65 -0
  171. package/src/core/shadow-manager/index.ts +278 -0
  172. package/src/core/shadow-registry/index.ts +200 -0
  173. package/src/daemon/index.ts +174 -0
  174. package/src/storage/index.ts +7 -0
  175. package/src/storage/markdown.ts +267 -0
  176. package/src/storage/ndjson.ts +273 -0
  177. package/src/storage/sqlite.ts +555 -0
  178. package/src/types/index.ts +212 -0
  179. package/src/utils/diff.ts +60 -0
  180. package/src/utils/hash.ts +31 -0
  181. package/src/utils/index.ts +8 -0
  182. package/src/utils/logger.ts +78 -0
  183. package/src/utils/path.ts +129 -0
  184. package/tests/unit/config.test.ts +65 -0
  185. package/tests/unit/path.test.ts +89 -0
  186. package/tests/unit/utils.test.ts +45 -0
  187. package/tsconfig.json +31 -0
  188. package/vitest.config.ts +19 -0
@@ -0,0 +1,238 @@
1
+ import { createReadStream, createWriteStream, existsSync, mkdirSync, appendFileSync } from 'node:fs';
2
+ import { createInterface } from 'node:readline';
3
+ import { join, dirname } from 'node:path';
4
+ import { createChildLogger } from '../utils/logger.js';
5
+ const logger = createChildLogger('ndjson');
6
+ /**
7
+ * NDJSON 读写器
8
+ */
9
+ export class NDJSONReader {
10
+ filePath;
11
+ constructor(filePath) {
12
+ this.filePath = filePath;
13
+ }
14
+ /**
15
+ * 检查文件是否存在
16
+ */
17
+ exists() {
18
+ return existsSync(this.filePath);
19
+ }
20
+ /**
21
+ * 逐行读取并解析
22
+ */
23
+ async *readLines() {
24
+ if (!this.exists()) {
25
+ return;
26
+ }
27
+ const stream = createReadStream(this.filePath, { encoding: 'utf-8' });
28
+ const rl = createInterface({
29
+ input: stream,
30
+ crlfDelay: Infinity,
31
+ });
32
+ let lineNumber = 0;
33
+ for await (const line of rl) {
34
+ lineNumber++;
35
+ if (line.trim() === '')
36
+ continue;
37
+ try {
38
+ const item = JSON.parse(line);
39
+ yield item;
40
+ }
41
+ catch (error) {
42
+ logger.warn(`Failed to parse line ${lineNumber}`, { error, line: line.substring(0, 100) });
43
+ }
44
+ }
45
+ }
46
+ /**
47
+ * 读取所有记录
48
+ */
49
+ async readAll() {
50
+ const records = [];
51
+ for await (const record of this.readLines()) {
52
+ records.push(record);
53
+ }
54
+ return records;
55
+ }
56
+ /**
57
+ * 读取最后 N 条记录
58
+ */
59
+ async readLast(n) {
60
+ const allRecords = await this.readAll();
61
+ return allRecords.slice(-n);
62
+ }
63
+ /**
64
+ * 按条件过滤
65
+ */
66
+ async *filter(predicate) {
67
+ for await (const item of this.readLines()) {
68
+ if (predicate(item)) {
69
+ yield item;
70
+ }
71
+ }
72
+ }
73
+ /**
74
+ * 统计记录数
75
+ */
76
+ async count() {
77
+ let count = 0;
78
+ for await (const _ of this.readLines()) {
79
+ count++;
80
+ }
81
+ return count;
82
+ }
83
+ }
84
+ /**
85
+ * NDJSON 写入器
86
+ */
87
+ export class NDJSONWriter {
88
+ filePath;
89
+ constructor(filePath) {
90
+ this.filePath = filePath;
91
+ this.ensureDirectory();
92
+ }
93
+ /**
94
+ * 确保目录存在
95
+ */
96
+ ensureDirectory() {
97
+ const dir = dirname(this.filePath);
98
+ if (!existsSync(dir)) {
99
+ mkdirSync(dir, { recursive: true });
100
+ }
101
+ }
102
+ /**
103
+ * 追加一条记录
104
+ */
105
+ append(record) {
106
+ const line = JSON.stringify(record) + '\n';
107
+ appendFileSync(this.filePath, line, 'utf-8');
108
+ }
109
+ /**
110
+ * 批量追加记录
111
+ */
112
+ appendBatch(records) {
113
+ const lines = records.map((r) => JSON.stringify(r)).join('\n') + '\n';
114
+ appendFileSync(this.filePath, lines, 'utf-8');
115
+ }
116
+ /**
117
+ * 清空文件
118
+ */
119
+ clear() {
120
+ const stream = createWriteStream(this.filePath, { flags: 'w' });
121
+ stream.end();
122
+ }
123
+ /**
124
+ * 获取文件路径
125
+ */
126
+ getPath() {
127
+ return this.filePath;
128
+ }
129
+ }
130
+ /**
131
+ * Trace NDJSON 存储
132
+ */
133
+ export class TraceStore {
134
+ writer;
135
+ reader;
136
+ constructor(tracesDir, sessionId) {
137
+ const filePath = join(tracesDir, `${sessionId}.ndjson`);
138
+ this.writer = new NDJSONWriter(filePath);
139
+ this.reader = new NDJSONReader(filePath);
140
+ }
141
+ /**
142
+ * 记录 trace
143
+ */
144
+ append(trace) {
145
+ this.writer.append(trace);
146
+ logger.debug('Trace appended', { trace_id: trace.trace_id, event_type: trace.event_type });
147
+ }
148
+ /**
149
+ * 读取所有 traces
150
+ */
151
+ async readAll() {
152
+ return this.reader.readAll();
153
+ }
154
+ /**
155
+ * 读取 session 的 traces
156
+ */
157
+ async readBySession(sessionId) {
158
+ const traces = [];
159
+ for await (const trace of this.reader.filter((t) => t.session_id === sessionId)) {
160
+ traces.push(trace);
161
+ }
162
+ return traces;
163
+ }
164
+ /**
165
+ * 读取最近的 traces
166
+ */
167
+ async readRecent(count) {
168
+ return this.reader.readLast(count);
169
+ }
170
+ }
171
+ /**
172
+ * Journal NDJSON 存储
173
+ */
174
+ export class JournalStore {
175
+ writer;
176
+ reader;
177
+ constructor(journalPath) {
178
+ this.writer = new NDJSONWriter(journalPath);
179
+ this.reader = new NDJSONReader(journalPath);
180
+ }
181
+ /**
182
+ * 记录演化
183
+ */
184
+ append(record) {
185
+ this.writer.append(record);
186
+ logger.info('Evolution record appended', {
187
+ shadow_id: record.shadow_id,
188
+ revision: record.revision,
189
+ change_type: record.change_type,
190
+ });
191
+ }
192
+ /**
193
+ * 读取所有记录
194
+ */
195
+ async readAll() {
196
+ return this.reader.readAll();
197
+ }
198
+ /**
199
+ * 读取指定 revision 范围的记录
200
+ */
201
+ async readRange(fromRevision, toRevision) {
202
+ const records = [];
203
+ for await (const record of this.reader.filter((r) => r.revision >= fromRevision && r.revision <= toRevision)) {
204
+ records.push(record);
205
+ }
206
+ return records;
207
+ }
208
+ /**
209
+ * 读取最后 N 条记录
210
+ */
211
+ async readLast(n) {
212
+ return this.reader.readLast(n);
213
+ }
214
+ /**
215
+ * 获取最新 revision
216
+ */
217
+ async getLatestRevision() {
218
+ const records = await this.reader.readLast(1);
219
+ return records.length > 0 ? records[0].revision : 0;
220
+ }
221
+ /**
222
+ * 获取指定 revision 的记录
223
+ */
224
+ async getByRevision(revision) {
225
+ for await (const record of this.reader.filter((r) => r.revision === revision)) {
226
+ return record;
227
+ }
228
+ return null;
229
+ }
230
+ }
231
+ // 导出工厂函数
232
+ export function createTraceStore(tracesDir, sessionId) {
233
+ return new TraceStore(tracesDir, sessionId);
234
+ }
235
+ export function createJournalStore(journalPath) {
236
+ return new JournalStore(journalPath);
237
+ }
238
+ //# sourceMappingURL=ndjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../src/storage/ndjson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import type { ProjectSkillShadow, ShadowStatus, Session, RuntimeType } from '../types/index.js';
2
+ /**
3
+ * SQLite 存储管理器
4
+ */
5
+ export declare class SQLiteStorage {
6
+ private db;
7
+ private dbPath;
8
+ constructor(dbPath: string);
9
+ /**
10
+ * 初始化数据库
11
+ */
12
+ init(): Promise<void>;
13
+ /**
14
+ * 保存数据库到文件
15
+ */
16
+ private save;
17
+ /**
18
+ * 创建表结构
19
+ */
20
+ private createTables;
21
+ /**
22
+ * 关闭数据库连接
23
+ */
24
+ close(): void;
25
+ /**
26
+ * 插入或更新 shadow skill
27
+ */
28
+ upsertShadowSkill(shadow: ProjectSkillShadow): void;
29
+ /**
30
+ * 获取 shadow skill
31
+ */
32
+ getShadowSkill(projectId: string, skillId: string): ProjectSkillShadow | null;
33
+ /**
34
+ * 列出项目的所有 shadow skills
35
+ */
36
+ listShadowSkills(projectId: string): ProjectSkillShadow[];
37
+ /**
38
+ * 更新 shadow skill 状态
39
+ */
40
+ updateShadowStatus(shadowId: string, status: ShadowStatus): void;
41
+ /**
42
+ * 更新 shadow skill revision
43
+ */
44
+ updateShadowRevision(shadowId: string, revision: number): void;
45
+ /**
46
+ * 创建 session
47
+ */
48
+ createSession(session: Session): void;
49
+ /**
50
+ * 获取 session
51
+ */
52
+ getSession(sessionId: string): Session | null;
53
+ /**
54
+ * 更新 session trace 计数
55
+ */
56
+ incrementSessionTraceCount(sessionId: string): void;
57
+ /**
58
+ * 添加 trace 索引记录
59
+ */
60
+ addTraceIndex(trace: {
61
+ trace_id: string;
62
+ session_id: string;
63
+ runtime: RuntimeType;
64
+ event_type: string;
65
+ timestamp: string;
66
+ status: string;
67
+ }): void;
68
+ /**
69
+ * 获取 session 的 trace 索引
70
+ */
71
+ getTraceIndexBySession(sessionId: string, limit?: number): Array<{
72
+ trace_id: string;
73
+ event_type: string;
74
+ timestamp: string;
75
+ status: string;
76
+ }>;
77
+ /**
78
+ * 添加演化记录索引
79
+ */
80
+ addEvolutionRecordIndex(record: {
81
+ shadow_id: string;
82
+ revision: number;
83
+ timestamp: string;
84
+ change_type: string;
85
+ source_sessions: string[];
86
+ confidence: number;
87
+ }): void;
88
+ /**
89
+ * 获取 shadow 的演化记录索引
90
+ */
91
+ getEvolutionRecordIndex(shadowId: string, limit?: number): Array<{
92
+ id: number;
93
+ revision: number;
94
+ timestamp: string;
95
+ change_type: string;
96
+ source_sessions: string[];
97
+ confidence: number;
98
+ }>;
99
+ /**
100
+ * 添加 snapshot 记录
101
+ */
102
+ addSnapshot(snapshot: {
103
+ shadow_id: string;
104
+ revision: number;
105
+ timestamp: string;
106
+ file_path: string;
107
+ content_hash: string;
108
+ }): void;
109
+ /**
110
+ * 获取 shadow 的 snapshots
111
+ */
112
+ getSnapshots(shadowId: string): Array<{
113
+ id: number;
114
+ revision: number;
115
+ timestamp: string;
116
+ file_path: string;
117
+ content_hash: string;
118
+ }>;
119
+ /**
120
+ * 获取最新的 snapshot
121
+ */
122
+ getLatestSnapshot(shadowId: string): {
123
+ id: number;
124
+ revision: number;
125
+ timestamp: string;
126
+ file_path: string;
127
+ content_hash: string;
128
+ } | null;
129
+ }
130
+ export declare function createSQLiteStorage(dbPath: string): SQLiteStorage;
131
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}