opencode-knowledge 0.5.1-next.1 → 0.6.0-next.1

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 (2) hide show
  1. package/dist/index.js +79 -10
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -12631,7 +12631,53 @@ function tool(input) {
12631
12631
  return input;
12632
12632
  }
12633
12633
  tool.schema = exports_external;
12634
+ // src/lib/logger.ts
12635
+ var ENV_CONSOLE_LOG = "OPENCODE_KNOWLEDGE_CONSOLE_LOG";
12636
+ var _client = null;
12637
+ function isConsoleLogEnabled() {
12638
+ const val = process.env[ENV_CONSOLE_LOG];
12639
+ return val === "1" || val?.toLowerCase() === "true";
12640
+ }
12641
+ function initLogger(client) {
12642
+ _client = client;
12643
+ }
12644
+ function createLogger(module) {
12645
+ const service = `opencode-knowledge.${module}`;
12646
+ const log = (level, message, extra) => {
12647
+ const app = _client?.app;
12648
+ if (app && typeof app.log === "function") {
12649
+ app.log({
12650
+ body: { service, level, message, extra }
12651
+ }).catch(() => {});
12652
+ } else if (isConsoleLogEnabled()) {
12653
+ const prefix = `[${service}]`;
12654
+ const args = extra ? [prefix, message, extra] : [prefix, message];
12655
+ switch (level) {
12656
+ case "debug":
12657
+ console.debug(...args);
12658
+ break;
12659
+ case "info":
12660
+ console.info(...args);
12661
+ break;
12662
+ case "warn":
12663
+ console.warn(...args);
12664
+ break;
12665
+ case "error":
12666
+ console.error(...args);
12667
+ break;
12668
+ }
12669
+ }
12670
+ };
12671
+ return {
12672
+ debug: (message, extra) => log("debug", message, extra),
12673
+ info: (message, extra) => log("info", message, extra),
12674
+ warn: (message, extra) => log("warn", message, extra),
12675
+ error: (message, extra) => log("error", message, extra)
12676
+ };
12677
+ }
12678
+
12634
12679
  // src/lib/tools/search.ts
