wicked-crew 0.7.34 → 0.7.36

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 (185) hide show
  1. package/dist/api/chat-scope.d.ts +29 -1
  2. package/dist/api/chat-scope.d.ts.map +1 -1
  3. package/dist/api/chat-scope.js +67 -12
  4. package/dist/api/chat-scope.js.map +1 -1
  5. package/dist/api/chat-transcripts.d.ts +60 -0
  6. package/dist/api/chat-transcripts.d.ts.map +1 -0
  7. package/dist/api/chat-transcripts.js +139 -0
  8. package/dist/api/chat-transcripts.js.map +1 -0
  9. package/dist/api/chat-turns.d.ts +43 -4
  10. package/dist/api/chat-turns.d.ts.map +1 -1
  11. package/dist/api/chat-turns.js +73 -6
  12. package/dist/api/chat-turns.js.map +1 -1
  13. package/dist/api/delivery-cache.d.ts +23 -6
  14. package/dist/api/delivery-cache.d.ts.map +1 -1
  15. package/dist/api/delivery-cache.js +27 -17
  16. package/dist/api/delivery-cache.js.map +1 -1
  17. package/dist/api/delivery-index.d.ts +45 -3
  18. package/dist/api/delivery-index.d.ts.map +1 -1
  19. package/dist/api/delivery-index.js +79 -4
  20. package/dist/api/delivery-index.js.map +1 -1
  21. package/dist/api/requirements.d.ts +3 -5
  22. package/dist/api/requirements.d.ts.map +1 -1
  23. package/dist/api/requirements.js +30 -146
  24. package/dist/api/requirements.js.map +1 -1
  25. package/dist/api/retry-index.d.ts +14 -0
  26. package/dist/api/retry-index.d.ts.map +1 -1
  27. package/dist/api/retry-index.js +29 -0
  28. package/dist/api/retry-index.js.map +1 -1
  29. package/dist/api/roster-standing.d.ts +4 -4
  30. package/dist/api/roster-standing.d.ts.map +1 -1
  31. package/dist/api/roster-standing.js +24 -12
  32. package/dist/api/roster-standing.js.map +1 -1
  33. package/dist/api/routes.d.ts +142 -10
  34. package/dist/api/routes.d.ts.map +1 -1
  35. package/dist/api/routes.js +292 -44
  36. package/dist/api/routes.js.map +1 -1
  37. package/dist/api/run-timing-index.d.ts +22 -0
  38. package/dist/api/run-timing-index.d.ts.map +1 -1
  39. package/dist/api/run-timing-index.js +34 -0
  40. package/dist/api/run-timing-index.js.map +1 -1
  41. package/dist/api/seat-health.d.ts +2 -46
  42. package/dist/api/seat-health.d.ts.map +1 -1
  43. package/dist/api/seat-health.js +28 -111
  44. package/dist/api/seat-health.js.map +1 -1
  45. package/dist/api/seat-standing.d.ts +9 -8
  46. package/dist/api/seat-standing.d.ts.map +1 -1
  47. package/dist/api/seat-standing.js +22 -32
  48. package/dist/api/seat-standing.js.map +1 -1
  49. package/dist/api/server.d.ts.map +1 -1
  50. package/dist/api/server.js +114 -12
  51. package/dist/api/server.js.map +1 -1
  52. package/dist/api/skills.d.ts +2 -2
  53. package/dist/api/skills.d.ts.map +1 -1
  54. package/dist/api/skills.js +5 -2
  55. package/dist/api/skills.js.map +1 -1
  56. package/dist/api/stall-frame-index.d.ts +68 -0
  57. package/dist/api/stall-frame-index.d.ts.map +1 -0
  58. package/dist/api/stall-frame-index.js +106 -0
  59. package/dist/api/stall-frame-index.js.map +1 -0
  60. package/dist/api/stall-watchdog.d.ts +22 -2
  61. package/dist/api/stall-watchdog.d.ts.map +1 -1
  62. package/dist/api/stall-watchdog.js +41 -11
  63. package/dist/api/stall-watchdog.js.map +1 -1
  64. package/dist/campaigns/plan.d.ts +12 -2
  65. package/dist/campaigns/plan.d.ts.map +1 -1
  66. package/dist/campaigns/plan.js +3 -0
  67. package/dist/campaigns/plan.js.map +1 -1
  68. package/dist/campaigns/rollup.d.ts +5 -0
  69. package/dist/campaigns/rollup.d.ts.map +1 -1
  70. package/dist/campaigns/rollup.js +3 -2
  71. package/dist/campaigns/rollup.js.map +1 -1
  72. package/dist/campaigns/routes.d.ts +5 -2
  73. package/dist/campaigns/routes.d.ts.map +1 -1
  74. package/dist/campaigns/routes.js +13 -3
  75. package/dist/campaigns/routes.js.map +1 -1
  76. package/dist/cli/index.js +137 -23
  77. package/dist/cli/index.js.map +1 -1
  78. package/dist/cli/port.d.ts +19 -0
  79. package/dist/cli/port.d.ts.map +1 -0
  80. package/dist/cli/port.js +39 -0
  81. package/dist/cli/port.js.map +1 -0
  82. package/dist/core/adapter.d.ts +68 -2
  83. package/dist/core/adapter.d.ts.map +1 -1
  84. package/dist/core/adapter.js +176 -23
  85. package/dist/core/adapter.js.map +1 -1
  86. package/dist/core/bridge-reaper.d.ts +57 -1
  87. package/dist/core/bridge-reaper.d.ts.map +1 -1
  88. package/dist/core/bridge-reaper.js +143 -21
  89. package/dist/core/bridge-reaper.js.map +1 -1
  90. package/dist/core/cursor.d.ts +7 -0
  91. package/dist/core/cursor.d.ts.map +1 -1
  92. package/dist/core/cursor.js +7 -1
  93. package/dist/core/cursor.js.map +1 -1
  94. package/dist/core/deliver-text.d.ts +35 -2
  95. package/dist/core/deliver-text.d.ts.map +1 -1
  96. package/dist/core/deliver-text.js +127 -17
  97. package/dist/core/deliver-text.js.map +1 -1
  98. package/dist/core/deliver-triage.d.ts.map +1 -1
  99. package/dist/core/deliver-triage.js +5 -2
  100. package/dist/core/deliver-triage.js.map +1 -1
  101. package/dist/core/deliver.d.ts +76 -2
  102. package/dist/core/deliver.d.ts.map +1 -1
  103. package/dist/core/deliver.js +209 -16
  104. package/dist/core/deliver.js.map +1 -1
  105. package/dist/core/engine-roster.d.ts +4 -3
  106. package/dist/core/engine-roster.d.ts.map +1 -1
  107. package/dist/core/engine-roster.js +10 -14
  108. package/dist/core/engine-roster.js.map +1 -1
  109. package/dist/core/types.d.ts +30 -0
  110. package/dist/core/types.d.ts.map +1 -1
  111. package/dist/core/types.js +6 -4
  112. package/dist/core/types.js.map +1 -1
  113. package/dist/core/versions.d.ts +17 -0
  114. package/dist/core/versions.d.ts.map +1 -0
  115. package/dist/core/versions.js +35 -0
  116. package/dist/core/versions.js.map +1 -0
  117. package/dist/interactive/bridge-pool.d.ts +66 -14
  118. package/dist/interactive/bridge-pool.d.ts.map +1 -1
  119. package/dist/interactive/bridge-pool.js +130 -17
  120. package/dist/interactive/bridge-pool.js.map +1 -1
  121. package/dist/interactive/bridge-root.d.ts +47 -16
  122. package/dist/interactive/bridge-root.d.ts.map +1 -1
  123. package/dist/interactive/bridge-root.js +102 -31
  124. package/dist/interactive/bridge-root.js.map +1 -1
  125. package/dist/interactive/doc-delete-routes.d.ts +3 -1
  126. package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
  127. package/dist/interactive/doc-delete-routes.js.map +1 -1
  128. package/dist/interactive/doc-list-routes.d.ts +3 -1
  129. package/dist/interactive/doc-list-routes.d.ts.map +1 -1
  130. package/dist/interactive/doc-list-routes.js.map +1 -1
  131. package/dist/interactive/docs-index.d.ts +3 -1
  132. package/dist/interactive/docs-index.d.ts.map +1 -1
  133. package/dist/interactive/docs-index.js +1 -1
  134. package/dist/interactive/docs-index.js.map +1 -1
  135. package/dist/interactive/project-root.d.ts +8 -2
  136. package/dist/interactive/project-root.d.ts.map +1 -1
  137. package/dist/interactive/project-root.js +1 -1
  138. package/dist/interactive/project-root.js.map +1 -1
  139. package/dist/interactive/proxy-routes.d.ts +3 -1
  140. package/dist/interactive/proxy-routes.d.ts.map +1 -1
  141. package/dist/interactive/proxy-routes.js.map +1 -1
  142. package/dist/projects/graph.d.ts +4 -0
  143. package/dist/projects/graph.d.ts.map +1 -1
  144. package/dist/projects/graph.js +4 -2
  145. package/dist/projects/graph.js.map +1 -1
  146. package/dist/projects/routes.d.ts +2 -2
  147. package/dist/projects/state-home-preflight.d.ts +30 -7
  148. package/dist/projects/state-home-preflight.d.ts.map +1 -1
  149. package/dist/projects/state-home-preflight.js +59 -16
  150. package/dist/projects/state-home-preflight.js.map +1 -1
  151. package/dist/projects/state-home-registry.d.ts.map +1 -1
  152. package/dist/projects/state-home-registry.js +2 -0
  153. package/dist/projects/state-home-registry.js.map +1 -1
  154. package/dist/qe/acceptance.d.ts +9 -0
  155. package/dist/qe/acceptance.d.ts.map +1 -1
  156. package/dist/qe/acceptance.js +16 -1
  157. package/dist/qe/acceptance.js.map +1 -1
  158. package/dist/qe/author-workflow.d.ts.map +1 -1
  159. package/dist/qe/author-workflow.js +2 -1
  160. package/dist/qe/author-workflow.js.map +1 -1
  161. package/dist/skills/base-skill.d.ts +32 -10
  162. package/dist/skills/base-skill.d.ts.map +1 -1
  163. package/dist/skills/base-skill.js +36 -27
  164. package/dist/skills/base-skill.js.map +1 -1
  165. package/dist/skills/guards.d.ts.map +1 -1
  166. package/dist/skills/guards.js +3 -0
  167. package/dist/skills/guards.js.map +1 -1
  168. package/dist/skills/runtime.d.ts +9 -5
  169. package/dist/skills/runtime.d.ts.map +1 -1
  170. package/dist/skills/runtime.js +11 -7
  171. package/dist/skills/runtime.js.map +1 -1
  172. package/dist/skills/store.d.ts +30 -0
  173. package/dist/skills/store.d.ts.map +1 -1
  174. package/dist/skills/store.js +159 -3
  175. package/dist/skills/store.js.map +1 -1
  176. package/dist/skills/tree.d.ts +12 -0
  177. package/dist/skills/tree.d.ts.map +1 -1
  178. package/dist/skills/tree.js +26 -0
  179. package/dist/skills/tree.js.map +1 -1
  180. package/dist/studio/assets/index-Dk98qXKv.js +546 -0
  181. package/dist/studio/index.html +1 -1
  182. package/dist/studio/testid-inventory.json +89 -5
  183. package/endpoint-manifest.json +13 -1
  184. package/package.json +4 -4
  185. package/dist/studio/assets/index-DhojBZ1T.js +0 -544
