@knowledgine/cli 0.2.1 → 0.3.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 (213) hide show
  1. package/dist/commands/capture.d.ts.map +1 -1
  2. package/dist/commands/capture.js +11 -15
  3. package/dist/commands/capture.js.map +1 -1
  4. package/dist/commands/deprecation-check.d.ts +7 -0
  5. package/dist/commands/deprecation-check.d.ts.map +1 -0
  6. package/dist/commands/deprecation-check.js +75 -0
  7. package/dist/commands/deprecation-check.js.map +1 -0
  8. package/dist/commands/explain.d.ts +10 -0
  9. package/dist/commands/explain.d.ts.map +1 -0
  10. package/dist/commands/explain.js +252 -0
  11. package/dist/commands/explain.js.map +1 -0
  12. package/dist/commands/feedback-suggest.d.ts +8 -0
  13. package/dist/commands/feedback-suggest.d.ts.map +1 -0
  14. package/dist/commands/feedback-suggest.js +43 -0
  15. package/dist/commands/feedback-suggest.js.map +1 -0
  16. package/dist/commands/feedback.d.ts.map +1 -1
  17. package/dist/commands/feedback.js +1 -6
  18. package/dist/commands/feedback.js.map +1 -1
  19. package/dist/commands/ingest.d.ts.map +1 -1
  20. package/dist/commands/ingest.js +15 -2
  21. package/dist/commands/ingest.js.map +1 -1
  22. package/dist/commands/init.d.ts +2 -0
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +42 -5
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/plugins.d.ts.map +1 -1
  27. package/dist/commands/plugins.js +1 -1
  28. package/dist/commands/plugins.js.map +1 -1
  29. package/dist/commands/recall.d.ts +10 -0
  30. package/dist/commands/recall.d.ts.map +1 -0
  31. package/dist/commands/recall.js +199 -0
  32. package/dist/commands/recall.js.map +1 -0
  33. package/dist/commands/search.d.ts +3 -0
  34. package/dist/commands/search.d.ts.map +1 -1
  35. package/dist/commands/search.js +22 -3
  36. package/dist/commands/search.js.map +1 -1
  37. package/dist/commands/serve.d.ts +8 -0
  38. package/dist/commands/serve.d.ts.map +1 -0
  39. package/dist/commands/serve.js +60 -0
  40. package/dist/commands/serve.js.map +1 -0
  41. package/dist/commands/setup-rules.d.ts +27 -0
  42. package/dist/commands/setup-rules.d.ts.map +1 -0
  43. package/dist/commands/setup-rules.js +309 -0
  44. package/dist/commands/setup-rules.js.map +1 -0
  45. package/dist/commands/setup-skills.d.ts +55 -0
  46. package/dist/commands/setup-skills.d.ts.map +1 -0
  47. package/dist/commands/setup-skills.js +356 -0
  48. package/dist/commands/setup-skills.js.map +1 -0
  49. package/dist/commands/setup.d.ts +14 -0
  50. package/dist/commands/setup.d.ts.map +1 -1
  51. package/dist/commands/setup.js +103 -13
  52. package/dist/commands/setup.js.map +1 -1
  53. package/dist/commands/start.d.ts.map +1 -1
  54. package/dist/commands/start.js.map +1 -1
  55. package/dist/commands/status.js +1 -1
  56. package/dist/commands/status.js.map +1 -1
  57. package/dist/commands/suggest.d.ts +11 -0
  58. package/dist/commands/suggest.d.ts.map +1 -0
  59. package/dist/commands/suggest.js +255 -0
  60. package/dist/commands/suggest.js.map +1 -0
  61. package/dist/commands/undeprecate.d.ts +5 -0
  62. package/dist/commands/undeprecate.d.ts.map +1 -0
  63. package/dist/commands/undeprecate.js +27 -0
  64. package/dist/commands/undeprecate.js.map +1 -0
  65. package/dist/commands/upgrade.d.ts.map +1 -1
  66. package/dist/commands/upgrade.js.map +1 -1
  67. package/dist/index.js +44 -6
  68. package/dist/index.js.map +1 -1
  69. package/dist/lib/content-extractor.d.ts +8 -0
  70. package/dist/lib/content-extractor.d.ts.map +1 -0
  71. package/dist/lib/content-extractor.js +50 -0
  72. package/dist/lib/content-extractor.js.map +1 -0
  73. package/dist/lib/diff-parser.d.ts +14 -0
  74. package/dist/lib/diff-parser.d.ts.map +1 -0
  75. package/dist/lib/diff-parser.js +108 -0
  76. package/dist/lib/diff-parser.js.map +1 -0
  77. package/dist/lib/entity-extractor.d.ts +2 -0
  78. package/dist/lib/entity-extractor.d.ts.map +1 -1
  79. package/dist/lib/entity-extractor.js +13 -76
  80. package/dist/lib/entity-extractor.js.map +1 -1
  81. package/dist/lib/formatter.d.ts.map +1 -1
  82. package/dist/lib/formatter.js +1 -5
  83. package/dist/lib/formatter.js.map +1 -1
  84. package/dist/lib/ingest-watcher.d.ts.map +1 -1
  85. package/dist/lib/ingest-watcher.js +1 -0
  86. package/dist/lib/ingest-watcher.js.map +1 -1
  87. package/dist/lib/plugin-loader.d.ts.map +1 -1
  88. package/dist/lib/plugin-loader.js +3 -1
  89. package/dist/lib/plugin-loader.js.map +1 -1
  90. package/dist/lib/progress.d.ts +2 -0
  91. package/dist/lib/progress.d.ts.map +1 -1
  92. package/dist/lib/progress.js +4 -2
  93. package/dist/lib/progress.js.map +1 -1
  94. package/dist/lib/ui/box.d.ts.map +1 -1
  95. package/dist/lib/ui/box.js.map +1 -1
  96. package/dist/lib/ui/error-formatter.d.ts.map +1 -1
  97. package/dist/lib/ui/error-formatter.js +1 -3
  98. package/dist/lib/ui/error-formatter.js.map +1 -1
  99. package/dist/lib/ui/table.js +1 -1
  100. package/dist/lib/ui/table.js.map +1 -1
  101. package/dist/templates/rules/antigravity.d.ts +6 -0
  102. package/dist/templates/rules/antigravity.d.ts.map +1 -0
  103. package/dist/templates/rules/antigravity.js +30 -0
  104. package/dist/templates/rules/antigravity.js.map +1 -0
  105. package/dist/templates/rules/claude-code.d.ts +6 -0
  106. package/dist/templates/rules/claude-code.d.ts.map +1 -0
  107. package/dist/templates/rules/claude-code.js +32 -0
  108. package/dist/templates/rules/claude-code.js.map +1 -0
  109. package/dist/templates/rules/cline.d.ts +6 -0
  110. package/dist/templates/rules/cline.d.ts.map +1 -0
  111. package/dist/templates/rules/cline.js +35 -0
  112. package/dist/templates/rules/cline.js.map +1 -0
  113. package/dist/templates/rules/codex.d.ts +6 -0
  114. package/dist/templates/rules/codex.d.ts.map +1 -0
  115. package/dist/templates/rules/codex.js +37 -0
  116. package/dist/templates/rules/codex.js.map +1 -0
  117. package/dist/templates/rules/continue.d.ts +6 -0
  118. package/dist/templates/rules/continue.d.ts.map +1 -0
  119. package/dist/templates/rules/continue.js +31 -0
  120. package/dist/templates/rules/continue.js.map +1 -0
  121. package/dist/templates/rules/core-rules.d.ts +6 -0
  122. package/dist/templates/rules/core-rules.d.ts.map +1 -0
  123. package/dist/templates/rules/core-rules.js +33 -0
  124. package/dist/templates/rules/core-rules.js.map +1 -0
  125. package/dist/templates/rules/cursor.d.ts +6 -0
  126. package/dist/templates/rules/cursor.d.ts.map +1 -0
  127. package/dist/templates/rules/cursor.js +29 -0
  128. package/dist/templates/rules/cursor.js.map +1 -0
  129. package/dist/templates/rules/gemini.d.ts +6 -0
  130. package/dist/templates/rules/gemini.d.ts.map +1 -0
  131. package/dist/templates/rules/gemini.js +30 -0
  132. package/dist/templates/rules/gemini.js.map +1 -0
  133. package/dist/templates/rules/github-copilot.d.ts +6 -0
  134. package/dist/templates/rules/github-copilot.d.ts.map +1 -0
  135. package/dist/templates/rules/github-copilot.js +42 -0
  136. package/dist/templates/rules/github-copilot.js.map +1 -0
  137. package/dist/templates/rules/index.d.ts +13 -0
  138. package/dist/templates/rules/index.d.ts.map +1 -0
  139. package/dist/templates/rules/index.js +13 -0
  140. package/dist/templates/rules/index.js.map +1 -0
  141. package/dist/templates/rules/opencode.d.ts +6 -0
  142. package/dist/templates/rules/opencode.d.ts.map +1 -0
  143. package/dist/templates/rules/opencode.js +30 -0
  144. package/dist/templates/rules/opencode.js.map +1 -0
  145. package/dist/templates/rules/windsurf.d.ts +6 -0
  146. package/dist/templates/rules/windsurf.d.ts.map +1 -0
  147. package/dist/templates/rules/windsurf.js +24 -0
  148. package/dist/templates/rules/windsurf.js.map +1 -0
  149. package/dist/templates/rules/zed.d.ts +6 -0
  150. package/dist/templates/rules/zed.d.ts.map +1 -0
  151. package/dist/templates/rules/zed.js +34 -0
  152. package/dist/templates/rules/zed.js.map +1 -0
  153. package/dist/templates/skills/index.d.ts +26 -0
  154. package/dist/templates/skills/index.d.ts.map +1 -0
  155. package/dist/templates/skills/index.js +75 -0
  156. package/dist/templates/skills/index.js.map +1 -0
  157. package/dist/templates/skills/knowledgine-capture/references.d.ts +2 -0
  158. package/dist/templates/skills/knowledgine-capture/references.d.ts.map +1 -0
  159. package/dist/templates/skills/knowledgine-capture/references.js +414 -0
  160. package/dist/templates/skills/knowledgine-capture/references.js.map +1 -0
  161. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts +2 -0
  162. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts.map +1 -0
  163. package/dist/templates/skills/knowledgine-capture/skill-md.js +97 -0
  164. package/dist/templates/skills/knowledgine-capture/skill-md.js.map +1 -0
  165. package/dist/templates/skills/knowledgine-debrief/references.d.ts +2 -0
  166. package/dist/templates/skills/knowledgine-debrief/references.d.ts.map +1 -0
  167. package/dist/templates/skills/knowledgine-debrief/references.js +140 -0
  168. package/dist/templates/skills/knowledgine-debrief/references.js.map +1 -0
  169. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts +2 -0
  170. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts.map +1 -0
  171. package/dist/templates/skills/knowledgine-debrief/skill-md.js +74 -0
  172. package/dist/templates/skills/knowledgine-debrief/skill-md.js.map +1 -0
  173. package/dist/templates/skills/knowledgine-explain/references.d.ts +2 -0
  174. package/dist/templates/skills/knowledgine-explain/references.d.ts.map +1 -0
  175. package/dist/templates/skills/knowledgine-explain/references.js +183 -0
  176. package/dist/templates/skills/knowledgine-explain/references.js.map +1 -0
  177. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts +2 -0
  178. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts.map +1 -0
  179. package/dist/templates/skills/knowledgine-explain/skill-md.js +89 -0
  180. package/dist/templates/skills/knowledgine-explain/skill-md.js.map +1 -0
  181. package/dist/templates/skills/knowledgine-feedback/references.d.ts +2 -0
  182. package/dist/templates/skills/knowledgine-feedback/references.d.ts.map +1 -0
  183. package/dist/templates/skills/knowledgine-feedback/references.js +214 -0
  184. package/dist/templates/skills/knowledgine-feedback/references.js.map +1 -0
  185. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts +2 -0
  186. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts.map +1 -0
  187. package/dist/templates/skills/knowledgine-feedback/skill-md.js +107 -0
  188. package/dist/templates/skills/knowledgine-feedback/skill-md.js.map +1 -0
  189. package/dist/templates/skills/knowledgine-ingest/references.d.ts +2 -0
  190. package/dist/templates/skills/knowledgine-ingest/references.d.ts.map +1 -0
  191. package/dist/templates/skills/knowledgine-ingest/references.js +243 -0
  192. package/dist/templates/skills/knowledgine-ingest/references.js.map +1 -0
  193. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts +2 -0
  194. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts.map +1 -0
  195. package/dist/templates/skills/knowledgine-ingest/skill-md.js +80 -0
  196. package/dist/templates/skills/knowledgine-ingest/skill-md.js.map +1 -0
  197. package/dist/templates/skills/knowledgine-recall/references.d.ts +2 -0
  198. package/dist/templates/skills/knowledgine-recall/references.d.ts.map +1 -0
  199. package/dist/templates/skills/knowledgine-recall/references.js +207 -0
  200. package/dist/templates/skills/knowledgine-recall/references.js.map +1 -0
  201. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts +2 -0
  202. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts.map +1 -0
  203. package/dist/templates/skills/knowledgine-recall/skill-md.js +86 -0
  204. package/dist/templates/skills/knowledgine-recall/skill-md.js.map +1 -0
  205. package/dist/templates/skills/knowledgine-suggest/references.d.ts +2 -0
  206. package/dist/templates/skills/knowledgine-suggest/references.d.ts.map +1 -0
  207. package/dist/templates/skills/knowledgine-suggest/references.js +121 -0
  208. package/dist/templates/skills/knowledgine-suggest/references.js.map +1 -0
  209. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts +2 -0
  210. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts.map +1 -0
  211. package/dist/templates/skills/knowledgine-suggest/skill-md.js +94 -0
  212. package/dist/templates/skills/knowledgine-suggest/skill-md.js.map +1 -0
  213. package/package.json +6 -4
