@quanvo99/ai-rules 0.1.4 → 0.1.5

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/dist/cli/commands/generate-questions.d.ts +7 -0
  2. package/dist/cli/commands/generate-questions.d.ts.map +1 -0
  3. package/dist/cli/commands/generate-questions.js +120 -0
  4. package/dist/cli/commands/generate-questions.js.map +1 -0
  5. package/dist/cli/commands/init.d.ts.map +1 -1
  6. package/dist/cli/commands/init.js +45 -0
  7. package/dist/cli/commands/init.js.map +1 -1
  8. package/dist/cli/lib/files.d.ts +8 -0
  9. package/dist/cli/lib/files.d.ts.map +1 -1
  10. package/dist/cli/lib/files.js +19 -0
  11. package/dist/cli/lib/files.js.map +1 -1
  12. package/dist/cli/lib/github.d.ts +9 -0
  13. package/dist/cli/lib/github.d.ts.map +1 -1
  14. package/dist/cli/lib/github.js +20 -0
  15. package/dist/cli/lib/github.js.map +1 -1
  16. package/dist/cli/lib/ollama-client.d.ts +66 -0
  17. package/dist/cli/lib/ollama-client.d.ts.map +1 -0
  18. package/dist/cli/lib/ollama-client.js +198 -0
  19. package/dist/cli/lib/ollama-client.js.map +1 -0
  20. package/dist/cli/lib/question-prompt.d.ts +37 -0
  21. package/dist/cli/lib/question-prompt.d.ts.map +1 -0
  22. package/dist/cli/lib/question-prompt.js +204 -0
  23. package/dist/cli/lib/question-prompt.js.map +1 -0
  24. package/dist/cli/lib/question-schema.d.ts +84 -0
  25. package/dist/cli/lib/question-schema.d.ts.map +1 -0
  26. package/dist/cli/lib/question-schema.js +135 -0
  27. package/dist/cli/lib/question-schema.js.map +1 -0
  28. package/dist/cli/lib/question-types.d.ts +72 -0
  29. package/dist/cli/lib/question-types.d.ts.map +1 -0
  30. package/dist/cli/lib/question-types.js +28 -0
  31. package/dist/cli/lib/question-types.js.map +1 -0
  32. package/dist/cli/lib/types.d.ts +2 -1
  33. package/dist/cli/lib/types.d.ts.map +1 -1
  34. package/dist/cli/lib/types.js +1 -0
  35. package/dist/cli/lib/types.js.map +1 -1
  36. package/dist/lib/question-types.d.ts +69 -0
  37. package/dist/lib/question-types.d.ts.map +1 -0
  38. package/dist/lib/question-types.js +3 -0
  39. package/dist/lib/question-types.js.map +1 -0
  40. package/dist/server/types.d.ts +47 -1
  41. package/dist/server/types.d.ts.map +1 -1
  42. package/dist/server/types.js +2 -1
  43. package/dist/server/types.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Question generation script for AI rules
