@akagilnc/pi-workflow-roles 0.1.2521 → 0.1.2653-next.71811ca
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 +129 -39
- package/README.zh-CN.md +128 -39
- package/dist/activation-ledger-topology.js +1 -1
- package/dist/archivist-record-entry.js +47 -26
- package/dist/auditor-dossier-tool.js +3 -1
- package/dist/compliance-transport.js +17 -26
- package/dist/doctor-contracts.js +1 -2
- package/dist/dossier-resolution.js +4 -8
- package/dist/engine-detour-tool.js +33 -8
- package/dist/engine-detour.js +1 -0
- package/dist/evidence-child-executor.js +277 -424
- package/dist/host-contracts.js +22 -0
- package/dist/institutional-resolution.js +88 -0
- package/dist/merger-contracts.js +1 -2
- package/dist/navigator-attendance.js +16 -0
- package/dist/notary-contracts.js +2 -3
- package/dist/package-contracts/fixer-output.js +1 -2
- package/dist/packaged-role-registry.js +102 -9
- package/dist/pi/in-process-session.js +671 -0
- package/dist/public-cli/config.js +7 -5
- package/dist/public-cli/main.js +3767 -4113
- package/dist/reviewer-child-executor.js +6 -1
- package/dist/session-opening-materials.js +10 -38
- package/dist/sitian-appender.js +146 -0
- package/dist/sitian-contracts.js +21 -0
- package/dist/sitian-facade.js +15 -0
- package/dist/sitian-reader.js +52 -0
- package/extensions/role-runtime.ts +9 -7
- package/package.json +5 -5
- package/resources/engines/cursor.md +12 -26
- package/resources/engines/hermes.md +2 -23
- package/resources/engines/opus.md +1 -16
- package/resources/navigator-route-playbook.md +2 -2
- package/scripts/build-package.mjs +0 -1
- package/souls/quality-law.md +1 -1
- package/src/activation-ledger-topology.ts +1 -1
- package/src/archivist-record-entry.ts +57 -45
- package/src/auditor-dossier-tool.ts +4 -2
- package/src/canonical-skill-binding.ts +37 -27
- package/src/collector-role.ts +11 -20
- package/src/collector-tool-schemas.ts +1 -4
- package/src/compliance-transport.ts +19 -44
- package/src/doctor-auditor.ts +1 -5
- package/src/doctor-contracts.ts +1 -4
- package/src/doctor-role.ts +31 -8
- package/src/dossier-resolution.ts +8 -8
- package/src/engine-detour-tool.ts +48 -19
- package/src/engine-detour.ts +3 -0
- package/src/evidence-child-executor.ts +277 -485
- package/src/factory-board.ts +3 -3
- package/src/gatekeeper-role.ts +21 -10
- package/src/host-contracts.ts +386 -0
- package/src/in-process-session.ts +1 -115
- package/src/institutional-resolution.ts +135 -0
- package/src/judge-auditor.ts +1 -5
- package/src/judge-role.ts +37 -51
- package/src/merger-contracts.ts +1 -4
- package/src/merger-role.ts +7 -11
- package/src/navigator-attendance.ts +20 -1
- package/src/notary-contracts.ts +8 -11
- package/src/notary-role.ts +7 -23
- package/src/notary-source-run.ts +4 -3
- package/src/package-contracts/fixer-output.ts +1 -4
- package/src/package-resources/method-skill-binding.ts +10 -34
- package/src/packaged-role-registry.ts +122 -12
- package/src/pi/adapter.ts +192 -0
- package/src/pi/durable-principal.ts +98 -0
- package/src/pi/in-process-session.ts +819 -0
- package/src/pi/known-failure.ts +77 -0
- package/src/pi/pi-normalization.ts +284 -0
- package/src/pi/role-turn-host.ts +459 -0
- package/src/public-cli/auto-resume.ts +42 -44
- package/src/public-cli/cli.ts +171 -257
- package/src/public-cli/coder-run.ts +115 -433
- package/src/public-cli/collector-run.ts +62 -314
- package/src/public-cli/config.ts +7 -5
- package/src/public-cli/doctor-run.ts +41 -52
- package/src/public-cli/fixer-run.ts +122 -427
- package/src/public-cli/invocation.ts +287 -96
- package/src/public-cli/judge-run.ts +92 -422
- package/src/public-cli/merger-run.ts +167 -429
- package/src/public-cli/notary-run.ts +41 -47
- package/src/public-cli/option-definitions.ts +136 -3
- package/src/public-cli/post-admission.ts +497 -0
- package/src/public-cli/public-run-credentials.ts +4 -4
- package/src/public-cli/reviewer-dispatch-rejection.ts +106 -0
- package/src/public-cli/reviewer-run.ts +132 -449
- package/src/public-cli/run-lifecycle.ts +339 -327
- package/src/public-cli/settlement.ts +251 -134
- package/src/public-cli/terminal.ts +3 -9
- package/src/public-cli/turn-request.ts +87 -0
- package/src/reviewer-child-executor.ts +9 -1
- package/src/reviewer-role.ts +11 -20
- package/src/role-runtime.ts +129 -78
- package/src/session-opening-materials.ts +25 -39
- package/src/sitian-appender.ts +171 -0
- package/src/sitian-contracts.ts +106 -0
- package/src/sitian-facade.ts +18 -0
- package/src/sitian-reader.ts +62 -0
- package/src/worker-role.ts +42 -40
- package/src/worker-submission-gates.ts +33 -0
- package/dist/archivist-role-run-coordinates.js +0 -28
- package/dist/package-contracts/terminating-infrastructure.js +0 -90
- package/resources/engines/sonnet.md +0 -27
- package/resources/engines/zcode.md +0 -63
- package/src/archivist-role-run-coordinates.ts +0 -45
- package/src/package-contracts/terminating-infrastructure.ts +0 -132
- package/src/public-cli/explicit-internal.ts +0 -427
- package/src/public-cli/one-shot-dispatch.ts +0 -300
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared one-shot public Role dispatch seam (Doctor-isomorphic path).
|
|
3
|
-
* Post-admission lifecycle — mark admitted → writer lease → running → spawn →
|
|
4
|
-
* settle/fail → terminal → release — lives here once. Role runners supply only
|
|
5
|
-
* activation args and settlement adapters (ADR 0018 / #448).
|
|
6
|
-
*/
|
|
7
|
-
import { writeFile } from "node:fs/promises";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
-
|
|
10
|
-
import { applyEngineChildEnv } from "../engine-detour.ts";
|
|
11
|
-
import {
|
|
12
|
-
runExplicitInternalActivation,
|
|
13
|
-
type ExplicitInternalKnownFailure,
|
|
14
|
-
type ExplicitInternalPiRunner,
|
|
15
|
-
type ExplicitInternalPiResult,
|
|
16
|
-
} from "./explicit-internal.ts";
|
|
17
|
-
import type { CredentialProviders, SeatModelConfig } from "./config.ts";
|
|
18
|
-
import {
|
|
19
|
-
missingCredentialPreDispatchFailure,
|
|
20
|
-
postRunMissingCredentialFailure,
|
|
21
|
-
} from "./public-run-credentials.ts";
|
|
22
|
-
import {
|
|
23
|
-
acquireRunWriterLease,
|
|
24
|
-
clearTypedProviderHttpObservation,
|
|
25
|
-
markRunAdmitted,
|
|
26
|
-
markRunRunning,
|
|
27
|
-
markRunTerminal,
|
|
28
|
-
RunWriterLeaseHeldError,
|
|
29
|
-
type RunWriterLease,
|
|
30
|
-
} from "./run-lifecycle.ts";
|
|
31
|
-
import {
|
|
32
|
-
classifyPostAdmissionFailure,
|
|
33
|
-
exitCodeForTerminalOutcome,
|
|
34
|
-
formatTerminalResult,
|
|
35
|
-
inspectJudgeSession,
|
|
36
|
-
presentFailureTerminal,
|
|
37
|
-
presentStructuralRejection,
|
|
38
|
-
resolveAuditedRunnerKnownFailure,
|
|
39
|
-
explicitInternalKnownFailureClassificationInput,
|
|
40
|
-
settleFailureTerminalResult,
|
|
41
|
-
} from "./settlement.ts";
|
|
42
|
-
import type { CliIo } from "./cli-io.ts";
|
|
43
|
-
import type { AdmittedRoleInvocation } from "./invocation.ts";
|
|
44
|
-
import type { TerminalResult } from "./terminal.ts";
|
|
45
|
-
|
|
46
|
-
export type OneShotRunEnv = {
|
|
47
|
-
home: string;
|
|
48
|
-
agentDir: string;
|
|
49
|
-
packageRoot: string;
|
|
50
|
-
cwd: string;
|
|
51
|
-
correlationId?: string;
|
|
52
|
-
piRunner?: ExplicitInternalPiRunner;
|
|
53
|
-
model?: SeatModelConfig;
|
|
54
|
-
engine?: string;
|
|
55
|
-
credentials?: CredentialProviders;
|
|
56
|
-
timeoutMs?: number;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Role-specific settlement hooks. Lifecycle coordination stays in this module.
|
|
61
|
-
* - Doctor: present only lawful typed outcomes; optional compliance-audit secondary.
|
|
62
|
-
* - Notary: present any settled terminal (accepted or failure).
|
|
63
|
-
*/
|
|
64
|
-
export type OneShotSettlementAdapters<A extends AdmittedRoleInvocation> = {
|
|
65
|
-
trySettle: (admitted: A) => Promise<TerminalResult | undefined>;
|
|
66
|
-
/** Default true. Doctor sets false-filter via predicate. */
|
|
67
|
-
shouldPresentSettled?: (terminal: TerminalResult) => boolean;
|
|
68
|
-
trySettleSecondary?: (admitted: A) => Promise<TerminalResult | undefined>;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
async function presentControlledFailure<A extends AdmittedRoleInvocation>(
|
|
72
|
-
admitted: A,
|
|
73
|
-
failureInput: {
|
|
74
|
-
timedOut: boolean;
|
|
75
|
-
code: number | null;
|
|
76
|
-
stderr: string;
|
|
77
|
-
thrown?: unknown;
|
|
78
|
-
knownFailure?: ExplicitInternalKnownFailure;
|
|
79
|
-
},
|
|
80
|
-
io: CliIo,
|
|
81
|
-
): Promise<{
|
|
82
|
-
exitCode: number;
|
|
83
|
-
admitted: A;
|
|
84
|
-
terminal: TerminalResult;
|
|
85
|
-
}> {
|
|
86
|
-
const hasThrown = Object.hasOwn(failureInput, "thrown");
|
|
87
|
-
const session =
|
|
88
|
-
!hasThrown &&
|
|
89
|
-
!failureInput.timedOut &&
|
|
90
|
-
failureInput.knownFailure === undefined
|
|
91
|
-
? await inspectJudgeSession(admitted.sessionFile)
|
|
92
|
-
: undefined;
|
|
93
|
-
const failure = classifyPostAdmissionFailure({
|
|
94
|
-
timedOut: failureInput.timedOut,
|
|
95
|
-
code: failureInput.code,
|
|
96
|
-
stderr: failureInput.stderr,
|
|
97
|
-
...(hasThrown ? { thrown: failureInput.thrown } : {}),
|
|
98
|
-
...explicitInternalKnownFailureClassificationInput(failureInput.knownFailure),
|
|
99
|
-
...(session === undefined ? {} : { session }),
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// One-shot roles do not support resume — always terminal.
|
|
103
|
-
await markRunTerminal(admitted.runDirectory).catch(() => undefined);
|
|
104
|
-
|
|
105
|
-
const terminal = await settleFailureTerminalResult(admitted, failure);
|
|
106
|
-
presentFailureTerminal(terminal, io);
|
|
107
|
-
return {
|
|
108
|
-
exitCode: exitCodeForTerminalOutcome(terminal.roleOutcome),
|
|
109
|
-
admitted,
|
|
110
|
-
terminal,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function presentSecondaryTerminal(terminal: TerminalResult, io: CliIo): void {
|
|
115
|
-
if (terminal.roleOutcome.kind === "failure") {
|
|
116
|
-
presentFailureTerminal(terminal, io);
|
|
117
|
-
} else {
|
|
118
|
-
io.stdout(formatTerminalResult(terminal));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async function dispatchAdmittedOneShotRole<A extends AdmittedRoleInvocation>(input: {
|
|
123
|
-
admitted: A;
|
|
124
|
-
env: OneShotRunEnv;
|
|
125
|
-
io: CliIo;
|
|
126
|
-
extraArgs: string[];
|
|
127
|
-
lease: RunWriterLease;
|
|
128
|
-
effectiveEngine?: string;
|
|
129
|
-
adapters: OneShotSettlementAdapters<A>;
|
|
130
|
-
}): Promise<{
|
|
131
|
-
exitCode: number;
|
|
132
|
-
admitted: A;
|
|
133
|
-
terminal?: TerminalResult;
|
|
134
|
-
}> {
|
|
135
|
-
const { admitted, env, io, extraArgs, lease, effectiveEngine, adapters } = input;
|
|
136
|
-
const shouldPresent =
|
|
137
|
-
adapters.shouldPresentSettled ?? ((_terminal: TerminalResult) => true);
|
|
138
|
-
try {
|
|
139
|
-
const missingCredential = missingCredentialPreDispatchFailure(
|
|
140
|
-
env.model,
|
|
141
|
-
env.credentials,
|
|
142
|
-
);
|
|
143
|
-
if (missingCredential !== undefined) {
|
|
144
|
-
return await presentControlledFailure(admitted, missingCredential, io);
|
|
145
|
-
}
|
|
146
|
-
await markRunRunning(admitted.runDirectory, env.model, effectiveEngine);
|
|
147
|
-
await clearTypedProviderHttpObservation(admitted.runDirectory);
|
|
148
|
-
|
|
149
|
-
const childEnv: NodeJS.ProcessEnv = {
|
|
150
|
-
...process.env,
|
|
151
|
-
HOME: env.home,
|
|
152
|
-
PI_CODING_AGENT_DIR: env.agentDir,
|
|
153
|
-
AK_ROLE_RUN_DIR: admitted.runDirectory,
|
|
154
|
-
};
|
|
155
|
-
applyEngineChildEnv(childEnv, env.engine);
|
|
156
|
-
if (env.correlationId !== undefined && env.correlationId.trim() !== "") {
|
|
157
|
-
childEnv.AK_CORRELATION_ID = env.correlationId;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
let result: ExplicitInternalPiResult;
|
|
161
|
-
try {
|
|
162
|
-
result = await runExplicitInternalActivation({
|
|
163
|
-
packageRoot: env.packageRoot,
|
|
164
|
-
extraArgs,
|
|
165
|
-
cwd: admitted.projectRoot,
|
|
166
|
-
home: env.home,
|
|
167
|
-
agentDir: env.agentDir,
|
|
168
|
-
env: childEnv,
|
|
169
|
-
timeoutMs: env.timeoutMs,
|
|
170
|
-
...(env.piRunner === undefined ? {} : { runner: env.piRunner }),
|
|
171
|
-
});
|
|
172
|
-
} catch (error) {
|
|
173
|
-
return await presentControlledFailure(
|
|
174
|
-
admitted,
|
|
175
|
-
{
|
|
176
|
-
timedOut: false,
|
|
177
|
-
code: null,
|
|
178
|
-
stderr: "",
|
|
179
|
-
thrown: error,
|
|
180
|
-
},
|
|
181
|
-
io,
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
try {
|
|
186
|
-
await writeFile(
|
|
187
|
-
join(admitted.runDirectory, "stderr.log"),
|
|
188
|
-
result.stderr,
|
|
189
|
-
"utf8",
|
|
190
|
-
);
|
|
191
|
-
} catch {
|
|
192
|
-
// continue to lawful / controlled-failure settlement
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
let settled: TerminalResult | undefined;
|
|
196
|
-
try {
|
|
197
|
-
settled = await adapters.trySettle(admitted);
|
|
198
|
-
} catch (error) {
|
|
199
|
-
return await presentControlledFailure(
|
|
200
|
-
admitted,
|
|
201
|
-
{
|
|
202
|
-
timedOut: false,
|
|
203
|
-
code: result.code,
|
|
204
|
-
stderr: result.stderr,
|
|
205
|
-
thrown: error,
|
|
206
|
-
},
|
|
207
|
-
io,
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
if (settled !== undefined && shouldPresent(settled)) {
|
|
211
|
-
await markRunTerminal(admitted.runDirectory).catch(() => undefined);
|
|
212
|
-
io.stdout(formatTerminalResult(settled));
|
|
213
|
-
return {
|
|
214
|
-
exitCode: exitCodeForTerminalOutcome(settled.roleOutcome),
|
|
215
|
-
admitted,
|
|
216
|
-
terminal: settled,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
if (adapters.trySettleSecondary !== undefined) {
|
|
221
|
-
const secondary = await adapters.trySettleSecondary(admitted);
|
|
222
|
-
if (secondary !== undefined) {
|
|
223
|
-
await markRunTerminal(admitted.runDirectory).catch(() => undefined);
|
|
224
|
-
presentSecondaryTerminal(secondary, io);
|
|
225
|
-
return {
|
|
226
|
-
exitCode: exitCodeForTerminalOutcome(secondary.roleOutcome),
|
|
227
|
-
admitted,
|
|
228
|
-
terminal: secondary,
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const credentialFailure = postRunMissingCredentialFailure(
|
|
234
|
-
result,
|
|
235
|
-
env.model,
|
|
236
|
-
env.credentials,
|
|
237
|
-
);
|
|
238
|
-
const knownFailure = await resolveAuditedRunnerKnownFailure({
|
|
239
|
-
runner: result.knownFailure,
|
|
240
|
-
sessionFile: admitted.sessionFile,
|
|
241
|
-
credential: credentialFailure,
|
|
242
|
-
runDirectory: admitted.runDirectory,
|
|
243
|
-
});
|
|
244
|
-
return await presentControlledFailure(
|
|
245
|
-
admitted,
|
|
246
|
-
{
|
|
247
|
-
timedOut: result.timedOut,
|
|
248
|
-
code: result.code,
|
|
249
|
-
stderr: result.stderr,
|
|
250
|
-
...(knownFailure === undefined ? {} : { knownFailure }),
|
|
251
|
-
},
|
|
252
|
-
io,
|
|
253
|
-
);
|
|
254
|
-
} finally {
|
|
255
|
-
await lease.release();
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Shared post-admission one-shot path: durable admitted mark, writer lease,
|
|
261
|
-
* then Doctor-isomorphic dispatch. Role runners call this after role-specific admit.
|
|
262
|
-
*/
|
|
263
|
-
export async function runAdmittedOneShotRole<A extends AdmittedRoleInvocation>(input: {
|
|
264
|
-
admitted: A;
|
|
265
|
-
env: OneShotRunEnv;
|
|
266
|
-
io: CliIo;
|
|
267
|
-
extraArgs: string[];
|
|
268
|
-
adapters: OneShotSettlementAdapters<A>;
|
|
269
|
-
effectiveEngine?: string;
|
|
270
|
-
}): Promise<{
|
|
271
|
-
exitCode: number;
|
|
272
|
-
admitted: A;
|
|
273
|
-
terminal?: TerminalResult;
|
|
274
|
-
}> {
|
|
275
|
-
const { admitted, env, io, extraArgs, adapters, effectiveEngine } = input;
|
|
276
|
-
await markRunAdmitted(admitted);
|
|
277
|
-
|
|
278
|
-
let lease: RunWriterLease;
|
|
279
|
-
try {
|
|
280
|
-
lease = await acquireRunWriterLease(admitted.runDirectory, (diagnostic) =>
|
|
281
|
-
io.stderr(diagnostic),
|
|
282
|
-
);
|
|
283
|
-
} catch (error) {
|
|
284
|
-
if (error instanceof RunWriterLeaseHeldError) {
|
|
285
|
-
presentStructuralRejection(error, io);
|
|
286
|
-
return { exitCode: 2, admitted };
|
|
287
|
-
}
|
|
288
|
-
throw error;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
return await dispatchAdmittedOneShotRole({
|
|
292
|
-
admitted,
|
|
293
|
-
env,
|
|
294
|
-
io,
|
|
295
|
-
extraArgs,
|
|
296
|
-
lease,
|
|
297
|
-
adapters,
|
|
298
|
-
...(effectiveEngine === undefined ? {} : { effectiveEngine }),
|
|
299
|
-
});
|
|
300
|
-
}
|