cli-archguard 7.0.32 → 7.0.33

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.
@@ -2,7 +2,7 @@ import { createHash } from 'node:crypto'
2
2
 
3
3
  const REQUEST_VERSION = 'archguard.skill.request/1.0'
4
4
  const RESPONSE_VERSION = 'archguard.skill.response/1.0'
5
- const COMPILER_VERSION = 'v7.0.32'
5
+ const COMPILER_VERSION = 'v7.0.33'
6
6
  const CONTRACT_VERSION = 'archguard.contract/1.0'
7
7
  const LEDGER_VERSION = 'archguard.checkpoint-ledger/1.0'
8
8
  const SHA256 = /^[0-9a-f]{64}$/
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
@@ -4,7 +4,7 @@
4
4
  },
5
5
  "dependencies": {
6
6
  "@babel/parser": "^8.0.4",
7
- "cli-aimlock": "7.0.32",
7
+ "cli-aimlock": "7.0.33",
8
8
  "yaml": "^2.8.1"
9
9
  },
10
10
  "description": "ArchGuard skill installer for CLI.Tax: architecture contracts, chunk checkpoints, drift control, and auditable rollback.",
@@ -26,5 +26,5 @@
26
26
  "url": "https://github.com/88208555/archguard-clitax.git"
27
27
  },
28
28
  "type": "module",
29
- "version": "7.0.32"
29
+ "version": "7.0.33"
30
30
  }
package/skill/SKILL.md CHANGED
@@ -5,7 +5,7 @@ description: '在代码写入期间锁定项目架构合同,并逐块检查技
5
5
 
6
6
  # 架构守卫 / ArchGuard / Архитектурный страж
7
7
 
8
- Package version: v7.0.32
8
+ Package version: v7.0.33
9
9
 
10
10
  Endpoint: https://cli.tax/Ag4Ch8Rd2K
11
11
  Request schema: `archguard.skill.request/1.0`
package/skill/skill.json CHANGED
@@ -5,6 +5,6 @@
5
5
  "method": "POST",
6
6
  "name": "archguard",
7
7
  "type": "Skill",
8
- "version": "v7.0.32",
8
+ "version": "v7.0.33",
9
9
  "schemaVersion": "archguard.skill.request/1.0"
10
10
  }