@svenroth-ai/shipwright 0.24.7-next.0 → 0.25.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.
Files changed (175) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-D2BLGWdW.js → EmbeddedTerminal-5QvKe3_a.js} +20 -20
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-C-W_2Jd4.js → abnfDiagram-VRR7QNED-CXi9HegQ.js} +1 -1
  3. package/client/dist/assets/{arc-CpqwESP5.js → arc-DLh4GiqR.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-DZVZ895V.js → architectureDiagram-ZJ3FMSHR-DUypQ8dQ.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-CCCZiAA7.js → blockDiagram-677ZJIJ3-D2cVMKJG.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-Bg1beZAE.js → c4Diagram-LMCZKHZV-DtruBGJw.js} +1 -1
  7. package/client/dist/assets/channel-C_k-9jsa.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-CoaXSarh.js → chunk-2Q5K7J3B-CAfQkFw2.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-CeFXS-CM.js → chunk-32BRIVSS-CPWXoLnQ.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-QyJMVe0m.js → chunk-5VM5RSS4-xVc3oppQ.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-BIOtWVF8.js → chunk-EX3LRPZG-CUpl6fRR.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-Dcq-lWyX.js → chunk-JWPE2WC7-NejUp56x.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-C95323ja.js → chunk-MOJQB5TN-C9-2lLg0.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-C0HPwpWy.js → chunk-RYQCIY6F-BAPtwABy.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-BPrTbZqA.js → chunk-V7JOEXUC-Dwzihw26.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN--BCnNoqt.js → chunk-VR4S4FIN-9-iArFJM.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-Dj8vtcXf.js → chunk-XXDRQBXY-DiWHOrqe.js} +1 -1
  18. package/client/dist/assets/classDiagram-OUVF2IWQ-CsEPq9Ac.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsEPq9Ac.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-y51otZKz.js → cose-bilkent-JH36ORCC-Cp04EOcH.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-BRfS3cHo.js → cynefin-VYW2F7L2-D--GN1v8.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-Dpg2RtfL.js → cynefinDiagram-TSTJHNR4-BGH0o_qp.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-BdZtXgKZ.js → dagre-VKFMJZFB-DSKkIKlj.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-K-RCwWxW.js → diagram-FQU43EPY-Cs_C4lb-.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-CHNn7F2-.js → diagram-G47NLZAW-oDtAA8O_.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-B3zu6xib.js → diagram-NH7WQ7WH-BiFMjqSH.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-Wp5ju7L7.js → diagram-OA4YK3LP-Ccs3thCj.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-C94GpsRk.js → diagram-WEI45ONY-CdZNqgO3.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DXrTPOrP.js → ebnfDiagram-CCIWWBDH-CapTA0VL.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-CGejnW0f.js → erDiagram-Q63AITRT-BcRNEP8s.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-CFJMM637.js → flowDiagram-23GEKE2U-CJ_zF7e_.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-DnaH94Su.js → ganttDiagram-NO4QXBWP-CnJdcg9A.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-DT-D0gbn.js → gitGraphDiagram-IHSO6WYX-YTUQ_ELk.js} +1 -1
  34. package/client/dist/assets/index-6nZ1bt0a.css +1 -0
  35. package/client/dist/assets/index-irQhGNpn.js +828 -0
  36. package/client/dist/assets/{infoDiagram-FWYZ7A6U-DW3Ps00w.js → infoDiagram-FWYZ7A6U-CLOP_ZWD.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-DjxjIT3n.js → ishikawaDiagram-FXEZZL3T-aFTIzr7o.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-DTQRI93Y.js → journeyDiagram-5HDEW3XC-CbPJB4xd.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-BeDvbiEs.js → kanban-definition-HUTT4EX6-BoyhytIS.js} +1 -1
  40. package/client/dist/assets/{linear-B4foxDlh.js → linear-1VXA-uBg.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-c-L4qgSB.js → mermaid.core-D_lO2yK9.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-dh8v0J8T.js → mindmap-definition-LN4V7U3C-iFK7LXMx.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-D5vNrtFh.js → pegDiagram-2B236MQR-DNmcmfA-.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-CIjg_6lR.js → pieDiagram-ENE6RG2P-ekx83O5b.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-CF37qWQD.js → quadrantDiagram-ABIIQ3AL-DayyD1l8.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-x0Hn30Kj.js → railroadDiagram-RFXS5EU6-Bdgz7S6G.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-BE2QnVbN.js → requirementDiagram-TGXJPOKE-szP3Muld.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-CUv6cIlV.js → sankeyDiagram-HTMAVEWB-Ct3rzgUj.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-C3ACj5LS.js → sequenceDiagram-DBY2YBRQ-_69EfmOU.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-DTMIb5gX.js → sizeCapture-X5ZJPWSS-BSOU06J2.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-DI1Z8P74.js → stateDiagram-2N3HPSRC-HmOmFwQm.js} +1 -1
  52. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-BW8H33dv.js +1 -0
  53. package/client/dist/assets/{swimlanes-5IMT3BWC-CLSr9w29.js → swimlanes-5IMT3BWC-CVg_4oT7.js} +2 -2
  54. package/client/dist/assets/swimlanesDiagram-G3AALYLV-BaRlxcPD.js +8 -0
  55. package/client/dist/assets/{timeline-definition-FHXFAJF6-BTWmUhDh.js → timeline-definition-FHXFAJF6-CBBaDKXm.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-Ce1dlLCM.js → vennDiagram-L72KCM5P-CBXiWPMc.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-ClOE-aae.js → wardleyDiagram-EHGQE667-uhBCZoW0.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-Fa2pqWKw.js → xychartDiagram-FW5EYKEG-xxE_wY5O.js} +1 -1
  59. package/client/dist/index.html +2 -2
  60. package/package.json +68 -68
  61. package/server/dist/core/grade-runner.d.ts +4 -4
  62. package/server/dist/core/grade-runner.d.ts.map +1 -1
  63. package/server/dist/core/grade-runner.js +51 -26
  64. package/server/dist/core/grade-runner.js.map +1 -1
  65. package/server/dist/core/grade-target.d.ts +8 -0
  66. package/server/dist/core/grade-target.d.ts.map +1 -1
  67. package/server/dist/core/grade-target.js +10 -0
  68. package/server/dist/core/grade-target.js.map +1 -1
  69. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  70. package/server/dist/core/triage-cli-runner.js +29 -10
  71. package/server/dist/core/triage-cli-runner.js.map +1 -1
  72. package/server/dist/core/uv-runner.d.ts +23 -0
  73. package/server/dist/core/uv-runner.d.ts.map +1 -0
  74. package/server/dist/core/uv-runner.js +39 -0
  75. package/server/dist/core/uv-runner.js.map +1 -0
  76. package/server/dist/external/file/exists-routes.d.ts +7 -0
  77. package/server/dist/external/file/exists-routes.d.ts.map +1 -0
  78. package/server/dist/external/file/exists-routes.js +91 -0
  79. package/server/dist/external/file/exists-routes.js.map +1 -0
  80. package/server/dist/external/org/audit-log.d.ts +27 -0
  81. package/server/dist/external/org/audit-log.d.ts.map +1 -0
  82. package/server/dist/external/org/audit-log.js +92 -0
  83. package/server/dist/external/org/audit-log.js.map +1 -0
  84. package/server/dist/external/org/beat-register.d.ts +15 -22
  85. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  86. package/server/dist/external/org/beat-register.js +37 -32
  87. package/server/dist/external/org/beat-register.js.map +1 -1
  88. package/server/dist/external/org/file-read.d.ts +16 -0
  89. package/server/dist/external/org/file-read.d.ts.map +1 -1
  90. package/server/dist/external/org/file-read.js +86 -46
  91. package/server/dist/external/org/file-read.js.map +1 -1
  92. package/server/dist/external/org/file-write-core.d.ts +18 -0
  93. package/server/dist/external/org/file-write-core.d.ts.map +1 -0
  94. package/server/dist/external/org/file-write-core.js +97 -0
  95. package/server/dist/external/org/file-write-core.js.map +1 -0
  96. package/server/dist/external/org/file-write.d.ts +25 -0
  97. package/server/dist/external/org/file-write.d.ts.map +1 -1
  98. package/server/dist/external/org/file-write.js +82 -132
  99. package/server/dist/external/org/file-write.js.map +1 -1
  100. package/server/dist/external/org/last-run.d.ts +25 -16
  101. package/server/dist/external/org/last-run.d.ts.map +1 -1
  102. package/server/dist/external/org/last-run.js +78 -64
  103. package/server/dist/external/org/last-run.js.map +1 -1
  104. package/server/dist/external/org/lead-doc-read.d.ts +21 -0
  105. package/server/dist/external/org/lead-doc-read.d.ts.map +1 -0
  106. package/server/dist/external/org/lead-doc-read.js +84 -0
  107. package/server/dist/external/org/lead-doc-read.js.map +1 -0
  108. package/server/dist/external/org/mount.d.ts +12 -0
  109. package/server/dist/external/org/mount.d.ts.map +1 -0
  110. package/server/dist/external/org/mount.js +34 -0
  111. package/server/dist/external/org/mount.js.map +1 -0
  112. package/server/dist/external/org/org-chart-lookup.d.ts +13 -0
  113. package/server/dist/external/org/org-chart-lookup.d.ts.map +1 -1
  114. package/server/dist/external/org/org-chart-lookup.js +40 -5
  115. package/server/dist/external/org/org-chart-lookup.js.map +1 -1
  116. package/server/dist/external/org/org-chart.d.ts +21 -12
  117. package/server/dist/external/org/org-chart.d.ts.map +1 -1
  118. package/server/dist/external/org/org-chart.js +50 -32
  119. package/server/dist/external/org/org-chart.js.map +1 -1
  120. package/server/dist/external/org/role-extract.d.ts +8 -0
  121. package/server/dist/external/org/role-extract.d.ts.map +1 -0
  122. package/server/dist/external/org/role-extract.js +72 -0
  123. package/server/dist/external/org/role-extract.js.map +1 -0
  124. package/server/dist/external/org/usage.d.ts +15 -11
  125. package/server/dist/external/org/usage.d.ts.map +1 -1
  126. package/server/dist/external/org/usage.js +64 -54
  127. package/server/dist/external/org/usage.js.map +1 -1
  128. package/server/dist/external/routes.d.ts +1 -1
  129. package/server/dist/external/routes.d.ts.map +1 -1
  130. package/server/dist/external/routes.js +10 -11
  131. package/server/dist/external/routes.js.map +1 -1
  132. package/server/dist/routes/grade.d.ts.map +1 -1
  133. package/server/dist/routes/grade.js +3 -2
  134. package/server/dist/routes/grade.js.map +1 -1
  135. package/server/dist/routes/org-leads-composite.d.ts +21 -0
  136. package/server/dist/routes/org-leads-composite.d.ts.map +1 -0
  137. package/server/dist/routes/org-leads-composite.js +95 -0
  138. package/server/dist/routes/org-leads-composite.js.map +1 -0
  139. package/server/dist/routes/org.d.ts +15 -0
  140. package/server/dist/routes/org.d.ts.map +1 -0
  141. package/server/dist/routes/org.js +198 -0
  142. package/server/dist/routes/org.js.map +1 -0
  143. package/server/dist/terminal/pty-manager.d.ts +9 -0
  144. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  145. package/server/dist/terminal/pty-manager.js +15 -0
  146. package/server/dist/terminal/pty-manager.js.map +1 -1
  147. package/server/dist/terminal/replay-snapshot.d.ts +10 -1
  148. package/server/dist/terminal/replay-snapshot.d.ts.map +1 -1
  149. package/server/dist/terminal/replay-snapshot.js +36 -1
  150. package/server/dist/terminal/replay-snapshot.js.map +1 -1
  151. package/server/dist/terminal/ws-upgrade-handler.d.ts +17 -1
  152. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  153. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts +1 -0
  154. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  155. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +3 -2
  156. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  157. package/server/dist/terminal/ws-upgrade-handler.js +45 -4
  158. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  159. package/server/dist/test/python-spawn-guard-util.d.ts +14 -0
  160. package/server/dist/test/python-spawn-guard-util.d.ts.map +1 -0
  161. package/server/dist/test/python-spawn-guard-util.js +124 -0
  162. package/server/dist/test/python-spawn-guard-util.js.map +1 -0
  163. package/server/dist/types/org.d.ts +115 -0
  164. package/server/dist/types/org.d.ts.map +1 -0
  165. package/server/dist/types/org.js +16 -0
  166. package/server/dist/types/org.js.map +1 -0
  167. package/server/package.json +1 -1
  168. package/client/dist/assets/MarkdownEditorModal-CP5yG9OU.js +0 -212
  169. package/client/dist/assets/channel-BNXbCvDS.js +0 -1
  170. package/client/dist/assets/classDiagram-OUVF2IWQ-w-wCtLx3.js +0 -1
  171. package/client/dist/assets/classDiagram-v2-EOCWNBFH-w-wCtLx3.js +0 -1
  172. package/client/dist/assets/index-CU2QJgvx.js +0 -609
  173. package/client/dist/assets/index-ftvVcUT8.css +0 -1
  174. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-DvwiHlJv.js +0 -1
  175. package/client/dist/assets/swimlanesDiagram-G3AALYLV-JTQZTlZ3.js +0 -8