@@ -1,40 +1,41 @@
1
1
  /**
2
- * REQUIREMENTS SERVICE — server-side search + operator overrides over the LIVE
3
- * estate store, with the `requirements_graph.json` artifact as fallback.
2
+ * REQUIREMENTS SERVICE — server-side search + operator overrides over the evidence-gated
3
+ * `requirements_graph.json` artifact.
4
4
  *
5
- * Why the store is primary: the artifact is an evidence-gated SNAPSHOT — it only
6
- * regenerates when `wicked-core domain-graph` passes its coverage bar, so mid-extraction
7
- * it can lag the store by hours (observed: a UI serving day-old placeholder titles while
8
- * the store held thousands of validated statements). Requirements content lives in
9
- * estate (`nodes.requirement` + RULE-* annotations); the UI reads that truth directly
10
- * (read-only `node:sqlite`) and falls back to the artifact for repos without a store
11
- * or on runtimes without the sqlite builtin.
5
+ * ONE source (crew#548, F-RC1-041 — FIX-IT-ALL L10-3): until 0.7.35 this module ALSO opened the
6
+ * repo's code-graph store through a second SQLite library (`node:sqlite`, read-only, per request)
7
+ * and served the live `nodes.requirement` rows first, falling back to the artifact. The engine
8
+ * holds the same file open in-process through its own rusqlite (`getCoverageReportForRepo`), and
9
+ * a second library on one SQLite file in one process is the F-E2E-021 class that corrupted the
10
+ * bus db (one library per db file per process — crew#541). The store path is DELETED: the
11
+ * artifact `wicked-core domain-graph` regenerates when its coverage bar passes is the only
12
+ * source, and `RequirementsPage.source` always reads `'artifact'`. Named loss: a repo whose
13
+ * domain-graph never passed its coverage bar answers the existing 404 ("requirements_graph.json
14
+ * not generated") where the live store used to answer — the observed lag the old header cited as
15
+ * the reason the store went primary; not on any RC2 journey (register BC-64). Live freshness, if
16
+ * wanted later, is ONE additive core-ts read (`requirementsIndexJson`), never a second library.
12
17
  *
13
18
  * Why server-side: 15k+ requirements — shipping them to the browser for JS-side
14
19
  * filtering is not search. The daemon builds a flat index (cached, invalidated on
15
- * store/artifact mtime with a small TTL guard against WAL-churn thrash), and queries
16
- * run here: tokenized AND-match over id/domain/title/statements, risk + domain
17
- * filters, offset/limit pagination.
20
+ * artifact/overrides mtime), and queries run here: tokenized AND-match over
21
+ * id/domain/title/statements, risk + domain filters, offset/limit pagination.
18
22
  *
19
23
  * Why an OVERRIDES sidecar: the artifact is DERIVED (regenerated from the estate
20
24
  * store), so operator edits written into it would be clobbered on the next
21
25
  * `domain-graph` run. Edits live in `requirements_overrides.json` beside the artifact,
22
- * keyed `domain::reqId` (store-built indexes key by the estate SymbolId), and are
23
- * merged at read time — the overlay survives regeneration and keeps provenance honest
24
- * (`riskSource: operator` vs `data`).
26
+ * keyed `domain::reqId`, and are merged at read time — the overlay survives
27
+ * regeneration and keeps provenance honest (`riskSource: operator` vs `data`).
25
28
  *
26
29
  * ORPHANED OVERRIDES: an override key matches by exact string, so a key the corpus no
27
- * longer mints simply stops matching — silently. That happens on an estate id-scheme
28
- * migration (a full re-extract re-keys method/field SymbolIds; module-level ids
29
- * survive) and on artifact regeneration that renames a domain or reqId. The index
30
- * therefore COUNTS the keys that matched no row and surfaces the count as
31
- * `orphanedOverrides` on every page, so the edits' existence is never invisible. It
32
- * does NOT re-key them: the old→new mapping is estate's to define, and guessing it
33
- * here would attach an operator's risk note to the wrong symbol.
30
+ * longer mints simply stops matching — silently. That happens on an artifact regeneration
31
+ * that renames a domain or reqId. The index therefore COUNTS the keys that matched no row
32
+ * and surfaces the count as `orphanedOverrides` on every page, so the edits' existence is
33
+ * never invisible. It does NOT re-key them: guessing the mapping here would attach an
34
+ * operator's risk note to the wrong requirement.
34
35
  */
