deepdebug-local-agent 1.0.22 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/.claude/context.md +76 -0
  2. package/.claude/skills/README.md +25 -0
  3. package/.claude/skills/tdd-debugging/SKILL.md +53 -0
  4. package/.claude/skills/tdd-debugging/references/anti-patterns.md +43 -0
  5. package/.claude/skills/tdd-debugging/references/command-reference.md +46 -0
  6. package/.claude/standards/README.md +51 -0
  7. package/.claude/standards/clean-code.md +75 -0
  8. package/.claude/standards/code-review-checklist.md +61 -0
  9. package/.claude/standards/layered-architecture.md +163 -0
  10. package/.claude/standards/node.md +45 -0
  11. package/.claude/standards/security-owasp.md +114 -0
  12. package/.claude/standards/simplicity.md +42 -0
  13. package/.claude/standards/solid.md +64 -0
  14. package/.claude/standards/testing.md +59 -0
  15. package/.cursor/rules/standards.mdc +17 -0
  16. package/.github/workflows/build-byoc-image.yml +315 -0
  17. package/.github/workflows/deploy-gcp.yml +102 -0
  18. package/.github/workflows/npm-publish.yml +69 -8
  19. package/AGENTS.md +21 -0
  20. package/CHANGELOG.md +69 -0
  21. package/CLAUDE.md +13 -0
  22. package/CLAUDE_CODE_AGENT_INFINITE.md +5 -3
  23. package/Dockerfile +4 -0
  24. package/Dockerfile.full +55 -3
  25. package/README.md +81 -0
  26. package/bin/install.js +16 -5
  27. package/cloudbuild-full.yaml +57 -0
  28. package/docker-compose.yml +5 -3
  29. package/docs/OBSERVABILITY.md +164 -0
  30. package/docs/byoc-agent-image.md +70 -0
  31. package/docs/graphify-packaging-plan.md +133 -0
  32. package/docs/graphify-validation-run-2026-10-28.md +243 -0
  33. package/docs/legacy-connectors.md +268 -0
  34. package/docs/releasing.md +43 -0
  35. package/docs/signed-commands.md +163 -0
  36. package/env.example +30 -0
  37. package/helm/Chart.yaml +2 -2
  38. package/helm/templates/deployment.yaml +13 -3
  39. package/helm/templates/networkpolicy.yaml +22 -0
  40. package/helm/templates/secret.yaml +1 -0
  41. package/helm/values.yaml +13 -14
  42. package/mcp-server.js +4 -1
  43. package/package.json +12 -4
  44. package/scripts/sync-fixtures.mjs +246 -0
  45. package/scripts/upgrade-observability-push.sh +227 -0
  46. package/src/adapters/as400/as400-parser.js +12 -0
  47. package/src/adapters/as400/index.js +134 -0
  48. package/src/adapters/cobol/cobol-parser.js +37 -0
  49. package/src/adapters/cobol/index.js +151 -0
  50. package/src/adapters/ibmmq/ibmmq-parser.js +23 -0
  51. package/src/adapters/ibmmq/index.js +137 -0
  52. package/src/adapters/index.js +79 -0
  53. package/src/adapters/oracle-forms/index.js +145 -0
  54. package/src/adapters/oracle-forms/oracle-forms-parser.js +11 -0
  55. package/src/adapters/sap/index.js +146 -0
  56. package/src/adapters/sap/sap-parser.js +41 -0
  57. package/src/ai-engine.js +22 -22
  58. package/src/config/trusted-signing-keys.json +3 -0
  59. package/src/detectors/build-tool-detector.js +50 -0
  60. package/src/detectors/multi-project-detector.js +22 -22
  61. package/src/detectors/service-detector.js +24 -24
  62. package/src/exec-utils.js +26 -4
  63. package/src/git/base-git-provider.js +117 -117
  64. package/src/git/bitbucket-provider.js +2 -2
  65. package/src/git/git-provider-registry.js +18 -18
  66. package/src/git/github-provider.js +13 -13
  67. package/src/git/multi-repo-pr.js +161 -0
  68. package/src/mcp-http-server.js +32 -16
  69. package/src/observability/bundle-files.js +418 -0
  70. package/src/observability/detect.js +151 -0
  71. package/src/observability/provision.js +212 -0
  72. package/src/observability/render-cli.js +59 -0
  73. package/src/observability/routes.js +88 -0
  74. package/src/patch/patch-engine.js +28 -28
  75. package/src/patch-manager.js +85 -85
  76. package/src/patch_bkp.js +14 -14
  77. package/src/ports.js +4 -4
  78. package/src/routes/workspace.route.js +47 -16
  79. package/src/runtimes/base-runtime.js +75 -75
  80. package/src/runtimes/java/gradle-runtime.js +17 -17
  81. package/src/runtimes/java/java-integrations.js +25 -25
  82. package/src/runtimes/java/maven-runtime.js +34 -34
  83. package/src/runtimes/node/node-integrations.js +1 -1
  84. package/src/runtimes/node/npm-runtime.js +14 -14
  85. package/src/runtimes/node/yarn-runtime.js +4 -4
  86. package/src/runtimes/runtime-registry.js +25 -25
  87. package/src/server-local.js +4 -4
  88. package/src/server.js +1412 -335
  89. package/src/siblings/burst-suppressor.js +89 -0
  90. package/src/siblings/capabilities.js +273 -0
  91. package/src/siblings/env-compat.cjs +58 -0
  92. package/src/siblings/incident-forwarder.js +320 -0
  93. package/src/siblings/logger.js +15 -0
  94. package/src/siblings/metrics.js +94 -0
  95. package/src/utils/agent-auth.js +184 -0
  96. package/src/utils/approval-token.js +56 -0
  97. package/src/utils/bind-host.js +29 -0
  98. package/src/utils/branch-refspec.js +98 -0
  99. package/src/utils/child-env.js +34 -0
  100. package/src/utils/environment-diagnostics.js +55 -55
  101. package/src/utils/exec-policy.js +962 -0
  102. package/src/utils/exec-utils.js +15 -15
  103. package/src/utils/file-count.js +46 -0
  104. package/src/utils/fs-utils.js +10 -10
  105. package/src/utils/multi-repo-open.js +132 -0
  106. package/src/utils/open-gate.js +183 -0
  107. package/src/utils/ranged-read.js +65 -0
  108. package/src/utils/request-guards.js +77 -0
  109. package/src/utils/request-signing.js +342 -0
  110. package/src/utils/root-recovery.js +244 -0
  111. package/src/utils/safe-exec-args.js +58 -0
  112. package/src/utils/sandbox.js +182 -0
  113. package/src/utils/search-outcome.js +56 -0
  114. package/src/utils/workspace-root.js +80 -0
  115. package/src/validators/syntax-validator.js +149 -0
  116. package/src/workspace/detect-port.js +16 -16
  117. package/src/workspace/file-reader.js +1 -1
  118. package/src/workspace/process-manager.js +46 -46
  119. package/src/workspace-manager.js +86 -24
  120. package/test/adapters/as400/as400.test.js +121 -0
  121. package/test/adapters/cobol/cobol.test.js +217 -0
  122. package/test/adapters/ibmmq/ibmmq.test.js +122 -0
  123. package/test/adapters/oracle-forms/oracle-forms.test.js +180 -0
  124. package/test/adapters/registry.test.js +108 -0
  125. package/test/adapters/sap/sap.test.js +142 -0
  126. package/test/agent-auth.test.js +194 -0
  127. package/test/bind-host.test.js +26 -0
  128. package/test/branch-refspec.test.js +224 -0
  129. package/test/burst-suppressor.test.js +60 -0
  130. package/test/capabilities-access.test.js +47 -0
  131. package/test/capabilities.test.js +87 -0
  132. package/test/child-env.test.js +23 -0
  133. package/test/env-compat.test.js +71 -0
  134. package/test/exec-policy.test.js +463 -0
  135. package/test/file-count.test.js +64 -0
  136. package/test/incident-forwarder.test.js +231 -0
  137. package/test/multi-repo-open.test.js +180 -0
  138. package/test/multi-repo-pr.test.js +129 -0
  139. package/test/observability-detect.test.js +199 -0
  140. package/test/open-gate.test.js +341 -0
  141. package/test/ranged-read.test.js +60 -0
  142. package/test/request-guards.test.js +91 -0
  143. package/test/request-signing.test.js +284 -0
  144. package/test/root-recovery-sidecar.test.js +171 -0
  145. package/test/root-recovery.test.js +274 -0
  146. package/test/safe-exec-args.test.js +58 -0
  147. package/test/sandbox.test.js +98 -0
  148. package/test/search-outcome.test.js +50 -0
  149. package/test/workspace-root.test.js +64 -0
  150. package/tools/graphify-validation/README.md +92 -0
  151. package/tools/graphify-validation/config/questions.json +31 -0
  152. package/tools/graphify-validation/config/repos.json +9 -0
  153. package/tools/graphify-validation/config/symbols.json +6 -0
  154. package/tools/graphify-validation/fixtures/spring/expected.json +34 -0
  155. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/AppConfig.java +29 -0
  156. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/AuditLogger.java +15 -0
  157. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/Cache.java +7 -0
  158. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/CheckoutService.java +25 -0
  159. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/InMemoryCache.java +18 -0
  160. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/OrderController.java +22 -0
  161. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/PaymentGateway.java +5 -0
  162. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/PaypalGateway.java +11 -0
  163. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/RefundService.java +14 -0
  164. package/tools/graphify-validation/fixtures/spring/src/main/java/com/example/fx/StripeGateway.java +11 -0
  165. package/tools/graphify-validation/lib/affected_vs_rg.py +81 -0
  166. package/tools/graphify-validation/lib/audit_hook/sitecustomize.py +22 -0
  167. package/tools/graphify-validation/lib/graph_metrics.py +96 -0
  168. package/tools/graphify-validation/lib/gv_common.py +130 -0
  169. package/tools/graphify-validation/lib/licenses.py +47 -0
  170. package/tools/graphify-validation/lib/pip_audit_summary.py +18 -0
  171. package/tools/graphify-validation/lib/recall.py +115 -0
  172. package/tools/graphify-validation/lib/report.py +226 -0
  173. package/tools/graphify-validation/lib/run_all.py +237 -0
  174. package/tools/graphify-validation/lib/run_graphify.py +144 -0
  175. package/tools/graphify-validation/lib/rusage_helper.py +17 -0
  176. package/tools/graphify-validation/lib/sample_edges.py +246 -0
  177. package/tools/graphify-validation/lib/spring_fixture.py +81 -0
  178. package/tools/graphify-validation/requirements-py311.lock +508 -0
  179. package/tools/graphify-validation/requirements-tools.in +1 -0
  180. package/tools/graphify-validation/requirements-tools.lock +371 -0
  181. package/tools/graphify-validation/requirements.in +1 -0
  182. package/tools/graphify-validation/requirements.lock +502 -0
  183. package/tools/graphify-validation/run.sh +43 -0
  184. package/tools/graphify-validation/tests/test_harness.py +151 -0
  185. package/cloudbuild-agent-qa.yaml +0 -43
  186. package/cloudbuild-agent-staging.yaml +0 -40
  187. package/cloudbuild.yaml.deprecated +0 -42
  188. package/src/local-agent-source.tar.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * BaseGitProvider
