@entrorove/skill 0.1.25 → 0.1.29

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "entrorove.release-state/1.0",
3
- "version": "0.1.25",
4
- "digest": "51ba0446dc6d2004bdf31195d4cf62bdd522f3c0a76de1c35344df32ae130046",
3
+ "version": "0.1.29",
4
+ "digest": "b8093f6505e0fca874145a2c5397229dcee43251534e33e4b59390de1a7f5fd2",
5
5
  "files": {
6
6
  "local-final-gate16.mjs": "b30caab08441449ad556a6e9a3cefbf91190f0b3f7370f46d2a21156375aa8e3",
7
7
  "local-final-gate16-checks.mjs": "1dd30e9666d458d8b12ca6e4975f6f0ac8450c3ea9cbecc7401ae037f66b589a",
@@ -36,15 +36,23 @@
36
36
  "local-swarm-state.mjs": "ff84c5f35ef3e4a0ad9887d145e404f5786ae0dc92496116699d031b98e90c6a",
37
37
  "local-swarm-storage.mjs": "4b506481913fe22769f47a14a024a2cc4c0f1e986bb52ef606d14c7844226086",
38
38
  "local-swarm.mjs": "94b5adde0239cc21bada288886482934d409f4383d31076025437ed621ef43b6",
39
+ "local-autocoord17-authority.mjs": "86b79798f6019523b1260b819622070a5b0d39670f607da930fb6923259dff1d",
40
+ "local-autocoord17-controller.mjs": "1307c4decf8dc98a447e4072d27f69caec64149f8d48545c84ef7cc50a561777",
41
+ "local-autocoord17-peers.mjs": "103d6a6634bbd3b4b850c5db7b571e3f05736b94e59a8fd7da63741281c903a4",
42
+ "local-autocoord17-store.mjs": "b48847a4a40c3aeb16bc1431b6a16221fb5ffdc0a6ba5c263acf196279d80ed1",
43
+ "local-autocoord17-tasks.mjs": "44b9f2d326ab3060c36657685b48b50a98711644e5baf47d4e8cb72c4c45f2a7",
44
+ "local-autocoord17-waits.mjs": "2b0a713987822548a94e1ed3a9a891532db45383797dfc5d5bc8d1e35593cf25",
45
+ "local-validator-isolation17.mjs": "48e94604e28b8fddd567dfb35ff60b73fd094a5803bd49f076388b7f310f92aa",
46
+ "local-calctool-composition17.mjs": "ac89fcb41ab0d0d9b47c1b5696945281b0894eb064820775e36a011c76314e6a",
39
47
  "cli.mjs": "c85289b1cbe0ea469a57e67edb1fc475dc9c626c2beae00f5e0954c00757481d",
40
48
  "review-client.mjs": "3491eef68ed533174b31db3c53febb6519b8f088f71a9964644714a9a4c03c77",
41
49
  "version.mjs": "1f392147d72c40af4b03b307ea607075fb815af5174fa07e254b95fe12dbf3e7",
42
- "SKILL.md": "f6a140c4d0dd79b6985d1cd085c831a26c64119a4107e35d25c3ac5a566ed797",
43
- "CAPABILITY-MAP.md": "1a58ac506efe894c0ba224605a758cbc8a1c8f7b9ed05ce355e0c9a3ce43c61f",
50
+ "SKILL.md": "87c5e85b0c767c85660ebb9958bccaeb69f3f8c2f122f210f5b38e30df891014",
51
+ "CAPABILITY-MAP.md": "128ecc8d90b2c17846ce6f0c650eada9e7fa7240f5d3c03b31e3ee01135557b8",
44
52
  "AGREEMENT.md": "f93a68e92c457200dd024610e65f74e478b8f60860f951da818b70561f1b9bf8",
45
- "package.json": "a60c18189e680be7c8547c5331ceee74f64115dc571e8e069e76570a5fcede0b",
53
+ "package.json": "cb54098a13e05f22ef09bcb6a35a47995415bb14732791b61c0334ec7c7d1403",
46
54
  "manifest.json": "ab06e307795bc9da5add926752b6c4dbdaf18625090261a035aa356a679c504f",
47
- "release.mjs": "b6882c24084129a0853330ec707b46fac69c25d533cdcc23b95b23cdefda27e9",
55
+ "release.mjs": "260a3c933aa7a118fec72d46b19461c6841ebaf925db31ad0309a13bf91e9ed4",
48
56
  "local-cli.mjs": "ecc85bc5f36a5663fef004e59525374dc7883d3889f5a0cfe219ae5e84b2d3ea",
49
57
  "local-state-lock.mjs": "1dbf64264642a0851faf043e07ee9f66d2ad0508e9f799b0626246e42fae893e",
50
58
  "local-execution.mjs": "97dfad5e889e679e9cc34434005342526502795abba21078fa40673788073153",
@@ -52,6 +60,7 @@
52
60
  "local-evidence-verification.mjs": "9b7dea31777505272f63616fd62af7603338f703bb1285fc565d6451715c7ce0",
53
61
  "local-formula.mjs": "706d5ec0cb2caf95a547531a81ca746fe246d4c53d902e03595a3b360e8c85af",
54
62
  "local-ledger.mjs": "2009fb68aadcd7292b72f1d0d99f378d03644be1c5b4b4150d9f6a0b3f7c15ce",
63
+ "local-error.mjs": "66484e2e27c9870a17dc0f1cf64d108ea384ad9fb41b7adc3aacb243ae65fe2e",
55
64
  "blueprint-criterion-wire.mjs": "fb6b7dcce0b97a699e3e8968372767a3fddd83fedc750998573f789177243072",
56
65
  "blueprint-criterion-runner.mjs": "761c0e670b4b20c6bed53e5ca5d0178759505c3977ea2ed1b7223383c534bc4c",
57
66
  "local-chain-bindings.mjs": "b8eff999ccd17b53c614a3c9f5376da78fcaa8632bb3e07bc1adcceda2e75f6c",
@@ -108,7 +117,7 @@
108
117
  "local-scope-state.mjs": "8b600a91fc0068d7a8c0bb752ddba7ed30ada93daafb118d6cba2368fd94cb27",
109
118
  "local-scope-workspaces.mjs": "a44c34537e5ed2dcaf193a985e5bc05957989fbb160a650f9e37ba7d66eb2de8",
110
119
  "local-task-routing.mjs": "e26d6f1ba134ffe1da2a49b4fb6bb6dfa5617671f774a08e719d04f202cf5eca",
111
- "remote-client.mjs": "dabbcc7bd0fd16ba029163f407edb85e914df83cd5914221eb2ce0d061ca8f28",
120
+ "remote-client.mjs": "ce16258faffb09c9db19609d47a0af6f63fcbc256feb35ba7a14bbb89e69cc6e",
112
121
  "remote-transport.mjs": "5e5a8c0b490371f7f5a052cffbeee6202d4cf713dff1c43b6d910fe944f8429c",
113
122
  "local-credential.mjs": "2a302a7f67b5ea8dc73453fc96ab33db349b59ca11fa9456e48ca1d9669d877c",
114
123
  "local-invocations.mjs": "f6ac4c41c1a5ec34de358c4cca210ca8e403b3a913150a43bb55ec9be55d9998",
@@ -126,13 +135,13 @@
126
135
  "workflow-local-runner.mjs": "9fa899a11da2b6b7a436bf9b561641856adcbc5f8b914f6ba89a64dae224900d",
127
136
  "workflow-local-contracts.mjs": "604afa9e97c6dfc3d07b01509ef2476887a2fc219c9e827bcac5d563ab4719e7",
128
137
  "workflow-local-client.mjs": "45c954f694d96bf0ea87ee2dc6902a6763dac2cb1df713b6a5e749632054e9af",
129
- "workflow-local-request.mjs": "e8cce489ecadc756e27bf8686556a830e9e789df03a56e034f7b741e6455d3ae",
138
+ "workflow-local-request.mjs": "4e24c543ce386292a87dc9cd41f90d23375f12079cacffc515c8cd01fd571780",
130
139
  "task-message-entry.mjs": "31d10056cb905237cd5649e8eb067009ff1612ec5dc1061e0373209fbc0b646a",
131
140
  "task-message-cli.mjs": "3ca65e96c28129b3bd5cac962d106e0859a1f17df1f6a66ee543c6efc22f918d",
132
141
  "local-contracts.mjs": "43715cd73460ccea734501a3dd5667184da0f6a5b0189e038319a439ba52fc76",
133
142
  "local-contract-types.mjs": "5d244237fc69052b2fa83098022761bae929e8b75a0683883b620711bc132050",
134
143
  "local-archguard-ast.mjs": "cefd835312a623e83bf48e4d8e1f76ac6a8adc56c35843705c16967d16bec4e6",
135
- "local-archguard-checkpoint.mjs": "1ee3a40561940a62583382036d4049321627fe9e41e0f31a973ef40bc86fcb55",
144
+ "local-archguard-checkpoint.mjs": "37896902520cc995720c96288e4a5ed3585952b55c9c35be281f91fa754c71ec",
136
145
  "local-archguard-components.mjs": "a8fb3d0fd787f9160905013fd333cc0b9e8cf624cce797461f36f4ab31d170ad",
137
146
  "local-archguard-contract.mjs": "cfc397a1ce171ab84f8bf1db152e6d8d280b7ca041da56a7a4cd62b02c2e2e89",
138
147
  "local-archguard-contracts.mjs": "29e9b86f14dc086aa0b791c874d6efc50d849f806b3f2b8725481114f01ba8ba",
@@ -142,7 +151,7 @@
142
151
  "local-archguard-operations.mjs": "1a35268b857b86eab54dd4efa78fc54bf08b39dfab4fa980c7dd63b8959206b0",
143
152
  "local-archguard-scope.mjs": "afbd23a79c175f198892ddb2026ecac219a1650ee6115763736d9b1ee5a07ee0",
144
153
  "local-archguard-signing.mjs": "7de0fe4b8f6f5a92d043ad8976054faaa76b7b37556ed582e5e012c6f0facc87",
145
- "local-archguard-snapshot.mjs": "81b456915232b8e87d9b663912bf95062753a0bd0e38a096cbd80c2ef03683f9",
154
+ "local-archguard-snapshot.mjs": "81282fa7d0e3bbf879fc5a3c6a9e4f44fb15dee36029bb0ce2a5e4f1710cf4c9",
146
155
  "local-archguard-state.mjs": "1d3c74c4ec222646e82120be4aa6a00c52d2867fb8c20323420d6ab0bf2cd46c",
147
156
  "local-archguard.mjs": "4c8ec5d569d728b15161eb88e49371c77def7d1fe511aa16694581a2c1d59433",
148
157
  "archguard-runtime-build.mjs": "45bf31764763973bd8de32b3e16d194162407e7cb74802df3ab363f0fd30e866",
package/release.mjs CHANGED
@@ -17,6 +17,16 @@ const swarmSourceFiles = Object.freeze([
17
17
  'local-swarm-storage.mjs',
18
18
  'local-swarm.mjs',
19
19
  ])
20
+ const coordination17SourceFiles = Object.freeze([
21
+ 'local-autocoord17-authority.mjs',
22
+ 'local-autocoord17-controller.mjs',
23
+ 'local-autocoord17-peers.mjs',
24
+ 'local-autocoord17-store.mjs',
25
+ 'local-autocoord17-tasks.mjs',
26
+ 'local-autocoord17-waits.mjs',
27
+ 'local-validator-isolation17.mjs',
28
+ 'local-calctool-composition17.mjs',
29
+ ])
20
30
  const sourceFiles = [
21
31
  ...FINAL_GATE16_PACKAGE_FILES,
22
32
  'local-merge-archguard-verification.d.mts',
@@ -35,9 +45,11 @@ const sourceFiles = [
35
45
  'local-merge-targets.mjs',
36
46
  'local-merge-transaction.mjs',
37
47
  ...swarmSourceFiles,
48
+ ...coordination17SourceFiles,
38
49
  'cli.mjs', 'review-client.mjs', 'version.mjs', 'SKILL.md', 'CAPABILITY-MAP.md', 'AGREEMENT.md',
39
50
  'package.json', 'manifest.json', 'release.mjs',
40
51
  'local-cli.mjs', 'local-state-lock.mjs', 'local-execution.mjs', 'local-integrity.mjs', 'local-evidence-verification.mjs', 'local-formula.mjs', 'local-ledger.mjs',
52
+ 'local-error.mjs',
41
53
  'blueprint-criterion-wire.mjs', 'blueprint-criterion-runner.mjs',
42
54
  'local-chain-bindings.mjs', 'local-chain-broker.mjs', 'local-chain-contracts.mjs', 'local-chain-controller.mjs',
43
55
  'local-chain-human.mjs', 'local-chain-lock.mjs', 'local-chain-operations.mjs', 'local-chain-plan.mjs',
@@ -165,6 +177,16 @@ function versionNext(version) {
165
177
  return `${parts[0]}.${parts[1]}.${parts[2] + 1}`
166
178
  }
167
179
 
180
+ function distinctReleaseLabels(changed, labels) {
181
+ const seen = new Set()
182
+ return changed.map(name => labels[name]).filter(label => {
183
+ const key = `${label.zh}\u0000${label.en}`
184
+ if (seen.has(key)) return false
185
+ seen.add(key)
186
+ return true
187
+ })
188
+ }
189
+
168
190
  const calctoolReleaseLabels = Object.freeze({
169
191
  'local-decimal.mjs': { zh: 'Calctool Decimal28 公式与本地执行', en: 'Calctool Decimal28 formulas and local execution' },
170
192
  'local-formula-ast.mjs': { zh: 'Calctool Decimal28 公式与本地执行', en: 'Calctool Decimal28 formulas and local execution' },
@@ -196,6 +218,10 @@ const swarmReleaseLabels = Object.freeze(Object.fromEntries(swarmSourceFiles.map
196
218
  zh: 'Swarm 原授权协作调度与实际执行守卫', en: 'Swarm original-authority coordination and actual execution guard',
197
219
  }])))
198
220
 
221
+ const coordination17ReleaseLabels = Object.freeze(Object.fromEntries(coordination17SourceFiles.map(name => [name, {
222
+ zh: '协同执行与验证隔离能力', en: 'coordination execution and validator isolation capabilities',
223
+ }])))
224
+
199
225
  const nativeReadReleaseLabels = {
200
226
  'local-budget-git-attributes.mjs': { zh: '固定Git实际源读取与预算记账', en: 'fixed Git actual source reads and budget accounting' },
201
227
  'local-budget-git-native-attributes.mjs': { zh: '固定Git实际源读取与预算记账', en: 'fixed Git actual source reads and budget accounting' },
@@ -231,7 +257,7 @@ function releaseNote(changed) {
231
257
  if (suppliedZh && suppliedEn) return {
232
258
  zh: suppliedZh.replaceAll(/\s+/g, ' '), en: suppliedEn.replaceAll(/\s+/g, ' '),
233
259
  }
234
- const labels = withFinalGate16ReleaseLabels({ ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels,
260
+ const labels = withFinalGate16ReleaseLabels({ ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...coordination17ReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels,
235
261
  'blueprint-criterion-wire.mjs': { zh: '蓝图验收标准执行授权', en: 'Blueprint criterion execution authority' },
236
262
  'blueprint-criterion-runner.mjs': { zh: '蓝图验收标准实际执行器', en: 'Blueprint criterion process runner' },
237
263
  'local-archguard-ast.mjs': { zh: 'Archguard 架构合同与执行守卫', en: 'Archguard architecture contract and execution guard' },
@@ -265,6 +291,7 @@ function releaseNote(changed) {
265
291
  'local-execution.mjs': { zh: '本地执行闸门与预算', en: 'local execution gates and budgets' },
266
292
  'local-integrity.mjs': { zh: '证据与回执验签', en: 'evidence and receipt verification' },
267
293
  'local-evidence-verification.mjs': { zh: 'Validator 独立证据验证与执行结果绑定', en: 'Validator independent evidence verification and execution result binding' },
294
+ 'local-error.mjs': { zh: '统一本地错误信封', en: 'unified local error envelopes' },
268
295
  'local-formula.mjs': { zh: '确定性公式引擎', en: 'deterministic formula engine' },
269
296
  'local-ledger.mjs': { zh: '执行与链路台账', en: 'execution and chain ledger' },
270
297
  'local-approved-plan.mjs': { zh: '冻结计划执行器', en: 'frozen plan runner' },
@@ -317,9 +344,10 @@ function releaseNote(changed) {
317
344
  'task-message-entry.mjs': { zh: '任务消息实际投递入口', en: 'task message host delivery entry' },
318
345
  'task-message-cli.mjs': { zh: '任务消息命令与适配器', en: 'task message command and adapter' },
319
346
  })
347
+ const distinct = distinctReleaseLabels(changed, labels)
320
348
  return {
321
- zh: `更新了${changed.map(name => labels[name].zh).join('、')}。`,
322
- en: `Updated ${changed.map(name => labels[name].en).join(', ')}.`,
349
+ zh: `更新了${distinct.map(label => label.zh).join('、')}。`,
350
+ en: `Updated ${distinct.map(label => label.en).join(', ')}.`,
323
351
  }
324
352
  }
325
353
 
package/releases.json CHANGED
@@ -1,4 +1,28 @@
1
1
  [
2
+ {
3
+ "version": "0.1.29",
4
+ "date": "2026-10-11",
5
+ "zh": "更新了自动版本与更新日志、远端恢复客户端。",
6
+ "en": "Updated automatic versioning and changelog, remote recovery client."
7
+ },
8
+ {
9
+ "version": "0.1.28",
10
+ "date": "2026-10-09",
11
+ "zh": "更新了协同执行与验证隔离能力、安装包配置、自动版本与更新日志、统一本地错误信封。",
12
+ "en": "Updated coordination execution and validator isolation capabilities, package configuration, automatic versioning and changelog, unified local error envelopes."
13
+ },
14
+ {
15
+ "version": "0.1.27",
16
+ "date": "2026-10-08",
17
+ "zh": "更新了IDE 工作流程说明、能力覆盖映射、Archguard 架构合同与执行守卫、工作流原执行请求恢复。",
18
+ "en": "Updated IDE workflow instructions, capability coverage map, Archguard architecture contract and execution guard, workflow original execution request recovery."
19
+ },
20
+ {
21
+ "version": "0.1.26",
22
+ "date": "2026-10-07",
23
+ "zh": "更新了能力覆盖映射、安装包配置。",
24
+ "en": "Updated capability coverage map, package configuration."
25
+ },
2
26
  {
3
27
  "version": "0.1.25",
4
28
  "date": "2026-10-07",
package/remote-client.mjs CHANGED
@@ -17,6 +17,18 @@ function requestId(operation, input) {
17
17
  return createHash('sha256').update(operation + canonical(input)).digest('hex');
18
18
  }
19
19
 
20
+ // The API advertises JSON Schema formats that are intentionally kept out of
21
+ // Ajv's core package. Register the formats used by the discovered contract so
22
+ // client-side validation can reach the actual operation instead of failing
23
+ // while compiling the schema.
24
+ const discoveredUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
25
+ function discoveredAjv() {
26
+ const ajv = new Ajv({ strict: true, strictRequired: false, allErrors: true });
27
+ ajv.addFormat('uuid', discoveredUuid);
28
+ ajv.addFormat('date-time', value => Number.isFinite(Date.parse(value)));
29
+ return ajv;
30
+ }
31
+
20
32
  export function buildInvocation(operation, input) {
21
33
  if (!['capabilities', 'task-describe', 'message-route', 'message-accept', 'task-resume', 'task-checkpoint',
22
34
  'message-status', 'message-delivery-start', 'message-delivery-report', 'message-resolve', 'message-complete',
@@ -58,7 +70,7 @@ export async function invokeRemote(data, dependencies) {
58
70
  const capabilities = discovery.result.output.capabilities;
59
71
  const schema = capabilities?.operationSchemas?.[data.operation];
60
72
  if (!capabilities?.operations?.includes(data.operation) || !schema) throw new Error(`Capability discovery does not support ${data.operation}`);
61
- const validate = new Ajv({ strict: true, strictRequired: false, allErrors: true }).compile(schema);
73
+ const validate = discoveredAjv().compile(schema);
62
74
  if (!validate(data.input)) throw new Error(`Invalid ${data.operation} input: ${validate.errors.map(error => `${error.instancePath || '/'} ${error.message}`).join('; ')}`);
63
75
  validateDiscoveredChecks(data.input, capabilities.inputChecks?.[data.operation]);
64
76
  }
@@ -120,7 +132,7 @@ function machineOrigin(dependencies) { return trustedOrigin(dependencies.apiOrig
120
132
  function validateMachineCapability(operation, input, capabilities) {
121
133
  const schema = capabilities?.operationSchemas?.[operation];
122
134
  if (!capabilities?.operations?.includes(operation) || !schema) throw new Error(`Capability discovery does not support ${operation}`);
123
- const validate = new Ajv({ strict: true, strictRequired: false, allErrors: true }).compile(schema);
135
+ const validate = discoveredAjv().compile(schema);
124
136
  if (!validate(input)) throw new Error(`Invalid ${operation} input: ${validate.errors.map(error => `${error.instancePath || '/'} ${error.message}`).join('; ')}`);
125
137
  validateDiscoveredChecks(input, capabilities.inputChecks?.[operation]);
126
138
  }
@@ -46,7 +46,9 @@ export async function managedExecutionAuthority(input, task, client) {
46
46
  try { output = await client.invoke('handoff-execution-authority', attempt); }
47
47
  catch (error) {
48
48
  if (!error?.outcomeUnknown || error.requestId !== requestId) throw error;
49
- output = await client.status(requestId);
49
+ // The committed authority's own status read was lost too, so its outcome stays unknown.
50
+ try { output = await client.status(requestId); }
51
+ catch { throw new Error(`Original execution authority is unavailable; reconcile requestId=${requestId} without a new attempt`); }
50
52
  }
51
53
  return { attempt, output: original(output, requestId) };
52
54
  });