@akagilnc/pi-workflow-roles 0.1.5079 → 0.1.5122

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 (71) hide show
  1. package/dist/acp-host/production-host.js +545 -334
  2. package/dist/atomic-write.js +13 -19
  3. package/dist/auditor-soul.js +2 -1
  4. package/dist/doctor-contracts.js +1 -1
  5. package/dist/gatekeeper-role.js +2 -16
  6. package/dist/headless-host/production-host.js +577 -366
  7. package/dist/merger-contracts.js +1 -1
  8. package/dist/migrate-book-topology.js +18 -14
  9. package/dist/navigator-attendance.js +28 -143
  10. package/dist/navigator-invocation-identity.js +2 -0
  11. package/dist/navigator-public-session.js +13 -1
  12. package/dist/navigator-work-base.js +113 -0
  13. package/dist/notary-contracts.js +0 -2
  14. package/dist/package-contracts/fixer-output.js +1 -1
  15. package/dist/package-contracts/gatekeeper-output.js +1 -1
  16. package/dist/package-contracts/navigator-output.js +1 -1
  17. package/dist/package-contracts/terminating-infrastructure.js +3 -3
  18. package/dist/packaged-role-registry.js +9 -5
  19. package/dist/public-cli/cli.js +24 -1
  20. package/dist/public-cli/countersign-run.js +1 -1
  21. package/dist/public-cli/instruction-seat-run.js +8 -6
  22. package/dist/public-cli/invocation.js +6 -3
  23. package/dist/public-cli/main.js +6711 -6523
  24. package/dist/public-cli/post-admission.js +125 -26
  25. package/dist/public-cli/settlement.js +48 -5
  26. package/dist/receipt-delivery-policy.js +9 -2
  27. package/dist/review-submission.js +3 -3
  28. package/docs/adr/0057-schema-narrowing-cuts-the-required-set-not-the-declared-set.md +9 -0
  29. package/extensions/role-runtime.ts +0 -27
  30. package/package.json +2 -1
  31. package/resources/836-deleted-machine-instruction-inventory.md +3 -3
  32. package/resources/collector-bot-handbook.md +4 -0
  33. package/resources/navigator-route-playbook.md +4 -6
  34. package/scripts/build-package.mjs +4 -0
  35. package/souls/coder-output-guide.md +1 -0
  36. package/src/auditor-soul.ts +2 -1
  37. package/src/collector-role.ts +6 -7
  38. package/src/collector-tool-schemas.ts +5 -5
  39. package/src/diarist-role.ts +2 -2
  40. package/src/doctor-contracts.ts +1 -1
  41. package/src/gatekeeper-role.ts +1 -18
  42. package/src/gleaner-left-role.ts +2 -2
  43. package/src/inspector-role.ts +1 -1
  44. package/src/judge-role.ts +1 -1
  45. package/src/merger-contracts.ts +1 -1
  46. package/src/navigator-attendance.ts +38 -164
  47. package/src/navigator-invocation-identity.ts +2 -0
  48. package/src/navigator-public-session.ts +17 -1
  49. package/src/navigator-role.ts +4 -0
  50. package/src/navigator-session-contracts.ts +2 -0
  51. package/src/navigator-work-base.ts +123 -0
  52. package/src/notary-contracts.ts +0 -4
  53. package/src/package-contracts/fixer-output.ts +1 -1
  54. package/src/package-contracts/gatekeeper-output.ts +3 -3
  55. package/src/package-contracts/navigator-output.ts +1 -1
  56. package/src/package-contracts/terminating-infrastructure.ts +3 -6
  57. package/src/packaged-role-registry.ts +5 -1
  58. package/src/public-cli/cli-io.ts +2 -0
  59. package/src/public-cli/cli.ts +38 -4
  60. package/src/public-cli/countersign-run.ts +1 -1
  61. package/src/public-cli/instruction-seat-run.ts +10 -6
  62. package/src/public-cli/invocation.ts +12 -4
  63. package/src/public-cli/post-admission.ts +189 -34
  64. package/src/public-cli/settlement.ts +58 -4
  65. package/src/receipt-delivery-policy.ts +9 -1
  66. package/src/review-submission.ts +3 -3
  67. package/src/reviewer-role.ts +3 -3
  68. package/src/role-runtime-dependencies.ts +1 -5
  69. package/src/role-runtime.ts +52 -38
  70. package/src/secretariat-role.ts +3 -3
  71. package/src/worker-role.ts +3 -3
@@ -1,23 +1,17 @@
1
- /**
2
- * Same-directory temp + rename atomic file replace.
3
- * Shared primitive for ledger-adjacent typed pages (analyst metrics, etc.).
4
- * Does not open/truncate an existing destination inode, so hard-linked twins
5
- * keep prior bytes until the directory entry is swapped.
6
- * Parent directory must already exist — callers that write under the package
7
- * ledger home own confinement via ensureRealDirectoryTree (ADR 0038).
8
- */
9
1
  import { randomUUID } from "node:crypto";
10
2
  import { rename, rm, writeFile } from "node:fs/promises";
11
3
  import { dirname, join } from "node:path";
