opencode-gitloops 0.2.2 → 0.2.4

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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Extract a meaningful error detail from a Bun ShellError.
3
+ *
4
+ * Bun's `$` shell throws a ShellError on non-zero exit codes.
5
+ * When `.quiet()` is used, stdout/stderr are still available on the
6
+ * error object as Buffer properties. This helper extracts stderr first
7
+ * (where Git writes its diagnostics), falling back to the error message
8
+ * or stringified error.
9
+ */
10
+ export declare function extractGitError(err: unknown): {
11
+ stderr: string;
12
+ detail: string;
13
+ };
14
+ //# sourceMappingURL=git-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-error.d.ts","sourceRoot":"","sources":["../src/git-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAehF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Extract a meaningful error detail from a Bun ShellError.
3
+ *
4
+ * Bun's `$` shell throws a ShellError on non-zero exit codes.
5
+ * When `.quiet()` is used, stdout/stderr are still available on the
6
+ * error object as Buffer properties. This helper extracts stderr first
7
+ * (where Git writes its diagnostics), falling back to the error message
8
+ * or stringified error.
9
+ */
10
+ export function extractGitError(err) {
11
+ const e = err;
12
+ const stderr = e?.stderr && typeof e.stderr.toString === "function"
13
+ ? Buffer.from(e.stderr)
14
+ .toString("utf-8")
15
+ .trim()
16
+ : "";
17
+ const message = typeof e?.message === "string" ? e.message : String(err);
18
+ const detail = stderr || message;
19
+ return { stderr, detail };
20
+ }
21
+ //# sourceMappingURL=git-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-error.js","sourceRoot":"","sources":["../src/git-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,CAAC,GAAG,GAA0C,CAAA;IACpD,MAAM,MAAM,GACV,CAAC,EAAE,MAAM,IAAI,OAAQ,CAAC,CAAC,MAAiB,CAAC,QAAQ,KAAK,UAAU;QAC9D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAgB,CAAC;aAC5B,QAAQ,CAAC,OAAO,CAAC;aACjB,IAAI,EAAE;QACX,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,OAAO,GACX,OAAQ,CAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE5E,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAA;IAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAmDjD,eAAO,MAAM,cAAc,EAAE,MA4E5B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA0BjD,eAAO,MAAM,cAAc,EAAE,MAyF5B,CAAA"}
package/dist/index.js CHANGED
@@ -1,34 +1,9 @@
1
1
  import { gitloops_clone, gitloops_refresh, gitloops_list } from "./tools";
2
2
  import { ensureRepo } from "./repo-manager";
3
- import { ensureConfigFile, getConfig, getConfigPath } from "./config";
3
+ import { ensureConfigFile, getConfig } from "./config";
4
4
  import { initLogger, logger } from "./logger";
