add-skill-kit 3.2.2 → 3.2.4

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 (72) hide show
  1. package/bin/lib/commands/install.js +67 -45
  2. package/lib/agent-cli/README.md +21 -0
  3. package/lib/agent-cli/bin/ag-smart.js +158 -0
  4. package/lib/agent-cli/lib/audit.js +154 -0
  5. package/lib/agent-cli/lib/audit.test.js +100 -0
  6. package/lib/agent-cli/lib/auto-learn.js +319 -0
  7. package/lib/agent-cli/lib/auto_preview.py +148 -0
  8. package/lib/agent-cli/lib/backup.js +138 -0
  9. package/lib/agent-cli/lib/backup.test.js +78 -0
  10. package/lib/agent-cli/lib/checklist.py +222 -0
  11. package/lib/agent-cli/lib/cognitive-lesson.js +476 -0
  12. package/lib/agent-cli/lib/completion.js +149 -0
  13. package/lib/agent-cli/lib/config.js +35 -0
  14. package/lib/agent-cli/lib/eslint-fix.js +238 -0
  15. package/lib/agent-cli/lib/evolution-signal.js +215 -0
  16. package/lib/agent-cli/lib/export.js +86 -0
  17. package/lib/agent-cli/lib/export.test.js +65 -0
  18. package/lib/agent-cli/lib/fix.js +337 -0
  19. package/lib/agent-cli/lib/fix.test.js +80 -0
  20. package/lib/agent-cli/lib/gemini-export.js +83 -0
  21. package/lib/agent-cli/lib/generate-registry.js +42 -0
  22. package/lib/agent-cli/lib/hooks/install-hooks.js +152 -0
  23. package/lib/agent-cli/lib/hooks/lint-learn.js +172 -0
  24. package/lib/agent-cli/lib/ignore.js +116 -0
  25. package/lib/agent-cli/lib/ignore.test.js +58 -0
  26. package/lib/agent-cli/lib/init.js +124 -0
  27. package/lib/agent-cli/lib/learn.js +255 -0
  28. package/lib/agent-cli/lib/learn.test.js +70 -0
  29. package/lib/agent-cli/lib/migrate-to-v4.js +322 -0
  30. package/lib/agent-cli/lib/proposals.js +199 -0
  31. package/lib/agent-cli/lib/proposals.test.js +56 -0
  32. package/lib/agent-cli/lib/recall.js +820 -0
  33. package/lib/agent-cli/lib/recall.test.js +107 -0
  34. package/lib/agent-cli/lib/selfevolution-bridge.js +167 -0
  35. package/lib/agent-cli/lib/session_manager.py +120 -0
  36. package/lib/agent-cli/lib/settings.js +203 -0
  37. package/lib/agent-cli/lib/skill-learn.js +296 -0
  38. package/lib/agent-cli/lib/stats.js +132 -0
  39. package/lib/agent-cli/lib/stats.test.js +94 -0
  40. package/lib/agent-cli/lib/types.js +33 -0
  41. package/lib/agent-cli/lib/ui/audit-ui.js +146 -0
  42. package/lib/agent-cli/lib/ui/backup-ui.js +107 -0
  43. package/lib/agent-cli/lib/ui/clack-helpers.js +317 -0
  44. package/lib/agent-cli/lib/ui/common.js +83 -0
  45. package/lib/agent-cli/lib/ui/completion-ui.js +126 -0
  46. package/lib/agent-cli/lib/ui/custom-select.js +69 -0
  47. package/lib/agent-cli/lib/ui/dashboard-ui.js +123 -0
  48. package/lib/agent-cli/lib/ui/evolution-signals-ui.js +107 -0
  49. package/lib/agent-cli/lib/ui/export-ui.js +94 -0
  50. package/lib/agent-cli/lib/ui/fix-all-ui.js +191 -0
  51. package/lib/agent-cli/lib/ui/help-ui.js +49 -0
  52. package/lib/agent-cli/lib/ui/index.js +169 -0
  53. package/lib/agent-cli/lib/ui/init-ui.js +56 -0
  54. package/lib/agent-cli/lib/ui/knowledge-ui.js +55 -0
  55. package/lib/agent-cli/lib/ui/learn-ui.js +706 -0
  56. package/lib/agent-cli/lib/ui/lessons-ui.js +148 -0
  57. package/lib/agent-cli/lib/ui/pretty.js +145 -0
  58. package/lib/agent-cli/lib/ui/proposals-ui.js +99 -0
  59. package/lib/agent-cli/lib/ui/recall-ui.js +342 -0
  60. package/lib/agent-cli/lib/ui/routing-demo.js +79 -0
  61. package/lib/agent-cli/lib/ui/routing-ui.js +325 -0
  62. package/lib/agent-cli/lib/ui/settings-ui.js +381 -0
  63. package/lib/agent-cli/lib/ui/stats-ui.js +123 -0
  64. package/lib/agent-cli/lib/ui/watch-ui.js +236 -0
  65. package/lib/agent-cli/lib/verify_all.py +327 -0
  66. package/lib/agent-cli/lib/watcher.js +181 -0
  67. package/lib/agent-cli/lib/watcher.test.js +85 -0
  68. package/lib/agent-cli/package.json +51 -0
  69. package/lib/agentskillskit-cli/README.md +21 -0
  70. package/lib/agentskillskit-cli/ag-smart.js +158 -0
  71. package/lib/agentskillskit-cli/package.json +51 -0
  72. package/package.json +11 -6
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Main Menu UI - Interactive CLI interface
3
+ */
4
+ import { showIntro, showActionMenu, theme } from "./clack-helpers.js";
5
+ import { loadSettings } from "../settings.js";
6
+
7
+ import { fileURLToPath } from "url";
8
+ import { dirname, join } from "path";
9
+
10
+ // Import UI modules
11
+ import { runLearnUI } from "./learn-ui.js";
12
+ import { runStatsUI } from "./stats-ui.js";
13
+ import { runRecallUI } from "./recall-ui.js";
14
+ import { runFixAllUI } from "./fix-all-ui.js";
15
+ import { runSettingsUI } from "./settings-ui.js";
16
+ import { runBackupUI } from "./backup-ui.js";
17
+ import { runExportUI } from "./export-ui.js";
18
+ import { runProposalsUI } from "./proposals-ui.js";
19
+ import { runCompletionUI } from "./completion-ui.js";
20
+ import { runInitUI } from "./init-ui.js";
21
+ // Removed: audit-ui and watch-ui (audit redundant with recall, watch kept as CLI-only)
22
+ import { runLessonsUI } from "./lessons-ui.js";
23
+ import { runEvolutionSignalsUI } from "./evolution-signals-ui.js";
24
+ import { runKnowledgeUI } from "./knowledge-ui.js";
25
+ import { runHelpUI } from "./help-ui.js";
26
+ import { runDashboardUI } from "./dashboard-ui.js";
27
+ import routingUI from "./routing-ui.js";
28
+ import * as p from "@clack/prompts";
29
+ import { VERSION } from "../config.js";
30
+
31
+ // ============================================================================
32
+ // MAIN MENU
33
+ // ============================================================================
34
+
35
+ /**
36
+ * Show main interactive menu
37
+ */
38
+ export async function showMainMenu() {
39
+ while (true) {
40
+ showIntro(`🧠 Agent Skill Kit v${VERSION}`);
41
+
42
+ // Load settings to check auto-learning status
43
+ const settings = loadSettings();
44
+ const autoLearningEnabled = settings.autoLearn !== false; // Default to true
45
+
46
+ // Build menu options dynamically
47
+ const menuOptions = [
48
+ // ═════════════════════════════════════════════
49
+ // 🔍 SCANNING & ACTIONS
50
+ // ═════════════════════════════════════════════
51
+ { value: "scanall", label: "🔎 Scan All", hint: "Check & fix violations" },
52
+
53
+ // ═════════════════════════════════════════════
54
+ // 📚 LEARNING & KNOWLEDGE
55
+ // ═════════════════════════════════════════════
56
+ ];
57
+
58
+ // Only show Learn if auto-learning is OFF
59
+ if (!autoLearningEnabled) {
60
+ menuOptions.push({ value: "learn", label: "📝 Learn", hint: "Teach new pattern" });
61
+ }
62
+
63
+ menuOptions.push(
64
+ { value: "lessons", label: "📚 Lessons", hint: "View & manage" },
65
+
66
+ // ═════════════════════════════════════════════
67
+ // 📊 ANALYTICS
68
+ // ═════════════════════════════════════════════
69
+ { value: "stats", label: "💡 Insights", hint: "Stats & signals" },
70
+
71
+ // ═════════════════════════════════════════════
72
+ // ⚙️ SETTINGS & MANAGEMENT
73
+ // ═════════════════════════════════════════════
74
+ { value: "settings", label: "⚙️ Settings", hint: "Configure behavior" },
75
+ { value: "backup", label: "💾 Backup", hint: "Data management" },
76
+
77
+ // ═════════════════════════════════════════════
78
+ // 📊 DASHBOARD
79
+ // ═════════════════════════════════════════════
80
+ { value: "dashboard", label: "📊 Dashboard", hint: "Web UI for Auto-Learn" },
81
+
82
+ { value: "help", label: "📖 Help", hint: "Visual guide" },
83
+ { value: "exit", label: "👋 Exit" }
84
+ );
85
+
86
+ const action = await p.select({
87
+ message: "What would you like to do?",
88
+ options: menuOptions
89
+ });
90
+
91
+ if (p.isCancel(action) || action === "exit") {
92
+ p.outro("Goodbye! 👋");
93
+ process.exit(0);
94
+ }
95
+
96
+ // Execute action directly (no submenus)
97
+ switch (action) {
98
+ case "learn":
99
+ await runLearnUI();
100
+ break;
101
+ case "lessons":
102
+ await runLessonsUI();
103
+ break;
104
+ case "scanall":
105
+ await runRecallUI(true); // Auto-scan mode with fix option
106
+ break;
107
+ case "stats":
108
+ await runStatsUI(); // Now includes signals
109
+ break;
110
+ case "settings":
111
+ await runSettingsUI();
112
+ break;
113
+ case "backup":
114
+ await runBackupUI();
115
+ break;
116
+ case "help":
117
+ await runHelpUI();
118
+ break;
119
+ case "dashboard":
120
+ await runDashboardUI();
121
+ break;
122
+ }
123
+
124
+ // After action completes, loop back to main menu
125
+ }
126
+ }
127
+
128
+ // ============================================================================
129
+ // ROUTING UI
130
+ // ============================================================================
131
+
132
+ async function runRoutingUI() {
133
+ const request = await p.text({
134
+ message: "Enter a request to test agent routing:",
135
+ placeholder: "e.g., Fix the login authentication bug",
136
+ validate: (value) => {
137
+ if (!value || value.trim().length === 0) {
138
+ return "Please enter a request";
139
+ }
140
+ }
141
+ });
142
+
143
+ if (p.isCancel(request)) {
144
+ p.cancel("Cancelled");
145
+ return;
146
+ }
147
+
148
+ // Use routing-ui to analyze and show routing
149
+ routingUI.analyzeAndShowRouting(request);
150
+
151
+ // Wait for user to see result
152
+ await p.text({
153
+ message: "Press Enter to continue...",
154
+ placeholder: "",
155
+ initialValue: ""
156
+ });
157
+ }
158
+
159
+
160
+ // ============================================================================
161
+ // CLI ENTRY
162
+ // ============================================================================
163
+
164
+ // Run if executed directly
165
+ if (process.argv[1].includes("index.js") || process.argv[1].includes("ui")) {
166
+ showMainMenu().catch(console.error);
167
+ }
168
+
169
+ export default showMainMenu;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Init UI - Project initialization wizard
3
+ */
4
+ import * as p from "@clack/prompts";
5
+ import pc from "picocolors";
6
+ import { detectProjectType, initProject, getDefaultIgnorePatterns } from "../init.js";
7
+
8
+ /**
9
+ * Interactive init wizard
10
+ */
11
+ export async function runInitUI() {
12
+ const projectType = detectProjectType();
13
+
14
+ p.intro(`Project Initialization`);
15
+ p.note(`Detected project type: ${pc.cyan(projectType)}`, "Detection");
16
+
17
+ const confirm = await p.confirm({
18
+ message: `Initialize Agent Skill Kit for this ${projectType} project?`
19
+ });
20
+
21
+ if (p.isCancel(confirm) || !confirm) {
22
+ p.cancel("Initialization cancelled.");
23
+ return;
24
+ }
25
+
26
+ const s = p.spinner();
27
+ s.start("Initializing...");
28
+
29
+ try {
30
+ const result = initProject();
31
+ s.stop("Done!");
32
+
33
+ if (result.success) {
34
+ const patterns = getDefaultIgnorePatterns(projectType);
35
+
36
+ p.note(
37
+ `Created files:\n` +
38
+ `• ${pc.cyan(".agent/knowledge/lessons-learned.yaml")}\n` +
39
+ `• ${pc.cyan(".agentignore")} (${patterns.length} patterns)\n\n` +
40
+ `Next steps:\n` +
41
+ `1. Run ${pc.green("agent learn")} to teach patterns\n` +
42
+ `2. Run ${pc.green("agent recall .")} to scan code\n` +
43
+ `3. Add ${pc.yellow("agent-hook")} to pre-commit (optional)`,
44
+ pc.green(result.message)
45
+ );
46
+ } else {
47
+ p.note(result.message, pc.yellow("Skipped"));
48
+ }
49
+
50
+ } catch (e) {
51
+ s.stop("Failed!");
52
+ p.note(`Error: ${e.message}`, pc.red("Error"));
53
+ }
54
+ }
55
+
56
+ export default runInitUI;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Knowledge UI - Unified Lessons + Signals Manager
3
+ */
4
+ import * as p from "@clack/prompts";
5
+ import pc from "picocolors";
6
+ import { runLessonsUI } from "./lessons-ui.js";
7
+ import { runEvolutionSignalsUI } from "./evolution-signals-ui.js";
8
+
9
+ /**
10
+ * Show unified Knowledge management interface
11
+ */
12
+ export async function runKnowledgeUI() {
13
+ // Clear terminal và reset cursor
14
+ process.stdout.write('\x1Bc');
15
+
16
+ p.intro(pc.cyan("📚 Knowledge Manager"));
17
+
18
+ while (true) {
19
+ const action = await p.select({
20
+ message: "What would you like to do?",
21
+ options: [
22
+ {
23
+ value: "lessons",
24
+ label: "📖 Learned Patterns",
25
+ hint: "View & manage lessons"
26
+ },
27
+ {
28
+ value: "signals",
29
+ label: "📡 Pending Review",
30
+ hint: "Evolution signals queue"
31
+ },
32
+ {
33
+ value: "back",
34
+ label: "← Back",
35
+ hint: "Return to main menu"
36
+ }
37
+ ]
38
+ });
39
+
40
+ if (p.isCancel(action) || action === "back") {
41
+ return;
42
+ }
43
+
44
+ switch (action) {
45
+ case "lessons":
46
+ await runLessonsUI();
47
+ break;
48
+ case "signals":
49
+ await runEvolutionSignalsUI();
50
+ break;
51
+ }
52
+ }
53
+ }
54
+
55
+ export default runKnowledgeUI;