12
- export async function writeFileAtomically(destination, contents) {
13
- const parent = dirname(destination);
14
- const temporary = join(parent, `.atomic-write-${randomUUID()}.tmp`);
15
- try {
16
- await writeFile(temporary, contents);
17
- await rename(temporary, destination);
18
- }
19
- catch (error) {
20
- await rm(temporary, { force: true }).catch(() => undefined);
21
- throw error;
22
- }
4
+ async function writeFileAtomically(destination, contents) {
5
+ const parent = dirname(destination);
6
+ const temporary = join(parent, `.atomic-write-${randomUUID()}.tmp`);
7
+ try {
8
+ await writeFile(temporary, contents);
9
+ await rename(temporary, destination);
10
+ } catch (error) {
11
+ await rm(temporary, { force: true }).catch(() => void 0);
12
+ throw error;
13
+ }
23
14
  }
15
+ export {
16
+ writeFileAtomically
17
+ };
@@ -36,8 +36,9 @@ export const AUDITOR_SESSION_MATERIALS = {
36
36
  "souls/judge-auditor.md",
37
37
  "souls/audit-law.md",
38
38
  "souls/quality-law.md",
39
+ "docs/adr/0057-schema-narrowing-cuts-the-required-set-not-the-declared-set.md",
39
40
  ],
40
- doctor: ["CLAUDE.md", "souls/doctor-auditor.md"],
41
+ doctor: ["CLAUDE.md", "souls/doctor-auditor.md", "docs/adr/0057-schema-narrowing-cuts-the-required-set-not-the-declared-set.md"],
41
42
  };
42
43
  export function isAuditorSoulRole(value) {
43
44
  return typeof value === "string" && Object.hasOwn(AUDITOR_SESSION_MATERIALS, value);
@@ -27,7 +27,7 @@ const finding = Type.Union([
27
27
  Type.Object({ targetKey: nonblank, targetKind: Type.Optional(Type.Union(assetKinds.map((kind) => Type.Literal(kind)))), assetEvidence: Type.Optional(Type.Object({ targetKey: nonblank, targetKind: Type.Optional(Type.Union(assetKinds.map((kind) => Type.Literal(kind)))), evidenceId: nonblank }, { additionalProperties: true })), ...findingBody }, { additionalProperties: true })
28
28
  ]);
29
29
  const caseIdentity = Type.Object({ issueNumber: Type.Optional(Type.Integer()), runsPath: nonblank }, { additionalProperties: true });
30
- const DOCTOR_STATUS_DESCRIPTION = "completed | refused \u2014 \u5F62\u72B6\u6307\u5F15\uFF0C\u975E schema \u95F8\uFF1Bcompleted \u5141\u8BB8\u7A7A findings\uFF1Brefused \u4EC5\u5F53\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u6848\u8BC1\u8BCD";
30
+ const DOCTOR_STATUS_DESCRIPTION = "completed | refused\u3002completed \u5141\u8BB8\u7A7A findings\uFF1Brefused \u4EC5\u5F53\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u6848\u8BC1\u8BCD";
31
31
  const doctorSubmissionVariants = Type.Union([
32
32
  Type.Object({
33
33
  status: Type.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
@@ -3,7 +3,7 @@ import { packagedGateStageLabel } from "./packaged-role-registry.js";
3
3
  import { GatekeeperDecisionError, receivedDiscriminator, unreadableDiscriminatorNotice } from "./submission-errors.js";
4
4
  import { INSPECTOR_OUTPUT_TOOL_NAME } from "./inspector-contracts.js";
5
5
  import { REVIEW_QUEUE_STATUSES, REVIEW_SUBMISSION_OUTPUT_TOOL_NAME } from "./review-submission.js";
6
- import { GATEKEEPER_OUTPUT_TOOL_NAME, gatekeeperDecisionSchema, gatekeeperOutputSchema, } from "./package-contracts/gatekeeper-output.js";
6
+ import { GATEKEEPER_OUTPUT_TOOL_NAME, gatekeeperOutputSchema, } from "./package-contracts/gatekeeper-output.js";
7
7
  import { runIdFromRunDirectory } from "./run-terminal-artifacts.js";
8
8
  export const INSPECTOR_OUTPUT_TOOL = INSPECTOR_OUTPUT_TOOL_NAME;
9
9
  export const NOTARY_OUTPUT_TOOL = REVIEW_SUBMISSION_OUTPUT_TOOL_NAME;
@@ -31,24 +31,10 @@ export { GatekeeperDecisionError } from "./submission-errors.js";
31
31
  export const GATEKEEPER_TOOL_SPEC = {
32
32
  name: GATEKEEPER_OUTPUT_TOOL_NAME,
33
33
  label: "门下省决议",
34
- description: "门下省终局决议,状态为 dispatch 或 pass。",
34
+ description: "门下省终局决议。status 为 dispatch 或 pass。",
35
35
  promptSnippet: "门下省决议",
36
36
  parameters: gatekeeperOutputSchema,
37
37
  };
38
- function result(content, details) {
39
- return { content: [{ type: "text", text: content }], details };
40
- }
41
- /** Gatekeeper province decision tool — open transport; package-contract projection owns legality. */
42
- export function createGatekeeperOutputTool() {
43
- return {
44
- name: GATEKEEPER_OUTPUT_TOOL_NAME,
45
- description: "提交门下省派官决定。",
46
- parameters: gatekeeperDecisionSchema,
47
- async execute(_id, args) {
48
- return result(`已收 ${String(args?.status)}`, args);
49
- },
50
- };
51
- }
52
38
  function failureReason(error) {
53
39
  if (error instanceof AggregateError)
54
40
  return error.errors.map(failureReason).join("; ");