cli-mergeguard 7.0.32 → 7.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/broker.mjs CHANGED
@@ -25,6 +25,19 @@ const EVALUATION_SCHEMA = 'skill-automatic-evaluation/1.0'
25
25
  const IDENTIFIER_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/
26
26
  const REQUEST_SCHEMA_PATTERN = /^([A-Za-z0-9.-]+\.skill)\.request\/([0-9]+\.[0-9]+)$/
27
27
  const TRANSPORT_ERROR_CODE_PATTERN = /^[A-Z][A-Z0-9_]{1,63}$/
28
+ const NETWORK_TRANSPORT_ERROR = 'NETWORK_TRANSPORT'
29
+ const SKILL_INVOCATION_ERROR = 'SKILL_INVOCATION_FAILED'
30
+
31
+ class OfficialSkillInvocationError extends Error {
32
+ constructor(context, operation, transportCode) {
33
+ super(`${context.displayName} ${operation} invocation failed: network transport ${transportCode}`)
34
+ this.name = 'OfficialSkillInvocationError'
35
+ this.code = NETWORK_TRANSPORT_ERROR
36
+ this.operation = operation
37
+ this.retryable = false
38
+ this.transportCode = transportCode
39
+ }
40
+ }
28
41
 
29
42
  function asObject(value, label) {
30
43
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
@@ -237,6 +250,29 @@ export function transportFailureCode(error) {
237
250
  return 'UNKNOWN_TRANSPORT_ERROR'
238
251
  }
239
252
 
253
+ export function officialSkillFailureResponse(error) {
254
+ if (error instanceof OfficialSkillInvocationError) {
255
+ return {
256
+ ok: false,
257
+ error: {
258
+ code: error.code,
259
+ message: error.message,
260
+ operation: error.operation,
261
+ retryable: error.retryable,
262
+ transportCode: error.transportCode,
263
+ },
264
+ }
265
+ }
266
+ return {
267
+ ok: false,
268
+ error: {
269
+ code: SKILL_INVOCATION_ERROR,
270
+ message: error instanceof Error ? error.message : 'Skill invocation failed',
271
+ retryable: false,
272
+ },
273
+ }
274
+ }
275
+
240
276
  export async function invokeOfficialSkill(context, operation, input, dependencies) {
241
277
  const environment = asObject(dependencies.environment, 'broker environment')
242
278
  if (typeof dependencies.request !== 'function') {
@@ -253,9 +289,7 @@ export async function invokeOfficialSkill(context, operation, input, dependencie
253
289
  signal: AbortSignal.timeout(CALL_TIMEOUT_MS),
254
290
  })
255
291
  } catch (error) {
256
- throw new Error(
257
- `${context.displayName} ${operation} invocation failed: network transport ${transportFailureCode(error)}`,
258
- )
292
+ throw new OfficialSkillInvocationError(context, operation, transportFailureCode(error))
259
293
  }
260
294
  const payload = await responsePayload(response, `${context.displayName} ${operation} response`)
261
295
  if (!response.ok || payload.ok !== true) {
package/installer.mjs CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  brokerCommandInput,
14
14
  invokeCommandInput,
15
15
  invokeOfficialSkill,
16
+ officialSkillFailureResponse,
16
17
  } from './broker.mjs'
17
18
 
18
19
  export {
@@ -25,6 +26,7 @@ export {
25
26
  callOfficialSkill,
26
27
  invokeCommandInput,
27
28
  invokeOfficialSkill,
29
+ officialSkillFailureResponse,
28
30
  } from './broker.mjs'
29
31
 
30
32
  const INSTALL_META = 'install-meta.json'
@@ -184,11 +186,19 @@ async function readBrokerSource(input) {
184
186
  }
185
187
 
186
188
  async function runBrokerInvocation(context, commandInput) {
187
- const invocation = await invokeOfficialSkill(
188
- context, commandInput.operation, commandInput.input, brokerDependencies(),
189
- )
190
- console.log(JSON.stringify(invocation))
191
- return invocation
189
+ try {
190
+ const invocation = await invokeOfficialSkill(
191
+ context, commandInput.operation, commandInput.input, brokerDependencies(),
192
+ )
193
+ console.log(JSON.stringify(invocation))
194
+ return invocation
195
+ } catch (error) {
196
+ const response = officialSkillFailureResponse(error)
197
+ console.log(JSON.stringify({ response }))
198
+ console.error(response.error.message)
199
+ process.exitCode = 1
200
+ return null
201
+ }
192
202
  }
193
203
 
194
204
  export async function runIntakeHandshake(context, spec) {
package/package.json CHANGED
@@ -18,5 +18,5 @@
18
18
  "url": "https://github.com/88208555/MergeGuard-clitax.git"
19
19
  },
20
20
  "type": "module",
21
- "version": "7.0.32"
21
+ "version": "7.0.34"
22
22
  }
package/skill/SKILL.md CHANGED
@@ -5,7 +5,7 @@ description: '智能合并守卫:快照分支+预演+验证式合并+规则衰
5
5
 
6
6
  # MergeGuard
7
7
 
8
- Package version: v7.0.32
8
+ Package version: v7.0.34
9
9
 
10
10
  当前实现是“规则编译与守门协议”,不是可直接操作 git 的合并器。任何仓库写入、快照、合并或回滚都必须交给真实 local runner;远程纯运行时一律 fail-closed。
11
11
 
package/skill/skill.json CHANGED
@@ -5,6 +5,6 @@
5
5
  "method": "POST",
6
6
  "name": "mergeguard",
7
7
  "type": "Skill",
8
- "version": "v7.0.32",
8
+ "version": "v7.0.34",
9
9
  "schemaVersion": "mergeguard.skill.request/1.0"
10
10
  }