4
+ * Generates questions using local LLM (Ollama) and validates with Zod
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=generate-questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-questions.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate-questions.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Question generation script for AI rules
5
+ * Generates questions using local LLM (Ollama) and validates with Zod
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const commander_1 = require("commander");
15
+ const ollama_client_1 = require("../lib/ollama-client");
16
+ const question_prompt_1 = require("../lib/question-prompt");
17
+ const question_schema_1 = require("../lib/question-schema");
18
+ /**
19
+ * Ensures the suggested_questions directory exists
20
+ */
21
+ function ensureSuggestedQuestionsDir() {
22
+ const dir = (0, node_path_1.join)(process.cwd(), "suggested_questions");
23
+ if (!(0, node_fs_1.existsSync)(dir)) {
24
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
25
+ console.log(chalk_1.default.gray("Created suggested_questions directory"));
26
+ }
27
+ }
28
+ /**
29
+ * Writes questions to file with pretty formatting
30
+ * @param questions - Questions to write
31
+ * @param ruleId - Rule ID for filename
32
+ * @param customOutput - Custom output path (optional)
33
+ */
34
+ function writeQuestionsFile(questions, ruleId, customOutput) {
35
+ const filename = customOutput || `${ruleId}.json`;
36
+ const filepath = customOutput ? (0, node_path_1.join)(process.cwd(), filename) : (0, node_path_1.join)(process.cwd(), "suggested_questions", filename);
37
+ const jsonContent = JSON.stringify(questions, null, 2);
38
+ (0, node_fs_1.writeFileSync)(filepath, jsonContent, "utf-8");
39
+ console.log(chalk_1.default.green(`✅ Questions written to: ${filepath}`));
40
+ }
41
+ /**
42
+ * Main function for question generation
43
+ */
44
+ async function generateQuestions(rulePath, options) {
45
+ // Extract rule ID from path for display and filename
46
+ const ruleId = rulePath.split("/").pop() || rulePath;
47
+ console.log(chalk_1.default.blue(`🔍 Generating questions for rule: ${ruleId}`));
48
+ console.log(chalk_1.default.gray(`Using model: ${options.model}`));
49
+ try {
50
+ // Build prompt from rule content
51
+ console.log(chalk_1.default.gray("📖 Reading rule content..."));
52
+ const prompt = (0, question_prompt_1.buildQuestionPrompt)(rulePath);
53
+ // Generate questions using Ollama
54
+ console.log(chalk_1.default.gray("🤖 Calling Ollama LLM..."));
55
+ const jsonResponse = await (0, ollama_client_1.generateQuestionsWithOllama)(prompt, options.model);
56
+ // Parse and validate response
57
+ console.log(chalk_1.default.gray("✅ Validating response..."));
58
+ const parseResult = JSON.parse(jsonResponse);
59
+ const validationResult = (0, question_schema_1.validateQuestionResponse)(parseResult);
60
+ // TODO: Add a way to retry the generation
61
+ if (validationResult.success === false) {
62
+ console.error(chalk_1.default.red("❌ Validation failed:"));
63
+ console.error(chalk_1.default.red(validationResult.error));
64
+ console.log(chalk_1.default.yellow("\nRaw LLM response:"));
65
+ console.log(chalk_1.default.gray(jsonResponse));
66
+ process.exit(1);
67
+ }
68
+ // TypeScript now knows validationResult is success case
69
+ const validatedQuestions = validationResult.data;
70
+ // Ensure output directory exists
71
+ ensureSuggestedQuestionsDir();
72
+ // Write questions to file
73
+ writeQuestionsFile(validatedQuestions, ruleId, options.output);
74
+ // Show summary
75
+ const questionCount = validatedQuestions.questions.length;
76
+ console.log(chalk_1.default.green(`\n🎉 Successfully generated ${questionCount} questions for '${ruleId}'`));
77
+ // Show question preview
78
+ console.log(chalk_1.default.blue("\n📋 Generated questions:"));
79
+ validatedQuestions.questions.forEach((q, index) => {
80
+ console.log(chalk_1.default.gray(`${index + 1}. [${q.type}] ${q.text}`));
81
+ });
82
+ console.log(chalk_1.default.yellow("\n💡 Next steps:"));
83
+ console.log(chalk_1.default.gray("1. Review the generated questions"));
84
+ console.log(chalk_1.default.gray("2. Edit if needed"));
85
+ console.log(chalk_1.default.gray("3. Move to questions/ folder when ready"));
86
+ }
87
+ catch (error) {
88
+ if (error instanceof ollama_client_1.OllamaError) {
89
+ console.error(chalk_1.default.red(`❌ Ollama Error: ${error.message}`));
90
+ if (error.message.includes("not running")) {
91
+ console.log(chalk_1.default.yellow("\n💡 To fix this:"));
92
+ console.log(chalk_1.default.gray("1. Install Ollama: https://ollama.ai"));
93
+ console.log(chalk_1.default.gray("2. Start Ollama server"));
94
+ console.log(chalk_1.default.gray("3. Pull a model: ollama pull llama3.2"));
95
+ }
96
+ }
97
+ else {
98
+ console.error(chalk_1.default.red(`❌ Error: ${error instanceof Error ? error.message : "Unknown error"}`));
99
+ }
100
+ process.exit(1);
101
+ }
102
+ }
103
+ // Create CLI program using Commander.js
104
+ const program = new commander_1.Command();
105
+ program
106
+ .name("generate-questions")
107
+ .description("Generate questions for AI rules using local LLM (Ollama)")
108
+ .argument("<rule-path>", "Path to rule directory (e.g., 'rules/cursor/brainstorming')")
109
+ .argument("[model]", "Model name (alternative to --model flag)", "")
110
+ .option("-m, --model <model>", "Ollama model to use")
111
+ .option("-o, --output <file>", "Custom output filename")
112
+ .action(async (rulePath, modelArg, options) => {
113
+ // Use option model, then fall back to positional model arg
114
+ const model = options.model || modelArg || "llama3.2";
115
+ // Call with merged options including model
116
+ await generateQuestions(rulePath, { ...options, model });
117
+ });
118
+ // Parse arguments and run
119
+ program.parse();
120
+ //# sourceMappingURL=generate-questions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-questions.js","sourceRoot":"","sources":["../../../../src/cli/commands/generate-questions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6J1E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8M1E"}
@@ -145,6 +145,51 @@ async function initCommand(options = {}) {
145
145
  Object.assign(config, updatedConfig);
146
146
  installedRules.push(manifest.id);
147
147
  }
