pi-harness-runtime 0.10.27 → 0.10.43

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 (133) hide show
  1. package/.pi/plugins/herdr-clipboard/herdr-plugin.toml +22 -0
  2. package/.pi/plugins/herdr-clipboard/start-bridge.sh +29 -0
  3. package/.pi/plugins/herdr-clipboard/tmux-watch.sh +39 -0
  4. package/CHANGELOG.md +19 -0
  5. package/README.md +87 -1
  6. package/config.toml.example +35 -0
  7. package/package.json +5 -3
  8. package/packages/architecture-generator/dist/adr.d.ts +1 -1
  9. package/packages/architecture-generator/dist/adr.d.ts.map +1 -1
  10. package/packages/architecture-generator/dist/adr.js +2 -2
  11. package/packages/architecture-generator/dist/adr.js.map +1 -1
  12. package/packages/architecture-generator/dist/index.d.ts +3 -3
  13. package/packages/architecture-generator/dist/index.js +3 -3
  14. package/packages/architecture-generator/dist/mermaid.d.ts +1 -1
  15. package/packages/architecture-generator/dist/mermaid.d.ts.map +1 -1
  16. package/packages/architecture-generator/dist/mermaid.js +20 -20
  17. package/packages/architecture-generator/dist/mermaid.js.map +1 -1
  18. package/packages/architecture-generator/dist/types.d.ts +2 -2
  19. package/packages/architecture-generator/dist/types.d.ts.map +1 -1
  20. package/packages/architecture-generator/src/adr.ts +16 -16
  21. package/packages/architecture-generator/src/index.ts +3 -3
  22. package/packages/architecture-generator/src/mermaid.ts +48 -54
  23. package/packages/architecture-generator/src/types.ts +15 -15
  24. package/packages/capability-registry/src/types.js +10 -0
  25. package/packages/clipboard/dist/src/copy-sync.d.ts.map +1 -1
  26. package/packages/clipboard/dist/src/copy-sync.js +45 -3
  27. package/packages/clipboard/dist/src/copy-sync.js.map +1 -1
  28. package/packages/clipboard/dist/src/index.d.ts +1 -0
  29. package/packages/clipboard/dist/src/index.d.ts.map +1 -1
  30. package/packages/clipboard/dist/src/index.js +1 -0
  31. package/packages/clipboard/dist/src/index.js.map +1 -1
  32. package/packages/clipboard/dist/src/paste-bridge.d.ts +19 -0
  33. package/packages/clipboard/dist/src/paste-bridge.d.ts.map +1 -0
  34. package/packages/clipboard/dist/src/paste-bridge.js +78 -0
  35. package/packages/clipboard/dist/src/paste-bridge.js.map +1 -0
  36. package/packages/clipboard/src/copy-sync.ts +52 -3
  37. package/packages/clipboard/src/index.ts +1 -0
  38. package/packages/clipboard/src/paste-bridge.ts +86 -0
  39. package/packages/clipboard-plugin/dist/index.d.ts +28 -0
  40. package/packages/clipboard-plugin/dist/index.d.ts.map +1 -0
  41. package/packages/clipboard-plugin/dist/index.js +64 -0
  42. package/packages/clipboard-plugin/dist/index.js.map +1 -0
  43. package/packages/clipboard-plugin/dist/types.d.ts +30 -0
  44. package/packages/clipboard-plugin/dist/types.d.ts.map +1 -0
  45. package/packages/clipboard-plugin/dist/types.js +5 -0
  46. package/packages/clipboard-plugin/dist/types.js.map +1 -0
  47. package/packages/clipboard-plugin/src/index.ts +74 -0
  48. package/packages/clipboard-plugin/src/types.ts +30 -0
  49. package/packages/file-copy-helper/dist/src/extension.js +84 -25
  50. package/packages/file-copy-helper/src/extension.debug.ts +226 -0
  51. package/packages/file-copy-helper/src/extension.ts +89 -59
  52. package/packages/knowledge-graph/dist/graph-extractor.d.ts +1 -1
  53. package/packages/knowledge-graph/dist/graph-extractor.d.ts.map +1 -1
  54. package/packages/knowledge-graph/dist/graph-extractor.js +46 -55
  55. package/packages/knowledge-graph/dist/graph-extractor.js.map +1 -1
  56. package/packages/knowledge-graph/dist/index.d.ts +4 -4
  57. package/packages/knowledge-graph/dist/index.js +4 -4
  58. package/packages/knowledge-graph/dist/mcp-client.d.ts +2 -2
  59. package/packages/knowledge-graph/dist/mcp-client.d.ts.map +1 -1
  60. package/packages/knowledge-graph/dist/mcp-client.js +22 -22
  61. package/packages/knowledge-graph/dist/mcp-client.js.map +1 -1
  62. package/packages/knowledge-graph/dist/provenance-linker.d.ts +1 -1
  63. package/packages/knowledge-graph/dist/provenance-linker.d.ts.map +1 -1
  64. package/packages/knowledge-graph/dist/provenance-linker.js +14 -15
  65. package/packages/knowledge-graph/dist/provenance-linker.js.map +1 -1
  66. package/packages/knowledge-graph/dist/types.d.ts +2 -2
  67. package/packages/knowledge-graph/dist/types.d.ts.map +1 -1
  68. package/packages/knowledge-graph/src/graph-extractor.ts +263 -280
  69. package/packages/knowledge-graph/src/index.ts +4 -4
  70. package/packages/knowledge-graph/src/mcp-client.ts +188 -197
  71. package/packages/knowledge-graph/src/provenance-linker.ts +69 -73
  72. package/packages/knowledge-graph/src/types.ts +46 -46
  73. package/packages/milestone-manager/dist/engine.d.ts +1 -1
  74. package/packages/milestone-manager/dist/engine.d.ts.map +1 -1
  75. package/packages/milestone-manager/dist/engine.js +7 -9
  76. package/packages/milestone-manager/dist/engine.js.map +1 -1
  77. package/packages/milestone-manager/dist/index.d.ts +2 -2
  78. package/packages/milestone-manager/dist/index.js +2 -2
  79. package/packages/milestone-manager/dist/types.d.ts +2 -2
  80. package/packages/milestone-manager/dist/types.d.ts.map +1 -1
  81. package/packages/milestone-manager/src/engine.ts +83 -91
  82. package/packages/milestone-manager/src/index.ts +2 -2
  83. package/packages/milestone-manager/src/types.ts +13 -13
  84. package/packages/notification/dist/adapters/line-adapter.d.ts +17 -0
  85. package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -0
  86. package/packages/notification/dist/adapters/line-adapter.js +99 -0
  87. package/packages/notification/dist/adapters/line-adapter.js.map +1 -0
  88. package/packages/notification/dist/index.d.ts +1 -0
  89. package/packages/notification/dist/index.d.ts.map +1 -1
  90. package/packages/notification/dist/index.js +1 -0
  91. package/packages/notification/dist/index.js.map +1 -1
  92. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  93. package/packages/notification/dist/notification-center.js +4 -0
  94. package/packages/notification/dist/notification-center.js.map +1 -1
  95. package/packages/notification/dist/types.d.ts +6 -2
  96. package/packages/notification/dist/types.d.ts.map +1 -1
  97. package/packages/notification/src/adapters/line-adapter.ts +119 -0
  98. package/packages/notification/src/index.ts +1 -0
  99. package/packages/notification/src/notification-center.ts +6 -0
  100. package/packages/notification/src/types.ts +7 -2
  101. package/packages/project-bootstrap/dist/bootstrap.d.ts +1 -1
  102. package/packages/project-bootstrap/dist/bootstrap.d.ts.map +1 -1
  103. package/packages/project-bootstrap/dist/bootstrap.js +37 -45
  104. package/packages/project-bootstrap/dist/bootstrap.js.map +1 -1
  105. package/packages/project-bootstrap/dist/frappe.d.ts +1 -1
  106. package/packages/project-bootstrap/dist/frappe.d.ts.map +1 -1
  107. package/packages/project-bootstrap/dist/frappe.js +34 -34
  108. package/packages/project-bootstrap/dist/frappe.js.map +1 -1
  109. package/packages/project-bootstrap/dist/index.d.ts +5 -5
  110. package/packages/project-bootstrap/dist/index.js +5 -5
  111. package/packages/project-bootstrap/dist/minimal.d.ts +1 -1
  112. package/packages/project-bootstrap/dist/minimal.js +13 -13
  113. package/packages/project-bootstrap/dist/minimal.js.map +1 -1
  114. package/packages/project-bootstrap/dist/types.d.ts +1 -1
  115. package/packages/project-bootstrap/dist/types.d.ts.map +1 -1
  116. package/packages/project-bootstrap/dist/typescript.d.ts +1 -1
  117. package/packages/project-bootstrap/dist/typescript.d.ts.map +1 -1
  118. package/packages/project-bootstrap/dist/typescript.js +38 -38
  119. package/packages/project-bootstrap/dist/typescript.js.map +1 -1
  120. package/packages/project-bootstrap/src/bootstrap.ts +121 -136
  121. package/packages/project-bootstrap/src/frappe.ts +65 -71
  122. package/packages/project-bootstrap/src/index.ts +5 -5
  123. package/packages/project-bootstrap/src/minimal.ts +31 -31
  124. package/packages/project-bootstrap/src/types.ts +38 -38
  125. package/packages/project-bootstrap/src/typescript.ts +69 -78
  126. package/packages/provider-router/dist/src/types.js +1 -1
  127. package/packages/write-review/src/index.ts +47 -0
  128. package/packages/write-review/src/injection.ts +21 -1
  129. package/prompts/agents/reviewer.md +57 -0
  130. package/prompts/agents/writer.md +42 -0
  131. package/prompts/slash-commands.md +40 -0
  132. package/prompts/write-review.md +50 -0
  133. package/scripts/copy-plugins.js +56 -0