@@ -0,0 +1,8 @@
1
+ import { Command } from "commander";
2
+ export interface ServeCommandOptions {
3
+ port?: string;
4
+ host?: string;
5
+ path?: string;
6
+ }
7
+ export declare function registerServeCommand(program: Command): void;
8
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ3D"}
@@ -0,0 +1,60 @@
1
+ import { Command } from "commander";
2
+ import { existsSync } from "fs";
3
+ import { resolve } from "path";
4
+ import { serve } from "@hono/node-server";
5
+ import { loadConfig, resolveDefaultPath, createDatabase, Migrator, ALL_MIGRATIONS, KnowledgeRepository, GraphRepository, KnowledgeService, VERSION, } from "@knowledgine/core";
6
+ import { createRestApp } from "@knowledgine/mcp-server";
7
+ export function registerServeCommand(program) {
8
+ program
9
+ .command("serve")
10
+ .description("Start REST API server for knowledge base access")
11
+ .option("--port <n>", "Port number", "3456")
12
+ .option("--host <host>", "Host to bind", "127.0.0.1")
13
+ .option("--path <dir>", "Project root path")
14
+ .action(serveAction);
15
+ }
16
+ async function serveAction(options) {
17
+ const rootPath = resolveDefaultPath(options.path);
18
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
19
+ if (!existsSync(knowledgineDir)) {
20
+ console.error('Not initialized. Run "knowledgine init --path <dir>" first.');
21
+ process.exitCode = 1;
22
+ return;
23
+ }
24
+ const config = loadConfig(rootPath);
25
+ const db = createDatabase(config.dbPath);
26
+ try {
27
+ new Migrator(db, ALL_MIGRATIONS).migrate();
28
+ const repository = new KnowledgeRepository(db);
29
+ const graphRepository = new GraphRepository(db);
30
+ const service = new KnowledgeService({ repository, rootPath, graphRepository });
31
+ const app = createRestApp(service, VERSION);
32
+ const port = parseInt(options.port ?? "3456", 10);
33
+ const hostname = options.host ?? "127.0.0.1";
34
+ const stats = service.getStats();
35
+ const server = serve({
36
+ fetch: app.fetch,
37
+ port,
38
+ hostname,
39
+ }, () => {
40
+ console.error(`knowledgine REST API server running`);
41
+ console.error(` URL: http://${hostname}:${port}`);
42
+ console.error(` Notes: ${stats.totalNotes} indexed`);
43
+ });
44
+ // Graceful shutdown
45
+ const shutdown = () => {
46
+ console.error("\nShutting down...");
47
+ server.close();
48
+ db.close();
49
+ process.exit(0);
50
+ };
51
+ process.on("SIGINT", shutdown);
52
+ process.on("SIGTERM", shutdown);
53
+ }
54
+ catch (error) {
55
+ db.close();
56
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
57
+ process.exitCode = 1;
58
+ }
59
+ }
60
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface RuleTarget {
2
+ value: string;
3
+ label: string;
4
+ description: string;
5
+ supported: boolean;
6
+ getRulePath: (root: string) => string;
7
+ strategy: "append-section" | "create-file";
8
+ getTemplate: (root: string) => string;
9
+ sharedFile?: string;
10
+ }
11
+ export interface RuleWriteResult {
12
+ target: string;
13
+ status: "ok" | "skipped" | "fail";
14
+ filePath: string;
15
+ error?: string;
16
+ note?: string;
17
+ }
18
+ export declare const RULE_TARGETS: RuleTarget[];
19
+ export declare function writeRuleFile(target: RuleTarget, projectRoot: string, options: {
20
+ dryRun?: boolean;
21
+ force?: boolean;
22
+ }): RuleWriteResult;
23
+ export declare function interactiveRulesSetup(projectRoot: string, preselectedMcpTargets?: string[]): Promise<RuleWriteResult[]>;
24
+ export declare function nonInteractiveRulesSetup(target: string, projectRoot: string, options: {
25
+ write?: boolean;
26
+ }): void;
27
+ //# sourceMappingURL=setup-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-rules.d.ts","sourceRoot":"","sources":["../../src/commands/setup-rules.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,QAAQ,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,EAAE,UAAU,EA4HpC,CAAC;AAEF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,eAAe,CAgEjB;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,eAAe,EAAE,CAAC,CAwF5B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,IAAI,CAkDN"}
@@ -0,0 +1,309 @@
1
+ import { join } from "path";
2
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from "fs";
3
+ import * as p from "@clack/prompts";
4
+ import { colors, symbols } from "../lib/ui/index.js";
5
+ import { getClaudeCodeRuleTemplate, getCursorRuleTemplate, getWindsurfRuleTemplate, getClineRuleTemplate, getCodexRuleTemplate, getGithubCopilotRuleTemplate, getGeminiRuleTemplate, getContinueRuleTemplate, getZedRuleTemplate, getOpencodeRuleTemplate, getAntigravityRuleTemplate, } from "../templates/rules/index.js";
6
+ const MARKER_START = "<!-- knowledgine:rules:start -->";
7
+ const MARKER_END = "<!-- knowledgine:rules:end -->";
8
+ export const RULE_TARGETS = [
9
+ {
10
+ value: "claude-code",
11
+ label: "Claude Code",
12
+ description: "Anthropic's CLI agent",
13
+ supported: true,
14
+ getRulePath: (root) => join(root, "CLAUDE.md"),
15
+ strategy: "append-section",
16
+ getTemplate: getClaudeCodeRuleTemplate,
17
+ },
18
+ {
19
+ value: "codex",
20
+ label: "Codex CLI",
21
+ description: "OpenAI's coding agent",
22
+ supported: true,
23
+ getRulePath: (root) => join(root, "AGENTS.md"),
24
+ strategy: "append-section",
25
+ getTemplate: getCodexRuleTemplate,
26
+ sharedFile: "agents-md",
27
+ },
28
+ {
29
+ value: "cursor",
30
+ label: "Cursor",
31
+ description: "AI-first code editor",
32
+ supported: true,
33
+ getRulePath: (root) => join(root, ".cursor", "rules", "knowledgine.mdc"),
34
+ strategy: "create-file",
35
+ getTemplate: getCursorRuleTemplate,
36
+ },
37
+ {
38
+ value: "windsurf",
39
+ label: "Windsurf",
40
+ description: "Codeium's AI IDE",
41
+ supported: true,
42
+ getRulePath: (root) => join(root, ".windsurf", "rules", "knowledgine.md"),
43
+ strategy: "create-file",
44
+ getTemplate: getWindsurfRuleTemplate,
45
+ },
46
+ {
47
+ value: "cline",
48
+ label: "Cline",
49
+ description: "Cline VS Code extension",
50
+ supported: true,
51
+ getRulePath: (root) => join(root, ".clinerules", "knowledgine.md"),
52
+ strategy: "create-file",
53
+ getTemplate: getClineRuleTemplate,
54
+ },
55
+ {
56
+ value: "github-copilot",
57
+ label: "GitHub Copilot CLI",
58
+ description: "AI pair programmer CLI",
59
+ supported: true,
60
+ getRulePath: (root) => join(root, ".github", "copilot-instructions.md"),
61
+ strategy: "create-file",
62
+ getTemplate: getGithubCopilotRuleTemplate,
63
+ sharedFile: "copilot-instructions",
64
+ },
65
+ {
66
+ value: "vscode",
67
+ label: "VS Code",
68
+ description: "GitHub Copilot MCP",
69
+ supported: true,
70
+ getRulePath: (root) => join(root, ".github", "copilot-instructions.md"),
71
+ strategy: "create-file",
72
+ getTemplate: getGithubCopilotRuleTemplate,
73
+ sharedFile: "copilot-instructions",
74
+ },
75
+ {
76
+ value: "gemini",
77
+ label: "Gemini CLI",
78
+ description: "Google's AI coding agent",
79
+ supported: true,
80
+ getRulePath: (root) => join(root, "GEMINI.md"),
81
+ strategy: "append-section",
82
+ getTemplate: getGeminiRuleTemplate,
83
+ sharedFile: "gemini-md",
84
+ },
85
+ {
86
+ value: "continue",
87
+ label: "Continue",
88
+ description: "Continue.dev MCP configuration",
89
+ supported: true,
90
+ getRulePath: (root) => join(root, ".continuerules"),
91
+ strategy: "append-section",
92
+ getTemplate: getContinueRuleTemplate,
93
+ },
94
+ {
95
+ value: "zed",
96
+ label: "Zed",
97
+ description: "High-performance editor",
98
+ supported: true,
99
+ getRulePath: (root) => join(root, ".rules"),
100
+ strategy: "create-file",
101
+ getTemplate: getZedRuleTemplate,
102
+ },
103
+ {
104
+ value: "opencode",
105
+ label: "OpenCode",
106
+ description: "opencode.ai MCP configuration",
107
+ supported: true,
108
+ getRulePath: (root) => join(root, "AGENTS.md"),
109
+ strategy: "append-section",
110
+ getTemplate: getOpencodeRuleTemplate,
111
+ sharedFile: "agents-md",
112
+ },
113
+ {
114
+ value: "antigravity",
115
+ label: "Antigravity",
116
+ description: "Google's AI development platform",
117
+ supported: true,
118
+ getRulePath: (root) => join(root, "AGENTS.md"),
119
+ strategy: "append-section",
120
+ getTemplate: getAntigravityRuleTemplate,
121
+ sharedFile: "agents-md",
122
+ },
123
+ {
124
+ value: "claude-desktop",
125
+ label: "Claude Desktop",
126
+ description: "Anthropic's desktop app",
127
+ supported: false,
128
+ getRulePath: (_root) => "",
129
+ strategy: "create-file",
130
+ getTemplate: (_root) => "",
131
+ },
132
+ ];
133
+ export function writeRuleFile(target, projectRoot, options) {
134
+ const filePath = target.getRulePath(projectRoot);
135
+ const templateContent = target.getTemplate(projectRoot);
136
+ if (target.strategy === "append-section") {
137
+ let finalContent;
138
+ if (existsSync(filePath)) {
139
+ const existing = readFileSync(filePath, "utf-8");
140
+ const startIdx = existing.indexOf(MARKER_START);
141
+ const endIdx = existing.indexOf(MARKER_END);
142
+ if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
143
+ // Replace between markers (inclusive)
144
+ finalContent =
145
+ existing.slice(0, startIdx) +
146
+ templateContent +
147
+ existing.slice(endIdx + MARKER_END.length);
148
+ }
149
+ else {
150
+ // Append to end
151
+ const trimmed = existing.trimEnd();
152
+ finalContent = trimmed ? trimmed + "\n\n" + templateContent + "\n" : templateContent + "\n";
153
+ }
154
+ if (!options.dryRun) {
155
+ copyFileSync(filePath, filePath + ".bak");
156
+ writeFileSync(filePath, finalContent, "utf-8");
157
+ }
158
+ }
159
+ else {
160
+ finalContent = templateContent + "\n";
161
+ if (!options.dryRun) {
162
+ const dir = join(filePath, "..");
163
+ if (!existsSync(dir)) {
164
+ mkdirSync(dir, { recursive: true });
165
+ }
166
+ writeFileSync(filePath, finalContent, "utf-8");
167
+ }
168
+ }
169
+ return { target: target.label, status: "ok", filePath };
170
+ }
171
+ // create-file strategy
172
+ if (existsSync(filePath) && !options.force) {
173
+ return {
174
+ target: target.label,
175
+ status: "skipped",
176
+ filePath,
177
+ note: "File already exists. Use --force to overwrite.",
178
+ };
179
+ }
180
+ if (!options.dryRun) {
181
+ const dir = join(filePath, "..");
182
+ if (!existsSync(dir)) {
183
+ mkdirSync(dir, { recursive: true });
184
+ }
185
+ if (existsSync(filePath)) {
186
+ copyFileSync(filePath, filePath + ".bak");
187
+ }
188
+ writeFileSync(filePath, templateContent, "utf-8");
189
+ }
190
+ return { target: target.label, status: "ok", filePath };
191
+ }
192
+ export async function interactiveRulesSetup(projectRoot, preselectedMcpTargets) {
193
+ const shouldAdd = await p.confirm({
194
+ message: "Add knowledgine rules to your AI tools?",
195
+ });
196
+ if (p.isCancel(shouldAdd) || !shouldAdd) {
197
+ return [];
198
+ }
199
+ const preselected = new Set(preselectedMcpTargets ?? []);
200
+ const selected = await p.multiselect({
201
+ message: "Which AI tools should have knowledgine rules? (space to select, enter to confirm)",
202
+ options: RULE_TARGETS.map((t) => ({
203
+ value: t.value,
204
+ label: t.label,
205
+ hint: t.supported ? t.description : `${t.description} (MCP only - no rule file support)`,
206
+ // Note: @clack/prompts multiselect doesn't support disabled items,
207
+ // so unsupported targets are shown with a hint but remain selectable.
208
+ // We filter them out after selection.
209
+ })),
210
+ initialValues: RULE_TARGETS.filter((t) => t.supported && preselected.has(t.value)).map((t) => t.value),
211
+ });
212
+ if (p.isCancel(selected)) {
213
+ return [];
214
+ }
215
+ const selectedValues = selected;
216
+ const results = [];
217
+ const writtenSharedFiles = new Set();
218
+ const s = p.spinner();
219
+ for (const value of selectedValues) {
220
+ const ruleTarget = RULE_TARGETS.find((t) => t.value === value);
221
+ if (!ruleTarget)
222
+ continue;
223
+ if (!ruleTarget.supported) {
224
+ results.push({
225
+ target: ruleTarget?.label ?? value,
226
+ status: "skipped",
227
+ filePath: "",
228
+ note: "MCP only - no rule file support",
229
+ });
230
+ continue;
231
+ }
232
+ // Dedup shared files
233
+ if (ruleTarget.sharedFile) {
234
+ if (writtenSharedFiles.has(ruleTarget.sharedFile)) {
235
+ results.push({
236
+ target: ruleTarget?.label ?? value,
237
+ status: "skipped",
238
+ filePath: ruleTarget.getRulePath(projectRoot),
239
+ note: `Shared file already written for ${ruleTarget.sharedFile}`,
240
+ });
241
+ continue;
242
+ }
243
+ writtenSharedFiles.add(ruleTarget.sharedFile);
244
+ }
245
+ s.start(`Writing rules for ${ruleTarget.label}...`);
246
+ try {
247
+ const result = writeRuleFile(ruleTarget, projectRoot, {});
248
+ if (result.status === "ok") {
249
+ s.stop(`${symbols.success} ${colors.success(ruleTarget.label)} rules written`);
250
+ }
251
+ else {
252
+ s.stop(`${symbols.arrow} ${colors.dim(ruleTarget.label)} skipped${result.note ? ` — ${result.note}` : ""}`);
253
+ }
254
+ results.push(result);
255
+ }
256
+ catch (error) {
257
+ const msg = error instanceof Error ? error.message : String(error);
258
+ s.stop(`${symbols.error} ${colors.error(ruleTarget.label)} failed`);
259
+ results.push({
260
+ target: ruleTarget?.label ?? value,
261
+ status: "fail",
262
+ filePath: ruleTarget.getRulePath(projectRoot),
263
+ error: msg,
264
+ });
265
+ }
266
+ }
267
+ return results;
268
+ }
269
+ export function nonInteractiveRulesSetup(target, projectRoot, options) {
270
+ const ruleTarget = RULE_TARGETS.find((t) => t.value === target);
271
+ if (!ruleTarget) {
272
+ console.error(`${symbols.error} Unknown target: ${target}. Supported: ${RULE_TARGETS.filter((t) => t.supported)
273
+ .map((t) => t.value)
274
+ .join(", ")}`);
275
+ process.exitCode = 1;
276
+ return;
277
+ }
278
+ if (!ruleTarget.supported) {
279
+ console.error(`${symbols.error} ${ruleTarget.label} does not support rule files (MCP only).`);
280
+ process.exitCode = 1;
281
+ return;
282
+ }
283
+ const templateContent = ruleTarget.getTemplate(projectRoot);
284
+ const filePath = ruleTarget.getRulePath(projectRoot);
285
+ if (!options.write) {
286
+ console.error(`\nRule file preview for ${ruleTarget.label}:`);
287
+ console.error(colors.dim(`Path: ${filePath}`));
288
+ console.error("");
289
+ console.error(templateContent);
290
+ console.error("");
291
+ console.error(`${symbols.arrow} ${colors.dim(`To write: kg setup rules --target ${target} --write`)}`);
292
+ return;
293
+ }
294
+ try {
295
+ const result = writeRuleFile(ruleTarget, projectRoot, {});
296
+ if (result.status === "ok") {
297
+ console.error(`${symbols.success} ${colors.success(`Rules written: ${filePath}`)}`);
298
+ }
299
+ else if (result.status === "skipped") {
300
+ console.error(`${symbols.arrow} ${colors.dim(`Skipped: ${filePath}`)}${result.note ? ` — ${result.note}` : ""}`);
301
+ }
302
+ }
303
+ catch (error) {
304
+ const msg = error instanceof Error ? error.message : String(error);
305
+ console.error(`${symbols.error} Failed to write rules: ${msg}`);
306
+ process.exitCode = 1;
307
+ }
308
+ }
309
+ //# sourceMappingURL=setup-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-rules.js","sourceRoot":"","sources":["../../src/commands/setup-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type SkillName } from "../templates/skills/index.js";
2
+ export interface SkillSetupTarget {
3
+ /** Matches TARGETS[].value in setup.ts */
4
+ value: string;
5
+ label: string;
6
+ description: string;
7
+ /** false = shown disabled in multiselect */
8
+ supported: boolean;
9
+ /** Returns the skill directory path for this agent given the project root */
10
+ getSkillDir: (root: string) => string;
11
+ /** Identifier for shared-dir dedup (agents sharing the same physical dir) */
12
+ sharedDir?: string;
13
+ }
14
+ export interface SkillWriteResult {
15
+ target: string;
16
+ status: "ok" | "skipped" | "fail";
17
+ skillDir: string;
18
+ skillCount: number;
19
+ error?: string;
20
+ note?: string;
21
+ }
22
+ export declare const SKILL_TARGETS: SkillSetupTarget[];
23
+ /**
24
+ * Writes skill files (SKILL.md + references/) for a single target agent.
25
+ *
26
+ * When `dryRun` is true, the function computes what would be written and
27
+ * returns the result without touching the filesystem.
28
+ *
29
+ * When `force` is false (default) and the skill directory already exists,
30
+ * the write is skipped.
31
+ */
32
+ export declare function writeSkills(target: SkillSetupTarget, projectRoot: string, skillNames: SkillName[], options: {
33
+ dryRun?: boolean;
34
+ force?: boolean;
35
+ }): SkillWriteResult;
36
+ /**
37
+ * Interactive wizard for the "Skills" step of `kg setup`.
38
+ *
39
+ * @param projectRoot - Absolute path to the project root.
40
+ * @param preselectedMcpTargets - Agent values already chosen in the MCP step,
41
+ * used to pre-populate the multiselect.
42
+ */
43
+ export declare function interactiveSkillsSetup(projectRoot: string, preselectedMcpTargets?: string[]): Promise<SkillWriteResult[]>;
44
+ /**
45
+ * Non-interactive (scripted) variant used when `--target` is specified on the
46
+ * command line.
47
+ *
48
+ * @param target - Agent value string (e.g. "claude-code").
49
+ * @param projectRoot - Absolute path to the project root.
50
+ * @param options.write - When false (default) only prints a preview.
51
+ */
52
+ export declare function nonInteractiveSkillsSetup(target: string, projectRoot: string, options: {
53
+ write?: boolean;
54
+ }): void;
55
+ //# sourceMappingURL=setup-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-skills.d.ts","sourceRoot":"","sources":["../../src/commands/setup-skills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAM7F,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD,eAAO,MAAM,aAAa,EAAE,gBAAgB,EAgG3C,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,gBAAgB,CA2DlB;AAMD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4I7B;AAMD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,IAAI,CAsDN"}