5
- import * as fs from "fs/promises";
6
- import * as path from "path";
7
- import * as os from "os";
8
- function buildAgentMD(cacheLoc) {
9
- return `---
10
- description: Explore GitHub repositories locally. Clone any public repo and answer questions about its code, structure, and patterns.
11
- mode: all
12
- color: "#ed5f00"
13
- temperature: 0.1
14
- tools:
15
- read: true
16
- grep: true
17
- glob: true
18
- list: true
19
- webfetch: false
20
- bash: false
21
- edit: false
22
- write: false
23
- gitloops_clone: true
24
- gitloops_refresh: true
25
- gitloops_list: true
26
- permission:
27
- edit: deny
28
- bash: deny
29
- ---
30
-
31
- You are Gitloops, a read-only agent for exploring public GitHub repositories locally.
5
+ function buildAgentPrompt(cacheLoc) {
6
+ return `You are Gitloops, a read-only agent for exploring public GitHub repositories locally.
32
7
 
33
8
  When a user asks about a repository:
34
9
  1. Parse the repo slug from their message (e.g. "facebook/react" or a full GitHub URL)
@@ -43,43 +18,61 @@ Important rules:
43
18
  - All file paths passed to read/grep/glob/list must be absolute paths under the repo's localPath.
44
19
  - When switching between repos in the same session, always call \`gitloops_clone\` again for the new repo.
45
20
 
46
- Repos are cached at: ${cacheLoc}/<owner>/<repo>/
47
- `;
21
+ Repos are cached at: ${cacheLoc}/<owner>/<repo>/`;
48
22
  }
49
23
  export const GitLoopsPlugin = async ({ client }) => {
50
24
  // Initialize the logger so all modules can use it
51
25
  initLogger(client);
52
26
  await logger.info("Gitloops plugin initialized");
27
+ // Pre-load config so it's ready for the config hook
28
+ let pluginConfig = null;
29
+ try {
30
+ await ensureConfigFile();
31
+ pluginConfig = await getConfig();
32
+ await logger.info("Gitloops config loaded", {
33
+ cache_loc: pluginConfig.cache_loc,
34
+ });
35
+ }
36
+ catch (err) {
37
+ await logger.warn(`Failed to load config: ${err.message || err}`);
38
+ }
53
39
  return {
54
- // Write agent definition and ensure config on server connect (idempotent)
55
- "server.connected": async () => {
56
- // Ensure the plugin config file exists (auto-create with defaults)
40
+ // Register the gitloops agent via the config hook.
41
+ // This is called by OpenCode at startup to let plugins inject agents,
42
+ // tools, and other config before the UI renders.
43
+ config: async (config) => {
57
44
  try {
58
- const created = await ensureConfigFile();
59
- if (created) {
60
- await logger.info(`Config created with defaults at ${getConfigPath()}`);
61
- }
62
- }
63
- catch (err) {
64
- await logger.warn(`Failed to create config: ${err.message || err}`);
65
- }
66
- // Write agent definition to global config
67
- try {
68
- const config = await getConfig();
69
- const agentMD = buildAgentMD(config.cache_loc);
70
- const agentsDir = path.join(os.homedir(), ".config", "opencode", "agents");
71
- const agentPath = path.join(agentsDir, "gitloops.md");
72
- await fs.mkdir(agentsDir, { recursive: true });
73
- const existing = await fs
74
- .readFile(agentPath, "utf8")
75
- .catch(() => null);
76
- if (existing !== agentMD) {
77
- await fs.writeFile(agentPath, agentMD, "utf8");
78
- await logger.info(`Agent definition written to ${agentPath}`);
79
- }
45
+ const cfg = pluginConfig ?? await getConfig();
46
+ const agentDefs = (config.agent ?? {});
47
+ agentDefs.gitloops = {
48
+ description: "Explore GitHub repositories locally. Clone any public repo and answer questions about its code, structure, and patterns.",
49
+ mode: "all",
50
+ color: "#ed5f00",
51
+ temperature: 0.1,
52
+ tools: {
53
+ read: true,
54
+ grep: true,
55
+ glob: true,
56
+ list: true,
57
+ webfetch: false,
58
+ bash: false,
59
+ edit: false,
60
+ write: false,
61
+ gitloops_clone: true,
62
+ gitloops_refresh: true,
63
+ gitloops_list: true,
64
+ },
65
+ permission: {
66
+ edit: "deny",
67
+ bash: "deny",
68
+ },
69
+ prompt: buildAgentPrompt(cfg.cache_loc),
70
+ };
71
+ config.agent = agentDefs;
72
+ await logger.info("Gitloops agent registered via config hook");
80
73
  }
81
74
  catch (err) {
82
- await logger.warn(`Failed to write agent definition: ${err.message || err}`);
75
+ await logger.error(`Failed to register agent via config hook: ${err.message || err}`);
83
76
  }
84
77
  },
85
78
  // Auto-fetch: when a gitloops session is created, pre-warm clone if a slug
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-manager.d.ts","sourceRoot":"","sources":["../src/repo-manager.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CA8CvD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIhE;AA0BD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwFjE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAgD7D"}
1
+ {"version":3,"file":"repo-manager.d.ts","sourceRoot":"","sources":["../src/repo-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CA8CvD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIhE;AA0BD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgGjE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAgD7D"}
@@ -3,6 +3,7 @@ import * as fs from "fs/promises";
3
3
  import * as path from "path";
4
4
  import { getConfig } from "./config";
5
5
  import { evictIfNeeded } from "./eviction";
6
+ import { extractGitError } from "./git-error";
6
7
  import { logger } from "./logger";
7
8
  /**
8
9
  * Parse a repo slug or URL into its components.
@@ -116,10 +117,12 @@ export async function ensureRepo(input) {
116
117
  await logger.info(`Updated repo: ${parsed.slug}`);
117
118
  }
118
119
  catch (err) {
120
+ const { stderr, detail } = extractGitError(err);
119
121
  await logger.error(`Failed to fetch updates for ${parsed.slug}`, {
120
- error: err?.message || String(err),
122
+ error: detail,
123
+ stderr,
121
124
  });
122
- throw new Error(`Failed to fetch updates for ${parsed.slug}: ${err.message || err}`);
125
+ throw new Error(`Failed to fetch updates for ${parsed.slug}: ${detail}`);
123
126
  }
124
127
  }
125
128
  else {
@@ -142,17 +145,21 @@ export async function ensureRepo(input) {
142
145
  catch (err) {
143
146
  // Clean up partial clone on failure
144
147
  await fs.rm(localPath, { recursive: true, force: true }).catch(() => { });
145
- if (String(err).includes("not found") ||
146
- String(err).includes("Repository not found")) {
148
+ // Extract stderr from Bun ShellError for meaningful diagnostics
149
+ const { stderr, detail } = extractGitError(err);
150
+ if (detail.includes("not found") ||
151
+ detail.includes("Repository not found")) {
147
152
  await logger.error(`Repository not found: ${parsed.slug}`, {
148
153
  url: parsed.cloneUrl,
154
+ stderr,
149
155
  });
150
156
  throw new Error(`Repository "${parsed.slug}" not found on GitHub. Only public repos are supported in v1.`);
151
157
  }
152
158
  await logger.error(`Failed to clone ${parsed.slug}`, {
153
- error: err?.message || String(err),
159
+ error: detail,
160
+ stderr,
154
161
  });
155
- throw new Error(`Failed to clone ${parsed.slug}: ${err.message || err}`);
162
+ throw new Error(`Failed to clone ${parsed.slug}: ${detail}`);
156
163
  }
157
164
  // Evict old repos if we've exceeded the max
158
165
  await evictIfNeeded(config, parsed.slug);
@@ -1 +1 @@
1
- {"version":3,"file":"repo-manager.js","sourceRoot":"","sources":["../src/repo-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-manager.js","sourceRoot":"","sources":["../src/repo-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAwBjC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAC9B,2EAA2E,CAC5E,CAAA;IACD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,UAAU,CAAA;QAClC,OAAO;YACL,KAAK;YACL,IAAI;YACJ,QAAQ,EAAE,sBAAsB,KAAK,IAAI,IAAI,MAAM;YACnD,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE;SACzB,CAAA;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAC5B,mEAAmE,CACpE,CAAA;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAA;QAChC,OAAO;YACL,KAAK;YACL,IAAI;YACJ,QAAQ,EAAE,sBAAsB,KAAK,IAAI,IAAI,MAAM;YACnD,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE;SACzB,CAAA;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAA;QACjC,OAAO;YACL,KAAK;YACL,IAAI;YACJ,QAAQ,EAAE,sBAAsB,KAAK,IAAI,IAAI,MAAM;YACnD,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE;SACzB,CAAA;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,8DAA8D,CACjG,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA,UAAU,QAAQ,yBAAyB,CAAC,IAAI,EAAE,CAAA;QACxE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAa;IAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,MAAM,CAAC,KAAK,CAAC,2BAA2B,MAAM,CAAC,IAAI,EAAE,EAAE;QAC3D,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,CAAA;IAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAEhD,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAClD,qCAAqC;QACrC,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,EAAE,SAAS;YACf,SAAS;SACV,CAAC,CAAA;QACF,IAAI,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,CAAA,UAAU,SAAS,eAAe,CAAC,KAAK,EAAE,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAA,UAAU,SAAS,yBAAyB,CAAC,KAAK,EAAE,CAAA;YAC7D,CAAC;YACD,MAAM,CAAC,CAAA,UAAU,SAAS,2BAA2B,CAAC,KAAK,EAAE,CAAA;YAC7D,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YAC/C,MAAM,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC/D,KAAK,EAAE,MAAM;gBACb,MAAM;aACP,CAAC,CAAA;YACF,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CACxD,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,cAAc;QACd,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE;YAC1C,GAAG,EAAE,MAAM,CAAC,QAAQ;YACpB,IAAI,EAAE,SAAS;YACf,SAAS;SACV,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5D,IAAI,CAAC;YACH,MAAM,CAAC,CAAA,aAAa,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,CAAA;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,IAAI,KAAK,QAAQ,KAAK,EAAE;gBAC/D,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,oCAAoC;YACpC,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAExE,gEAAgE;YAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YAE/C,IACE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EACvC,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,EAAE,EAAE;oBACzD,GAAG,EAAE,MAAM,CAAC,QAAQ;oBACpB,MAAM;iBACP,CAAC,CAAA;gBACF,MAAM,IAAI,KAAK,CACb,eAAe,MAAM,CAAC,IAAI,+DAA+D,CAC1F,CAAA;YACH,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,IAAI,EAAE,EAAE;gBACnD,KAAK,EAAE,MAAM;gBACb,MAAM;aACP,CAAC,CAAA;YACF,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAC5C,CAAA;QACH,CAAC;QAED,4CAA4C;QAC5C,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;IAEjD,OAAO;QACL,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAA;IACjC,MAAM,KAAK,GAAiB,EAAE,CAAA;IAE9B,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,MAAgB,CAAA;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;YAAE,SAAQ;QAE3C,IAAI,SAAmB,CAAA;QACvB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC3C,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAQ;YAE7D,IAAI,YAAoB,CAAA;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACpC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,SAAS,CAAA;YAC1B,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE;gBACxB,SAAS,EAAE,QAAQ;gBACnB,YAAY;aACb,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc;;;;;;;;;;CA0DzB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;CA0B3B,CAAA;AAEF,eAAO,MAAM,aAAa;;;;CAqBxB,CAAA"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc;;;;;;;;;;CA2DzB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;CA0B3B,CAAA;AAEF,eAAO,MAAM,aAAa;;;;CAqBxB,CAAA"}
package/dist/tools.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { tool } from "@opencode-ai/plugin";
2
2
  import { ensureRepo, listCachedRepos } from "./repo-manager";
3
+ import { extractGitError } from "./git-error";
3
4
  import { logger } from "./logger";
4
5
  export const gitloops_clone = tool({
5
6
  description: "Clone or ensure a GitHub repo is available locally for exploration. " +
@@ -31,8 +32,9 @@ export const gitloops_clone = tool({
31
32
  await logger.info(`Checked out branch "${args.branch}" for ${info.slug}`);
32
33
  }
33
34
  catch (err) {
34
- await logger.error(`Failed to checkout branch "${args.branch}" for ${info.slug}`, { error: err?.message || String(err) });
35
- throw new Error(`Failed to checkout branch "${args.branch}" for ${info.slug}: ${err.message || err}`);
35
+ const { stderr, detail } = extractGitError(err);
36
+ await logger.error(`Failed to checkout branch "${args.branch}" for ${info.slug}`, { error: detail, stderr });
37
+ throw new Error(`Failed to checkout branch "${args.branch}" for ${info.slug}: ${detail}`);
36
38
  }
37
39
  }
38
40
  await logger.debug("gitloops_clone complete", {
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-gitloops",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "GitHub repo explorer agent and plugin for OpenCode. Clone and explore any public GitHub repo locally.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,7 @@
25
25
  ],
26
26
  "scripts": {
27
27
  "build": "bun run tsc",
28
+ "test": "bun test",
28
29
  "typecheck": "tsc --noEmit",
29
30
  "prepublishOnly": "bun run build"
30
31
  },