@knowledgine/cli 0.2.0 → 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.
- package/dist/commands/capture.d.ts +13 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +113 -12
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/demo.d.ts.map +1 -1
- package/dist/commands/demo.js +23 -19
- package/dist/commands/demo.js.map +1 -1
- package/dist/commands/deprecation-check.d.ts +7 -0
- package/dist/commands/deprecation-check.d.ts.map +1 -0
- package/dist/commands/deprecation-check.js +75 -0
- package/dist/commands/deprecation-check.js.map +1 -0
- package/dist/commands/explain.d.ts +10 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +252 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/feedback-suggest.d.ts +8 -0
- package/dist/commands/feedback-suggest.d.ts.map +1 -0
- package/dist/commands/feedback-suggest.js +43 -0
- package/dist/commands/feedback-suggest.js.map +1 -0
- package/dist/commands/feedback.d.ts +9 -0
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +57 -21
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/ingest.d.ts +1 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +96 -19
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +126 -61
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +14 -13
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/recall.d.ts +10 -0
- package/dist/commands/recall.d.ts.map +1 -0
- package/dist/commands/recall.js +199 -0
- package/dist/commands/recall.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +55 -13
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/serve.d.ts +8 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +60 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/setup-rules.d.ts +27 -0
- package/dist/commands/setup-rules.d.ts.map +1 -0
- package/dist/commands/setup-rules.js +309 -0
- package/dist/commands/setup-rules.js.map +1 -0
- package/dist/commands/setup-skills.d.ts +55 -0
- package/dist/commands/setup-skills.d.ts.map +1 -0
- package/dist/commands/setup-skills.js +356 -0
- package/dist/commands/setup-skills.js.map +1 -0
- package/dist/commands/setup.d.ts +62 -5
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +358 -104
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +27 -20
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +81 -53
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/suggest.d.ts +11 -0
- package/dist/commands/suggest.d.ts.map +1 -0
- package/dist/commands/suggest.js +255 -0
- package/dist/commands/suggest.js.map +1 -0
- package/dist/commands/tool.d.ts.map +1 -1
- package/dist/commands/tool.js +5 -5
- package/dist/commands/tool.js.map +1 -1
- package/dist/commands/undeprecate.d.ts +5 -0
- package/dist/commands/undeprecate.d.ts.map +1 -0
- package/dist/commands/undeprecate.js +27 -0
- package/dist/commands/undeprecate.js.map +1 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +64 -18
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.js +92 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/content-extractor.d.ts +8 -0
- package/dist/lib/content-extractor.d.ts.map +1 -0
- package/dist/lib/content-extractor.js +50 -0
- package/dist/lib/content-extractor.js.map +1 -0
- package/dist/lib/diff-parser.d.ts +14 -0
- package/dist/lib/diff-parser.d.ts.map +1 -0
- package/dist/lib/diff-parser.js +108 -0
- package/dist/lib/diff-parser.js.map +1 -0
- package/dist/lib/entity-extractor.d.ts +17 -0
- package/dist/lib/entity-extractor.d.ts.map +1 -0
- package/dist/lib/entity-extractor.js +23 -0
- package/dist/lib/entity-extractor.js.map +1 -0
- package/dist/lib/formatter.d.ts.map +1 -1
- package/dist/lib/formatter.js +31 -32
- package/dist/lib/formatter.js.map +1 -1
- package/dist/lib/indexer.d.ts +2 -0
- package/dist/lib/indexer.d.ts.map +1 -1
- package/dist/lib/indexer.js +2 -0
- package/dist/lib/indexer.js.map +1 -1
- package/dist/lib/ingest-watcher.d.ts.map +1 -1
- package/dist/lib/ingest-watcher.js +2 -0
- package/dist/lib/ingest-watcher.js.map +1 -1
- package/dist/lib/plugin-loader.d.ts.map +1 -1
- package/dist/lib/plugin-loader.js +3 -1
- package/dist/lib/plugin-loader.js.map +1 -1
- package/dist/lib/progress.d.ts +8 -0
- package/dist/lib/progress.d.ts.map +1 -1
- package/dist/lib/progress.js +45 -6
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/ui/box.d.ts +7 -0
- package/dist/lib/ui/box.d.ts.map +1 -0
- package/dist/lib/ui/box.js +19 -0
- package/dist/lib/ui/box.js.map +1 -0
- package/dist/lib/ui/error-formatter.d.ts +8 -0
- package/dist/lib/ui/error-formatter.d.ts.map +1 -0
- package/dist/lib/ui/error-formatter.js +19 -0
- package/dist/lib/ui/error-formatter.js.map +1 -0
- package/dist/lib/ui/index.d.ts +7 -0
- package/dist/lib/ui/index.d.ts.map +1 -0
- package/dist/lib/ui/index.js +7 -0
- package/dist/lib/ui/index.js.map +1 -0
- package/dist/lib/ui/output.d.ts +2 -0
- package/dist/lib/ui/output.d.ts.map +1 -0
- package/dist/lib/ui/output.js +4 -0
- package/dist/lib/ui/output.js.map +1 -0
- package/dist/lib/ui/spinner.d.ts +4 -0
- package/dist/lib/ui/spinner.d.ts.map +1 -0
- package/dist/lib/ui/spinner.js +5 -0
- package/dist/lib/ui/spinner.js.map +1 -0
- package/dist/lib/ui/table.d.ts +9 -0
- package/dist/lib/ui/table.d.ts.map +1 -0
- package/dist/lib/ui/table.js +28 -0
- package/dist/lib/ui/table.js.map +1 -0
- package/dist/lib/ui/theme.d.ts +21 -0
- package/dist/lib/ui/theme.d.ts.map +1 -0
- package/dist/lib/ui/theme.js +29 -0
- package/dist/lib/ui/theme.js.map +1 -0
- package/dist/lib/unknown-command-handler.d.ts +14 -0
- package/dist/lib/unknown-command-handler.d.ts.map +1 -0
- package/dist/lib/unknown-command-handler.js +25 -0
- package/dist/lib/unknown-command-handler.js.map +1 -0
- package/dist/lib/url-validator.d.ts.map +1 -1
- package/dist/lib/url-validator.js +5 -1
- package/dist/lib/url-validator.js.map +1 -1
- package/dist/templates/rules/antigravity.d.ts +6 -0
- package/dist/templates/rules/antigravity.d.ts.map +1 -0
- package/dist/templates/rules/antigravity.js +30 -0
- package/dist/templates/rules/antigravity.js.map +1 -0
- package/dist/templates/rules/claude-code.d.ts +6 -0
- package/dist/templates/rules/claude-code.d.ts.map +1 -0
- package/dist/templates/rules/claude-code.js +32 -0
- package/dist/templates/rules/claude-code.js.map +1 -0
- package/dist/templates/rules/cline.d.ts +6 -0
- package/dist/templates/rules/cline.d.ts.map +1 -0
- package/dist/templates/rules/cline.js +35 -0
- package/dist/templates/rules/cline.js.map +1 -0
- package/dist/templates/rules/codex.d.ts +6 -0
- package/dist/templates/rules/codex.d.ts.map +1 -0
- package/dist/templates/rules/codex.js +37 -0
- package/dist/templates/rules/codex.js.map +1 -0
- package/dist/templates/rules/continue.d.ts +6 -0
- package/dist/templates/rules/continue.d.ts.map +1 -0
- package/dist/templates/rules/continue.js +31 -0
- package/dist/templates/rules/continue.js.map +1 -0
- package/dist/templates/rules/core-rules.d.ts +6 -0
- package/dist/templates/rules/core-rules.d.ts.map +1 -0
- package/dist/templates/rules/core-rules.js +33 -0
- package/dist/templates/rules/core-rules.js.map +1 -0
- package/dist/templates/rules/cursor.d.ts +6 -0
- package/dist/templates/rules/cursor.d.ts.map +1 -0
- package/dist/templates/rules/cursor.js +29 -0
- package/dist/templates/rules/cursor.js.map +1 -0
- package/dist/templates/rules/gemini.d.ts +6 -0
- package/dist/templates/rules/gemini.d.ts.map +1 -0
- package/dist/templates/rules/gemini.js +30 -0
- package/dist/templates/rules/gemini.js.map +1 -0
- package/dist/templates/rules/github-copilot.d.ts +6 -0
- package/dist/templates/rules/github-copilot.d.ts.map +1 -0
- package/dist/templates/rules/github-copilot.js +42 -0
- package/dist/templates/rules/github-copilot.js.map +1 -0
- package/dist/templates/rules/index.d.ts +13 -0
- package/dist/templates/rules/index.d.ts.map +1 -0
- package/dist/templates/rules/index.js +13 -0
- package/dist/templates/rules/index.js.map +1 -0
- package/dist/templates/rules/opencode.d.ts +6 -0
- package/dist/templates/rules/opencode.d.ts.map +1 -0
- package/dist/templates/rules/opencode.js +30 -0
- package/dist/templates/rules/opencode.js.map +1 -0
- package/dist/templates/rules/windsurf.d.ts +6 -0
- package/dist/templates/rules/windsurf.d.ts.map +1 -0
- package/dist/templates/rules/windsurf.js +24 -0
- package/dist/templates/rules/windsurf.js.map +1 -0
- package/dist/templates/rules/zed.d.ts +6 -0
- package/dist/templates/rules/zed.d.ts.map +1 -0
- package/dist/templates/rules/zed.js +34 -0
- package/dist/templates/rules/zed.js.map +1 -0
- package/dist/templates/skills/index.d.ts +26 -0
- package/dist/templates/skills/index.d.ts.map +1 -0
- package/dist/templates/skills/index.js +75 -0
- package/dist/templates/skills/index.js.map +1 -0
- package/dist/templates/skills/knowledgine-capture/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-capture/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-capture/references.js +414 -0
- package/dist/templates/skills/knowledgine-capture/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.js +97 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-debrief/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/references.js +140 -0
- package/dist/templates/skills/knowledgine-debrief/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.js +74 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-explain/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-explain/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-explain/references.js +183 -0
- package/dist/templates/skills/knowledgine-explain/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-explain/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-explain/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-explain/skill-md.js +89 -0
- package/dist/templates/skills/knowledgine-explain/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-feedback/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/references.js +214 -0
- package/dist/templates/skills/knowledgine-feedback/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.js +107 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-ingest/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/references.js +243 -0
- package/dist/templates/skills/knowledgine-ingest/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.js +80 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-recall/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-recall/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-recall/references.js +207 -0
- package/dist/templates/skills/knowledgine-recall/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-recall/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-recall/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-recall/skill-md.js +86 -0
- package/dist/templates/skills/knowledgine-recall/skill-md.js.map +1 -0
- package/dist/templates/skills/knowledgine-suggest/references.d.ts +2 -0
- package/dist/templates/skills/knowledgine-suggest/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-suggest/references.js +121 -0
- package/dist/templates/skills/knowledgine-suggest/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-suggest/skill-md.js +94 -0
- package/dist/templates/skills/knowledgine-suggest/skill-md.js.map +1 -0
- package/fixtures/demo/notes/api-design-decisions.md +7 -2
- package/fixtures/demo/notes/auth-debugging.md +8 -0
- package/fixtures/demo/notes/ci-cd-pipeline.md +7 -0
- package/fixtures/demo/notes/code-review-notes.md +7 -0
- package/fixtures/demo/notes/database-optimization.md +8 -0
- package/fixtures/demo/notes/docker-troubleshooting.md +7 -1
- package/fixtures/demo/notes/react-performance.md +7 -6
- package/fixtures/demo/notes/typescript-migration.md +13 -4
- package/package.json +13 -4
package/dist/commands/plugins.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { mkdirSync } from "fs";
|
|
3
|
-
import { defineConfig, createDatabase, Migrator, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
3
|
+
import { defineConfig, resolveDefaultPath, createDatabase, Migrator, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
4
4
|
import { CursorStore } from "@knowledgine/ingest";
|
|
5
5
|
import { createDefaultRegistry } from "../lib/plugin-loader.js";
|
|
6
|
+
import { createTable } from "../lib/ui/index.js";
|
|
6
7
|
export async function pluginsListCommand() {
|
|
7
8
|
const registry = createDefaultRegistry();
|
|
8
9
|
const plugins = registry.list();
|
|
9
|
-
const
|
|
10
|
-
console.error(header);
|
|
11
|
-
for (const plugin of plugins) {
|
|
10
|
+
const rows = plugins.map((plugin) => {
|
|
12
11
|
const { id, name, version, priority } = plugin.manifest;
|
|
13
|
-
|
|
14
|
-
}
|
|
12
|
+
return [id, name, version, String(priority)];
|
|
13
|
+
});
|
|
14
|
+
console.error(createTable({ head: ["ID", "Name", "Version", "Priority"], rows }));
|
|
15
15
|
}
|
|
16
16
|
export async function pluginsStatusCommand(options) {
|
|
17
|
-
const rootPath =
|
|
17
|
+
const rootPath = resolveDefaultPath(options.path);
|
|
18
18
|
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
19
19
|
mkdirSync(knowledgineDir, { recursive: true });
|
|
20
20
|
const config = defineConfig({ rootPath });
|
|
@@ -25,16 +25,17 @@ export async function pluginsStatusCommand(options) {
|
|
|
25
25
|
const cursorMap = new Map(cursors.map((c) => [c.pluginId, c]));
|
|
26
26
|
const registry = createDefaultRegistry();
|
|
27
27
|
const plugins = registry.list();
|
|
28
|
-
const
|
|
29
|
-
console.error(header);
|
|
30
|
-
for (const plugin of plugins) {
|
|
28
|
+
const rows = plugins.map((plugin) => {
|
|
31
29
|
const cursor = cursorMap.get(plugin.manifest.id);
|
|
32
30
|
const lastIngest = cursor
|
|
33
31
|
? cursor.lastIngestAt.toISOString().replace("T", " ").slice(0, 19)
|
|
34
32
|
: "never";
|
|
35
|
-
const checkpoint = cursor
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
const checkpoint = cursor
|
|
34
|
+
? cursor.checkpoint.slice(0, 20) + (cursor.checkpoint.length > 20 ? "..." : "")
|
|
35
|
+
: "-";
|
|
36
|
+
return [plugin.manifest.id, lastIngest, checkpoint];
|
|
37
|
+
});
|
|
38
|
+
console.error(createTable({ head: ["Plugin", "Last Ingest", "Checkpoint"], rows }));
|
|
38
39
|
db.close();
|
|
39
40
|
}
|
|
40
41
|
//# sourceMappingURL=plugins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
export interface RecallCommandOptions {
|
|
3
|
+
related?: string;
|
|
4
|
+
format?: string;
|
|
5
|
+
path?: string;
|
|
6
|
+
limit?: string;
|
|
7
|
+
agentic?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function registerRecallCommand(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=recall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoND,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU5D"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { loadConfig, resolveDefaultPath, createDatabase, Migrator, KnowledgeRepository, GraphRepository, KnowledgeService, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
4
|
+
function toYaml(obj, indent = 0) {
|
|
5
|
+
const pad = " ".repeat(indent);
|
|
6
|
+
if (obj === null || obj === undefined) {
|
|
7
|
+
return "null";
|
|
8
|
+
}
|
|
9
|
+
if (typeof obj === "boolean" || typeof obj === "number") {
|
|
10
|
+
return String(obj);
|
|
11
|
+
}
|
|
12
|
+
if (typeof obj === "string") {
|
|
13
|
+
// エスケープが必要な文字を含む場合はクォート
|
|
14
|
+
if (obj.includes("\n") || obj.includes(":") || obj.includes("#") || obj.startsWith(" ")) {
|
|
15
|
+
return `"${obj.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n")}"`;
|
|
16
|
+
}
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(obj)) {
|
|
20
|
+
if (obj.length === 0)
|
|
21
|
+
return "[]";
|
|
22
|
+
return obj
|
|
23
|
+
.map((item) => {
|
|
24
|
+
const val = toYaml(item, indent + 1);
|
|
25
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
26
|
+
return `${pad}- \n${val}`;
|
|
27
|
+
}
|
|
28
|
+
return `${pad}- ${val}`;
|
|
29
|
+
})
|
|
30
|
+
.join("\n");
|
|
31
|
+
}
|
|
32
|
+
if (typeof obj === "object") {
|
|
33
|
+
const entries = Object.entries(obj);
|
|
34
|
+
if (entries.length === 0)
|
|
35
|
+
return "{}";
|
|
36
|
+
return entries
|
|
37
|
+
.map(([key, val]) => {
|
|
38
|
+
if (typeof val === "object" && val !== null && !Array.isArray(val)) {
|
|
39
|
+
return `${pad}${key}:\n${toYaml(val, indent + 1)}`;
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(val) && val.length > 0 && typeof val[0] === "object") {
|
|
42
|
+
return `${pad}${key}:\n${toYaml(val, indent + 1)}`;
|
|
43
|
+
}
|
|
44
|
+
return `${pad}${key}: ${toYaml(val, indent)}`;
|
|
45
|
+
})
|
|
46
|
+
.join("\n");
|
|
47
|
+
}
|
|
48
|
+
return String(obj);
|
|
49
|
+
}
|
|
50
|
+
function formatRecallSearchPlain(query, result) {
|
|
51
|
+
const lines = [];
|
|
52
|
+
if (result.results.length === 0) {
|
|
53
|
+
return `No results for "${query}".`;
|
|
54
|
+
}
|
|
55
|
+
lines.push(`Recall results for "${query}" (${result.totalResults} matches):`);
|
|
56
|
+
lines.push("");
|
|
57
|
+
for (let i = 0; i < result.results.length; i++) {
|
|
58
|
+
const r = result.results[i];
|
|
59
|
+
lines.push(` ${i + 1}. [${r.score.toFixed(2)}] ${r.filePath}`);
|
|
60
|
+
lines.push(` ${r.title}`);
|
|
61
|
+
if (r.matchReason.length > 0) {
|
|
62
|
+
lines.push(` Reason: ${r.matchReason.filter((m) => !m.startsWith("Warning:")).join(", ")}`);
|
|
63
|
+
}
|
|
64
|
+
lines.push("");
|
|
65
|
+
}
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
function formatRecallRelatedPlain(result) {
|
|
69
|
+
const lines = [];
|
|
70
|
+
lines.push(`Recall for note ID: ${result.noteId}`);
|
|
71
|
+
lines.push("");
|
|
72
|
+
// 関連ノート
|
|
73
|
+
if (result.relatedNotes.length > 0) {
|
|
74
|
+
lines.push("Related Notes:");
|
|
75
|
+
for (const n of result.relatedNotes) {
|
|
76
|
+
lines.push(` [${n.score.toFixed(2)}] ${n.filePath} ${n.title}`);
|
|
77
|
+
if (n.reasons.length > 0) {
|
|
78
|
+
lines.push(` Reason: ${n.reasons.join(", ")}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
lines.push("");
|
|
82
|
+
}
|
|
83
|
+
// PSP(Problem-Solution Pairs)
|
|
84
|
+
if (result.problemSolutionPairs.length > 0) {
|
|
85
|
+
lines.push("Problem-Solution Pairs:");
|
|
86
|
+
for (const p of result.problemSolutionPairs) {
|
|
87
|
+
lines.push(` [confidence: ${p.confidence.toFixed(2)}]`);
|
|
88
|
+
lines.push(` Problem: ${p.problemPattern}`);
|
|
89
|
+
lines.push(` Solution: ${p.solutionPattern}`);
|
|
90
|
+
}
|
|
91
|
+
lines.push("");
|
|
92
|
+
}
|
|
93
|
+
// グラフ関係
|
|
94
|
+
if (result.graphRelations.length > 0) {
|
|
95
|
+
lines.push("Knowledge Graph Relations:");
|
|
96
|
+
for (const g of result.graphRelations) {
|
|
97
|
+
lines.push(` [${g.entityType}] ${g.name}`);
|
|
98
|
+
for (const related of g.relatedEntities) {
|
|
99
|
+
lines.push(` -> [${related.entityType}] ${related.name} (${related.hops} hop${related.hops !== 1 ? "s" : ""})`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lines.push("");
|
|
103
|
+
}
|
|
104
|
+
if (result.relatedNotes.length === 0 &&
|
|
105
|
+
result.problemSolutionPairs.length === 0 &&
|
|
106
|
+
result.graphRelations.length === 0) {
|
|
107
|
+
lines.push("No related knowledge found.");
|
|
108
|
+
}
|
|
109
|
+
return lines.join("\n");
|
|
110
|
+
}
|
|
111
|
+
async function recallAction(query, options) {
|
|
112
|
+
const rootPath = resolveDefaultPath(options.path);
|
|
113
|
+
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
114
|
+
if (!existsSync(knowledgineDir)) {
|
|
115
|
+
console.error('Not initialized. Run "knowledgine init --path <dir>" first.');
|
|
116
|
+
process.exitCode = 1;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const format = options.format ?? "plain";
|
|
120
|
+
if (!["json", "yaml", "plain"].includes(format)) {
|
|
121
|
+
console.error("Error: --format must be one of: json, yaml, plain");
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const limit = options.limit ? parseInt(options.limit, 10) : 10;
|
|
126
|
+
if (isNaN(limit) || limit < 1) {
|
|
127
|
+
console.error("Error: --limit must be a positive integer");
|
|
128
|
+
process.exitCode = 1;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const config = loadConfig(rootPath);
|
|
132
|
+
const db = createDatabase(config.dbPath);
|
|
133
|
+
try {
|
|
134
|
+
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
135
|
+
const repository = new KnowledgeRepository(db);
|
|
136
|
+
const graphRepository = new GraphRepository(db);
|
|
137
|
+
const service = new KnowledgeService({ repository, rootPath, graphRepository });
|
|
138
|
+
// --related モード
|
|
139
|
+
if (options.related !== undefined) {
|
|
140
|
+
const noteId = parseInt(options.related, 10);
|
|
141
|
+
if (isNaN(noteId) || noteId < 1) {
|
|
142
|
+
console.error("Error: --related must be a positive integer (note ID)");
|
|
143
|
+
process.exitCode = 1;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const result = await service.findRelated({ noteId, limit });
|
|
147
|
+
if (format === "json") {
|
|
148
|
+
console.log(JSON.stringify({ ok: true, command: "recall", result }, null, 2));
|
|
149
|
+
}
|
|
150
|
+
else if (format === "yaml") {
|
|
151
|
+
console.log(toYaml({ ok: true, command: "recall", result }));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.error(formatRecallRelatedPlain(result));
|
|
155
|
+
}
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
// クエリ検索モード
|
|
159
|
+
if (!query) {
|
|
160
|
+
console.error("Error: query argument is required (or use --related <noteId>)");
|
|
161
|
+
process.exitCode = 1;
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const result = await service.search({
|
|
165
|
+
query,
|
|
166
|
+
limit,
|
|
167
|
+
mode: "keyword",
|
|
168
|
+
agentic: options.agentic,
|
|
169
|
+
});
|
|
170
|
+
if (format === "json") {
|
|
171
|
+
console.log(JSON.stringify({ ok: true, command: "recall", result }, null, 2));
|
|
172
|
+
}
|
|
173
|
+
else if (format === "yaml") {
|
|
174
|
+
console.log(toYaml({ ok: true, command: "recall", result }));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
console.error(formatRecallSearchPlain(query, result));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
182
|
+
process.exitCode = 1;
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
db.close();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export function registerRecallCommand(program) {
|
|
189
|
+
program
|
|
190
|
+
.command("recall [query]")
|
|
191
|
+
.description("Recall knowledge from the knowledge base")
|
|
192
|
+
.option("--related <noteId>", "Find related knowledge by note ID")
|
|
193
|
+
.option("--format <format>", "Output format: json, yaml, plain", "plain")
|
|
194
|
+
.option("--path <dir>", "Project root path")
|
|
195
|
+
.option("--limit <n>", "Max results", "10")
|
|
196
|
+
.option("--agentic", "Include deprecated notes (agentic mode)")
|
|
197
|
+
.action(recallAction);
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ export interface SearchCommandOptions {
|
|
|
6
6
|
related?: string;
|
|
7
7
|
relatedFile?: string;
|
|
8
8
|
path?: string;
|
|
9
|
+
fallback?: boolean;
|
|
10
|
+
agentic?: boolean;
|
|
11
|
+
includeDeprecated?: boolean;
|
|
9
12
|
}
|
|
10
13
|
export declare function searchCommand(query: string, options: SearchCommandOptions): Promise<void>;
|
|
11
14
|
/** @deprecated Use searchCommand with format option instead */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2I/F;AAwBD,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,IAAI,CAiBN"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { existsSync } from "fs";
|
|
3
|
-
import { loadConfig, createDatabase, Migrator, KnowledgeRepository,
|
|
3
|
+
import { loadConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, KnowledgeService, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, } from "@knowledgine/core";
|
|
4
4
|
import { getDemoNotesPath } from "./demo.js";
|
|
5
5
|
import { formatSearchResults as formatToolSearchResults, formatRelatedNotes, } from "../lib/formatter.js";
|
|
6
|
+
import { colors, symbols } from "../lib/ui/index.js";
|
|
6
7
|
export async function searchCommand(query, options) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
: options.path
|
|
10
|
-
? resolve(options.path)
|
|
11
|
-
: resolve(process.cwd());
|
|
8
|
+
const fallbackAllowed = options.fallback !== false;
|
|
9
|
+
const rootPath = options.demo ? getDemoNotesPath() : resolveDefaultPath(options.path);
|
|
12
10
|
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
13
11
|
if (!existsSync(knowledgineDir)) {
|
|
14
12
|
console.error(options.demo
|
|
@@ -20,6 +18,9 @@ export async function searchCommand(query, options) {
|
|
|
20
18
|
const config = loadConfig(rootPath);
|
|
21
19
|
const db = createDatabase(config.dbPath);
|
|
22
20
|
try {
|
|
21
|
+
if (config.embedding?.enabled) {
|
|
22
|
+
await loadSqliteVecExtension(db);
|
|
23
|
+
}
|
|
23
24
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
24
25
|
const repository = new KnowledgeRepository(db);
|
|
25
26
|
const graphRepository = new GraphRepository(db);
|
|
@@ -54,15 +55,56 @@ export async function searchCommand(query, options) {
|
|
|
54
55
|
}
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
58
|
+
// Initialize embedding provider if semantic is enabled and requested
|
|
59
|
+
let embeddingProvider;
|
|
60
|
+
if (mode !== "keyword" && config.embedding?.enabled) {
|
|
61
|
+
const modelManager = new ModelManager();
|
|
62
|
+
if (modelManager.isModelAvailable()) {
|
|
63
|
+
embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// --no-fallback: semantic/hybrid が利用できない場合はエラー終了
|
|
67
|
+
const semanticUnavailable = mode !== "keyword" && (!config.embedding?.enabled || !embeddingProvider);
|
|
68
|
+
if (!fallbackAllowed && semanticUnavailable) {
|
|
69
|
+
console.error(`${symbols.error} ${colors.error(`${mode} search is not available and --no-fallback was specified.`)}`);
|
|
70
|
+
console.error(`${symbols.arrow} ${colors.hint("Run 'knowledgine upgrade --semantic' to enable semantic search.")}`);
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
57
74
|
// 通常の検索モード
|
|
58
|
-
const service = new KnowledgeService({
|
|
59
|
-
|
|
75
|
+
const service = new KnowledgeService({
|
|
76
|
+
repository,
|
|
77
|
+
rootPath,
|
|
78
|
+
graphRepository,
|
|
79
|
+
embeddingProvider,
|
|
80
|
+
});
|
|
81
|
+
const result = await service.search({
|
|
82
|
+
query,
|
|
83
|
+
limit,
|
|
84
|
+
mode,
|
|
85
|
+
agentic: options.agentic,
|
|
86
|
+
includeDeprecated: options.includeDeprecated,
|
|
87
|
+
});
|
|
88
|
+
const warnings = result.results.flatMap((r) => r.matchReason.filter((m) => m.startsWith("Warning:")));
|
|
89
|
+
if (warnings.length > 0) {
|
|
90
|
+
console.error(`\n${symbols.warning} ${colors.warning(warnings[0])}\n`);
|
|
91
|
+
}
|
|
92
|
+
// セマンティック検索が要求されたが利用不可の場合の警告(フォールバック許可時のみ)
|
|
93
|
+
if (semanticUnavailable) {
|
|
94
|
+
console.error(`${symbols.warning} ${colors.warning("Semantic search is not configured. Falling back to FTS5.")}`);
|
|
95
|
+
console.error(`${symbols.arrow} ${colors.hint("Run 'knowledgine upgrade --semantic' to enable semantic search.")}`);
|
|
96
|
+
console.error("");
|
|
97
|
+
}
|
|
98
|
+
// actualMode が要求モードと異なる場合(フォールバック発生)の通知
|
|
99
|
+
if (result.actualMode !== result.mode) {
|
|
100
|
+
console.error(`${symbols.info} ${colors.hint(`Requested mode: ${result.mode}, actual mode used: ${result.actualMode}`)}`);
|
|
101
|
+
}
|
|
60
102
|
if (format === "json") {
|
|
61
103
|
console.log(JSON.stringify({ ok: true, command: "search", result }));
|
|
62
104
|
}
|
|
63
105
|
else if (format === "table") {
|
|
64
106
|
if (result.results.length === 0) {
|
|
65
|
-
console.error(`No results for "${query}".`);
|
|
107
|
+
console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
|
|
66
108
|
}
|
|
67
109
|
else {
|
|
68
110
|
console.error(formatToolSearchResults(result.results, "table"));
|
|
@@ -84,10 +126,10 @@ export async function searchCommand(query, options) {
|
|
|
84
126
|
/** 後方互換のためのレガシー出力形式 */
|
|
85
127
|
function formatLegacySearchResults(query, results) {
|
|
86
128
|
if (results.length === 0) {
|
|
87
|
-
console.error(`No results for "${query}".`);
|
|
129
|
+
console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
|
|
88
130
|
return;
|
|
89
131
|
}
|
|
90
|
-
console.error(`Results for "${query}" (${results.length} matches):`);
|
|
132
|
+
console.error(colors.bold(`Results for "${query}" (${results.length} matches):`));
|
|
91
133
|
console.error("");
|
|
92
134
|
for (let i = 0; i < results.length; i++) {
|
|
93
135
|
const r = results[i];
|
|
@@ -100,10 +142,10 @@ function formatLegacySearchResults(query, results) {
|
|
|
100
142
|
/** @deprecated Use searchCommand with format option instead */
|
|
101
143
|
export function formatSearchResults(query, results) {
|
|
102
144
|
if (results.length === 0) {
|
|
103
|
-
console.error(`No results for "${query}".`);
|
|
145
|
+
console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
|
|
104
146
|
return;
|
|
105
147
|
}
|
|
106
|
-
console.error(`Results for "${query}" (${results.length} matches):`);
|
|
148
|
+
console.error(colors.bold(`Results for "${query}" (${results.length} matches):`));
|
|
107
149
|
console.error("");
|
|
108
150
|
for (let i = 0; i < results.length; i++) {
|
|
109
151
|
const r = results[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EACL,UAAU,EACV,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|