create-principles-disciple 1.132.6 → 1.133.1
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/codex-adapter/dist/ingestion/ingestion.js +3 -3
- package/codex-adapter/dist/ingestion/transcript-locate.d.ts +6 -11
- package/codex-adapter/dist/ingestion/transcript-locate.js +5 -73
- package/codex-adapter/dist/ingestion/transcript-path.d.ts +2 -2
- package/codex-adapter/dist/ingestion/transcript-path.js +4 -21
- package/codex-adapter/dist/worker/workspace-worker.d.ts +1 -12
- package/codex-adapter/dist/worker/workspace-worker.js +4 -34
- package/codex-adapter/package.json +1 -1
- package/console/dist/server/models/CodexGovernanceHealthModel.d.ts +97 -0
- package/console/dist/server/models/CodexGovernanceHealthModel.js +81 -0
- package/console/dist/server/models/EvidenceChainConsoleModel.js +16 -2
- package/console/dist/server/routes/health.js +59 -3
- package/console/dist/server/routes/update.js +105 -1
- package/console/dist/ui/i18n/en.json +4 -0
- package/console/dist/ui/i18n/zh-CN.json +4 -0
- package/console/dist/ui/pages/pain/PainPage.js +1 -1
- package/console/dist/ui/utils/validators.d.ts +2 -0
- package/console/dist/ui/utils/validators.js +7 -0
- package/console/dist/web/assets/app.js +15 -1
- package/core/dist/host/index.d.ts +2 -0
- package/core/dist/host/index.d.ts.map +1 -1
- package/core/dist/host/index.js +3 -0
- package/core/dist/host/index.js.map +1 -1
- package/core/dist/host/legacy-registration.d.ts +28 -0
- package/core/dist/host/legacy-registration.d.ts.map +1 -0
- package/core/dist/host/legacy-registration.js +49 -0
- package/core/dist/host/legacy-registration.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-host-kind.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-host-kind.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-host-kind.test.js +49 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-host-kind.test.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +7 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +17 -6
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +14 -6
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +6 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.js +12 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -1
- package/core/package.json +1 -1
- package/dist/installer.d.ts +9 -3
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +37 -28
- package/dist/installer.js.map +1 -1
- package/dist/installers/codex-host-installer.d.ts +17 -7
- package/dist/installers/codex-host-installer.d.ts.map +1 -1
- package/dist/installers/codex-host-installer.js +78 -194
- package/dist/installers/codex-host-installer.js.map +1 -1
- package/dist/update/apply-payload.d.ts +88 -0
- package/dist/update/apply-payload.d.ts.map +1 -0
- package/dist/update/apply-payload.js +166 -0
- package/dist/update/apply-payload.js.map +1 -0
- package/dist/update/bootstrap-protocol.d.ts.map +1 -1
- package/dist/update/bootstrap-protocol.js +14 -2
- package/dist/update/bootstrap-protocol.js.map +1 -1
- package/dist/update/release-manager-authority.d.ts +15 -0
- package/dist/update/release-manager-authority.d.ts.map +1 -1
- package/dist/update/release-manager-authority.js +35 -7
- package/dist/update/release-manager-authority.js.map +1 -1
- package/dist/update/release-manager.d.ts +74 -6
- package/dist/update/release-manager.d.ts.map +1 -1
- package/dist/update/release-manager.js +272 -36
- package/dist/update/release-manager.js.map +1 -1
- package/dist/update/transaction-journal.d.ts +3 -1
- package/dist/update/transaction-journal.d.ts.map +1 -1
- package/dist/update/transaction-journal.js +3 -1
- package/dist/update/transaction-journal.js.map +1 -1
- package/host-runtime/dist/codex-disclosure.d.ts +23 -0
- package/host-runtime/dist/codex-disclosure.js +60 -0
- package/host-runtime/dist/codex-ingestion-consent.d.ts +111 -0
- package/host-runtime/dist/codex-ingestion-consent.js +223 -0
- package/host-runtime/dist/codex-legacy-registration.d.ts +18 -0
- package/host-runtime/dist/codex-legacy-registration.js +34 -0
- package/host-runtime/dist/codex-transcript-locate.d.ts +16 -0
- package/host-runtime/dist/codex-transcript-locate.js +106 -0
- package/host-runtime/dist/codex-worker-status.d.ts +24 -0
- package/host-runtime/dist/codex-worker-status.js +52 -0
- package/host-runtime/dist/governance-observation-store.d.ts +77 -1
- package/host-runtime/dist/governance-observation-store.js +188 -3
- package/host-runtime/dist/governance-signal-admission.d.ts +26 -0
- package/host-runtime/dist/governance-signal-admission.js +47 -0
- package/host-runtime/dist/index.d.ts +5 -0
- package/host-runtime/dist/index.js +14 -0
- package/host-runtime/package.json +1 -1
- package/package.json +1 -1
- package/pd-cli/dist/commands/codex-ingest-quarantine.d.ts +12 -0
- package/pd-cli/dist/commands/codex-ingest-quarantine.d.ts.map +1 -0
- package/pd-cli/dist/commands/codex-ingest-quarantine.js +116 -0
- package/pd-cli/dist/commands/codex-ingest-quarantine.js.map +1 -0
- package/pd-cli/dist/commands/codex-setup.d.ts +46 -0
- package/pd-cli/dist/commands/codex-setup.d.ts.map +1 -0
- package/pd-cli/dist/commands/codex-setup.js +423 -0
- package/pd-cli/dist/commands/codex-setup.js.map +1 -0
- package/pd-cli/dist/commands/health-codex.d.ts.map +1 -1
- package/pd-cli/dist/commands/health-codex.js +350 -67
- package/pd-cli/dist/commands/health-codex.js.map +1 -1
- package/pd-cli/dist/index.js +51 -0
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/package.json +1 -1
- package/plugin/dist/bundle.js +331 -331
- package/plugin/dist/governance-audit.js +1 -1
- package/plugin/dist/rulehost-evidence.js +1 -1
- package/release-manager/dist/installer.d.ts +9 -3
- package/release-manager/dist/installer.d.ts.map +1 -1
- package/release-manager/dist/installer.js +37 -28
- package/release-manager/dist/installer.js.map +1 -1
- package/release-manager/dist/installers/codex-host-installer.d.ts +17 -7
- package/release-manager/dist/installers/codex-host-installer.d.ts.map +1 -1
- package/release-manager/dist/installers/codex-host-installer.js +78 -194
- package/release-manager/dist/installers/codex-host-installer.js.map +1 -1
- package/release-manager/dist/update/apply-payload.d.ts +88 -0
- package/release-manager/dist/update/apply-payload.d.ts.map +1 -0
- package/release-manager/dist/update/apply-payload.js +166 -0
- package/release-manager/dist/update/apply-payload.js.map +1 -0
- package/release-manager/dist/update/bootstrap-protocol.d.ts.map +1 -1
- package/release-manager/dist/update/bootstrap-protocol.js +14 -2
- package/release-manager/dist/update/bootstrap-protocol.js.map +1 -1
- package/release-manager/dist/update/release-manager-authority.d.ts +15 -0
- package/release-manager/dist/update/release-manager-authority.d.ts.map +1 -1
- package/release-manager/dist/update/release-manager-authority.js +35 -7
- package/release-manager/dist/update/release-manager-authority.js.map +1 -1
- package/release-manager/dist/update/release-manager.d.ts +74 -6
- package/release-manager/dist/update/release-manager.d.ts.map +1 -1
- package/release-manager/dist/update/release-manager.js +272 -36
- package/release-manager/dist/update/release-manager.js.map +1 -1
- package/release-manager/dist/update/transaction-journal.d.ts +3 -1
- package/release-manager/dist/update/transaction-journal.d.ts.map +1 -1
- package/release-manager/dist/update/transaction-journal.js +3 -1
- package/release-manager/dist/update/transaction-journal.js.map +1 -1
- package/release-manager/package.json +1 -1
|
@@ -23,13 +23,20 @@
|
|
|
23
23
|
* merge into it, never overwrite. The marker file is our own bookkeeping
|
|
24
24
|
* for precise uninstall.
|
|
25
25
|
*/
|
|
26
|
-
import { existsSync, readFileSync, writeFileSync
|
|
26
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
27
27
|
import { execSync } from 'child_process';
|
|
28
28
|
import * as path from 'path';
|
|
29
29
|
import * as os from 'os';
|
|
30
30
|
import { createRequire } from 'module';
|
|
31
31
|
import { pathToFileURL } from 'url';
|
|
32
32
|
import { isNpmDependencyResolutionEnabled } from '../installer.js';
|
|
33
|
+
// NOTE (PRI-625 review round 3 / PRI-669 gate): this installer ships as the
|
|
34
|
+
// self-contained npx package — @principles/core is NOT in its dependencies,
|
|
35
|
+
// and type-only imports are erased at compile time, so the import above is
|
|
36
|
+
// safe. The legacy-registration PARSER must therefore NOT be value-imported
|
|
37
|
+
// here. Its single authority lives in @principles/core/host
|
|
38
|
+
// (parseLegacyCodexHooksRegistration); the local classification below is the
|
|
39
|
+
// npx-parity edge, and a CI parity test pins the two shapes together.
|
|
33
40
|
const requireFromModule = createRequire(import.meta.url);
|
|
34
41
|
// ─── Codex hook event names (SPEC v4.1 §5.7) ────────────────────────────────
|
|
35
42
|
const CODEX_EVENTS = ['PreToolUse', 'PostToolUse', 'UserPromptSubmit', 'SessionStart'];
|
|
@@ -129,73 +136,11 @@ export function resolvePdHookPath(deps = {}) {
|
|
|
129
136
|
return undefined;
|
|
130
137
|
}
|
|
131
138
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
139
|
+
* Hook entry / matcher-group shapes (rc-2 typing for detectLegacyCodexHookRegistration).
|
|
140
|
+
* The builder that CREATED these groups was retired with the legacy installer
|
|
141
|
+
* (SPEC rev 2 §17); the shapes remain because uninstall and the legacy
|
|
142
|
+
* detector must still recognize what old installers wrote.
|
|
136
143
|
*/
|
|
137
|
-
function buildHookCommand(entryScriptPath, _workspaceDir) {
|
|
138
|
-
// Unix command: node <entry>
|
|
139
|
-
// workspaceDir is injected by the wrapper script (pd-hook-entry.cjs), not here.
|
|
140
|
-
void _workspaceDir;
|
|
141
|
-
return `node "${entryScriptPath}"`;
|
|
142
|
-
}
|
|
143
|
-
function buildHookCommandWindows(entryScriptPath, _workspaceDir) {
|
|
144
|
-
// Windows command — same node invocation; the entry script handles env internally
|
|
145
|
-
void _workspaceDir;
|
|
146
|
-
return `node "${entryScriptPath}"`;
|
|
147
|
-
}
|
|
148
|
-
function buildMatcherGroup(eventName, entryScriptPath, workspaceDir) {
|
|
149
|
-
const command = buildHookCommand(entryScriptPath, workspaceDir);
|
|
150
|
-
const commandWindows = buildHookCommandWindows(entryScriptPath, workspaceDir);
|
|
151
|
-
switch (eventName) {
|
|
152
|
-
case 'PreToolUse':
|
|
153
|
-
return {
|
|
154
|
-
matcher: 'Bash|apply_patch',
|
|
155
|
-
hooks: [{
|
|
156
|
-
type: 'command',
|
|
157
|
-
command,
|
|
158
|
-
commandWindows,
|
|
159
|
-
timeout: 5,
|
|
160
|
-
statusMessage: 'PD: checking tool call',
|
|
161
|
-
}],
|
|
162
|
-
};
|
|
163
|
-
case 'PostToolUse':
|
|
164
|
-
return {
|
|
165
|
-
matcher: '.*',
|
|
166
|
-
hooks: [{
|
|
167
|
-
type: 'command',
|
|
168
|
-
command,
|
|
169
|
-
commandWindows,
|
|
170
|
-
timeout: 5,
|
|
171
|
-
async: true,
|
|
172
|
-
statusMessage: 'PD: capturing pain signal',
|
|
173
|
-
}],
|
|
174
|
-
};
|
|
175
|
-
case 'UserPromptSubmit':
|
|
176
|
-
return {
|
|
177
|
-
hooks: [{
|
|
178
|
-
type: 'command',
|
|
179
|
-
command,
|
|
180
|
-
commandWindows,
|
|
181
|
-
timeout: 5,
|
|
182
|
-
additionalContextLimit: 10000,
|
|
183
|
-
statusMessage: 'PD: injecting principles',
|
|
184
|
-
}],
|
|
185
|
-
};
|
|
186
|
-
case 'SessionStart':
|
|
187
|
-
return {
|
|
188
|
-
hooks: [{
|
|
189
|
-
type: 'command',
|
|
190
|
-
command,
|
|
191
|
-
commandWindows,
|
|
192
|
-
timeout: 600,
|
|
193
|
-
additionalContextLimit: 10000,
|
|
194
|
-
statusMessage: 'PD: hydrating state',
|
|
195
|
-
}],
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
144
|
// ─── Wrapper script content ─────────────────────────────────────────────────
|
|
200
145
|
/**
|
|
201
146
|
* Generate the wrapper script that sets env vars and imports pd-hook.js.
|
|
@@ -221,144 +166,83 @@ export function buildWrapperScriptContent(pdHookPath, workspaceDir) {
|
|
|
221
166
|
'',
|
|
222
167
|
].join('\n');
|
|
223
168
|
}
|
|
169
|
+
// ─── Legacy registration detection (Slice D, SPEC rev 2 §17) ────────────────
|
|
170
|
+
// The single PARSING authority lives in @principles/core/host
|
|
171
|
+
// (parseLegacyCodexHooksRegistration — pure, no I/O). This installer is the
|
|
172
|
+
// npx-parity FS edge: same classification semantics, mirrored here because
|
|
173
|
+
// @principles/core is not a runtime dependency of this self-contained
|
|
174
|
+
// package. CI pins the two shapes together (codex-host-installer.test.ts →
|
|
175
|
+
// parseLegacyCodexHooksRegistration parity).
|
|
176
|
+
export function detectLegacyCodexHookRegistration(hooksJsonPathOverride) {
|
|
177
|
+
const hooksJsonPath = hooksJsonPathOverride ?? getCodexHooksJsonPath();
|
|
178
|
+
let parsed;
|
|
179
|
+
try {
|
|
180
|
+
parsed = JSON.parse(readFileSync(hooksJsonPath, 'utf-8'));
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return { detected: false, legacyAsyncPostToolUse: false };
|
|
184
|
+
}
|
|
185
|
+
// npx-parity mirror of @principles/core/host parseLegacyCodexHooksRegistration
|
|
186
|
+
// (kept here because @principles/core is not a runtime dep of this package;
|
|
187
|
+
// parity with the core parser is enforced by codex-host-installer.test.ts).
|
|
188
|
+
if (!isRecord(parsed))
|
|
189
|
+
return { detected: false, legacyAsyncPostToolUse: false };
|
|
190
|
+
let detected = false;
|
|
191
|
+
let legacyAsyncPostToolUse = false;
|
|
192
|
+
for (const eventName of CODEX_EVENTS) {
|
|
193
|
+
const groups = parsed[eventName];
|
|
194
|
+
if (!isUnknownArray(groups))
|
|
195
|
+
continue;
|
|
196
|
+
for (const group of groups) {
|
|
197
|
+
if (!(isRecord(group) && Object.hasOwn(group, '__pd_marker') && group.__pd_marker === 'pd-owned'))
|
|
198
|
+
continue;
|
|
199
|
+
detected = true;
|
|
200
|
+
const entries = group.hooks;
|
|
201
|
+
if (!isUnknownArray(entries))
|
|
202
|
+
continue;
|
|
203
|
+
for (const entry of entries) {
|
|
204
|
+
if (isRecord(entry) && eventName === 'PostToolUse' && Object.hasOwn(entry, 'async') && entry.async === true) {
|
|
205
|
+
legacyAsyncPostToolUse = true;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return { detected, legacyAsyncPostToolUse };
|
|
211
|
+
}
|
|
224
212
|
// ─── CodexHostInstaller ─────────────────────────────────────────────────────
|
|
225
213
|
export class CodexHostInstaller {
|
|
226
214
|
hostId = 'codex';
|
|
227
|
-
|
|
228
|
-
|
|
215
|
+
/**
|
|
216
|
+
* RETIRED for new registrations (Codex Governance Closure Slice D; SPEC rev
|
|
217
|
+
* 2 §17 — the Marketplace plugin is the only supported new install path;
|
|
218
|
+
* this legacy global-hook installer is migration/uninstall-only).
|
|
219
|
+
*
|
|
220
|
+
* This method NEVER writes hook registrations anymore. It returns a
|
|
221
|
+
* structured refusal that points at the supported path, and when a legacy
|
|
222
|
+
* PD global registration is detected it offers the explicit migration
|
|
223
|
+
* route (precise uninstall → Marketplace plugin → $pd-setup consent).
|
|
224
|
+
*/
|
|
225
|
+
async install(_ctx) {
|
|
229
226
|
const hooksJsonPath = getCodexHooksJsonPath();
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
const pdHookPath = resolvePdHookPath();
|
|
233
|
-
if (!pdHookPath) {
|
|
234
|
-
return {
|
|
235
|
-
success: false,
|
|
236
|
-
hostId: this.hostId,
|
|
237
|
-
configPath: hooksJsonPath,
|
|
238
|
-
configAction: 'skipped',
|
|
239
|
-
reason: '@principles/codex-adapter is not installed. The codex-adapter package provides the pd-hook.js entry Codex spawns.',
|
|
240
|
-
nextAction: 'Install it first: npm install -g @principles/codex-adapter, then re-run: npx create-principles-disciple install --host codex',
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
// 2. Write wrapper script to ~/.pd/codex/pd-hook-entry.cjs
|
|
244
|
-
// (marker file is written AFTER mergeHooksJson succeeds — see step 3.
|
|
245
|
-
// Writing the marker before the merge would make detect() report a
|
|
246
|
-
// failed install as installed, violating rc-3-fail-loud-missing.)
|
|
247
|
-
try {
|
|
248
|
-
if (!existsSync(pdCodexDir)) {
|
|
249
|
-
mkdirSync(pdCodexDir, { recursive: true });
|
|
250
|
-
}
|
|
251
|
-
const wrapperPath = path.join(pdCodexDir, 'pd-hook-entry.cjs');
|
|
252
|
-
const wrapperContent = buildWrapperScriptContent(pdHookPath, ctx.workspaceDir);
|
|
253
|
-
writeFileSync(wrapperPath, wrapperContent, { encoding: 'utf-8' });
|
|
254
|
-
// 3. Merge PD hook entries into ~/.codex/hooks.json (append, never overwrite).
|
|
255
|
-
// If hooks.json is malformed, mergeHooksJson returns 'preserved' without
|
|
256
|
-
// writing any PD entries. This MUST surface as a failure (rc-3 / rc-9)
|
|
257
|
-
// — otherwise the user would see "install succeeded" while Codex never
|
|
258
|
-
// triggers PD hooks. The marker is NOT written in this branch, so
|
|
259
|
-
// detect() correctly reports "not installed".
|
|
260
|
-
const configAction = this.mergeHooksJson(hooksJsonPath, wrapperPath, ctx.workspaceDir);
|
|
261
|
-
if (configAction === 'preserved') {
|
|
262
|
-
return {
|
|
263
|
-
success: false,
|
|
264
|
-
hostId: this.hostId,
|
|
265
|
-
configPath: hooksJsonPath,
|
|
266
|
-
configAction,
|
|
267
|
-
reason: `${hooksJsonPath} is malformed (not a JSON object). PD did not write any hook entries to avoid overwriting the user's config.`,
|
|
268
|
-
nextAction: `Manually fix ${hooksJsonPath} (must be a JSON object), then re-run: npx create-principles-disciple install --host codex`,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
// 4. Merge succeeded — now safe to record the marker. detect() will
|
|
272
|
-
// only report installed when hooks.json actually contains PD entries.
|
|
273
|
-
writeFileSync(markerPath, JSON.stringify({
|
|
274
|
-
installedAt: new Date().toISOString(),
|
|
275
|
-
workspaceDir: ctx.workspaceDir,
|
|
276
|
-
pdHookPath,
|
|
277
|
-
wrapperPath,
|
|
278
|
-
events: CODEX_EVENTS,
|
|
279
|
-
}, null, 2), { encoding: 'utf-8' });
|
|
280
|
-
return {
|
|
281
|
-
success: true,
|
|
282
|
-
hostId: this.hostId,
|
|
283
|
-
configPath: hooksJsonPath,
|
|
284
|
-
configAction,
|
|
285
|
-
nextAction: 'Open Codex and run /hooks to trust PD hooks before they execute. Verify with: codex doctor (hooks feature should be ON).',
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
catch (err) {
|
|
289
|
-
const reason = err instanceof Error ? err.message : String(err);
|
|
227
|
+
const legacy = detectLegacyCodexHookRegistration();
|
|
228
|
+
if (legacy.detected) {
|
|
290
229
|
return {
|
|
291
230
|
success: false,
|
|
292
231
|
hostId: this.hostId,
|
|
293
232
|
configPath: hooksJsonPath,
|
|
294
233
|
configAction: 'skipped',
|
|
295
|
-
reason:
|
|
296
|
-
nextAction:
|
|
234
|
+
reason: 'A legacy PD global Codex hook registration was detected (async PostToolUse in ~/.codex/hooks.json). The legacy global installer is retired (SPEC rev 2 §17) and cannot update it.',
|
|
235
|
+
nextAction: 'Migrate to the Marketplace plugin: 1) npx create-principles-disciple uninstall --host codex (removes ONLY PD-owned entries; evidence is preserved); 2) codex plugin add principles-disciple@principles; 3) run the plugin setup ($pd-setup) — it presents the ingestion disclosure and records consent.',
|
|
297
236
|
};
|
|
298
237
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
mergeHooksJson(hooksJsonPath, wrapperPath, workspaceDir) {
|
|
308
|
-
const codexDir = getCodexDir();
|
|
309
|
-
if (!existsSync(codexDir)) {
|
|
310
|
-
mkdirSync(codexDir, { recursive: true });
|
|
311
|
-
}
|
|
312
|
-
let existing = {};
|
|
313
|
-
let action = 'created';
|
|
314
|
-
// CodeQL TOCTOU fix: try/catch read instead of existsSync+readFileSync.
|
|
315
|
-
// ENOENT → 'created' (file doesn't exist yet); other parse errors → 'preserved'.
|
|
316
|
-
try {
|
|
317
|
-
const raw = readFileSync(hooksJsonPath, 'utf-8');
|
|
318
|
-
const parsed = JSON.parse(raw);
|
|
319
|
-
if (isRecord(parsed)) {
|
|
320
|
-
existing = { ...parsed };
|
|
321
|
-
action = 'updated';
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
// Malformed — back off, don't overwrite
|
|
325
|
-
action = 'preserved';
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
catch (err) {
|
|
329
|
-
const code = getErrorCode(err);
|
|
330
|
-
if (code === 'ENOENT') {
|
|
331
|
-
// File doesn't exist — 'created' (default action stays)
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
// Malformed JSON — back off
|
|
335
|
-
action = 'preserved';
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
if (action === 'preserved') {
|
|
339
|
-
return action;
|
|
340
|
-
}
|
|
341
|
-
// For each Codex event, replace any existing PD-owned matcher groups
|
|
342
|
-
// with our fresh set (idempotent — re-install doesn't duplicate).
|
|
343
|
-
const PD_MARKER = 'pd-owned';
|
|
344
|
-
for (const eventName of CODEX_EVENTS) {
|
|
345
|
-
const group = buildMatcherGroup(eventName, wrapperPath, workspaceDir);
|
|
346
|
-
// Tag the group so uninstall can find PD-owned entries precisely.
|
|
347
|
-
group.__pd_marker = PD_MARKER;
|
|
348
|
-
const existingGroups = existing[eventName];
|
|
349
|
-
if (isUnknownArray(existingGroups)) {
|
|
350
|
-
// Filter out previously-PD-owned groups, then append the new one.
|
|
351
|
-
// rc-2: no `as` bypass — use Object.hasOwn to check marker presence.
|
|
352
|
-
const filtered = existingGroups.filter((g) => !(isRecord(g) && Object.hasOwn(g, '__pd_marker') && g.__pd_marker === PD_MARKER));
|
|
353
|
-
filtered.push(group);
|
|
354
|
-
existing[eventName] = filtered;
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
existing[eventName] = [group];
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
writeFileSync(hooksJsonPath, JSON.stringify(existing, null, 2), { encoding: 'utf-8' });
|
|
361
|
-
return action;
|
|
238
|
+
return {
|
|
239
|
+
success: false,
|
|
240
|
+
hostId: this.hostId,
|
|
241
|
+
configPath: hooksJsonPath,
|
|
242
|
+
configAction: 'skipped',
|
|
243
|
+
reason: 'New Codex global hook registrations are retired (SPEC rev 2 §17). The Marketplace plugin is the only supported new install path for Codex.',
|
|
244
|
+
nextAction: 'Install the plugin: codex plugin add principles-disciple@principles — then run its setup ($pd-setup), which verifies Node/runtime/workspace/trust and records the conversation-ingestion consent.',
|
|
245
|
+
};
|
|
362
246
|
}
|
|
363
247
|
async uninstall(_ctx) {
|
|
364
248
|
const hooksJsonPath = getCodexHooksJsonPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-host-installer.js","sourceRoot":"","sources":["../../src/installers/codex-host-installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-host-installer.js","sourceRoot":"","sources":["../../src/installers/codex-host-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRI-698 Phase 1 — apply payload acquisition for the ReleaseManager.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the signed metadata world (TUF-verified release metadata + artifact
|
|
5
|
+
* target) and the installer's deployment contract (a local, extracted,
|
|
6
|
+
* self-contained release-asset directory). Owns ONLY acquisition-side writes,
|
|
7
|
+
* strictly bounded to the ReleaseManager staging area:
|
|
8
|
+
*
|
|
9
|
+
* ~/.pd/staging/<transactionId>/release-asset.tar.gz (verified download)
|
|
10
|
+
* ~/.pd/staging/<transactionId>/payload/ (extracted payload)
|
|
11
|
+
*
|
|
12
|
+
* Deployment writes (~/.pd/runtime, host extension dirs) belong exclusively
|
|
13
|
+
* to the installer; this module never touches them (ADR-0023 Decision 1,
|
|
14
|
+
* ADR-0024 §2.1). release-manager.ts itself stays free of filesystem
|
|
15
|
+
* mutation: it orchestrates, this helper acquires.
|
|
16
|
+
*
|
|
17
|
+
* Import-graph constraint: this module is reachable from the console's
|
|
18
|
+
* dynamically-imported authority module, so `installer.js` (the heavy CLI
|
|
19
|
+
* graph) is loaded via dynamic import at acquisition time only — the
|
|
20
|
+
* governed check path never pays for it.
|
|
21
|
+
*
|
|
22
|
+
* Artifact target convention (Phase 1, see
|
|
23
|
+
* docs/architecture/PRI-698-phase4-preflight-analysis.md §4): the release
|
|
24
|
+
* pipeline publishes each release asset as TUF target
|
|
25
|
+
*
|
|
26
|
+
* releases/<releaseId>/release-asset-<platform>-<arch>.tar.gz
|
|
27
|
+
*
|
|
28
|
+
* with TUF `custom` identity {releaseId, channel, platform} and tarball
|
|
29
|
+
* contents = the release-asset directory at its root (no wrapping component
|
|
30
|
+
* directory). The pipeline does not publish these targets yet; the flag
|
|
31
|
+
* stays off in production until it does.
|
|
32
|
+
*/
|
|
33
|
+
import { resolveTrustedReleaseTarget, type TrustedReleaseTarget } from './trust-metadata.js';
|
|
34
|
+
import type { ReleaseMetadata } from './release-metadata.js';
|
|
35
|
+
import type { ReleaseChannelName } from './product-identity.js';
|
|
36
|
+
import type { PdHomePaths } from './install-layout.js';
|
|
37
|
+
type TrustFetcher = NonNullable<Parameters<typeof resolveTrustedReleaseTarget>[0]['fetcher']>;
|
|
38
|
+
/** Acquisition failure with a stable reason; release-manager.ts maps it onto the ReleaseManagerError contract. */
|
|
39
|
+
export declare class ApplyPayloadError extends Error {
|
|
40
|
+
readonly reason: 'metadata_refresh_failed' | 'release_metadata_invalid';
|
|
41
|
+
readonly nextAction: string;
|
|
42
|
+
constructor(reason: 'metadata_refresh_failed' | 'release_metadata_invalid', message: string, nextAction: string);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Select the release asset matching THIS runtime (platform + arch + node ABI)
|
|
46
|
+
* from the signed release metadata. A payload built for a different node ABI
|
|
47
|
+
* can break native modules after the swap, so a mismatch is a refusal, never
|
|
48
|
+
* a warning (rc-3: fail loud before any mutation).
|
|
49
|
+
*/
|
|
50
|
+
export declare function selectReleaseAsset(releaseMetadata: ReleaseMetadata): ReleaseMetadata['assets'][number];
|
|
51
|
+
/** TUF target path of the release asset for THIS platform (Phase 1 convention). */
|
|
52
|
+
export declare function releaseAssetTargetPath(releaseId: string): string;
|
|
53
|
+
export interface DownloadReleaseAssetOptions {
|
|
54
|
+
readonly paths: PdHomePaths;
|
|
55
|
+
readonly metadataBaseUrl: string;
|
|
56
|
+
readonly fetcher?: TrustFetcher;
|
|
57
|
+
readonly releaseMetadata: ReleaseMetadata;
|
|
58
|
+
readonly channel: ReleaseChannelName;
|
|
59
|
+
/** Transaction the acquisition is journaled under; scopes the staging dir. */
|
|
60
|
+
readonly transactionId: string;
|
|
61
|
+
}
|
|
62
|
+
export interface DownloadedReleaseAsset {
|
|
63
|
+
readonly transactionDir: string;
|
|
64
|
+
readonly archivePath: string;
|
|
65
|
+
readonly trustedTarget: TrustedReleaseTarget;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the signed artifact target, cross-check the TUF identity and digest
|
|
69
|
+
* against the signed release metadata (rc-6), and download it with in-flight
|
|
70
|
+
* sha256 verification into `~/.pd/staging/<transactionId>/`.
|
|
71
|
+
* Zero writes happen before every identity check has passed.
|
|
72
|
+
*/
|
|
73
|
+
export declare function downloadReleaseAsset(options: DownloadReleaseAssetOptions): Promise<DownloadedReleaseAsset>;
|
|
74
|
+
export interface ExtractAndVerifyOptions {
|
|
75
|
+
readonly transactionDir: string;
|
|
76
|
+
readonly archivePath: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Extract the verified archive inside the staging transaction dir and run the
|
|
80
|
+
* installer's own self-contained asset preflight (the same verification gate
|
|
81
|
+
* a manual `npx create-principles-disciple` run of this payload would face).
|
|
82
|
+
* Every write stays inside the staging transaction dir.
|
|
83
|
+
*/
|
|
84
|
+
export declare function extractAndVerifyReleaseAsset(options: ExtractAndVerifyOptions): Promise<{
|
|
85
|
+
payloadDir: string;
|
|
86
|
+
}>;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=apply-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-payload.d.ts","sourceRoot":"","sources":["../../src/update/apply-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,EACL,2BAA2B,EAE3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE9F,kHAAkH;AAClH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,0BAA0B,CAAC;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,MAAM,EAAE,yBAAyB,GAAG,0BAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAK9G;CACF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAoBtG;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA2DhH;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAsBD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BpH"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRI-698 Phase 1 — apply payload acquisition for the ReleaseManager.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the signed metadata world (TUF-verified release metadata + artifact
|
|
5
|
+
* target) and the installer's deployment contract (a local, extracted,
|
|
6
|
+
* self-contained release-asset directory). Owns ONLY acquisition-side writes,
|
|
7
|
+
* strictly bounded to the ReleaseManager staging area:
|
|
8
|
+
*
|
|
9
|
+
* ~/.pd/staging/<transactionId>/release-asset.tar.gz (verified download)
|
|
10
|
+
* ~/.pd/staging/<transactionId>/payload/ (extracted payload)
|
|
11
|
+
*
|
|
12
|
+
* Deployment writes (~/.pd/runtime, host extension dirs) belong exclusively
|
|
13
|
+
* to the installer; this module never touches them (ADR-0023 Decision 1,
|
|
14
|
+
* ADR-0024 §2.1). release-manager.ts itself stays free of filesystem
|
|
15
|
+
* mutation: it orchestrates, this helper acquires.
|
|
16
|
+
*
|
|
17
|
+
* Import-graph constraint: this module is reachable from the console's
|
|
18
|
+
* dynamically-imported authority module, so `installer.js` (the heavy CLI
|
|
19
|
+
* graph) is loaded via dynamic import at acquisition time only — the
|
|
20
|
+
* governed check path never pays for it.
|
|
21
|
+
*
|
|
22
|
+
* Artifact target convention (Phase 1, see
|
|
23
|
+
* docs/architecture/PRI-698-phase4-preflight-analysis.md §4): the release
|
|
24
|
+
* pipeline publishes each release asset as TUF target
|
|
25
|
+
*
|
|
26
|
+
* releases/<releaseId>/release-asset-<platform>-<arch>.tar.gz
|
|
27
|
+
*
|
|
28
|
+
* with TUF `custom` identity {releaseId, channel, platform} and tarball
|
|
29
|
+
* contents = the release-asset directory at its root (no wrapping component
|
|
30
|
+
* directory). The pipeline does not publish these targets yet; the flag
|
|
31
|
+
* stays off in production until it does.
|
|
32
|
+
*/
|
|
33
|
+
import { execFileSync } from 'node:child_process';
|
|
34
|
+
import * as fs from 'node:fs';
|
|
35
|
+
import * as path from 'node:path';
|
|
36
|
+
import { resolveTrustedReleaseTarget, downloadTrustedReleasePayload, } from './trust-metadata.js';
|
|
37
|
+
/** Acquisition failure with a stable reason; release-manager.ts maps it onto the ReleaseManagerError contract. */
|
|
38
|
+
export class ApplyPayloadError extends Error {
|
|
39
|
+
reason;
|
|
40
|
+
nextAction;
|
|
41
|
+
constructor(reason, message, nextAction) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.name = 'ApplyPayloadError';
|
|
44
|
+
this.reason = reason;
|
|
45
|
+
this.nextAction = nextAction;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Select the release asset matching THIS runtime (platform + arch + node ABI)
|
|
50
|
+
* from the signed release metadata. A payload built for a different node ABI
|
|
51
|
+
* can break native modules after the swap, so a mismatch is a refusal, never
|
|
52
|
+
* a warning (rc-3: fail loud before any mutation).
|
|
53
|
+
*/
|
|
54
|
+
export function selectReleaseAsset(releaseMetadata) {
|
|
55
|
+
const { platform } = process;
|
|
56
|
+
const { arch } = process;
|
|
57
|
+
const nodeAbi = process.versions.modules;
|
|
58
|
+
const asset = releaseMetadata.assets.find((a) => a.platform === platform && a.arch === arch);
|
|
59
|
+
if (asset === undefined) {
|
|
60
|
+
throw new ApplyPayloadError('release_metadata_invalid', `Release ${releaseMetadata.productVersion} declares no asset for this platform (${platform}/${arch}); declared: ${releaseMetadata.assets.map((a) => `${a.platform}/${a.arch}`).join(', ') || 'none'}.`, 'Wait for a release asset covering this platform, or update from a supported host.');
|
|
61
|
+
}
|
|
62
|
+
if (asset.nodeAbi !== nodeAbi) {
|
|
63
|
+
throw new ApplyPayloadError('release_metadata_invalid', `Release ${releaseMetadata.productVersion} asset for ${platform}/${arch} targets node ABI ${asset.nodeAbi}, but this runtime is ABI ${nodeAbi}.`, 'Upgrade the bootstrap runtime first, or publish a release asset built for this node ABI.');
|
|
64
|
+
}
|
|
65
|
+
return asset;
|
|
66
|
+
}
|
|
67
|
+
/** TUF target path of the release asset for THIS platform (Phase 1 convention). */
|
|
68
|
+
export function releaseAssetTargetPath(releaseId) {
|
|
69
|
+
return `releases/${releaseId}/release-asset-${process.platform}-${process.arch}.tar.gz`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the signed artifact target, cross-check the TUF identity and digest
|
|
73
|
+
* against the signed release metadata (rc-6), and download it with in-flight
|
|
74
|
+
* sha256 verification into `~/.pd/staging/<transactionId>/`.
|
|
75
|
+
* Zero writes happen before every identity check has passed.
|
|
76
|
+
*/
|
|
77
|
+
export async function downloadReleaseAsset(options) {
|
|
78
|
+
const { paths, metadataBaseUrl, fetcher, releaseMetadata, channel, transactionId } = options;
|
|
79
|
+
const asset = selectReleaseAsset(releaseMetadata);
|
|
80
|
+
const targetPath = releaseAssetTargetPath(releaseMetadata.releaseId);
|
|
81
|
+
let trustedTarget;
|
|
82
|
+
try {
|
|
83
|
+
trustedTarget = await resolveTrustedReleaseTarget({
|
|
84
|
+
metadataDir: paths.trustDir,
|
|
85
|
+
metadataBaseUrl,
|
|
86
|
+
targetPath,
|
|
87
|
+
expectedChannel: channel,
|
|
88
|
+
expectedPlatform: process.platform,
|
|
89
|
+
fetcher,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new ApplyPayloadError('metadata_refresh_failed', `The signed artifact target for release ${releaseMetadata.releaseId} could not be resolved: ${error instanceof Error ? error.message : String(error)}`, 'Verify that the release pipeline published this release asset to the signed repository, then retry.');
|
|
94
|
+
}
|
|
95
|
+
// rc-6: the TUF-signed identity and the release metadata must name the same
|
|
96
|
+
// release and the same bytes — a mismatch means the channel points at
|
|
97
|
+
// metadata the artifact repo does not answer for. Refuse before any write.
|
|
98
|
+
if (trustedTarget.releaseId !== releaseMetadata.releaseId) {
|
|
99
|
+
throw new ApplyPayloadError('release_metadata_invalid', `Signed artifact target names release ${trustedTarget.releaseId}, but the channel metadata names ${releaseMetadata.releaseId}.`, 'The release repository is inconsistent; wait for refreshed signed metadata. Nothing was modified.');
|
|
100
|
+
}
|
|
101
|
+
if (trustedTarget.artifactSha256 !== asset.archiveSha256) {
|
|
102
|
+
throw new ApplyPayloadError('release_metadata_invalid', 'The signed artifact digest disagrees with the digest in the signed release metadata.', 'The release repository is inconsistent; wait for refreshed signed metadata. Nothing was modified.');
|
|
103
|
+
}
|
|
104
|
+
const transactionDir = path.join(paths.stagingDir, transactionId);
|
|
105
|
+
const archivePath = path.join(transactionDir, 'release-asset.tar.gz');
|
|
106
|
+
fs.mkdirSync(transactionDir, { recursive: true });
|
|
107
|
+
try {
|
|
108
|
+
await downloadTrustedReleasePayload({
|
|
109
|
+
metadataDir: paths.trustDir,
|
|
110
|
+
metadataBaseUrl,
|
|
111
|
+
targetPath,
|
|
112
|
+
destinationPath: archivePath,
|
|
113
|
+
fetcher,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw new ApplyPayloadError('metadata_refresh_failed', `The signed release asset could not be downloaded: ${error instanceof Error ? error.message : String(error)}`, 'Check network access to the release repository and retry; nothing was deployed.');
|
|
118
|
+
}
|
|
119
|
+
return { transactionDir, archivePath, trustedTarget };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Extract the release-asset tarball with the same discipline as the legacy
|
|
123
|
+
* console updater (EP-08): spawn tar via an argv array so paths stay data,
|
|
124
|
+
* and use cwd + RELATIVE archive/dir paths — Git Bash GNU tar on Windows
|
|
125
|
+
* misparses `D:\...` as a remote host (ERR: "Cannot connect to C:"), while
|
|
126
|
+
* Windows System32 bsdtar does not support GNU's --force-local. Relative is
|
|
127
|
+
* the universal form.
|
|
128
|
+
*/
|
|
129
|
+
function extractReleaseAssetArchive(transactionDir, payloadDir) {
|
|
130
|
+
execFileSync('tar', ['xzf', 'release-asset.tar.gz', '-C', 'payload'], {
|
|
131
|
+
cwd: transactionDir,
|
|
132
|
+
stdio: 'pipe',
|
|
133
|
+
});
|
|
134
|
+
if (!fs.existsSync(path.join(payloadDir, '_release', 'manifest.json'))) {
|
|
135
|
+
throw new Error('the artifact tarball does not contain a self-contained release asset at its root (missing _release/manifest.json)');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Extract the verified archive inside the staging transaction dir and run the
|
|
140
|
+
* installer's own self-contained asset preflight (the same verification gate
|
|
141
|
+
* a manual `npx create-principles-disciple` run of this payload would face).
|
|
142
|
+
* Every write stays inside the staging transaction dir.
|
|
143
|
+
*/
|
|
144
|
+
export async function extractAndVerifyReleaseAsset(options) {
|
|
145
|
+
const { transactionDir, archivePath } = options;
|
|
146
|
+
if (!fs.existsSync(archivePath)) {
|
|
147
|
+
throw new ApplyPayloadError('release_metadata_invalid', `The verified release archive is missing from staging: ${archivePath}`, 'Nothing was deployed; the runtime is unchanged. Retry the update.');
|
|
148
|
+
}
|
|
149
|
+
const payloadDir = path.join(transactionDir, 'payload');
|
|
150
|
+
try {
|
|
151
|
+
fs.mkdirSync(payloadDir, { recursive: true });
|
|
152
|
+
extractReleaseAssetArchive(transactionDir, payloadDir);
|
|
153
|
+
// Dynamic import: keeps installer.js (and its CLI dependency graph) out
|
|
154
|
+
// of the module graph until a real acquisition needs it — the governed
|
|
155
|
+
// check path never pays for it.
|
|
156
|
+
const { preflightSelfContainedReleaseAsset } = await import('../installer.js');
|
|
157
|
+
await preflightSelfContainedReleaseAsset(payloadDir);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error instanceof ApplyPayloadError)
|
|
161
|
+
throw error;
|
|
162
|
+
throw new ApplyPayloadError('release_metadata_invalid', `The downloaded release payload failed verification: ${error instanceof Error ? error.message : String(error)}`, 'Nothing was deployed; the runtime is unchanged. Retry the update after the release repository issue is resolved.');
|
|
163
|
+
}
|
|
164
|
+
return { payloadDir };
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=apply-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":"bootstrap-protocol.d.ts","sourceRoot":"","sources":["../../src/update/bootstrap-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,wBAAwB,CAAC;AAE/E,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAI1C;CACF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAsDnE;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE9E;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap-protocol.d.ts","sourceRoot":"","sources":["../../src/update/bootstrap-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,wBAAwB,CAAC;AAE/E,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAI1C;CACF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAsDnE;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE9E;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAkD5B"}
|