openplanr 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +33 -8
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/services/credential-backends.d.ts +4 -0
- package/dist/services/credential-backends.d.ts.map +1 -1
- package/dist/services/credential-backends.js +21 -15
- package/dist/services/credential-backends.js.map +1 -1
- package/dist/services/operate/advisors.d.ts +18 -3
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +76 -4
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/engine.d.ts +1 -0
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +29 -3
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +10 -13
- package/dist/services/operate/evidence.js.map +1 -1
- package/dist/services/operate/index.d.ts.map +1 -1
- package/dist/services/operate/index.js +171 -36
- package/dist/services/operate/index.js.map +1 -1
- package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/answer-service.js +17 -1
- package/dist/services/operate/interaction/answer-service.js.map +1 -1
- package/dist/services/operate/interaction/initialization-replay.d.ts +9 -0
- package/dist/services/operate/interaction/initialization-replay.d.ts.map +1 -0
- package/dist/services/operate/interaction/initialization-replay.js +64 -0
- package/dist/services/operate/interaction/initialization-replay.js.map +1 -0
- package/dist/services/operate/interaction/question-engine.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-engine.js +28 -17
- package/dist/services/operate/interaction/question-engine.js.map +1 -1
- package/dist/services/operate/interaction/session-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/session-service.js +40 -13
- package/dist/services/operate/interaction/session-service.js.map +1 -1
- package/dist/services/operate/maintenance.d.ts +12 -0
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +334 -35
- package/dist/services/operate/maintenance.js.map +1 -1
- package/dist/services/operate/protocol.d.ts +17 -1
- package/dist/services/operate/protocol.d.ts.map +1 -1
- package/dist/services/operate/protocol.js.map +1 -1
- package/dist/services/operate/reports.d.ts +28 -0
- package/dist/services/operate/reports.d.ts.map +1 -0
- package/dist/services/operate/reports.js +134 -0
- package/dist/services/operate/reports.js.map +1 -0
- package/dist/services/operate/types.d.ts +82 -3
- package/dist/services/operate/types.d.ts.map +1 -1
- package/dist/services/operate/types.js.map +1 -1
- package/dist/services/pipeline-package-service.d.ts +2 -0
- package/dist/services/pipeline-package-service.d.ts.map +1 -1
- package/dist/services/pipeline-package-service.js +2 -1
- package/dist/services/pipeline-package-service.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +4 -1
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,6 +12,25 @@ export const GUIDED_SESSION_TTL_MS = 24 * 60 * 60 * 1000;
|
|
|
12
12
|
export const GUIDED_ANSWER_MAX_BYTES = 64 * 1024;
|
|
13
13
|
const SESSION_ID = /^GIS-[A-Za-z0-9._-]{8,128}$/;
|
|
14
14
|
const execFileAsync = promisify(execFile);
|
|
15
|
+
const STATE_WRITE_ERROR_CODES = new Set([
|
|
16
|
+
'EACCES',
|
|
17
|
+
'EDQUOT',
|
|
18
|
+
'ENOSPC',
|
|
19
|
+
'ENOTDIR',
|
|
20
|
+
'EPERM',
|
|
21
|
+
'EROFS',
|
|
22
|
+
]);
|
|
23
|
+
function guidedStateWriteError(error) {
|
|
24
|
+
const code = error?.code;
|
|
25
|
+
if (!code || !STATE_WRITE_ERROR_CODES.has(code))
|
|
26
|
+
return null;
|
|
27
|
+
return new OperateError('E_OPERATE_STATE_UNAVAILABLE', 'Operating Board cannot write its machine-local guided-session state. Grant the active runtime sandbox write access to OPENPLANR_STATE_ROOT (or the default ~/.planr state root), then retry.', {
|
|
28
|
+
stateClass: 'machine-local',
|
|
29
|
+
requiredPermission: 'write',
|
|
30
|
+
platformCode: code,
|
|
31
|
+
recoveryCommand: 'planr operate init --json',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
15
34
|
export function createGuidedSessionId() {
|
|
16
35
|
return `GIS-${randomBytes(18).toString('base64url')}`;
|
|
17
36
|
}
|
|
@@ -94,19 +113,27 @@ async function validateSession(session) {
|
|
|
94
113
|
}
|
|
95
114
|
async function atomicSessionWrite(projectRoot, session, localRoot) {
|
|
96
115
|
await validateSession(session);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
try {
|
|
117
|
+
const target = sessionPath(projectRoot, session.sessionId, localRoot);
|
|
118
|
+
await mkdir(path.dirname(target), { recursive: true, mode: 0o700 });
|
|
119
|
+
const raw = `${canonicalize(session)}\n`;
|
|
120
|
+
const key = await loadOrCreateSessionKey(projectRoot, localRoot);
|
|
121
|
+
const temporary = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
122
|
+
const macTarget = sessionMacPath(projectRoot, session.sessionId, localRoot);
|
|
123
|
+
const macTemporary = `${macTarget}.${process.pid}.${randomUUID()}.tmp`;
|
|
124
|
+
await writeFile(temporary, raw, { mode: 0o600, flag: 'wx' });
|
|
125
|
+
await writeFile(macTemporary, `${sessionMac(raw, key)}\n`, { mode: 0o600, flag: 'wx' });
|
|
126
|
+
await rename(temporary, target);
|
|
127
|
+
await rename(macTemporary, macTarget);
|
|
128
|
+
await chmod(target, 0o600);
|
|
129
|
+
await chmod(macTarget, 0o600);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
const normalized = guidedStateWriteError(error);
|
|
133
|
+
if (normalized)
|
|
134
|
+
throw normalized;
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
110
137
|
}
|
|
111
138
|
export async function createGuidedSession(input) {
|
|
112
139
|
const now = input.now ?? new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-service.js","sourceRoot":"","sources":["../../../../src/services/operate/interaction/session-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-service.js","sourceRoot":"","sources":["../../../../src/services/operate/interaction/session-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OperatingEventStore } from './event-store.js';
|
|
2
|
+
import { type OperatingAdapterHandoff, type OperatingRoleResult } from './types.js';
|
|
1
3
|
export declare function operatingCacheAction(input: {
|
|
2
4
|
projectRoot: string;
|
|
3
5
|
action: 'status' | 'purge';
|
|
@@ -24,6 +26,16 @@ export declare function repairOperatingSecurity(input: {
|
|
|
24
26
|
localRoot?: string;
|
|
25
27
|
faultInjector?: (boundary: 'project-quarantined') => void | Promise<void>;
|
|
26
28
|
}): Promise<unknown>;
|
|
29
|
+
export declare function readPersistedOperatingRoleResults(store: OperatingEventStore, cycleId: string): Promise<OperatingRoleResult[]>;
|
|
30
|
+
export declare function createOperatingAdapterStartHandoff(input: {
|
|
31
|
+
projectRoot: string;
|
|
32
|
+
cycleId: string;
|
|
33
|
+
evidenceDigest: `sha256:${string}`;
|
|
34
|
+
runtime: string;
|
|
35
|
+
phase: 'advisors' | 'chair';
|
|
36
|
+
roles: string[];
|
|
37
|
+
localRoot?: string;
|
|
38
|
+
}): Promise<OperatingAdapterHandoff>;
|
|
27
39
|
export declare function operateAdapterLifecycle(input: {
|
|
28
40
|
projectRoot: string;
|
|
29
41
|
action: 'prepare' | 'record' | 'resume' | 'finalize' | 'cancel';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../../src/services/operate/maintenance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../../src/services/operate/maintenance.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAIL,KAAK,uBAAuB,EAK5B,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAsIpB,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDnB;AA2BD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqEnB;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,MAAM,EAAE,CAAA;CAAE,CAAC,CAiCxD;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,GAAG,OAAO,CAAC,OAAO,CAAC,CA4RnB;AAsCD,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAyBhC;AAgFD,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,UAAU,MAAM,EAAE,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAgDnC;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmlBnB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createHmac, randomBytes, randomUUID, timingSafeEqual } from 'node:crypto';
|
|
2
2
|
import { mkdir, readdir, readFile, rename, rm, unlink, writeFile } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertAdvisorOutputMatchesBrief, buildAdvisorOperatingContext, createOperatingAdvisorPack, } from './advisors.js';
|
|
4
|
+
import { advisorResponseContractDetails, assertAdvisorOutputMatchesBrief, buildAdvisorOperatingContext, createNativeOperatingRoleResult, createOperatingAdvisorPack, } from './advisors.js';
|
|
5
5
|
import { canonicalDigest, canonicalize, sha256Digest } from './canonical.js';
|
|
6
6
|
import { operatingProjectKey } from './config.js';
|
|
7
7
|
import { buildChairEvidence } from './engine.js';
|
|
@@ -17,6 +17,50 @@ import { assertOperatingArtifact, loadOperatingProtocol } from './protocol.js';
|
|
|
17
17
|
import { containsSecret, redactSensitiveText } from './redaction.js';
|
|
18
18
|
import { OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, OperateError, } from './types.js';
|
|
19
19
|
import { resolveContainedPath, resolveOperatingPaths } from './workspace.js';
|
|
20
|
+
function adapterSessionSummary(session) {
|
|
21
|
+
const { roleBriefs: _roleBriefs, rolePacks: _rolePacks, ...summary } = session;
|
|
22
|
+
return summary;
|
|
23
|
+
}
|
|
24
|
+
async function adapterHandoff(session) {
|
|
25
|
+
const recorded = new Set(session.recordedRoles);
|
|
26
|
+
const state = session.state === 'cancelled'
|
|
27
|
+
? 'cancelled'
|
|
28
|
+
: session.state === 'finalized'
|
|
29
|
+
? 'continue-required'
|
|
30
|
+
: session.roles.some((role) => !recorded.has(role))
|
|
31
|
+
? 'record-required'
|
|
32
|
+
: 'finalize-required';
|
|
33
|
+
const protocol = await loadOperatingProtocol();
|
|
34
|
+
const handoff = protocol.createOperatingAdapterHandoff({
|
|
35
|
+
phase: session.phase,
|
|
36
|
+
state,
|
|
37
|
+
cycleId: session.cycleId,
|
|
38
|
+
evidenceDigest: session.evidenceDigest,
|
|
39
|
+
runtime: session.runtime,
|
|
40
|
+
idempotencyKey: session.idempotencyKey,
|
|
41
|
+
lease: session.lease,
|
|
42
|
+
expiresAt: session.expiresAt,
|
|
43
|
+
roles: session.roles.map((role) => ({
|
|
44
|
+
roleId: role,
|
|
45
|
+
status: recorded.has(role) ? 'recorded' : 'pending',
|
|
46
|
+
inputDigest: session.roleInputDigests[role],
|
|
47
|
+
})),
|
|
48
|
+
});
|
|
49
|
+
return protocol.validateOperatingAdapterHandoffBindings(handoff);
|
|
50
|
+
}
|
|
51
|
+
function adapterPhase(roles) {
|
|
52
|
+
return roles.length === 1 && roles[0] === 'chair' ? 'chair' : 'advisors';
|
|
53
|
+
}
|
|
54
|
+
function sameRoleSet(left, right) {
|
|
55
|
+
return (left.length === right.length &&
|
|
56
|
+
[...left].sort().every((role, index) => role === [...right].sort()[index]));
|
|
57
|
+
}
|
|
58
|
+
function sessionExpired(session) {
|
|
59
|
+
return Date.parse(session.expiresAt) <= Date.now();
|
|
60
|
+
}
|
|
61
|
+
function retryRunCommand(session) {
|
|
62
|
+
return `planr operate run --cycle-id ${session.cycleId} --runtime ${session.runtime} --json`;
|
|
63
|
+
}
|
|
20
64
|
async function atomicPrivateWrite(target, value) {
|
|
21
65
|
await mkdir(path.dirname(target), { recursive: true, mode: 0o700 });
|
|
22
66
|
const temporary = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
@@ -490,7 +534,7 @@ async function persistedAdapterEvidence(store, cycleId) {
|
|
|
490
534
|
}
|
|
491
535
|
return assertOperatingArtifact('operating-evidence', record.content);
|
|
492
536
|
}
|
|
493
|
-
async function
|
|
537
|
+
export async function readPersistedOperatingRoleResults(store, cycleId) {
|
|
494
538
|
const replay = await store.replay();
|
|
495
539
|
const byRole = new Map();
|
|
496
540
|
for (const event of replay.events) {
|
|
@@ -509,17 +553,87 @@ async function persistedAdapterResults(store, cycleId) {
|
|
|
509
553
|
return [...byRole.values()].sort((left, right) => left.roleId.localeCompare(right.roleId));
|
|
510
554
|
}
|
|
511
555
|
async function readAdapterSession(projectRoot, cycleId, localRoot) {
|
|
512
|
-
const
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
556
|
+
const parsed = JSON.parse(await readFile(adapterSessionPath(projectRoot, cycleId, localRoot), 'utf8'));
|
|
557
|
+
const session = {
|
|
558
|
+
...parsed,
|
|
559
|
+
phase: parsed.phase ?? adapterPhase(parsed.roles ?? []),
|
|
560
|
+
runtime: parsed.runtime ?? 'auto',
|
|
561
|
+
};
|
|
562
|
+
if (session.implementation !== 'openplanr-operate-adapter') {
|
|
563
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'Adapter session is invalid.');
|
|
564
|
+
}
|
|
565
|
+
if (sessionExpired(session)) {
|
|
566
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'Adapter session expired.', {
|
|
567
|
+
cycleId,
|
|
568
|
+
recoveryCommand: retryRunCommand(session),
|
|
569
|
+
});
|
|
516
570
|
}
|
|
517
571
|
return session;
|
|
518
572
|
}
|
|
519
|
-
function assertAdapterBinding(session, lease, idempotencyKey) {
|
|
520
|
-
if (session.lease !== lease ||
|
|
521
|
-
|
|
573
|
+
function assertAdapterBinding(session, lease, idempotencyKey, evidenceDigest) {
|
|
574
|
+
if (session.lease !== lease ||
|
|
575
|
+
session.idempotencyKey !== idempotencyKey ||
|
|
576
|
+
session.evidenceDigest !== evidenceDigest) {
|
|
577
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Adapter evidence, lease, or idempotency binding does not match the prepared session.');
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
async function assertAdapterCycleBinding(input, session) {
|
|
581
|
+
const store = new OperatingEventStore(input.projectRoot, { localRoot: input.localRoot });
|
|
582
|
+
const state = await store.state();
|
|
583
|
+
const cycle = state.cycles.find((record) => record.id === input.cycleId);
|
|
584
|
+
if (!cycle || !['advising', 'blocked'].includes(cycle.state)) {
|
|
585
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Adapter session requires cycle ${input.cycleId} to remain advising or blocked.`);
|
|
586
|
+
}
|
|
587
|
+
const cycleManifest = cycle;
|
|
588
|
+
if (cycleManifest.producer.runtime !== session.runtime) {
|
|
589
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Adapter runtime no longer matches the immutable cycle runtime.');
|
|
590
|
+
}
|
|
591
|
+
const evidence = await persistedAdapterEvidence(store, input.cycleId);
|
|
592
|
+
if (evidence.fingerprint !== session.evidenceDigest) {
|
|
593
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Adapter evidence no longer matches the committed cycle snapshot.');
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
export async function createOperatingAdapterStartHandoff(input) {
|
|
597
|
+
const target = adapterSessionPath(input.projectRoot, input.cycleId, input.localRoot);
|
|
598
|
+
const existing = await readFile(target, 'utf8')
|
|
599
|
+
.then((raw) => JSON.parse(raw))
|
|
600
|
+
.catch(() => null);
|
|
601
|
+
if (existing) {
|
|
602
|
+
const normalized = {
|
|
603
|
+
...existing,
|
|
604
|
+
phase: existing.phase ?? adapterPhase(existing.roles ?? []),
|
|
605
|
+
runtime: existing.runtime ?? 'auto',
|
|
606
|
+
};
|
|
607
|
+
const exact = normalized.evidenceDigest === input.evidenceDigest &&
|
|
608
|
+
normalized.runtime === input.runtime &&
|
|
609
|
+
normalized.phase === input.phase &&
|
|
610
|
+
sameRoleSet(normalized.roles, input.roles);
|
|
611
|
+
if (!sessionExpired(normalized) && normalized.state !== 'cancelled' && exact) {
|
|
612
|
+
return adapterHandoff(normalized);
|
|
613
|
+
}
|
|
614
|
+
if (!sessionExpired(normalized) &&
|
|
615
|
+
['prepared', 'recording'].includes(normalized.state) &&
|
|
616
|
+
!exact) {
|
|
617
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', `Cycle ${input.cycleId} already has a different active adapter session.`, { recoveryCommand: retryRunCommand(normalized) });
|
|
618
|
+
}
|
|
522
619
|
}
|
|
620
|
+
const protocol = await loadOperatingProtocol();
|
|
621
|
+
const handoff = protocol.createOperatingAdapterHandoff({
|
|
622
|
+
phase: input.phase,
|
|
623
|
+
state: 'prepare-required',
|
|
624
|
+
cycleId: input.cycleId,
|
|
625
|
+
evidenceDigest: input.evidenceDigest,
|
|
626
|
+
runtime: input.runtime,
|
|
627
|
+
idempotencyKey: `native-${input.cycleId}-${input.phase}-${randomBytes(12).toString('hex')}`,
|
|
628
|
+
lease: null,
|
|
629
|
+
expiresAt: null,
|
|
630
|
+
roles: [...new Set(input.roles)].sort().map((roleId) => ({
|
|
631
|
+
roleId,
|
|
632
|
+
status: 'awaiting-prepare',
|
|
633
|
+
inputDigest: null,
|
|
634
|
+
})),
|
|
635
|
+
});
|
|
636
|
+
return protocol.validateOperatingAdapterHandoffBindings(handoff);
|
|
523
637
|
}
|
|
524
638
|
export async function operateAdapterLifecycle(input) {
|
|
525
639
|
if (!input.cycleId || !input.idempotencyKey) {
|
|
@@ -538,11 +652,6 @@ export async function operateAdapterLifecycle(input) {
|
|
|
538
652
|
if (!cycle || !['advising', 'blocked'].includes(cycle.state)) {
|
|
539
653
|
throw new OperateError('E_OPERATE_STATE_INVALID', 'Adapter prepare requires an advising or blocked cycle.');
|
|
540
654
|
}
|
|
541
|
-
const existing = await readFile(target, 'utf8')
|
|
542
|
-
.then((raw) => JSON.parse(raw))
|
|
543
|
-
.catch(() => null);
|
|
544
|
-
if (existing?.idempotencyKey === input.idempotencyKey)
|
|
545
|
-
return existing;
|
|
546
655
|
const protocol = await loadOperatingProtocol();
|
|
547
656
|
const knownRoles = new Set(protocol.listOperatingRoles().map((role) => role.id));
|
|
548
657
|
const enabledRoles = (Array.isArray(cycle.enabledRoles) ? cycle.enabledRoles.map(String) : []).filter((role) => knownRoles.has(role));
|
|
@@ -572,8 +681,45 @@ export async function operateAdapterLifecycle(input) {
|
|
|
572
681
|
if (baseEvidence.fingerprint !== input.evidenceDigest) {
|
|
573
682
|
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Adapter evidence digest does not match the committed cycle snapshot.');
|
|
574
683
|
}
|
|
684
|
+
const phase = adapterPhase(roles);
|
|
685
|
+
const runtime = cycle.producer.runtime;
|
|
686
|
+
const existing = await readFile(target, 'utf8')
|
|
687
|
+
.then((raw) => JSON.parse(raw))
|
|
688
|
+
.catch(() => null);
|
|
689
|
+
let recoverableSession = null;
|
|
690
|
+
if (existing) {
|
|
691
|
+
const normalized = {
|
|
692
|
+
...existing,
|
|
693
|
+
phase: existing.phase ?? adapterPhase(existing.roles ?? []),
|
|
694
|
+
runtime: existing.runtime ?? 'auto',
|
|
695
|
+
};
|
|
696
|
+
const exact = normalized.cycleId === input.cycleId &&
|
|
697
|
+
normalized.evidenceDigest === input.evidenceDigest &&
|
|
698
|
+
normalized.runtime === runtime &&
|
|
699
|
+
normalized.phase === phase &&
|
|
700
|
+
sameRoleSet(normalized.roles, roles);
|
|
701
|
+
if (normalized.idempotencyKey === input.idempotencyKey) {
|
|
702
|
+
if (!exact) {
|
|
703
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Idempotent adapter prepare does not match its original cycle, evidence, runtime, phase, or role binding.');
|
|
704
|
+
}
|
|
705
|
+
if (sessionExpired(normalized) || normalized.state === 'cancelled') {
|
|
706
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'The prepared adapter session is expired or cancelled; request a fresh CLI-owned handoff.', { recoveryCommand: retryRunCommand(normalized) });
|
|
707
|
+
}
|
|
708
|
+
return { ...normalized, handoff: await adapterHandoff(normalized) };
|
|
709
|
+
}
|
|
710
|
+
if (!sessionExpired(normalized) && ['prepared', 'recording'].includes(normalized.state)) {
|
|
711
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', `Cycle ${input.cycleId} already has an active adapter session with another binding.`, { recoveryCommand: retryRunCommand(normalized) });
|
|
712
|
+
}
|
|
713
|
+
if (normalized.state === 'finalized' &&
|
|
714
|
+
!(normalized.phase === 'advisors' && phase === 'chair')) {
|
|
715
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', `Cycle ${input.cycleId} already finalized its ${normalized.phase} adapter phase.`, { recoveryCommand: retryRunCommand(normalized) });
|
|
716
|
+
}
|
|
717
|
+
if (exact && (sessionExpired(normalized) || normalized.state === 'cancelled')) {
|
|
718
|
+
recoverableSession = normalized;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
575
721
|
const roleEvidence = roles[0] === 'chair'
|
|
576
|
-
? buildChairEvidence(baseEvidence, await
|
|
722
|
+
? buildChairEvidence(baseEvidence, await readPersistedOperatingRoleResults(store, input.cycleId), new Date().toISOString())
|
|
577
723
|
: baseEvidence;
|
|
578
724
|
const readiness = await evaluateEvidenceReadiness({
|
|
579
725
|
cycleId: input.cycleId,
|
|
@@ -595,53 +741,173 @@ export async function operateAdapterLifecycle(input) {
|
|
|
595
741
|
state,
|
|
596
742
|
cycleId: input.cycleId,
|
|
597
743
|
});
|
|
598
|
-
const rolePacks =
|
|
599
|
-
role
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
744
|
+
const rolePacks = recoverableSession?.rolePacks ??
|
|
745
|
+
Object.fromEntries(await Promise.all(readiness.roles.map(async (role) => [
|
|
746
|
+
role.roleId,
|
|
747
|
+
await createOperatingAdvisorPack({
|
|
748
|
+
cycleId: input.cycleId,
|
|
749
|
+
role,
|
|
750
|
+
evidence: roleEvidence,
|
|
751
|
+
context,
|
|
752
|
+
}),
|
|
753
|
+
])));
|
|
607
754
|
const roleBriefs = Object.fromEntries(Object.entries(rolePacks).map(([role, pack]) => [role, pack.roleBrief]));
|
|
755
|
+
const validRecordedRoles = [];
|
|
756
|
+
for (const role of roles) {
|
|
757
|
+
const prior = await readFile(path.join(path.dirname(target), `${input.cycleId}.${role}.json`), 'utf8')
|
|
758
|
+
.then((raw) => JSON.parse(raw))
|
|
759
|
+
.catch(() => null);
|
|
760
|
+
if (prior &&
|
|
761
|
+
prior.cycleId === input.cycleId &&
|
|
762
|
+
prior.roleId === role &&
|
|
763
|
+
prior.inputDigest === rolePacks[role].inputDigest) {
|
|
764
|
+
try {
|
|
765
|
+
await assertOperatingArtifact('operating-role-result', prior);
|
|
766
|
+
protocol.validateOperatingRoleResultDigest(prior);
|
|
767
|
+
validRecordedRoles.push(role);
|
|
768
|
+
}
|
|
769
|
+
catch {
|
|
770
|
+
// A stale or invalid machine-local role file is never trusted as a
|
|
771
|
+
// recovered result; the new session will request that role again.
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
}
|
|
608
775
|
const session = {
|
|
609
776
|
implementation: 'openplanr-operate-adapter',
|
|
610
777
|
cycleId: input.cycleId,
|
|
611
778
|
evidenceDigest: input.evidenceDigest,
|
|
779
|
+
phase,
|
|
780
|
+
runtime,
|
|
612
781
|
lease: randomBytes(32).toString('base64url'),
|
|
613
782
|
idempotencyKey: input.idempotencyKey,
|
|
614
|
-
state: 'prepared',
|
|
783
|
+
state: validRecordedRoles.length > 0 ? 'recording' : 'prepared',
|
|
615
784
|
expiresAt: new Date(Date.now() + 15 * 60 * 1_000).toISOString(),
|
|
616
785
|
roles,
|
|
617
|
-
recordedRoles:
|
|
786
|
+
recordedRoles: validRecordedRoles.sort(),
|
|
618
787
|
roleBriefs,
|
|
619
788
|
rolePacks,
|
|
620
789
|
roleInputDigests: Object.fromEntries(roles.map((role) => [role, rolePacks[role].inputDigest])),
|
|
621
790
|
};
|
|
622
791
|
await atomicPrivateWrite(target, session);
|
|
623
|
-
return session;
|
|
792
|
+
return { ...session, handoff: await adapterHandoff(session) };
|
|
624
793
|
}
|
|
625
794
|
if (!input.lease) {
|
|
626
795
|
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Adapter lease is required.');
|
|
627
796
|
}
|
|
628
797
|
const session = await readAdapterSession(input.projectRoot, input.cycleId, input.localRoot);
|
|
629
|
-
assertAdapterBinding(session, input.lease, input.idempotencyKey);
|
|
630
|
-
|
|
631
|
-
|
|
798
|
+
assertAdapterBinding(session, input.lease, input.idempotencyKey, input.evidenceDigest);
|
|
799
|
+
await assertAdapterCycleBinding({
|
|
800
|
+
projectRoot: input.projectRoot,
|
|
801
|
+
cycleId: input.cycleId,
|
|
802
|
+
localRoot: input.localRoot,
|
|
803
|
+
}, session);
|
|
804
|
+
if (input.action === 'resume') {
|
|
805
|
+
if (!['prepared', 'recording'].includes(session.state)) {
|
|
806
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Adapter resume is not valid after the session is ${session.state}.`, { recoveryCommand: retryRunCommand(session) });
|
|
807
|
+
}
|
|
808
|
+
return { ...session, handoff: await adapterHandoff(session) };
|
|
809
|
+
}
|
|
632
810
|
if (input.action === 'cancel') {
|
|
811
|
+
if (session.state === 'finalized') {
|
|
812
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', 'A finalized adapter session cannot be cancelled.', { recoveryCommand: retryRunCommand(session) });
|
|
813
|
+
}
|
|
814
|
+
if (session.state === 'cancelled') {
|
|
815
|
+
return {
|
|
816
|
+
session: adapterSessionSummary(session),
|
|
817
|
+
handoff: await adapterHandoff(session),
|
|
818
|
+
};
|
|
819
|
+
}
|
|
633
820
|
const cancelled = { ...session, state: 'cancelled' };
|
|
634
821
|
await atomicPrivateWrite(target, cancelled);
|
|
635
|
-
return
|
|
822
|
+
return {
|
|
823
|
+
session: adapterSessionSummary(cancelled),
|
|
824
|
+
handoff: await adapterHandoff(cancelled),
|
|
825
|
+
};
|
|
636
826
|
}
|
|
637
827
|
if (input.action === 'record') {
|
|
828
|
+
if (!['prepared', 'recording'].includes(session.state)) {
|
|
829
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Adapter record is not valid after the session is ${session.state}.`, { recoveryCommand: retryRunCommand(session) });
|
|
830
|
+
}
|
|
638
831
|
if (!input.role || !input.stdin) {
|
|
639
832
|
throw new OperateError('E_OPERATE_CONFIG_INVALID', 'Adapter record requires --role and JSON on stdin.');
|
|
640
833
|
}
|
|
641
834
|
if (!session.roles.includes(input.role)) {
|
|
642
835
|
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', `Role ${input.role} was not bound by adapter prepare.`);
|
|
643
836
|
}
|
|
644
|
-
const
|
|
837
|
+
const currentHandoff = await adapterHandoff(session);
|
|
838
|
+
const authorizedRecord = currentHandoff.next.find((action) => action.action === 'adapter.record');
|
|
839
|
+
if (!authorizedRecord || authorizedRecord.role !== input.role) {
|
|
840
|
+
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', `Role ${input.role} is not the current serialized adapter record action.`, {
|
|
841
|
+
expectedRole: authorizedRecord?.role ?? null,
|
|
842
|
+
recoveryCommand: currentHandoff.recovery
|
|
843
|
+
.find((action) => action.action === 'adapter.resume')
|
|
844
|
+
?.argv.join(' '),
|
|
845
|
+
});
|
|
846
|
+
}
|
|
847
|
+
const outputLimit = Math.min(32_768, session.roleBriefs[input.role].output.maximumOutputBytes);
|
|
848
|
+
if (Buffer.byteLength(input.stdin, 'utf8') > outputLimit) {
|
|
849
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', `Native advisor response exceeds the ${outputLimit}-byte bound.`, {
|
|
850
|
+
...advisorResponseContractDetails(session.roleBriefs[input.role]),
|
|
851
|
+
recoveryCommand: retryRunCommand(session),
|
|
852
|
+
});
|
|
853
|
+
}
|
|
854
|
+
let submitted;
|
|
855
|
+
try {
|
|
856
|
+
submitted = JSON.parse(input.stdin);
|
|
857
|
+
}
|
|
858
|
+
catch {
|
|
859
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'Native advisor response must be one valid JSON document.', {
|
|
860
|
+
...advisorResponseContractDetails(session.roleBriefs[input.role]),
|
|
861
|
+
recoveryCommand: retryRunCommand(session),
|
|
862
|
+
});
|
|
863
|
+
}
|
|
864
|
+
const submittedRecord = submitted && typeof submitted === 'object' ? submitted : {};
|
|
865
|
+
let result;
|
|
866
|
+
if (submittedRecord.kind === 'operating-role-result') {
|
|
867
|
+
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'Native advisors must submit only the compact response contract; OpenPlanr owns canonical result metadata.', {
|
|
868
|
+
...advisorResponseContractDetails(session.roleBriefs[input.role]),
|
|
869
|
+
recoveryCommand: retryRunCommand(session),
|
|
870
|
+
});
|
|
871
|
+
}
|
|
872
|
+
else {
|
|
873
|
+
const submittedProposals = Array.isArray(submittedRecord.proposals)
|
|
874
|
+
? submittedRecord.proposals
|
|
875
|
+
: [];
|
|
876
|
+
const submittedText = [
|
|
877
|
+
...submittedProposals.flatMap((proposal, index) => {
|
|
878
|
+
if (!proposal || typeof proposal !== 'object' || Array.isArray(proposal))
|
|
879
|
+
return [];
|
|
880
|
+
const record = proposal;
|
|
881
|
+
return ['title', 'problem', 'proposal'].map((field) => ({
|
|
882
|
+
location: `proposals.${index}.${field}`,
|
|
883
|
+
value: record[field],
|
|
884
|
+
}));
|
|
885
|
+
}),
|
|
886
|
+
...(Array.isArray(submittedRecord.gaps) ? submittedRecord.gaps : []).map((value, index) => ({ location: `gaps.${index}`, value })),
|
|
887
|
+
...(Array.isArray(submittedRecord.conflicts) ? submittedRecord.conflicts : []).map((value, index) => ({ location: `conflicts.${index}`, value })),
|
|
888
|
+
];
|
|
889
|
+
for (const field of submittedText) {
|
|
890
|
+
if (typeof field.value === 'string' && containsSecret(field.value)) {
|
|
891
|
+
throw new OperateError('E_OPERATE_SECRET_DETECTED', `Native advisor response contains a secret at ${field.location}; nothing was persisted.`, { roleId: input.role, field: field.location });
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
try {
|
|
895
|
+
result = await createNativeOperatingRoleResult({
|
|
896
|
+
pack: session.rolePacks[input.role],
|
|
897
|
+
response: submitted,
|
|
898
|
+
runtime: session.runtime,
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
catch (error) {
|
|
902
|
+
if (error instanceof OperateError && error.code === 'E_OPERATE_ADVISOR_FAILED') {
|
|
903
|
+
throw new OperateError(error.code, error.message, {
|
|
904
|
+
...error.details,
|
|
905
|
+
recoveryCommand: retryRunCommand(session),
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
throw error;
|
|
909
|
+
}
|
|
910
|
+
}
|
|
645
911
|
await assertOperatingArtifact('operating-role-result', result);
|
|
646
912
|
// The structured provider path runs every proposal's free text through
|
|
647
913
|
// sanitizeGeneratedPlainText before it is persisted. Native runtimes hand
|
|
@@ -698,7 +964,31 @@ export async function operateAdapterLifecycle(input) {
|
|
|
698
964
|
recordedRoles: [...new Set([...session.recordedRoles, input.role])].sort(),
|
|
699
965
|
};
|
|
700
966
|
await atomicPrivateWrite(target, updated);
|
|
701
|
-
return {
|
|
967
|
+
return {
|
|
968
|
+
recorded: input.role,
|
|
969
|
+
result,
|
|
970
|
+
session: adapterSessionSummary(updated),
|
|
971
|
+
handoff: await adapterHandoff(updated),
|
|
972
|
+
};
|
|
973
|
+
}
|
|
974
|
+
if (session.state === 'cancelled') {
|
|
975
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', 'A cancelled adapter session cannot be finalized.', { recoveryCommand: retryRunCommand(session) });
|
|
976
|
+
}
|
|
977
|
+
if (session.state === 'finalized') {
|
|
978
|
+
const summaries = await Promise.all(session.recordedRoles.map((role) => readFile(path.join(path.dirname(target), `${input.cycleId}.${role}.json`), 'utf8').then((raw) => {
|
|
979
|
+
const result = JSON.parse(raw);
|
|
980
|
+
return {
|
|
981
|
+
roleId: result.roleId,
|
|
982
|
+
outcome: result.outcome,
|
|
983
|
+
inputDigest: result.inputDigest,
|
|
984
|
+
resultDigest: result.resultDigest,
|
|
985
|
+
};
|
|
986
|
+
})));
|
|
987
|
+
return {
|
|
988
|
+
session: adapterSessionSummary(session),
|
|
989
|
+
results: summaries,
|
|
990
|
+
handoff: await adapterHandoff(session),
|
|
991
|
+
};
|
|
702
992
|
}
|
|
703
993
|
const missingRoles = session.roles.filter((role) => !session.recordedRoles.includes(role));
|
|
704
994
|
if (missingRoles.length > 0) {
|
|
@@ -727,7 +1017,7 @@ export async function operateAdapterLifecycle(input) {
|
|
|
727
1017
|
localRoot: input.localRoot,
|
|
728
1018
|
}, async (lock) => {
|
|
729
1019
|
let head = initial.eventHead;
|
|
730
|
-
const existing = new Map((await
|
|
1020
|
+
const existing = new Map((await readPersistedOperatingRoleResults(store, input.cycleId)).map((result) => [
|
|
731
1021
|
result.roleId,
|
|
732
1022
|
result,
|
|
733
1023
|
]));
|
|
@@ -760,6 +1050,15 @@ export async function operateAdapterLifecycle(input) {
|
|
|
760
1050
|
});
|
|
761
1051
|
const finalized = { ...session, state: 'finalized' };
|
|
762
1052
|
await atomicPrivateWrite(target, finalized);
|
|
763
|
-
return {
|
|
1053
|
+
return {
|
|
1054
|
+
session: adapterSessionSummary(finalized),
|
|
1055
|
+
results: results.map((result) => ({
|
|
1056
|
+
roleId: result.roleId,
|
|
1057
|
+
outcome: result.outcome,
|
|
1058
|
+
inputDigest: result.inputDigest,
|
|
1059
|
+
resultDigest: result.resultDigest,
|
|
1060
|
+
})),
|
|
1061
|
+
handoff: await adapterHandoff(finalized),
|
|
1062
|
+
};
|
|
764
1063
|
}
|
|
765
1064
|
//# sourceMappingURL=maintenance.js.map
|