@akagilnc/pi-workflow-roles 0.1.4802 → 0.1.4870

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.
Files changed (142) hide show
  1. package/dist/acp-host/production-host.js +19434 -18218
  2. package/dist/analyst-book-key.js +63 -0
  3. package/dist/analyst-cohort.js +167 -0
  4. package/dist/analyst-entry.js +320 -0
  5. package/dist/analyst-index.js +247 -0
  6. package/dist/analyst-ledger.js +561 -0
  7. package/dist/analyst-median.js +16 -0
  8. package/dist/analyst-metric-families/acceptance-success-rework.js +249 -0
  9. package/dist/analyst-metric-families/b2-frame-buckets-actions.js +189 -0
  10. package/dist/analyst-metric-families/gate-cycles.js +77 -0
  11. package/dist/analyst-metric-families/leg-wall-clock.js +56 -0
  12. package/dist/analyst-metric-families/round-timeline.js +126 -0
  13. package/dist/analyst-metric-families.js +23 -0
  14. package/dist/analyst-metric-family.js +11 -0
  15. package/dist/analyst-model-groups.js +135 -0
  16. package/dist/analyst-page.js +182 -0
  17. package/dist/atomic-write.js +23 -0
  18. package/dist/auditor-soul.js +1 -1
  19. package/dist/countersign-contracts.js +0 -2
  20. package/dist/diarist-contracts.js +0 -1
  21. package/dist/doctor-contracts.js +2 -2
  22. package/dist/gatekeeper-role.js +15 -16
  23. package/dist/gleaner-left-contracts.js +0 -2
  24. package/dist/headless-host/production-host.js +16967 -15749
  25. package/dist/host-contracts.js +0 -4
  26. package/dist/inspector-contracts.js +0 -2
  27. package/dist/institutional-resolution.js +4 -2
  28. package/dist/merger-contracts.js +0 -2
  29. package/dist/migrate-book-topology.js +3908 -3089
  30. package/dist/navigator-public-session.js +4 -3
  31. package/dist/notary-contracts.js +0 -2
  32. package/dist/package-contracts/auditor-output.js +0 -1
  33. package/dist/package-contracts/collector-output.js +0 -2
  34. package/dist/package-contracts/fixer-output.js +0 -2
  35. package/dist/package-contracts/gatekeeper-output.js +0 -2
  36. package/dist/package-contracts/judge-output.js +0 -2
  37. package/dist/package-contracts/navigator-output.js +0 -2
  38. package/dist/package-contracts/reviewer-output.js +0 -2
  39. package/dist/package-contracts/terminating-tools.js +32 -92
  40. package/dist/package-contracts/worker-output.js +0 -4
  41. package/dist/packaged-role-registry.js +518 -36
  42. package/dist/pi/role-turn-host.js +2 -1
  43. package/dist/public-cli/analyst-run.js +185 -0
  44. package/dist/public-cli/cli.js +885 -0
  45. package/dist/public-cli/config.js +12 -9
  46. package/dist/public-cli/countersign-run.js +4 -311
  47. package/dist/public-cli/instruction-seat-run.js +628 -158
  48. package/dist/public-cli/invocation.js +806 -1550
  49. package/dist/public-cli/main.js +6962 -9882
  50. package/dist/public-cli/option-definitions.js +51 -99
  51. package/dist/public-cli/post-admission.js +30 -2
  52. package/dist/public-cli/run-lifecycle.js +234 -353
  53. package/dist/public-cli/seat-ticket-binding.js +6 -0
  54. package/dist/public-cli/settlement.js +261 -675
  55. package/dist/public-cli/turn-request.js +76 -0
  56. package/dist/public-role-summons.js +38 -112
  57. package/dist/role-activation-flags.js +23 -45
  58. package/dist/secretariat-contracts.js +0 -2
  59. package/dist/session-identity.js +17 -8
  60. package/dist/session-opening-materials.js +3 -2
  61. package/extensions/role-runtime.ts +6 -80
  62. package/package.json +1 -1
  63. package/src/acp-host/role-turn-host.ts +4 -1
  64. package/src/analyst-metric-families/acceptance-success-rework.ts +3 -2
  65. package/src/auditor-role.ts +1 -2
  66. package/src/auditor-soul.ts +1 -1
  67. package/src/collector-role.ts +2 -2
  68. package/src/countersign-contracts.ts +0 -1
  69. package/src/countersign-role.ts +1 -1
  70. package/src/diarist-contracts.ts +0 -1
  71. package/src/diarist-role.ts +0 -1
  72. package/src/doctor-auditor.ts +1 -2
  73. package/src/doctor-contracts.ts +1 -1
  74. package/src/doctor-role.ts +3 -2
  75. package/src/external-host-turn-loop.ts +1 -1
  76. package/src/factory-board.ts +10 -7
  77. package/src/gatekeeper-role.ts +16 -10
  78. package/src/gleaner-left-contracts.ts +0 -1
  79. package/src/gleaner-left-role.ts +0 -1
  80. package/src/headless-host/role-turn-host.ts +7 -1
  81. package/src/host-contracts.ts +10 -6
  82. package/src/inspector-contracts.ts +0 -1
  83. package/src/inspector-role.ts +0 -2
  84. package/src/institutional-resolution.ts +6 -4
  85. package/src/judge-role.ts +3 -3
  86. package/src/merger-contracts.ts +0 -1
  87. package/src/merger-role.ts +2 -2
  88. package/src/navigator-public-session.ts +7 -6
  89. package/src/navigator-work-context.ts +6 -8
  90. package/src/notary-contracts.ts +0 -1
  91. package/src/notary-role.ts +2 -3
  92. package/src/package-contracts/auditor-output.ts +0 -1
  93. package/src/package-contracts/collector-output.ts +0 -1
  94. package/src/package-contracts/fixer-output.ts +0 -1
  95. package/src/package-contracts/gatekeeper-output.ts +0 -1
  96. package/src/package-contracts/judge-output.ts +0 -1
  97. package/src/package-contracts/navigator-output.ts +0 -1
  98. package/src/package-contracts/reviewer-output.ts +0 -1
  99. package/src/package-contracts/terminating-tools.ts +27 -99
  100. package/src/package-contracts/worker-output.ts +0 -2
  101. package/src/packaged-role-registry.ts +604 -35
  102. package/src/pi/role-turn-host.ts +2 -1
  103. package/src/public-cli/cli.ts +64 -259
  104. package/src/public-cli/config.ts +18 -10
  105. package/src/public-cli/countersign-run.ts +14 -449
  106. package/src/public-cli/instruction-seat-run.ts +758 -277
  107. package/src/public-cli/invocation.ts +1097 -2051
  108. package/src/public-cli/option-definitions.ts +62 -127
  109. package/src/public-cli/post-admission.ts +47 -2
  110. package/src/public-cli/run-lifecycle.ts +303 -613
  111. package/src/public-cli/seat-ticket-binding.ts +6 -0
  112. package/src/public-cli/settlement.ts +399 -1185
  113. package/src/public-cli/turn-request.ts +92 -1
  114. package/src/public-role-summons.ts +44 -128
  115. package/src/reviewer-role.ts +3 -2
  116. package/src/role-activation-flags.ts +20 -41
  117. package/src/role-runtime-dependencies.ts +25 -26
  118. package/src/role-runtime.ts +121 -232
  119. package/src/secretariat-contracts.ts +0 -1
  120. package/src/secretariat-role.ts +0 -2
  121. package/src/session-identity.ts +23 -8
  122. package/src/session-opening-materials.ts +2 -1
  123. package/src/worker-role.ts +3 -4
  124. package/dist/doctor-auditor.js +0 -25
  125. package/dist/public-cli/diarist-run.js +0 -130
  126. package/dist/public-cli/doctor-run.js +0 -87
  127. package/dist/public-cli/inspector-run.js +0 -151
  128. package/dist/public-cli/judge-run.js +0 -114
  129. package/dist/public-cli/notary-run.js +0 -174
  130. package/dist/public-cli/reviewer-run.js +0 -339
  131. package/src/public-cli/coder-run.ts +0 -255
  132. package/src/public-cli/collector-run.ts +0 -189
  133. package/src/public-cli/diarist-run.ts +0 -233
  134. package/src/public-cli/doctor-run.ts +0 -167
  135. package/src/public-cli/fixer-run.ts +0 -265
  136. package/src/public-cli/gleaner-left-run.ts +0 -167
  137. package/src/public-cli/inspector-run.ts +0 -261
  138. package/src/public-cli/judge-run.ts +0 -196
  139. package/src/public-cli/merger-run.ts +0 -294
  140. package/src/public-cli/notary-run.ts +0 -279
  141. package/src/public-cli/reviewer-run.ts +0 -480
  142. package/src/public-cli/secretariat-run.ts +0 -265