35
36
  import { readFile, writeFile, rename, mkdir, stat } from 'node:fs/promises';
36
37
  import { dirname } from 'node:path';
37
- import { codeGraphDb, requirementsGraph, requirementsOverrides } from '../core/repoPaths.js';
38
+ import { requirementsGraph, requirementsOverrides } from '../core/repoPaths.js';
38
39
  /** Product-functional requirements come from CODE; statements extracted from
39
40
  * lockfiles, manifests, data fixtures, and docs are honest observations about
40
41
  * those assets but are NOT product behavior — they class as config-data so the
@@ -57,10 +58,6 @@ function countOrphanedOverrides(overrides, byKey) {
57
58
  return orphaned;
58
59
  }
59
60
  const RISK_RE = /risk/i;
60
- const RISK_PREFIX = '[RISK]';
61
- /** WAL churn during extraction touches the db every few seconds — don't rebuild a
62
- * 15k-row index per keystroke; a fresh-enough index is authoritative for this long. */
63
- const REBUILD_TTL_MS = 5_000;
64
61
  // Paths come from `repoPaths` — this module used to spell the code-graph path itself, which is
65
62
  // one of the five copies FINDING-069 was made of. It takes the whole `RepoEntry` rather than a
66
63
  // root path for exactly that reason: a bare string is an invitation to re-derive.
