@tetsuo-ai/agenc 0.11.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,41 +1,53 @@
1
1
  {
2
2
  "manifestVersion": 2,
3
- "runtimeVersion": "0.11.2",
3
+ "runtimeVersion": "0.13.0",
4
4
  "releaseRepository": "tetsuo-ai/agenc-releases",
5
- "releaseTag": "agenc-v0.11.2",
5
+ "releaseTag": "agenc-v0.13.0",
6
6
  "build": {
7
- "sourceCommit": "7f862dbb84e4bcf57e3b0e3e26ab8c5b70cb276d",
8
- "sourceRef": "refs/tags/agenc-v0.11.2",
9
- "sourceDateEpoch": 1785182285,
10
- "lockfileSha256": "4a7e3baea685b32774d62570d89c7d42e7b040329b05da178ecf21ec3a01a237",
7
+ "sourceCommit": "929d3ccc9f3d3524704503e28a43fb567147dbe5",
8
+ "sourceRef": "refs/tags/agenc-v0.13.0",
9
+ "sourceDateEpoch": 1785489827,
10
+ "lockfileSha256": "bb806a1a762aed6d1a4beaed8e1a06eb073e3f32bf6215429b6c8016d99b7432",
11
11
  "nodeVersion": "v26.5.0",
12
12
  "nodeMajor": 26,
13
13
  "nodeModuleAbi": "147",
14
14
  "nodeApiVersion": "10",
15
15
  "npmVersion": "11.17.0",
16
- "artifactProfile": "release"
16
+ "artifactProfile": "release",
17
+ "releaseCandidate": {
18
+ "workflow": "release-runtime.yml",
19
+ "runId": 30620942433,
20
+ "runAttempt": 1,
21
+ "runUrl": "https://github.com/tetsuo-ai/agenc-core/actions/runs/30620942433",
22
+ "phase": "candidate",
23
+ "sourceRef": "refs/heads/main",
24
+ "evidenceSha256": "70be4e8aaac5a141f96f91d978c5c48a1011688caaeb5edd652ebdbb0638cb48"
25
+ }
17
26
  },
18
27
  "artifacts": [
19
28
  {
20
29
  "platform": "darwin",
21
30
  "arch": "arm64",
22
- "runtimeVersion": "0.11.2",
31
+ "runtimeVersion": "0.13.0",
23
32
  "nodeMajor": 26,
24
33
  "nodeModuleAbi": "147",
25
34
  "nodeApiVersion": "10",
26
- "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-darwin-arm64-node26-abi147.tar.gz",
27
- "sha256": "daa200674c110b323d76e92b391864074b3b1b53fa4fbb2f99270ac47c788c78",
28
- "bytes": 109963910,
29
- "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-darwin-arm64-node26-abi147.tar.gz.sigstore.json",
30
- "attestationSha256": "a837af8d7312f52aedd6f5eccf7cd1cb174fb970d6de4b9ecb586d9951fd79e2",
31
- "attestationBytes": 11542,
32
- "metadataSha256": "a1522d50cc8e4444849c5b685d768e55a0b19c033bfde9ff3a038ada4760c12b",
35
+ "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-arm64-node26-abi147.tar.gz",
36
+ "sha256": "bc770395e0a39cc7a2a9c0b6d14fb9bc2f052333c49aab247583716293259ffe",
37
+ "bytes": 113442270,
38
+ "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-arm64-node26-abi147.tar.gz.sigstore.json",
39
+ "attestationSha256": "04861f183af336e7be27cf8028ff70c3aea5334517a030cc7322a34fe8a9891f",
40
+ "attestationBytes": 11260,
41
+ "buildProvenanceUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-arm64-node26-abi147.tar.gz.build.sigstore.json",
42
+ "buildProvenanceSha256": "04f97d158cd818d306bca1daae1d4e57c6fa5ae8e95d007e2c8775bf7113ea3c",
43
+ "buildProvenanceBytes": 11060,
44
+ "metadataSha256": "171db3c80a8aec9b50697c4f03780c57fe9c7cce6f41e2f227733acf7c539b7c",
33
45
  "nativeToolchain": {
34
46
  "schemaVersion": 1,
35
- "builder": "github-hosted:macos-15:macos15:20260715.0234.1:ARM64",
47
+ "builder": "github-hosted:macos-15:macos15:20260727.0256.1:ARM64",
36
48
  "runnerLabel": "macos-15",
37
49
  "runnerImage": "macos15",
38
- "runnerImageVersion": "20260715.0234.1",
50
+ "runnerImageVersion": "20260727.0256.1",
39
51
  "runnerArch": "ARM64",
40
52
  "cc": "Apple clang version 17.0.0 (clang-1700.0.13.5)",
41
53
  "cxx": "Apple clang version 17.0.0 (clang-1700.0.13.5)",
@@ -59,13 +71,13 @@
59
71
  "xcode": "Xcode 16.4\nBuild version 16F6",
60
72
  "sdk": "15.5"
61
73
  },
62
- "dependencyTreeSha256": "22693d4afd16c2581ff426e75ab3da04e1658732c6ce9a7c9c7faf5863e16ed1",
63
- "dependencyPackages": 459,
74
+ "dependencyTreeSha256": "afcd562b369a62b9a4a6d0877a93559c5f69f5024c1959c3631f60005b3402e5",
75
+ "dependencyPackages": 467,
64
76
  "archiveFormat": "tar+gzip; portable; utf8-byte-order; normalized-mtime",
65
77
  "archiveValidation": {
66
78
  "policy": "agenc-runtime-archive-v1",
67
- "entries": 28856,
68
- "uncompressedBytes": 449232896
79
+ "entries": 29260,
80
+ "uncompressedBytes": 461165056
69
81
  },
70
82
  "minimumMacosVersion": "13.5",
71
83
  "bins": {
@@ -76,17 +88,20 @@
76
88
  {
77
89
  "platform": "darwin",
78
90
  "arch": "x64",
79
- "runtimeVersion": "0.11.2",
91
+ "runtimeVersion": "0.13.0",
80
92
  "nodeMajor": 26,
81
93
  "nodeModuleAbi": "147",
82
94
  "nodeApiVersion": "10",
83
- "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-darwin-x64-node26-abi147.tar.gz",
84
- "sha256": "13ac533075de6ad5e9b5234f23a5e62bbecb77e18afc444d91192d63a6148258",
85
- "bytes": 111640948,
86
- "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-darwin-x64-node26-abi147.tar.gz.sigstore.json",
87
- "attestationSha256": "b2063412147d156e1583dc97f885c35891a6da389a1bb60d12a4c153852eefc4",
88
- "attestationBytes": 11546,
89
- "metadataSha256": "1c3393f40eb700aa024388a226db6b5588ba2cbf8ff5b3d638358673c49d0f69",
95
+ "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-x64-node26-abi147.tar.gz",
96
+ "sha256": "e51de8150181b803ccfabcd071fed0ee52a3710fb877db3c5f440bca717d23f2",
97
+ "bytes": 115171362,
98
+ "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-x64-node26-abi147.tar.gz.sigstore.json",
99
+ "attestationSha256": "fb33580c42d3fdfefaa0a23e8a9364a16f3bc5265062d44f4808f8b9c8a50461",
100
+ "attestationBytes": 11444,
101
+ "buildProvenanceUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-darwin-x64-node26-abi147.tar.gz.build.sigstore.json",
102
+ "buildProvenanceSha256": "d52293802b97c4e665ad843169b52900c2c4493754dd26d9157860d17faab028",
103
+ "buildProvenanceBytes": 11103,
104
+ "metadataSha256": "1df2a703caa7c6e8d667dca9b05169c003f11bb0de67e41813847bac55e2be31",
90
105
  "nativeToolchain": {
91
106
  "schemaVersion": 1,
92
107
  "builder": "github-hosted:macos-15-intel:macos15:20260720.0353.1:X64",
@@ -116,13 +131,13 @@
116
131
  "xcode": "Xcode 16.4\nBuild version 16F6",
117
132
  "sdk": "15.5"
118
133
  },
119
- "dependencyTreeSha256": "f0e38ec7bd6fce4ce87e9ccfa82ba66b52693430bc9597991e4428aaf7567f4e",
120
- "dependencyPackages": 459,
134
+ "dependencyTreeSha256": "e9ebc879904e9689d0ac629c45a64ad520e79392783f1ce67b33fb6d3266ed15",
135
+ "dependencyPackages": 467,
121
136
  "archiveFormat": "tar+gzip; portable; utf8-byte-order; normalized-mtime",
122
137
  "archiveValidation": {
123
138
  "policy": "agenc-runtime-archive-v1",
124
- "entries": 28856,
125
- "uncompressedBytes": 453013504
139
+ "entries": 29260,
140
+ "uncompressedBytes": 465160192
126
141
  },
127
142
  "minimumMacosVersion": "13.5",
128
143
  "bins": {
@@ -133,20 +148,23 @@
133
148
  {
134
149
  "platform": "linux",
135
150
  "arch": "arm64",
136
- "runtimeVersion": "0.11.2",
151
+ "runtimeVersion": "0.13.0",
137
152
  "nodeMajor": 26,
138
153
  "nodeModuleAbi": "147",
139
154
  "nodeApiVersion": "10",
140
- "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-linux-arm64-node26-abi147.tar.gz",
141
- "sha256": "f3dc6bf5706ee27374759786998279670f20ee776e36956fa8f3227d6032592b",
142
- "bytes": 123368621,
143
- "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-linux-arm64-node26-abi147.tar.gz.sigstore.json",
144
- "attestationSha256": "ac319b5145384742aa0916b880246c3fa41f0e2293a8a58cf08e95fd2f900b6a",
145
- "attestationBytes": 11401,
146
- "metadataSha256": "8ff0b13e01ff446e614cf3c439b8cf224c35434904e3aa29d22b8a41822cc27f",
155
+ "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-arm64-node26-abi147.tar.gz",
156
+ "sha256": "f99ad01fe7e8c28d48536972886d6e74b7b8c81654e53ceb99057c2b13f43332",
157
+ "bytes": 127019738,
158
+ "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-arm64-node26-abi147.tar.gz.sigstore.json",
159
+ "attestationSha256": "57b42f490a9e22c4bc640a6bea72e8d260f100e225b650a81b9fff0023548837",
160
+ "attestationBytes": 11405,
161
+ "buildProvenanceUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-arm64-node26-abi147.tar.gz.build.sigstore.json",
162
+ "buildProvenanceSha256": "b12f43009745aea93e106a11646cb36217b5cc4b06a48fd56f891343e3c1961f",
163
+ "buildProvenanceBytes": 11154,
164
+ "metadataSha256": "7c3b5124baea1964a71c506d64220cd38466a063762ec0ee95d6e8626bb07902",
147
165
  "nativeToolchain": {
148
166
  "schemaVersion": 1,
149
- "builder": "rockylinux@sha256:9794037624aaa6212aeada1d28861ef5e0a935adaf93e4ef79837119f2a2d04c+rpm-content-sha256:3739ba86a1767e0ed5cc94eaf235ae3d1d9709ab45880c7dca366283068f8e19",
167
+ "builder": "rockylinux@sha256:9794037624aaa6212aeada1d28861ef5e0a935adaf93e4ef79837119f2a2d04c+rpm-content-sha256:530821a9904c1d9162750d564d89e7556575df1cbec0a54bd5029076dc58731d",
150
168
  "runnerArch": "ARM64",
151
169
  "cc": "gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-7)",
152
170
  "cxx": "g++ (GCC) 12.2.1 20221121 (Red Hat 12.2.1-7)",
@@ -167,7 +185,7 @@
167
185
  "npmDistributionSha256": "b290bbb35b9e72c3ef84edbe041f28c4479c4d9ee79f555817b8caafe7ce4bba",
168
186
  "rpmContentInventorySchemaVersion": 1,
169
187
  "rpmContentInventoryFormat": "name|epoch|version|release|arch|sha256header|payloaddigest|payloaddigestalgo|rsaheader-pgpsig",
170
- "rpmContentInventorySha256": "3739ba86a1767e0ed5cc94eaf235ae3d1d9709ab45880c7dca366283068f8e19",
188
+ "rpmContentInventorySha256": "530821a9904c1d9162750d564d89e7556575df1cbec0a54bd5029076dc58731d",
171
189
  "rpmSigningKeyIds": [
172
190
  "15af5dac6d745a60"
173
191
  ],
@@ -183,13 +201,13 @@
183
201
  "tar-1.30-11.el8_10"
184
202
  ]
185
203
  },
186
- "dependencyTreeSha256": "0c30dc09aaa3dcd95d71054fdff1d13976c4f6be8c8ef188ba31d67c33e60d58",
187
- "dependencyPackages": 461,
204
+ "dependencyTreeSha256": "522b610453270c1e5e521d504f161f78c4f69636d95e98d3767d131c32a0661b",
205
+ "dependencyPackages": 469,
188
206
  "archiveFormat": "tar+gzip; portable; utf8-byte-order; normalized-mtime",
189
207
  "archiveValidation": {
190
208
  "policy": "agenc-runtime-archive-v1",
191
- "entries": 28875,
192
- "uncompressedBytes": 471250944
209
+ "entries": 29280,
210
+ "uncompressedBytes": 483508224
193
211
  },
194
212
  "libcFamily": "glibc",
195
213
  "minimumGlibcVersion": "2.28",
@@ -204,20 +222,23 @@
204
222
  {
205
223
  "platform": "linux",
206
224
  "arch": "x64",
207
- "runtimeVersion": "0.11.2",
225
+ "runtimeVersion": "0.13.0",
208
226
  "nodeMajor": 26,
209
227
  "nodeModuleAbi": "147",
210
228
  "nodeApiVersion": "10",
211
- "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-linux-x64-node26-abi147.tar.gz",
212
- "sha256": "f72a3dadf3f7bad44bfe952302a976e5b71f34fd8732879acb0db668b661e563",
213
- "bytes": 122720210,
214
- "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-linux-x64-node26-abi147.tar.gz.sigstore.json",
215
- "attestationSha256": "df8f6d55715bdb845442397d7cac94db59198d87186bd0466e5aede888b718c8",
216
- "attestationBytes": 11589,
217
- "metadataSha256": "59aa4021bae66b80972770f0ef1e517297d24b83ec8f8aead7426035788c8116",
229
+ "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-x64-node26-abi147.tar.gz",
230
+ "sha256": "8f555ed4063ee1a9473f220b45c192be9d56669f627619f63ad6f8db53adf20f",
231
+ "bytes": 126636274,
232
+ "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-x64-node26-abi147.tar.gz.sigstore.json",
233
+ "attestationSha256": "44d494d025bf4d4dc944fec1094c97f9133a1b4935c0fbe678283f37f6d21a24",
234
+ "attestationBytes": 11448,
235
+ "buildProvenanceUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-linux-x64-node26-abi147.tar.gz.build.sigstore.json",
236
+ "buildProvenanceSha256": "694ad33bc293ebe076741884d9369f465403614d3d948f4729cf2bc942561a3a",
237
+ "buildProvenanceBytes": 10911,
238
+ "metadataSha256": "11bfeba691b492d9d790c421f91d23d5e89fdba8a70def9a50ab079130b48fa6",
218
239
  "nativeToolchain": {
219
240
  "schemaVersion": 1,
220
- "builder": "rockylinux@sha256:9794037624aaa6212aeada1d28861ef5e0a935adaf93e4ef79837119f2a2d04c+rpm-content-sha256:0cf2f72faf2019701463fabc01a78c0cc893d51b2517fc7f4ce7cd65e76c2b02",
241
+ "builder": "rockylinux@sha256:9794037624aaa6212aeada1d28861ef5e0a935adaf93e4ef79837119f2a2d04c+rpm-content-sha256:a20edbdbf94e00d0e93ce30f04167861f67b3132f388f06d2c5bb44894b6e613",
221
242
  "runnerArch": "X64",
222
243
  "cc": "gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-7)",
223
244
  "cxx": "g++ (GCC) 12.2.1 20221121 (Red Hat 12.2.1-7)",
@@ -238,7 +259,7 @@
238
259
  "npmDistributionSha256": "b290bbb35b9e72c3ef84edbe041f28c4479c4d9ee79f555817b8caafe7ce4bba",
239
260
  "rpmContentInventorySchemaVersion": 1,
240
261
  "rpmContentInventoryFormat": "name|epoch|version|release|arch|sha256header|payloaddigest|payloaddigestalgo|rsaheader-pgpsig",
241
- "rpmContentInventorySha256": "0cf2f72faf2019701463fabc01a78c0cc893d51b2517fc7f4ce7cd65e76c2b02",
262
+ "rpmContentInventorySha256": "a20edbdbf94e00d0e93ce30f04167861f67b3132f388f06d2c5bb44894b6e613",
242
263
  "rpmSigningKeyIds": [
243
264
  "15af5dac6d745a60"
244
265
  ],
@@ -254,13 +275,13 @@
254
275
  "tar-1.30-11.el8_10"
255
276
  ]
256
277
  },
257
- "dependencyTreeSha256": "913b59c11c69d5cf76adf08344b197942979d544734998596866a6d8c8a1e852",
258
- "dependencyPackages": 461,
278
+ "dependencyTreeSha256": "0322cf9654f6a5abc7fdd3c6a2ab2d88adb751a42aef1eb7b699ccf58046abcc",
279
+ "dependencyPackages": 469,
259
280
  "archiveFormat": "tar+gzip; portable; utf8-byte-order; normalized-mtime",
260
281
  "archiveValidation": {
261
282
  "policy": "agenc-runtime-archive-v1",
262
- "entries": 28875,
263
- "uncompressedBytes": 471467008
283
+ "entries": 29280,
284
+ "uncompressedBytes": 484626432
264
285
  },
265
286
  "libcFamily": "glibc",
266
287
  "minimumGlibcVersion": "2.28",
@@ -275,21 +296,24 @@
275
296
  {
276
297
  "platform": "win",
277
298
  "arch": "x64",
278
- "runtimeVersion": "0.11.2",
299
+ "runtimeVersion": "0.13.0",
279
300
  "nodeMajor": 26,
280
301
  "nodeModuleAbi": "147",
281
302
  "nodeApiVersion": "10",
282
- "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-win-x64-node26-abi147.tar.gz",
283
- "sha256": "a7733493f40b681600be2f9298eadcb3bf17bf9bb9d3884ae309b666d23fa0f6",
284
- "bytes": 105885523,
285
- "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.11.2/agenc-runtime-0.11.2-win-x64-node26-abi147.tar.gz.sigstore.json",
286
- "attestationSha256": "1692c6e39f38d10c7a9e6499dad107e20f81984f4058e2d14ae595203f8b5468",
287
- "attestationBytes": 11257,
288
- "metadataSha256": "60b7ad39481cd661349eebc00c3d197136ab502ff68d1bfc8d3353fcd9031925",
303
+ "url": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-win-x64-node26-abi147.tar.gz",
304
+ "sha256": "d37101e2ca68f54007633335e8a0b84d06000e0ce8ce9144923ce4ad8089b079",
305
+ "bytes": 109553706,
306
+ "attestationUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-win-x64-node26-abi147.tar.gz.sigstore.json",
307
+ "attestationSha256": "8e854c214c3846a33684dacae3c54124701099f4873542110622ffd6a3c531e6",
308
+ "attestationBytes": 11444,
309
+ "buildProvenanceUrl": "https://github.com/tetsuo-ai/agenc-releases/releases/download/agenc-v0.13.0/agenc-runtime-0.13.0-win-x64-node26-abi147.tar.gz.build.sigstore.json",
310
+ "buildProvenanceSha256": "952ef68385beea6b89fce1dcbc13e6af8f4e6374f8900a4e9263d1ced7add211",
311
+ "buildProvenanceBytes": 11096,
312
+ "metadataSha256": "4bc8b153b7d75df0939a04bb47774e80e570dd738ff23bbc3e43d1c8d831947a",
289
313
  "nativeToolchain": {
290
314
  "schemaVersion": 1,
291
- "builder": "github-hosted:windows-2025:win25-vs2026:20260714.173.1:X64",
292
- "runnerLabel": "windows-2025",
315
+ "builder": "github-hosted:windows-2025-vs2026:win25-vs2026:20260714.173.1:X64",
316
+ "runnerLabel": "windows-2025-vs2026",
293
317
  "runnerImage": "win25-vs2026",
294
318
  "runnerImageVersion": "20260714.173.1",
295
319
  "runnerArch": "X64",
@@ -327,13 +351,13 @@
327
351
  "msvcCompilerSha256": "dc8426b8760d92cf757df3d10b9f0244a95b454ff43194a58161568a0ec70d53",
328
352
  "msvcLinkerSha256": "e8c524347b8bc87fba790d254c8a3b902bf1a4b63807093b816d992940af3791"
329
353
  },
330
- "dependencyTreeSha256": "53c3d983af300b03669839eb692c1b9807f1b95218a367242f5fe8a4689f7a3b",
331
- "dependencyPackages": 458,
354
+ "dependencyTreeSha256": "c1a68082de5a43c74d9f6fdfb57e700fc405b32a54d409f395178e7da634ffbc",
355
+ "dependencyPackages": 466,
332
356
  "archiveFormat": "tar+gzip; portable; utf8-byte-order; normalized-mtime",
333
357
  "archiveValidation": {
334
358
  "policy": "agenc-runtime-archive-v1",
335
- "entries": 28894,
336
- "uncompressedBytes": 412326912
359
+ "entries": 29299,
360
+ "uncompressedBytes": 425263104
337
361
  },
338
362
  "bins": {
339
363
  "agenc": "node_modules/@tetsuo-ai/runtime/bin/agenc",
@@ -136,6 +136,62 @@ export function renderGeneratedWrapperContent({
136
136
  ].join("\n");
137
137
  }
138
138
 
139
+ // Releases 0.6.2 through 0.10.0 emitted this immutable metadata-v1 shape
140
+ // before standalone installs carried a private Node runtime. Keep the renderer
141
+ // private: it exists only so ownership can be proven by exact full-file
142
+ // reconstruction, never by trusting the historical marker or metadata alone.
143
+ function renderPrePrivateNodeWrapperContent({
144
+ kind,
145
+ nodeBin,
146
+ runtimeBin,
147
+ agencHome,
148
+ }) {
149
+ if (kind !== "posix" && kind !== "cmd") {
150
+ throw new TypeError(`unsupported wrapper kind: ${String(kind)}`);
151
+ }
152
+ const values = { nodeBin, runtimeBin, agencHome };
153
+ validateValues(kind, values);
154
+ const metadata = Buffer.from(JSON.stringify({
155
+ nodeBin,
156
+ runtimeBin,
157
+ agencHome,
158
+ }), "utf8").toString("base64url");
159
+ if (kind === "cmd") {
160
+ const batch = (value) => value.replaceAll("%", "%%");
161
+ return [
162
+ "@echo off",
163
+ "setlocal DisableDelayedExpansion",
164
+ `rem ${CMD_WRAPPER_SIGNATURE} - rewritten on every install/upgrade.`,
165
+ `rem ${WRAPPER_METADATA_PREFIX} ${metadata}`,
166
+ `if not defined AGENC_HOME set "AGENC_HOME=${batch(agencHome)}"`,
167
+ `"${batch(nodeBin)}" "${batch(runtimeBin)}" %*`,
168
+ "",
169
+ ].join("\r\n");
170
+ }
171
+ const quote = (value) => `'${value.replaceAll("'", `'"'"'`)}'`;
172
+ return [
173
+ "#!/bin/sh",
174
+ `# ${POSIX_WRAPPER_SIGNATURE} — rewritten on every install/upgrade.`,
175
+ `# ${WRAPPER_METADATA_PREFIX} ${metadata}`,
176
+ 'if [ -z "${AGENC_HOME:-}" ]; then',
177
+ ` export AGENC_HOME=${quote(agencHome)}`,
178
+ "fi",
179
+ "# Capture one V8 near-heap-limit snapshot unless the operator already configured it.",
180
+ 'case " ${NODE_OPTIONS:-} " in',
181
+ " *heapsnapshot-near-heap-limit*)",
182
+ ` exec ${quote(nodeBin)} ${quote(runtimeBin)} "$@"`,
183
+ " ;;",
184
+ " *)",
185
+ ' mkdir -p "${AGENC_HOME}/oom-snapshots" 2>/dev/null || :',
186
+ ` exec ${quote(nodeBin)} --heapsnapshot-near-heap-limit=1 ` +
187
+ '--diagnostic-dir="${AGENC_HOME}/oom-snapshots" ' +
188
+ `${quote(runtimeBin)} "$@"`,
189
+ " ;;",
190
+ "esac",
191
+ "",
192
+ ].join("\n");
193
+ }
194
+
139
195
  function decodeCanonicalMetadata(encoded) {
140
196
  try {
141
197
  const bytes = Buffer.from(encoded, "base64url");
@@ -178,7 +234,12 @@ function parseModern(path, content) {
178
234
  if (values === undefined) return undefined;
179
235
  try {
180
236
  const wrapper = { kind, path, ...values };
181
- return renderGeneratedWrapperContent(wrapper) === content ? wrapper : undefined;
237
+ if (renderGeneratedWrapperContent(wrapper) === content) return wrapper;
238
+ if (
239
+ values.nodeLibraryPath === undefined &&
240
+ renderPrePrivateNodeWrapperContent(wrapper) === content
241
+ ) return wrapper;
242
+ return undefined;
182
243
  } catch {
183
244
  return undefined;
184
245
  }
@@ -13,6 +13,9 @@ export interface RuntimeReleaseArtifact {
13
13
  readonly attestationUrl?: string;
14
14
  readonly attestationSha256?: string;
15
15
  readonly attestationBytes?: number;
16
+ readonly buildProvenanceUrl?: string;
17
+ readonly buildProvenanceSha256?: string;
18
+ readonly buildProvenanceBytes?: number;
16
19
  readonly bins?: {
17
20
  readonly agenc?: string;
18
21
  readonly node?: string;
@@ -38,6 +41,7 @@ export const OFFICIAL_RELEASE_REPOSITORY: string;
38
41
  export const OFFICIAL_SOURCE_REPOSITORY: string;
39
42
  export const FROZEN_LEGACY_RUNTIME_VERSION: "0.7.2";
40
43
  export const MINIMUM_PRIVATE_NODE_RUNTIME_VERSION: "0.11.2";
44
+ export const MINIMUM_DUAL_PROVENANCE_RUNTIME_VERSION: "0.13.0";
41
45
  export const PRIVATE_NODE_BOOTSTRAP_RELEASE_TAG: "agenc-v0.11.2";
42
46
  export const OFFICIAL_RELEASE_WORKFLOW: string;
43
47
  export const RUNTIME_ATTESTATION_POLICY: Readonly<{
@@ -47,6 +51,14 @@ export const RUNTIME_ATTESTATION_POLICY: Readonly<{
47
51
  oidcIssuer: string;
48
52
  predicateType: string;
49
53
  }>;
54
+ export const RUNTIME_BUILD_PROVENANCE_POLICY: Readonly<{
55
+ repository: string;
56
+ signerWorkflow: string;
57
+ hostname: string;
58
+ oidcIssuer: string;
59
+ predicateType: string;
60
+ sourceRef: "refs/heads/main";
61
+ }>;
50
62
  export const PINNED_GITHUB_CLI_VERSION: string;
51
63
  export const PINNED_GITHUB_CLI_ARTIFACTS: Readonly<Record<string, Readonly<{
52
64
  file: string;
@@ -54,6 +66,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS: Readonly<Record<string, Readonly<{
54
66
  sha256: string;
55
67
  bytes: number;
56
68
  executable: string;
69
+ executableSha256: string;
70
+ executableBytes: number;
57
71
  }>>>;
58
72
  export const RUNTIME_MANIFEST_TRUST_MODES: readonly RuntimeManifestTrustMode[];
59
73
 
@@ -64,6 +78,13 @@ export function canonicalRuntimeAttestationVerificationArgs(options: {
64
78
  readonly sourceRef: string;
65
79
  }): readonly string[];
66
80
 
81
+ export function canonicalRuntimeBuildProvenanceVerificationArgs(options: {
82
+ readonly subjectPath: string;
83
+ readonly bundlePath: string;
84
+ readonly sourceCommit: string;
85
+ readonly sourceRef?: "refs/heads/main";
86
+ }): readonly string[];
87
+
67
88
  export type LocalFileUrlPlatform =
68
89
  | "win"
69
90
  | "win32"
@@ -92,6 +113,26 @@ export function canonicalRuntimeNodeLibrary(platform: string): string | undefine
92
113
 
93
114
  export function requireSupportedRuntimeVersion(version: string): string;
94
115
 
116
+ export function runtimeVersionRequiresDualProvenance(version: string): boolean;
117
+
118
+ export interface RuntimeReleaseCandidateIdentity {
119
+ readonly workflow: "release-runtime.yml";
120
+ readonly runId: number;
121
+ readonly runAttempt: number;
122
+ readonly runUrl: string;
123
+ readonly phase: "candidate";
124
+ readonly sourceRef: "refs/heads/main";
125
+ readonly evidenceSha256: string;
126
+ }
127
+
128
+ export function validateRuntimeReleaseCandidateIdentity<
129
+ T extends RuntimeReleaseCandidateIdentity,
130
+ >(
131
+ value: T | undefined,
132
+ sourceCommit: unknown,
133
+ options?: { readonly required?: boolean },
134
+ ): T | undefined;
135
+
95
136
  export function canonicalLocalFileUrlToPath(
96
137
  value: string,
97
138
  platform?: LocalFileUrlPlatform,
@@ -12,6 +12,7 @@ export const OFFICIAL_RELEASE_REPOSITORY = "tetsuo-ai/agenc-releases";
12
12
  export const OFFICIAL_SOURCE_REPOSITORY = "tetsuo-ai/agenc-core";
13
13
  export const FROZEN_LEGACY_RUNTIME_VERSION = "0.7.2";
14
14
  export const MINIMUM_PRIVATE_NODE_RUNTIME_VERSION = "0.11.2";
15
+ export const MINIMUM_DUAL_PROVENANCE_RUNTIME_VERSION = "0.13.0";
15
16
  export const PRIVATE_NODE_BOOTSTRAP_RELEASE_TAG =
16
17
  `agenc-v${MINIMUM_PRIVATE_NODE_RUNTIME_VERSION}`;
17
18
  export const OFFICIAL_RELEASE_WORKFLOW =
@@ -23,6 +24,10 @@ export const RUNTIME_ATTESTATION_POLICY = Object.freeze({
23
24
  oidcIssuer: "https://token.actions.githubusercontent.com",
24
25
  predicateType: "https://slsa.dev/provenance/v1",
25
26
  });
27
+ export const RUNTIME_BUILD_PROVENANCE_POLICY = Object.freeze({
28
+ ...RUNTIME_ATTESTATION_POLICY,
29
+ sourceRef: "refs/heads/main",
30
+ });
26
31
  export const PINNED_GITHUB_CLI_VERSION = "2.96.0";
27
32
  export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
28
33
  "linux-x64": Object.freeze({
@@ -31,6 +36,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
31
36
  sha256: "83d5c2ccad5498f58bf6368acb1ab32588cf43ab3a4b1c301bf36328b1c8bd60",
32
37
  bytes: 14652560,
33
38
  executable: "gh_2.96.0_linux_amd64/bin/gh",
39
+ executableSha256: "56b8bbbb27b066ecb33dbef9a256dc9d1314adaeff0908a752feba6c34053b40",
40
+ executableBytes: 40722594,
34
41
  }),
35
42
  "linux-arm64": Object.freeze({
36
43
  file: "gh_2.96.0_linux_arm64.tar.gz",
@@ -38,6 +45,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
38
45
  sha256: "06f86ec7103d41993b76cd78072f43595c34aaa56506d971d9860e67140bf909",
39
46
  bytes: 13321232,
40
47
  executable: "gh_2.96.0_linux_arm64/bin/gh",
48
+ executableSha256: "f903d2fa04ae78ee8f8df0186364d0b92f078d2720053941a47e0a3beaef54f0",
49
+ executableBytes: 37879970,
41
50
  }),
42
51
  "darwin-x64": Object.freeze({
43
52
  file: "gh_2.96.0_macOS_amd64.zip",
@@ -45,6 +54,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
45
54
  sha256: "4bd449df9ad639391bc62b8032546f0fe9edcd8526e06682a4f88abd8c5d163c",
46
55
  bytes: 15298430,
47
56
  executable: "gh_2.96.0_macOS_amd64/bin/gh",
57
+ executableSha256: "49380b19e758c14ce5509afe0ced58777fe45cfbcd5989941f7314d5f7e468c8",
58
+ executableBytes: 41773632,
48
59
  }),
49
60
  "darwin-arm64": Object.freeze({
50
61
  file: "gh_2.96.0_macOS_arm64.zip",
@@ -52,6 +63,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
52
63
  sha256: "f23a0c37d963aacc3bed703ccbd59b41c5ca22101fab7f00eb2b7cad23aba463",
53
64
  bytes: 13950131,
54
65
  executable: "gh_2.96.0_macOS_arm64/bin/gh",
66
+ executableSha256: "b1d6c442fde99ca27c04e1e74d624895abe37785f4a3e9e9b684bf7586ce4bc8",
67
+ executableBytes: 38817216,
55
68
  }),
56
69
  "win-x64": Object.freeze({
57
70
  file: "gh_2.96.0_windows_amd64.zip",
@@ -59,6 +72,8 @@ export const PINNED_GITHUB_CLI_ARTIFACTS = Object.freeze({
59
72
  sha256: "c2d6acc935cd2f00e2144d7e036d5cd82e6b6bd5594e8c75aa75ef2a4ed6aac3",
60
73
  bytes: 14821821,
61
74
  executable: "gh_2.96.0_windows_amd64/bin/gh.exe",
75
+ executableSha256: "cd79f16203f1fbe56937c4c96e2b6eadd10549418dcb241d91576ac77af0ac8b",
76
+ executableBytes: 41504056,
62
77
  }),
63
78
  });
64
79
  export const RUNTIME_MANIFEST_TRUST_MODES = Object.freeze([
@@ -69,17 +84,19 @@ export const RUNTIME_MANIFEST_TRUST_MODES = Object.freeze([
69
84
 
70
85
  const TRUST_MODES = new Set(RUNTIME_MANIFEST_TRUST_MODES);
71
86
 
72
- export function canonicalRuntimeAttestationVerificationArgs({
87
+ function canonicalRuntimeProvenanceVerificationArgs({
73
88
  subjectPath,
74
89
  bundlePath,
75
90
  sourceCommit,
76
91
  sourceRef,
92
+ sourceRefPattern,
93
+ sourceRefError,
77
94
  }) {
78
95
  if (!/^[0-9a-f]{40,64}$/.test(sourceCommit ?? "")) {
79
96
  throw new Error("runtime attestation policy requires an exact source commit");
80
97
  }
81
- if (typeof sourceRef !== "string" || !sourceRef.startsWith("refs/tags/agenc-v")) {
82
- throw new Error("runtime attestation policy requires the canonical release source ref");
98
+ if (typeof sourceRef !== "string" || !sourceRefPattern.test(sourceRef)) {
99
+ throw new Error(sourceRefError);
83
100
  }
84
101
  return [
85
102
  "attestation",
@@ -107,6 +124,40 @@ export function canonicalRuntimeAttestationVerificationArgs({
107
124
  ];
108
125
  }
109
126
 
127
+ export function canonicalRuntimeAttestationVerificationArgs({
128
+ subjectPath,
129
+ bundlePath,
130
+ sourceCommit,
131
+ sourceRef,
132
+ }) {
133
+ return canonicalRuntimeProvenanceVerificationArgs({
134
+ subjectPath,
135
+ bundlePath,
136
+ sourceCommit,
137
+ sourceRef,
138
+ sourceRefPattern: /^refs\/tags\/agenc-v[0-9]+\.[0-9]+\.[0-9]+$/,
139
+ sourceRefError:
140
+ "runtime attestation policy requires the canonical release source ref",
141
+ });
142
+ }
143
+
144
+ export function canonicalRuntimeBuildProvenanceVerificationArgs({
145
+ subjectPath,
146
+ bundlePath,
147
+ sourceCommit,
148
+ sourceRef = RUNTIME_BUILD_PROVENANCE_POLICY.sourceRef,
149
+ }) {
150
+ return canonicalRuntimeProvenanceVerificationArgs({
151
+ subjectPath,
152
+ bundlePath,
153
+ sourceCommit,
154
+ sourceRef,
155
+ sourceRefPattern: /^refs\/heads\/main$/,
156
+ sourceRefError:
157
+ "runtime build provenance policy requires the canonical main source ref",
158
+ });
159
+ }
160
+
110
161
  export function requireRuntimeManifestTrustMode(trustMode) {
111
162
  if (!TRUST_MODES.has(trustMode)) {
112
163
  throw new Error(`agenc: unsupported runtime manifest trust mode ${String(trustMode)}`);
@@ -162,6 +213,57 @@ export function requireSupportedRuntimeVersion(version) {
162
213
  return version;
163
214
  }
164
215
 
216
+ export function runtimeVersionRequiresDualProvenance(version) {
217
+ requireSupportedRuntimeVersion(version);
218
+ if (version === FROZEN_LEGACY_RUNTIME_VERSION) return false;
219
+ const actual = version.split("-", 1)[0].split(".").map(Number);
220
+ const minimum = MINIMUM_DUAL_PROVENANCE_RUNTIME_VERSION.split(".").map(Number);
221
+ for (let index = 0; index < minimum.length; index += 1) {
222
+ if (actual[index] > minimum[index]) return true;
223
+ if (actual[index] < minimum[index]) return false;
224
+ }
225
+ return true;
226
+ }
227
+
228
+ const RUNTIME_RELEASE_CANDIDATE_KEYS = Object.freeze([
229
+ "workflow",
230
+ "runId",
231
+ "runAttempt",
232
+ "runUrl",
233
+ "phase",
234
+ "sourceRef",
235
+ "evidenceSha256",
236
+ ]);
237
+
238
+ export function validateRuntimeReleaseCandidateIdentity(
239
+ value,
240
+ sourceCommit,
241
+ { required = false } = {},
242
+ ) {
243
+ if (value === undefined && !required) return undefined;
244
+ if (
245
+ value === null ||
246
+ typeof value !== "object" ||
247
+ Array.isArray(value) ||
248
+ Object.keys(value).sort().join("\0") !==
249
+ [...RUNTIME_RELEASE_CANDIDATE_KEYS].sort().join("\0") ||
250
+ value.workflow !== "release-runtime.yml" ||
251
+ !Number.isSafeInteger(value.runId) ||
252
+ value.runId <= 0 ||
253
+ !Number.isSafeInteger(value.runAttempt) ||
254
+ value.runAttempt <= 0 ||
255
+ value.runUrl !==
256
+ `https://github.com/tetsuo-ai/agenc-core/actions/runs/${value.runId}` ||
257
+ value.phase !== "candidate" ||
258
+ value.sourceRef !== RUNTIME_BUILD_PROVENANCE_POLICY.sourceRef ||
259
+ !/^[0-9a-f]{64}$/.test(value.evidenceSha256 ?? "") ||
260
+ !/^[0-9a-f]{40}$/.test(sourceCommit ?? "")
261
+ ) {
262
+ throw new Error("agenc: runtime release candidate identity is invalid");
263
+ }
264
+ return value;
265
+ }
266
+
165
267
  function localFileUrlUsesWindowsPaths(platform) {
166
268
  if (platform === "win" || platform === "win32") return true;
167
269
  if (
@@ -281,7 +383,10 @@ function validateArtifactUrl(manifest, artifact, trustMode) {
281
383
  if (
282
384
  artifact.attestationUrl !== undefined ||
283
385
  artifact.attestationSha256 !== undefined ||
284
- artifact.attestationBytes !== undefined
386
+ artifact.attestationBytes !== undefined ||
387
+ artifact.buildProvenanceUrl !== undefined ||
388
+ artifact.buildProvenanceSha256 !== undefined ||
389
+ artifact.buildProvenanceBytes !== undefined
285
390
  ) {
286
391
  throw new Error("agenc: explicit local runtime artifacts must not declare remote attestations");
287
392
  }
@@ -315,6 +420,31 @@ function validateArtifactUrl(manifest, artifact, trustMode) {
315
420
  throw new Error("agenc: runtime artifact attestation size is invalid");
316
421
  }
317
422
  }
423
+ const hasBuildProvenance =
424
+ artifact.buildProvenanceUrl !== undefined ||
425
+ artifact.buildProvenanceSha256 !== undefined ||
426
+ artifact.buildProvenanceBytes !== undefined;
427
+ if (
428
+ (
429
+ trustMode === "official" &&
430
+ runtimeVersionRequiresDualProvenance(manifest.runtimeVersion)
431
+ ) ||
432
+ hasBuildProvenance
433
+ ) {
434
+ if (artifact.buildProvenanceUrl !== `${artifact.url}.build.sigstore.json`) {
435
+ throw new Error("agenc: runtime artifact build provenance URL is not canonical");
436
+ }
437
+ if (!/^[0-9a-f]{64}$/.test(artifact.buildProvenanceSha256 ?? "")) {
438
+ throw new Error("agenc: runtime artifact build provenance digest is invalid");
439
+ }
440
+ if (
441
+ !Number.isSafeInteger(artifact.buildProvenanceBytes) ||
442
+ artifact.buildProvenanceBytes <= 0 ||
443
+ artifact.buildProvenanceBytes > MAX_RUNTIME_ATTESTATION_BYTES
444
+ ) {
445
+ throw new Error("agenc: runtime artifact build provenance size is invalid");
446
+ }
447
+ }
318
448
  }
319
449
 
320
450
  export function validateRuntimeReleaseManifest(
@@ -427,6 +557,15 @@ export function validateRuntimeReleaseManifest(
427
557
  ) {
428
558
  throw new Error("agenc: runtime manifest build provenance is invalid");
429
559
  }
560
+ validateRuntimeReleaseCandidateIdentity(
561
+ build.releaseCandidate,
562
+ build.sourceCommit,
563
+ {
564
+ required:
565
+ trustMode === "official" &&
566
+ runtimeVersionRequiresDualProvenance(manifest.runtimeVersion),
567
+ },
568
+ );
430
569
  for (const artifact of manifest.artifacts) {
431
570
  if (
432
571
  artifact.nodeMajor !== build.nodeMajor ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tetsuo-ai/agenc",
3
- "version": "0.11.2",
3
+ "version": "0.13.0",
4
4
  "description": "Public AgenC CLI launcher package",
5
5
  "license": "MIT",
6
6
  "type": "module",