@@ -9,6 +9,7 @@ import {
9
9
  } from "./navigator-session-contracts.js";
10
10
  import { runDirectoryFromHostContext } from "./host-contracts.js";
11
11
  import { CliUsageError } from "./public-cli/cli-errors.js";
12
+ import { isNavigatorSeat } from "./packaged-role-registry.js";
12
13
  async function resolveNavigatorLedgerHome(context) {
13
14
  const { tryHomeFromAkRolesPath } = await import("./activation-ledger-topology.js");
14
15
  const runDirectory = runDirectoryFromHostContext(context);
@@ -49,10 +50,10 @@ function readNavigatorHostRunPointer(entries) {
49
50
  }
50
51
  async function navigatorHostRunResumable(home, runId) {
51
52
  const { piDurablePrincipalAuthority } = await import("./pi/durable-principal.js");
52
- const { loadResumableInstructionSeatRun } = await import("./public-cli/run-lifecycle.js");
53
+ const { loadResumablePublicRole } = await import("./public-cli/run-lifecycle.js");
53
54
  try {
54
- const loaded = await loadResumableInstructionSeatRun(home, runId, piDurablePrincipalAuthority);
55
- return loaded.admitted.role === "navigator";
55
+ const loaded = await loadResumablePublicRole(home, runId, piDurablePrincipalAuthority);
56
+ return isNavigatorSeat(loaded.admitted.role);
56
57
  } catch (error) {
57
58
  if (error instanceof CliUsageError) return false;
58
59
  throw error;
@@ -2,7 +2,6 @@ import { Type } from "typebox";
2
2
  import { openToolObject } from "./open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./package-contracts/terminating-infrastructure.js";
4
4
  const NOTARY_OUTPUT_TOOL_NAME = "ak_notary_output";
5
- const NOTARY_ACCEPTED_TEXT = "\u7B26\u5B9D\u90CE\u56DE\u6267\u5DF2\u63A5\u53D7";
6
5
  const NOTARY_SOURCE_RUN_FLAG = {
7
6
  name: "ak-notary-source-run",
8
7
  definition: {
@@ -54,7 +53,6 @@ function validateRecordedNotaryOutput(value) {
54
53
  return value;
55
54
  }
56
55
  export {
57
- NOTARY_ACCEPTED_TEXT,
58
56
  NOTARY_FIXED_KICKOFF,
59
57
  NOTARY_OUTPUT_TOOL_NAME,
60
58
  NOTARY_SOURCE_RUN_FLAG,
@@ -6,7 +6,6 @@ import { Type } from "typebox";
6
6
  import { openToolObject } from "../open-tool-schema.js";
7
7
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
8
8
  export const AUDITOR_OUTPUT_TOOL_NAME = "ak_auditor_output";
9
- export const AUDITOR_ACCEPTED_TEXT = "审刑院回执已接受";
10
9
  export const auditorOutputSchema = withTerminatingOutputDeclarations(openToolObject(Type.Object({
11
10
  status: Type.Unknown({
12
11
  description: "pass | bounce | escalate — 形状指引,非 schema 闸",
@@ -1,5 +1,4 @@
1
1
  const COLLECTOR_OUTPUT_TOOL = "ak_collector_output";
2
- const COLLECTOR_ACCEPTED_TEXT = "\u901A\u8FDB\u53F8\u56DE\u6267\u5DF2\u63A5\u53D7";
3
2
  const COLLECTOR_HOST = "github.com";
4
3
  function safeGet(value, key) {
5
4
  if (typeof value !== "object" && typeof value !== "function" || value === null) return void 0;
@@ -88,7 +87,6 @@ function projectSubmissionProjection(raw) {
88
87
  return Object.keys(out).length > 0 ? out : void 0;
89
88
  }
90
89
  export {
91
- COLLECTOR_ACCEPTED_TEXT,
92
90
  COLLECTOR_HOST,
93
91
  COLLECTOR_OUTPUT_TOOL,
94
92
  validateAcceptedCollectorReceipt
@@ -2,7 +2,6 @@ import { Type } from "typebox";
2
2
  import { openToolObjectFromUnion } from "../open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
4
4
  const FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
5
- const FIXER_ACCEPTED_TEXT = "\u4FEE\u5185\u53F8\u56DE\u6267\u5DF2\u63A5\u53D7";
6
5
  const transportString = Type.String();
7
6
  const authorityBlockerSchema = Type.Object({ cause: Type.Optional(Type.Literal("authority_violation")), evidence: Type.Optional(transportString) });
8
7
  const prerequisiteBlockerSchema = Type.Object({ cause: Type.Optional(Type.Literal("prerequisite_unmet")), prerequisiteId: Type.Optional(transportString), evidence: Type.Optional(transportString) });
@@ -44,7 +43,6 @@ function validateFixerOutput(value, _phase) {
44
43
  return value;
45
44
  }
46
45
  export {
47
- FIXER_ACCEPTED_TEXT,
48
46
  FIXER_OUTPUT_TOOL_NAME,
49
47
  fixerOutputSchema,
50
48
  validateFixerOutput
@@ -2,7 +2,6 @@ import { Type } from "typebox";
2
2
  import { openToolObject } from "../open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
4
4
  const GATEKEEPER_OUTPUT_TOOL_NAME = "ak_gatekeeper_output";
5
- const GATEKEEPER_ACCEPTED_TEXT = "\u95E8\u4E0B\u7701\u51B3\u8BAE\u5DF2\u53D7\u7406";
6
5
  const gatekeeperDecisionSchema = openToolObject(
7
6
  Type.Object({
8
7
  status: Type.Unknown({
@@ -34,7 +33,6 @@ function validateRecordedGatekeeperOutput(value) {
34
33
  return value;
35
34
  }
36
35
  export {
37
- GATEKEEPER_ACCEPTED_TEXT,
38
36
  GATEKEEPER_OUTPUT_TOOL_NAME,
39
37
  gatekeeperDecisionSchema,
40
38
  gatekeeperOutputSchema,
@@ -1,5 +1,4 @@
1
1
  const JUDGE_OUTPUT_TOOL_NAME = "ak_judge_output";
2
- const JUDGE_ACCEPTED_TEXT = "\u5927\u7406\u5BFA\u56DE\u6267\u5DF2\u63A5\u53D7";
3
2
  function validateAcceptedJudgeDetails(verdict) {
4
3
  if (verdict === null || typeof verdict !== "object" || Array.isArray(verdict)) throw new Error("Judge verdict has no execution discriminator");
5
4
  let judgeStatus;
@@ -17,7 +16,6 @@ function validateAcceptedJudgeDetails(verdict) {
17
16
  throw new Error("Judge verdict has no execution discriminator");
18
17
  }
19
18
  export {
20
- JUDGE_ACCEPTED_TEXT,
21
19
  JUDGE_OUTPUT_TOOL_NAME,
22
20
  validateAcceptedJudgeDetails
23
21
  };
@@ -2,7 +2,6 @@ import { Type } from "typebox";
2
2
  import { openToolObject } from "../open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
4
4
  const NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
5
- const NAVIGATOR_ACCEPTED_TEXT = "\u6E38\u5955\u4F7F\u5EFA\u8BAE\u5DF2\u53D7\u7406";
6
5
  const navigatorOutputSchema = withTerminatingOutputDeclarations(
7
6
  openToolObject(
8
7
  Type.Object({
@@ -45,7 +44,6 @@ function navigatorProseFromUnknown(value) {
45
44
  return trimmed === "" ? void 0 : projected.prose;
46
45
  }
47
46
  export {
48
- NAVIGATOR_ACCEPTED_TEXT,
49
47
  NAVIGATOR_OUTPUT_TOOL_NAME,
50
48
  navigatorOutputSchema,
51
49
  navigatorProseFromUnknown,
@@ -1,10 +1,8 @@
1
1
  const REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
2
- const REVIEWER_ACCEPTED_TEXT = "\u5FA1\u53F2\u53F0\u56DE\u6267\u5DF2\u63A5\u53D7";
3
2
  function validateReviewerIntent(output) {
4
3
  return output;
5
4
  }
6
5
  export {
7
- REVIEWER_ACCEPTED_TEXT,
8
6
  REVIEWER_OUTPUT_TOOL_NAME,
9
7
  validateReviewerIntent
10
8
  };
@@ -2,80 +2,28 @@
2
2
  * Package-owned terminating tool registry.
3
3
  * Package roles share these terminating leaves.
4
4
  */
5
- import { COLLECTOR_ACCEPTED_TEXT, COLLECTOR_OUTPUT_TOOL, validateAcceptedCollectorReceipt, } from "./collector-output.js";
6
- import { JUDGE_ACCEPTED_TEXT, JUDGE_OUTPUT_TOOL_NAME, validateAcceptedJudgeDetails, } from "./judge-output.js";
7
- import { REVIEWER_ACCEPTED_TEXT, REVIEWER_OUTPUT_TOOL_NAME, validateReviewerIntent, } from "./reviewer-output.js";
5
+ import { COLLECTOR_OUTPUT_TOOL, validateAcceptedCollectorReceipt, } from "./collector-output.js";
6
+ import { JUDGE_OUTPUT_TOOL_NAME, validateAcceptedJudgeDetails, } from "./judge-output.js";
7
+ import { REVIEWER_OUTPUT_TOOL_NAME, validateReviewerIntent, } from "./reviewer-output.js";
8
+ import { PACKAGED_ROLE_REGISTRY } from "../packaged-role-registry.js";
8
9
  import { CorrectableSubmissionError } from "../submission-correctable-error.js";
9
- import { DOCTOR_ACCEPTED_TEXT, DOCTOR_OUTPUT_TOOL_NAME, validateDoctorSubmissionShape, validateRecordedDoctorOutput } from "../doctor-contracts.js";
10
- import { GATEKEEPER_ACCEPTED_TEXT, GATEKEEPER_OUTPUT_TOOL_NAME, validateRecordedGatekeeperOutput } from "./gatekeeper-output.js";
11
- import { NAVIGATOR_ACCEPTED_TEXT, NAVIGATOR_OUTPUT_TOOL_NAME, validateRecordedNavigatorOutput } from "./navigator-output.js";
12
- import { AUDITOR_ACCEPTED_TEXT, AUDITOR_OUTPUT_TOOL_NAME, validateRecordedAuditorOutput } from "./auditor-output.js";
13
- import { MERGER_ACCEPTED_TEXT, MERGER_OUTPUT_TOOL_NAME, validateMergerOutput } from "../merger-contracts.js";
14
- import { NOTARY_ACCEPTED_TEXT, NOTARY_OUTPUT_TOOL_NAME, validateRecordedNotaryOutput } from "../notary-contracts.js";
15
- import { COUNTERSIGN_ACCEPTED_TEXT, COUNTERSIGN_OUTPUT_TOOL_NAME, validateRecordedCountersignOutput } from "../countersign-contracts.js";
16
- import { GLEANER_LEFT_ACCEPTED_TEXT, GLEANER_LEFT_OUTPUT_TOOL_NAME, validateRecordedGleanerLeftOutput } from "../gleaner-left-contracts.js";
17
- import { INSPECTOR_ACCEPTED_TEXT, INSPECTOR_OUTPUT_TOOL_NAME, validateRecordedInspectorOutput } from "../inspector-contracts.js";
18
- import { DIARIST_ACCEPTED_TEXT, DIARIST_OUTPUT_TOOL_NAME, validateRecordedDiaristOutput } from "../diarist-contracts.js";
19
- import { SECRETARIAT_ACCEPTED_TEXT, SECRETARIAT_OUTPUT_TOOL_NAME } from "../secretariat-contracts.js";
20
- import { CODER_ACCEPTED_TEXT, CODER_OUTPUT_TOOL_NAME, FIXER_ACCEPTED_TEXT, FIXER_OUTPUT_TOOL_NAME, validateAcceptedWorkerDetails, } from "./worker-output.js";
21
- export { CODER_ACCEPTED_TEXT, CODER_OUTPUT_TOOL_NAME, COLLECTOR_ACCEPTED_TEXT, COLLECTOR_OUTPUT_TOOL, FIXER_ACCEPTED_TEXT, FIXER_OUTPUT_TOOL_NAME, JUDGE_ACCEPTED_TEXT, JUDGE_OUTPUT_TOOL_NAME, REVIEWER_ACCEPTED_TEXT, REVIEWER_OUTPUT_TOOL_NAME, MERGER_ACCEPTED_TEXT, MERGER_OUTPUT_TOOL_NAME, validateAcceptedCollectorReceipt, validateAcceptedJudgeDetails, validateReviewerIntent, validateAcceptedWorkerDetails, validateDoctorSubmissionShape, validateRecordedDoctorOutput, validateMergerOutput, validateRecordedNotaryOutput, validateRecordedCountersignOutput, validateRecordedGleanerLeftOutput, validateRecordedInspectorOutput, validateRecordedGatekeeperOutput, validateRecordedNavigatorOutput, validateRecordedAuditorOutput, validateRecordedDiaristOutput, };
22
- export const TERMINATING_TOOL_NAMES = [
23
- CODER_OUTPUT_TOOL_NAME,
24
- FIXER_OUTPUT_TOOL_NAME,
25
- REVIEWER_OUTPUT_TOOL_NAME,
26
- JUDGE_OUTPUT_TOOL_NAME,
27
- COLLECTOR_OUTPUT_TOOL,
28
- DOCTOR_OUTPUT_TOOL_NAME,
29
- MERGER_OUTPUT_TOOL_NAME,
30
- NOTARY_OUTPUT_TOOL_NAME,
31
- COUNTERSIGN_OUTPUT_TOOL_NAME,
32
- GLEANER_LEFT_OUTPUT_TOOL_NAME,
33
- INSPECTOR_OUTPUT_TOOL_NAME,
34
- GATEKEEPER_OUTPUT_TOOL_NAME,
35
- NAVIGATOR_OUTPUT_TOOL_NAME,
36
- AUDITOR_OUTPUT_TOOL_NAME,
37
- DIARIST_OUTPUT_TOOL_NAME,
38
- SECRETARIAT_OUTPUT_TOOL_NAME,
39
- ];
10
+ import { DOCTOR_OUTPUT_TOOL_NAME, validateDoctorSubmissionShape, validateRecordedDoctorOutput } from "../doctor-contracts.js";
11
+ import { GATEKEEPER_OUTPUT_TOOL_NAME, validateRecordedGatekeeperOutput } from "./gatekeeper-output.js";
12
+ import { NAVIGATOR_OUTPUT_TOOL_NAME, validateRecordedNavigatorOutput } from "./navigator-output.js";
13
+ import { AUDITOR_OUTPUT_TOOL_NAME, validateRecordedAuditorOutput } from "./auditor-output.js";
14
+ import { MERGER_OUTPUT_TOOL_NAME, validateMergerOutput } from "../merger-contracts.js";
15
+ import { NOTARY_OUTPUT_TOOL_NAME, validateRecordedNotaryOutput } from "../notary-contracts.js";
16
+ import { COUNTERSIGN_OUTPUT_TOOL_NAME, validateRecordedCountersignOutput } from "../countersign-contracts.js";
17
+ import { GLEANER_LEFT_OUTPUT_TOOL_NAME, validateRecordedGleanerLeftOutput } from "../gleaner-left-contracts.js";
18
+ import { INSPECTOR_OUTPUT_TOOL_NAME, validateRecordedInspectorOutput } from "../inspector-contracts.js";
19
+ import { DIARIST_OUTPUT_TOOL_NAME, validateRecordedDiaristOutput } from "../diarist-contracts.js";
20
+ import { SECRETARIAT_OUTPUT_TOOL_NAME } from "../secretariat-contracts.js";
21
+ import { CODER_OUTPUT_TOOL_NAME, FIXER_OUTPUT_TOOL_NAME, validateAcceptedWorkerDetails, } from "./worker-output.js";
22
+ export { CODER_OUTPUT_TOOL_NAME, COLLECTOR_OUTPUT_TOOL, FIXER_OUTPUT_TOOL_NAME, JUDGE_OUTPUT_TOOL_NAME, REVIEWER_OUTPUT_TOOL_NAME, MERGER_OUTPUT_TOOL_NAME, validateAcceptedCollectorReceipt, validateAcceptedJudgeDetails, validateReviewerIntent, validateAcceptedWorkerDetails, validateDoctorSubmissionShape, validateRecordedDoctorOutput, validateMergerOutput, validateRecordedNotaryOutput, validateRecordedCountersignOutput, validateRecordedGleanerLeftOutput, validateRecordedInspectorOutput, validateRecordedGatekeeperOutput, validateRecordedNavigatorOutput, validateRecordedAuditorOutput, validateRecordedDiaristOutput, };
23
+ export const TERMINATING_TOOL_NAMES = PACKAGED_ROLE_REGISTRY.map((entry) => entry.outputTool);
40
24
  export function isTerminatingToolName(name) {
41
25
  return TERMINATING_TOOL_NAMES.includes(name);
42
26
  }
43
- export function acceptedTextFor(toolName) {
44
- switch (toolName) {
45
- case CODER_OUTPUT_TOOL_NAME:
46
- return CODER_ACCEPTED_TEXT;
47
- case FIXER_OUTPUT_TOOL_NAME:
48
- return FIXER_ACCEPTED_TEXT;
49
- case REVIEWER_OUTPUT_TOOL_NAME:
50
- return REVIEWER_ACCEPTED_TEXT;
51
- case JUDGE_OUTPUT_TOOL_NAME:
52
- return JUDGE_ACCEPTED_TEXT;
53
- case COLLECTOR_OUTPUT_TOOL:
54
- return COLLECTOR_ACCEPTED_TEXT;
55
- case DOCTOR_OUTPUT_TOOL_NAME:
56
- return DOCTOR_ACCEPTED_TEXT;
57
- case MERGER_OUTPUT_TOOL_NAME:
58
- return MERGER_ACCEPTED_TEXT;
59
- case NOTARY_OUTPUT_TOOL_NAME:
60
- return NOTARY_ACCEPTED_TEXT;
61
- case COUNTERSIGN_OUTPUT_TOOL_NAME:
62
- return COUNTERSIGN_ACCEPTED_TEXT;
63
- case GLEANER_LEFT_OUTPUT_TOOL_NAME:
64
- return GLEANER_LEFT_ACCEPTED_TEXT;
65
- case INSPECTOR_OUTPUT_TOOL_NAME:
66
- return INSPECTOR_ACCEPTED_TEXT;
67
- case GATEKEEPER_OUTPUT_TOOL_NAME:
68
- return GATEKEEPER_ACCEPTED_TEXT;
69
- case NAVIGATOR_OUTPUT_TOOL_NAME:
70
- return NAVIGATOR_ACCEPTED_TEXT;
71
- case AUDITOR_OUTPUT_TOOL_NAME:
72
- return AUDITOR_ACCEPTED_TEXT;
73
- case DIARIST_OUTPUT_TOOL_NAME:
74
- return DIARIST_ACCEPTED_TEXT;
75
- case SECRETARIAT_OUTPUT_TOOL_NAME:
76
- return SECRETARIAT_ACCEPTED_TEXT;
77
- }
78
- }
79
27
  export class AcceptedDetailsContractError extends CorrectableSubmissionError {
80
28
  code = "accepted_details_contract";
81
29
  constructor(message, options) {
@@ -103,28 +51,20 @@ export function validateAcceptedLifecycle(toolName, _argumentsValue, detailsValu
103
51
  /** Read status/commit leaves the role wrote — never invent defaults (#836). */
104
52
  export function acceptedFacts(toolName, details) {
105
53
  const record = details;
106
- switch (toolName) {
107
- case JUDGE_OUTPUT_TOOL_NAME:
108
- return typeof record.judgeStatus === "string" ? { status: record.judgeStatus } : {};
109
- case COUNTERSIGN_OUTPUT_TOOL_NAME:
110
- return typeof record.countersignStatus === "string" ? { status: record.countersignStatus } : {};
111
- case SECRETARIAT_OUTPUT_TOOL_NAME:
112
- return typeof record.secretariatStatus === "string" ? { status: record.secretariatStatus } : {};
113
- case MERGER_OUTPUT_TOOL_NAME: {
114
- const status = typeof record.status === "string" ? record.status : undefined;
115
- return {
116
- ...(status === undefined ? {} : { status }),
117
- ...(status === "completed" && typeof record.mergeCommitId === "string"
118
- ? { commit: record.mergeCommitId }
119
- : {}),
120
- };
121
- }
122
- case COLLECTOR_OUTPUT_TOOL:
123
- // Collector has no status leaf — do not invent "collected".
124
- return typeof record.status === "string" ? { status: record.status } : {};
125
- default:
126
- return typeof record.status === "string" ? { status: record.status } : {};
127
- }
54
+ const entry = PACKAGED_ROLE_REGISTRY.find((candidate) => candidate.outputTool === toolName);
55
+ const statusKey = entry !== undefined && "receiptStatusKey" in entry ? entry.receiptStatusKey : "status";
56
+ const status = typeof record[statusKey] === "string" ? record[statusKey] : undefined;
57
+ const commitKey = entry !== undefined && "receiptCommitKey" in entry ? entry.receiptCommitKey : undefined;
58
+ const commitWhen = entry !== undefined && "receiptCommitWhen" in entry ? entry.receiptCommitWhen : undefined;
59
+ const commit = commitKey !== undefined
60
+ && status === commitWhen
61
+ && typeof record[commitKey] === "string"
62
+ ? record[commitKey]
63
+ : undefined;
64
+ return {
65
+ ...(status === undefined ? {} : { status }),
66
+ ...(commit === undefined ? {} : { commit }),
67
+ };
128
68
  }
129
69
  /** Deep structural equality for lifecycle agreement checks. */
130
70
  export function deepEqual(a, b) {
@@ -1,5 +1,4 @@
1
1
  import {
2
- FIXER_ACCEPTED_TEXT,
3
2
  FIXER_OUTPUT_TOOL_NAME,
4
3
  fixerOutputSchema,
5
4
  validateFixerOutput
@@ -7,7 +6,6 @@ import {
7
6
  import { fixerPrerequisiteSchema, fixerPrerequisitesSchema, parseFixerPrerequisites, validateFixerPrerequisites } from "./fixer-packet.js";
8
7
  import { validateFixerOutput as validateFixerOutput2 } from "./fixer-output.js";
9
8
  const CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
10
- const CODER_ACCEPTED_TEXT = "\u5C06\u4F5C\u76D1\u56DE\u6267\u5DF2\u63A5\u53D7";
11
9
  function validateAcceptedCoderDetails(output) {
12
10
  return output;
13
11
  }
@@ -15,9 +13,7 @@ function validateAcceptedWorkerDetails(output, roleLabel = "Coder") {
15
13
  return roleLabel === "Fixer" ? validateFixerOutput2(output) : validateAcceptedCoderDetails(output);
16
14
  }
17
15
  export {
18
- CODER_ACCEPTED_TEXT,
19
16
  CODER_OUTPUT_TOOL_NAME,
20
- FIXER_ACCEPTED_TEXT,
21
17
  FIXER_OUTPUT_TOOL_NAME,
22
18
  fixerOutputSchema,
23
19
  fixerPrerequisiteSchema,