@entrorove/skill 0.1.24 → 0.1.28
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 +73 -15
- package/CHANGELOG.md +20 -0
- package/SKILL.md +11 -1
- package/calctool-runtime-entry.mjs +2 -2
- package/cli.mjs +18 -1
- package/local-archguard-checkpoint.mjs +5 -2
- package/local-archguard-snapshot.mjs +18 -13
- package/local-autocoord17-authority.mjs +36 -0
- package/local-autocoord17-controller.mjs +164 -0
- package/local-autocoord17-peers.mjs +111 -0
- package/local-autocoord17-store.mjs +110 -0
- package/local-autocoord17-tasks.mjs +68 -0
- package/local-autocoord17-waits.mjs +118 -0
- package/local-calctool-cli.mjs +3 -1
- package/local-calctool-composition17.mjs +50 -0
- package/local-calctool-runtime.mjs +1 -1
- package/local-calctool.mjs +1 -1
- package/local-chain-bindings.mjs +93 -0
- package/local-chain-broker.mjs +61 -0
- package/local-chain-contracts.mjs +21 -0
- package/local-chain-controller.mjs +321 -0
- package/local-chain-human.mjs +48 -0
- package/local-chain-lock.mjs +54 -0
- package/local-chain-operations.mjs +7 -0
- package/local-chain-plan.mjs +232 -0
- package/local-chain-release-labels.mjs +12 -0
- package/local-chain-results.mjs +75 -0
- package/local-cli.mjs +23 -15
- package/local-contract-types.mjs +1 -1
- package/local-contracts.mjs +2 -0
- package/local-error.mjs +23 -0
- package/local-execution.mjs +1 -1
- package/local-final-gate16-bundle.mjs +2 -2
- package/local-formula-ast.mjs +23 -14
- package/local-formula-engine.mjs +17 -3
- package/local-formula.mjs +1 -1
- package/local-invocations.mjs +35 -0
- package/local-ledger.mjs +13 -2
- package/local-mutation-authority.mjs +13 -6
- package/local-mutation-binding.mjs +5 -2
- package/local-mutation-files.mjs +29 -4
- package/local-task-handoff-observation.mjs +4 -1
- package/local-validator-isolation17.mjs +256 -0
- package/manifest.json +1 -1
- package/package.json +22 -2
- package/release-state.json +48 -29
- package/release.mjs +22 -1
- package/releases.json +24 -0
- package/runtime/calctool-runtime-v7.0.43.mjs +40 -17
- package/workflow-local-request.mjs +3 -1
package/release-state.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "entrorove.release-state/1.0",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"digest": "
|
|
3
|
+
"version": "0.1.28",
|
|
4
|
+
"digest": "45cbb490c5d7fc99eb1ee6d4d852f9695e614ea3fd0c9923e30a6d24e777401e",
|
|
5
5
|
"files": {
|
|
6
6
|
"local-final-gate16.mjs": "b30caab08441449ad556a6e9a3cefbf91190f0b3f7370f46d2a21156375aa8e3",
|
|
7
7
|
"local-final-gate16-checks.mjs": "1dd30e9666d458d8b12ca6e4975f6f0ac8450c3ea9cbecc7401ae037f66b589a",
|
|
8
8
|
"local-final-gate16-worker.mjs": "344d64b6c1c5552b96960e0d8514a876a3dbfa9762ab9eb749038e8351727121",
|
|
9
9
|
"local-final-gate16-plan.mjs": "9d34c51fa239376e552abc312409a7f3258519efe0b29d88a5054680cdda483c",
|
|
10
|
-
"local-final-gate16-bundle.mjs": "
|
|
10
|
+
"local-final-gate16-bundle.mjs": "08cff47892199a0b1c08196e151770075ee09a9036e9aea4906fdb619edf7499",
|
|
11
11
|
"local-final-gate16-state.mjs": "a8cf6ac28183fb2274772774d52418a82343485271f78b4d304d0dae7c8a642d",
|
|
12
12
|
"local-final-gate16-proof.mjs": "5f7d5be29b1ce5fbb1a05fd2204969215ec5d0297ad84dcb7b29abb3ef285f56",
|
|
13
13
|
"local-final-gate16-contract.mjs": "cffa9b0d89eab360ce6c27c73400b8b377adbdc32813b244f754423d10061fe0",
|
|
@@ -36,24 +36,43 @@
|
|
|
36
36
|
"local-swarm-state.mjs": "ff84c5f35ef3e4a0ad9887d145e404f5786ae0dc92496116699d031b98e90c6a",
|
|
37
37
|
"local-swarm-storage.mjs": "4b506481913fe22769f47a14a024a2cc4c0f1e986bb52ef606d14c7844226086",
|
|
38
38
|
"local-swarm.mjs": "94b5adde0239cc21bada288886482934d409f4383d31076025437ed621ef43b6",
|
|
39
|
-
"
|
|
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",
|
|
47
|
+
"cli.mjs": "c85289b1cbe0ea469a57e67edb1fc475dc9c626c2beae00f5e0954c00757481d",
|
|
40
48
|
"review-client.mjs": "3491eef68ed533174b31db3c53febb6519b8f088f71a9964644714a9a4c03c77",
|
|
41
49
|
"version.mjs": "1f392147d72c40af4b03b307ea607075fb815af5174fa07e254b95fe12dbf3e7",
|
|
42
|
-
"SKILL.md": "
|
|
43
|
-
"CAPABILITY-MAP.md": "
|
|
50
|
+
"SKILL.md": "87c5e85b0c767c85660ebb9958bccaeb69f3f8c2f122f210f5b38e30df891014",
|
|
51
|
+
"CAPABILITY-MAP.md": "128ecc8d90b2c17846ce6f0c650eada9e7fa7240f5d3c03b31e3ee01135557b8",
|
|
44
52
|
"AGREEMENT.md": "f93a68e92c457200dd024610e65f74e478b8f60860f951da818b70561f1b9bf8",
|
|
45
|
-
"package.json": "
|
|
53
|
+
"package.json": "cb54098a13e05f22ef09bcb6a35a47995415bb14732791b61c0334ec7c7d1403",
|
|
46
54
|
"manifest.json": "ab06e307795bc9da5add926752b6c4dbdaf18625090261a035aa356a679c504f",
|
|
47
|
-
"release.mjs": "
|
|
48
|
-
"local-cli.mjs": "
|
|
55
|
+
"release.mjs": "607f63013ed2cdf9448d451c7e5a4e130715be5bae70e8905fb15d874ea7b93a",
|
|
56
|
+
"local-cli.mjs": "ecc85bc5f36a5663fef004e59525374dc7883d3889f5a0cfe219ae5e84b2d3ea",
|
|
49
57
|
"local-state-lock.mjs": "1dbf64264642a0851faf043e07ee9f66d2ad0508e9f799b0626246e42fae893e",
|
|
50
|
-
"local-execution.mjs": "
|
|
58
|
+
"local-execution.mjs": "97dfad5e889e679e9cc34434005342526502795abba21078fa40673788073153",
|
|
51
59
|
"local-integrity.mjs": "4f325376e536999c3b00245f66aac9ef1ae762c33012b363c231622008f72805",
|
|
52
60
|
"local-evidence-verification.mjs": "9b7dea31777505272f63616fd62af7603338f703bb1285fc565d6451715c7ce0",
|
|
53
|
-
"local-formula.mjs": "
|
|
54
|
-
"local-ledger.mjs": "
|
|
61
|
+
"local-formula.mjs": "706d5ec0cb2caf95a547531a81ca746fe246d4c53d902e03595a3b360e8c85af",
|
|
62
|
+
"local-ledger.mjs": "2009fb68aadcd7292b72f1d0d99f378d03644be1c5b4b4150d9f6a0b3f7c15ce",
|
|
63
|
+
"local-error.mjs": "66484e2e27c9870a17dc0f1cf64d108ea384ad9fb41b7adc3aacb243ae65fe2e",
|
|
55
64
|
"blueprint-criterion-wire.mjs": "fb6b7dcce0b97a699e3e8968372767a3fddd83fedc750998573f789177243072",
|
|
56
65
|
"blueprint-criterion-runner.mjs": "761c0e670b4b20c6bed53e5ca5d0178759505c3977ea2ed1b7223383c534bc4c",
|
|
66
|
+
"local-chain-bindings.mjs": "b8eff999ccd17b53c614a3c9f5376da78fcaa8632bb3e07bc1adcceda2e75f6c",
|
|
67
|
+
"local-chain-broker.mjs": "0f43ae3d5e713a344d94c3f67891b0d5f6ed0b70a8d237a54d06c0fa36e4c6d8",
|
|
68
|
+
"local-chain-contracts.mjs": "d4d2be4e5c6980f2dda8ff598c7333a75e0bbf2f656aa7fe327af7c9fe73da07",
|
|
69
|
+
"local-chain-controller.mjs": "dd80d8001a11d8433b615a017a34c30dd130ff5cd9c5b58731314a8f93c9571b",
|
|
70
|
+
"local-chain-human.mjs": "9d5dbaef13ebbbe0cfdd1146cd9c48cefcca30f33ccc0b1566e67cbd730d3499",
|
|
71
|
+
"local-chain-lock.mjs": "e0bc9dccc3c152007f4d67eff0b48de40516ce991b6868f513bc88b53a9b41b2",
|
|
72
|
+
"local-chain-operations.mjs": "78ba550f374b3b7fd03abfc88ae773e1189795d498929a13089fbf50a5611d9f",
|
|
73
|
+
"local-chain-plan.mjs": "e45a9170f569c80f7e5532bbc109dbae3c24b696815316e503cb3779135be648",
|
|
74
|
+
"local-chain-release-labels.mjs": "7ce5350d1062d5236f57f10e7e81713c1101463d5e7f252604ef0c2a30840bfe",
|
|
75
|
+
"local-chain-results.mjs": "0455f72cad574cfef87c2c6c0928d6432bba7e5dbaff521a2b62a9575299ca10",
|
|
57
76
|
"local-approved-plan.mjs": "bb31bf0f826ce22d1e57c6d9cda5314cbbb1fc04e6c0778eb319045ab23a3193",
|
|
58
77
|
"local-budget-renewal.mjs": "6b436358066fe33b2f6d871fc90d8e7c551edd6255efd73c0d255d0fd35d5ef8",
|
|
59
78
|
"local-probe.mjs": "9b948db1de1e34c7605c4c454cd4aced66d2b57d2cf4471adbb80bcc76dee635",
|
|
@@ -101,14 +120,14 @@
|
|
|
101
120
|
"remote-client.mjs": "dabbcc7bd0fd16ba029163f407edb85e914df83cd5914221eb2ce0d061ca8f28",
|
|
102
121
|
"remote-transport.mjs": "5e5a8c0b490371f7f5a052cffbeee6202d4cf713dff1c43b6d910fe944f8429c",
|
|
103
122
|
"local-credential.mjs": "2a302a7f67b5ea8dc73453fc96ab33db349b59ca11fa9456e48ca1d9669d877c",
|
|
104
|
-
"local-invocations.mjs": "
|
|
123
|
+
"local-invocations.mjs": "f6ac4c41c1a5ec34de358c4cca210ca8e403b3a913150a43bb55ec9be55d9998",
|
|
105
124
|
"local-task-handoff-fence.mjs": "5532a359ee29b885f7ce0cf7178f76dba0fc9245bdd92ef460982275baf0d557",
|
|
106
125
|
"local-task-handoff-storage.mjs": "f4d5046d54658e8092e035b31fdaeaed6fdbef55a6953827417c857f2e9e6638",
|
|
107
126
|
"local-task-handoff-overlay-wire.mjs": "4fbe3f9d1ed8b6ddf839e9525cdc52c930a22e9d4f4ad562c6f193f621ee6527",
|
|
108
127
|
"local-task-handoff-completion-wire.mjs": "2f3708b162d2d7524dde8c276bb0ad2328c17eefa597e50f30a2cd2ca1fa7fba",
|
|
109
128
|
"local-task-handoff-contracts.mjs": "c03094185fd05308c8a968a719b121e04e2b86201cc0408f3656e7f81f1840ad",
|
|
110
129
|
"local-task-handoff-write-constraints.mjs": "19cba9330dddd170d1cb8707405574f888292acea2dc3f48bc71f6b3c61065cc",
|
|
111
|
-
"local-task-handoff-observation.mjs": "
|
|
130
|
+
"local-task-handoff-observation.mjs": "d17c75dba647a1ce01681feeb9109c2f51927309255452166a2c2f7758c5ab50",
|
|
112
131
|
"local-task-handoff-write-wire.mjs": "7b49b66de8ecc33c1c92e9dd50118528972f00e1c7748cb3a230a58eefa9ff3f",
|
|
113
132
|
"local-task-handoff-read-authority.mjs": "7d2991cfac4562039232566d25441aa98106ce27bc9b7bcf6df4ff28d738e167",
|
|
114
133
|
"local-task-handoff-write-archive.mjs": "3668f39d8ab5664ed717994cf1b4bcc7ea23e146a0e06291f851d30337faeb77",
|
|
@@ -116,13 +135,13 @@
|
|
|
116
135
|
"workflow-local-runner.mjs": "9fa899a11da2b6b7a436bf9b561641856adcbc5f8b914f6ba89a64dae224900d",
|
|
117
136
|
"workflow-local-contracts.mjs": "604afa9e97c6dfc3d07b01509ef2476887a2fc219c9e827bcac5d563ab4719e7",
|
|
118
137
|
"workflow-local-client.mjs": "45c954f694d96bf0ea87ee2dc6902a6763dac2cb1df713b6a5e749632054e9af",
|
|
119
|
-
"workflow-local-request.mjs": "
|
|
138
|
+
"workflow-local-request.mjs": "4e24c543ce386292a87dc9cd41f90d23375f12079cacffc515c8cd01fd571780",
|
|
120
139
|
"task-message-entry.mjs": "31d10056cb905237cd5649e8eb067009ff1612ec5dc1061e0373209fbc0b646a",
|
|
121
140
|
"task-message-cli.mjs": "3ca65e96c28129b3bd5cac962d106e0859a1f17df1f6a66ee543c6efc22f918d",
|
|
122
|
-
"local-contracts.mjs": "
|
|
123
|
-
"local-contract-types.mjs": "
|
|
141
|
+
"local-contracts.mjs": "43715cd73460ccea734501a3dd5667184da0f6a5b0189e038319a439ba52fc76",
|
|
142
|
+
"local-contract-types.mjs": "5d244237fc69052b2fa83098022761bae929e8b75a0683883b620711bc132050",
|
|
124
143
|
"local-archguard-ast.mjs": "cefd835312a623e83bf48e4d8e1f76ac6a8adc56c35843705c16967d16bec4e6",
|
|
125
|
-
"local-archguard-checkpoint.mjs": "
|
|
144
|
+
"local-archguard-checkpoint.mjs": "37896902520cc995720c96288e4a5ed3585952b55c9c35be281f91fa754c71ec",
|
|
126
145
|
"local-archguard-components.mjs": "a8fb3d0fd787f9160905013fd333cc0b9e8cf624cce797461f36f4ab31d170ad",
|
|
127
146
|
"local-archguard-contract.mjs": "cfc397a1ce171ab84f8bf1db152e6d8d280b7ca041da56a7a4cd62b02c2e2e89",
|
|
128
147
|
"local-archguard-contracts.mjs": "29e9b86f14dc086aa0b791c874d6efc50d849f806b3f2b8725481114f01ba8ba",
|
|
@@ -132,31 +151,31 @@
|
|
|
132
151
|
"local-archguard-operations.mjs": "1a35268b857b86eab54dd4efa78fc54bf08b39dfab4fa980c7dd63b8959206b0",
|
|
133
152
|
"local-archguard-scope.mjs": "afbd23a79c175f198892ddb2026ecac219a1650ee6115763736d9b1ee5a07ee0",
|
|
134
153
|
"local-archguard-signing.mjs": "7de0fe4b8f6f5a92d043ad8976054faaa76b7b37556ed582e5e012c6f0facc87",
|
|
135
|
-
"local-archguard-snapshot.mjs": "
|
|
154
|
+
"local-archguard-snapshot.mjs": "81282fa7d0e3bbf879fc5a3c6a9e4f44fb15dee36029bb0ce2a5e4f1710cf4c9",
|
|
136
155
|
"local-archguard-state.mjs": "1d3c74c4ec222646e82120be4aa6a00c52d2867fb8c20323420d6ab0bf2cd46c",
|
|
137
156
|
"local-archguard.mjs": "4c8ec5d569d728b15161eb88e49371c77def7d1fe511aa16694581a2c1d59433",
|
|
138
157
|
"archguard-runtime-build.mjs": "45bf31764763973bd8de32b3e16d194162407e7cb74802df3ab363f0fd30e866",
|
|
139
158
|
"runtime/archguard-runtime-v7.0.44.mjs": "836f20b270139371bef43e3934fa7232371e42d46371c513db2a5e3c5622b215",
|
|
140
159
|
"local-decimal.mjs": "93580b0cbdac2e881942658c1cd10394b432219f8657afaaaf4cb1c35c91d644",
|
|
141
|
-
"local-formula-ast.mjs": "
|
|
142
|
-
"local-formula-engine.mjs": "
|
|
160
|
+
"local-formula-ast.mjs": "768ec4aa88a127588035d5b94aa2721df00e3e0576dc7e341baaead44795f314",
|
|
161
|
+
"local-formula-engine.mjs": "cfc44f03bb8dc4797f9f9e859a64a2dd5e4dd316db45624c03f7f8fad3202ede",
|
|
143
162
|
"local-formula-tests.mjs": "d6d2809572c46955e6b556023ed6a12362c8acd0ad0d5be3b1b2dd64439215c0",
|
|
144
|
-
"local-calctool.mjs": "
|
|
145
|
-
"local-calctool-cli.mjs": "
|
|
163
|
+
"local-calctool.mjs": "9398e642250b38b2831ec58e490fbbef761455ce9ae49af033baa8c3ba8d778e",
|
|
164
|
+
"local-calctool-cli.mjs": "a6b46e2aa9a91dfb73fc0dc415b2281a0343e22e317ff1bfcf58cadbb8093122",
|
|
146
165
|
"local-calctool-contracts.mjs": "d8fccf662b2dd7aefd5cc6770b2473014af7a28855074fcf294937ca5a49eae8",
|
|
147
|
-
"local-calctool-runtime.mjs": "
|
|
166
|
+
"local-calctool-runtime.mjs": "9070b6900d1782bf77357fea1cc522bf796898d56929f96d7cb935b3036ac82f",
|
|
148
167
|
"local-calctool-storage.mjs": "4c3f352847aeb368dea1247759a1055beeab25534adf25b6e7323196d76fd684",
|
|
149
|
-
"local-mutation-files.mjs": "
|
|
168
|
+
"local-mutation-files.mjs": "b99a1987e0884cee1f0f04552300fbf61853ea2547d74c77b77c71fc3ebb89ad",
|
|
150
169
|
"local-mutation-snapshot.mjs": "a2f5f1df1fa0ecb40bdd4776e319c5244508ed04a2aa4493aebcec926fc61148",
|
|
151
170
|
"local-mutation-audit.mjs": "5a30ee3446f632e032ffcfe46bcd97d6dfc0f099a76ea5185c3f9a9118c4f6cb",
|
|
152
171
|
"local-mutation-wire.mjs": "dc79992422254d876bec94c621407bede94c9f43c95367a2c9f16a2a64b15576",
|
|
153
|
-
"local-mutation-binding.mjs": "
|
|
172
|
+
"local-mutation-binding.mjs": "a1756642dd758701b476d332a48799b4af56fdd8f67aba6d46ca9bb2341b6327",
|
|
154
173
|
"local-mutation-pass-store.mjs": "8d6b57c6d1ea3df15a794e6a4cd39497f4412a5f911b9a30b0437498f51f92c0",
|
|
155
|
-
"local-mutation-authority.mjs": "
|
|
174
|
+
"local-mutation-authority.mjs": "28561b5b672838a46fa13b0044b5d9302630d073aa5893a7e0990e6567336499",
|
|
156
175
|
"local-mutation-batch.mjs": "80293d8111203687e2527cd23b771447cc44ff58c0b0155c368bcbfa05aa3bb8",
|
|
157
176
|
"local-mutation-batch-receipt.mjs": "b0e6a8522867255d899e60b66677885933f6a1c4c771cbb52f84dbbbdcf5e5c2",
|
|
158
|
-
"calctool-runtime-entry.mjs": "
|
|
177
|
+
"calctool-runtime-entry.mjs": "98d2bc8df38d16131fc56db0a3d4d260531ba4df412baa5ddc4b8b5c5ca99fe9",
|
|
159
178
|
"calctool-runtime-build.mjs": "3c5a9bd40bc1abe02e3b6e307809eea4eaaf198e8f0db6f5d6b2583dd68a59d2",
|
|
160
|
-
"runtime/calctool-runtime-v7.0.43.mjs": "
|
|
179
|
+
"runtime/calctool-runtime-v7.0.43.mjs": "5473427c350411f62c16ac5239fa0db7b96e7b2c19458f9046768dcb4ada87d1"
|
|
161
180
|
}
|
|
162
181
|
}
|
package/release.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { createHash } from 'node:crypto'
|
|
|
3
3
|
import { readFile, writeFile, rename, rm } from 'node:fs/promises'
|
|
4
4
|
import path from 'node:path'
|
|
5
5
|
import { fileURLToPath } from 'node:url'
|
|
6
|
+
import { chainReleaseLabels } from './local-chain-release-labels.mjs'
|
|
6
7
|
|
|
7
8
|
const directory = path.dirname(fileURLToPath(import.meta.url))
|
|
8
9
|
const swarmSourceFiles = Object.freeze([
|
|
@@ -16,6 +17,16 @@ const swarmSourceFiles = Object.freeze([
|
|
|
16
17
|
'local-swarm-storage.mjs',
|
|
17
18
|
'local-swarm.mjs',
|
|
18
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
|
+
])
|
|
19
30
|
const sourceFiles = [
|
|
20
31
|
...FINAL_GATE16_PACKAGE_FILES,
|
|
21
32
|
'local-merge-archguard-verification.d.mts',
|
|
@@ -34,10 +45,15 @@ const sourceFiles = [
|
|
|
34
45
|
'local-merge-targets.mjs',
|
|
35
46
|
'local-merge-transaction.mjs',
|
|
36
47
|
...swarmSourceFiles,
|
|
48
|
+
...coordination17SourceFiles,
|
|
37
49
|
'cli.mjs', 'review-client.mjs', 'version.mjs', 'SKILL.md', 'CAPABILITY-MAP.md', 'AGREEMENT.md',
|
|
38
50
|
'package.json', 'manifest.json', 'release.mjs',
|
|
39
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',
|
|
40
53
|
'blueprint-criterion-wire.mjs', 'blueprint-criterion-runner.mjs',
|
|
54
|
+
'local-chain-bindings.mjs', 'local-chain-broker.mjs', 'local-chain-contracts.mjs', 'local-chain-controller.mjs',
|
|
55
|
+
'local-chain-human.mjs', 'local-chain-lock.mjs', 'local-chain-operations.mjs', 'local-chain-plan.mjs',
|
|
56
|
+
'local-chain-release-labels.mjs', 'local-chain-results.mjs',
|
|
41
57
|
'local-approved-plan.mjs', 'local-budget-renewal.mjs', 'local-probe.mjs',
|
|
42
58
|
'local-budget-grants.mjs', 'local-budget-handoff.mjs', 'local-budget-handoff-contracts.mjs', 'local-budget-lock.mjs',
|
|
43
59
|
'local-budget-handoff-completion.mjs',
|
|
@@ -192,6 +208,10 @@ const swarmReleaseLabels = Object.freeze(Object.fromEntries(swarmSourceFiles.map
|
|
|
192
208
|
zh: 'Swarm 原授权协作调度与实际执行守卫', en: 'Swarm original-authority coordination and actual execution guard',
|
|
193
209
|
}])))
|
|
194
210
|
|
|
211
|
+
const coordination17ReleaseLabels = Object.freeze(Object.fromEntries(coordination17SourceFiles.map(name => [name, {
|
|
212
|
+
zh: '协同执行与验证隔离能力', en: 'coordination execution and validator isolation capabilities',
|
|
213
|
+
}])))
|
|
214
|
+
|
|
195
215
|
const nativeReadReleaseLabels = {
|
|
196
216
|
'local-budget-git-attributes.mjs': { zh: '固定Git实际源读取与预算记账', en: 'fixed Git actual source reads and budget accounting' },
|
|
197
217
|
'local-budget-git-native-attributes.mjs': { zh: '固定Git实际源读取与预算记账', en: 'fixed Git actual source reads and budget accounting' },
|
|
@@ -227,7 +247,7 @@ function releaseNote(changed) {
|
|
|
227
247
|
if (suppliedZh && suppliedEn) return {
|
|
228
248
|
zh: suppliedZh.replaceAll(/\s+/g, ' '), en: suppliedEn.replaceAll(/\s+/g, ' '),
|
|
229
249
|
}
|
|
230
|
-
const labels = withFinalGate16ReleaseLabels({ ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels,
|
|
250
|
+
const labels = withFinalGate16ReleaseLabels({ ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...coordination17ReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels,
|
|
231
251
|
'blueprint-criterion-wire.mjs': { zh: '蓝图验收标准执行授权', en: 'Blueprint criterion execution authority' },
|
|
232
252
|
'blueprint-criterion-runner.mjs': { zh: '蓝图验收标准实际执行器', en: 'Blueprint criterion process runner' },
|
|
233
253
|
'local-archguard-ast.mjs': { zh: 'Archguard 架构合同与执行守卫', en: 'Archguard architecture contract and execution guard' },
|
|
@@ -261,6 +281,7 @@ function releaseNote(changed) {
|
|
|
261
281
|
'local-execution.mjs': { zh: '本地执行闸门与预算', en: 'local execution gates and budgets' },
|
|
262
282
|
'local-integrity.mjs': { zh: '证据与回执验签', en: 'evidence and receipt verification' },
|
|
263
283
|
'local-evidence-verification.mjs': { zh: 'Validator 独立证据验证与执行结果绑定', en: 'Validator independent evidence verification and execution result binding' },
|
|
284
|
+
'local-error.mjs': { zh: '统一本地错误信封', en: 'unified local error envelopes' },
|
|
264
285
|
'local-formula.mjs': { zh: '确定性公式引擎', en: 'deterministic formula engine' },
|
|
265
286
|
'local-ledger.mjs': { zh: '执行与链路台账', en: 'execution and chain ledger' },
|
|
266
287
|
'local-approved-plan.mjs': { zh: '冻结计划执行器', en: 'frozen plan runner' },
|
package/releases.json
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.1.28",
|
|
4
|
+
"date": "2026-10-09",
|
|
5
|
+
"zh": "更新了协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、协同执行与验证隔离能力、安装包配置、自动版本与更新日志、统一本地错误信封。",
|
|
6
|
+
"en": "Updated coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, coordination execution and validator isolation capabilities, package configuration, automatic versioning and changelog, unified local error envelopes."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"version": "0.1.27",
|
|
10
|
+
"date": "2026-10-08",
|
|
11
|
+
"zh": "更新了IDE 工作流程说明、能力覆盖映射、Archguard 架构合同与执行守卫、工作流原执行请求恢复。",
|
|
12
|
+
"en": "Updated IDE workflow instructions, capability coverage map, Archguard architecture contract and execution guard, workflow original execution request recovery."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"version": "0.1.26",
|
|
16
|
+
"date": "2026-10-07",
|
|
17
|
+
"zh": "更新了能力覆盖映射、安装包配置。",
|
|
18
|
+
"en": "Updated capability coverage map, package configuration."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"version": "0.1.25",
|
|
22
|
+
"date": "2026-10-07",
|
|
23
|
+
"zh": "原链本地执行与固定Git计费收口,补齐macOS路径和发布夹具",
|
|
24
|
+
"en": "Close original-chain local execution and fixed Git accounting, with macOS path and release fixture coverage"
|
|
25
|
+
},
|
|
2
26
|
{
|
|
3
27
|
"version": "0.1.24",
|
|
4
28
|
"date": "2026-10-07",
|
|
@@ -1528,7 +1528,8 @@ class Decimal {
|
|
|
1528
1528
|
const Decimal28 = Decimal;
|
|
1529
1529
|
|
|
1530
1530
|
const FORMULA_OPERATORS = Object.freeze(['add', 'sub', 'mul', 'div', 'safeDivide', 'percentOf', 'round', 'if']);
|
|
1531
|
-
const
|
|
1531
|
+
const FORMULA_ROUNDING_POLICY = Object.freeze({ decimalPlaces: 2, mode: 'half-away-from-zero' });
|
|
1532
|
+
const ARITY = { add: [1, 1000], mul: [1, 1000], sub: [2, 2], div: [2, 2], safeDivide: [2, 2], percentOf: [2, 2], round: [1, 1], if: [3, 3] };
|
|
1532
1533
|
function formulaKey(value) {
|
|
1533
1534
|
if (typeof value !== 'string' || !value.trim() || value.length > 128 || /[\u0000-\u001f\u007f]/.test(value)) throw formulaError('FORMULA_KEY_INVALID', 'formula and field keys must be non-empty strings of at most 128 characters');
|
|
1534
1535
|
return value;
|
|
@@ -1557,28 +1558,35 @@ function formulaRefs(node, output = new Set()) {
|
|
|
1557
1558
|
if (node.args) for (const item of node.args) formulaRefs(item, output);
|
|
1558
1559
|
return [...output].sort();
|
|
1559
1560
|
}
|
|
1560
|
-
function
|
|
1561
|
+
function roundPlaces(policy) {
|
|
1562
|
+
const value = policy?.decimalPlaces;
|
|
1563
|
+
if (!Number.isInteger(value) || value < 0 || value > 28) throw formulaError('ROUND_POLICY_INVALID', 'rounding policy decimalPlaces must be an integer from 0 to 28');
|
|
1564
|
+
if (policy.mode !== 'half-away-from-zero') throw formulaError('ROUND_POLICY_INVALID', 'rounding policy mode must be half-away-from-zero');
|
|
1565
|
+
return value;
|
|
1566
|
+
}
|
|
1567
|
+
function evaluateNode(node, resolve, policy) {
|
|
1561
1568
|
if (Object.hasOwn(node, 'lit')) return Decimal.from(node.lit);
|
|
1562
1569
|
if (Object.hasOwn(node, 'ref')) return Decimal.from(resolve(node.ref));
|
|
1563
1570
|
const [left, right, alternate] = node.args;
|
|
1564
1571
|
switch (node.op) {
|
|
1565
|
-
case 'add': return node.args.reduce((total, item) => total.plus(evaluateNode(item, resolve)), Decimal.from('0'));
|
|
1566
|
-
case 'mul': return node.args.reduce((total, item) => total.times(evaluateNode(item, resolve)), Decimal.from('1'));
|
|
1567
|
-
case 'sub': return evaluateNode(left, resolve).minus(evaluateNode(right, resolve));
|
|
1568
|
-
case 'div': return evaluateNode(left, resolve).div(evaluateNode(right, resolve));
|
|
1569
|
-
case 'safeDivide': { const denominator = evaluateNode(right, resolve);
|
|
1570
|
-
case 'percentOf': return evaluateNode(left, resolve).div(evaluateNode(right, resolve)).times('100');
|
|
1571
|
-
case 'round': return evaluateNode(left, resolve).rounded(
|
|
1572
|
-
case 'if': return evaluateNode(left, resolve).isZero() ? evaluateNode(alternate, resolve) : evaluateNode(right, resolve);
|
|
1572
|
+
case 'add': return node.args.reduce((total, item) => total.plus(evaluateNode(item, resolve, policy)), Decimal.from('0'));
|
|
1573
|
+
case 'mul': return node.args.reduce((total, item) => total.times(evaluateNode(item, resolve, policy)), Decimal.from('1'));
|
|
1574
|
+
case 'sub': return evaluateNode(left, resolve, policy).minus(evaluateNode(right, resolve, policy));
|
|
1575
|
+
case 'div': return evaluateNode(left, resolve, policy).div(evaluateNode(right, resolve, policy));
|
|
1576
|
+
case 'safeDivide': { const denominator = evaluateNode(right, resolve, policy); if (denominator.isZero()) throw formulaError('DIV_ZERO', 'division by zero', { nodeId: 'safeDivide' }); return evaluateNode(left, resolve, policy).div(denominator); }
|
|
1577
|
+
case 'percentOf': return evaluateNode(left, resolve, policy).div(evaluateNode(right, resolve, policy)).times('100');
|
|
1578
|
+
case 'round': return evaluateNode(left, resolve, policy).rounded(roundPlaces(policy));
|
|
1579
|
+
case 'if': return evaluateNode(left, resolve, policy).isZero() ? evaluateNode(alternate, resolve, policy) : evaluateNode(right, resolve, policy);
|
|
1573
1580
|
default: throw formulaError('UNSUPPORTED_OPERATOR', 'unsupported normalized formula operator');
|
|
1574
1581
|
}
|
|
1575
1582
|
}
|
|
1576
|
-
function evaluateFormula(node, values = {}) {
|
|
1583
|
+
function evaluateFormula(node, values = {}, options = {}) {
|
|
1577
1584
|
formulaObject(values, 'formula values');
|
|
1585
|
+
const policy = options.roundingPolicy ?? FORMULA_ROUNDING_POLICY;
|
|
1578
1586
|
return evaluateNode(normalizeFormula(node), key => {
|
|
1579
1587
|
if (!Object.hasOwn(values, key) || values[key] === null || values[key] === undefined || values[key] === '') throw formulaError('MISSING_INPUT', `missing input: ${key}`, { fieldId: key });
|
|
1580
1588
|
return values[key];
|
|
1581
|
-
});
|
|
1589
|
+
}, policy);
|
|
1582
1590
|
}
|
|
1583
1591
|
function compileFormulaGraph(formulas, fieldKeys) {
|
|
1584
1592
|
if (!Array.isArray(formulas) || formulas.length > 1000) throw formulaError('FORMULA_GRAPH_INVALID', 'formulas must be an array of at most 1000 definitions');
|
|
@@ -1605,8 +1613,9 @@ function compileFormulaGraph(formulas, fieldKeys) {
|
|
|
1605
1613
|
for (const key of [...definitions.keys()].sort()) visit(key);
|
|
1606
1614
|
return { formulas: [...definitions.values()].sort((a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0), dependencies, order };
|
|
1607
1615
|
}
|
|
1608
|
-
function evaluateFormulaGraph(formulas, inputs = {}) {
|
|
1616
|
+
function evaluateFormulaGraph(formulas, inputs = {}, options = {}) {
|
|
1609
1617
|
formulaObject(inputs, 'formula inputs');
|
|
1618
|
+
const policy = options.roundingPolicy ?? FORMULA_ROUNDING_POLICY;
|
|
1610
1619
|
const values = new Map(Object.entries(inputs).map(([key, value]) => [key, Decimal.from(value)]));
|
|
1611
1620
|
const graph = compileFormulaGraph(formulas);
|
|
1612
1621
|
const definitions = new Map(graph.formulas.map(item => [item.key, item.expression]));
|
|
@@ -1618,13 +1627,14 @@ function evaluateFormulaGraph(formulas, inputs = {}) {
|
|
|
1618
1627
|
return values.get(key);
|
|
1619
1628
|
}
|
|
1620
1629
|
if (visiting.has(key)) throw formulaError('FORMULA_CYCLE', `formula cycle at ${key}`);
|
|
1621
|
-
visiting.add(key); const value = evaluateNode(definitions.get(key), resolve); visiting.delete(key); results.set(key, value); return value;
|
|
1630
|
+
visiting.add(key); const value = evaluateNode(definitions.get(key), resolve, policy); visiting.delete(key); results.set(key, value); return value;
|
|
1622
1631
|
};
|
|
1623
1632
|
return Object.fromEntries(graph.formulas.map(item => [item.key, resolve(item.key).toString()]));
|
|
1624
1633
|
}
|
|
1625
1634
|
|
|
1626
1635
|
const FORMULA_SCHEMA = 'entrorove.formula-engine/1.0';
|
|
1627
1636
|
const FORMULA_RUNTIME_VERSION = 'decimal28-ast/1.0';
|
|
1637
|
+
{ FORMULA_ROUNDING_POLICY };
|
|
1628
1638
|
const TYPES = ['number', 'integer', 'money', 'percent', 'text', 'date', 'enum'];
|
|
1629
1639
|
const NUMERIC = TYPES.slice(0, 4);
|
|
1630
1640
|
const ID = /^[a-z0-9][a-z0-9._-]{0,127}$/;
|
|
@@ -1642,6 +1652,14 @@ function cloned(value) { return JSON.parse(formulaCanonical(value)); }
|
|
|
1642
1652
|
function requiredText(value, field) {
|
|
1643
1653
|
if (typeof value !== 'string' || !value.trim()) throw formulaError('ENGINE_REQUIRED_FIELD', `${field} is required`);
|
|
1644
1654
|
}
|
|
1655
|
+
function normalizeRoundingPolicy(value) {
|
|
1656
|
+
const policy = value ?? FORMULA_ROUNDING_POLICY;
|
|
1657
|
+
formulaObject(policy, 'roundingPolicy');
|
|
1658
|
+
if (Object.keys(policy).sort().join(',') !== 'decimalPlaces,mode'
|
|
1659
|
+
|| !Number.isInteger(policy.decimalPlaces) || policy.decimalPlaces < 0 || policy.decimalPlaces > 28
|
|
1660
|
+
|| policy.mode !== 'half-away-from-zero') throw formulaError('ROUND_POLICY_INVALID', 'roundingPolicy must declare decimalPlaces 0..28 and half-away-from-zero mode');
|
|
1661
|
+
return { decimalPlaces: policy.decimalPlaces, mode: policy.mode };
|
|
1662
|
+
}
|
|
1645
1663
|
function normalizeEngine(engine) {
|
|
1646
1664
|
formulaObject(engine, 'engine');
|
|
1647
1665
|
if (engine.schemaVersion !== 'engine.spec/1') throw formulaError('ENGINE_SCHEMA_VERSION', 'Expected engine.spec/1');
|
|
@@ -1662,12 +1680,14 @@ function normalizeEngine(engine) {
|
|
|
1662
1680
|
if (NUMERIC.includes(field.type) && typeof field.unit !== 'string') throw formulaError('FIELD_UNIT_MISSING', 'numeric fields require an explicit unit');
|
|
1663
1681
|
if (field.required !== undefined && typeof field.required !== 'boolean') throw formulaError('FIELD_REQUIRED_INVALID', 'field required must be boolean');
|
|
1664
1682
|
}
|
|
1683
|
+
const roundingPolicy = normalizeRoundingPolicy(engine.roundingPolicy);
|
|
1665
1684
|
const graph = compileFormulaGraph(engine.formulas, [...keys]);
|
|
1666
1685
|
for (const item of graph.formulas) for (const ref of graph.dependencies[item.key]) {
|
|
1667
1686
|
const field = engine.fields.find(entry => entry.key === ref);
|
|
1668
1687
|
if (field && !NUMERIC.includes(field.type)) throw formulaError('FORMULA_REF_TYPE', `formula reference ${ref} must be numeric`);
|
|
1669
1688
|
}
|
|
1670
1689
|
const normalized = cloned(engine);
|
|
1690
|
+
normalized.roundingPolicy = roundingPolicy;
|
|
1671
1691
|
normalized.formulas = engine.formulas.map(item => ({ ...cloned(item), expression: graph.formulas.find(entry => entry.key === item.key).expression }));
|
|
1672
1692
|
return { engine: normalized, graph };
|
|
1673
1693
|
}
|
|
@@ -1683,7 +1703,8 @@ function buildFormulaEngine(requirements) {
|
|
|
1683
1703
|
semanticVersion: requirements.semanticVersion ?? '1.0.0', status: 'draft', compatibilityProfile: 'legacy-compatible',
|
|
1684
1704
|
decimalPolicy: requirements.decimalPolicy ?? 'decimal-string', defaultLocale: requirements.defaultLocale ?? 'zh-CN',
|
|
1685
1705
|
category: requirements.category ?? 'general', inputMethod: requirements.inputMethod ?? 'manual', output: requirements.output ?? ['metric-cards'],
|
|
1686
|
-
constraints: requirements.constraints ?? '',
|
|
1706
|
+
constraints: requirements.constraints ?? '', roundingPolicy: requirements.roundingPolicy ?? FORMULA_ROUNDING_POLICY,
|
|
1707
|
+
fields: requirements.inputs, formulas: requirements.formulas,
|
|
1687
1708
|
rules: requirements.rules ?? [], views: requirements.views ?? [], importProfiles: requirements.importProfiles ?? [],
|
|
1688
1709
|
reports: requirements.reports ?? [], testSuites: requirements.testSuites ?? [], acceptance: requirements.acceptance ?? '',
|
|
1689
1710
|
};
|
|
@@ -1692,6 +1713,7 @@ function buildFormulaEngine(requirements) {
|
|
|
1692
1713
|
function compileFormulaEngine(engine) {
|
|
1693
1714
|
const normalized = normalizeEngine(engine);
|
|
1694
1715
|
const program = { schemaVersion: FORMULA_SCHEMA, runtimeVersion: FORMULA_RUNTIME_VERSION, decimalPolicy: DECIMAL_POLICY,
|
|
1716
|
+
roundingPolicy: normalized.engine.roundingPolicy,
|
|
1695
1717
|
engineId: normalized.engine.engineId, engineVersion: normalized.engine.semanticVersion,
|
|
1696
1718
|
engineDigest: formulaDigest(normalized.engine), engine: normalized.engine,
|
|
1697
1719
|
formulas: normalized.graph.formulas, dependencies: normalized.graph.dependencies, order: normalized.graph.order };
|
|
@@ -1719,7 +1741,8 @@ function evaluateFormulaProgram(program, inputs = {}, expected = {}) {
|
|
|
1719
1741
|
} else if (typeof value !== 'string') throw formulaError('ENGINE_INPUT_TYPE', `${key} must be text`);
|
|
1720
1742
|
}
|
|
1721
1743
|
for (const field of fields.values()) if (field.required && (!Object.hasOwn(inputs, field.key) || inputs[field.key] === '' || inputs[field.key] === null)) throw formulaError('MISSING_INPUT', `missing input: ${field.key}`, { fieldId: field.key });
|
|
1722
|
-
return evaluateFormulaGraph(verified.formulas, Object.fromEntries(Object.entries(inputs).filter(([key]) => NUMERIC.includes(fields.get(key).type)))
|
|
1744
|
+
return evaluateFormulaGraph(verified.formulas, Object.fromEntries(Object.entries(inputs).filter(([key]) => NUMERIC.includes(fields.get(key).type))),
|
|
1745
|
+
{ roundingPolicy: verified.roundingPolicy });
|
|
1723
1746
|
}
|
|
1724
1747
|
function formulaImpact(program, changedKeys) {
|
|
1725
1748
|
const verified = verifyFormulaProgram(program);
|
|
@@ -1818,7 +1841,7 @@ function createCalctoolEntrypoint(core) {
|
|
|
1818
1841
|
const output = await core.run(request, options);
|
|
1819
1842
|
return { ...output, capabilities: { ...output.capabilities, operations: CLOUD_OPERATIONS, localRunnerOperations: LOCAL_OPERATIONS,
|
|
1820
1843
|
formulaOperators: FORMULA_OPERATORS, engineSchema: 'engine.spec/1', formulaRuntime: 'decimal28-ast/1.0',
|
|
1821
|
-
decimalPolicy: { precision: 28, rounding: 'half-away-from-zero', representation: 'decimal-string' } },
|
|
1844
|
+
decimalPolicy: { precision: 28, rounding: 'half-away-from-zero', representation: 'decimal-string' }, roundingPolicy: FORMULA_ROUNDING_POLICY },
|
|
1822
1845
|
localRunner: { command: 'entrorove local calctool-<operation>', requiredFor: LOCAL_OPERATIONS } };
|
|
1823
1846
|
}
|
|
1824
1847
|
if (request.operation === 'validate') {
|
|
@@ -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
|
-
|
|
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
|
});
|