3
3
  *
4
- * Interface abstrata para Git providers (GitHub, GitLab, Bitbucket).
5
- * Cada provider deve implementar esta interface.
4
+ * Abstract interface for Git providers (GitHub, GitLab, Bitbucket).
5
+ * Each provider must implement this interface.
6
6
  *
7
7
  * @abstract
8
8
  */
@@ -22,7 +22,7 @@ export class BaseGitProvider {
22
22
  // ==========================================
23
23
 
24
24
  /**
25
- * Identificador único do provider
25
+ * Unique identifier of the provider
26
26
  * @returns {string} Ex: 'github', 'gitlab', 'bitbucket'
27
27
  */
28
28
  getId() {
@@ -30,7 +30,7 @@ export class BaseGitProvider {
30
30
  }
31
31
 
32
32
  /**
33
- * Nome amigável do provider
33
+ * Friendly name of the provider
34
34
  * @returns {string} Ex: 'GitHub', 'GitLab', 'Bitbucket'
35
35
  */
36
36
  getName() {
@@ -38,7 +38,7 @@ export class BaseGitProvider {
38
38
  }
39
39
 
40
40
  /**
41
- * URL base da API
41
+ * Base URL of the API
42
42
  * @returns {string}
43
43
  */
44
44
  getApiBaseUrl() {
@@ -50,7 +50,7 @@ export class BaseGitProvider {
50
50
  // ==========================================
51
51
 
52
52
  /**
53
- * Define o token de acesso
53
+ * Sets the access token
54
54
  * @param {string} token
55
55
  */
56
56
  setAccessToken(token) {
@@ -58,9 +58,9 @@ export class BaseGitProvider {
58
58
  }
59
59
 
60
60
  /**
61
- * Retorna URL para OAuth authorization
62
- * @param {string} redirectUri - URI de callback
63
- * @param {string} state - State para CSRF protection
61
+ * Returns the URL for OAuth authorization
62
+ * @param {string} redirectUri - Callback URI
63
+ * @param {string} state - State for CSRF protection
64
64
  * @returns {string}
65
65
  */
66
66
  getAuthorizationUrl(redirectUri, state) {
@@ -68,9 +68,9 @@ export class BaseGitProvider {
68
68
  }
69
69
 
70
70
  /**
71
- * Troca authorization code por access token
71
+ * Exchanges an authorization code for an access token
72
72
  * @param {string} code - Authorization code
73
- * @param {string} redirectUri - URI de callback
73
+ * @param {string} redirectUri - Callback URI
74
74
  * @returns {Promise<TokenResponse>}
75
75
  */
76
76
  async exchangeCodeForToken(code, redirectUri) {
@@ -78,7 +78,7 @@ export class BaseGitProvider {
78
78
  }
79
79
 
80
80
  /**
81
- * Valida se o token ainda é válido
81
+ * Validates whether the token is still valid
82
82
  * @returns {Promise<boolean>}
83
83
  */
84
84
  async validateToken() {
@@ -90,7 +90,7 @@ export class BaseGitProvider {
90
90
  // ==========================================
91
91
 
92
92
  /**
93
- * Obtém informações do usuário autenticado
93
+ * Gets information about the authenticated user
94
94
  * @returns {Promise<UserInfo>}
95
95
  */
96
96
  async getCurrentUser() {
@@ -102,7 +102,7 @@ export class BaseGitProvider {
102
102
  // ==========================================
103
103
 
104
104
  /**
105
- * Lista repositórios do usuário
105
+ * Lists the user's repositories
106
106
  * @param {object} options - { page, perPage, sort }
107
107
  * @returns {Promise<Repository[]>}
108
108
  */
@@ -111,9 +111,9 @@ export class BaseGitProvider {
111
111
  }
112
112
 
113
113
  /**
114
- * Obtém informações de um repositório
115
- * @param {string} owner - Owner do repo
116
- * @param {string} repo - Nome do repo
114
+ * Gets information about a repository
115
+ * @param {string} owner - Repo owner
116
+ * @param {string} repo - Repo name
117
117
  * @returns {Promise<Repository>}
118
118
  */
119
119
  async getRepository(owner, repo) {
@@ -121,10 +121,10 @@ export class BaseGitProvider {
121
121
  }
122
122
 
123
123
  /**
124
- * Clona um repositório
125
- * @param {string} owner - Owner do repo
126
- * @param {string} repo - Nome do repo
127
- * @param {string} destPath - Caminho de destino
124
+ * Clones a repository
125
+ * @param {string} owner - Repo owner
126
+ * @param {string} repo - Repo name
127
+ * @param {string} destPath - Destination path
128
128
  * @param {object} options - { branch, depth }
129
129
  * @returns {Promise<CloneResult>}
130
130
  */
@@ -137,9 +137,9 @@ export class BaseGitProvider {
137
137
  // ==========================================
138
138
 
139
139
  /**
140
- * Lista branches do repositório
141
- * @param {string} owner - Owner do repo
142
- * @param {string} repo - Nome do repo
140
+ * Lists the repository branches
141
+ * @param {string} owner - Repo owner
142
+ * @param {string} repo - Repo name
143
143
  * @returns {Promise<Branch[]>}
144
144
  */
145
145
  async listBranches(owner, repo) {
@@ -147,11 +147,11 @@ export class BaseGitProvider {
147
147
  }
148
148
 
149
149
  /**
150
- * Cria uma nova branch
151
- * @param {string} owner - Owner do repo
152
- * @param {string} repo - Nome do repo
153
- * @param {string} branchName - Nome da nova branch
154
- * @param {string} fromRef - Ref de origem (sha ou branch)
150
+ * Creates a new branch
151
+ * @param {string} owner - Repo owner
152
+ * @param {string} repo - Repo name
153
+ * @param {string} branchName - Name of the new branch
154
+ * @param {string} fromRef - Source ref (sha or branch)
155
155
  * @returns {Promise<Branch>}
156
156
  */
157
157
  async createBranch(owner, repo, branchName, fromRef) {
@@ -159,10 +159,10 @@ export class BaseGitProvider {
159
159
  }
160
160
 
161
161
  /**
162
- * Obtém informações de uma branch
163
- * @param {string} owner - Owner do repo
164
- * @param {string} repo - Nome do repo
165
- * @param {string} branch - Nome da branch
162
+ * Gets information about a branch
163
+ * @param {string} owner - Repo owner
164
+ * @param {string} repo - Repo name
165
+ * @param {string} branch - Branch name
166
166
  * @returns {Promise<Branch>}
167
167
  */
168
168
  async getBranch(owner, repo, branch) {
@@ -174,10 +174,10 @@ export class BaseGitProvider {
174
174
  // ==========================================
175
175
 
176
176
  /**
177
- * Lista commits de uma branch
178
- * @param {string} owner - Owner do repo
179
- * @param {string} repo - Nome do repo
180
- * @param {string} branch - Nome da branch
177
+ * Lists commits of a branch
178
+ * @param {string} owner - Repo owner
179
+ * @param {string} repo - Repo name
180
+ * @param {string} branch - Branch name
181
181
  * @param {object} options - { page, perPage }
182
182
  * @returns {Promise<Commit[]>}
183
183
  */
@@ -186,12 +186,12 @@ export class BaseGitProvider {
186
186
  }
187
187
 
188
188
  /**
189
- * Cria um commit com mudanças
190
- * @param {string} owner - Owner do repo
191
- * @param {string} repo - Nome do repo
192
- * @param {string} branch - Nome da branch
193
- * @param {string} message - Mensagem do commit
194
- * @param {FileChange[]} changes - Lista de mudanças
189
+ * Creates a commit with changes
190
+ * @param {string} owner - Repo owner
191
+ * @param {string} repo - Repo name
192
+ * @param {string} branch - Branch name
193
+ * @param {string} message - Commit message
194
+ * @param {FileChange[]} changes - List of changes
195
195
  * @returns {Promise<Commit>}
196
196
  */
197
197
  async createCommit(owner, repo, branch, message, changes) {
@@ -203,11 +203,11 @@ export class BaseGitProvider {
203
203
  // ==========================================
204
204
 
205
205
  /**
206
- * Obtém conteúdo de um arquivo
207
- * @param {string} owner - Owner do repo
208
- * @param {string} repo - Nome do repo
209
- * @param {string} path - Caminho do arquivo
210
- * @param {string} ref - Branch ou sha
206
+ * Gets the content of a file
207
+ * @param {string} owner - Repo owner
208
+ * @param {string} repo - Repo name
209
+ * @param {string} path - File path
210
+ * @param {string} ref - Branch or sha
211
211
  * @returns {Promise<FileContent>}
212
212
  */
213
213
  async getFileContent(owner, repo, path, ref = 'main') {
@@ -215,14 +215,14 @@ export class BaseGitProvider {
215
215
  }
216
216
 
217
217
  /**
218
- * Cria ou atualiza um arquivo
219
- * @param {string} owner - Owner do repo
220
- * @param {string} repo - Nome do repo
221
- * @param {string} path - Caminho do arquivo
222
- * @param {string} content - Conteúdo (base64 ou texto)
223
- * @param {string} message - Mensagem do commit
218
+ * Creates or updates a file
219
+ * @param {string} owner - Repo owner
220
+ * @param {string} repo - Repo name
221
+ * @param {string} path - File path
222
+ * @param {string} content - Content (base64 or text)
223
+ * @param {string} message - Commit message
224
224
  * @param {string} branch - Branch
225
- * @param {string} sha - SHA atual (para update)
225
+ * @param {string} sha - Current SHA (for update)
226
226
  * @returns {Promise<FileCommit>}
227
227
  */
228
228
  async createOrUpdateFile(owner, repo, path, content, message, branch, sha = null) {
@@ -234,9 +234,9 @@ export class BaseGitProvider {
234
234
  // ==========================================
235
235
 
236
236
  /**
237
- * Lista pull requests
238
- * @param {string} owner - Owner do repo
239
- * @param {string} repo - Nome do repo
237
+ * Lists pull requests
238
+ * @param {string} owner - Repo owner
239
+ * @param {string} repo - Repo name
240
240
  * @param {object} options - { state, page, perPage }
241
241
  * @returns {Promise<PullRequest[]>}
242
242
  */
@@ -245,9 +245,9 @@ export class BaseGitProvider {
245
245
  }
246
246
 
247
247
  /**
248
- * Cria um pull request
249
- * @param {string} owner - Owner do repo
250
- * @param {string} repo - Nome do repo
248
+ * Creates a pull request
249
+ * @param {string} owner - Repo owner
250
+ * @param {string} repo - Repo name
251
251
  * @param {object} pr - { title, body, head, base }
252
252
  * @returns {Promise<PullRequest>}
253
253
  */
@@ -256,10 +256,10 @@ export class BaseGitProvider {
256
256
  }
257
257
 
258
258
  /**
259
- * Obtém informações de um pull request
260
- * @param {string} owner - Owner do repo
261
- * @param {string} repo - Nome do repo
262
- * @param {number} prNumber - Número do PR
259
+ * Gets information about a pull request
260
+ * @param {string} owner - Repo owner
261
+ * @param {string} repo - Repo name
262
+ * @param {number} prNumber - PR number
263
263
  * @returns {Promise<PullRequest>}
264
264
  */
265
265
  async getPullRequest(owner, repo, prNumber) {
@@ -271,10 +271,10 @@ export class BaseGitProvider {
271
271
  // ==========================================
272
272
 
273
273
  /**
274
- * Lista comentários de um pull request
275
- * @param {string} owner - Owner do repo
276
- * @param {string} repo - Nome do repo
277
- * @param {number} prNumber - Número do PR
274
+ * Lists comments of a pull request
275
+ * @param {string} owner - Repo owner
276
+ * @param {string} repo - Repo name
277
+ * @param {number} prNumber - PR number
278
278
  * @param {object} options - { page, perPage }
279
279
  * @returns {Promise<PRComment[]>}
280
280
  */
@@ -283,10 +283,10 @@ export class BaseGitProvider {
283
283
  }
284
284
 
285
285
  /**
286
- * Lista apenas comentários de review (inline no código)
287
- * @param {string} owner - Owner do repo
288
- * @param {string} repo - Nome do repo
289
- * @param {number} prNumber - Número do PR
286
+ * Lists only review comments (inline in the code)
287
+ * @param {string} owner - Repo owner
288
+ * @param {string} repo - Repo name
289
+ * @param {number} prNumber - PR number
290
290
  * @param {object} options - { page, perPage }
291
291
  * @returns {Promise<PRReviewComment[]>}
292
292
  */
@@ -295,11 +295,11 @@ export class BaseGitProvider {
295
295
  }
296
296
 
297
297
  /**
298
- * Obtém um comentário específico
299
- * @param {string} owner - Owner do repo
300
- * @param {string} repo - Nome do repo
301
- * @param {number} prNumber - Número do PR
302
- * @param {string|number} commentId - ID do comentário
298
+ * Gets a specific comment
299
+ * @param {string} owner - Repo owner
300
+ * @param {string} repo - Repo name
301
+ * @param {number} prNumber - PR number
302
+ * @param {string|number} commentId - Comment ID
303
303
  * @returns {Promise<PRComment>}
304
304
  */
305
305
  async getPRComment(owner, repo, prNumber, commentId) {
@@ -307,11 +307,11 @@ export class BaseGitProvider {
307
307
  }
308
308
 
309
309
  /**
310
- * Adiciona um comentário geral ao PR
311
- * @param {string} owner - Owner do repo
312
- * @param {string} repo - Nome do repo
313
- * @param {number} prNumber - Número do PR
314
- * @param {string} body - Conteúdo do comentário
310
+ * Adds a general comment to the PR
311
+ * @param {string} owner - Repo owner
312
+ * @param {string} repo - Repo name
313
+ * @param {number} prNumber - PR number
314
+ * @param {string} body - Comment content
315
315
  * @returns {Promise<PRComment>}
316
316
  */
317
317
  async addPRComment(owner, repo, prNumber, body) {
@@ -319,10 +319,10 @@ export class BaseGitProvider {
319
319
  }
320
320
 
321
321
  /**
322
- * Adiciona um comentário inline no código (review comment)
323
- * @param {string} owner - Owner do repo
324
- * @param {string} repo - Nome do repo
325
- * @param {number} prNumber - Número do PR
322
+ * Adds an inline comment in the code (review comment)
323
+ * @param {string} owner - Repo owner
324
+ * @param {string} repo - Repo name
325
+ * @param {number} prNumber - PR number
326
326
  * @param {object} comment - { body, path, line, side, commitId }
327
327
  * @returns {Promise<PRReviewComment>}
328
328
  */
@@ -331,12 +331,12 @@ export class BaseGitProvider {
331
331
  }
332
332
 
333
333
  /**
334
- * Responde a um comentário existente (thread reply)
335
- * @param {string} owner - Owner do repo
336
- * @param {string} repo - Nome do repo
337
- * @param {number} prNumber - Número do PR
338
- * @param {string|number} commentId - ID do comentário pai
339
- * @param {string} body - Conteúdo da resposta
334
+ * Replies to an existing comment (thread reply)
335
+ * @param {string} owner - Repo owner
336
+ * @param {string} repo - Repo name
337
+ * @param {number} prNumber - PR number
338
+ * @param {string|number} commentId - Parent comment ID
339
+ * @param {string} body - Reply content
340
340
  * @returns {Promise<PRComment>}
341
341
  */
342
342
  async replyToPRComment(owner, repo, prNumber, commentId, body) {
@@ -344,11 +344,11 @@ export class BaseGitProvider {
344
344
  }
345
345
 
346
346
  /**
347
- * Marca um comentário/thread como resolvido
348
- * @param {string} owner - Owner do repo
349
- * @param {string} repo - Nome do repo
350
- * @param {number} prNumber - Número do PR
351
- * @param {string|number} commentId - ID do comentário/thread
347
+ * Marks a comment/thread as resolved
348
+ * @param {string} owner - Repo owner
349
+ * @param {string} repo - Repo name
350
+ * @param {number} prNumber - PR number
351
+ * @param {string|number} commentId - Comment/thread ID
352
352
  * @returns {Promise<{ resolved: boolean }>}
353
353
  */
354
354
  async resolvePRComment(owner, repo, prNumber, commentId) {
@@ -356,11 +356,11 @@ export class BaseGitProvider {
356
356
  }
357
357
 
358
358
  /**
359
- * Marca um comentário/thread como não resolvido
360
- * @param {string} owner - Owner do repo
361
- * @param {string} repo - Nome do repo
362
- * @param {number} prNumber - Número do PR
363
- * @param {string|number} commentId - ID do comentário/thread
359
+ * Marks a comment/thread as unresolved
360
+ * @param {string} owner - Repo owner
361
+ * @param {string} repo - Repo name
362
+ * @param {number} prNumber - PR number
363
+ * @param {string|number} commentId - Comment/thread ID
364
364
  * @returns {Promise<{ resolved: boolean }>}
365
365
  */
366
366
  async unresolvePRComment(owner, repo, prNumber, commentId) {
@@ -368,11 +368,11 @@ export class BaseGitProvider {
368
368
  }
369
369
 
370
370
  /**
371
- * Lista comentários não resolvidos de um PR
372
- * Convenience method - filtra listPRComments + listPRReviewComments
373
- * @param {string} owner - Owner do repo
374
- * @param {string} repo - Nome do repo
375
- * @param {number} prNumber - Número do PR
371
+ * Lists unresolved comments of a PR
372
+ * Convenience method - filters listPRComments + listPRReviewComments
373
+ * @param {string} owner - Repo owner
374
+ * @param {string} repo - Repo name
375
+ * @param {number} prNumber - PR number
376
376
  * @returns {Promise<PRComment[]>}
377
377
  */
378
378
  async listUnresolvedPRComments(owner, repo, prNumber) {
@@ -391,9 +391,9 @@ export class BaseGitProvider {
391
391
  // ==========================================
392
392
 
393
393
  /**
394
- * Cria um webhook
395
- * @param {string} owner - Owner do repo
396
- * @param {string} repo - Nome do repo
394
+ * Creates a webhook
395
+ * @param {string} owner - Repo owner
396
+ * @param {string} repo - Repo name
397
397
  * @param {object} webhook - { url, events, secret }
398
398
  * @returns {Promise<Webhook>}
399
399
  */
@@ -406,10 +406,10 @@ export class BaseGitProvider {
406
406
  // ==========================================
407
407
 
408
408
  /**
409
- * Constrói URL de clone
410
- * @param {string} owner - Owner do repo
411
- * @param {string} repo - Nome do repo
412
- * @param {boolean} useHttps - Usar HTTPS (default) ou SSH
409
+ * Builds a clone URL
410
+ * @param {string} owner - Repo owner
411
+ * @param {string} repo - Repo name
412
+ * @param {boolean} useHttps - Use HTTPS (default) or SSH
413
413
  * @returns {string}
414
414
  */
415
415
  getCloneUrl(owner, repo, useHttps = true) {
@@ -417,8 +417,8 @@ export class BaseGitProvider {
417
417
  }
418
418
 
419
419
  /**
420
- * Parsea URL de repositório para extrair owner e repo
421
- * @param {string} url - URL do repositório
420
+ * Parses a repository URL to extract owner and repo
421
+ * @param {string} url - Repository URL
422
422
  * @returns {{ owner: string, repo: string }}
423
423
  */
424
424
  parseRepositoryUrl(url) {
@@ -4,7 +4,7 @@ import { run } from '../utils/exec-utils.js';
4
4
  /**
5
5
  * BitbucketProvider
6
6
  *
7
- * Implementação do Git provider para Bitbucket Cloud.
7
+ * Git provider implementation for Bitbucket Cloud.
8
8
  *
9
9
  * Bitbucket API 2.0: https://developer.atlassian.com/cloud/bitbucket/rest/intro/
10
10
  *
@@ -661,7 +661,7 @@ export class BitbucketProvider extends BaseGitProvider {
661
661
  const data = await this.apiRequest(`/repositories/${workspace}/${repoSlug}/hooks`, {
662
662
  method: 'POST',
663
663
  body: JSON.stringify({
664
- description: webhook.description || 'InspTech AI Webhook',
664
+ description: webhook.description || 'VisionHammer Webhook',
665
665
  url: webhook.url,
666
666
  active: true,
667
667
  events: webhook.events || ['repo:push', 'pullrequest:created', 'pullrequest:updated'],
@@ -4,7 +4,7 @@ import { BitbucketProvider } from './bitbucket-provider.js';
4
4
  /**
5
5
  * GitProviderRegistry
6
6
  *
7
- * Factory/Registry para gerenciar Git providers.
7
+ * Factory/Registry for managing Git providers.
8
8
  */
9
9
  export class GitProviderRegistry {
10
10
 
@@ -14,28 +14,28 @@ export class GitProviderRegistry {
14
14
  }
15
15
 
16
16
  registerDefaults() {
17
- // Registrar providers disponíveis
17
+ // Register the available providers
18
18
  this.register('github', GitHubProvider);
19
19
  this.register('bitbucket', BitbucketProvider);
20
20
 
21
- // GitLab será implementado depois
21
+ // GitLab will be implemented later
22
22
  // this.register('gitlab', GitLabProvider);
23
23
  }
24
24
 
25
25
  /**
26
- * Registra um provider
27
- * @param {string} id - ID do provider
28
- * @param {class} ProviderClass - Classe do provider
26
+ * Registers a provider
27
+ * @param {string} id - Provider ID
28
+ * @param {class} ProviderClass - Provider class
29
29
  */
30
30
  register(id, ProviderClass) {
31
31
  this.providers.set(id, ProviderClass);
32
- console.log(`📦 Registered git provider: ${id}`);
32
+ console.log(`📦 Registered git provider: ${id}`);
33
33
  }
34
34
 
35
35
  /**
36
- * Cria instância de um provider
37
- * @param {string} id - ID do provider
38
- * @param {object} config - Configuração do provider
36
+ * Creates an instance of a provider
37
+ * @param {string} id - Provider ID
38
+ * @param {object} config - Provider configuration
39
39
  * @returns {BaseGitProvider}
40
40
  */
41
41
  create(id, config = {}) {
@@ -49,7 +49,7 @@ export class GitProviderRegistry {
49
49
  }
50
50
 
51
51
  /**
52
- * Lista IDs dos providers disponíveis
52
+ * Lists the IDs of the available providers
53
53
  * @returns {string[]}
54
54
  */
55
55
  listProviders() {
@@ -57,9 +57,9 @@ export class GitProviderRegistry {
57
57
  }
58
58
 
59
59
  /**
60
- * Detecta provider a partir da URL
61
- * @param {string} url - URL do repositório
62
- * @returns {string|null} - ID do provider
60
+ * Detects the provider from the URL
61
+ * @param {string} url - Repository URL
62
+ * @returns {string|null} - Provider ID
63
63
  */
64
64
  detectProviderFromUrl(url) {
65
65
  if (url.includes('github.com')) {
@@ -75,9 +75,9 @@ export class GitProviderRegistry {
75
75
  }
76
76
 
77
77
  /**
78
- * Cria provider a partir da URL do repositório
79
- * @param {string} url - URL do repositório
80
- * @param {object} config - Configuração
78
+ * Creates a provider from the repository URL
79
+ * @param {string} url - Repository URL
80
+ * @param {object} config - Configuration
81
81
  * @returns {BaseGitProvider}
82
82
  */
83
83
  createFromUrl(url, config = {}) {
@@ -98,7 +98,7 @@ export class GitProviderRegistry {
98
98
  let instance = null;
99
99
 
100
100
  /**
101
- * Obtém instância singleton do GitProviderRegistry
101
+ * Gets the singleton instance of GitProviderRegistry
102
102
  * @returns {GitProviderRegistry}
103
103
  */
104
104
  export function getGitProviderRegistry() {