148
+ // For Claude Code, also install skills
149
+ if (selectedAgent === "claude-code") {
150
+ console.log(chalk_1.default.blue("\n🎯 Installing Claude Code skills..."));
151
+ const skills = await (0, github_1.fetchSkills)(selectedAgent);
152
+ if (skills.length > 0) {
153
+ let installedSkillsCount = 0;
154
+ for (const skill of skills) {
155
+ try {
156
+ // Apply skill naming convention
157
+ const targetPath = (0, files_1.applySkillNamingConvention)(selectedAgent, skill.name);
158
+ // Check for conflicts
159
+ const conflict = await (0, files_1.detectConflict)((0, node_path_1.join)(process.cwd(), targetPath));
160
+ if (conflict.hasConflict) {
161
+ // Handle conflict based on strategy
162
+ if (overwriteStrategy === "skip") {
163
+ console.log(chalk_1.default.yellow(`⏭️ Skipped (file exists): ${targetPath}`));
164
+ continue;
165
+ }
166
+ if (overwriteStrategy === "force") {
167
+ console.log(chalk_1.default.yellow(`⚠️ Overwriting: ${targetPath}`));
168
+ }
169
+ else {
170
+ // prompt strategy
171
+ const shouldOverwrite = await (0, prompts_1.promptConflictResolution)(targetPath);
172
+ if (!shouldOverwrite) {
173
+ console.log(chalk_1.default.yellow(`⏭️ Skipped: ${targetPath}`));
174
+ continue;
175
+ }
176
+ }
177
+ }
178
+ // Write skill file
179
+ await (0, files_1.writeRuleFile)(skill.content, (0, node_path_1.join)(process.cwd(), targetPath));
180
+ console.log(chalk_1.default.green(`✓ Installed skill: ${skill.name}`));
181
+ installedSkillsCount++;
182
+ }
183
+ catch (error) {
184
+ console.log(chalk_1.default.red(`❌ Error installing skill ${skill.name}: ${error}`));
185
+ }
186
+ }
187
+ console.log(chalk_1.default.green(`\n🎉 Successfully installed ${installedSkillsCount} skills`));
188
+ }
189
+ else {
190
+ console.log(chalk_1.default.yellow("No skills found for Claude Code"));
191
+ }
192
+ }
148
193
  // Save updated config
149
194
  await (0, config_1.saveConfig)(process.cwd(), config);
