@entrorove/skill 0.1.71 → 0.1.78
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/CAPABILITY-MAP.md +5 -0
- package/CHANGELOG.md +47 -0
- package/DESIGN-GATES.md +5 -9
- package/DESIGN-STAGED-ACCEPTANCE.md +103 -0
- package/IDE-EXECUTION.md +25 -4
- package/REUSE-DISCIPLINE.md +3 -3
- package/SKILL.md +15 -4
- package/cli.mjs +8 -4
- package/cloud-mutation-authority.mjs +8 -2
- package/cloud-task-client.mjs +10 -0
- package/cloud-watch-client.mjs +8 -2
- package/design-browser-checks.mjs +18 -5
- package/design-browser-pages.mjs +96 -0
- package/design-browser-state.mjs +1 -0
- package/design-browser.mjs +36 -40
- package/design-contracts.mjs +4 -1
- package/design-declaration.mjs +3 -0
- package/design-frameworks.mjs +2 -1
- package/design-gate.mjs +3 -0
- package/design-operations.mjs +4 -1
- package/design-policy.mjs +12 -4
- package/design-release.mjs +6 -0
- package/design-research-network.mjs +82 -0
- package/design-research.mjs +8 -25
- package/design-runner.mjs +3 -0
- package/design-stage-contracts.mjs +12 -0
- package/design-stage.mjs +78 -0
- package/design-storage.mjs +63 -0
- package/fs-request-trace.mjs +67 -0
- package/local-contracts.mjs +1 -1
- package/local-discipline-repository.mjs +4 -2
- package/local-invocations.mjs +6 -0
- package/local-mutation-files.mjs +13 -5
- package/local-probe.mjs +20 -7
- package/local-recovery-budget.mjs +31 -0
- package/local-scope-repository.mjs +18 -3
- package/local-scope-signature.mjs +2 -2
- package/local-source-execution.mjs +47 -0
- package/manifest.json +1 -1
- package/mutation-challenge-refresh.mjs +3 -0
- package/mutation-client.mjs +17 -5
- package/native-client.mjs +4 -1
- package/package.json +19 -2
- package/release-source-groups.mjs +7 -0
- package/release-state.json +70 -53
- package/release.mjs +9 -3
- package/releases.json +42 -0
- package/remote-capability-cache.mjs +20 -0
- package/remote-client.mjs +25 -5
- package/remote-transport.mjs +14 -0
- package/scope-amendment-client.mjs +90 -22
- package/scope-amendment-observer.mjs +9 -3
- package/scope-amendment-reference.mjs +22 -4
- package/scope-amendment-remote.mjs +20 -6
- package/scope-amendment-retirement.mjs +4 -2
- package/scope-amendment-state.mjs +10 -6
- package/scope-context-client.mjs +24 -8
- package/scope-context-journal.mjs +13 -6
- package/scope-context-remote.mjs +20 -9
- package/scope-context-state.mjs +4 -1
- package/scope-context-wire.mjs +9 -1
- package/scope-evidence-local.mjs +52 -0
- package/scope-evidence-remote.mjs +87 -0
- package/scope-evidence-wire.mjs +120 -0
- package/scope-runner-client.mjs +92 -35
- package/scope-runner-journal.mjs +109 -0
- package/scope-write-observation.d.mts +4 -0
- package/scope-write-observation.mjs +43 -0
- package/service-prerequisite.mjs +87 -0
- package/task-entry-client.mjs +3 -0
- package/workflow-observation-client.mjs +2 -0
- package/workflow-observation-remote.mjs +13 -5
package/native-client.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { canonical, sha256 } from './local-integrity.mjs';
|
|
|
3
3
|
import { postInvocation } from './remote-client.mjs';
|
|
4
4
|
import { presentInvocationNotices } from './ide-presentation.mjs';
|
|
5
5
|
import { trustedOrigin } from './remote-transport.mjs';
|
|
6
|
+
import { discoveryPrerequisite } from './service-prerequisite.mjs';
|
|
6
7
|
|
|
7
8
|
const domains = new Set(['aimlock', 'blueprint', 'calctool', 'swarm', 'validator', 'mergeguard', 'archguard', 'confirm-protocol']);
|
|
8
9
|
const runtimeCodes = { aimlock: 'R3mQ8kWpXn', blueprint: 'wvz6zmRWmX', calctool: 'KKyA6xljUX', swarm: 'zj7fTPVh4p',
|
|
@@ -36,7 +37,9 @@ export async function invokeNativeResult(domain, operation, input, dependencies)
|
|
|
36
37
|
const token = await dependencies.readCredential(home);
|
|
37
38
|
let feedbackRequired = operation !== 'capabilities';
|
|
38
39
|
if (operation !== 'capabilities') {
|
|
39
|
-
|
|
40
|
+
let discovery;
|
|
41
|
+
try { discovery = await postInvocation(buildNativeInvocation(domain, 'capabilities', {}, dependencies.apiOrigin()), token, home); }
|
|
42
|
+
catch (error) { throw discoveryPrerequisite(error, call.requestId); }
|
|
40
43
|
if (!discovery.response.ok || discovery.result.output.status !== 'succeeded') throw new Error('Native capability discovery failed');
|
|
41
44
|
const found = discovery.result.output;
|
|
42
45
|
const extension = (found.capabilities ?? found).responseExtensions;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entrorove/skill",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.78",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"entrorove": "cli.mjs"
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
"local-contracts.mjs",
|
|
15
15
|
"local-contract-types.mjs",
|
|
16
16
|
"local-state-lock.mjs",
|
|
17
|
+
"local-recovery-budget.mjs",
|
|
18
|
+
"remote-capability-cache.mjs",
|
|
17
19
|
"local-stage-boundary.mjs",
|
|
18
20
|
"local-execution.mjs",
|
|
19
21
|
"local-swarm-authority.mjs",
|
|
@@ -88,6 +90,9 @@
|
|
|
88
90
|
"local-task-handoff-write-archive.mjs",
|
|
89
91
|
"local-task-handoff-write-receipts.mjs",
|
|
90
92
|
"remote-client.mjs",
|
|
93
|
+
"service-prerequisite.mjs",
|
|
94
|
+
"local-source-execution.mjs",
|
|
95
|
+
"fs-request-trace.mjs",
|
|
91
96
|
"scope-runner-client.mjs",
|
|
92
97
|
"scope-context-client.mjs",
|
|
93
98
|
"scope-context-observer.mjs",
|
|
@@ -168,6 +173,8 @@
|
|
|
168
173
|
"local-scope-create-require.mjs",
|
|
169
174
|
"local-scope-require-resolution.mjs",
|
|
170
175
|
"local-scope-repository.mjs",
|
|
176
|
+
"scope-write-observation.mjs",
|
|
177
|
+
"scope-write-observation.d.mts",
|
|
171
178
|
"local-scope-signature.mjs",
|
|
172
179
|
"local-scope-config-imports.mjs",
|
|
173
180
|
"local-scope-config-extends.mjs",
|
|
@@ -288,6 +295,7 @@
|
|
|
288
295
|
"member-producer-repair-authority.mjs",
|
|
289
296
|
"design-browser-checks.mjs",
|
|
290
297
|
"design-browser-identity.mjs",
|
|
298
|
+
"design-browser-pages.mjs",
|
|
291
299
|
"design-browser-state.mjs",
|
|
292
300
|
"design-browser.mjs",
|
|
293
301
|
"design-context.mjs",
|
|
@@ -302,10 +310,15 @@
|
|
|
302
310
|
"design-policy.d.mts",
|
|
303
311
|
"design-policy.mjs",
|
|
304
312
|
"design-research.mjs",
|
|
313
|
+
"design-research-network.mjs",
|
|
305
314
|
"design-runner.mjs",
|
|
306
315
|
"design-store.mjs",
|
|
316
|
+
"design-stage.mjs",
|
|
317
|
+
"design-stage-contracts.mjs",
|
|
318
|
+
"design-storage.mjs",
|
|
307
319
|
"design-ui.mjs",
|
|
308
320
|
"DESIGN-GATES.md",
|
|
321
|
+
"DESIGN-STAGED-ACCEPTANCE.md",
|
|
309
322
|
"design-release.mjs",
|
|
310
323
|
"install-identity.mjs",
|
|
311
324
|
"package-archive.mjs",
|
|
@@ -325,7 +338,11 @@
|
|
|
325
338
|
"local-scope-build-io.mjs",
|
|
326
339
|
"local-scope-build-facts.mjs",
|
|
327
340
|
"local-scope-build-data.mjs",
|
|
328
|
-
"local-scope-build-readset.mjs"
|
|
341
|
+
"local-scope-build-readset.mjs",
|
|
342
|
+
"scope-evidence-wire.mjs",
|
|
343
|
+
"scope-evidence-local.mjs",
|
|
344
|
+
"scope-evidence-remote.mjs",
|
|
345
|
+
"scope-runner-journal.mjs"
|
|
329
346
|
],
|
|
330
347
|
"scripts": {
|
|
331
348
|
"test": "node test/run.mjs",
|
|
@@ -37,3 +37,10 @@ export const memberContinuationSourceFiles = Object.freeze([
|
|
|
37
37
|
'workflow-observation-state.mjs',
|
|
38
38
|
'workflow-observation-wire.mjs',
|
|
39
39
|
])
|
|
40
|
+
export const scopeEvidenceSourceFiles = Object.freeze([
|
|
41
|
+
'scope-evidence-wire.mjs', 'scope-evidence-local.mjs', 'scope-evidence-remote.mjs', 'scope-runner-journal.mjs',
|
|
42
|
+
])
|
|
43
|
+
export const scopeEvidenceReleaseNote = {
|
|
44
|
+
zh: '将完整范围证据与签名控制分离:四类原 S 证明经有界独立通道上传,紧凑权威绑定不可变摘要与字节数;未知上传仅恢复原 GET,保留原路径、上下文、审批、独立 M 写入和全部旧失败记录。',
|
|
45
|
+
en: 'Separate full scope evidence from signed controls: upload four kinds of original S proof through a bounded data channel and bind immutable hashes and byte counts in compact authorities. Recover uncertain uploads with the original GET only, preserving complete paths, contexts, approvals, separate M writes and prior failures.',
|
|
46
|
+
}
|
package/release-state.json
CHANGED
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "entrorove.release-state/1.0",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"digest": "
|
|
3
|
+
"version": "0.1.78",
|
|
4
|
+
"digest": "0c66f92de864ffddbaa006725eb8177f5a57cd138359d03700c04ef262ef914d",
|
|
5
5
|
"files": {
|
|
6
|
-
"
|
|
6
|
+
"local-recovery-budget.mjs": "be3af07db8e4cc96782edb130e827039c7a99bbe8275a92f0f741533716017f3",
|
|
7
|
+
"remote-capability-cache.mjs": "9c22067e1a21eb2a209747a8ab2f27c0496b14a22a7e0f5654840e2035148df0",
|
|
8
|
+
"scope-write-observation.mjs": "d832adce75cbe005d683bc6bd2571220e13ad7b0651235688b02993e8f2c3796",
|
|
9
|
+
"scope-write-observation.d.mts": "52fb0b805494d83673fb4d0ffb5f6b1bc39854b400a8799fe2446681696ed8b3",
|
|
10
|
+
"release-source-groups.mjs": "876b8c8bcf459d3b469bf4f2021d4206de5b199add545597a5c8f6dea7385b38",
|
|
7
11
|
"local-scope-build-read.mjs": "361d4b461cfa2c77b4ec22bc59a0a1c78fed2cfb0ea2e05a8da5c2551ecd88ac",
|
|
8
12
|
"local-scope-build-io.mjs": "8af69722738fa094780f9a2dfcddaf12993fc3b936a75c56c4b0d4f90cb20fd1",
|
|
9
13
|
"local-scope-build-facts.mjs": "8b0bd19347d06d1cb66d8cd2d6784103af9d00ea691d7f4acea523d994b874fb",
|
|
10
14
|
"local-scope-build-data.mjs": "b6e272ca4385629326b4517a53408c561272f5f1a01e5b701f17eaa4c5e64b2e",
|
|
11
15
|
"local-scope-build-readset.mjs": "fd1cb1470c54b3902a4612056281746e947cf96d1f5c03a09ea0becbcd79cc45",
|
|
12
|
-
"scope-
|
|
16
|
+
"scope-evidence-wire.mjs": "d283bbfd002b034e1deb539633b4970b430a97065388288ab3398e2bc0285633",
|
|
17
|
+
"scope-evidence-local.mjs": "25b22ba2cc5a17978d2422e290ee015299f05d639b4b4b9551001afefab55c0d",
|
|
18
|
+
"scope-evidence-remote.mjs": "41da8f314ecc825a5d8b7f88c1975e651da2bca0a7164441ee540e98cbe8a2ea",
|
|
19
|
+
"scope-runner-journal.mjs": "223936b34ceec6d44246d7852218bd15b3fb9e38386bb68571863d17f7db2fb2",
|
|
20
|
+
"scope-context-client.mjs": "fa2e2128e1ccea6df7e100ca8406052ddef531bb542e580621ffd5f06c9fa0ae",
|
|
13
21
|
"scope-context-observer.mjs": "25a84339512c1e80711aca53baed20da556fa2ae5d84e83fa95d58dcdca7cf7d",
|
|
14
22
|
"scope-context-observation.mjs": "d92f2fca3c923caa6f0c5c9cc60b4f12bdae212071da64da6692e3e99b251969",
|
|
15
|
-
"scope-context-remote.mjs": "
|
|
16
|
-
"scope-context-state.mjs": "
|
|
17
|
-
"scope-context-wire.mjs": "
|
|
18
|
-
"scope-context-journal.mjs": "
|
|
23
|
+
"scope-context-remote.mjs": "3c2bdf4f67c91ec25f808438dcfddc195a1740032588109bb3676cc88eb8215f",
|
|
24
|
+
"scope-context-state.mjs": "dc47da57e411ef11677560a767f2e6d50f8a2fae17706b44715d8cd115ffcf8e",
|
|
25
|
+
"scope-context-wire.mjs": "1aa8c86223e54927a209de59d3514393b4c905ee2fc520d49819aec0f1e97162",
|
|
26
|
+
"scope-context-journal.mjs": "deb80ec08345d65951e0ecc45c50196fb86a24870fdb609bf669b23de2fac08b",
|
|
19
27
|
"scope-context-release.mjs": "3b6f5d3bf7abe25e1a1edd0521053f4c1b1e3487b7f37d5f7c6080d32bc0c044",
|
|
20
28
|
"cloud-locale.mjs": "0627ac75b98b439563b61ab217aacb55a099c1d0c8ed3b118776d2007c52dd70",
|
|
21
29
|
"cloud-locale.d.mts": "aff4bced9bbac140f73fd0de24681287349389be5750d89d96abe0f8a2167664",
|
|
@@ -23,10 +31,10 @@
|
|
|
23
31
|
"model-images.mjs": "ab85ac0c44d857c1f460de3e9c06eb1d37b57688b4a6061405c0a44ae4d40bd7",
|
|
24
32
|
"model-images.d.mts": "f1506cfb8ad287869f92f4d9074c7c759c6c28b182aeb325dd5f22a38926f24c",
|
|
25
33
|
"cli-input.mjs": "44dc2692714023b622a9370c13cabc09c7c39e6aea6e7183b80ae5bcd2e8d24e",
|
|
26
|
-
"scope-amendment-retirement.mjs": "
|
|
34
|
+
"scope-amendment-retirement.mjs": "44ceec3200c4b1e8fb45e38436f34e173803b5051074d6041a670bb8c4bc2215",
|
|
27
35
|
"scope-amendment-consumption.mjs": "12a1dfd1429350cc9503957224398524c077aed6c697228c9870aa95c245ee7d",
|
|
28
36
|
"mutation-connection-state.mjs": "05bed65a4636a2128e9a48d2e910c5f5a25f0e990f181f58008dd09cac0fbcb5",
|
|
29
|
-
"mutation-challenge-refresh.mjs": "
|
|
37
|
+
"mutation-challenge-refresh.mjs": "f24be466c65bdea543e23e71c4c2d8f65ab611a0380a1464e45908e7f35c3e3b",
|
|
30
38
|
"local-scope-font.mjs": "a69f9da932ed41aa4718036f98f75c0b17ba7f616a5c8bf5623fa9ed697499fa",
|
|
31
39
|
"local-scope-zip.mjs": "46c61d201a570c769fc4896fc19090e790765af5f28596557a288bd9b762c69e",
|
|
32
40
|
"member-producer-repair-authority.mjs": "1e84e5e77ba5ee9a0dcaa4d843061c7b5447191852d7b2fb603b91cfa7c796e4",
|
|
@@ -40,9 +48,9 @@
|
|
|
40
48
|
"local-approved-supervisor.mjs": "87142a4c13d27c8265cc1fd7fc9088988da9bbb02134164e1a7c5417da926ac7",
|
|
41
49
|
"local-mutation-consumption.mjs": "1b033655f817ec576410b7f91f1640b8651f3cff0668154fb8e6e14e7b31d8f4",
|
|
42
50
|
"workflow-local-acceptance.mjs": "743ae19c1edff473af2596c7356ddff3892ff9acfb3bcaa660b662eacba463a8",
|
|
43
|
-
"workflow-observation-client.mjs": "
|
|
51
|
+
"workflow-observation-client.mjs": "f7b0162097f5d4b276263243fed4a4745caa7f8f7010519a0e0e506b7771b2b0",
|
|
44
52
|
"workflow-observation-connection.mjs": "b1958417d9f94bf7b9474c69acc82fa5de7f7c4e37aa7f3977a8f7e3836a82b1",
|
|
45
|
-
"workflow-observation-remote.mjs": "
|
|
53
|
+
"workflow-observation-remote.mjs": "9d4120b94892e58b815f7dfcc1773623749fd5d75b0bb0f4a7548b60412fd8e6",
|
|
46
54
|
"workflow-observation-runner.mjs": "3eb8280ec7abffcb30398e3f4e5f7d0ec3df4385fa720f188ed83757b87cd977",
|
|
47
55
|
"workflow-observation-state.mjs": "a525046df9b3de75b10d2bf35c2b6d7719f12a647e4aee1f1e85dbdbfb167321",
|
|
48
56
|
"workflow-observation-wire.mjs": "df0d5e4f8fde0be8bf06c6c4590cd158b4da05ebe6ef3169d2366db706f3327f",
|
|
@@ -51,8 +59,8 @@
|
|
|
51
59
|
"local-preserved-mutation-state.mjs": "337a172b2d0a03b0d5a89b8483afdd9a043a4999fe38f87679633c98c450126b",
|
|
52
60
|
"local-preserved-mutation-wire.mjs": "6768ce5713d70f7c0bd05f2286bc4b32cd9b8bb1d3c8b9cc7a451cb9b176824d",
|
|
53
61
|
"local-delegated-modify-analysis.mjs": "f8769bd9890a041be48db5cb6724873d59300c102a5ddaf0a937e5e4f3f1983a",
|
|
54
|
-
"mutation-client.mjs": "
|
|
55
|
-
"cloud-mutation-authority.mjs": "
|
|
62
|
+
"mutation-client.mjs": "7c5651e12fef417f5f61e71ba6aef3c69d7381a162adbe38c1c61d7234d812ff",
|
|
63
|
+
"cloud-mutation-authority.mjs": "8898b4e5cd18b3574523d58d0b6337f72869c6e3ae58dcffe827f36f551700d3",
|
|
56
64
|
"ide-code-mode.mjs": "f8ba4de33632ab4c6df52dab52f392414b4632c7e94b218b8065677970c075c7",
|
|
57
65
|
"ide-command.mjs": "b3c008816f53e3cd3aa97bc792baf0b7fc068e839b150bd2cfc6cb06d17a6825",
|
|
58
66
|
"ide-hook.mjs": "688e39193575e20f833a4f9e8f0975351d03869452acd46c8860e86ce05bccdc",
|
|
@@ -72,7 +80,7 @@
|
|
|
72
80
|
"local-discipline-gate.mjs": "f80c560a4eb7c153e1637d072f0a6b4e13d4caba745317a01ff7f9b5e9143f69",
|
|
73
81
|
"local-discipline-native.mjs": "8b99b5ce951cab3c1426428ad807650c61c0ffb2c346d747b73b99057b382049",
|
|
74
82
|
"local-discipline-operations.mjs": "9fcb7b8889b7718d42e1d37936485d8198d5017d405e0cdbbabdbbd12fcc9d48",
|
|
75
|
-
"local-discipline-repository.mjs": "
|
|
83
|
+
"local-discipline-repository.mjs": "4fb9b535bcf9ee5e103f2ae888136d79268cf86978a4cb5c23bd4c44003a832d",
|
|
76
84
|
"local-discipline-snapshot.mjs": "ff1fc42a89d1eeb4977062c8698f700fc4f6ad727e1ea2ed0f255d00d63f497b",
|
|
77
85
|
"local-runner-discipline.mjs": "99935b1be0d660d6cd45f5facd911bf1e1203ec74953acef5f12a7ebafacffb2",
|
|
78
86
|
"local-integrity.d.mts": "21357f306234bd841c0d3d90bf2d09f7663f63746f897b9f38190428ae8198b3",
|
|
@@ -82,35 +90,41 @@
|
|
|
82
90
|
"runtime/validator-runtime-v7.0.44.d.mts": "7797edbfe2f7de24da370204dce4dfd22822a1bd80df93514fff900b98afe36f",
|
|
83
91
|
"snapshot-retention.mjs": "ca46aeb36b1a5a24fe7e967031a71b9a3d33f40cb715d344402cbe0dc9c425cb",
|
|
84
92
|
"snapshot-cleanup-journal.mjs": "76a9684cc95b4eb076e1298d78a9dff37948b00d9607b8f546c599072d3ed331",
|
|
85
|
-
"IDE-EXECUTION.md": "
|
|
86
|
-
"REUSE-DISCIPLINE.md": "
|
|
93
|
+
"IDE-EXECUTION.md": "8376b69934ad02b268fd66a704821c0ebcd2c7eda04c0a2c6dec2ea6d393d8b8",
|
|
94
|
+
"REUSE-DISCIPLINE.md": "f1d9c2002c0214bad0aa72aa696b39a4bd6ee4b5a236e804799e22de3418c686",
|
|
87
95
|
"install-identity.mjs": "41b8c8d8b3e265d2057a07bf7dc98066c34d6b05c65bf7159ca9609c01ee4646",
|
|
88
96
|
"package-archive.mjs": "e06db8d709db8710bead254ee950b78928088be01c58dcea383beaa5eb574e59",
|
|
89
97
|
"package-replacement.mjs": "02ca3fa4ada2addc479f8cb1b8099cd1b574adfeaa2f3c8ecf612ac2cb9127d3",
|
|
90
98
|
"rollback-history.mjs": "0ebd59e1d25ad5f95fa58ce5050cb67b018a391cad162d7643bde3aa4c176528",
|
|
91
99
|
"rollback-runner.mjs": "02f237b8802a2dc4cd5b545904fa102481277898938e723218fa6e75b18b24a7",
|
|
92
100
|
"reuse-discipline-release.mjs": "f51997624a959d2c133d4ce189eff0724ce65e1b62f9406497251fd2f2257b0c",
|
|
93
|
-
"design-browser-checks.mjs": "
|
|
101
|
+
"design-browser-checks.mjs": "68eac0748b7bdd517108b2386b83ba916a2f1ffef7fee303d4511e73f4cdf92f",
|
|
94
102
|
"design-browser-identity.mjs": "cb06f4429d0ee84d6608f87a44fb530af46636dd645cf857778c7d8c4d73e12f",
|
|
95
|
-
"design-browser-
|
|
96
|
-
"design-browser.mjs": "
|
|
103
|
+
"design-browser-pages.mjs": "0789512c1fcb54d7ab153af1ba7bfe6f1f8c79704124ff050c787554263af6d8",
|
|
104
|
+
"design-browser-state.mjs": "9de8cc6edb7d9a67667be3f5ba42407dfb6699abfc0e28faf366ac1ff0a51e67",
|
|
105
|
+
"design-browser.mjs": "ced192caefabef6001c27bc15f33b265e326a57271384952e2729cdfec64b722",
|
|
97
106
|
"design-context.mjs": "2e0d764a2a55d05e00477f984135d77808307afb1fc8668f35910612b5e4cea5",
|
|
98
107
|
"design-contracts.d.mts": "af1a5740557d2c8ce90702179e78797a618544c89dbbb3962cf92bef24f9c2b8",
|
|
99
|
-
"design-contracts.mjs": "
|
|
100
|
-
"design-declaration.mjs": "
|
|
101
|
-
"design-frameworks.mjs": "
|
|
102
|
-
"design-gate.mjs": "
|
|
108
|
+
"design-contracts.mjs": "e4798d3369c0047b5b663f22b9858033cad418f1602c441f5283c05d1c885408",
|
|
109
|
+
"design-declaration.mjs": "4c4be3731bcf169e15a100c5261a34686ddd43b780dfa8667a8d7c36766e5237",
|
|
110
|
+
"design-frameworks.mjs": "57c316420269d3b46044f14306c5f807e0e87d5a527b3c9995a7066b2b3da952",
|
|
111
|
+
"design-gate.mjs": "7d06a7065951f97b6abc10bba4bb517200c3d0b2720354b878f98f5cdeab3b19",
|
|
103
112
|
"design-lint.mjs": "76adb33d0faf0cfcdef7583a2f4835eccc7e49811480e2fd2b09779a81c0cbab",
|
|
104
113
|
"design-local-contracts.mjs": "f331bd1d21f30994596bd9c46008e551f3ed2b6d5eea19d4546c7da0663b768a",
|
|
105
|
-
"design-operations.mjs": "
|
|
114
|
+
"design-operations.mjs": "6348af322627a4ba53205e0256e0d6fe5bd627acfef6954ba305dab960ac3e6c",
|
|
106
115
|
"design-policy.d.mts": "48fed97fca0f97fef786f182f666d7e6e33efb814cda1991239e1c38984cf80e",
|
|
107
|
-
"design-policy.mjs": "
|
|
108
|
-
"design-research.mjs": "
|
|
109
|
-
"design-
|
|
116
|
+
"design-policy.mjs": "6ca60298777667502616eaad4aff92b92947ee1538f69be9e398be076367c759",
|
|
117
|
+
"design-research.mjs": "6cdc5d6ab96e47dd3a3abc4f31c3bc800a469ce1522b7e49aa73eb86d44b988d",
|
|
118
|
+
"design-research-network.mjs": "7ed4c670eff767b6b4783d032b4fea14f9a4aeed15c1340451967dead7ce8e2f",
|
|
119
|
+
"design-runner.mjs": "2aaeb4a2e6034b7566943719cfef1b78dbb8f5d3a812d155a8a328ded4340797",
|
|
110
120
|
"design-store.mjs": "51420d66dd1c4350e4577d73634b51b62ffbcc99c614b3b02f17e82537170af8",
|
|
121
|
+
"design-stage.mjs": "545a9f2e027b2333ffb09df4516f6d3866d9585a19a43a39dbff16145dc75bca",
|
|
122
|
+
"design-stage-contracts.mjs": "f4242876fd6472096dd22609868e955a54c9269d6edd7bff399c6083ece52848",
|
|
123
|
+
"design-storage.mjs": "af02cf3fb59f9ef7c7d6276b43e6a53e3d305a77492e3cb824dd05d52adc2fd3",
|
|
111
124
|
"design-ui.mjs": "6dd3c5a97ec67e8f1c23e57bcab5eb64380c520befada6f264c4bfcf6b11c9f7",
|
|
112
|
-
"DESIGN-GATES.md": "
|
|
113
|
-
"
|
|
125
|
+
"DESIGN-GATES.md": "28230c7de537a7321f2d1d38d98661e2fd7bad2434b3e472ab8fbf2697687c52",
|
|
126
|
+
"DESIGN-STAGED-ACCEPTANCE.md": "90ee32e08fa4bfd56fcb8f9ffb19f6a10217203448b6676bcf58c4ea6e03ba6c",
|
|
127
|
+
"design-release.mjs": "03863c95bec899782c1bed09c14f0e302ec2ec7bc221a36a4f7c91e501734b72",
|
|
114
128
|
"local-final-gate16.mjs": "083aec470670e6cdb7ad2ab27b7a51b53a9ec3a8b4121cb9cbfa17d9940892c2",
|
|
115
129
|
"local-final-gate16-checks.mjs": "1dd30e9666d458d8b12ca6e4975f6f0ac8450c3ea9cbecc7401ae037f66b589a",
|
|
116
130
|
"local-final-gate16-worker.mjs": "344d64b6c1c5552b96960e0d8514a876a3dbfa9762ab9eb749038e8351727121",
|
|
@@ -152,19 +166,19 @@
|
|
|
152
166
|
"local-autocoord17-waits.mjs": "2b0a713987822548a94e1ed3a9a891532db45383797dfc5d5bc8d1e35593cf25",
|
|
153
167
|
"local-validator-isolation17.mjs": "48e94604e28b8fddd567dfb35ff60b73fd094a5803bd49f076388b7f310f92aa",
|
|
154
168
|
"local-calctool-composition17.mjs": "ac89fcb41ab0d0d9b47c1b5696945281b0894eb064820775e36a011c76314e6a",
|
|
155
|
-
"cli.mjs": "
|
|
169
|
+
"cli.mjs": "90320b9db041ea1ec8de6e69af18daa748c964f436e4e137de011b53abaf4d8c",
|
|
156
170
|
"ide-selection.mjs": "e11e2b363c06444f1dcb4cdab1eaa0eb748a379b84354e0e71fd9c2dc79a4815",
|
|
157
171
|
"ide-exit.mjs": "39d60a15b1517d402c208d22a17033976e43733be8a10dc6da386837c59b37b2",
|
|
158
172
|
"install-cleanup.mjs": "8a8e1a7dfe37427f86cd4d6e317890d0829894a9949d4216674a716b36edbc54",
|
|
159
173
|
"review-client.mjs": "3491eef68ed533174b31db3c53febb6519b8f088f71a9964644714a9a4c03c77",
|
|
160
174
|
"version.mjs": "85284d4cd5e3314b449e6ae124243f96397bcc274817b5983a79cfdd903d46fd",
|
|
161
|
-
"SKILL.md": "
|
|
162
|
-
"CAPABILITY-MAP.md": "
|
|
175
|
+
"SKILL.md": "5f68fe2742dfd64feeff7e5071719c1de5d09dd7f33f44cb742499f6dab3d3c9",
|
|
176
|
+
"CAPABILITY-MAP.md": "24f392d4f45e81c4c04a22be4ce7cd9a4e0ac2477ef7cc2cf857449a1ff33091",
|
|
163
177
|
"AGREEMENT.md": "f93a68e92c457200dd024610e65f74e478b8f60860f951da818b70561f1b9bf8",
|
|
164
178
|
"DELIVERY-BOUNDARIES.md": "cb23ce71b2197085c8441ba7c5b6c05fb21f2a954bf66b4d60cfef8b15895b8b",
|
|
165
|
-
"package.json": "
|
|
179
|
+
"package.json": "07082d32e00eb0386b2de73f378613178f58825d622ed3b2333c7398cc0d4b3d",
|
|
166
180
|
"manifest.json": "ab06e307795bc9da5add926752b6c4dbdaf18625090261a035aa356a679c504f",
|
|
167
|
-
"release.mjs": "
|
|
181
|
+
"release.mjs": "2070c03cbaaa64387452d07687c6ce8d6c4ff6cfeb2b10094082621e10e8588f",
|
|
168
182
|
"local-cli.mjs": "058ac9a4653bc12e0d031b72034ebfe6a72b91b9b23353b9fee04881c7d2e098",
|
|
169
183
|
"local-state-lock.mjs": "1dbf64264642a0851faf043e07ee9f66d2ad0508e9f799b0626246e42fae893e",
|
|
170
184
|
"local-execution.mjs": "721ed7d29bbe4ce6d088909cd84ffc440978c3c9eb0946c49a4281ee685fe3aa",
|
|
@@ -187,7 +201,7 @@
|
|
|
187
201
|
"local-chain-results.mjs": "0455f72cad574cfef87c2c6c0928d6432bba7e5dbaff521a2b62a9575299ca10",
|
|
188
202
|
"local-approved-plan.mjs": "c2c88ab4085ff35a1811fe43e9a28699cfc9387eda54bfeafae3e7dd9e8cdb19",
|
|
189
203
|
"local-budget-renewal.mjs": "6b436358066fe33b2f6d871fc90d8e7c551edd6255efd73c0d255d0fd35d5ef8",
|
|
190
|
-
"local-probe.mjs": "
|
|
204
|
+
"local-probe.mjs": "d275595b81e3eef745e794d3de3fcc30a5531f15fa504b7f5a2212326e751b6d",
|
|
191
205
|
"local-budget-grants.mjs": "c5f6542f5d2c3bfe07f3ca5b5bc849bf05d886b06014f720322d530510775d3d",
|
|
192
206
|
"local-budget-handoff.mjs": "85a8f006dad9c0153843c7b7748ee7fcd756fdba159c97c3905d7fe0c4f604af",
|
|
193
207
|
"local-budget-handoff-contracts.mjs": "bb53ebf135ec7ecfbecee858cfb354f03fee9cfb3940fa5d967d45008bf9aac5",
|
|
@@ -203,7 +217,7 @@
|
|
|
203
217
|
"local-scope-candidate.mjs": "8f0bd9606e70d4a0ebacdd3cd600ec3afed85e2bb3e1760aa1144cf55d4e028a",
|
|
204
218
|
"local-scope-context.mjs": "79753abfc6c76089d17f003a1be537dfaea10d6731c542f7fc53f2a9996ed164",
|
|
205
219
|
"local-scope-files.mjs": "b8c98b8ca8bb4953f3d2d9ae1fa71b2a54286032c9dd660d3061b584e77778cb",
|
|
206
|
-
"local-scope-repository.mjs": "
|
|
220
|
+
"local-scope-repository.mjs": "fcf156e99a6f877df4368e0b3382000f7d2868a56959b3b6959cae7779fc4f54",
|
|
207
221
|
"local-scope-read-set.mjs": "a5137d2e7ecffe669143fb51f0f3fba7526a881b512269858ea1e3504d9a50b2",
|
|
208
222
|
"local-scope-uni-expressions.mjs": "626247c87a4fd5f6162e548aa907d3f983d5a77d341e640b6f42a539f0c84405",
|
|
209
223
|
"local-scope-uni-directives.mjs": "e546be317962e30a3547aea376db9a7b8d7641055daf9e3dce4a9ef55cd872af",
|
|
@@ -234,36 +248,39 @@
|
|
|
234
248
|
"local-budget-git-system-attributes.mjs": "367a4e5a88490c4d4c3717bc893a271970fe70d7705f0c1c72d6f76a442d5d21",
|
|
235
249
|
"runtime/git-native-linux-v1.mjs": "cf5cb91426a105e62c0f07a8a230dec592dba46f85a3f708b4c4e8cfcd1126c6",
|
|
236
250
|
"runtime/git-native-darwin-v1.mjs": "f88aab72dc86f94eb1115784872957cb8ed0f74205ae70e1ecd1939e7790e310",
|
|
237
|
-
"local-scope-signature.mjs": "
|
|
251
|
+
"local-scope-signature.mjs": "f199fdab06e3d43270a52b9fedc77889f57c9d25bca6926197937eb026a28703",
|
|
238
252
|
"local-scope-config-imports.mjs": "a399407227bbdd14468633bb6d25586df7c6a30a1ef0d1a80ab7c7b499d3fadf",
|
|
239
253
|
"local-scope-config-extends.mjs": "3ab4150b846b247e9e0851221123f220c5574699af651830e751f026ab33659e",
|
|
240
254
|
"local-scope-snapshot.mjs": "c0f851470b98863a1d187825ed61ee6072d1c057b178fdc85ae29af02a3b250f",
|
|
241
255
|
"local-scope-state.mjs": "7a6d275d6267a4d0bb55582e1bcc7654c502ecba9221b84b2149a98f0ee7518f",
|
|
242
256
|
"local-scope-workspaces.mjs": "8a75ce7b6639b5682370b5738c5c2a90408e3130729608e008f03053cd50351f",
|
|
243
257
|
"local-task-routing.mjs": "6e2e506b2fb0e2e8d8c5147d7df32849b57a4e94a23634f01a355d45735858e4",
|
|
244
|
-
"remote-client.mjs": "
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
258
|
+
"remote-client.mjs": "1db62896d3c0b97fdf9a4add85a34ed7de45b9399c33e482c884ed96a376c58a",
|
|
259
|
+
"service-prerequisite.mjs": "2361168ea12ca95faee75c79657a486af5e7edaf1ec8182f8f1afdf59f15c9a5",
|
|
260
|
+
"local-source-execution.mjs": "88f6ce1ea50d0a7b92e0cb47d535f8140491c52d9c6c0dfddf91ea90397a36f5",
|
|
261
|
+
"fs-request-trace.mjs": "972eacbe21537bc102047127327449a6a4b0f0c65d75e3472370de91dedf4d2f",
|
|
262
|
+
"cloud-task-client.mjs": "ab3e0296363b6af10eaa38a09dd43b4ae6e5704d699c7a5032fee1b7817fa0dc",
|
|
263
|
+
"scope-runner-client.mjs": "4690bd8b72f37b40c8e83e619f00002ca3a589ef58fbdc4db6b8dceeff6108c7",
|
|
264
|
+
"scope-amendment-client.mjs": "04109dd0b11ffe02b33ba2faeaadef0a8fb0026604835ec2f5c756085a8c1ea8",
|
|
265
|
+
"scope-amendment-state.mjs": "85240255f20650403e7fab084d5baace6710b5d3ecb1541b64ec3e9657fc71a9",
|
|
249
266
|
"scope-amendment-wire.mjs": "3c4823e23bbdf330616bb675f07f9fcad7423266bd50b92e1134d226060e9b83",
|
|
250
|
-
"scope-amendment-remote.mjs": "
|
|
251
|
-
"scope-amendment-observer.mjs": "
|
|
267
|
+
"scope-amendment-remote.mjs": "a9925319418a45f657ea5f5a52903af27728f226647ebc8b36099cfdc5554964",
|
|
268
|
+
"scope-amendment-observer.mjs": "9091f2e11b094b8a8cd27ad1454031d11a34ecb6923295fd6edfaa07c54899ee",
|
|
252
269
|
"scope-amendment-mutation.mjs": "fa24191df290efad29d41eca3d1a081981fefde02b7dc4a11c75c6118a69106e",
|
|
253
|
-
"scope-amendment-reference.mjs": "
|
|
254
|
-
"native-client.mjs": "
|
|
270
|
+
"scope-amendment-reference.mjs": "dc1768131beb7db224dd2ff8522dbf6361f73e01f466c9334cdfa24118720078",
|
|
271
|
+
"native-client.mjs": "76f4c35cdef670f4e1cceaecde397869e8f7b4a41654ff5127345ed15d7b3888",
|
|
255
272
|
"native-notification.mjs": "8859a26c6f13d222711f763acf49ed8546b3306cf71f990643ac31a5ccaf1ba1",
|
|
256
273
|
"local-peer-status.mjs": "a971bcc69d60bb32b875ca5bb4297d948631d5d2821b812c279613ea059a8b4f",
|
|
257
|
-
"cloud-watch-client.mjs": "
|
|
274
|
+
"cloud-watch-client.mjs": "eccce52bce1c915a71fe9a1fa3e435dba5af9a5455afdf478f04684901b6fb7b",
|
|
258
275
|
"cloud-event-stream.mjs": "e0eec9fc3e0613094523929634f25030df5ca5c5b5fe2c1e1a4586ab10574808",
|
|
259
276
|
"ide-presentation.mjs": "d826afe0dfcc38906ba76dcbbe021807731587c38026148624546c334057e7f3",
|
|
260
277
|
"automatic-feedback-client.mjs": "532312d29e66fa211ea3fe879d9add1dd48841ee5ce82800b4b06252a160a255",
|
|
261
|
-
"task-entry-client.mjs": "
|
|
278
|
+
"task-entry-client.mjs": "ca08f1adc20319d0e33c02f0160c5e85d84c5034720892b3ca61cf17c1534459",
|
|
262
279
|
"task-identity.mjs": "e0e6cf1f48bfa5ee3c5cb86a3c21adfce6d66b4220f4a164ca099263c7a09fb4",
|
|
263
280
|
"task-identity.d.mts": "55472e1ffc81b9d5e5c5bd56c0bf1d18ecde03ee5170a58a15ce9caf222d8761",
|
|
264
|
-
"remote-transport.mjs": "
|
|
281
|
+
"remote-transport.mjs": "e9ecb3b9cd4d3bcc7abe1f7097069a07a15319ca0d5641fee752d094eb039194",
|
|
265
282
|
"local-credential.mjs": "2a302a7f67b5ea8dc73453fc96ab33db349b59ca11fa9456e48ca1d9669d877c",
|
|
266
|
-
"local-invocations.mjs": "
|
|
283
|
+
"local-invocations.mjs": "3e0b436a8feef7240944f6f5d8b15fbef312d6e9b3895d7762762ba8730a3e9d",
|
|
267
284
|
"local-task-handoff-fence.mjs": "5532a359ee29b885f7ce0cf7178f76dba0fc9245bdd92ef460982275baf0d557",
|
|
268
285
|
"local-task-handoff-storage.mjs": "f4d5046d54658e8092e035b31fdaeaed6fdbef55a6953827417c857f2e9e6638",
|
|
269
286
|
"local-task-handoff-overlay-wire.mjs": "4fbe3f9d1ed8b6ddf839e9525cdc52c930a22e9d4f4ad562c6f193f621ee6527",
|
|
@@ -281,7 +298,7 @@
|
|
|
281
298
|
"workflow-local-request.mjs": "4e24c543ce386292a87dc9cd41f90d23375f12079cacffc515c8cd01fd571780",
|
|
282
299
|
"task-message-entry.mjs": "31d10056cb905237cd5649e8eb067009ff1612ec5dc1061e0373209fbc0b646a",
|
|
283
300
|
"task-message-cli.mjs": "3ca65e96c28129b3bd5cac962d106e0859a1f17df1f6a66ee543c6efc22f918d",
|
|
284
|
-
"local-contracts.mjs": "
|
|
301
|
+
"local-contracts.mjs": "153e08c92f4fb42c2c8c16e3ce338c3b570d17d88be59fc729e259cdc14cb718",
|
|
285
302
|
"local-contract-types.mjs": "85e71fa4dd67e351a4b67573c740bcdb1661cede53f097189f11837771e75e91",
|
|
286
303
|
"local-archguard-ast.mjs": "7ff7df9dab0d98ed62983add751c80edea598bc94ef4f38ede0ebd4d41226c87",
|
|
287
304
|
"local-archguard-checkpoint.mjs": "37896902520cc995720c96288e4a5ed3585952b55c9c35be281f91fa754c71ec",
|
|
@@ -308,7 +325,7 @@
|
|
|
308
325
|
"local-calctool-contracts.mjs": "d8fccf662b2dd7aefd5cc6770b2473014af7a28855074fcf294937ca5a49eae8",
|
|
309
326
|
"local-calctool-runtime.mjs": "9070b6900d1782bf77357fea1cc522bf796898d56929f96d7cb935b3036ac82f",
|
|
310
327
|
"local-calctool-storage.mjs": "4c3f352847aeb368dea1247759a1055beeab25534adf25b6e7323196d76fd684",
|
|
311
|
-
"local-mutation-files.mjs": "
|
|
328
|
+
"local-mutation-files.mjs": "cd27197fd25cb3ec3d0733e932c2ff2394b0665ad4afb771edc3e4a49526e428",
|
|
312
329
|
"local-mutation-snapshot.mjs": "69c0ff0b67b2e6913b1d9f8247bf48c31d62f4f5ae1668c573a0ade06c01d105",
|
|
313
330
|
"local-mutation-audit.mjs": "5a30ee3446f632e032ffcfe46bcd97d6dfc0f099a76ea5185c3f9a9118c4f6cb",
|
|
314
331
|
"local-mutation-wire.mjs": "6d00400e531c693c3e8bfd0c2a24fcc486127f84aafc56ee450dcec7f534eb05",
|
package/release.mjs
CHANGED
|
@@ -9,10 +9,11 @@ import { fileURLToPath } from 'node:url'
|
|
|
9
9
|
import { chainReleaseLabels } from './local-chain-release-labels.mjs'
|
|
10
10
|
|
|
11
11
|
const directory = path.dirname(fileURLToPath(import.meta.url))
|
|
12
|
-
import { swarmSourceFiles, coordination17SourceFiles, preservedMutationSourceFiles, memberContinuationSourceFiles } from './release-source-groups.mjs'
|
|
12
|
+
import { swarmSourceFiles, coordination17SourceFiles, preservedMutationSourceFiles, memberContinuationSourceFiles, scopeEvidenceSourceFiles, scopeEvidenceReleaseNote } from './release-source-groups.mjs'
|
|
13
13
|
const sourceFiles = [
|
|
14
|
+
'local-recovery-budget.mjs', 'remote-capability-cache.mjs', 'scope-write-observation.mjs', 'scope-write-observation.d.mts',
|
|
14
15
|
'release-source-groups.mjs', 'local-scope-build-read.mjs', 'local-scope-build-io.mjs', 'local-scope-build-facts.mjs', 'local-scope-build-data.mjs', 'local-scope-build-readset.mjs',
|
|
15
|
-
...SCOPE_CONTEXT_SOURCE_FILES, 'cloud-locale.mjs', 'cloud-locale.d.mts', 'cloud-task-images.mjs', 'model-images.mjs', 'model-images.d.mts', 'cli-input.mjs',
|
|
16
|
+
...scopeEvidenceSourceFiles, ...SCOPE_CONTEXT_SOURCE_FILES, 'cloud-locale.mjs', 'cloud-locale.d.mts', 'cloud-task-images.mjs', 'model-images.mjs', 'model-images.d.mts', 'cli-input.mjs',
|
|
16
17
|
'scope-amendment-retirement.mjs', 'scope-amendment-consumption.mjs', 'mutation-connection-state.mjs', 'mutation-challenge-refresh.mjs',
|
|
17
18
|
'local-scope-font.mjs', 'local-scope-zip.mjs', 'member-producer-repair-authority.mjs',
|
|
18
19
|
'local-mutation-completion-evidence.mjs', 'local-mutation-environment-observation.mjs', 'local-mutation-finder-observation.mjs', 'local-finder-store.mjs', 'local-finder-plist.mjs',
|
|
@@ -86,7 +87,7 @@ const sourceFiles = [
|
|
|
86
87
|
'local-scope-snapshot.mjs',
|
|
87
88
|
'local-scope-state.mjs',
|
|
88
89
|
'local-scope-workspaces.mjs',
|
|
89
|
-
'local-task-routing.mjs', 'remote-client.mjs', 'cloud-task-client.mjs',
|
|
90
|
+
'local-task-routing.mjs', 'remote-client.mjs', 'service-prerequisite.mjs', 'local-source-execution.mjs', 'fs-request-trace.mjs', 'cloud-task-client.mjs',
|
|
90
91
|
'scope-runner-client.mjs',
|
|
91
92
|
'scope-amendment-client.mjs', 'scope-amendment-state.mjs', 'scope-amendment-wire.mjs',
|
|
92
93
|
'scope-amendment-remote.mjs', 'scope-amendment-observer.mjs', 'scope-amendment-mutation.mjs',
|
|
@@ -273,6 +274,7 @@ function releaseNote(changed) {
|
|
|
273
274
|
if (suppliedZh && suppliedEn) return {
|
|
274
275
|
zh: suppliedZh.replaceAll(/\s+/g, ' '), en: suppliedEn.replaceAll(/\s+/g, ' '),
|
|
275
276
|
}
|
|
277
|
+
if (changed.some(file => scopeEvidenceSourceFiles.includes(file))) return scopeEvidenceReleaseNote
|
|
276
278
|
if (changed.some(file => SCOPE_CONTEXT_SOURCE_FILES.includes(file))) return scopeContextReleaseNote
|
|
277
279
|
if (changed.some(file => file.startsWith('scope-amendment-'))) return {
|
|
278
280
|
zh: '新增同一任务的精确范围补正:原账号审核文件哈希与写入/只读角色,原S签名真实事实并重评原合同;计划、写入和结算绑定不可变范围修订,改后刷新保留原M消费证据与失败历史。',
|
|
@@ -305,6 +307,10 @@ const archguardReleaseLabels = {
|
|
|
305
307
|
}
|
|
306
308
|
function releaseLabels() {
|
|
307
309
|
return withFinalGate16ReleaseLabels({ ...designGateReleaseLabels, ...reuseDisciplineReleaseLabels, ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...coordination17ReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels, ...taskEntryReleaseLabels, ...archguardReleaseLabels,
|
|
310
|
+
...Object.fromEntries(['local-recovery-budget.mjs', 'remote-capability-cache.mjs'].map(name => [name,
|
|
311
|
+
{ zh: '持久有界恢复与能力发现复用', en: 'durable bounded recovery and capability discovery reuse' }])),
|
|
312
|
+
...Object.fromEntries(['scope-write-observation.mjs', 'scope-write-observation.d.mts'].map(name => [name,
|
|
313
|
+
{ zh: '完整范围内可写角色独立签名计量', en: 'independently signed write-role metering within complete scope evidence' }])),
|
|
308
314
|
...Object.fromEntries(['local-scope-build-read.mjs', 'local-scope-build-io.mjs', 'local-scope-build-facts.mjs', 'local-scope-build-data.mjs', 'local-scope-build-readset.mjs', 'local-scope-uni-build.mjs', 'local-scope-uni-expressions.mjs', 'local-scope-uni-directives.mjs', 'local-scope-uni-conditional.mjs'].map(name => [name, { zh: '源码事实与未知构建行为分离', en: 'raw source facts and opaque build observation' }])),
|
|
309
315
|
'release-source-groups.mjs': { zh: '自动版本源文件清单', en: 'automatic version source inventory' },
|
|
310
316
|
...Object.fromEntries(['cloud-task-images.mjs', 'model-images.mjs', 'model-images.d.mts', 'cli-input.mjs'].map(name => [name, { zh: '受限图片输入通道', en: 'bounded image input channel' }])),
|
package/releases.json
CHANGED
|
@@ -1,4 +1,46 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.1.78",
|
|
4
|
+
"date": "2026-10-21",
|
|
5
|
+
"zh": "完整交付原八技能的一次入口授权、范围内衔接与有界恢复;修复已实际取消的弹窗先于点击回执关闭时的原窗口接续,不重发点击,原父窗口、精确路由、安全签名、快照及回执保护保持。",
|
|
6
|
+
"en": "Deliver the original eight skills with one task entrance approval, scoped handoffs and bounded recovery. Preserve the original opener when an actual popup cancellation closes before its click acknowledgement, without replaying the click or weakening exact routes, signatures, snapshots or receipts."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"version": "0.1.77",
|
|
10
|
+
"date": "2026-10-21",
|
|
11
|
+
"zh": "未发布候选,内容并入 0.1.78:正式发布八技能一次入口授权、范围内衔接和有界恢复,保留原八技能核心、安全签名、快照及回执;兼容旧范围续签,并验证已发现能力清单复用时仍拒绝非法输入。",
|
|
12
|
+
"en": "Unpublished candidate, incorporated into 0.1.78: Publish the complete original eight skills with one task entrance approval, scoped handoffs and bounded recovery, preserving native cores, signatures, snapshots and receipts; retain legacy scope renewal compatibility and verify invalid input rejection with reused capability discovery."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"version": "0.1.76",
|
|
16
|
+
"date": "2026-10-21",
|
|
17
|
+
"zh": "未发布候选,内容并入 0.1.78:正式交付八技能的一次入口授权、范围内衔接与有界恢复;兼容旧凭据续签的独立写入计量,保留签名、快照、回执和原批准范围校验。",
|
|
18
|
+
"en": "Unpublished candidate, incorporated into 0.1.78: Ship the eight-skill single-entrance authorization, scoped handoff and bounded recovery; preserve signed write accounting across legacy proof renewal without changing approved scope, signatures, snapshots or receipt checks."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"version": "0.1.75",
|
|
22
|
+
"date": "2026-10-21",
|
|
23
|
+
"zh": "未发布候选,内容并入 0.1.78:正式发布复用已验证的八技能任务衔接与恢复改进;移除发布测试中未发布法律模块的夹具耦合。八技能核心实现保持原版。",
|
|
24
|
+
"en": "Unpublished candidate, incorporated into 0.1.78: Release the verified eight-skill task handoff and recovery improvements; remove unreleased legal-module coupling from release test fixtures. The eight original skill cores remain unchanged."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"version": "0.1.74",
|
|
28
|
+
"date": "2026-10-21",
|
|
29
|
+
"zh": "未发布候选,内容并入 0.1.78:八技能衔接共用一次明确的任务入口批准,范围内复用原审批与已完成计算;修复范围状态读取、元数据扫描、独立可写计量及带查询参数/弹窗的设计验收。恢复次数持久有界,合法前置进度可继续,保留签名、快照、回执与未知结果只查询的保护,禁止跨项目耦合。",
|
|
30
|
+
"en": "Unpublished candidate, incorporated into 0.1.78: Reuse one explicit task entrance approval and completed skill computations within the approved boundary. Fix scope state reads, metadata scanning, independently signed write-role metering and query/popup design acceptance. Bound recovery durably while allowing verified prerequisite progress, preserving signatures, snapshots, receipts, GET-only unknown recovery and project isolation."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"version": "0.1.73",
|
|
34
|
+
"date": "2026-10-20",
|
|
35
|
+
"zh": "修复通用范围连接在长时间扫描后的签名期限绑定:原 S 证明到期时间不晚于原云端挑战,保留原随机数、完整范围、独立验签和失败历史;已过期挑战仍明确拒绝。",
|
|
36
|
+
"en": "Bind ordinary scope signatures to their original cloud deadline after long scans. The original S proof expires no later than its challenge, preserving the nonce, complete scope, independent signatures and failure history; expired challenges still reject explicitly."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"version": "0.1.72",
|
|
40
|
+
"date": "2026-10-20",
|
|
41
|
+
"zh": "将完整范围证据与签名控制分离:四类原 S 证明经有界独立通道上传,紧凑权威绑定不可变摘要与字节数;未知上传仅恢复原 GET,保留原路径、上下文、审批、独立 M 写入和全部旧失败记录。",
|
|
42
|
+
"en": "Separate full scope evidence from signed controls: upload four kinds of original S proof through a bounded data channel and bind immutable hashes and byte counts in compact authorities. Recover uncertain uploads with the original GET only, preserving complete paths, contexts, approvals, separate M writes and prior failures."
|
|
43
|
+
},
|
|
2
44
|
{
|
|
3
45
|
"version": "0.1.71",
|
|
4
46
|
"date": "2026-10-20",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
|
|
3
|
+
// Schemas are discovery data, never authority. Each process still validates
|
|
4
|
+
// actual request/response bindings and the service enforces current permissions.
|
|
5
|
+
const entries = new Map(), maximumEntries = 8, lifetimeMs = 300_000;
|
|
6
|
+
const key = (origin, credential, home) => createHash('sha256').update(JSON.stringify([origin, credential, home])).digest('hex');
|
|
7
|
+
export async function discoveredCapabilities(origin, credential, home, fetch, { refresh = false } = {}) {
|
|
8
|
+
const identity = key(origin, credential, home), previous = entries.get(identity);
|
|
9
|
+
if (!refresh && previous && previous.expiresAt > Date.now()) return structuredClone(previous.value);
|
|
10
|
+
// Coalesce concurrent discovery for the same authenticated endpoint.
|
|
11
|
+
if (!refresh && previous?.pending) return structuredClone(await previous.pending);
|
|
12
|
+
const pending = fetch();
|
|
13
|
+
if (!entries.has(identity) && entries.size >= maximumEntries) entries.delete(entries.keys().next().value);
|
|
14
|
+
entries.set(identity, { pending });
|
|
15
|
+
try {
|
|
16
|
+
const value = structuredClone(await pending);
|
|
17
|
+
if (entries.get(identity)?.pending === pending) entries.set(identity, { value, expiresAt: Date.now() + lifetimeMs });
|
|
18
|
+
return structuredClone(value);
|
|
19
|
+
} catch (error) { if (entries.get(identity)?.pending === pending) entries.delete(identity); throw error; }
|
|
20
|
+
}
|
package/remote-client.mjs
CHANGED
|
@@ -7,6 +7,8 @@ import { acknowledgeAutomaticFeedback, verifyAutomaticFeedback } from './automat
|
|
|
7
7
|
import { ideClientHeaders, presentInvocationNotices } from './ide-presentation.mjs';
|
|
8
8
|
import { routeTaskEntry } from './task-entry-client.mjs';
|
|
9
9
|
import { cleanupCompletedSnapshots } from './snapshot-retention.mjs';
|
|
10
|
+
import { prerequisiteError, discoveryPrerequisite } from './service-prerequisite.mjs';
|
|
11
|
+
import { discoveredCapabilities } from './remote-capability-cache.mjs';
|
|
10
12
|
|
|
11
13
|
export const apiUrl = 'https://entrorove.com/api/skill/invoke';
|
|
12
14
|
|
|
@@ -39,7 +41,7 @@ export function buildInvocation(operation, input) {
|
|
|
39
41
|
'message-status', 'message-delivery-start', 'message-delivery-report', 'message-resolve', 'message-complete',
|
|
40
42
|
'handoff-prepare', 'handoff-release', 'handoff-claim', 'handoff-status', 'handoff-resume', 'handoff-execution-authority', 'mutation-snapshot-challenge', 'mutation-pass-issue', 'mutation-pass-settle',
|
|
41
43
|
'member-observation-admit', 'member-observation-report', 'member-observation-status',
|
|
42
|
-
'scope-runner-prepare', 'scope-runner-register', 'scope-runner-challenge', 'scope-runner-attest',
|
|
44
|
+
'scope-runner-prepare', 'scope-runner-register', 'scope-runner-challenge', 'scope-runner-attest', 'scope-evidence-prepare',
|
|
43
45
|
'scope-runner-context-review', 'scope-runner-context-status', 'scope-runner-context-challenge', 'scope-runner-context-apply',
|
|
44
46
|
'start', 'continue'].includes(operation)) throw new Error('Invalid entrorove operation');
|
|
45
47
|
if (!input || typeof input !== 'object' || Array.isArray(input)) throw new Error('Input must be a JSON object');
|
|
@@ -98,9 +100,16 @@ async function invokeDiscovered(data, token, { home, apiOrigin }) {
|
|
|
98
100
|
const call = { ...buildInvocation(data.operation, data.input), url: `${trustedOrigin(apiOrigin())}/api/skill/invoke` };
|
|
99
101
|
let feedbackRequired = false;
|
|
100
102
|
if (data.operation !== 'capabilities') {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
const fetch = async () => {
|
|
104
|
+
let discovery;
|
|
105
|
+
try { discovery = await postInvocation({ ...buildInvocation('capabilities', {}), url: call.url }, token, home); }
|
|
106
|
+
catch (error) { throw discoveryPrerequisite(error, call.requestId); }
|
|
107
|
+
if (!discovery.response.ok || discovery.result.output.status !== 'succeeded') throw new Error(`Capability discovery failed: HTTP ${discovery.response.status}`);
|
|
108
|
+
return discovery.result.output.capabilities;
|
|
109
|
+
};
|
|
110
|
+
let capabilities = await discoveredCapabilities(new URL(call.url).origin, token, home, fetch);
|
|
111
|
+
if (!capabilities?.operations?.includes(data.operation) || !capabilities?.operationSchemas?.[data.operation]) capabilities = await discoveredCapabilities(new URL(call.url).origin,
|
|
112
|
+
token, home, fetch, { refresh: true });
|
|
104
113
|
feedbackRequired = requiresAutomaticFeedback(data.operation,data.input,capabilities);
|
|
105
114
|
const schema = capabilities?.operationSchemas?.[data.operation];
|
|
106
115
|
if (!capabilities?.operations?.includes(data.operation) || !schema) throw new Error(`Capability discovery does not support ${data.operation}`);
|
|
@@ -135,6 +144,11 @@ export async function postInvocation(call, token, home, feedbackRequired = false
|
|
|
135
144
|
await logged({ event: 'outcome-unknown' }); throw unknownInvocation(call.requestId);
|
|
136
145
|
}
|
|
137
146
|
if (!response.ok && !result?.output) {
|
|
147
|
+
const prerequisite = prerequisiteError(response, result, { requestId: call.requestId });
|
|
148
|
+
if (prerequisite) {
|
|
149
|
+
await logged({ event: 'rejected', servicePrerequisite: prerequisite.servicePrerequisite });
|
|
150
|
+
throw Object.assign(prerequisite, prerequisite.knownBeforeEffects ? {} : { outcomeUnknown: true });
|
|
151
|
+
}
|
|
138
152
|
await logged({ event: response.status >= 500 ? 'outcome-unknown' : 'rejected' });
|
|
139
153
|
if (response.status >= 500) throw unknownInvocation(call.requestId);
|
|
140
154
|
const code = typeof result?.error === 'string' && /^[a-z][a-z0-9-]{0,63}$/.test(result.error) ? result.error : 'request-rejected';
|
|
@@ -199,7 +213,9 @@ export function createTaskMessageClient(dependencies) {
|
|
|
199
213
|
let feedbackRequired = false;
|
|
200
214
|
if (operation !== 'capabilities') {
|
|
201
215
|
const discovery = buildInvocation('capabilities', {});
|
|
202
|
-
|
|
216
|
+
let discovered;
|
|
217
|
+
try { discovered = await postInvocation({ ...discovery, url: `${origin}/api/skill/invoke` }, token, dependencies.home); }
|
|
218
|
+
catch (error) { throw discoveryPrerequisite(error, original.requestId); }
|
|
203
219
|
if (!discovered.response.ok || discovered.result.output.status !== 'succeeded') throw new Error('Task message capability discovery failed');
|
|
204
220
|
validateMachineCapability(operation, input, discovered.result.output.capabilities);
|
|
205
221
|
feedbackRequired = requiresAutomaticFeedback(operation,input,discovered.result.output.capabilities);
|
|
@@ -218,6 +234,8 @@ export function createTaskMessageClient(dependencies) {
|
|
|
218
234
|
const response = await readOnlyGet(machineOrigin(dependencies), `/api/skill/status/${id}`,
|
|
219
235
|
{ authorization: `Bearer ${token}` }, 'original task message status');
|
|
220
236
|
const result = await readResponse(response, 'task message status');
|
|
237
|
+
const prerequisite = prerequisiteError(response, result, { requestId: id, outcomeUnknown: true });
|
|
238
|
+
if (prerequisite) throw prerequisite;
|
|
221
239
|
if (!response.ok || !result?.output || result.output.requestId !== id) throw new Error('Original task message status is unavailable or invalid');
|
|
222
240
|
if (result.feedback) verifyAutomaticFeedback(result.feedback,id);
|
|
223
241
|
presentInvocationNotices(result,dependencies.onIdeEvent);
|
|
@@ -232,6 +250,8 @@ export async function queryStatus(requestId, dependencies) {
|
|
|
232
250
|
const token = await dependencies.readCredential(dependencies.home);
|
|
233
251
|
const response = await readOnlyGet(dependencies.apiOrigin(), `/api/skill/status/${encodeURIComponent(requestId)}`, { authorization: `Bearer ${token}` }, 'status')
|
|
234
252
|
const result = await readResponse(response, 'status');
|
|
253
|
+
const prerequisite = prerequisiteError(response, result, { requestId, outcomeUnknown: true });
|
|
254
|
+
if (prerequisite) throw prerequisite;
|
|
235
255
|
if (!response.ok || result?.output?.requestId !== requestId) throw new Error(`entrorove status failed: HTTP ${response.status}; requestId=${requestId}`);
|
|
236
256
|
await appendInvocation({ kind: 'remote', operation: 'status', requestId, event: 'status', usage: result.usage ?? [] }, dependencies.home);
|
|
237
257
|
if (result.feedback) verifyAutomaticFeedback(result.feedback,requestId);
|
package/remote-transport.mjs
CHANGED
|
@@ -108,6 +108,20 @@ export async function requestTransport(origin, pathname, options = {}) {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
// Evidence is a separate bounded data channel. A persisted upload reservation
|
|
112
|
+
// is attempted once; every uncertain outcome must use its original GET.
|
|
113
|
+
export async function putScopeEvidence(origin, uploadId, body, headers = {}) {
|
|
114
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/.test(uploadId ?? '') || !Buffer.isBuffer(body)
|
|
115
|
+
|| body.length < 1 || body.length > 16_000_000) throw new Error('Invalid Entrorove scope evidence upload');
|
|
116
|
+
const url = new URL(`/api/skill/evidence/${uploadId}`, trustedOrigin(origin));
|
|
117
|
+
const response = await attempt(url, { method: 'PUT', body, timeoutMs: 30_000,
|
|
118
|
+
headers: { ...headers, 'content-type': 'application/json; charset=utf-8', 'content-length': body.length, 'accept-encoding': 'gzip' } });
|
|
119
|
+
if (response.status >= 300 && response.status < 400) {
|
|
120
|
+
throw Object.assign(new Error('Entrorove API redirects are refused'), { code: 'ENTROROVE_REDIRECT', established: true });
|
|
121
|
+
}
|
|
122
|
+
return { ...response, attempts: 1 };
|
|
123
|
+
}
|
|
124
|
+
|
|
111
125
|
export function parseTransportResponse(response, label = 'Entrorove') {
|
|
112
126
|
try { return JSON.parse(response.body); }
|
|
113
127
|
catch { throw Object.assign(new Error(`Invalid ${label} response`), { code: 'ENTROROVE_RESPONSE_INVALID' }); }
|