12680
+ var log = createLogger("tools.search");
12635
12681
  var knowledgeSearchTool = tool({
12636
12682
  description: "Search the knowledge vault for packages matching specific tags. Returns a ranked list of relevant knowledge packages with their metadata.",
12637
12683
  args: {
@@ -12639,12 +12685,16 @@ var knowledgeSearchTool = tool({
12639
12685
  },
12640
12686
  async execute(args) {
12641
12687
  const tagArray = args.tags.split(",").map((t) => t.trim()).filter(Boolean);
12688
+ log.debug("knowledge_search called", { tags: args.tags, parsedTags: tagArray });
12642
12689
  if (tagArray.length === 0) {
12690
+ log.debug("knowledge_search - no tags provided");
12643
12691
  return "No tags provided. Please specify at least one tag.";
12644
12692
  }
12645
12693
  try {
12694
+ log.debug("knowledge_search - calling searchKnowledge", { tagCount: tagArray.length });
12646
12695
  const results = await searchKnowledge(tagArray);
12647
12696
  loadCatalog();
12697
+ log.debug("searchKnowledge completed", { resultsCount: results.length });
12648
12698
  if (results.length === 0) {
12649
12699
  return `No knowledge packages found matching [${tagArray.join(", ")}]`;
12650
12700
  }
@@ -12666,6 +12716,7 @@ _...and ${results.length - 10} more results_`;
12666
12716
  }
12667
12717
  return output;
12668
12718
  } catch (error45) {
12719
+ log.error("knowledge_search error", { error: String(error45) });
12669
12720
  return "Failed to search knowledge vault. Please try again.";
12670
12721
  }
12671
12722
  }
@@ -12800,17 +12851,21 @@ var knowledgeIndexTool = tool({
12800
12851
  });
12801
12852
 
12802
12853
  // src/index.ts
12803
- var opencodeKnowledge = async () => {
12854
+ var log2 = createLogger("plugin");
12855
+ var opencodeKnowledge = async (input) => {
12856
+ initLogger(input.client);
12857
+ log2.info("Plugin initialized");
12804
12858
  return {
12805
12859
  tool: {
12806
12860
  knowledge_search: knowledgeSearchTool,
12807
12861
  knowledge_load: knowledgeLoadTool,
12808
12862
  knowledge_index: knowledgeIndexTool
12809
12863
  },
12810
- "chat.message": async (input, output) => {
12864
+ "chat.message": async (input2, output) => {
12811
12865
  try {
12812
- const state = getSessionState(input.sessionID);
12866
+ const state = getSessionState(input2.sessionID);
12813
12867
  if (state.isFirstPrompt) {
12868
+ log2.debug("First message in session", { sessionID: input2.sessionID });
12814
12869
  const vaultExists = existsSync5(".opencode/knowledge/vault");
12815
12870
  if (vaultExists) {
12816
12871
  const categoryTagMap = buildCategoryTagMap();
@@ -12828,38 +12883,52 @@ var opencodeKnowledge = async () => {
12828
12883
  type: "text",
12829
12884
  text: knowledgePrompt,
12830
12885
  id: `knowledge-${Date.now()}`,
12831
- sessionID: input.sessionID,
12832
- messageID: input.messageID || ""
12886
+ sessionID: input2.sessionID,
12887
+ messageID: input2.messageID || ""
12833
12888
  });
12889
+ log2.debug("Knowledge map injected");
12834
12890
  }
12835
- updateSessionState(input.sessionID, {
12891
+ updateSessionState(input2.sessionID, {
12836
12892
  isFirstPrompt: false,
12837
12893
  categoriesShown: vaultExists
12838
12894
  });
12895
+ log2.debug("First message processed");
12839
12896
  }
12840
- } catch (error45) {}
12897
+ } catch (error45) {
12898
+ log2.error("Error in chat.message", { error: String(error45) });
12899
+ }
12841
12900
  },
12842
12901
  event: async ({ event }) => {
12843
12902
  try {
12844
12903
  if (event.type === "session.created") {
12904
+ log2.debug("session.created event");
12845
12905
  const eventData = event;
12846
12906
  const sessionId = eventData.properties?.info?.id;
12847
12907
  if (!sessionId) {
12848
- const errorMsg = `\u274C Could not extract session ID from session.created event`;
12908
+ const errorMsg = "Could not extract session ID from session.created event";
12909
+ log2.error(errorMsg);
12849
12910
  throw new Error(errorMsg);
12850
12911
  }
12912
+ log2.debug("Extracted session ID", { sessionId });
12851
12913
  clearJsonl("session-state.jsonl");
12852
12914
  clearJsonl("knowledge-reads.jsonl");
12853
12915
  if (existsSync5(".opencode/knowledge/vault")) {
12916
+ log2.debug("Building knowledge index...");
12854
12917
  try {
12855
12918
  const catalog = buildKnowledgeCatalog();
12856
12919
  saveCatalog(catalog);
12857
12920
  const packagesCount = Object.values(catalog.knowledge).reduce((sum, packages) => sum + Object.keys(packages).length, 0);
12858
- } catch (error45) {}
12921
+ log2.info("Knowledge catalog built", { packagesCount });
12922
+ } catch (error45) {
12923
+ log2.warn("Failed to build knowledge catalog", { error: String(error45) });
12924
+ }
12859
12925
  }
12860
12926
  await createSessionState(sessionId);
12927
+ log2.debug("Session state created");
12861
12928
  }
12862
- } catch (error45) {}
12929
+ } catch (error45) {
12930
+ log2.error("Error in event", { error: String(error45) });
12931
+ }
12863
12932
  }
12864
12933
  };
12865
12934
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-knowledge",
3
- "version": "0.5.1-next.1",
3
+ "version": "0.6.0-next.1",
4
4
  "description": "An OpenCode plugin",
5
5
  "author": {
6
6
  "name": "msegoviadev",