150
195
  // Display success message
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,12 @@ export declare function writeRuleFile(content: string, targetPath: string): Prom
18
18
  * @returns Target file path following agent conventions
19
19
  */
20
20
  export declare function applyNamingConvention(agent: AIAgent, filename: string): string;
21
+ /**
22
+ * Applies skill-specific naming conventions for skill files
23
+ * Converts flat file structure (skill-name.md) to directory structure (skill-name/SKILL.md)
24
+ * @param agent - AI agent type
25
+ * @param skillName - Name of the skill (without .md extension)
26
+ * @returns Target file path for the skill
27
+ */
28
+ export declare function applySkillNamingConvention(agent: AIAgent, skillName: string): string;
21
29
  //# sourceMappingURL=files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAW9E;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB9E"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAW9E;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASpF"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.detectConflict = detectConflict;
4
4
  exports.writeRuleFile = writeRuleFile;
5
5
  exports.applyNamingConvention = applyNamingConvention;
6
+ exports.applySkillNamingConvention = applySkillNamingConvention;
6
7
  const node_fs_1 = require("node:fs");
7
8
  const promises_1 = require("node:fs/promises");
8
9
  const node_path_1 = require("node:path");
@@ -56,8 +57,26 @@ function applyNamingConvention(agent, filename) {
56
57
  return `.continue/rules/${filename}`;
57
58
  case types_1.AIAgent.CODY:
58
59
  return `.cody/rules/${filename}`;
60
+ case types_1.AIAgent.CLAUDE_CODE:
61
+ return `.claude/rules/${filename}`;
59
62
  default:
60
63
  throw new Error(`Unsupported AI agent: ${agent}`);
61
64
  }
62
65
  }
66
+ /**
67
+ * Applies skill-specific naming conventions for skill files
68
+ * Converts flat file structure (skill-name.md) to directory structure (skill-name/SKILL.md)
69
+ * @param agent - AI agent type
70
+ * @param skillName - Name of the skill (without .md extension)
71
+ * @returns Target file path for the skill
72
+ */
73
+ function applySkillNamingConvention(agent, skillName) {
74
+ switch (agent) {
75
+ case types_1.AIAgent.CLAUDE_CODE:
76
+ // Convert skill-name to skill-name/SKILL.md
77
+ return `.claude/skills/${skillName}/SKILL.md`;
78
+ default:
79
+ throw new Error(`Skills are not supported for agent: ${agent}`);
80
+ }
81
+ }
63
82
  //# sourceMappingURL=files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../../src/cli/lib/files.ts"],"names":[],"mappings":";;AAUA,wCAWC;AAOD,sCAOC;AAQD,sDAqBC;AAhED,qCAAoC;AACpC,+CAA4D;AAC5D,yCAAoC;AACpC,mCAAuD;AAEvD;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,QAAgB;IACpD,IAAI,CAAC;QACJ,MAAM,IAAA,iBAAM,EAAC,QAAQ,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO;YACN,WAAW,EAAE,IAAI;SACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;YACN,WAAW,EAAE,KAAK;SAClB,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,UAAkB;IACtE,iDAAiD;IACjD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;IAChC,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,iBAAiB;IACjB,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IACrE,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,eAAO,CAAC,MAAM;YAClB,OAAO,iBAAiB,QAAQ,EAAE,CAAC;QAEpC,KAAK,eAAO,CAAC,QAAQ;YACpB,kFAAkF;YAClF,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEtC,KAAK,eAAO,CAAC,KAAK;YACjB,OAAO,gBAAgB,QAAQ,EAAE,CAAC;QAEnC,KAAK,eAAO,CAAC,QAAQ;YACpB,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEtC,KAAK,eAAO,CAAC,IAAI;YAChB,OAAO,eAAe,QAAQ,EAAE,CAAC;QAElC;YACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../../src/cli/lib/files.ts"],"names":[],"mappings":";;AAUA,wCAWC;AAOD,sCAOC;AAQD,sDAwBC;AASD,gEASC;AArFD,qCAAoC;AACpC,+CAA4D;AAC5D,yCAAoC;AACpC,mCAAuD;AAEvD;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,QAAgB;IACpD,IAAI,CAAC;QACJ,MAAM,IAAA,iBAAM,EAAC,QAAQ,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO;YACN,WAAW,EAAE,IAAI;SACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;YACN,WAAW,EAAE,KAAK;SAClB,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,UAAkB;IACtE,iDAAiD;IACjD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;IAChC,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,iBAAiB;IACjB,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IACrE,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,eAAO,CAAC,MAAM;YAClB,OAAO,iBAAiB,QAAQ,EAAE,CAAC;QAEpC,KAAK,eAAO,CAAC,QAAQ;YACpB,kFAAkF;YAClF,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEtC,KAAK,eAAO,CAAC,KAAK;YACjB,OAAO,gBAAgB,QAAQ,EAAE,CAAC;QAEnC,KAAK,eAAO,CAAC,QAAQ;YACpB,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEtC,KAAK,eAAO,CAAC,IAAI;YAChB,OAAO,eAAe,QAAQ,EAAE,CAAC;QAElC,KAAK,eAAO,CAAC,WAAW;YACvB,OAAO,iBAAiB,QAAQ,EAAE,CAAC;QAEpC;YACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,0BAA0B,CAAC,KAAc,EAAE,SAAiB;IAC3E,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,eAAO,CAAC,WAAW;YACvB,4CAA4C;YAC5C,OAAO,kBAAkB,SAAS,WAAW,CAAC;QAE/C;YACC,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;AACF,CAAC"}
