@akagilnc/pi-workflow-roles 0.1.4062 → 0.1.4196
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/dist/acp-host/production-host.js +2075 -1088
- package/dist/archivist-record-entry.js +204 -20
- package/dist/archivist-record-topology.js +36 -16
- package/dist/auditor-dossier-tool.js +2 -1
- package/dist/diarist-contracts.js +96 -0
- package/dist/doctor-evidence.js +3 -2
- package/dist/headless-host/production-host.js +2215 -1228
- package/dist/migrate-book-topology.js +278917 -0
- package/dist/navigator-public-session.js +22 -25
- package/dist/notary-source-run.js +7 -4
- package/dist/pi/durable-principal.js +9 -6
- package/dist/public-cli/auto-resume.js +2 -5
- package/dist/public-cli/diarist-run.js +27 -25
- package/dist/public-cli/instruction-seat-run.js +8 -11
- package/dist/public-cli/invocation.js +127 -63
- package/dist/public-cli/main.js +1507 -645
- package/dist/public-cli/option-definitions.js +2 -2
- package/dist/public-cli/post-admission.js +47 -12
- package/dist/public-cli/run-lifecycle.js +206 -58
- package/dist/public-cli/seat-ticket-binding.js +3 -6
- package/dist/public-cli/settlement.js +5 -3
- package/dist/role-run-placement.js +84 -0
- package/dist/role-run-relocation.js +358 -0
- package/dist/run-terminal-artifacts.js +2 -1
- package/dist/run-ticket-number.js +51 -32
- package/dist/sitian-appender.js +11 -26
- package/dist/submission-ledger.js +78 -19
- package/dist/ticket-provenance.js +3 -1
- package/package.json +3 -2
- package/scripts/build-package.mjs +34 -2
- package/souls/countersign.md +2 -2
- package/souls/fixer.md +3 -2
- package/src/analyst-ledger.ts +14 -15
- package/src/archivist-record-entry.ts +285 -38
- package/src/archivist-record-topology.ts +43 -18
- package/src/auditor-dossier-tool.ts +2 -1
- package/src/book-topology-migration-placement.ts +493 -0
- package/src/book-topology-migration.ts +220 -0
- package/src/book-topology-migrators-t11.ts +856 -0
- package/src/book-topology-mixed-volume-migrators.ts +470 -0
- package/src/book-topology-partition-migrators.ts +25 -0
- package/src/book-topology-record-class-migrators.ts +779 -0
- package/src/book-topology-runs-migrator.ts +244 -0
- package/src/diarist-contracts.ts +116 -0
- package/src/diarist-role.ts +6 -0
- package/src/diarist.ts +2 -0
- package/src/doctor-evidence.ts +4 -1
- package/src/doctor-role.ts +1 -1
- package/src/navigator-public-session.ts +33 -30
- package/src/notary-source-run.ts +9 -4
- package/src/pi/durable-principal.ts +9 -13
- package/src/public-cli/auto-resume.ts +2 -6
- package/src/public-cli/countersign-run.ts +182 -32
- package/src/public-cli/diarist-run.ts +34 -26
- package/src/public-cli/instruction-seat-run.ts +7 -11
- package/src/public-cli/invocation.ts +192 -58
- package/src/public-cli/option-definitions.ts +2 -2
- package/src/public-cli/post-admission.ts +73 -13
- package/src/public-cli/run-lifecycle.ts +255 -65
- package/src/public-cli/seat-ticket-binding.ts +3 -6
- package/src/public-cli/settlement.ts +6 -4
- package/src/role-run-placement.ts +128 -0
- package/src/role-run-relocation.ts +491 -0
- package/src/role-runtime.ts +11 -5
- package/src/run-terminal-artifacts.ts +3 -1
- package/src/run-ticket-number.ts +80 -20
- package/src/sitian-appender.ts +25 -28
- package/src/submission-ledger.ts +102 -19
- package/src/ticket-provenance.ts +4 -1
- package/src/ticket-trajectory.ts +22 -35
- package/src/worker-role.ts +4 -4
- package/src/worker-submission-gates.ts +6 -6
|
@@ -145,9 +145,9 @@ function withOnceSuccessfulBeforeDispatch<
|
|
|
145
145
|
let succeeded = false;
|
|
146
146
|
return {
|
|
147
147
|
...adapters,
|
|
148
|
-
beforeDispatch: async (admitted) => {
|
|
148
|
+
beforeDispatch: async (admitted, lease) => {
|
|
149
149
|
if (succeeded) return;
|
|
150
|
-
await hook(admitted);
|
|
150
|
+
await hook(admitted, lease);
|
|
151
151
|
succeeded = true;
|
|
152
152
|
},
|
|
153
153
|
};
|
|
@@ -280,7 +280,13 @@ export type PostAdmissionAdapters<
|
|
|
280
280
|
result: RoleTurnResult;
|
|
281
281
|
sessionFile: string;
|
|
282
282
|
}) => Promise<RoleTurnKnownFailure | undefined>;
|
|
283
|
-
beforeDispatch?: (admitted: A) => Promise<void> | void;
|
|
283
|
+
beforeDispatch?: (admitted: A, lease: RunWriterLease) => Promise<void> | void;
|
|
284
|
+
/**
|
|
285
|
+
* After the host turn settles and before the writer lease is released.
|
|
286
|
+
* Post-turn bind/relocate (e.g. Diarist first assert) must run here so the
|
|
287
|
+
* held lease follows the run directory and failures stay controlled.
|
|
288
|
+
*/
|
|
289
|
+
afterDispatch?: (admitted: A, lease: RunWriterLease) => Promise<void> | void;
|
|
284
290
|
};
|
|
285
291
|
|
|
286
292
|
export type ControlledFailureInput = {
|
|
@@ -570,6 +576,60 @@ export async function dispatchPostAdmissionTurn<
|
|
|
570
576
|
const deferredPersist = persistRunState ? {} : { needsPersist: true as const };
|
|
571
577
|
const shouldPresent =
|
|
572
578
|
adapters.shouldPresentSettled ?? ((terminal: T) => isLawfulTypedTerminalOutcome(terminal.roleOutcome));
|
|
579
|
+
type DispatchOutcome = {
|
|
580
|
+
exitCode: number;
|
|
581
|
+
admitted: A;
|
|
582
|
+
terminal?: T;
|
|
583
|
+
skipAutoResume?: true;
|
|
584
|
+
turnDispatched?: true;
|
|
585
|
+
needsPersist?: true;
|
|
586
|
+
};
|
|
587
|
+
/**
|
|
588
|
+
* Once-only post-host-turn hook (Diarist bind/relocate, etc.) under the still-held
|
|
589
|
+
* writer lease. Every exit after the host turn has started must pass here before
|
|
590
|
+
* lease release — success and failure alike. When a primary failure terminal already
|
|
591
|
+
* exists, keep that cause and leave relocate failure on the shared diagnostic channel.
|
|
592
|
+
*/
|
|
593
|
+
let afterDispatchApplied = false;
|
|
594
|
+
const finishAfterTurn = async (result: DispatchOutcome): Promise<DispatchOutcome> => {
|
|
595
|
+
if (adapters.afterDispatch === undefined || afterDispatchApplied) return result;
|
|
596
|
+
afterDispatchApplied = true;
|
|
597
|
+
try {
|
|
598
|
+
await adapters.afterDispatch(admitted, lease);
|
|
599
|
+
return result;
|
|
600
|
+
} catch (error) {
|
|
601
|
+
const primaryFailure =
|
|
602
|
+
result.terminal !== undefined
|
|
603
|
+
&& !isLawfulTypedTerminalOutcome(result.terminal.roleOutcome);
|
|
604
|
+
if (primaryFailure) {
|
|
605
|
+
await recordBestEffortPostDispatchDiagnostic(
|
|
606
|
+
admitted,
|
|
607
|
+
env,
|
|
608
|
+
`afterDispatch failed beside primary terminal (best-effort continue): ${describeErrorIdentity(error)}`,
|
|
609
|
+
io,
|
|
610
|
+
);
|
|
611
|
+
return result;
|
|
612
|
+
}
|
|
613
|
+
return {
|
|
614
|
+
...(await presentControlledFailure(
|
|
615
|
+
admitted,
|
|
616
|
+
{
|
|
617
|
+
timedOut: false,
|
|
618
|
+
code: null,
|
|
619
|
+
stderr: "",
|
|
620
|
+
thrown: error,
|
|
621
|
+
},
|
|
622
|
+
adapters,
|
|
623
|
+
env.principalAuthority,
|
|
624
|
+
io,
|
|
625
|
+
persistRunState,
|
|
626
|
+
)) as { exitCode: number; admitted: A; terminal: T },
|
|
627
|
+
...(result.turnDispatched === true ? { turnDispatched: true as const } : {}),
|
|
628
|
+
...(result.skipAutoResume === true ? { skipAutoResume: true as const } : {}),
|
|
629
|
+
...deferredPersist,
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
};
|
|
573
633
|
try {
|
|
574
634
|
const missingCredential = missingCredentialPreDispatchFailure(
|
|
575
635
|
env.model,
|
|
@@ -644,7 +704,7 @@ export async function dispatchPostAdmissionTurn<
|
|
|
644
704
|
// (#840 父子不层叠).
|
|
645
705
|
if (adapters.beforeDispatch !== undefined) {
|
|
646
706
|
try {
|
|
647
|
-
await adapters.beforeDispatch(admitted);
|
|
707
|
+
await adapters.beforeDispatch(admitted, lease);
|
|
648
708
|
} catch (error) {
|
|
649
709
|
const settled = (await presentControlledFailure(
|
|
650
710
|
admitted,
|
|
@@ -737,7 +797,7 @@ export async function dispatchPostAdmissionTurn<
|
|
|
737
797
|
io,
|
|
738
798
|
persistRunState,
|
|
739
799
|
);
|
|
740
|
-
return { ...settled, turnDispatched: true as const, ...deferredPersist };
|
|
800
|
+
return await finishAfterTurn({ ...settled, turnDispatched: true as const, ...deferredPersist });
|
|
741
801
|
}
|
|
742
802
|
|
|
743
803
|
// `result.stderr` stays live in memory for the real classification below
|
|
@@ -941,7 +1001,7 @@ export async function dispatchPostAdmissionTurn<
|
|
|
941
1001
|
io,
|
|
942
1002
|
persistRunState,
|
|
943
1003
|
);
|
|
944
|
-
return { ...settledFailure, turnDispatched: true as const, ...deferredPersist };
|
|
1004
|
+
return await finishAfterTurn({ ...settledFailure, turnDispatched: true as const, ...deferredPersist });
|
|
945
1005
|
}
|
|
946
1006
|
if (settledOutcome !== undefined) {
|
|
947
1007
|
if (persistRunState) {
|
|
@@ -972,12 +1032,12 @@ export async function dispatchPostAdmissionTurn<
|
|
|
972
1032
|
io,
|
|
973
1033
|
persistRunState,
|
|
974
1034
|
);
|
|
975
|
-
return { ...failed, turnDispatched: true as const, ...deferredPersist };
|
|
1035
|
+
return await finishAfterTurn({ ...failed, turnDispatched: true as const, ...deferredPersist });
|
|
976
1036
|
}
|
|
977
1037
|
}
|
|
978
1038
|
// Lawful persist + present is the caller's stop seam (auto-resume loop /
|
|
979
1039
|
// manual resume), not this retried host-turn function.
|
|
980
|
-
return { ...settledOutcome, ...deferredPersist };
|
|
1040
|
+
return await finishAfterTurn({ ...settledOutcome, ...deferredPersist });
|
|
981
1041
|
}
|
|
982
1042
|
|
|
983
1043
|
// Host/runner true failure coexists with already-recorded payloads — never wash as accepted.
|
|
@@ -1013,7 +1073,7 @@ export async function dispatchPostAdmissionTurn<
|
|
|
1013
1073
|
io,
|
|
1014
1074
|
persistRunState,
|
|
1015
1075
|
);
|
|
1016
|
-
return { ...failed, turnDispatched: true as const, ...deferredPersist };
|
|
1076
|
+
return await finishAfterTurn({ ...failed, turnDispatched: true as const, ...deferredPersist });
|
|
1017
1077
|
}
|
|
1018
1078
|
|
|
1019
1079
|
// Nothing else was wrong, but the durable stderr mirror itself failed to
|
|
@@ -1033,7 +1093,7 @@ export async function dispatchPostAdmissionTurn<
|
|
|
1033
1093
|
io,
|
|
1034
1094
|
persistRunState,
|
|
1035
1095
|
);
|
|
1036
|
-
return { ...failed, turnDispatched: true as const, ...deferredPersist };
|
|
1096
|
+
return await finishAfterTurn({ ...failed, turnDispatched: true as const, ...deferredPersist });
|
|
1037
1097
|
}
|
|
1038
1098
|
|
|
1039
1099
|
const noReceipt = await attachRecordedSubmissions(
|
|
@@ -1064,16 +1124,16 @@ export async function dispatchPostAdmissionTurn<
|
|
|
1064
1124
|
io,
|
|
1065
1125
|
persistRunState,
|
|
1066
1126
|
);
|
|
1067
|
-
return { ...failed, turnDispatched: true as const, ...deferredPersist };
|
|
1127
|
+
return await finishAfterTurn({ ...failed, turnDispatched: true as const, ...deferredPersist });
|
|
1068
1128
|
}
|
|
1069
1129
|
}
|
|
1070
|
-
return {
|
|
1130
|
+
return await finishAfterTurn({
|
|
1071
1131
|
exitCode: exitCodeForTerminalOutcome(noReceipt.roleOutcome),
|
|
1072
1132
|
admitted,
|
|
1073
1133
|
terminal: noReceipt,
|
|
1074
1134
|
turnDispatched: true as const,
|
|
1075
1135
|
...deferredPersist,
|
|
1076
|
-
};
|
|
1136
|
+
});
|
|
1077
1137
|
} finally {
|
|
1078
1138
|
try {
|
|
1079
1139
|
await lease.release();
|