@entrorove/skill 0.1.28 → 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.
- package/CHANGELOG.md +7 -2
- package/SKILL.md +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/release-state.json +4 -4
- package/release.mjs +13 -2
- package/releases.json +8 -2
- package/remote-client.mjs +14 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.29 — 2026-10-11
|
|
4
|
+
|
|
5
|
+
- 更新了自动版本与更新日志、远端恢复客户端。
|
|
6
|
+
- Updated automatic versioning and changelog, remote recovery client.
|
|
7
|
+
|
|
3
8
|
## 0.1.28 — 2026-10-09
|
|
4
9
|
|
|
5
|
-
-
|
|
6
|
-
- Updated coordination execution and validator isolation capabilities,
|
|
10
|
+
- 更新了协同执行与验证隔离能力、安装包配置、自动版本与更新日志、统一本地错误信封。
|
|
11
|
+
- Updated coordination execution and validator isolation capabilities, package configuration, automatic versioning and changelog, unified local error envelopes.
|
|
7
12
|
|
|
8
13
|
## 0.1.27 — 2026-10-08
|
|
9
14
|
|
package/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ description: An engineering skill that understands a task, chooses a fitting wor
|
|
|
5
5
|
|
|
6
6
|
# entrorove · 熵巡
|
|
7
7
|
|
|
8
|
-
Version: 0.1.
|
|
8
|
+
Version: 0.1.29.
|
|
9
9
|
|
|
10
10
|
Read the user's goal and repository instructions first. Preserve the original task through planning, execution and verification. Use the workflow only where it helps; a small, low-risk edit can proceed directly. Never claim a reported step is a verified result.
|
|
11
11
|
|
package/manifest.json
CHANGED
package/package.json
CHANGED
package/release-state.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "entrorove.release-state/1.0",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"digest": "
|
|
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",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"AGREEMENT.md": "f93a68e92c457200dd024610e65f74e478b8f60860f951da818b70561f1b9bf8",
|
|
53
53
|
"package.json": "cb54098a13e05f22ef09bcb6a35a47995415bb14732791b61c0334ec7c7d1403",
|
|
54
54
|
"manifest.json": "ab06e307795bc9da5add926752b6c4dbdaf18625090261a035aa356a679c504f",
|
|
55
|
-
"release.mjs": "
|
|
55
|
+
"release.mjs": "260a3c933aa7a118fec72d46b19461c6841ebaf925db31ad0309a13bf91e9ed4",
|
|
56
56
|
"local-cli.mjs": "ecc85bc5f36a5663fef004e59525374dc7883d3889f5a0cfe219ae5e84b2d3ea",
|
|
57
57
|
"local-state-lock.mjs": "1dbf64264642a0851faf043e07ee9f66d2ad0508e9f799b0626246e42fae893e",
|
|
58
58
|
"local-execution.mjs": "97dfad5e889e679e9cc34434005342526502795abba21078fa40673788073153",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"local-scope-state.mjs": "8b600a91fc0068d7a8c0bb752ddba7ed30ada93daafb118d6cba2368fd94cb27",
|
|
118
118
|
"local-scope-workspaces.mjs": "a44c34537e5ed2dcaf193a985e5bc05957989fbb160a650f9e37ba7d66eb2de8",
|
|
119
119
|
"local-task-routing.mjs": "e26d6f1ba134ffe1da2a49b4fb6bb6dfa5617671f774a08e719d04f202cf5eca",
|
|
120
|
-
"remote-client.mjs": "
|
|
120
|
+
"remote-client.mjs": "ce16258faffb09c9db19609d47a0af6f63fcbc256feb35ba7a14bbb89e69cc6e",
|
|
121
121
|
"remote-transport.mjs": "5e5a8c0b490371f7f5a052cffbeee6202d4cf713dff1c43b6d910fe944f8429c",
|
|
122
122
|
"local-credential.mjs": "2a302a7f67b5ea8dc73453fc96ab33db349b59ca11fa9456e48ca1d9669d877c",
|
|
123
123
|
"local-invocations.mjs": "f6ac4c41c1a5ec34de358c4cca210ca8e403b3a913150a43bb55ec9be55d9998",
|
package/release.mjs
CHANGED
|
@@ -177,6 +177,16 @@ function versionNext(version) {
|
|
|
177
177
|
return `${parts[0]}.${parts[1]}.${parts[2] + 1}`
|
|
178
178
|
}
|
|
179
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
|
+
|
|
180
190
|
const calctoolReleaseLabels = Object.freeze({
|
|
181
191
|
'local-decimal.mjs': { zh: 'Calctool Decimal28 公式与本地执行', en: 'Calctool Decimal28 formulas and local execution' },
|
|
182
192
|
'local-formula-ast.mjs': { zh: 'Calctool Decimal28 公式与本地执行', en: 'Calctool Decimal28 formulas and local execution' },
|
|
@@ -334,9 +344,10 @@ function releaseNote(changed) {
|
|
|
334
344
|
'task-message-entry.mjs': { zh: '任务消息实际投递入口', en: 'task message host delivery entry' },
|
|
335
345
|
'task-message-cli.mjs': { zh: '任务消息命令与适配器', en: 'task message command and adapter' },
|
|
336
346
|
})
|
|
347
|
+
const distinct = distinctReleaseLabels(changed, labels)
|
|
337
348
|
return {
|
|
338
|
-
zh: `更新了${
|
|
339
|
-
en: `Updated ${
|
|
349
|
+
zh: `更新了${distinct.map(label => label.zh).join('、')}。`,
|
|
350
|
+
en: `Updated ${distinct.map(label => label.en).join(', ')}.`,
|
|
340
351
|
}
|
|
341
352
|
}
|
|
342
353
|
|
package/releases.json
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
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
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.1.28",
|
|
4
10
|
"date": "2026-10-09",
|
|
5
|
-
"zh": "
|
|
6
|
-
"en": "Updated coordination execution and validator isolation capabilities,
|
|
11
|
+
"zh": "更新了协同执行与验证隔离能力、安装包配置、自动版本与更新日志、统一本地错误信封。",
|
|
12
|
+
"en": "Updated coordination execution and validator isolation capabilities, package configuration, automatic versioning and changelog, unified local error envelopes."
|
|
7
13
|
},
|
|
8
14
|
{
|
|
9
15
|
"version": "0.1.27",
|
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 =
|
|
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 =
|
|
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
|
}
|