create-principles-disciple 1.133.13 → 1.134.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/package.json +3 -2
- package/console/dist/server/routes/update.js +181 -34
- package/console/dist/server/update/legacy-mutation-journal.d.ts +118 -0
- package/console/dist/server/update/legacy-mutation-journal.js +220 -0
- package/console/dist/server/utils/cli-smoke.d.ts +19 -0
- package/console/dist/server/utils/cli-smoke.js +60 -0
- package/console/dist/server/utils/installed-layout.d.ts +8 -0
- package/console/dist/server/utils/installed-layout.js +4 -0
- package/console/dist/ui/i18n/en.json +2 -2
- package/console/dist/ui/i18n/zh-CN.json +2 -2
- package/console/dist/web/assets/app.js +85 -15
- package/console/package.json +2 -2
- package/core/dist/runtime-v2/__tests__/recovery-sweep-service.test.js +130 -0
- package/core/dist/runtime-v2/__tests__/recovery-sweep-service.test.js.map +1 -1
- package/core/dist/runtime-v2/recovery-sweep-service.d.ts +9 -0
- package/core/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
- package/core/dist/runtime-v2/recovery-sweep-service.js +7 -2
- package/core/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
- package/core/package.json +1 -1
- package/dist/installer.d.ts +69 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +200 -14
- package/dist/installer.js.map +1 -1
- package/dist/uninstaller.d.ts.map +1 -1
- package/dist/uninstaller.js +7 -3
- package/dist/uninstaller.js.map +1 -1
- package/dist/update/install-layout.d.ts +39 -2
- package/dist/update/install-layout.d.ts.map +1 -1
- package/dist/update/install-layout.js +69 -3
- package/dist/update/install-layout.js.map +1 -1
- package/dist/update/release-manager-authority.d.ts +8 -0
- package/dist/update/release-manager-authority.d.ts.map +1 -1
- package/dist/update/release-manager-authority.js +26 -4
- package/dist/update/release-manager-authority.js.map +1 -1
- package/dist/update/release-metadata-source.d.ts +85 -0
- package/dist/update/release-metadata-source.d.ts.map +1 -0
- package/dist/update/release-metadata-source.js +102 -0
- package/dist/update/release-metadata-source.js.map +1 -0
- package/install-layout/dist/index.d.ts +8 -0
- package/install-layout/dist/index.js +1 -0
- package/install-layout/package.json +1 -1
- package/package.json +2 -2
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js +82 -6
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js.map +1 -1
- package/pd-cli/dist/index.js +6 -3
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/package.json +1 -1
- package/plugin/dist/bundle.js +44 -44
- package/plugin/dist/governance-audit.js +139 -139
- package/plugin/dist/rulehost-evidence.js +144 -144
- package/release-manager/dist/installer.d.ts +69 -0
- package/release-manager/dist/installer.d.ts.map +1 -1
- package/release-manager/dist/installer.js +200 -14
- package/release-manager/dist/installer.js.map +1 -1
- package/release-manager/dist/uninstaller.d.ts.map +1 -1
- package/release-manager/dist/uninstaller.js +7 -3
- package/release-manager/dist/uninstaller.js.map +1 -1
- package/release-manager/dist/update/install-layout.d.ts +39 -2
- package/release-manager/dist/update/install-layout.d.ts.map +1 -1
- package/release-manager/dist/update/install-layout.js +69 -3
- package/release-manager/dist/update/install-layout.js.map +1 -1
- package/release-manager/dist/update/release-manager-authority.d.ts +8 -0
- package/release-manager/dist/update/release-manager-authority.d.ts.map +1 -1
- package/release-manager/dist/update/release-manager-authority.js +26 -4
- package/release-manager/dist/update/release-manager-authority.js.map +1 -1
- package/release-manager/dist/update/release-metadata-source.d.ts +85 -0
- package/release-manager/dist/update/release-metadata-source.d.ts.map +1 -0
- package/release-manager/dist/update/release-metadata-source.js +102 -0
- package/release-manager/dist/update/release-metadata-source.js.map +1 -0
- package/release-manager/package.json +2 -2
package/console/package.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@sinclair/typebox": "^0.34.48",
|
|
34
34
|
"@tailwindcss/postcss": "^4.3.3",
|
|
35
35
|
"@tailwindcss/vite": "^4.3.3",
|
|
36
|
-
"autoprefixer": "^10.5.
|
|
36
|
+
"autoprefixer": "^10.5.5",
|
|
37
37
|
"better-sqlite3": "^13.0.3",
|
|
38
38
|
"class-variance-authority": "^0.7.1",
|
|
39
39
|
"clsx": "^2.1.1",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"react": "^19.2.8",
|
|
46
46
|
"react-dom": "^19.2.8",
|
|
47
47
|
"react-i18next": "^17.0.11",
|
|
48
|
-
"react-router-dom": "^7.18.
|
|
48
|
+
"react-router-dom": "^7.18.3",
|
|
49
49
|
"semver": "^7.8.5",
|
|
50
50
|
"sonner": "^2.0.7",
|
|
51
51
|
"tailwind-merge": "^3.6.0",
|
|
@@ -5,6 +5,9 @@ const mockRecoverTask = vi.fn();
|
|
|
5
5
|
const mockStateManagerClose = vi.fn();
|
|
6
6
|
const mockInitialize = vi.fn();
|
|
7
7
|
const mockAssertInitialized = vi.fn();
|
|
8
|
+
const mockListTasks = vi.fn();
|
|
9
|
+
const mockGetTask = vi.fn();
|
|
10
|
+
const mockUpdateTask = vi.fn();
|
|
8
11
|
vi.mock('../store/runtime-state-manager.js', () => ({
|
|
9
12
|
RuntimeStateManager: vi.fn().mockImplementation(function () {
|
|
10
13
|
this.initialize = mockInitialize;
|
|
@@ -13,8 +16,23 @@ vi.mock('../store/runtime-state-manager.js', () => ({
|
|
|
13
16
|
this.recoverTask = mockRecoverTask;
|
|
14
17
|
this.assertInitialized = mockAssertInitialized;
|
|
15
18
|
this.isInitialized = true;
|
|
19
|
+
this.listTasks = mockListTasks;
|
|
20
|
+
this.getTask = mockGetTask;
|
|
21
|
+
this.updateTask = mockUpdateTask;
|
|
16
22
|
}),
|
|
17
23
|
}));
|
|
24
|
+
function makeTask(overrides = {}) {
|
|
25
|
+
return {
|
|
26
|
+
taskId: 'task-x',
|
|
27
|
+
taskKind: 'dreamer',
|
|
28
|
+
status: 'failed',
|
|
29
|
+
createdAt: '2026-09-08T00:00:00.000Z',
|
|
30
|
+
updatedAt: '2026-09-08T00:00:00.000Z',
|
|
31
|
+
attemptCount: 1,
|
|
32
|
+
maxAttempts: 3,
|
|
33
|
+
...overrides,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
18
36
|
describe('createRecoverySweepService', () => {
|
|
19
37
|
beforeEach(() => {
|
|
20
38
|
vi.clearAllMocks();
|
|
@@ -80,4 +98,116 @@ describe('createRecoverySweepService', () => {
|
|
|
80
98
|
.rejects.toThrow('DB init failed');
|
|
81
99
|
});
|
|
82
100
|
});
|
|
101
|
+
describe('detectFailedTasks — recovery discovery (PRI-674)', () => {
|
|
102
|
+
beforeEach(() => {
|
|
103
|
+
vi.clearAllMocks();
|
|
104
|
+
vi.restoreAllMocks();
|
|
105
|
+
mockInitialize.mockResolvedValue(undefined);
|
|
106
|
+
mockStateManagerClose.mockResolvedValue(undefined);
|
|
107
|
+
mockAssertInitialized.mockReturnValue(undefined);
|
|
108
|
+
mockListTasks.mockResolvedValue([]);
|
|
109
|
+
});
|
|
110
|
+
it('returns failed diagnostician parent and diag_* stage tasks (GAP-1 regression)', async () => {
|
|
111
|
+
mockListTasks.mockResolvedValue([
|
|
112
|
+
makeTask({ taskId: 'diag-parent', taskKind: 'diagnostician', inputRef: 'pain-001' }),
|
|
113
|
+
makeTask({ taskId: 'diag-a', taskKind: 'diag_rootcause', inputRef: 'diag-parent' }),
|
|
114
|
+
makeTask({ taskId: 'diag-b', taskKind: 'diag_distiller', inputRef: 'diag-parent' }),
|
|
115
|
+
makeTask({ taskId: 'diag-c', taskKind: 'diag_router', inputRef: 'diag-parent' }),
|
|
116
|
+
]);
|
|
117
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
118
|
+
const results = await handle.service.detectFailedTasks();
|
|
119
|
+
expect(results.map((r) => r.taskId).sort())
|
|
120
|
+
.toEqual(['diag-a', 'diag-b', 'diag-c', 'diag-parent']);
|
|
121
|
+
// inputRef is the persisted stage→parent linkage consumed by CLI
|
|
122
|
+
// execution guidance (PRI-674 review P2).
|
|
123
|
+
expect(results.find((r) => r.taskId === 'diag-a')?.inputRef).toBe('diag-parent');
|
|
124
|
+
expect(results.find((r) => r.taskId === 'diag-parent')?.inputRef).toBe('pain-001');
|
|
125
|
+
});
|
|
126
|
+
it('returns inputRef null when the task record has none', async () => {
|
|
127
|
+
mockListTasks.mockResolvedValue([
|
|
128
|
+
makeTask({ taskId: 'no-ref', taskKind: 'diag_router', inputRef: undefined }),
|
|
129
|
+
]);
|
|
130
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
131
|
+
const results = await handle.service.detectFailedTasks();
|
|
132
|
+
expect(results).toHaveLength(1);
|
|
133
|
+
expect(results[0]?.inputRef).toBeNull();
|
|
134
|
+
});
|
|
135
|
+
it('still returns peer runner kinds with isExhausted computed', async () => {
|
|
136
|
+
mockListTasks.mockResolvedValue([
|
|
137
|
+
makeTask({ taskId: 'peer-dreamer', taskKind: 'dreamer', attemptCount: 1, maxAttempts: 3 }),
|
|
138
|
+
makeTask({ taskId: 'peer-rollout', taskKind: 'rollout_reviewer', attemptCount: 3, maxAttempts: 3 }),
|
|
139
|
+
]);
|
|
140
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
141
|
+
const results = await handle.service.detectFailedTasks();
|
|
142
|
+
expect(results.map((r) => r.taskId).sort()).toEqual(['peer-dreamer', 'peer-rollout']);
|
|
143
|
+
expect(results.find((r) => r.taskId === 'peer-dreamer')?.isExhausted).toBe(false);
|
|
144
|
+
expect(results.find((r) => r.taskId === 'peer-rollout')?.isExhausted).toBe(true);
|
|
145
|
+
});
|
|
146
|
+
it('excludes failed tasks of unrelated kinds', async () => {
|
|
147
|
+
mockListTasks.mockResolvedValue([
|
|
148
|
+
makeTask({ taskId: 'other', taskKind: 'principle_candidate_intake' }),
|
|
149
|
+
]);
|
|
150
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
151
|
+
const results = await handle.service.detectFailedTasks();
|
|
152
|
+
expect(results).toEqual([]);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe('recoverFailedTask — reset semantics unchanged (PRI-674)', () => {
|
|
156
|
+
beforeEach(() => {
|
|
157
|
+
vi.clearAllMocks();
|
|
158
|
+
vi.restoreAllMocks();
|
|
159
|
+
mockInitialize.mockResolvedValue(undefined);
|
|
160
|
+
mockStateManagerClose.mockResolvedValue(undefined);
|
|
161
|
+
mockAssertInitialized.mockReturnValue(undefined);
|
|
162
|
+
});
|
|
163
|
+
it('resets a failed diagnostician task to pending with lease/attempts/result cleared', async () => {
|
|
164
|
+
mockGetTask.mockResolvedValue(makeTask({
|
|
165
|
+
taskId: 'diag-parent',
|
|
166
|
+
taskKind: 'diagnostician',
|
|
167
|
+
attemptCount: 1,
|
|
168
|
+
maxAttempts: 3,
|
|
169
|
+
lastError: 'max_attempts_exceeded',
|
|
170
|
+
leaseOwner: 'runner-1',
|
|
171
|
+
leaseExpiresAt: '2026-09-08T01:00:00.000Z',
|
|
172
|
+
resultRef: 'artifact://partial',
|
|
173
|
+
}));
|
|
174
|
+
mockUpdateTask.mockImplementation(async (taskId, patch) => makeTask({ taskId, taskKind: 'diagnostician', ...patch }));
|
|
175
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
176
|
+
const result = await handle.service.recoverFailedTask('diag-parent');
|
|
177
|
+
expect(mockUpdateTask).toHaveBeenCalledWith('diag-parent', {
|
|
178
|
+
status: 'pending',
|
|
179
|
+
attemptCount: 0,
|
|
180
|
+
maxAttempts: 3,
|
|
181
|
+
lastError: null,
|
|
182
|
+
leaseOwner: null,
|
|
183
|
+
leaseExpiresAt: null,
|
|
184
|
+
resultRef: null,
|
|
185
|
+
});
|
|
186
|
+
expect(result).toMatchObject({
|
|
187
|
+
taskId: 'diag-parent',
|
|
188
|
+
previousStatus: 'failed',
|
|
189
|
+
newStatus: 'pending',
|
|
190
|
+
forceApplied: false,
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
it('refuses an exhausted task without force (retry guard unchanged)', async () => {
|
|
194
|
+
mockGetTask.mockResolvedValue(makeTask({
|
|
195
|
+
taskId: 'diag-exhausted',
|
|
196
|
+
taskKind: 'diagnostician',
|
|
197
|
+
attemptCount: 3,
|
|
198
|
+
maxAttempts: 3,
|
|
199
|
+
}));
|
|
200
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
201
|
+
await expect(handle.service.recoverFailedTask('diag-exhausted'))
|
|
202
|
+
.rejects.toThrow(/exhausted max attempts/);
|
|
203
|
+
expect(mockUpdateTask).not.toHaveBeenCalled();
|
|
204
|
+
});
|
|
205
|
+
it('returns null for a task that is not failed', async () => {
|
|
206
|
+
mockGetTask.mockResolvedValue(makeTask({ taskId: 'diag-ok', status: 'succeeded' }));
|
|
207
|
+
const handle = await createRecoverySweepService({ workspaceDir: '/tmp/test-ws' });
|
|
208
|
+
const result = await handle.service.recoverFailedTask('diag-ok');
|
|
209
|
+
expect(result).toBeNull();
|
|
210
|
+
expect(mockUpdateTask).not.toHaveBeenCalled();
|
|
211
|
+
});
|
|
212
|
+
});
|
|
83
213
|
//# sourceMappingURL=recovery-sweep-service.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-sweep-service.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/recovery-sweep-service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-sweep-service.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/recovery-sweep-service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,15 @@ export interface FailedTaskRecoveryInfo {
|
|
|
7
7
|
maxAttempts: number;
|
|
8
8
|
isExhausted: boolean;
|
|
9
9
|
status: string;
|
|
10
|
+
/**
|
|
11
|
+
* Persisted inputRef of the task record. For diag_* stage tasks this is
|
|
12
|
+
* the parent diagnostician task ID (linkage written by
|
|
13
|
+
* SplitDiagnosticianRunner.ensureSubTask); for diagnostician parent tasks
|
|
14
|
+
* it is the source painId. null when absent — consumers that need the
|
|
15
|
+
* stage→parent linkage must fall back to the diag_<stage>-<parentTaskId>
|
|
16
|
+
* ID convention and report unresolved linkage honestly.
|
|
17
|
+
*/
|
|
18
|
+
inputRef: string | null;
|
|
10
19
|
}
|
|
11
20
|
export interface FailedTaskRecoveryResult {
|
|
12
21
|
taskId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-sweep-service.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/recovery-sweep-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAI1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-sweep-service.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/recovery-sweep-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAI1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5D,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACvD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IAC7F;;;;;OAKG;IACH,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AA+ED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,0BAA0B,CAAC,CAOrC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRuntimeStateHandle } from './runtime-state-handle.js';
|
|
2
2
|
import { PDRuntimeError } from './error-categories.js';
|
|
3
|
-
import {
|
|
3
|
+
import { isRunnerKind } from './internalization/peer-runner-contracts.js';
|
|
4
4
|
import { ownerRetryNeedsHumanReviewTask } from './internalization/owner-retry.js';
|
|
5
5
|
class RecoverySweepServiceImpl {
|
|
6
6
|
stateManager;
|
|
@@ -16,7 +16,11 @@ class RecoverySweepServiceImpl {
|
|
|
16
16
|
async detectFailedTasks() {
|
|
17
17
|
const failedTasks = await this.stateManager.listTasks({ status: 'failed' });
|
|
18
18
|
return failedTasks
|
|
19
|
-
|
|
19
|
+
// Discovery must cover everything recoverFailedTask() can recover: the
|
|
20
|
+
// 6 peer runners, the diag_* split-pipeline stages (isRunnerKind), and
|
|
21
|
+
// the parent 'diagnostician' task (a TaskRecord kind, not a RunnerKind).
|
|
22
|
+
// Unrelated kinds (e.g. principle_candidate_intake) stay excluded.
|
|
23
|
+
.filter(t => isRunnerKind(t.taskKind) || t.taskKind === 'diagnostician')
|
|
20
24
|
.map(t => ({
|
|
21
25
|
taskId: t.taskId,
|
|
22
26
|
taskKind: t.taskKind,
|
|
@@ -24,6 +28,7 @@ class RecoverySweepServiceImpl {
|
|
|
24
28
|
maxAttempts: t.maxAttempts,
|
|
25
29
|
isExhausted: t.attemptCount >= t.maxAttempts,
|
|
26
30
|
status: t.status,
|
|
31
|
+
inputRef: t.inputRef ?? null,
|
|
27
32
|
}));
|
|
28
33
|
}
|
|
29
34
|
async recoverFailedTask(taskId, force = false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-sweep-service.js","sourceRoot":"","sources":["../../src/runtime-v2/recovery-sweep-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"recovery-sweep-service.js","sourceRoot":"","sources":["../../src/runtime-v2/recovery-sweep-service.ts"],"names":[],"mappings":"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"}
|
package/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@principles/core",
|
|
3
|
-
"version": "1.278.
|
|
3
|
+
"version": "1.278.6",
|
|
4
4
|
"description": "Pure-logic core of Principles Disciple, an AI Agent Governance System - pain signal capture and principle proposal (no I/O)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
package/dist/installer.d.ts
CHANGED
|
@@ -17,6 +17,54 @@ export declare const CONVERSATION_ACCESS_CONFIG_KEY: 'allowConversationAccess';
|
|
|
17
17
|
export declare function ensureConversationAccess(config: Record<string, unknown>): Record<string, unknown>;
|
|
18
18
|
export declare function resolveConsolePortBase(): number;
|
|
19
19
|
export declare function mergeInstallManifestHosts(current: unknown, host: HostTarget): ('codex' | 'openclaw')[];
|
|
20
|
+
/**
|
|
21
|
+
* PRI-709 P0-2 — active record commit point (ADR-0024 D-2).
|
|
22
|
+
*
|
|
23
|
+
* `~/.pd/active.json` is the deployment identity source: it records WHAT is
|
|
24
|
+
* actually deployed, keyed to the transaction that deployed it. Before PRI-709
|
|
25
|
+
* the installer never wrote it (the only writer was legacy-migration.ts), so
|
|
26
|
+
* every real install and every ReleaseManager apply left active.json absent or
|
|
27
|
+
* stale — the PRI-698 audit finding F-2.
|
|
28
|
+
*
|
|
29
|
+
* Identity is taken from the transaction, never recomputed here: the journal
|
|
30
|
+
* was opened with the payload's own identity (`_release/manifest.json` digest
|
|
31
|
+
* when the self-contained asset ships one), and active.json must agree with
|
|
32
|
+
* the journal of the transaction that produced it. A divergent second
|
|
33
|
+
* computation would break the audit trail.
|
|
34
|
+
*
|
|
35
|
+
* Ordering: journal-first. The caller appends `confirmed` and only then calls
|
|
36
|
+
* this, so a crash between the two is recoverable from the journal (the
|
|
37
|
+
* reverse order would leave an unjournaled active.json).
|
|
38
|
+
*
|
|
39
|
+
* Failure policy — Tier 2: this runs AFTER the backup was discarded, so the
|
|
40
|
+
* install is already committed and must not be failed here. A write failure is
|
|
41
|
+
* reported loud (rc-9) and returned to the caller; it never bricks the
|
|
42
|
+
* installation.
|
|
43
|
+
*/
|
|
44
|
+
export interface ActiveRecordCommitResult {
|
|
45
|
+
readonly written: boolean;
|
|
46
|
+
readonly activeRecordPath: string;
|
|
47
|
+
readonly generation: number;
|
|
48
|
+
readonly previousReleaseId: string | null;
|
|
49
|
+
/** Set when the record could not be written or the previous one was unreadable. */
|
|
50
|
+
readonly reason?: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function commitInstallerActiveRecord(journal: InstallerJournal): ActiveRecordCommitResult;
|
|
53
|
+
/**
|
|
54
|
+
* PRI-709 P0-1 — installer supply path for the release metadata source.
|
|
55
|
+
*
|
|
56
|
+
* The installer is the only component that legitimately knows the metadata
|
|
57
|
+
* repository at install time, so it persists `PD_RELEASE_METADATA_URL` into
|
|
58
|
+
* `~/.pd/install.json` (the durable `install_config` tier). Without this the
|
|
59
|
+
* variable had to be exported in every shell that wanted a governed update
|
|
60
|
+
* check (PRI-698 audit F-4).
|
|
61
|
+
*
|
|
62
|
+
* Absent env is a no-op — an install with no metadata source stays
|
|
63
|
+
* unconfigured rather than persisting a guessed URL. A malformed env value is
|
|
64
|
+
* reported and skipped: it must never be written into install.json, where the
|
|
65
|
+
* strict reader would then fail loud and mark the install corrupt.
|
|
66
|
+
*/
|
|
67
|
+
export declare function persistReleaseMetadataSource(): void;
|
|
20
68
|
/**
|
|
21
69
|
* 验证原生模块:better-sqlite3 随发布资产携带 prebuilt 二进制
|
|
22
70
|
* (prebuilds/*.node),node-gyp-build 在 require 时解析——无需(也没有)
|
|
@@ -161,6 +209,27 @@ export declare function ensureBundledPdCliResolution(pdCliRoot: string): void;
|
|
|
161
209
|
export declare function runLegacyRuleContractPreflight(pluginDir: string, workspaceDir: string, runScan?: LegacyRulePreflightRunner): Promise<LegacyRulePreflightOutcome>;
|
|
162
210
|
export declare function checkBuiltPlugin(pluginDir: string): Promise<void>;
|
|
163
211
|
export declare function installPluginToStaging(pluginDir: string, language: SkillLanguage): Promise<void>;
|
|
212
|
+
/**
|
|
213
|
+
* PRI-711: materialize node_modules links for the INSTALLED codex-adapter so
|
|
214
|
+
* its declared `file:../<component>` dependencies resolve under ESM realpath
|
|
215
|
+
* rules. The adapter's dist imports @principles/host-runtime and
|
|
216
|
+
* @principles/core, and pd-cli's eager import graph (health-codex) statically
|
|
217
|
+
* imports the adapter — without these links every pd command dies with
|
|
218
|
+
* ERR_MODULE_NOT_FOUND at startup (observed 2026-09-09: the 1.231.2 full
|
|
219
|
+
* update swapped in Slice-D pd-cli while the deployed adapter, laid down by
|
|
220
|
+
* older installers, had no node_modules at all).
|
|
221
|
+
*
|
|
222
|
+
* Data-driven from the deployed adapter manifest: every dependency whose ref
|
|
223
|
+
* starts with `file:../` names a sibling runtime component directory. An
|
|
224
|
+
* existing correct link is kept; a stale physical copy (self-contained
|
|
225
|
+
* payloads ship materialized node_modules) or a wrong-target link is
|
|
226
|
+
* replaced with the canonical junction/symlink, mirroring syncPdCli.
|
|
227
|
+
* Idempotent. MUST run after installBundledCodexAdapter AND the
|
|
228
|
+
* core/host-runtime/install-layout installs — the manifest declares all
|
|
229
|
+
* three as file:../ siblings, and a missing sibling means a corrupted
|
|
230
|
+
* payload or a call-order regression, which fails the install loudly.
|
|
231
|
+
*/
|
|
232
|
+
export declare function ensureCodexAdapterResolution(): void;
|
|
164
233
|
export interface InstallResult {
|
|
165
234
|
success: boolean;
|
|
166
235
|
workspaceDir: string;
|
package/dist/installer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAmBL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAExB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|