@@ -86,127 +83,16 @@ async function readOverrides(repo) {
86
83
  }
87
84
  const cache = new Map();
88
85
  let tmpSeq = 0;
89
- /** Lazily resolved sqlite builtin — absent on older Node runtimes → artifact fallback. */
90
- let sqliteMod;
91
- async function sqlite() {
92
- if (sqliteMod === undefined) {
93
- try {
94
- const name = 'node:sqlite';
95
- sqliteMod = (await import(name));
96
- }
97
- catch {
98
- sqliteMod = null;
99
- }
100
- }
101
- return sqliteMod;
102
- }
103
- /** Build the index from the LIVE estate store (read-only). Returns null when the
104
- * store can't serve (no db, no sqlite builtin, schema mismatch) — caller falls back. */
105
- async function buildStoreIndex(repo, sourceMtime, ovMtime) {
106
- const mod = await sqlite();
107
- if (mod === null)
108
- return null;
109
- const overrides = await readOverrides(repo);
110
- let db = null;
111
- const entries = [];
112
- const byKey = new Map();
113
- try {
114
- db = new mod.DatabaseSync(codeGraphDb(repo), { readOnly: true });
115
- const rules = new Map();
116
- for (const r of db
117
- .prepare("SELECT node_sym, value, confidence FROM annotations WHERE key LIKE 'RULE-%'")
118
- .all()) {
119
- const list = rules.get(r.node_sym) ?? [];
120
- list.push({ statement: r.value ?? '', confidence: r.confidence });
121
- rules.set(r.node_sym, list);
122
- }
123
- const rows = db
124
- .prepare(`SELECT n.symbol AS sid, s.sym AS sym, n.name, n.file, n.requirement,
125
- n.requirement_validated AS validated
126
- FROM nodes n JOIN symbols s ON s.sid = n.symbol
127
- WHERE n.requirement IS NOT NULL AND n.requirement != ''`)
128
- .all();
129
- for (const row of rows) {
130
- const key = row.sym;
131
- const ov = overrides[key];
132
- const file = row.file ?? '';
133
- const slash = file.lastIndexOf('/');
134
- const domain = slash > 0 ? file.slice(0, slash) : '(root)';
135
- const dataRisk = row.requirement.startsWith(RISK_PREFIX);
136
- const risk = ov?.risk !== undefined ? ov.risk : dataRisk;
137
- const riskSource = ov?.risk !== undefined ? 'operator' : dataRisk ? 'data' : null;
138
- const title = ov?.title ?? (row.name !== null && row.name !== '' ? row.name : key);
139
- const nodeRules = rules.get(row.sid) ?? [];
140
- const summary = {
141
- key,
142
- domain,
143
- reqId: key,
144
- title,
145
- category: categoryOf(file),
146
- statement: row.requirement,
147
- status: ov?.status ?? (row.validated === 1 ? 'validated' : 'active'),
148
- risk,
149
- riskSource,
150
- edited: ov !== undefined,
151
- };
152
- const source = {
153
- title,
154
- description: file,
155
- status: summary.status,
156
- legacy_components: file === '' ? [] : [file],
157
- business_rules: nodeRules,
158
- };
159
- const haystack = `${key} ${domain} ${title} ${row.requirement} ${nodeRules.map((r) => r.statement).join(' ')} ${ov?.notes ?? ''}`.toLowerCase();
160
- const entry = { summary, haystack, source };
161
- entries.push(entry);
162
- byKey.set(key, entry);
163
- }
164
- }
165
- catch {
166
- return null; // schema drift or unreadable store — artifact fallback
167
- }
168
- finally {
169
- db?.close();
170
- }
171
- return {
172
- entries,
173
- byKey,
174
- sourceMtimeMs: sourceMtime,
175
- fromStore: true,
176
- overridesMtimeMs: ovMtime,
177
- builtAtMs: Date.now(),
178
- total: entries.length,
179
- orphanedOverrides: countOrphanedOverrides(overrides, byKey),
180
- };
181
- }
86
+ /** The artifact-built index for `repo` — cached, rebuilt when the artifact or the overrides
87
+ * sidecar changes mtime; `null` when the artifact does not exist yet (the route's 404). */
182
88
  async function buildIndex(repo) {
183
- const db = codeGraphDb(repo);
184
- const [dbMtime, walMtime, artMtime, ovMtime] = await Promise.all([
185
- mtimeMs(db),
186
- mtimeMs(`${db}-wal`),
89
+ const [artMtime, ovMtime] = await Promise.all([
187
90
  mtimeMs(requirementsGraph(repo)),
188
91
  mtimeMs(requirementsOverrides(repo)),
189
92
  ]);
190
- const storeMtime = Math.max(dbMtime, walMtime);
191
- const cached = cache.get(repo.root_path);
192
- // TTL applies ONLY to store-built indexes: extraction WAL churn changes the db
193
- // mtime every few seconds and must not trigger a rebuild per request. Artifact
194
- // mtime changes only on regen, so artifact-built indexes always mtime-check.
195
- if (cached?.fromStore === true && Date.now() - cached.builtAtMs < REBUILD_TTL_MS)
196
- return cached;
197
- if (storeMtime >= 0) {
198
- if (cached && cached.sourceMtimeMs === storeMtime && cached.overridesMtimeMs === ovMtime) {
199
- cached.builtAtMs = Date.now();
200
- return cached;
201
- }
202
- const fromStore = await buildStoreIndex(repo, storeMtime, ovMtime);
203
- if (fromStore !== null) {
204
- cache.set(repo.root_path, fromStore);
205
- return fromStore;
206
- }
207
- }
208
93
  if (artMtime < 0)
209
- return null; // no store, no artifact — requirements not generated yet
94
+ return null; // no artifact — requirements not generated yet
95
+ const cached = cache.get(repo.root_path);
210
96
  if (cached && cached.sourceMtimeMs === artMtime && cached.overridesMtimeMs === ovMtime) {
211
97
  return cached;
212
98
  }
@@ -256,9 +142,7 @@ async function buildIndex(repo) {
256
142
  entries,
257
143
  byKey,
258
144
  sourceMtimeMs: artMtime,
259
- fromStore: false,
260
145
  overridesMtimeMs: ovMtime,
261
- builtAtMs: Date.now(),
262
146
  total: entries.length,
263
147
  orphanedOverrides: countOrphanedOverrides(overrides, byKey),
264
148
  };
@@ -295,7 +179,7 @@ export async function listRequirements(repo, query) {
295
179
  offset: query.offset,
296
180
  limit: query.limit,
297
181
  items: matched.slice(query.offset, query.offset + query.limit),
298
- source: index.fromStore ? 'store' : 'artifact',
182
+ source: 'artifact',
299
183
  orphanedOverrides: index.orphanedOverrides,
300
184
  };
301
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,17 @@
14
14
  */
15
15
  import type { AuditLog } from './audit.js';
16
16
  import type { AuditEntry } from '../core/types.js';
17
+ /** The pull request a run REVISES (DES-L9 / crew#550) — the durable record is the `run.launched`
18
+ * audit entry's `detail.revisesPr` (number, head branch, URL), written beside `retryOf`. */
19
+ export interface RevisesPrRecord {
20
+ number: number;
21
+ headRef: string;
22
+ url: string;
23
+ }
17
24
  export declare class RetryIndex {
18
25
  private readonly runToRetryOf;
26
+ /** DES-L9: run → the PR it revises, from the same `run.launched` entry (post-hoc re-push reads it). */
27
+ private readonly runToRevisesPr;
19
28
  /**
20
29
  * Consume pre-read `run.launched` entries — the seam that lets `createServer` feed this index
21
30
  * and `GroupIndex` from ONE trail scan (the delivery-index consolidation note, crew#321).
@@ -32,5 +41,10 @@ export declare class RetryIndex {
32
41
  set(runId: string, retryOf: string): void;
33
42
  /** The run id this run retries, or `undefined` (the DTO spells that as an ABSENT field). */
34
43
  retryOfFor(runId: string): string | undefined;
44
+ /** DES-L9: record the PR a run revises (the same post-commit point that writes the trail entry). */
45
+ setRevisesPr(runId: string, pr: RevisesPrRecord): void;
46
+ /** The PR this run revises, or `undefined` — a post-hoc `POST /runs/:id/deliver` on a stranded
47
+ * revision re-pushes to THAT branch (after re-checking the PR is still OPEN), never a new PR. */
48
+ revisesPrFor(runId: string): RevisesPrRecord | undefined;
35
49
  }
36
50
  //# sourceMappingURL=retry-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-index.d.ts","sourceRoot":"","sources":["../../src/api/retry-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAE1D;;;OAGG;IACH,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IASrD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzC,4FAA4F;IAC5F,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAG9C"}
1
+ {"version":3,"file":"retry-index.d.ts","sourceRoot":"","sources":["../../src/api/retry-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;6FAC6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAcD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IAErE;;;OAGG;IACH,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAarD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzC,4FAA4F;IAC5F,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7C,oGAAoG;IACpG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG,IAAI;IAItD;sGACkG;IAClG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;CAGzD"}
@@ -12,8 +12,24 @@
12
12
  * pre-CREW-UX-3 behavior, not an error) and updated at the same post-commit point that writes
13
13
  * the audit entry, so the map can only lag by a failed hydrate, never diverge silently.
14
14
  */
15
+ function revisesPrOf(detail) {
16
+ const v = detail?.['revisesPr'];
17
+ if (v === null || typeof v !== 'object')
18
+ return undefined;
19
+ const r = v;
20
+ const number = r['number'];
21
+ const headRef = r['headRef'];
22
+ const url = r['url'];
23
+ if (typeof number !== 'number' || !Number.isInteger(number) || number <= 0)
24
+ return undefined;
25
+ if (typeof headRef !== 'string' || headRef === '' || typeof url !== 'string')
26
+ return undefined;
27
+ return { number, headRef, url };
28
+ }
15
29
  export class RetryIndex {
16
30
  runToRetryOf = new Map();
31
+ /** DES-L9: run → the PR it revises, from the same `run.launched` entry (post-hoc re-push reads it). */
32
+ runToRevisesPr = new Map();
17
33
  /**
18
34
  * Consume pre-read `run.launched` entries — the seam that lets `createServer` feed this index
19
35
  * and `GroupIndex` from ONE trail scan (the delivery-index consolidation note, crew#321).
@@ -24,6 +40,10 @@ export class RetryIndex {
24
40
  if (typeof entry.runId === 'string' && typeof retryOf === 'string') {
25
41
  this.runToRetryOf.set(entry.runId, retryOf);
26
42
  }
43
+ const revises = revisesPrOf(entry.detail);
44
+ if (typeof entry.runId === 'string' && revises !== undefined) {
45
+ this.runToRevisesPr.set(entry.runId, revises);
46
+ }
27
47
  }
28
48
  }
29
49
  /**
@@ -48,5 +68,14 @@ export class RetryIndex {
48
68
  retryOfFor(runId) {
49
69
  return this.runToRetryOf.get(runId);
50
70
  }
71
+ /** DES-L9: record the PR a run revises (the same post-commit point that writes the trail entry). */
72
+ setRevisesPr(runId, pr) {
73
+ this.runToRevisesPr.set(runId, pr);
74
+ }
75
+ /** The PR this run revises, or `undefined` — a post-hoc `POST /runs/:id/deliver` on a stranded
76
+ * revision re-pushes to THAT branch (after re-checking the PR is still OPEN), never a new PR. */
77
+ revisesPrFor(runId) {
78
+ return this.runToRevisesPr.get(runId);
79
+ }
51
80
  }
52
81
  //# sourceMappingURL=retry-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-index.js","sourceRoot":"","sources":["../../src/api/retry-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,OAAO,UAAU;IACJ,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1D;;;OAGG;IACH,wBAAwB,CAAC,OAAqB;QAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,KAAe,EAAE,GAA2B;QACxD,IAAI,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,EAAE,CACH,qFACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,OAAe;QAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,4FAA4F;IAC5F,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"retry-index.js","sourceRoot":"","sources":["../../src/api/retry-index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The ONE roster accessor every launch path shares: the registry roster decorated with crew's
3
- * STANDING (F-2R2-009) — runtime `health`, `signed_in`, `auth`, `council_eligible` + its reason,
4
- * the council bench — so `engineRosterJson` (core/engine-roster.ts) can bench a seat the daemon
5
- * already knows is unusable before the engine convenes it.
3
+ * STANDING (F-2R2-009) — runtime `health`, `signed_in`, `auth`, `council_eligible` + its reason —
4
+ * so `engineRosterJson` (core/engine-roster.ts) can bench a seat the daemon already knows is
5
+ * unusable before the engine convenes it. (R5b: crew keeps no council bench of its own.)
6
6
  *
7
7
  * F-RECON-002 / F-RECON-003: this used to be a closure inside `registerRoutes`, so ONLY the routes
8
8
  * (`POST /runs`, `/testing/*`, campaigns, steering) launched with standing. The interactive seams
@@ -36,7 +36,7 @@ export interface RosterStandingDeps {
36
36
  * Build the accessor. Each seat's registry fields ride through verbatim — the spread is
37
37
  * deliberately NOT a field whitelist, which is what lets the engine's `login_invocation` pass
38
38
  * untouched — and gains `health`, `signed_in`, and the standing readings (`auth`, `free_tier*`,
39
- * `council_eligible`, `council_ineligible_reason`, `council_bench`, `auth_source/evidence`).
39
+ * `council_eligible`, `council_ineligible_reason`, `auth_source/evidence`).
40
40
  */
41
41
  export declare function rosterWithStandingFactory(deps: RosterStandingDeps): RosterWithStanding;
42
42
  //# sourceMappingURL=roster-standing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roster-standing.d.ts","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,0FAA0F;AAC1F,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,EAAE,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,kGAAkG;IAClG,UAAU,EAAE,iBAAiB,CAAC;IAC9B;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAC1E;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CA8BtF"}
1
+ {"version":3,"file":"roster-standing.d.ts","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,0FAA0F;AAC1F,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,EAAE,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,kGAAkG;IAClG,UAAU,EAAE,iBAAiB,CAAC;IAC9B;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAC1E;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAwCtF"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The ONE roster accessor every launch path shares: the registry roster decorated with crew's
3
- * STANDING (F-2R2-009) — runtime `health`, `signed_in`, `auth`, `council_eligible` + its reason,
4
- * the council bench — so `engineRosterJson` (core/engine-roster.ts) can bench a seat the daemon
5
- * already knows is unusable before the engine convenes it.
3
+ * STANDING (F-2R2-009) — runtime `health`, `signed_in`, `auth`, `council_eligible` + its reason —
4
+ * so `engineRosterJson` (core/engine-roster.ts) can bench a seat the daemon already knows is
5
+ * unusable before the engine convenes it. (R5b: crew keeps no council bench of its own.)
6
6
  *
7
7
  * F-RECON-002 / F-RECON-003: this used to be a closure inside `registerRoutes`, so ONLY the routes
8
8
  * (`POST /runs`, `/testing/*`, campaigns, steering) launched with standing. The interactive seams
@@ -18,12 +18,12 @@
18
18
  */
19
19
  import { CoreAdapter } from '../core/adapter.js';
20
20
  import { signedInHeuristic } from './seat-signin.js';
21
- import { seatStanding } from './seat-standing.js';
21
+ import { seatStanding, chatSeatAdmission } from './seat-standing.js';
22
22
  /**
23
23
  * Build the accessor. Each seat's registry fields ride through verbatim — the spread is
24
24
  * deliberately NOT a field whitelist, which is what lets the engine's `login_invocation` pass
25
25
  * untouched — and gains `health`, `signed_in`, and the standing readings (`auth`, `free_tier*`,
26
- * `council_eligible`, `council_ineligible_reason`, `council_bench`, `auth_source/evidence`).
26
+ * `council_eligible`, `council_ineligible_reason`, `auth_source/evidence`).
27
27
  */
28
28
  export function rosterWithStandingFactory(deps) {
29
29
  const { seatHealth } = deps;
@@ -36,17 +36,29 @@ export function rosterWithStandingFactory(deps) {
36
36
  const key = String(seat.key);
37
37
  const health = seatHealth.healthFor(key);
38
38
  const signed = signedIn(key, workerRoot === '' ? undefined : workerRoot);
39
+ // (R5b, DES-L3 PR-3D) No crew-side council bench any more: the engine's per-run ballot ledger
40
+ // (`session.benched_seats`) is the one bench, so there is no bench reading to pass and no
41
+ // health reading to weigh — the roster's standing is the auth picture alone.
42
+ const standing = seatStanding(seat, signed,
43
+ // F-A45-006: the seat's OWN "no credential" report (a ballot's "No API key found", a
44
+ // worker's 401, an auth ACP fallback) overrides the file probe — `auth` flips, not only
45
+ // `council_eligible`, and the evidence rides on the wire.
46
+ seatHealth.authFailureFor(key));
47
+ // F-W1-005 (wave-1 P6): the chat admission verdict the daemon itself applies when `POST /chats`
48
+ // picks its default seats — the SAME `chatSeatAdmission` call, for both scope modes — so the
49
+ // studio's picker offers exactly the seats an open would seat, from one source of truth (no
50
+ // client-side copy of the rule). Additive on the wire (`RosterSeat` index signature until
51
+ // api-types 0.39.0 types it).
52
+ const standingSeat = seat;
39
53
  return {
40
54
  ...seat,
41
55
  health,
42
56
  signed_in: signed,
43
- // The bench is THIS daemon's council evidence (councilSeatFailed, bounded window) — the
44
- // prediction learns from what the engine actually did with the seat (#533 review, F-1).
45
- ...seatStanding(seat, signed, health, seatHealth.councilBenchFor(key),
46
- // F-A45-006: the seat's OWN "no credential" report (a ballot's "No API key found", a
47
- // worker's 401, an auth ACP fallback) overrides the file probe — `auth` flips, not only
48
- // `council_eligible`, and the evidence rides on the wire.
49
- seatHealth.authFailureFor(key)),
57
+ ...standing,
58
+ chat_admission: {
59
+ unscoped: chatSeatAdmission(standingSeat, standing.auth, false),
60
+ scoped: chatSeatAdmission(standingSeat, standing.auth, true),
61
+ },
50
62
  };
51
63
  });
52
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"roster-standing.js","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkBlD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAwB;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,OAAO,GAAiB,EAAE;QACxB,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC7C,OAAQ,QAAQ,EAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACzE,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM;gBACN,SAAS,EAAE,MAAM;gBACjB,wFAAwF;gBACxF,wFAAwF;gBACxF,GAAG,YAAY,CACb,IAA+F,EAC/F,MAAM,EACN,MAAM,EACN,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC;gBAC/B,qFAAqF;gBACrF,wFAAwF;gBACxF,0DAA0D;gBAC1D,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAC/B;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"roster-standing.js","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAkBxF;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAwB;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,OAAO,GAAiB,EAAE;QACxB,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC7C,OAAQ,QAAQ,EAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACzE,8FAA8F;YAC9F,0FAA0F;YAC1F,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,YAAY,CAC3B,IAA+F,EAC/F,MAAM;YACN,qFAAqF;YACrF,wFAAwF;YACxF,0DAA0D;YAC1D,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAC/B,CAAC;YACF,gGAAgG;YAChG,6FAA6F;YAC7F,4FAA4F;YAC5F,0FAA0F;YAC1F,8BAA8B;YAC9B,MAAM,YAAY,GAAG,IAA+B,CAAC;YACrD,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM;gBACN,SAAS,EAAE,MAAM;gBACjB,GAAG,QAAQ;gBACX,cAAc,EAAE;oBACd,QAAQ,EAAE,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;oBAC/D,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC7D;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}