@@ -18,4 +18,13 @@ export declare function fetchManifests(agent: string): Promise<Manifest[]>;
18
18
  * @returns File content as string, or null if file doesn't exist
19
19
  */
20
20
  export declare function fetchRuleFile(agent: string, category: string, filename: string): Promise<string | null>;
21
+ /**
22
+ * Fetches all skills for a specific agent from the API
23
+ * @param agent - AI agent name (e.g., 'claude-code')
24
+ * @returns Array of skill objects with name and content, or empty array if no skills
25
+ */
26
+ export declare function fetchSkills(agent: string): Promise<Array<{
27
+ name: string;
28
+ content: string;
29
+ }>>;
21
30
  //# sourceMappingURL=github.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA0DnD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAcvE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqB7G"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA+DnD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAcvE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqB7G;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAclG"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fetchAvailableAgents = fetchAvailableAgents;
4
4
  exports.fetchManifests = fetchManifests;
5
5
  exports.fetchRuleFile = fetchRuleFile;
6
+ exports.fetchSkills = fetchSkills;
6
7
  // API configuration
7
8
  const API_BASE_URL = process.env.AI_RULES_API_URL || "https://ai-rules-setup.vercel.app";
8
9
  // Cache for API responses to avoid multiple calls
@@ -94,4 +95,23 @@ async function fetchRuleFile(agent, category, filename) {
94
95
  return null;
95
96
  }
96
97
  }