@@ -1,8 +1,10 @@
1
1
  /**
2
- * file-copy-helper extension
2
+ * file-copy-helper extension (DEBUG VERSION)
3
3
  *
4
4
  * Injects "use cp instead of writing from scratch" reminder when user
5
5
  * asks to mimic, copy, clone, or replicate files/folders between locations.
6
+ *
7
+ * DEBUG: All events and rule evaluations logged to /tmp/file-copy-helper-debug.log
6
8
  */
7
9
 
8
10
  import type {
@@ -10,32 +12,26 @@ import type {
10
12
  InputEvent,
11
13
  InputEventResult,
12
14
  } from "@earendil-works/pi-coding-agent";
15
+ import * as fs from "fs";
16
+
17
+ // DEBUG: Write to file instead of TUI
18
+ const DEBUG_LOG = "/tmp/file-copy-helper-debug.log";
19
+
20
+ function debugLog(label: string, data: unknown): void {
21
+ const timestamp = new Date().toISOString();
22
+ const entry = `[${timestamp}] ${label}: ${JSON.stringify(data, null, 2)}\n`;
23
+ fs.appendFileSync(DEBUG_LOG, entry);
24
+ }
13
25
 
14
26
  // Keywords that trigger the copy rule injection
15
- const COPY_KEYWORDS = [
16
- "mimic",
17
- "copy from",
18
- "copy to",
19
- "clone from",
20
- "clone to",
21
- "replicate",
22
- "port from",
23
- "migrate from",
24
- "bring from",
25
- "move from",
26
- ];
27
+ // MUST have explicit mimic/copy/clone/replicate intent + source/dest context
28
+ const COPY_KEYWORDS = ["mimic", "replicate", "clone"];
27
29
 
28
- // When agent starts reading source files (bad behavior to break)
29
- const READ_SOURCE_TRIGGERS = [
30
- "expand",
31
- "read ",
32
- "view ",
33
- "cat ",
34
- "catting",
35
- "reading the file",
36
- "reading file",
37
- "lets read",
38
- ];
30
+ // Must have destination context to trigger (avoids false positives)
31
+ const COPY_DEST_CONTEXT = ["to ", "into ", "/dest/", "/target/", "over to"];
32
+
33
+ // Must have source context to trigger
34
+ const COPY_SOURCE_CONTEXT = ["from ", "source", "/source/", "orig"];
39
35
 
40
36
  // When agent sees import/module errors (needs to copy those files too)
41
37
  const IMPORT_ERROR_TRIGGERS = [
@@ -81,17 +77,6 @@ sudo cp /source/*.tsx /dest/
81
77
  **Why**: Reading wastes time. The source files are complete - copying preserves everything exactly.
82
78
  `;
83
79
 
84
- // Lighter reminder when agent starts reading source
85
- const READ_WARNING = `
86
- ## STOP READING - JUST COPY
87
-
88
- You are about to read a source file. DO NOT read it.
89
-
90
- Just run: sudo cp /path/to/source /path/to/dest
91
-
92
- Copying is instant and preserves exact code. Reading is unnecessary.
93
- `;
94
-
95
80
  // When agent sees import errors - copy those files too!
96
81
  const IMPORT_ERROR_RULE = `
97
82
  ## IMPORT ERRORS? COPY THOSE FILES TOO!
@@ -122,70 +107,115 @@ sudo cp /source/path/components/notifications-provider.tsx /dest/path/components
122
107
 
123
108
  /**
124
109
  * Check if text contains copy-related keywords
110
+ * Requires: explicit intent (mimic/copy/clone/replicate) AND destination context
125
111
  */
126
- function shouldInjectCopyRule(text: string): boolean {
112
+ function shouldInjectCopyRule(text: string): { triggered: boolean; reason: string } {
127
113
  const lower = text.toLowerCase();
128
- return COPY_KEYWORDS.some((keyword) => lower.includes(keyword));
129
- }
130
114
 
131
- /**
132
- * Check if text contains source file reading triggers
133
- */
134
- function shouldInjectReadWarning(text: string): boolean {
135
- const lower = text.toLowerCase();
136
- // Check if this looks like reading source files before copying
137
- const hasSourcePath = /(source|auto-|from-|orig)/i.test(text);
138
- const hasReadIntent = READ_SOURCE_TRIGGERS.some((t) => lower.includes(t));
139
- return hasSourcePath && hasReadIntent;
115
+ // Must have explicit mimic/copy/clone/replicate intent
116
+ const hasIntent = COPY_KEYWORDS.some((keyword) => lower.includes(keyword));
117
+ if (!hasIntent) {
118
+ return { triggered: false, reason: `No intent keyword found. Keywords: ${COPY_KEYWORDS.join(", ")}` };
119
+ }
120
+
121
+ // Must have destination context (avoids false positives on "copy this code" etc)
122
+ const hasDest = COPY_DEST_CONTEXT.some((ctx) => lower.includes(ctx));
123
+ if (!hasDest) {
124
+ return { triggered: false, reason: `No destination context found. Dest contexts: ${COPY_DEST_CONTEXT.join(", ")}` };
125
+ }
126
+
127
+ // Should have source context for full mimic behavior
128
+ const hasSource = COPY_SOURCE_CONTEXT.some((ctx) => lower.includes(ctx));
129
+ if (!hasSource) {
130
+ return { triggered: false, reason: `No source context found. Source contexts: ${COPY_SOURCE_CONTEXT.join(", ")}` };
131
+ }
132
+
133
+ return { triggered: true, reason: `All conditions met: hasIntent=${hasIntent}, hasDest=${hasDest}, hasSource=${hasSource}` };
140
134
  }
141
135
 
142
136
  /**
143
137
  * Check if text contains import error triggers
144
138
  */
145
- function shouldInjectImportErrorRule(text: string): boolean {
139
+ function shouldInjectImportErrorRule(text: string): { triggered: boolean; reason: string } {
146
140
  const lower = text.toLowerCase();
147
- return IMPORT_ERROR_TRIGGERS.some((t) => lower.includes(t));
141
+ const matchingTriggers = IMPORT_ERROR_TRIGGERS.filter((t) => lower.includes(t));
142
+
143
+ if (matchingTriggers.length === 0) {
144
+ return { triggered: false, reason: "No import error triggers found" };
145
+ }
146
+
147
+ return { triggered: true, reason: `Matched triggers: ${matchingTriggers.join(", ")}` };
148
148
  }
149
149
 
150
150
  /**
151
151
  * Register the file-copy-helper extension
152
152
  */
153
153
  export function registerFileCopyHelper(pi: ExtensionAPI): void {
154
+ // Clear debug log on startup
155
+ fs.writeFileSync(DEBUG_LOG, `[${new Date().toISOString()}] === DEBUG SESSION STARTED ===\n`);
156
+
154
157
  pi.on("input", (event: InputEvent): InputEventResult | undefined => {
158
+ // DEBUG: Log what we receive
159
+ debugLog("INPUT_EVENT", {
160
+ source: event.source,
161
+ textLength: event.text?.length,
162
+ textPreview: event.text?.substring(0, 200),
163
+ fullText: event.text,
164
+ });
165
+
155
166
  // Only process user input (not from extensions or RPC)
156
167
  if (event.source !== "interactive") {
168
+ debugLog("SKIP", "not interactive input - skipping");
157
169
  return;
158
170
  }
159
171
 
160
172
  const text = event.text.trim();
173
+ debugLog("PROCESSING_TEXT", {
174
+ text,
175
+ length: text.length,
176
+ hasMinLength: text.length >= 10,
177
+ });
178
+
161
179
  if (!text || text.length < 10) {
180
+ debugLog("SKIP", "text too short (< 10 chars)");
162
181
  return;
163
182
  }
164
183
 
165
184
  // Check if this is a copy/mimic request
166
- if (shouldInjectCopyRule(text)) {
185
+ const copyCheck = shouldInjectCopyRule(text);
186
+ debugLog("COPY_RULE_CHECK", {
187
+ triggered: copyCheck.triggered,
188
+ reason: copyCheck.reason,
189
+ matchingKeywords: COPY_KEYWORDS.filter(k => text.toLowerCase().includes(k)),
190
+ matchingDest: COPY_DEST_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
191
+ matchingSource: COPY_SOURCE_CONTEXT.filter(ctx => text.toLowerCase().includes(ctx)),
192
+ });
193
+
194
+ if (copyCheck.triggered) {
195
+ debugLog("INJECT", { rule: "COPY_RULE", reason: copyCheck.reason });
167
196
  return {
168
197
  action: "transform",
169
198
  text: text + COPY_RULE,
170
199
  };
171
200
  }
172
201
 
173
- // Warn if agent is about to read source files unnecessarily
174
- if (shouldInjectReadWarning(text)) {
175
- return {
176
- action: "transform",
177
- text: text + READ_WARNING,
178
- };
179
- }
180
-
181
202
  // Inject import error rule when agent sees missing imports
182
- if (shouldInjectImportErrorRule(text)) {
203
+ const importCheck = shouldInjectImportErrorRule(text);
204
+ debugLog("IMPORT_ERROR_CHECK", {
205
+ triggered: importCheck.triggered,
206
+ reason: importCheck.reason,
207
+ matchingTriggers: IMPORT_ERROR_TRIGGERS.filter(t => text.toLowerCase().includes(t)),
208
+ });
209
+
210
+ if (importCheck.triggered) {
211
+ debugLog("INJECT", { rule: "IMPORT_ERROR_RULE", reason: importCheck.reason });
183
212
  return {
184
213
  action: "transform",
185
214
  text: text + IMPORT_ERROR_RULE,
186
215
  };
187
216
  }
188
217
 
218
+ debugLog("NO_INJECTION", "no rule matched - passing through");
189
219
  return;
190
220
  });
191
221
  }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Extract nodes and edges from SKILL.md files.
5
5
  */
6
- import type { KnowledgeNode, KnowledgeEdge, KnowledgeGraph } from "./types.js";
6
+ import type { KnowledgeNode, KnowledgeEdge, KnowledgeGraph } from './types.js';
7
7
  /**
8
8
  * Extract a knowledge node from a SKILL.md file
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"graph-extractor.d.ts","sourceRoot":"","sources":["../src/graph-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,cAAc,EAEd,MAAM,YAAY,CAAC;AA4FpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,aAAa,CAef;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,aAAa,EAAE,CAwDjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACX,aAAa,CA0Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACb,aAAa,EAAE,CAmCjB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CA8EzB"}
1
+ {"version":3,"file":"graph-extractor.d.ts","sourceRoot":"","sources":["../src/graph-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAqF/F;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,aAAa,CAef;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,aAAa,EAAE,CAqDjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,aAAa,CA0Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAmCjB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CA4EzB"}
@@ -5,24 +5,24 @@
5
5
  */
6
6
  function parseSKILL(content) {
7
7
  const sections = [];
8
- const lines = content.split("\n");
9
- let currentSection = { content: "" };
8
+ const lines = content.split('\n');
9
+ let currentSection = { content: '' };
10
10
  let inFrontmatter = false;
11
11
  for (const line of lines) {
12
- if (line.trim() === "---") {
12
+ if (line.trim() === '---') {
13
13
  inFrontmatter = !inFrontmatter;
14
14
  continue;
15
15
  }
16
16
  if (inFrontmatter)
17
17
  continue;
18
- if (line.startsWith("## ")) {
18
+ if (line.startsWith('## ')) {
19
19
  if (currentSection.content) {
20
20
  sections.push(currentSection);
21
21
  }
22
- currentSection = { title: line.slice(3), content: "" };
22
+ currentSection = { title: line.slice(3), content: '' };
23
23
  }
24
24
  else {
25
- currentSection.content += (currentSection.content ? "\n" : "") + line;
25
+ currentSection.content += (currentSection.content ? '\n' : '') + line;
26
26
  }
27
27
  }
28
28
  if (currentSection.content) {
@@ -37,12 +37,10 @@ function parseSKILL(content) {
37
37
  function extractRFCRefs(content) {
38
38
  const rfcPattern = /RFC[- ]?(\d{4})/gi;
39
39
  const matches = content.match(rfcPattern) || [];
40
- return [
41
- ...new Set(matches.map((m) => {
42
- const num = m.replace(/[^0-9]/g, "");
43
- return `RFC-${num.padStart(4, "0")}`;
44
- })),
45
- ];
40
+ return [...new Set(matches.map(m => {
41
+ const num = m.replace(/[^0-9]/g, '');
42
+ return `RFC-${num.padStart(4, '0')}`;
43
+ }))];
46
44
  }
47
45
  /**
48
46
  * Extract wiki links from content (e.g., [[skill:xxx]])
@@ -50,7 +48,7 @@ function extractRFCRefs(content) {
50
48
  function extractWikiLinks(content) {
51
49
  const linkPattern = /\[\[([^\]]+)\]\]/g;
52
50
  const matches = content.match(linkPattern) || [];
53
- return matches.map((m) => m.slice(2, -2).trim());
51
+ return matches.map(m => m.slice(2, -2).trim());
54
52
  }
55
53
  /**
56
54
  * Extract skill ID from file path
@@ -58,9 +56,7 @@ function extractWikiLinks(content) {
58
56
  function extractSkillId(filePath) {
59
57
  // Path: .../skills/{skill-id}/SKILL.md
60
58
  const match = filePath.match(/skills\/([^/]+)\/SKILL\.md$/i);
61
- return match
62
- ? match[1]
63
- : filePath.split("/").pop()?.replace(".md", "") || "unknown";
59
+ return match ? match[1] : filePath.split('/').pop()?.replace('.md', '') || 'unknown';
64
60
  }
65
61
  /**
66
62
  * Parse provenance from frontmatter
@@ -82,7 +78,7 @@ export function extractSkillNode(filePath, content, frontmatter) {
82
78
  const okf = parseSKILL(content);
83
79
  return {
84
80
  id: `skill:${skillId}`,
85
- type: "skill",
81
+ type: 'skill',
86
82
  data: {
87
83
  title: frontmatter.title || okf.title || skillId,
88
84
  description: okf.sections[0]?.content.slice(0, 200) || undefined,
@@ -100,14 +96,12 @@ export function extractSkillEdges(filePath, content, frontmatter) {
100
96
  const edges = [];
101
97
  // Provenance: implements RFC
102
98
  if (provenance.implements) {
103
- const rfcNum = provenance.implements
104
- .replace(/RFC[- ]?/i, "")
105
- .padStart(4, "0");
99
+ const rfcNum = provenance.implements.replace(/RFC[- ]?/i, '').padStart(4, '0');
106
100
  edges.push({
107
101
  from: `skill:${skillId}`,
108
102
  to: `rfc:RFC-${rfcNum}`,
109
- type: "implements",
110
- metadata: { source: "frontmatter:provenance.implements" },
103
+ type: 'implements',
104
+ metadata: { source: 'frontmatter:provenance.implements' },
111
105
  });
112
106
  }
113
107
  // Provenance: documents implementation
@@ -115,32 +109,31 @@ export function extractSkillEdges(filePath, content, frontmatter) {
115
109
  edges.push({
116
110
  from: `skill:${skillId}`,
117
111
  to: `implementation:${provenance.related_implementation}`,
118
- type: "documents",
119
- metadata: { source: "frontmatter:related_implementation" },
112
+ type: 'documents',
113
+ metadata: { source: 'frontmatter:related_implementation' },
120
114
  });
121
115
  }
122
116
  // Content: RFC references
123
117
  const rfcRefs = extractRFCRefs(content);
124
118
  for (const rfc of rfcRefs) {
125
- if (rfc !== provenance.implements) {
126
- // Don't duplicate
119
+ if (rfc !== provenance.implements) { // Don't duplicate
127
120
  edges.push({
128
121
  from: `skill:${skillId}`,
129
122
  to: rfc,
130
- type: "references",
131
- metadata: { source: "content:regex" },
123
+ type: 'references',
124
+ metadata: { source: 'content:regex' },
132
125
  });
133
126
  }
134
127
  }
135
128
  // Content: wiki links
136
129
  const wikiLinks = extractWikiLinks(content);
137
130
  for (const link of wikiLinks) {
138
- if (link.startsWith("skill:")) {
131
+ if (link.startsWith('skill:')) {
139
132
  edges.push({
140
133
  from: `skill:${skillId}`,
141
134
  to: link,
142
- type: "related_to",
143
- metadata: { source: "content:wiki-link" },
135
+ type: 'related_to',
136
+ metadata: { source: 'content:wiki-link' },
144
137
  });
145
138
  }
146
139
  }
@@ -152,18 +145,18 @@ export function extractSkillEdges(filePath, content, frontmatter) {
152
145
  export function extractRFCNode(filePath, content, title) {
153
146
  // Extract RFC number from filename: RFC-0106_KNOWLEDGE_GRAPH_PROVENANCE.md
154
147
  const match = filePath.match(/RFC[- ]?(\d{4})/i);
155
- const rfcNum = match ? match[1].padStart(4, "0") : "0000";
148
+ const rfcNum = match ? match[1].padStart(4, '0') : '0000';
156
149
  // Extract summary from first paragraph
157
150
  const summaryMatch = content.match(/## Summary\n+([^\n]+)/i);
158
151
  const summary = summaryMatch ? summaryMatch[1].slice(0, 200) : undefined;
159
152
  // Extract tags from content
160
153
  const tagMatches = content.match(/tag[s]?:?\s*\[([^\]]+)\]/i);
161
154
  const tags = tagMatches
162
- ? tagMatches[1].split(",").map((t) => t.trim().toLowerCase())
155
+ ? tagMatches[1].split(',').map(t => t.trim().toLowerCase())
163
156
  : [];
164
157
  return {
165
158
  id: `rfc:RFC-${rfcNum}`,
166
- type: "rfc",
159
+ type: 'rfc',
167
160
  data: {
168
161
  title,
169
162
  description: summary,
@@ -181,13 +174,13 @@ export function extractRFCEdges(filePath, content) {
181
174
  // RFC references other RFCs
182
175
  const rfcRefs = extractRFCRefs(content);
183
176
  const match = filePath.match(/RFC[- ]?(\d{4})/i);
184
- const rfcNum = match ? `RFC-${match[1].padStart(4, "0")}` : "rfc:unknown";
177
+ const rfcNum = match ? `RFC-${match[1].padStart(4, '0')}` : 'rfc:unknown';
185
178
  for (const ref of rfcRefs) {
186
179
  edges.push({
187
180
  from: rfcNum,
188
181
  to: ref,
189
- type: "references",
190
- metadata: { source: "content:regex" },
182
+ type: 'references',
183
+ metadata: { source: 'content:regex' },
191
184
  });
192
185
  }
193
186
  // Supersedes (e.g., "Supersedes RFC-0008")
@@ -196,12 +189,12 @@ export function extractRFCEdges(filePath, content) {
196
189
  for (const match of supersedesMatch) {
197
190
  const numMatch = match.match(/\d{4}/);
198
191
  if (numMatch) {
199
- const superseded = `RFC-${numMatch[0].padStart(4, "0")}`;
192
+ const superseded = `RFC-${numMatch[0].padStart(4, '0')}`;
200
193
  edges.push({
201
194
  from: rfcNum,
202
195
  to: superseded,
203
- type: "supersedes",
204
- metadata: { source: "content:supersedes" },
196
+ type: 'supersedes',
197
+ metadata: { source: 'content:supersedes' },
205
198
  });
206
199
  }
207
200
  }
@@ -212,8 +205,8 @@ export function extractRFCEdges(filePath, content) {
212
205
  * Build complete knowledge graph from directory
213
206
  */
214
207
  export async function extractKnowledgeGraph(skillsPath, rfcPath) {
215
- const { readdir, readFile } = await import("fs/promises");
216
- const { join } = await import("path");
208
+ const { readdir, readFile } = await import('fs/promises');
209
+ const { join } = await import('path');
217
210
  const nodes = [];
218
211
  const edges = [];
219
212
  // Extract skill nodes and edges
@@ -222,25 +215,25 @@ export async function extractKnowledgeGraph(skillsPath, rfcPath) {
222
215
  for (const dir of skillDirs) {
223
216
  if (!dir.isDirectory())
224
217
  continue;
225
- const skillPath = join(skillsPath, dir.name, "SKILL.md");
218
+ const skillPath = join(skillsPath, dir.name, 'SKILL.md');
226
219
  try {
227
- const content = await readFile(skillPath, "utf-8");
220
+ const content = await readFile(skillPath, 'utf-8');
228
221
  const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
229
222
  const frontmatter = {};
230
223
  if (frontmatterMatch) {
231
- for (const line of frontmatterMatch[1].split("\n")) {
232
- const [key, ...valueParts] = line.split(":");
224
+ for (const line of frontmatterMatch[1].split('\n')) {
225
+ const [key, ...valueParts] = line.split(':');
233
226
  if (key && valueParts.length) {
234
- const value = valueParts.join(":").trim();
227
+ const value = valueParts.join(':').trim();
235
228
  // Handle arrays
236
- if (value.startsWith("[")) {
229
+ if (value.startsWith('[')) {
237
230
  frontmatter[key.trim()] = value
238
231
  .slice(1, -1)
239
- .split(",")
240
- .map((v) => v.trim().replace(/['"]/g, ""));
232
+ .split(',')
233
+ .map(v => v.trim().replace(/['"]/g, ''));
241
234
  }
242
235
  else {
243
- frontmatter[key.trim()] = value.replace(/['"]/g, "");
236
+ frontmatter[key.trim()] = value.replace(/['"]/g, '');
244
237
  }
245
238
  }
246
239
  }
@@ -265,12 +258,10 @@ export async function extractKnowledgeGraph(skillsPath, rfcPath) {
265
258
  if (!file.match(/^RFC[- ]?\d{4}_.*\.md$/i))
266
259
  continue;
267
260
  const filePath = join(rfcPath, file);
268
- const content = await readFile(filePath, "utf-8");
261
+ const content = await readFile(filePath, 'utf-8');
269
262
  // Extract title from first # heading
270
263
  const titleMatch = content.match(/^#\s+(.+)$/m);
271
- const title = titleMatch
272
- ? titleMatch[1].replace(/^RFC[-\d]+\s*[-–]\s*/, "")
273
- : file;
264
+ const title = titleMatch ? titleMatch[1].replace(/^RFC[-\d]+\s*[-–]\s*/, '') : file;
274
265
  const node = extractRFCNode(filePath, content, title);
275
266
  nodes.push(node);
276
267
  const rfcEdges = extractRFCEdges(filePath, content);
@@ -1 +1 @@
1
- {"version":3,"file":"graph-extractor.js","sourceRoot":"","sources":["../src/graph-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-extractor.js","sourceRoot":"","sources":["../src/graph-extractor.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,8 @@
20
20
  * await syncGraphToKnowledgeService(fullGraph, config);
21
21
  * ```
22
22
  */
23
- export * from "./types.js";
24
- export * from "./graph-extractor.js";
25
- export * from "./provenance-linker.js";
26
- export * from "./mcp-client.js";
23
+ export * from './types.js';
24
+ export * from './graph-extractor.js';
25
+ export * from './provenance-linker.js';
26
+ export * from './mcp-client.js';
27
27
  //# sourceMappingURL=index.d.ts.map
@@ -20,8 +20,8 @@
20
20
  * await syncGraphToKnowledgeService(fullGraph, config);
21
21
  * ```
22
22
  */
23
- export * from "./types.js";
24
- export * from "./graph-extractor.js";
25
- export * from "./provenance-linker.js";
26
- export * from "./mcp-client.js";
23
+ export * from './types.js';
24
+ export * from './graph-extractor.js';
25
+ export * from './provenance-linker.js';
26
+ export * from './mcp-client.js';
27
27
  //# sourceMappingURL=index.js.map
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * MCP tools for knowledge graph queries.
5
5
  */
6
- import type { KnowledgeNode, KnowledgeEdge, KnowledgeGraph, SearchOptions, SearchResult, TencentDBConfig } from "./types.js";
6
+ import type { KnowledgeNode, KnowledgeEdge, KnowledgeGraph, SearchOptions, SearchResult, TencentDBConfig } from './types.js';
7
7
  /**
8
8
  * Sync graph to TencentDB Knowledge Service
9
9
  */
@@ -19,7 +19,7 @@ export declare function searchGraph(query: string, config: TencentDBConfig, opti
19
19
  * Query graph by relationship type
20
20
  */
21
21
  export declare function queryRelationships(config: TencentDBConfig, options: {
22
- type?: KnowledgeEdge["type"];
22
+ type?: KnowledgeEdge['type'];
23
23
  from?: string;
24
24
  to?: string;
25
25
  }): Promise<KnowledgeEdge[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+B/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CAgDzB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE;IACR,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ,GACC,OAAO,CAAC,aAAa,EAAE,CAAC,CA+B1B;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsC/B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,UAAU,SAAI,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B"}
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4B/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC,CA6CzB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GACA,OAAO,CAAC,aAAa,EAAE,CAAC,CA4B1B;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsC/B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,UAAU,SAAI,GACb,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B"}