create-principles-disciple 1.144.7 → 1.144.9
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/_release/product-identity.json +1 -1
- package/core/dist/runtime-v2/activation/index.d.ts +1 -1
- package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts +39 -2
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js +71 -8
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +5 -2
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +1 -1
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +28 -0
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +9 -0
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/dist/trajectory-store.d.ts +24 -0
- package/core/dist/trajectory-store.d.ts.map +1 -1
- package/core/dist/trajectory-store.js +40 -0
- package/core/dist/trajectory-store.js.map +1 -1
- package/core/package.json +1 -1
- package/dist/update/apply-payload.d.ts +28 -0
- package/dist/update/apply-payload.d.ts.map +1 -1
- package/dist/update/apply-payload.js +121 -27
- package/dist/update/apply-payload.js.map +1 -1
- package/dist/update/release-metadata.d.ts.map +1 -1
- package/dist/update/release-metadata.js +35 -7
- package/dist/update/release-metadata.js.map +1 -1
- package/host-runtime/dist/active-principle-prompt.d.ts +17 -1
- package/host-runtime/dist/active-principle-prompt.js +42 -3
- package/host-runtime/dist/index.js +18 -0
- package/host-runtime/package.json +1 -1
- package/package.json +1 -1
- package/plugin/dist/bundle.js +452 -452
- package/plugin/dist/governance-audit.js +1 -1
- package/plugin/dist/openclaw.plugin.json +1 -1
- package/release-manager/dist/update/apply-payload.d.ts +28 -0
- package/release-manager/dist/update/apply-payload.d.ts.map +1 -1
- package/release-manager/dist/update/apply-payload.js +121 -27
- package/release-manager/dist/update/apply-payload.js.map +1 -1
- package/release-manager/dist/update/release-metadata.d.ts.map +1 -1
- package/release-manager/dist/update/release-metadata.js +35 -7
- package/release-manager/dist/update/release-metadata.js.map +1 -1
- package/release-manager/package.json +1 -1
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* ~/.pd/staging/<transactionId>/release-asset.tar.gz (verified download)
|
|
10
10
|
* ~/.pd/staging/<transactionId>/payload/ (extracted payload)
|
|
11
11
|
*
|
|
12
|
+
* A verified download is published onto the first path by rename: the bytes
|
|
13
|
+
* first land in a private `release-asset-<uuid>-<releaseId>.tar.gz.part`
|
|
14
|
+
* candidate in that same directory (PRI-927), which never outlives the call.
|
|
15
|
+
*
|
|
12
16
|
* Deployment writes (~/.pd/runtime, host extension dirs) belong exclusively
|
|
13
17
|
* to the installer; this module never touches them (ADR-0023 Decision 1,
|
|
14
18
|
* ADR-0024 §2.1). release-manager.ts itself stays free of filesystem
|
|
@@ -31,7 +35,7 @@
|
|
|
31
35
|
* stays off in production until it does.
|
|
32
36
|
*/
|
|
33
37
|
import { execFileSync } from 'node:child_process';
|
|
34
|
-
import { createHash } from 'node:crypto';
|
|
38
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
35
39
|
import * as fs from 'node:fs';
|
|
36
40
|
import * as path from 'node:path';
|
|
37
41
|
import { resolveTrustedReleaseTarget, downloadTrustedReleasePayload, } from './trust-metadata.js';
|
|
@@ -86,8 +90,9 @@ export function legacyReleaseAssetTargetPath(releaseId, asset) {
|
|
|
86
90
|
/**
|
|
87
91
|
* PRI-854 (option A): fetch the asset from its signed delivery URL and verify
|
|
88
92
|
* the sha256 (and declared size) BEFORE the bytes are considered acquired.
|
|
89
|
-
*
|
|
90
|
-
*
|
|
93
|
+
* PRI-927: only an **https** URL is accepted, and verified bytes are published
|
|
94
|
+
* to the canonical name by an atomic rename out of a private candidate file —
|
|
95
|
+
* see the two Owner-decision notes inside.
|
|
91
96
|
*
|
|
92
97
|
* PRI-924: the acquisition is a transport with a bounded retry, not a
|
|
93
98
|
* single-shot gamble. A ~200MB asset over a CDN that resets connections was
|
|
@@ -97,42 +102,101 @@ export function legacyReleaseAssetTargetPath(releaseId, asset) {
|
|
|
97
102
|
* corrupt or substituted candidate is never re-drawn until it looks right.
|
|
98
103
|
*/
|
|
99
104
|
const ASSET_DOWNLOAD_ATTEMPTS = 3;
|
|
105
|
+
/** PRI-927: https is re-checked per hop, so a redirect chain must be bounded. */
|
|
106
|
+
const ASSET_REDIRECT_HOPS = 5;
|
|
100
107
|
function isRetriableHttpStatus(status) {
|
|
101
108
|
// 4xx = the carrier refuses on its face (404: not published) — retrying
|
|
102
109
|
// re-asks a stable answer. Server-side and rate-limit codes are transient.
|
|
103
110
|
return status === 408 || status === 429 || status >= 500;
|
|
104
111
|
}
|
|
105
|
-
|
|
106
|
-
|
|
112
|
+
/** Undefined for a value no transport could resolve; the caller refuses those. */
|
|
113
|
+
function parseAssetUrl(value) {
|
|
107
114
|
try {
|
|
108
|
-
|
|
115
|
+
return new URL(value);
|
|
109
116
|
}
|
|
110
117
|
catch {
|
|
111
|
-
|
|
118
|
+
return undefined;
|
|
112
119
|
}
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
}
|
|
121
|
+
/** A Location header resolved against the hop that sent it; undefined if unusable. */
|
|
122
|
+
function resolveRedirectTarget(location, from) {
|
|
123
|
+
try {
|
|
124
|
+
return parseAssetUrl(new URL(location, from).href);
|
|
115
125
|
}
|
|
126
|
+
catch {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Redirect statuses whose Location header must be re-gated before the next request. */
|
|
131
|
+
function isRedirectStatus(status) {
|
|
132
|
+
return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
|
|
133
|
+
}
|
|
134
|
+
export async function downloadAndVerifyAssetFile(input) {
|
|
135
|
+
// PRI-927 (Owner decision): HTTPS-only, no warning mode and no insecure
|
|
136
|
+
// override. The signed sha256+size below is the trust anchor, so a plaintext
|
|
137
|
+
// carrier cannot substitute bytes — but it can corrupt every delivery and
|
|
138
|
+
// turn the update into a permanent, unrecoverable failure. Refusing the
|
|
139
|
+
// protocol is the availability fix, and it runs BEFORE any transport call.
|
|
140
|
+
//
|
|
141
|
+
// The test lives in THIS scope, on the URL object the transport is handed,
|
|
142
|
+
// not behind a shared helper: an insecure carrier has to be refused where it
|
|
143
|
+
// would actually be opened, which is also where the analyzer watching this
|
|
144
|
+
// boundary looks (CodeQL js/insecure-download reported the fetch call itself
|
|
145
|
+
// while the policy sat in a cross-module predicate). The signed-document
|
|
146
|
+
// parser applies the same 'https:' policy to the same field before this
|
|
147
|
+
// function can be reached; both sides are pinned by their own tests.
|
|
148
|
+
const assetUrl = parseAssetUrl(input.url);
|
|
149
|
+
if (assetUrl === undefined || assetUrl.protocol !== 'https:') {
|
|
150
|
+
throw new ApplyPayloadError('release_metadata_invalid', `Asset URL must be an https URL: ${input.url}`, 'Do not install this release. The signed release metadata names a non-HTTPS asset URL; refresh it from the official repository.');
|
|
151
|
+
}
|
|
152
|
+
const fetchAsset = input.fetcher ?? globalThis.fetch;
|
|
116
153
|
const sleep = input.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
117
154
|
fs.mkdirSync(path.dirname(input.destinationPath), { recursive: true });
|
|
118
155
|
let bytes;
|
|
119
156
|
for (let attempt = 1;; attempt += 1) {
|
|
120
157
|
try {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
158
|
+
let target = assetUrl;
|
|
159
|
+
for (let hop = 0;; hop += 1) {
|
|
160
|
+
const response = await fetchAsset(target.href, { redirect: 'manual' });
|
|
161
|
+
if (isRedirectStatus(response.status)) {
|
|
162
|
+
// PRI-927 review (Owner): the carrier contract is https on EVERY hop,
|
|
163
|
+
// so the chain is stepped here rather than by `redirect: 'follow'`.
|
|
164
|
+
// Handing it to the transport lets a signed https URL that answers
|
|
165
|
+
// 302 → http://… carry the payload in plaintext before this function
|
|
166
|
+
// ever sees a byte. 'manual' is the only mode on globalThis.fetch
|
|
167
|
+
// whose 3xx response still exposes Location (undici does not apply
|
|
168
|
+
// the opaque-redirect filtering), so this is what the gate can check.
|
|
169
|
+
const location = response.headers.get('location');
|
|
170
|
+
// A redirect's body is not the payload either: release its connection
|
|
171
|
+
// before asking the next hop.
|
|
172
|
+
await response.body?.cancel();
|
|
173
|
+
const next = location === null ? undefined : resolveRedirectTarget(location, target);
|
|
174
|
+
if (next === undefined || next.protocol !== 'https:') {
|
|
175
|
+
throw new ApplyPayloadError('release_metadata_invalid', `Asset redirect #${hop + 1} is not an https URL: ${location ?? '(missing Location header)'}`, 'Do not install this release. Its delivery path leaves HTTPS; refresh the signed metadata from the official repository.');
|
|
176
|
+
}
|
|
177
|
+
if (hop >= ASSET_REDIRECT_HOPS) {
|
|
178
|
+
throw new ApplyPayloadError('metadata_refresh_failed', `Asset delivery exceeded ${ASSET_REDIRECT_HOPS} https redirects for ${input.url}.`, 'Nothing was deployed. Retry the update; a redirect loop is a carrier fault, not a signed-metadata one.');
|
|
179
|
+
}
|
|
180
|
+
target = next;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (!response.ok) {
|
|
184
|
+
// A rejected response is not the payload: release its connection now
|
|
185
|
+
// instead of parking it until GC, or three attempts per call across
|
|
186
|
+
// repeated applies would accumulate sockets.
|
|
187
|
+
await response.body?.cancel();
|
|
188
|
+
const detail = `Asset download failed: HTTP ${response.status} for ${target.href}`;
|
|
189
|
+
if (!isRetriableHttpStatus(response.status) || attempt >= ASSET_DOWNLOAD_ATTEMPTS) {
|
|
190
|
+
throw new ApplyPayloadError('metadata_refresh_failed', detail, 'Verify that the release pipeline published this release asset, then retry.');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
bytes = Buffer.from(await response.arrayBuffer());
|
|
130
195
|
}
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
bytes = Buffer.from(await response.arrayBuffer());
|
|
134
196
|
break;
|
|
135
197
|
}
|
|
198
|
+
if (bytes !== undefined)
|
|
199
|
+
break;
|
|
136
200
|
}
|
|
137
201
|
catch (error) {
|
|
138
202
|
// Trust-anchor refusals and terminal transport verdicts escape as-is.
|
|
@@ -154,11 +218,40 @@ export async function downloadAndVerifyAssetFile(input) {
|
|
|
154
218
|
if (input.expectedSizeBytes !== undefined && size !== input.expectedSizeBytes) {
|
|
155
219
|
throw new ApplyPayloadError('release_metadata_invalid', `Asset size ${size} disagrees with the signed size ${input.expectedSizeBytes}.`, 'The release repository is inconsistent; wait for refreshed signed metadata.');
|
|
156
220
|
}
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
|
|
221
|
+
// PRI-927 (Owner decision: fix, do not dismiss): network bytes never reach
|
|
222
|
+
// the canonical name in an unverified or predictable form. The verified bytes
|
|
223
|
+
// go to an unguessable, exclusively-created candidate in the SAME staging
|
|
224
|
+
// transaction directory (same filesystem, so the publish step below is an
|
|
225
|
+
// atomic rename), and only that candidate is renamed onto the canonical
|
|
226
|
+
// path. This is the discipline the TUF branch already followed
|
|
227
|
+
// (trust-metadata.ts downloadTrustedReleasePayload), reused rather than
|
|
228
|
+
// reinvented; the size re-check is on the file that actually landed, so a
|
|
229
|
+
// short write can never be published. Every failure removes the candidate.
|
|
230
|
+
const candidatePath = path.join(path.dirname(input.destinationPath), `release-asset-${randomUUID()}-${input.releaseId.slice(0, 12)}.tar.gz.part`);
|
|
231
|
+
try {
|
|
232
|
+
fs.writeFileSync(candidatePath, bytes, { mode: 0o600, flag: 'wx' });
|
|
233
|
+
const landedBytes = fs.statSync(candidatePath).size;
|
|
234
|
+
if (input.expectedSizeBytes !== undefined && landedBytes !== input.expectedSizeBytes) {
|
|
235
|
+
throw new ApplyPayloadError('metadata_refresh_failed', `The staged asset file is ${landedBytes} bytes, disagreeing with the signed size ${input.expectedSizeBytes}.`, 'Nothing was deployed; the runtime is unchanged. Retry the update.');
|
|
236
|
+
}
|
|
237
|
+
fs.renameSync(candidatePath, input.destinationPath);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
// The candidate is garbage the moment anything below it fails; staging
|
|
241
|
+
// recycle (PRI-924) owns the directory, this owns only its own file.
|
|
242
|
+
// Windows can hold a just-written file (EBUSY/EPERM, ERR-071), and a
|
|
243
|
+
// cleanup error must never replace the acquisition error: the leftover
|
|
244
|
+
// keeps an unguessable name inside a directory this transaction owns.
|
|
245
|
+
try {
|
|
246
|
+
fs.rmSync(candidatePath, { force: true });
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
/* ignored on purpose — the real failure is the one being reported */
|
|
250
|
+
}
|
|
251
|
+
if (error instanceof ApplyPayloadError)
|
|
252
|
+
throw error;
|
|
253
|
+
throw new ApplyPayloadError('metadata_refresh_failed', `The verified release asset could not be staged: ${error instanceof Error ? error.message : String(error)}`, 'Nothing was deployed; the runtime is unchanged. Check disk space and permissions under the PD staging area, then retry.');
|
|
254
|
+
}
|
|
162
255
|
}
|
|
163
256
|
/**
|
|
164
257
|
* Acquires the release asset for THIS runtime (PRI-854, two transports):
|
|
@@ -170,7 +263,7 @@ export async function downloadAndVerifyAssetFile(input) {
|
|
|
170
263
|
* Zero deployment writes happen before every identity check has passed.
|
|
171
264
|
*/
|
|
172
265
|
export async function downloadReleaseAsset(options) {
|
|
173
|
-
const { paths, metadataBaseUrl, fetcher, releaseMetadata, channel, transactionId } = options;
|
|
266
|
+
const { paths, metadataBaseUrl, fetcher, assetFetcher, releaseMetadata, channel, transactionId } = options;
|
|
174
267
|
const asset = selectReleaseAsset(releaseMetadata);
|
|
175
268
|
// PRI-854 (option A): the signed metadata carries the asset's delivery URL —
|
|
176
269
|
// fetch it directly and enforce the signed sha256+size. The digest check is
|
|
@@ -184,6 +277,7 @@ export async function downloadReleaseAsset(options) {
|
|
|
184
277
|
expectedSha256: asset.archiveSha256,
|
|
185
278
|
expectedSizeBytes: asset.archiveSizeBytes,
|
|
186
279
|
releaseId: releaseMetadata.releaseId,
|
|
280
|
+
fetcher: assetFetcher,
|
|
187
281
|
});
|
|
188
282
|
const syntheticTarget = {
|
|
189
283
|
artifactSha256: asset.archiveSha256,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-payload.js","sourceRoot":"","sources":["../../src/update/apply-payload.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apply-payload.js","sourceRoot":"","sources":["../../src/update/apply-payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-metadata.d.ts","sourceRoot":"","sources":["../../src/update/release-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,GAAG;QAChD,oEAAoE;QACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,EAAE,CAAC;IACL,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;KAChD,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAChC,0BAA0B,GAC1B,oCAAoC,CAAC;AAEzC,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAKzE;CACF;
|
|
1
|
+
{"version":3,"file":"release-metadata.d.ts","sourceRoot":"","sources":["../../src/update/release-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,GAAG;QAChD,oEAAoE;QACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,EAAE,CAAC;IACL,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;KAChD,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAChC,0BAA0B,GAC1B,oCAAoC,CAAC;AAEzC,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAKzE;CACF;AA2DD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA6FpE;AAgBD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAsB7E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAEnG;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxC,6BAA6B,EAAE,MAAM,CAAC;CACvC,GAAG,eAAe,CAkBlB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAS1E"}
|
|
@@ -46,6 +46,35 @@ function parsePositiveInteger(value, field) {
|
|
|
46
46
|
}
|
|
47
47
|
return value;
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* PRI-927 (Owner decision): release ASSET bytes are delivered over TLS only —
|
|
51
|
+
* no plaintext carrier, no warning mode, no override. A plaintext carrier cannot
|
|
52
|
+
* forge the signed sha256, but it can poison every attempt into a permanent
|
|
53
|
+
* update failure, so the protocol is refused rather than tolerated.
|
|
54
|
+
*
|
|
55
|
+
* This is the policy on the SIGNED-DOCUMENT surface: a metadata file that names
|
|
56
|
+
* an http asset URL never becomes a parsed release, so nothing downstream can
|
|
57
|
+
* act on it. The download gate in apply-payload.ts re-tests the protocol where
|
|
58
|
+
* the carrier is opened, because that is the scope an insecure fetch would
|
|
59
|
+
* happen in — the same 'https:' decision on two different surfaces, not a
|
|
60
|
+
* second authority. It tests `URL.protocol` rather than a scheme prefix regex:
|
|
61
|
+
* the URL parser is the same authority `fetch` resolves against, so the gate
|
|
62
|
+
* and the transport cannot disagree about what a scheme prefix means
|
|
63
|
+
* (`https:example.com/a.tar.gz` is not a malformed URL — the parser recovers it
|
|
64
|
+
* into host `example.com`, and that is exactly what `fetch` would then request).
|
|
65
|
+
* A successful parse of a special scheme always yields a non-empty host, so no
|
|
66
|
+
* separate host check is possible here.
|
|
67
|
+
*/
|
|
68
|
+
function isSignedAssetUrl(value) {
|
|
69
|
+
if (typeof value !== 'string')
|
|
70
|
+
return false;
|
|
71
|
+
try {
|
|
72
|
+
return new URL(value).protocol === 'https:';
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
49
78
|
/**
|
|
50
79
|
* Field-by-field strict parse. Rejects unknown top-level fields so a future
|
|
51
80
|
* schema change fails loud instead of silently dropping meaning.
|
|
@@ -95,16 +124,15 @@ export function parseReleaseMetadata(value) {
|
|
|
95
124
|
throw new ReleaseMetadataError('release_metadata_invalid', 'assets', `assets[${index}] contains unknown field "${key}"`);
|
|
96
125
|
}
|
|
97
126
|
}
|
|
98
|
-
let
|
|
127
|
+
let deliveryUrl;
|
|
99
128
|
if (Object.hasOwn(asset, 'url')) {
|
|
100
129
|
// PRI-854 (option A): the byte carrier is a GitHub Release attachment —
|
|
101
130
|
// the URL is part of the SIGNED document while sha256+size bind the
|
|
102
|
-
// bytes.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
throw new ReleaseMetadataError('release_metadata_invalid', 'assets', `assets[${index}].url must be an http(s) URL, got: ${JSON.stringify(rawUrl)}`);
|
|
131
|
+
// bytes. PRI-927: only https is accepted (see isSignedAssetUrl).
|
|
132
|
+
if (!isSignedAssetUrl(asset.url)) {
|
|
133
|
+
throw new ReleaseMetadataError('release_metadata_invalid', 'assets', `assets[${index}].url must be an https URL, got: ${JSON.stringify(asset.url)}`);
|
|
106
134
|
}
|
|
107
|
-
|
|
135
|
+
deliveryUrl = asset.url;
|
|
108
136
|
}
|
|
109
137
|
return {
|
|
110
138
|
platform: requireOwn(asset, 'platform'),
|
|
@@ -112,7 +140,7 @@ export function parseReleaseMetadata(value) {
|
|
|
112
140
|
nodeAbi: requireOwn(asset, 'nodeAbi'),
|
|
113
141
|
archiveSha256: requireOwn(asset, 'archiveSha256'),
|
|
114
142
|
archiveSizeBytes: requireOwn(asset, 'archiveSizeBytes'),
|
|
115
|
-
...(
|
|
143
|
+
...(deliveryUrl !== undefined ? { url: deliveryUrl } : {}),
|
|
116
144
|
};
|
|
117
145
|
});
|
|
118
146
|
// The identity validator inside deriveReleaseId re-checks every asset field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-metadata.js","sourceRoot":"","sources":["../../src/update/release-metadata.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"release-metadata.js","sourceRoot":"","sources":["../../src/update/release-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAwBjD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAA2B;IAC/B,KAAK,CAAS;IAEvB,YAAY,IAA8B,EAAE,KAAa,EAAE,OAAe;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,MAA+B,EAAE,KAAa;IAChE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,EAAE,+CAA+C,KAAK,GAAG,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAG,KAAK,uDAAuD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5J,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAG,KAAK,yBAAyB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,KAAa;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAG,KAAK,0CAA0C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/I,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,MAAM,EAAE,wCAAwC,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1D,IAAI,aAAa,KAAK,+BAA+B,EAAE,CAAC;QACtD,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,eAAe,EAAE,+CAA+C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC9J,CAAC;IAED,MAAM,EAAC,cAAc,EAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,CAAC,cAAc,CAAC;IACjI,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC/F,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACnH,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/D,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,eAAe,EAAE,iCAAiC,CAAC,CAAC;IACjH,CAAC;IACD,MAAM,6BAA6B,GAAG,UAAU,CAAC,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;IACtG,mBAAmB,CAAC,6BAA6B,EAAE,6CAA6C,CAAC,CAAC;IAElG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB;QAChF,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe;KACrF,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,GAAG,EAAE,4CAA4C,GAAG,GAAG,CAAC,CAAC;QACtH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,UAAU,KAAK,qBAAqB,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;QACvG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,UAAU,KAAK,6BAA6B,GAAG,GAAG,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;QACD,IAAI,WAA+B,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,wEAAwE;YACxE,oEAAoE;YACpE,iEAAiE;YACjE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,UAAU,KAAK,oCAAoC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvJ,CAAC;YACD,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAC1B,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAW;YACjD,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAW;YACzC,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAW;YAC/C,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE,eAAe,CAAW;YAC3D,gBAAgB,EAAE,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAW;YACjE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,CAAC;QACH,eAAe,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;YAC1C,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,aAAa;QACb,cAAc;QACd,SAAS;QACT,YAAY;QACZ,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,SAAS;QACT,MAAM;QACN,aAAa,EAAE,EAAE,6BAA6B,EAAE,6BAAuC,EAAE;KAC1F,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAyB;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,QAAQ,CAAC,aAAa;KACtC,CAAC,CAA4B,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAyB;IACrE,MAAM,gBAAgB,GAAG,eAAe,CAAC;QACvC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC,CAAC;IACH,IAAI,gBAAgB,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,IAAI,oBAAoB,CAC5B,oCAAoC,EACpC,WAAW,EACX,8BAA8B,QAAQ,CAAC,SAAS,8DAA8D,gBAAgB,GAAG,CAClI,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,IAAI,cAAc,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,IAAI,oBAAoB,CAC5B,oCAAoC,EACpC,gBAAgB,EAChB,2BAA2B,QAAQ,CAAC,cAAc,kDAAkD,cAAc,GAAG,CACtH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAyB,EAAE,GAAG,GAAS,IAAI,IAAI,EAAE;IACxF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AACzD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,KAQpC;IACC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAoB;QAChC,aAAa,EAAE,+BAA+B;QAC9C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS;QACT,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,aAAa,EAAE,EAAE,6BAA6B,EAAE,KAAK,CAAC,6BAA6B,EAAE;KACtF,CAAC;IACF,MAAM,cAAc,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAoB,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;IAClE,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,CAAC;QACH,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ActivatedPrinciple } from '@principles/core/runtime-v2';
|
|
1
|
+
import { type ActivatedPrinciple, type PromptSelectionPolicy } from '@principles/core/runtime-v2';
|
|
2
2
|
export interface ActivePrinciplePromptResult {
|
|
3
3
|
additionalContext: string;
|
|
4
4
|
principleIds: string[];
|
|
@@ -11,6 +11,16 @@ export interface ActivePrinciplePromptResult {
|
|
|
11
11
|
excludedCount: number;
|
|
12
12
|
exclusionReason?: 'host_principle_overlap';
|
|
13
13
|
allValidatedPrinciplesExcluded: boolean;
|
|
14
|
+
/** PRI-904: budget-packing policy that produced this selection. */
|
|
15
|
+
selectionPolicy?: PromptSelectionPolicy;
|
|
16
|
+
/** PRI-904: candidates that reached the budget selector. */
|
|
17
|
+
eligibleCount?: number;
|
|
18
|
+
/** PRI-904: circular scan start; present only under fair_rotation_v1. */
|
|
19
|
+
rotationStartIndex?: number;
|
|
20
|
+
/** PRI-904 (bounded, max 16): activation ids dropped for insufficient remaining budget. */
|
|
21
|
+
droppedActivationIds?: string[];
|
|
22
|
+
/** PRI-904 (bounded, max 16): activation ids that cannot fit even in an empty payload. */
|
|
23
|
+
oversizedActivationIds?: string[];
|
|
14
24
|
}
|
|
15
25
|
export interface PromptActivationCandidates {
|
|
16
26
|
principles: ActivatedPrinciple[];
|
|
@@ -34,4 +44,10 @@ export declare function readPromptActivationCandidates(input: {
|
|
|
34
44
|
export declare function buildActivePrinciplePromptContext(input: {
|
|
35
45
|
workspaceDir: string;
|
|
36
46
|
excludePrincipleIds?: ReadonlySet<string>;
|
|
47
|
+
/**
|
|
48
|
+
* PRI-904 fair-rotation round key (derive via roundKeyFromRunIdentity from
|
|
49
|
+
* the host run/turn id). Absent → legacy FIFO prefix policy (rollback /
|
|
50
|
+
* characterization baseline).
|
|
51
|
+
*/
|
|
52
|
+
roundKey?: number;
|
|
37
53
|
}): Promise<ActivePrinciplePromptResult>;
|
|
@@ -3,6 +3,8 @@ import fs from 'node:fs';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { escapeXml } from '@principles/core/prompt-builder';
|
|
5
5
|
import { loadPdConfigForPlugin } from './pd-config.js';
|
|
6
|
+
/** PRI-904 SPEC §10: bounded diagnostic id lists (mirrors the core selector's cap of 16). */
|
|
7
|
+
const MAX_SHARED_DIAGNOSTIC_IDS = 16;
|
|
6
8
|
/**
|
|
7
9
|
* PR #1844 follow-up: the activation READ half of buildActivePrinciplePromptContext,
|
|
8
10
|
* exported so the console budget projection can share the exact same input
|
|
@@ -85,17 +87,49 @@ export async function buildActivePrinciplePromptContext(input) {
|
|
|
85
87
|
additionalContext: '', principleIds: [], activationIds: [], artifactIds: [], warnings,
|
|
86
88
|
budget: RUNTIME_V2_PRINCIPLE_BUDGET, truncated: false, excludedPrincipleIds,
|
|
87
89
|
excludedCount: excludedPrincipleIds.length, allValidatedPrinciplesExcluded: false,
|
|
90
|
+
selectionPolicy: 'legacy_fifo_prefix_v1', eligibleCount: 0,
|
|
88
91
|
};
|
|
89
92
|
}
|
|
90
93
|
const included = [];
|
|
91
94
|
let additionalContext = '';
|
|
92
95
|
let truncated = false;
|
|
93
|
-
|
|
96
|
+
// PRI-904: same fair-rotation semantics as the plugin route's trimToBudget —
|
|
97
|
+
// deterministic rotating start over the base (ASC) candidate order, circular
|
|
98
|
+
// scan, continue-on-non-fit. Costs are measured with the REAL serializer
|
|
99
|
+
// (renderPrinciplesToDirectives) so budget accounting stays exact here too.
|
|
100
|
+
const { roundKey } = input;
|
|
101
|
+
const selectionPolicy = roundKey === undefined || principles.length === 0 ? 'legacy_fifo_prefix_v1' : 'fair_rotation_v1';
|
|
102
|
+
const n = principles.length;
|
|
103
|
+
// Guard on the policy, not just the key: an all-excluded candidate list has
|
|
104
|
+
// n === 0 and must not emit a NaN start (core trimToBudget omits the field
|
|
105
|
+
// for empty input — parity requires the same here).
|
|
106
|
+
const rotationStartIndex = selectionPolicy === 'fair_rotation_v1' && roundKey !== undefined
|
|
107
|
+
? ((roundKey % n) + n) % n
|
|
108
|
+
: undefined;
|
|
109
|
+
const droppedActivationIds = [];
|
|
110
|
+
const oversizedActivationIds = [];
|
|
111
|
+
const standaloneFits = (principle) => renderPrinciplesToDirectives([principle], new Set([principle.principleId]), { escapeFn: escapeXml, selfReportInstruction: selfReportEnabled }).length
|
|
112
|
+
<= RUNTIME_V2_PRINCIPLE_BUDGET;
|
|
113
|
+
const scanOrder = rotationStartIndex === undefined
|
|
114
|
+
? principles
|
|
115
|
+
: principles.slice(rotationStartIndex).concat(principles.slice(0, rotationStartIndex));
|
|
116
|
+
for (const principle of scanOrder) {
|
|
94
117
|
const candidate = [...included, principle];
|
|
95
118
|
const candidateContext = renderPrinciplesToDirectives(candidate, new Set(candidate.map((entry) => entry.principleId)), { escapeFn: escapeXml, selfReportInstruction: selfReportEnabled });
|
|
96
119
|
if (candidateContext.length > RUNTIME_V2_PRINCIPLE_BUDGET) {
|
|
97
|
-
|
|
98
|
-
|
|
120
|
+
if (standaloneFits(principle)) {
|
|
121
|
+
// Fits alone but not now — normal budget truncation.
|
|
122
|
+
truncated = true;
|
|
123
|
+
if (droppedActivationIds.length < MAX_SHARED_DIAGNOSTIC_IDS)
|
|
124
|
+
droppedActivationIds.push(principle.activationId);
|
|
125
|
+
}
|
|
126
|
+
else if (oversizedActivationIds.length < MAX_SHARED_DIAGNOSTIC_IDS) {
|
|
127
|
+
// Can never fit alone — oversize, not starvation (PRI-904 SPEC §6.6).
|
|
128
|
+
oversizedActivationIds.push(principle.activationId);
|
|
129
|
+
}
|
|
130
|
+
if (selectionPolicy === 'legacy_fifo_prefix_v1')
|
|
131
|
+
break;
|
|
132
|
+
continue;
|
|
99
133
|
}
|
|
100
134
|
included.push(principle);
|
|
101
135
|
additionalContext = candidateContext;
|
|
@@ -116,5 +150,10 @@ export async function buildActivePrinciplePromptContext(input) {
|
|
|
116
150
|
excludedCount: excludedPrincipleIds.length,
|
|
117
151
|
allValidatedPrinciplesExcluded: excludedPrincipleIds.length > 0 && principles.length === 0,
|
|
118
152
|
...(excludedPrincipleIds.length > 0 ? { exclusionReason: 'host_principle_overlap' } : {}),
|
|
153
|
+
selectionPolicy,
|
|
154
|
+
eligibleCount: principles.length,
|
|
155
|
+
...(rotationStartIndex !== undefined ? { rotationStartIndex } : {}),
|
|
156
|
+
...(droppedActivationIds.length > 0 ? { droppedActivationIds } : {}),
|
|
157
|
+
...(oversizedActivationIds.length > 0 ? { oversizedActivationIds } : {}),
|
|
119
158
|
};
|
|
120
159
|
}
|
|
@@ -177,6 +177,16 @@ export function createProductionHostRuntime(options = {}) {
|
|
|
177
177
|
}),
|
|
178
178
|
beforeToolCall: options.beforeToolCall ?? productionGate,
|
|
179
179
|
async beforePromptBuild(event) {
|
|
180
|
+
// PRI-904 Phase-1 (Option 3): this production path is ALSO the Codex
|
|
181
|
+
// route, and Codex never writes trajectory.db::user_turns — its
|
|
182
|
+
// ingestion writes governance_* rows instead. Reading a session turn
|
|
183
|
+
// ordinal here would therefore be a false round authority: on Codex it
|
|
184
|
+
// either throws (→ legacy) or returns a constant 1 (→ fixed start, a
|
|
185
|
+
// different positional starvation while the event still claimed a fair
|
|
186
|
+
// rotation). So the shared production path passes NO round key and
|
|
187
|
+
// reports `legacy_fifo_prefix_v1` honestly. The selector's fair-rotation
|
|
188
|
+
// capability is retained and stays reachable for callers that DO hold a
|
|
189
|
+
// legitimate advancing round authority.
|
|
180
190
|
const prompt = await buildActivePrinciplePromptContext({
|
|
181
191
|
workspaceDir: event.context.workspaceDir,
|
|
182
192
|
excludePrincipleIds: options.promptExcludePrincipleIds?.(event),
|
|
@@ -203,6 +213,14 @@ export function createProductionHostRuntime(options = {}) {
|
|
|
203
213
|
budget: RUNTIME_V2_PRINCIPLE_BUDGET,
|
|
204
214
|
...(prompt.truncated !== undefined ? { v2Truncated: prompt.truncated } : {}),
|
|
205
215
|
...(event.context.turnId !== undefined ? { runId: event.context.turnId } : {}),
|
|
216
|
+
// PRI-904: selection diagnostics (bounded, optional). On this route
|
|
217
|
+
// the policy is legacy_fifo_prefix_v1 and NO rotation provenance is
|
|
218
|
+
// emitted — a fair claim would be untrue here (see above).
|
|
219
|
+
...(prompt.selectionPolicy !== undefined ? { selectionPolicy: prompt.selectionPolicy } : {}),
|
|
220
|
+
...(prompt.eligibleCount !== undefined ? { eligibleCount: prompt.eligibleCount } : {}),
|
|
221
|
+
...(prompt.rotationStartIndex !== undefined ? { rotationStartIndex: prompt.rotationStartIndex } : {}),
|
|
222
|
+
...(prompt.droppedActivationIds !== undefined && prompt.droppedActivationIds.length > 0 ? { droppedActivationIds: prompt.droppedActivationIds } : {}),
|
|
223
|
+
...(prompt.oversizedActivationIds !== undefined && prompt.oversizedActivationIds.length > 0 ? { oversizedActivationIds: prompt.oversizedActivationIds } : {}),
|
|
206
224
|
});
|
|
207
225
|
}
|
|
208
226
|
catch (err) {
|