98
+ /**
99
+ * Fetches all skills for a specific agent from the API
100
+ * @param agent - AI agent name (e.g., 'claude-code')
101
+ * @returns Array of skill objects with name and content, or empty array if no skills
102
+ */
103
+ async function fetchSkills(agent) {
104
+ try {
105
+ const data = await fetchRulesData();
106
+ const agentData = data.agents[agent];
107
+ if (!agentData || !agentData.skills) {
108
+ return [];
109
+ }
110
+ return agentData.skills;
111
+ }
112
+ catch (error) {
113
+ console.error(`Error fetching skills for agent ${agent}:`, error);
114
+ return [];
115
+ }
116
+ }
97
117
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/cli/lib/github.ts"],"names":[],"mappings":";;AA8DA,oDAQC;AAOD,wCAcC;AASD,sCAqBC;AAvHD,oBAAoB;AACpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,mCAAmC,CAAC;AAmBzF,kDAAkD;AAClD,IAAI,WAAW,GAAyB,IAAI,CAAC;AAC7C,IAAI,cAAc,GAAW,CAAC,CAAC;AAC/B,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAElD;;;GAGG;AACH,KAAK,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,yCAAyC;IACzC,IAAI,WAAW,IAAI,GAAG,GAAG,cAAc,GAAG,cAAc,EAAE,CAAC;QAC1D,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,YAAY,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;QAEtD,eAAe;QACf,WAAW,GAAG,IAAI,CAAC;QACnB,cAAc,GAAG,GAAG,CAAC;QAErB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAChH,CAAC;AACF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,oBAAoB;IACzC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,KAAa;IACjD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IACpF,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACrE,OAAO,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,KAAK,IAAI,QAAQ,IAAI,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/cli/lib/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Ollama LLM client for generating questions
3
+ * Handles connection, API calls, and response parsing
4
+ */
5
+ /**
6
+ * Configuration for Ollama client
7
+ */
8
+ interface OllamaConfig {
9
+ /** Ollama server URL */
10
+ baseUrl: string;
11
+ /** Default model to use */
12
+ defaultModel: string;
13
+ /** Request timeout in milliseconds */
14
+ timeout: number;
15
+ }
16
+ /**
17
+ * Error class for Ollama-specific errors
18
+ */
19
+ export declare class OllamaError extends Error {
20
+ statusCode?: number | undefined;
21
+ constructor(message: string, statusCode?: number | undefined);
22
+ }
23
+ /**
24
+ * Checks if Ollama server is running and accessible
25
+ * @param config - Ollama configuration
26
+ * @returns Promise that resolves to true if server is accessible, false on any error
27
+ */
28
+ export declare function checkOllamaHealth(config?: OllamaConfig): Promise<boolean>;
29
+ /**
30
+ * Calls Ollama API to generate text
31
+ * @param prompt - The prompt to send to the LLM
32
+ * @param model - Model to use (defaults to config default)
33
+ * @param config - Ollama configuration
34
+ * @returns Promise that resolves to the generated text
35
+ */
36
+ export declare function callOllama(prompt: string, model?: string, config?: OllamaConfig): Promise<string>;
37
+ /**
38
+ * Extracts JSON from LLM response text
39
+ * Handles cases where LLM returns pure JSON or wraps it in markdown code blocks
40
+ *
41
+ * @example
42
+ * // Pure JSON object
43
+ * extractJsonFromResponse('{"questions": [{"id": "1", "text": "test"}]}')
44
+ *
45
+ * // Pure JSON array
46
+ * extractJsonFromResponse('[{"id": "1", "text": "test"}]')
47
+ *
48
+ * // JSON in markdown code block
49
+ * extractJsonFromResponse('```json\n{"questions": []}\n```')
50
+ *
51
+ * // JSON with extra text
52
+ * extractJsonFromResponse('Here is the JSON: {"id": "1"}')
53
+ *
54
+ * @param response - Raw response from LLM
55
+ * @returns Extracted JSON string or null if not found
56
+ */
57
+ export declare function extractJsonFromResponse(response: string): string | null;
58
+ /**
59
+ * Generates questions using Ollama with error handling
60
+ * @param prompt - The prompt to send to the LLM
61
+ * @param model - Model to use (optional)
62
+ * @returns Promise that resolves to the generated JSON string
63
+ */
64
+ export declare function generateQuestionsWithOllama(prompt: string, model?: string): Promise<string>;
65
+ export {};
66
+ //# sourceMappingURL=ollama-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-client.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/ollama-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,UAAU,YAAY;IACrB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CAChB;AAoCD;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAG7B,UAAU,CAAC,EAAE,MAAM;gBAD1B,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA;CAK3B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,GAAE,YAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB/F;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,YAA6B,GACnC,OAAO,CAAC,MAAM,CAAC,CAkDjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmDvE;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBjG"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ /**
3
+ * Ollama LLM client for generating questions
4
+ * Handles connection, API calls, and response parsing
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.OllamaError = void 0;
8
+ exports.checkOllamaHealth = checkOllamaHealth;
9
+ exports.callOllama = callOllama;
10
+ exports.extractJsonFromResponse = extractJsonFromResponse;
11
+ exports.generateQuestionsWithOllama = generateQuestionsWithOllama;
12
+ /**
13
+ * Default configuration
14
+ */
15
+ const DEFAULT_CONFIG = {
16
+ baseUrl: "http://localhost:11434",
17
+ defaultModel: process.env.OLLAMA_MODEL || "llama3.2",
18
+ timeout: parseInt(process.env.OLLAMA_TIMEOUT || "180000", 10), // 3 minutes default, configurable via env
19
+ };
20
+ /**
21
+ * Error class for Ollama-specific errors
22
+ */
23
+ class OllamaError extends Error {
24
+ constructor(message, statusCode) {
25
+ super(message);
26
+ this.statusCode = statusCode;
27
+ this.name = "OllamaError";
28
+ }
29
+ }
30
+ exports.OllamaError = OllamaError;
31
+ /**
32
+ * Checks if Ollama server is running and accessible
33
+ * @param config - Ollama configuration
34
+ * @returns Promise that resolves to true if server is accessible, false on any error
35
+ */
36
+ async function checkOllamaHealth(config = DEFAULT_CONFIG) {
37
+ const controller = new AbortController();
38
+ const timeoutId = setTimeout(() => controller.abort(), config.timeout);
39
+ try {
40
+ const response = await fetch(`${config.baseUrl}/api/tags`, {
41
+ method: "GET",
42
+ signal: controller.signal,
43
+ });
44
+ clearTimeout(timeoutId);
45
+ return response.ok;
46
+ }
47
+ catch (error) {
48
+ clearTimeout(timeoutId);
49
+ if (error instanceof Error && error.name === "AbortError") {
50
+ return false; // Timeout occurred
51
+ }
52
+ return false; // Any other error means server is not accessible
53
+ }
54
+ }
55
+ /**
56
+ * Calls Ollama API to generate text
57
+ * @param prompt - The prompt to send to the LLM
58
+ * @param model - Model to use (defaults to config default)
59
+ * @param config - Ollama configuration
60
+ * @returns Promise that resolves to the generated text
61
+ */
62
+ async function callOllama(prompt, model, config = DEFAULT_CONFIG) {
63
+ const modelToUse = model || config.defaultModel;
64
+ const requestBody = {
65
+ model: modelToUse,
66
+ prompt,
67
+ stream: false,
68
+ options: {
69
+ temperature: 0.7,
70
+ max_tokens: 1500,
71
+ top_p: 0.9,
72
+ frequency_penalty: 0.5,
73
+ },
74
+ };
75
+ const controller = new AbortController();
76
+ const timeoutId = setTimeout(() => {
77
+ controller.abort();
78
+ }, config.timeout);
79
+ let response;
80
+ try {
81
+ response = await fetch(`${config.baseUrl}/api/generate`, {
82
+ method: "POST",
83
+ headers: {
84
+ "Content-Type": "application/json",
85
+ },
86
+ body: JSON.stringify(requestBody),
87
+ signal: controller.signal,
88
+ });
89
+ }
90
+ catch (error) {
91
+ clearTimeout(timeoutId);
92
+ if (error instanceof Error && error.name === "AbortError") {
93
+ throw new OllamaError(`Request timeout after ${config.timeout}ms`);
94
+ }
95
+ throw new OllamaError(`Request failed: ${error instanceof Error ? error.message : "Unknown error"}`);
96
+ }
97
+ clearTimeout(timeoutId);
98
+ if (!response.ok) {
99
+ throw new OllamaError(`HTTP ${response.status}: ${response.statusText}`, response.status);
100
+ }
101
+ try {
102
+ const data = (await response.json());
103
+ return data.response;
104
+ }
105
+ catch (error) {
106
+ throw new OllamaError(`Failed to parse JSON response: ${error instanceof Error ? error.message : "Unknown error"}`);
107
+ }
108
+ }
109
+ /**
110
+ * Extracts JSON from LLM response text
111
+ * Handles cases where LLM returns pure JSON or wraps it in markdown code blocks
112
+ *
113
+ * @example
114
+ * // Pure JSON object
115
+ * extractJsonFromResponse('{"questions": [{"id": "1", "text": "test"}]}')
116
+ *
117
+ * // Pure JSON array
118
+ * extractJsonFromResponse('[{"id": "1", "text": "test"}]')
119
+ *
120
+ * // JSON in markdown code block
121
+ * extractJsonFromResponse('```json\n{"questions": []}\n```')
122
+ *
123
+ * // JSON with extra text
124
+ * extractJsonFromResponse('Here is the JSON: {"id": "1"}')
125
+ *
126
+ * @param response - Raw response from LLM
127
+ * @returns Extracted JSON string or null if not found
128
+ */
129
+ function extractJsonFromResponse(response) {
130
+ // Trim whitespace first
131
+ const trimmed = response.trim();
132
+ // Case 1: Response is pure JSON (starts and ends with {})
133
+ if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
134
+ try {
135
+ // Try to parse to validate it's valid JSON
136
+ JSON.parse(trimmed);
137
+ return trimmed;
138
+ }
139
+ catch {
140
+ // Not valid JSON, continue to other methods
141
+ }
142
+ }
143
+ // Case 2: Response is pure JSON array (starts and ends with [])
144
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
145
+ try {
146
+ // Try to parse to validate it's valid JSON
147
+ JSON.parse(trimmed);
148
+ return trimmed;
149
+ }
150
+ catch {
151
+ // Not valid JSON, continue to other methods
152
+ }
153
+ }
154
+ // Case 3: JSON wrapped in markdown code blocks
155
+ const codeBlockMatch = response.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);
156
+ if (codeBlockMatch) {
157
+ return codeBlockMatch[1] ?? null;
158
+ }
159
+ // Case 4: JSON array wrapped in markdown code blocks
160
+ const arrayCodeBlockMatch = response.match(/```(?:json)?\s*(\[[\s\S]*?\])\s*```/);
161
+ if (arrayCodeBlockMatch) {
162
+ return arrayCodeBlockMatch[1] ?? null;
163
+ }
164
+ // Case 5: Find JSON object anywhere in the text (fallback)
165
+ const jsonObjectMatch = response.match(/\{[\s\S]*\}/);
166
+ if (jsonObjectMatch) {
167
+ return jsonObjectMatch[0] ?? null;
168
+ }
169
+ // Case 6: Find JSON array anywhere in the text (fallback)
170
+ const jsonArrayMatch = response.match(/\[[\s\S]*\]/);
171
+ if (jsonArrayMatch) {
172
+ return jsonArrayMatch[0] ?? null;
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * Generates questions using Ollama with error handling
178
+ * @param prompt - The prompt to send to the LLM
179
+ * @param model - Model to use (optional)
180
+ * @returns Promise that resolves to the generated JSON string
181
+ */
182
+ async function generateQuestionsWithOllama(prompt, model) {
183
+ const isHealthy = await checkOllamaHealth();
184
+ if (!isHealthy) {
185
+ throw new OllamaError("Ollama server is not running or not accessible at http://localhost:11434\n" +
186
+ "Please start Ollama and ensure the server is running.");
187
+ }
188
+ const response = await callOllama(prompt, model);
189
+ const jsonString = extractJsonFromResponse(response);
190
+ if (!jsonString) {
191
+ throw new OllamaError("LLM response does not contain valid JSON.\n" +
192
+ "Response received:\n" +
193
+ response.substring(0, 500) +
194
+ (response.length > 500 ? "..." : ""));
195
+ }
196
+ return jsonString;
197
+ }
198
+ //# sourceMappingURL=ollama-client.js.map