claude-alfred 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 (44) hide show
  1. package/README.ja.md +283 -0
  2. package/README.md +283 -0
  3. package/content/hooks/hooks.json +41 -0
  4. package/content/mcp/.mcp.json +12 -0
  5. package/dist/audit-DujZ6YAy.mjs +18 -0
  6. package/dist/cli.mjs +509 -0
  7. package/dist/dispatcher-BzOdcjaa.mjs +93 -0
  8. package/dist/embedder-BshPIMrW.mjs +215 -0
  9. package/dist/epic-CdRKNGvP.mjs +227 -0
  10. package/dist/fts-BDdUbNfM.mjs +195 -0
  11. package/dist/helpers-BsdW4kgn.mjs +94 -0
  12. package/dist/knowledge-CCCixwb8.mjs +156 -0
  13. package/dist/post-tool-qemgso2b.mjs +88 -0
  14. package/dist/postinstall.mjs +49 -0
  15. package/dist/pre-compact-Cmg9kprV.mjs +181 -0
  16. package/dist/project-CpgK3fwQ.mjs +79 -0
  17. package/dist/schema-CcIFwr_0.mjs +289 -0
  18. package/dist/server-DF7CXxKi.mjs +2635 -0
  19. package/dist/server-Dsf47Pd4.mjs +19220 -0
  20. package/dist/session-start-DUYF6E0V.mjs +209 -0
  21. package/dist/store-Clcihees.mjs +338 -0
  22. package/dist/types-C3butmI8.mjs +6823 -0
  23. package/dist/user-prompt-BDeST0mR.mjs +144 -0
  24. package/dist/vectors-DvuAqDeO.mjs +83 -0
  25. package/package.json +46 -0
  26. package/web/dist/assets/activity-UyW12k7Z.js +1 -0
  27. package/web/dist/assets/api-BI8AW-mC.js +1 -0
  28. package/web/dist/assets/dist-BHj_gZG8.js +1 -0
  29. package/web/dist/assets/dist-DDZSXOC-.js +1 -0
  30. package/web/dist/assets/index-B9C85vN2.js +10 -0
  31. package/web/dist/assets/index-bIyYMf1a.css +1 -0
  32. package/web/dist/assets/knowledge-DmvXTX67.js +5 -0
  33. package/web/dist/assets/link-BSgD_zxQ.js +1 -0
  34. package/web/dist/assets/matchContext-CO01nzZ3.js +1 -0
  35. package/web/dist/assets/progress-DBmt_Ww6.js +6 -0
  36. package/web/dist/assets/routes-zEN1XNFl.js +1 -0
  37. package/web/dist/assets/scroll-area-DPCDB42s.js +45 -0
  38. package/web/dist/assets/separator-5sy8HYz5.js +1 -0
  39. package/web/dist/assets/skeleton-D7GRd6oJ.js +1 -0
  40. package/web/dist/assets/tabs-VSkG1f0-.js +1 -0
  41. package/web/dist/assets/tasks-CKNc1U7M.js +1 -0
  42. package/web/dist/assets/tasks._slug-DPzi78wf.js +8 -0
  43. package/web/dist/assets/utils-Dw49HYRP.js +1 -0
  44. package/web/dist/index.html +17 -0