@@ -0,0 +1,124 @@
1
+ /*
2
+ * Shared source-scan helpers for the python-spawn drift guards
3
+ * (no-direct-python-spawn.test.ts + no-indirect-python-spawn.test.ts,
4
+ * iterate-2026-08-26-grade-uv-run). Split out once the guard grew past one
5
+ * check per file — mirrors the walk + comment-strip convention of
6
+ * no-cross-package-imports.test.ts, but factored so the two guard files don't
7
+ * duplicate it between themselves.
8
+ */
9
+ import { readdirSync, readFileSync, statSync } from "node:fs";
10
+ import { dirname, join, relative, resolve } from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ // server/src/test/ → server/src
15
+ export const SERVER_SRC = resolve(__dirname, "..");
16
+ export function walk(dir, acc = []) {
17
+ for (const entry of readdirSync(dir)) {
18
+ const full = join(dir, entry);
19
+ const st = statSync(full);
20
+ if (st.isDirectory()) {
21
+ if (entry === "node_modules" || entry === "dist")
22
+ continue;
23
+ walk(full, acc);
24
+ }
25
+ else if (st.isFile() &&
26
+ entry.endsWith(".ts") &&
27
+ !entry.endsWith(".d.ts") &&
28
+ !entry.endsWith(".test.ts")) {
29
+ acc.push(full);
30
+ }
31
+ }
32
+ return acc;
33
+ }
34
+ /** `file` relative to server/src, forward-slash normalized — full-path
35
+ * match, never a bare basename (a bare basename would let a same-named file
36
+ * dropped anywhere else in the tree inherit an allowance it was never
37
+ * granted). */
38
+ export function relToServerSrc(file) {
39
+ return relative(SERVER_SRC, file).split("\\").join("/");
40
+ }
41
+ export function readSource(file) {
42
+ return readFileSync(file, "utf-8");
43
+ }
44
+ /** Strip block/line comments while preserving line breaks and string
45
+ * contents, so a doc-comment mentioning these patterns never false-positives
46
+ * while a real `"python3"` spawn literal still matches. */
47
+ export function stripCommentsPreserveLines(src) {
48
+ let out = "";
49
+ let i = 0;
50
+ let inBlock = false;
51
+ let inLine = false;
52
+ let inString = null;
53
+ let escape = false;
54
+ while (i < src.length) {
55
+ const ch = src[i];
56
+ const next = src[i + 1];
57
+ if (inBlock) {
58
+ if (ch === "*" && next === "/") {
59
+ out += " ";
60
+ i += 2;
61
+ inBlock = false;
62
+ continue;
63
+ }
64
+ out += ch === "\n" ? "\n" : " ";
65
+ i++;
66
+ continue;
67
+ }
68
+ if (inLine) {
69
+ if (ch === "\n") {
70
+ out += "\n";
71
+ inLine = false;
72
+ }
73
+ else {
74
+ out += " ";
75
+ }
76
+ i++;
77
+ continue;
78
+ }
79
+ if (inString) {
80
+ out += ch;
81
+ if (escape) {
82
+ escape = false;
83
+ }
84
+ else if (ch === "\\") {
85
+ escape = true;
86
+ }
87
+ else if (ch === inString) {
88
+ inString = null;
89
+ }
90
+ i++;
91
+ continue;
92
+ }
93
+ if (ch === "/" && next === "*") {
94
+ out += " ";
95
+ i += 2;
96
+ inBlock = true;
97
+ continue;
98
+ }
99
+ if (ch === "/" && next === "/") {
100
+ out += " ";
101
+ i += 2;
102
+ inLine = true;
103
+ continue;
104
+ }
105
+ if (ch === '"' || ch === "'" || ch === "`") {
106
+ inString = ch;
107
+ out += ch;
108
+ i++;
109
+ continue;
110
+ }
111
+ out += ch;
112
+ i++;
113
+ }
114
+ return out;
115
+ }
116
+ export function indexToLine(src, index) {
117
+ let line = 1;
118
+ for (let i = 0; i < index; i++) {
119
+ if (src[i] === "\n")
120
+ line++;
121
+ }
122
+ return line;
123
+ }
124
+ //# sourceMappingURL=python-spawn-guard-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-spawn-guard-util.js","sourceRoot":"","sources":["../../src/test/python-spawn-guard-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type { Staleness } from "../external/org/cron.js";
2
+ import type { LeadOrgInfoReason } from "../external/org/org-chart-lookup.js";
3
+ export interface OrgChartLeadView {
4
+ domain: string;
5
+ name: string;
6
+ reports_to: string | null;
7
+ manages: string[];
8
+ charter_path: string;
9
+ }
10
+ export interface OrgChartView {
11
+ version: number;
12
+ po: string;
13
+ leads: Record<string, OrgChartLeadView>;
14
+ }
15
+ export type UsageResponse = {
16
+ leadId: string;
17
+ measured: false;
18
+ } | {
19
+ leadId: string;
20
+ measured: true;
21
+ costUsd: number;
22
+ runCount: number;
23
+ windowDays: number;
24
+ asOf: string;
25
+ };
26
+ export type CadenceUnresolvedReason = LeadOrgInfoReason | "invalid_cron";
27
+ export type LastRunResponse = {
28
+ leadId: string;
29
+ measured: false;
30
+ } | {
31
+ leadId: string;
32
+ measured: true;
33
+ lastRunAt: string;
34
+ sessionId: string;
35
+ staleness: Staleness | "unknown";
36
+ thresholdMs: number | null;
37
+ cadenceMs: number | null;
38
+ cadenceUnresolvedReason?: CadenceUnresolvedReason;
39
+ };
40
+ export interface BeatRegisterEntryView {
41
+ sessionId: string;
42
+ beatId: string;
43
+ leadId: string;
44
+ pid: number;
45
+ startedAt: string;
46
+ closedAt: string | null;
47
+ }
48
+ export type BeatRegisterHealthResponse = {
49
+ leadId: string;
50
+ status: "clear";
51
+ } | {
52
+ leadId: string;
53
+ status: "open";
54
+ entry: BeatRegisterEntryView;
55
+ } | {
56
+ leadId: string;
57
+ status: "fault";
58
+ reason: "duplicate-session-id";
59
+ sessionId: string;
60
+ entries: BeatRegisterEntryView[];
61
+ };
62
+ /** The Now block's four states (iterate spec AC-2) — "waiting on you" is
63
+ * deliberately absent, see the iterate spec's Design Notes. */
64
+ export type LeadNowState = {
65
+ state: "running";
66
+ } | {
67
+ state: "resting";
68
+ lastRun: {
69
+ measured: false;
70
+ } | {
71
+ measured: true;
72
+ lastRunAt: string;
73
+ };
74
+ } | {
75
+ state: "needs-attention";
76
+ reason: "duplicate-session";
77
+ } | {
78
+ state: "not-measured";
79
+ };
80
+ export type LeadRoleView = {
81
+ measured: false;
82
+ } | {
83
+ measured: true;
84
+ text: string;
85
+ };
86
+ export type LeadCadenceView = {
87
+ measured: false;
88
+ } | {
89
+ measured: true;
90
+ text: string;
91
+ cron: string;
92
+ };
93
+ export interface LeadRosterEntry {
94
+ leadId: string;
95
+ domain: string;
96
+ name: string;
97
+ reportsTo: string | null;
98
+ role: LeadRoleView;
99
+ now: LeadNowState;
100
+ cadence: LeadCadenceView;
101
+ usage: UsageResponse;
102
+ }
103
+ export interface LeadsRosterResponse {
104
+ leads: LeadRosterEntry[];
105
+ }
106
+ export interface AuditLogEntry {
107
+ raw: string;
108
+ parsed: Record<string, unknown> | null;
109
+ }
110
+ export interface AuditLogPage {
111
+ entries: AuditLogEntry[];
112
+ total: number;
113
+ nextCursor: number | null;
114
+ }
115
+ //# sourceMappingURL=org.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /*
2
+ * types/org.ts — canonical TS shapes for the leadwright org-directory route
3
+ * family (`/api/external/org/*`, and its plain-surface mirror `/api/org/*`,
4
+ * see `server/src/routes/org.ts`).
5
+ *
6
+ * `external/org/*.ts` import their response types from here instead of
7
+ * declaring them inline, so the secret-gated route and the browser-facing
8
+ * proxy can never drift on wire shape. Client-side mirrors (`client/src/lib/
9
+ * orgApi.ts`) are verbatim copies of these — same discipline as
10
+ * `triage.ts` / `action-schema.ts` (CLAUDE.md rule 7), guarded here by
11
+ * `org-schema-sync.test.ts`'s union-arm comparison (these are discriminated
12
+ * unions, not flat interfaces — the flat-interface field-name guard those
13
+ * two files use does not apply).
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=org.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipwright-command-center-server",
3
- "version": "0.24.7-next.0",
3
+ "version": "0.25.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "tsx watch --env-file-if-exists=../.env.local src/index.ts",