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.
- package/bin/lib/commands/install.js +67 -45
- package/lib/agent-cli/README.md +21 -0
- package/lib/agent-cli/bin/ag-smart.js +158 -0
- package/lib/agent-cli/lib/audit.js +154 -0
- package/lib/agent-cli/lib/audit.test.js +100 -0
- package/lib/agent-cli/lib/auto-learn.js +319 -0
- package/lib/agent-cli/lib/auto_preview.py +148 -0
- package/lib/agent-cli/lib/backup.js +138 -0
- package/lib/agent-cli/lib/backup.test.js +78 -0
- package/lib/agent-cli/lib/checklist.py +222 -0
- package/lib/agent-cli/lib/cognitive-lesson.js +476 -0
- package/lib/agent-cli/lib/completion.js +149 -0
- package/lib/agent-cli/lib/config.js +35 -0
- package/lib/agent-cli/lib/eslint-fix.js +238 -0
- package/lib/agent-cli/lib/evolution-signal.js +215 -0
- package/lib/agent-cli/lib/export.js +86 -0
- package/lib/agent-cli/lib/export.test.js +65 -0
- package/lib/agent-cli/lib/fix.js +337 -0
- package/lib/agent-cli/lib/fix.test.js +80 -0
- package/lib/agent-cli/lib/gemini-export.js +83 -0
- package/lib/agent-cli/lib/generate-registry.js +42 -0
- package/lib/agent-cli/lib/hooks/install-hooks.js +152 -0
- package/lib/agent-cli/lib/hooks/lint-learn.js +172 -0
- package/lib/agent-cli/lib/ignore.js +116 -0
- package/lib/agent-cli/lib/ignore.test.js +58 -0
- package/lib/agent-cli/lib/init.js +124 -0
- package/lib/agent-cli/lib/learn.js +255 -0
- package/lib/agent-cli/lib/learn.test.js +70 -0
- package/lib/agent-cli/lib/migrate-to-v4.js +322 -0
- package/lib/agent-cli/lib/proposals.js +199 -0
- package/lib/agent-cli/lib/proposals.test.js +56 -0
- package/lib/agent-cli/lib/recall.js +820 -0
- package/lib/agent-cli/lib/recall.test.js +107 -0
- package/lib/agent-cli/lib/selfevolution-bridge.js +167 -0
- package/lib/agent-cli/lib/session_manager.py +120 -0
- package/lib/agent-cli/lib/settings.js +203 -0
- package/lib/agent-cli/lib/skill-learn.js +296 -0
- package/lib/agent-cli/lib/stats.js +132 -0
- package/lib/agent-cli/lib/stats.test.js +94 -0
- package/lib/agent-cli/lib/types.js +33 -0
- package/lib/agent-cli/lib/ui/audit-ui.js +146 -0
- package/lib/agent-cli/lib/ui/backup-ui.js +107 -0
- package/lib/agent-cli/lib/ui/clack-helpers.js +317 -0
- package/lib/agent-cli/lib/ui/common.js +83 -0
- package/lib/agent-cli/lib/ui/completion-ui.js +126 -0
- package/lib/agent-cli/lib/ui/custom-select.js +69 -0
- package/lib/agent-cli/lib/ui/dashboard-ui.js +123 -0
- package/lib/agent-cli/lib/ui/evolution-signals-ui.js +107 -0
- package/lib/agent-cli/lib/ui/export-ui.js +94 -0
- package/lib/agent-cli/lib/ui/fix-all-ui.js +191 -0
- package/lib/agent-cli/lib/ui/help-ui.js +49 -0
- package/lib/agent-cli/lib/ui/index.js +169 -0
- package/lib/agent-cli/lib/ui/init-ui.js +56 -0
- package/lib/agent-cli/lib/ui/knowledge-ui.js +55 -0
- package/lib/agent-cli/lib/ui/learn-ui.js +706 -0
- package/lib/agent-cli/lib/ui/lessons-ui.js +148 -0
- package/lib/agent-cli/lib/ui/pretty.js +145 -0
- package/lib/agent-cli/lib/ui/proposals-ui.js +99 -0
- package/lib/agent-cli/lib/ui/recall-ui.js +342 -0
- package/lib/agent-cli/lib/ui/routing-demo.js +79 -0
- package/lib/agent-cli/lib/ui/routing-ui.js +325 -0
- package/lib/agent-cli/lib/ui/settings-ui.js +381 -0
- package/lib/agent-cli/lib/ui/stats-ui.js +123 -0
- package/lib/agent-cli/lib/ui/watch-ui.js +236 -0
- package/lib/agent-cli/lib/verify_all.py +327 -0
- package/lib/agent-cli/lib/watcher.js +181 -0
- package/lib/agent-cli/lib/watcher.test.js +85 -0
- package/lib/agent-cli/package.json +51 -0
- package/lib/agentskillskit-cli/README.md +21 -0
- package/lib/agentskillskit-cli/ag-smart.js +158 -0
- package/lib/agentskillskit-cli/package.json +51 -0
- 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;
|