@@ -0,0 +1,289 @@
1
+ const DDL = `
2
+ CREATE TABLE IF NOT EXISTS schema_version (
3
+ version INTEGER NOT NULL
4
+ );
5
+
6
+ CREATE TABLE IF NOT EXISTS knowledge_index (
7
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
8
+ file_path TEXT NOT NULL,
9
+ content_hash TEXT NOT NULL,
10
+ title TEXT NOT NULL,
11
+ content TEXT NOT NULL,
12
+ sub_type TEXT NOT NULL DEFAULT 'general',
13
+ project_remote TEXT DEFAULT '',
14
+ project_path TEXT NOT NULL,
15
+ project_name TEXT NOT NULL DEFAULT '',
16
+ branch TEXT DEFAULT '',
17
+ created_at TEXT NOT NULL,
18
+ updated_at TEXT NOT NULL,
19
+ hit_count INTEGER DEFAULT 0,
20
+ last_accessed TEXT DEFAULT '',
21
+ enabled INTEGER DEFAULT 1,
22
+ UNIQUE(project_remote, project_path, file_path)
23
+ );
24
+
25
+ CREATE INDEX IF NOT EXISTS idx_ki_project ON knowledge_index(project_remote, project_path);
26
+ CREATE INDEX IF NOT EXISTS idx_ki_sub_type ON knowledge_index(sub_type);
27
+ CREATE INDEX IF NOT EXISTS idx_ki_updated ON knowledge_index(updated_at);
28
+
29
+ CREATE VIRTUAL TABLE IF NOT EXISTS knowledge_fts USING fts5(
30
+ title,
31
+ content,
32
+ sub_type,
33
+ content='knowledge_index',
34
+ content_rowid='id'
35
+ );
36
+
37
+ CREATE TRIGGER IF NOT EXISTS ki_fts_ai AFTER INSERT ON knowledge_index BEGIN
38
+ INSERT INTO knowledge_fts(rowid, title, content, sub_type)
39
+ VALUES (new.id, new.title, new.content, new.sub_type);
40
+ END;
41
+ CREATE TRIGGER IF NOT EXISTS ki_fts_ad AFTER DELETE ON knowledge_index BEGIN
42
+ INSERT INTO knowledge_fts(knowledge_fts, rowid, title, content, sub_type)
43
+ VALUES ('delete', old.id, old.title, old.content, old.sub_type);
44
+ END;
45
+ CREATE TRIGGER IF NOT EXISTS ki_fts_au AFTER UPDATE ON knowledge_index BEGIN
46
+ INSERT INTO knowledge_fts(knowledge_fts, rowid, title, content, sub_type)
47
+ VALUES ('delete', old.id, old.title, old.content, old.sub_type);
48
+ INSERT INTO knowledge_fts(rowid, title, content, sub_type)
49
+ VALUES (new.id, new.title, new.content, new.sub_type);
50
+ END;
51
+
52
+ CREATE TABLE IF NOT EXISTS tag_aliases (
53
+ tag TEXT NOT NULL,
54
+ alias TEXT NOT NULL,
55
+ PRIMARY KEY (tag, alias)
56
+ );
57
+
58
+ CREATE TABLE IF NOT EXISTS embeddings (
59
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
60
+ source TEXT NOT NULL,
61
+ source_id INTEGER NOT NULL,
62
+ model TEXT NOT NULL,
63
+ dims INTEGER NOT NULL,
64
+ vector BLOB NOT NULL,
65
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
66
+ UNIQUE (source, source_id)
67
+ );
68
+
69
+ CREATE TABLE IF NOT EXISTS session_links (
70
+ claude_session_id TEXT PRIMARY KEY,
71
+ master_session_id TEXT NOT NULL,
72
+ project_remote TEXT DEFAULT '',
73
+ project_path TEXT NOT NULL DEFAULT '',
74
+ task_slug TEXT NOT NULL DEFAULT '',
75
+ branch TEXT DEFAULT '',
76
+ linked_at TEXT NOT NULL
77
+ );
78
+ CREATE INDEX IF NOT EXISTS idx_session_links_master ON session_links(master_session_id);
79
+ `;
80
+ const TAG_ALIASES = {
81
+ auth: [
82
+ "authentication",
83
+ "login",
84
+ "認証",
85
+ "ログイン"
86
+ ],
87
+ db: [
88
+ "database",
89
+ "sqlite",
90
+ "データベース"
91
+ ],
92
+ api: [
93
+ "endpoint",
94
+ "rest",
95
+ "graphql"
96
+ ],
97
+ test: [
98
+ "testing",
99
+ "テスト",
100
+ "spec"
101
+ ],
102
+ security: [
103
+ "セキュリティ",
104
+ "vulnerability",
105
+ "脆弱性"
106
+ ],
107
+ config: [
108
+ "configuration",
109
+ "settings",
110
+ "設定"
111
+ ],
112
+ deploy: [
113
+ "deployment",
114
+ "デプロイ",
115
+ "release"
116
+ ],
117
+ perf: [
118
+ "performance",
119
+ "パフォーマンス",
120
+ "optimization",
121
+ "最適化"
122
+ ],
123
+ error: [
124
+ "エラー",
125
+ "bug",
126
+ "バグ",
127
+ "failure"
128
+ ],
129
+ hook: [
130
+ "hooks",
131
+ "フック",
132
+ "lifecycle"
133
+ ],
134
+ memory: [
135
+ "メモリ",
136
+ "knowledge",
137
+ "ナレッジ"
138
+ ],
139
+ spec: [
140
+ "specification",
141
+ "仕様",
142
+ "requirement"
143
+ ],
144
+ embed: [
145
+ "embedding",
146
+ "埋め込み",
147
+ "vector",
148
+ "ベクトル"
149
+ ],
150
+ search: [
151
+ "検索",
152
+ "query",
153
+ "クエリ"
154
+ ],
155
+ refactor: [
156
+ "リファクタ",
157
+ "cleanup",
158
+ "restructure"
159
+ ],
160
+ ci: [
161
+ "ci/cd",
162
+ "pipeline",
163
+ "github actions"
164
+ ]
165
+ };
166
+ const LEGACY_TABLES = [
167
+ "records_fts",
168
+ "records",
169
+ "session_links",
170
+ "tag_aliases",
171
+ "docs",
172
+ "docs_fts",
173
+ "crawl_meta",
174
+ "doc_feedback",
175
+ "instincts",
176
+ "patterns",
177
+ "pattern_tags",
178
+ "pattern_files",
179
+ "patterns_fts",
180
+ "alerts",
181
+ "alert_events",
182
+ "suggestion_outcomes",
183
+ "failure_solutions",
184
+ "solution_chains",
185
+ "learned_episodes",
186
+ "feedbacks",
187
+ "coaching_cache",
188
+ "snr_history",
189
+ "signal_outcomes",
190
+ "user_pattern_effectiveness",
191
+ "user_profile",
192
+ "user_preferences",
193
+ "adaptive_baselines",
194
+ "workflow_sequences",
195
+ "file_co_changes",
196
+ "live_session_phases",
197
+ "live_session_files",
198
+ "global_tool_sequences",
199
+ "global_tool_trigrams",
200
+ "tags",
201
+ "preferences",
202
+ "sessions",
203
+ "events",
204
+ "compact_events",
205
+ "decisions",
206
+ "tool_failures"
207
+ ];
208
+ const LEGACY_TRIGGERS = [
209
+ "records_fts_ai",
210
+ "records_fts_ad",
211
+ "records_fts_au",
212
+ "patterns_fts_ai",
213
+ "patterns_fts_ad",
214
+ "patterns_fts_au",
215
+ "decisions_fts_ai",
216
+ "decisions_fts_ad",
217
+ "decisions_fts_au",
218
+ "docs_fts_ai",
219
+ "docs_fts_ad",
220
+ "docs_fts_au",
221
+ "ki_fts_ai",
222
+ "ki_fts_ad",
223
+ "ki_fts_au"
224
+ ];
225
+ const LEGACY_INDEXES = [
226
+ "idx_records_source_type",
227
+ "idx_records_crawled_at",
228
+ "idx_records_sub_type",
229
+ "idx_embeddings_source",
230
+ "idx_docs_source_type",
231
+ "idx_docs_crawled_at",
232
+ "idx_wseq_task",
233
+ "idx_cochange_a",
234
+ "idx_live_phases_session",
235
+ "idx_live_files_session",
236
+ "idx_gts_from",
237
+ "idx_gtt_t1t2",
238
+ "idx_decisions_session",
239
+ "idx_decisions_timestamp",
240
+ "idx_instincts_scope",
241
+ "idx_instincts_domain",
242
+ "idx_instincts_confidence",
243
+ "idx_ki_project",
244
+ "idx_ki_sub_type",
245
+ "idx_ki_updated"
246
+ ];
247
+ const SAFE_IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
248
+ function dropSafe(db, kind, name) {
249
+ if (!SAFE_IDENTIFIER.test(name)) throw new Error(`store: unsafe identifier in DROP ${kind}: "${name}"`);
250
+ db.exec(`DROP ${kind} IF EXISTS ${name}`);
251
+ }
252
+ function seedTagAliases(db) {
253
+ const stmt = db.prepare("INSERT OR IGNORE INTO tag_aliases (tag, alias) VALUES (?, ?)");
254
+ for (const [tag, aliases] of Object.entries(TAG_ALIASES)) for (const alias of aliases) stmt.run(tag, alias);
255
+ }
256
+ function rebuildFromScratch(db) {
257
+ for (const trigger of LEGACY_TRIGGERS) dropSafe(db, "TRIGGER", trigger);
258
+ for (const table of LEGACY_TABLES) dropSafe(db, "TABLE", table);
259
+ for (const table of [
260
+ "knowledge_fts",
261
+ "knowledge_index",
262
+ "embeddings",
263
+ "session_links",
264
+ "tag_aliases",
265
+ "schema_version"
266
+ ]) dropSafe(db, "TABLE", table);
267
+ for (const idx of LEGACY_INDEXES) dropSafe(db, "INDEX", idx);
268
+ db.exec(DDL);
269
+ seedTagAliases(db);
270
+ }
271
+ function setSchemaVersion(db, ver) {
272
+ db.exec("DELETE FROM schema_version");
273
+ db.prepare("INSERT INTO schema_version (version) VALUES (?)").run(ver);
274
+ db.pragma(`user_version = ${ver}`);
275
+ }
276
+ function migrate(db) {
277
+ let current = 0;
278
+ try {
279
+ const row = db.prepare("SELECT version FROM schema_version LIMIT 1").get();
280
+ if (row) current = row.version;
281
+ } catch {}
282
+ if (current === 8) return;
283
+ db.transaction(() => {
284
+ rebuildFromScratch(db);
285
+ setSchemaVersion(db, 8);
286
+ })();
287
+ }
288
+ //#endregion
289
+ export { migrate };