wicked-crew 0.16.11 → 0.16.13

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 (341) hide show
  1. package/README.md +28 -8
  2. package/dist/api/artifact-outline.d.ts +64 -0
  3. package/dist/api/artifact-outline.d.ts.map +1 -0
  4. package/dist/api/artifact-outline.js +254 -0
  5. package/dist/api/artifact-outline.js.map +1 -0
  6. package/dist/api/beneath.d.ts +76 -0
  7. package/dist/api/beneath.d.ts.map +1 -0
  8. package/dist/api/beneath.js +214 -0
  9. package/dist/api/beneath.js.map +1 -0
  10. package/dist/api/capture.d.ts +2 -2
  11. package/dist/api/chat-citations.d.ts +25 -1
  12. package/dist/api/chat-citations.d.ts.map +1 -1
  13. package/dist/api/chat-citations.js +186 -61
  14. package/dist/api/chat-citations.js.map +1 -1
  15. package/dist/api/chat-context.d.ts +236 -0
  16. package/dist/api/chat-context.d.ts.map +1 -0
  17. package/dist/api/chat-context.js +808 -0
  18. package/dist/api/chat-context.js.map +1 -0
  19. package/dist/api/chat-history.d.ts +20 -0
  20. package/dist/api/chat-history.d.ts.map +1 -1
  21. package/dist/api/chat-history.js +46 -1
  22. package/dist/api/chat-history.js.map +1 -1
  23. package/dist/api/chat-proposals.d.ts +534 -0
  24. package/dist/api/chat-proposals.d.ts.map +1 -0
  25. package/dist/api/chat-proposals.js +1562 -0
  26. package/dist/api/chat-proposals.js.map +1 -0
  27. package/dist/api/chat-scope.d.ts +41 -0
  28. package/dist/api/chat-scope.d.ts.map +1 -1
  29. package/dist/api/chat-scope.js +87 -15
  30. package/dist/api/chat-scope.js.map +1 -1
  31. package/dist/api/chat-transcripts.d.ts +27 -2
  32. package/dist/api/chat-transcripts.d.ts.map +1 -1
  33. package/dist/api/chat-transcripts.js +105 -4
  34. package/dist/api/chat-transcripts.js.map +1 -1
  35. package/dist/api/diagnostics.d.ts +15 -0
  36. package/dist/api/diagnostics.d.ts.map +1 -1
  37. package/dist/api/diagnostics.js +56 -0
  38. package/dist/api/diagnostics.js.map +1 -1
  39. package/dist/api/elicitation-cache.d.ts +13 -0
  40. package/dist/api/elicitation-cache.d.ts.map +1 -1
  41. package/dist/api/elicitation-cache.js +12 -0
  42. package/dist/api/elicitation-cache.js.map +1 -1
  43. package/dist/api/eval-sample.d.ts +12 -12
  44. package/dist/api/frame-guard.d.ts +62 -0
  45. package/dist/api/frame-guard.d.ts.map +1 -0
  46. package/dist/api/frame-guard.js +97 -0
  47. package/dist/api/frame-guard.js.map +1 -0
  48. package/dist/api/governance-steering.d.ts +4 -4
  49. package/dist/api/multiscope.d.ts +3 -0
  50. package/dist/api/multiscope.d.ts.map +1 -1
  51. package/dist/api/multiscope.js +13 -0
  52. package/dist/api/multiscope.js.map +1 -1
  53. package/dist/api/needs.d.ts +6 -0
  54. package/dist/api/needs.d.ts.map +1 -1
  55. package/dist/api/needs.js +31 -4
  56. package/dist/api/needs.js.map +1 -1
  57. package/dist/api/product.d.ts.map +1 -1
  58. package/dist/api/product.js +13 -2
  59. package/dist/api/product.js.map +1 -1
  60. package/dist/api/project-aggregates.d.ts +6 -6
  61. package/dist/api/project-aggregates.d.ts.map +1 -1
  62. package/dist/api/project-aggregates.js +16 -24
  63. package/dist/api/project-aggregates.js.map +1 -1
  64. package/dist/api/requirements.d.ts +261 -6
  65. package/dist/api/requirements.d.ts.map +1 -1
  66. package/dist/api/requirements.js +344 -64
  67. package/dist/api/requirements.js.map +1 -1
  68. package/dist/api/routes.d.ts +156 -4
  69. package/dist/api/routes.d.ts.map +1 -1
  70. package/dist/api/routes.js +851 -78
  71. package/dist/api/routes.js.map +1 -1
  72. package/dist/api/run-brief.d.ts +78 -0
  73. package/dist/api/run-brief.d.ts.map +1 -0
  74. package/dist/api/run-brief.js +318 -0
  75. package/dist/api/run-brief.js.map +1 -0
  76. package/dist/api/run-files.d.ts.map +1 -1
  77. package/dist/api/run-files.js +5 -1
  78. package/dist/api/run-files.js.map +1 -1
  79. package/dist/api/run-timing-index.d.ts +27 -0
  80. package/dist/api/run-timing-index.d.ts.map +1 -1
  81. package/dist/api/run-timing-index.js +65 -0
  82. package/dist/api/run-timing-index.js.map +1 -1
  83. package/dist/api/seat-images.d.ts +102 -0
  84. package/dist/api/seat-images.d.ts.map +1 -0
  85. package/dist/api/seat-images.js +333 -0
  86. package/dist/api/seat-images.js.map +1 -0
  87. package/dist/api/server.d.ts +3 -0
  88. package/dist/api/server.d.ts.map +1 -1
  89. package/dist/api/server.js +265 -2
  90. package/dist/api/server.js.map +1 -1
  91. package/dist/api/steering-landing.d.ts +48 -1
  92. package/dist/api/steering-landing.d.ts.map +1 -1
  93. package/dist/api/steering-landing.js +116 -42
  94. package/dist/api/steering-landing.js.map +1 -1
  95. package/dist/api/system-snapshot.d.ts +51 -2
  96. package/dist/api/system-snapshot.d.ts.map +1 -1
  97. package/dist/api/system-snapshot.js +151 -15
  98. package/dist/api/system-snapshot.js.map +1 -1
  99. package/dist/api/testing.d.ts +4 -4
  100. package/dist/api/testing.js +2 -2
  101. package/dist/api/testing.js.map +1 -1
  102. package/dist/apps/spec.d.ts +3009 -0
  103. package/dist/apps/spec.d.ts.map +1 -0
  104. package/dist/apps/spec.js +870 -0
  105. package/dist/apps/spec.js.map +1 -0
  106. package/dist/campaigns/routes.js +1 -1
  107. package/dist/campaigns/routes.js.map +1 -1
  108. package/dist/cli/index.js +3 -3
  109. package/dist/cli/index.js.map +1 -1
  110. package/dist/core/adapter.d.ts +12 -0
  111. package/dist/core/adapter.d.ts.map +1 -1
  112. package/dist/core/adapter.js +36 -1
  113. package/dist/core/adapter.js.map +1 -1
  114. package/dist/core/deliver-text.d.ts.map +1 -1
  115. package/dist/core/deliver-text.js +22 -10
  116. package/dist/core/deliver-text.js.map +1 -1
  117. package/dist/core/estate-mcp-client.d.ts +7 -1
  118. package/dist/core/estate-mcp-client.d.ts.map +1 -1
  119. package/dist/core/estate-mcp-client.js +10 -2
  120. package/dist/core/estate-mcp-client.js.map +1 -1
  121. package/dist/core/exec.d.ts +12 -0
  122. package/dist/core/exec.d.ts.map +1 -1
  123. package/dist/core/exec.js +23 -0
  124. package/dist/core/exec.js.map +1 -1
  125. package/dist/core/reassign-refusal.d.ts.map +1 -1
  126. package/dist/core/reassign-refusal.js +23 -3
  127. package/dist/core/reassign-refusal.js.map +1 -1
  128. package/dist/core/repoPaths.d.ts +32 -7
  129. package/dist/core/repoPaths.d.ts.map +1 -1
  130. package/dist/core/repoPaths.js +56 -9
  131. package/dist/core/repoPaths.js.map +1 -1
  132. package/dist/core/requirements-graph-setting.d.ts +32 -0
  133. package/dist/core/requirements-graph-setting.d.ts.map +1 -0
  134. package/dist/core/requirements-graph-setting.js +84 -0
  135. package/dist/core/requirements-graph-setting.js.map +1 -0
  136. package/dist/core/run-boot-resume.d.ts +4 -1
  137. package/dist/core/run-boot-resume.d.ts.map +1 -1
  138. package/dist/core/run-boot-resume.js +6 -1
  139. package/dist/core/run-boot-resume.js.map +1 -1
  140. package/dist/core/run-identity.d.ts.map +1 -1
  141. package/dist/core/run-identity.js +6 -0
  142. package/dist/core/run-identity.js.map +1 -1
  143. package/dist/core/types.d.ts +14 -0
  144. package/dist/core/types.d.ts.map +1 -1
  145. package/dist/core/types.js.map +1 -1
  146. package/dist/decisions/chat-recorder.d.ts +14 -3
  147. package/dist/decisions/chat-recorder.d.ts.map +1 -1
  148. package/dist/decisions/chat-recorder.js +54 -9
  149. package/dist/decisions/chat-recorder.js.map +1 -1
  150. package/dist/editors/csp.d.ts +24 -4
  151. package/dist/editors/csp.d.ts.map +1 -1
  152. package/dist/editors/csp.js +35 -8
  153. package/dist/editors/csp.js.map +1 -1
  154. package/dist/editors/registry.d.ts +46 -21
  155. package/dist/editors/registry.d.ts.map +1 -1
  156. package/dist/editors/registry.js +13 -2
  157. package/dist/editors/registry.js.map +1 -1
  158. package/dist/editors/routes.d.ts +4 -1
  159. package/dist/editors/routes.d.ts.map +1 -1
  160. package/dist/editors/routes.js +30 -3
  161. package/dist/editors/routes.js.map +1 -1
  162. package/dist/editors/visuals.d.ts +51 -0
  163. package/dist/editors/visuals.d.ts.map +1 -0
  164. package/dist/editors/visuals.js +164 -0
  165. package/dist/editors/visuals.js.map +1 -0
  166. package/dist/editors/webrtc-guard.d.ts +94 -0
  167. package/dist/editors/webrtc-guard.d.ts.map +1 -0
  168. package/dist/editors/webrtc-guard.js +506 -0
  169. package/dist/editors/webrtc-guard.js.map +1 -0
  170. package/dist/inspect/reading.d.ts +110 -0
  171. package/dist/inspect/reading.d.ts.map +1 -0
  172. package/dist/inspect/reading.js +325 -0
  173. package/dist/inspect/reading.js.map +1 -0
  174. package/dist/inspect/routes.d.ts +14 -0
  175. package/dist/inspect/routes.d.ts.map +1 -0
  176. package/dist/inspect/routes.js +44 -0
  177. package/dist/inspect/routes.js.map +1 -0
  178. package/dist/inspect/service.d.ts +161 -0
  179. package/dist/inspect/service.d.ts.map +1 -0
  180. package/dist/inspect/service.js +466 -0
  181. package/dist/inspect/service.js.map +1 -0
  182. package/dist/interactive/bridge-pool.d.ts +11 -2
  183. package/dist/interactive/bridge-pool.d.ts.map +1 -1
  184. package/dist/interactive/bridge-pool.js +10 -1
  185. package/dist/interactive/bridge-pool.js.map +1 -1
  186. package/dist/interactive/doc-binding.d.ts +156 -0
  187. package/dist/interactive/doc-binding.d.ts.map +1 -0
  188. package/dist/interactive/doc-binding.js +277 -0
  189. package/dist/interactive/doc-binding.js.map +1 -0
  190. package/dist/interactive/doc-delete-routes.d.ts +3 -0
  191. package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
  192. package/dist/interactive/doc-delete-routes.js +4 -0
  193. package/dist/interactive/doc-delete-routes.js.map +1 -1
  194. package/dist/interactive/draft-events.d.ts +89 -3
  195. package/dist/interactive/draft-events.d.ts.map +1 -1
  196. package/dist/interactive/draft-events.js +441 -30
  197. package/dist/interactive/draft-events.js.map +1 -1
  198. package/dist/interactive/draft-skill.d.ts +7 -0
  199. package/dist/interactive/draft-skill.d.ts.map +1 -1
  200. package/dist/interactive/draft-skill.js +10 -3
  201. package/dist/interactive/draft-skill.js.map +1 -1
  202. package/dist/interactive/edit-events.d.ts +2 -0
  203. package/dist/interactive/edit-events.d.ts.map +1 -1
  204. package/dist/interactive/edit-events.js +11 -0
  205. package/dist/interactive/edit-events.js.map +1 -1
  206. package/dist/interactive/proposal-create.d.ts +143 -0
  207. package/dist/interactive/proposal-create.d.ts.map +1 -0
  208. package/dist/interactive/proposal-create.js +318 -0
  209. package/dist/interactive/proposal-create.js.map +1 -0
  210. package/dist/interactive/proxy-routes.d.ts +60 -3
  211. package/dist/interactive/proxy-routes.d.ts.map +1 -1
  212. package/dist/interactive/proxy-routes.js +217 -3
  213. package/dist/interactive/proxy-routes.js.map +1 -1
  214. package/dist/interactive/source-packet.d.ts +126 -0
  215. package/dist/interactive/source-packet.d.ts.map +1 -0
  216. package/dist/interactive/source-packet.js +482 -0
  217. package/dist/interactive/source-packet.js.map +1 -0
  218. package/dist/learnings/estate.d.ts +16 -0
  219. package/dist/learnings/estate.d.ts.map +1 -0
  220. package/dist/learnings/estate.js +68 -0
  221. package/dist/learnings/estate.js.map +1 -0
  222. package/dist/learnings/extract.d.ts +56 -0
  223. package/dist/learnings/extract.d.ts.map +1 -0
  224. package/dist/learnings/extract.js +252 -0
  225. package/dist/learnings/extract.js.map +1 -0
  226. package/dist/learnings/recall.d.ts +43 -0
  227. package/dist/learnings/recall.d.ts.map +1 -0
  228. package/dist/learnings/recall.js +104 -0
  229. package/dist/learnings/recall.js.map +1 -0
  230. package/dist/learnings/service.d.ts +183 -0
  231. package/dist/learnings/service.d.ts.map +1 -0
  232. package/dist/learnings/service.js +571 -0
  233. package/dist/learnings/service.js.map +1 -0
  234. package/dist/mcp/ask-server.d.ts.map +1 -1
  235. package/dist/mcp/ask-server.js +37 -4
  236. package/dist/mcp/ask-server.js.map +1 -1
  237. package/dist/mcp/broker.d.ts +12 -1
  238. package/dist/mcp/broker.d.ts.map +1 -1
  239. package/dist/mcp/broker.js +24 -5
  240. package/dist/mcp/broker.js.map +1 -1
  241. package/dist/mcp/invoke.d.ts +26 -2
  242. package/dist/mcp/invoke.d.ts.map +1 -1
  243. package/dist/mcp/invoke.js +51 -5
  244. package/dist/mcp/invoke.js.map +1 -1
  245. package/dist/persona/routes.d.ts +92 -0
  246. package/dist/persona/routes.d.ts.map +1 -0
  247. package/dist/persona/routes.js +69 -0
  248. package/dist/persona/routes.js.map +1 -0
  249. package/dist/persona/store.d.ts +104 -0
  250. package/dist/persona/store.d.ts.map +1 -0
  251. package/dist/persona/store.js +176 -0
  252. package/dist/persona/store.js.map +1 -0
  253. package/dist/persona/voice.d.ts +4 -0
  254. package/dist/persona/voice.d.ts.map +1 -0
  255. package/dist/persona/voice.js +58 -0
  256. package/dist/persona/voice.js.map +1 -0
  257. package/dist/projects/routes.d.ts +2 -2
  258. package/dist/setup/known.d.ts +56 -0
  259. package/dist/setup/known.d.ts.map +1 -0
  260. package/dist/setup/known.js +159 -0
  261. package/dist/setup/known.js.map +1 -0
  262. package/dist/setup/routes.d.ts +13 -0
  263. package/dist/setup/routes.d.ts.map +1 -0
  264. package/dist/setup/routes.js +20 -0
  265. package/dist/setup/routes.js.map +1 -0
  266. package/dist/standing-orders/history.d.ts +2 -0
  267. package/dist/standing-orders/history.d.ts.map +1 -1
  268. package/dist/standing-orders/history.js +1 -0
  269. package/dist/standing-orders/history.js.map +1 -1
  270. package/dist/studio/assets/WickedSans-Regular-fb698rcD.woff2 +0 -0
  271. package/dist/studio/assets/WickedSans-SemiBold-CD53n1AC.woff2 +0 -0
  272. package/dist/studio/assets/WickedScript-Regular-CY5juO6I.woff2 +0 -0
  273. package/dist/studio/assets/WickedSerif-Regular-mdPEjaVZ.woff2 +0 -0
  274. package/dist/studio/assets/index-BUZ_-Syk.css +32 -0
  275. package/dist/studio/assets/index-u4O_7N-b.js +986 -0
  276. package/dist/studio/editors/wicked-deck/editor.json +6 -1
  277. package/dist/studio/editors/wicked-deck/icon.svg +1 -0
  278. package/dist/studio/editors/wicked-deck/index.html +1 -1
  279. package/dist/studio/editors/wicked-doc/editor.json +6 -1
  280. package/dist/studio/editors/wicked-doc/icon.svg +1 -0
  281. package/dist/studio/editors/wicked-doc/index.html +1 -1
  282. package/dist/studio/editors/wicked-insights/editor.json +6 -1
  283. package/dist/studio/editors/wicked-insights/icon.svg +1 -0
  284. package/dist/studio/editors/wicked-insights/index.html +1 -1
  285. package/dist/studio/editors/wicked-page/editor.json +6 -1
  286. package/dist/studio/editors/wicked-page/icon.svg +1 -0
  287. package/dist/studio/editors/wicked-page/index.html +1 -1
  288. package/dist/studio/editors/wicked-video/editor.json +6 -1
  289. package/dist/studio/editors/wicked-video/icon.svg +1 -0
  290. package/dist/studio/editors/wicked-video/index.html +1 -1
  291. package/dist/studio/index.html +2 -2
  292. package/dist/studio/testid-inventory.json +5155 -2707
  293. package/dist/voice/dashboard.d.ts +376 -0
  294. package/dist/voice/dashboard.d.ts.map +1 -0
  295. package/dist/voice/dashboard.js +92 -0
  296. package/dist/voice/dashboard.js.map +1 -0
  297. package/dist/voice/inject-input.d.ts +51 -0
  298. package/dist/voice/inject-input.d.ts.map +1 -0
  299. package/dist/voice/inject-input.js +126 -0
  300. package/dist/voice/inject-input.js.map +1 -0
  301. package/dist/voice/routes.d.ts +41 -0
  302. package/dist/voice/routes.d.ts.map +1 -0
  303. package/dist/voice/routes.js +116 -0
  304. package/dist/voice/routes.js.map +1 -0
  305. package/dist/voice/service.d.ts +177 -0
  306. package/dist/voice/service.d.ts.map +1 -0
  307. package/dist/voice/service.js +400 -0
  308. package/dist/voice/service.js.map +1 -0
  309. package/dist/workflow-catalog/build.d.ts +35 -0
  310. package/dist/workflow-catalog/build.d.ts.map +1 -0
  311. package/dist/workflow-catalog/build.js +229 -0
  312. package/dist/workflow-catalog/build.js.map +1 -0
  313. package/dist/workflow-catalog/catalog-data.d.ts +36 -0
  314. package/dist/workflow-catalog/catalog-data.d.ts.map +1 -0
  315. package/dist/workflow-catalog/catalog-data.js +430 -0
  316. package/dist/workflow-catalog/catalog-data.js.map +1 -0
  317. package/dist/working-doc/event-lines.d.ts +76 -0
  318. package/dist/working-doc/event-lines.d.ts.map +1 -0
  319. package/dist/working-doc/event-lines.js +247 -0
  320. package/dist/working-doc/event-lines.js.map +1 -0
  321. package/dist/working-doc/routes.d.ts +1 -1
  322. package/dist/working-doc/routes.d.ts.map +1 -1
  323. package/dist/working-doc/routes.js +2 -1
  324. package/dist/working-doc/routes.js.map +1 -1
  325. package/dist/working-doc/sections.d.ts +3 -1
  326. package/dist/working-doc/sections.d.ts.map +1 -1
  327. package/dist/working-doc/sections.js +4 -2
  328. package/dist/working-doc/sections.js.map +1 -1
  329. package/dist/working-doc/service.d.ts +66 -1
  330. package/dist/working-doc/service.d.ts.map +1 -1
  331. package/dist/working-doc/service.js +298 -22
  332. package/dist/working-doc/service.js.map +1 -1
  333. package/dist/working-doc/store.d.ts +8 -2
  334. package/dist/working-doc/store.d.ts.map +1 -1
  335. package/dist/working-doc/store.js.map +1 -1
  336. package/endpoint-manifest.json +205 -2
  337. package/package.json +5 -4
  338. package/workflows/distill-learnings.json +27 -0
  339. package/workflows/inspect-unit.json +27 -0
  340. package/dist/studio/assets/index-B-f_VEL2.css +0 -32
  341. package/dist/studio/assets/index-DhkxIK-0.js +0 -845
@@ -14,6 +14,7 @@
14
14
  * repo record that this package already reads, and this module is the only thing that touches that
15
15
  * field. One producer, one consumer, nothing to keep in step.
16
16
  */
17
+ import { stat } from 'node:fs/promises';
17
18
  import { join } from 'node:path';
18
19
  /**
19
20
  * The ABSOLUTE path of a repo's code graph, as resolved by the engine.
@@ -74,17 +75,63 @@ export class CodeGraphRootUnresolvableError extends Error {
74
75
  }
75
76
  }
76
77
  /**
77
- * The requirements artifacts a repo's domain extraction writes.
78
- *
79
- * A DIFFERENT path family from the code graph (`.wicked-estate/requirements/`, written by
80
- * `wicked-core domain-graph`) and still derived here, because the engine does not publish it. Same
81
- * hazard, smaller blast radius: it is written and read by this package plus one core subcommand whose
82
- * `--out` this package passes. Tracked with the rest of the cross-repo path pins.
78
+ * The operator-overrides sidecar for a repo's requirements (`requirements_overrides.json`): edits
79
+ * crew keeps beside the checkout and merges at read time. Derived here because the engine does not
80
+ * publish it. The graph itself is read from the repo's estate store through the engine (operator
81
+ * ruling 2026-10-31), not from a file.
83
82
  */
84
- export function requirementsGraph(repo) {
85
- return join(repo.root_path, '.wicked-estate', 'requirements', 'requirements_graph.json');
86
- }
87
83
  export function requirementsOverrides(repo) {
88
84
  return join(repo.root_path, '.wicked-estate', 'requirements', 'requirements_overrides.json');
89
85
  }
86
+ // ── A registered folder that is gone ─────────────────────────────────────────
87
+ /**
88
+ * The finding crew adds to a repo whose registered folder is gone (moved, deleted, an unmounted
89
+ * volume). On the rig, tiny-math was registered under a lane folder named `target`; a cleanup that
90
+ * removed every `target/` as build output deleted it, and every spawn with that cwd failed. Node
91
+ * reports a missing spawn `cwd` as `spawn <binary> ENOENT`, so the repo page said "spawn
92
+ * wicked-estate ENOENT" (and git history "git executable not found") about a binary that was
93
+ * installed. Crew's own finding, beside the engine's: derived on every read, never stored.
94
+ */
95
+ export const REPO_FOLDER_MISSING = 'repo_folder_missing';
96
+ /** What a person reads about a missing folder, and what fixes it. There is no way to unregister a
97
+ * repo (core has none, crew#753), so re-linking it is the remedy: registering the same name again
98
+ * at the folder's new place replaces the record (core upserts by the name's slug). */
99
+ export function repoFolderMissingMessage(rootPath) {
100
+ return (`This repository's folder is missing: ${rootPath}. Re-link it: register it again under the same ` +
101
+ 'name at its folder\'s new place, or put the folder back.');
102
+ }
103
+ /** The `repo_folder_missing` finding a repo record carries, or `null` when its folder is there. */
104
+ export function repoFolderMissing(repo) {
105
+ return repo.findings?.find((f) => f.code === REPO_FOLDER_MISSING) ?? null;
106
+ }
107
+ /** The body every refusal over a missing folder answers (409: the registration, not the request,
108
+ * is wrong), so a route, a launch and a chat say it in the same words. */
109
+ export function repoFolderMissingBody(finding) {
110
+ return { code: REPO_FOLDER_MISSING, error: finding.message, path: finding.path };
111
+ }
112
+ /** Whether `path` is a directory. A path that is ABSENT (or not a directory) answers `false`; any
113
+ * other failure (EACCES, an unreadable mount) answers `true`, because the folder may well be
114
+ * there and the spawn's own error then says what is wrong. */
115
+ export async function isDirectoryPresent(path) {
116
+ try {
117
+ return (await stat(path)).isDirectory();
118
+ }
119
+ catch (err) {
120
+ const code = err.code;
121
+ return !(code === 'ENOENT' || code === 'ENOTDIR');
122
+ }
123
+ }
124
+ /** Every repo, each with a `repo_folder_missing` finding when its folder is gone (and never two). */
125
+ export async function withFolderFindings(repos, present = isDirectoryPresent) {
126
+ return Promise.all(repos.map(async (repo) => {
127
+ const others = (repo.findings ?? []).filter((f) => f.code !== REPO_FOLDER_MISSING);
128
+ if (repo.root_path === '' || (await present(repo.root_path))) {
129
+ return others.length === (repo.findings ?? []).length ? repo : { ...repo, findings: others };
130
+ }
131
+ return {
132
+ ...repo,
133
+ findings: [...others, { code: REPO_FOLDER_MISSING, message: repoFolderMissingMessage(repo.root_path), path: repo.root_path }],
134
+ };
135
+ }));
136
+ }
90
137
  //# sourceMappingURL=repoPaths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repoPaths.js","sourceRoot":"","sources":["../../src/core/repoPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC;QACzF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,CAAC,EAAE,8EAA8E;YAC3F,uFAAuF,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,YAAY,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAE5C;IACA;IAFX,YACW,MAAc,EACd,OAAoB;QAE7B,KAAK,CAAC,QAAQ,MAAM,uBAAuB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAHrD,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAa;QAG7B,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,6BAA6B,CAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"repoPaths.js","sourceRoot":"","sources":["../../src/core/repoPaths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const REQUIREMENTS_MIN_COVERAGE_ENV = "WICKED_REQUIREMENTS_MIN_COVERAGE_PCT";
2
+ /** The engine's default (`wicked_governance::DEFAULT_MIN_COVERAGE_PCT`). */
3
+ export declare const DEFAULT_MIN_COVERAGE_PCT = 80;
4
+ /** A valid `minCoveragePct`: a whole percentage 1..100. */
5
+ export declare function isMinCoveragePct(v: unknown): v is number;
6
+ export declare const DOMAIN_MAX_PAGES_ENV = "WICKED_DOMAIN_MAX_PAGES";
7
+ export declare const DOMAIN_MAX_MINUTES_ENV = "WICKED_DOMAIN_MAX_MINUTES";
8
+ export declare const DOMAIN_PAGE_SIZE_ENV = "WICKED_DOMAIN_PAGE_SIZE";
9
+ /** The settings object's shape: the minimum and the generation's budget and page size. */
10
+ export interface RequirementsGraphSettings {
11
+ minCoveragePct?: number;
12
+ maxPages?: number;
13
+ maxMinutes?: number;
14
+ pageSize?: number;
15
+ }
16
+ /** Why a `requirementsGraph` settings object is refused, in the operator's words. */
17
+ export declare const REQUIREMENTS_GRAPH_SETTINGS_RULE: string;
18
+ /** A valid `requirementsGraph` settings object: any of its four keys, nothing else. */
19
+ export declare function isRequirementsGraphSettings(v: unknown): v is RequirementsGraphSettings;
20
+ /** The minimum in force: the setting when valid, else the default. */
21
+ export declare function minCoveragePct(settings: {
22
+ requirementsGraph?: unknown;
23
+ } | null | undefined): number;
24
+ /**
25
+ * Export the minimum to `env` (default: this process, whose environment the in-process engine and
26
+ * every tool step it spawns read). A missing or invalid value deletes the variable, so the engine's
27
+ * own default applies.
28
+ */
29
+ export declare function applyRequirementsGraphSettings(settings: {
30
+ requirementsGraph?: unknown;
31
+ }, env?: NodeJS.ProcessEnv): void;
32
+ //# sourceMappingURL=requirements-graph-setting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirements-graph-setting.d.ts","sourceRoot":"","sources":["../../src/core/requirements-graph-setting.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAEpF,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAExD;AAOD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAa9D,0FAA0F;AAC1F,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,eAAO,MAAM,gCAAgC,QAEgC,CAAC;AAE9E,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,yBAAyB,CAatF;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,QAAQ,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGnG;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAUN"}
@@ -0,0 +1,84 @@
1
+ // The requirements-graph minimum coverage (operator ruling 2026-10-31): a repository's requirements
2
+ // graph is built, and shown labelled with its share, once REAL requirements reach this percentage
3
+ // of its behaviour-bearing product code (operator decision 2026-11-01, wicked-core#1233:
4
+ // risk-flagged placeholders never count). Default 80, adjustable in Settings
5
+ // (`requirementsGraph.minCoveragePct`, an integer 1..100).
6
+ //
7
+ // One mechanism, the same as the council settings: the daemon exports the persisted value as env at
8
+ // boot and on every settings change, and the engine reads it where it gates —
9
+ // `wicked-core coverage --min-coverage-pct` (the domain-extraction preset's pinned coverage
10
+ // validator, which the engine hands the variable explicitly) and `wicked-core domain-graph` (the
11
+ // preset's last step, a tool process that inherits the daemon's env). A change is live on the next
12
+ // run with no restart. An absent or invalid setting deletes the variable and the engine's default
13
+ // (80) holds, so the two defaults are one number.
14
+ export const REQUIREMENTS_MIN_COVERAGE_ENV = 'WICKED_REQUIREMENTS_MIN_COVERAGE_PCT';
15
+ /** The engine's default (`wicked_governance::DEFAULT_MIN_COVERAGE_PCT`). */
16
+ export const DEFAULT_MIN_COVERAGE_PCT = 80;
17
+ /** A valid `minCoveragePct`: a whole percentage 1..100. */
18
+ export function isMinCoveragePct(v) {
19
+ return typeof v === 'number' && Number.isInteger(v) && v >= 1 && v <= 100;
20
+ }
21
+ // A GENERATION keeps mapping page after page until the target (domain-graph-3); its budget per
22
+ // grant ends in an ask (map more, lower the target for the repository, or stop). The host steps
23
+ // read these from the daemon's environment like the minimum: garden's `next_page.py` (pages and
24
+ // minutes) and `prepare_worklist.py` (the page size). Absent = the garden's defaults (20 pages,
25
+ // 240 minutes, 500 behaviours a page).
26
+ export const DOMAIN_MAX_PAGES_ENV = 'WICKED_DOMAIN_MAX_PAGES';
27
+ export const DOMAIN_MAX_MINUTES_ENV = 'WICKED_DOMAIN_MAX_MINUTES';
28
+ export const DOMAIN_PAGE_SIZE_ENV = 'WICKED_DOMAIN_PAGE_SIZE';
29
+ /** Each generation knob: its env variable and its whole-number range. */
30
+ const GENERATION_KNOBS = {
31
+ maxPages: { env: DOMAIN_MAX_PAGES_ENV, min: 1, max: 200 },
32
+ maxMinutes: { env: DOMAIN_MAX_MINUTES_ENV, min: 1, max: 1440 },
33
+ pageSize: { env: DOMAIN_PAGE_SIZE_ENV, min: 50, max: 2000 },
34
+ };
35
+ const isKnob = (k, v) => typeof v === 'number' && Number.isInteger(v) && v >= GENERATION_KNOBS[k].min && v <= GENERATION_KNOBS[k].max;
36
+ /** Why a `requirementsGraph` settings object is refused, in the operator's words. */
37
+ export const REQUIREMENTS_GRAPH_SETTINGS_RULE = 'requirementsGraph.minCoveragePct must be a whole percentage between 1 and 100; maxPages 1..200, ' +
38
+ 'maxMinutes 1..1440 and pageSize 50..2000 are whole numbers; no other keys';
39
+ /** A valid `requirementsGraph` settings object: any of its four keys, nothing else. */
40
+ export function isRequirementsGraphSettings(v) {
41
+ if (typeof v !== 'object' || v === null || Array.isArray(v))
42
+ return false;
43
+ const o = v;
44
+ for (const k of Object.keys(o)) {
45
+ if (k === 'minCoveragePct') {
46
+ if (o[k] !== undefined && !isMinCoveragePct(o[k]))
47
+ return false;
48
+ }
49
+ else if (Object.hasOwn(GENERATION_KNOBS, k)) {
50
+ if (o[k] !== undefined && !isKnob(k, o[k]))
51
+ return false;
52
+ }
53
+ else {
54
+ return false;
55
+ }
56
+ }
57
+ return true;
58
+ }
59
+ /** The minimum in force: the setting when valid, else the default. */
60
+ export function minCoveragePct(settings) {
61
+ const pct = settings?.requirementsGraph?.minCoveragePct;
62
+ return isMinCoveragePct(pct) ? pct : DEFAULT_MIN_COVERAGE_PCT;
63
+ }
64
+ /**
65
+ * Export the minimum to `env` (default: this process, whose environment the in-process engine and
66
+ * every tool step it spawns read). A missing or invalid value deletes the variable, so the engine's
67
+ * own default applies.
68
+ */
69
+ export function applyRequirementsGraphSettings(settings, env = process.env) {
70
+ const rg = settings.requirementsGraph;
71
+ const pct = rg?.minCoveragePct;
72
+ if (isMinCoveragePct(pct))
73
+ env[REQUIREMENTS_MIN_COVERAGE_ENV] = String(pct);
74
+ else
75
+ delete env[REQUIREMENTS_MIN_COVERAGE_ENV];
76
+ for (const k of Object.keys(GENERATION_KNOBS)) {
77
+ const v = rg?.[k];
78
+ if (isKnob(k, v))
79
+ env[GENERATION_KNOBS[k].env] = String(v);
80
+ else
81
+ delete env[GENERATION_KNOBS[k].env];
82
+ }
83
+ }
84
+ //# sourceMappingURL=requirements-graph-setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirements-graph-setting.js","sourceRoot":"","sources":["../../src/core/requirements-graph-setting.ts"],"names":[],"mappings":"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"}
@@ -51,5 +51,8 @@ export interface BootRunResumeResult {
51
51
  }>;
52
52
  }
53
53
  /** Ask the engine to resume every run it marked `runOrphaned` and still calls `executing`. Never throws. */
54
- export declare function resumeOrphanedRuns(adapter: RunResumeSurface, audit: RunResumeAudit, actor: Actor, log: (message: string) => void): Promise<BootRunResumeResult>;
54
+ export declare function resumeOrphanedRuns(adapter: RunResumeSurface, audit: RunResumeAudit, actor: Actor, log: (message: string) => void,
55
+ /** DES-CHAT-ARTIFACTS-001 §6.2 (A3): runs this sweep never resumes (proposal-bound attempts: the reconcile before it
56
+ * ended them; resuming one would finish an engine run whose seam flight is gone, landing nothing). */
57
+ skip?: (runId: string) => boolean): Promise<BootRunResumeResult>;
55
58
  //# sourceMappingURL=run-boot-resume.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-boot-resume.d.ts","sourceRoot":"","sources":["../../src/core/run-boot-resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACzC,iGAAiG;IACjG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM,CAAC;CAC7G;AAED,MAAM,WAAW,mBAAmB;IAClC,sHAAsH;IACtH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,6DAA6D;IAC7D,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAWD,4GAA4G;AAC5G,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA0D9B"}
1
+ {"version":3,"file":"run-boot-resume.d.ts","sourceRoot":"","sources":["../../src/core/run-boot-resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACzC,iGAAiG;IACjG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM,CAAC;CAC7G;AAED,MAAM,WAAW,mBAAmB;IAClC,sHAAsH;IACtH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,6DAA6D;IAC7D,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAWD,4GAA4G;AAC5G,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;AAC9B;uGACuG;AACvG,IAAI,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAqB,GAC7C,OAAO,CAAC,mBAAmB,CAAC,CA2D9B"}
@@ -32,7 +32,10 @@ function tailOf(events) {
32
32
  return tail;
33
33
  }
34
34
  /** Ask the engine to resume every run it marked `runOrphaned` and still calls `executing`. Never throws. */
35
- export async function resumeOrphanedRuns(adapter, audit, actor, log) {
35
+ export async function resumeOrphanedRuns(adapter, audit, actor, log,
36
+ /** DES-CHAT-ARTIFACTS-001 §6.2 (A3): runs this sweep never resumes (proposal-bound attempts: the reconcile before it
37
+ * ended them; resuming one would finish an engine run whose seam flight is gone, landing nothing). */
38
+ skip = () => false) {
36
39
  const result = { resumed: [], failed: [] };
37
40
  // A partial adapter (a directly-driven route set, a stub without the trail) may lack the surface.
38
41
  if (typeof adapter.sessionsDetail !== 'function' ||
@@ -50,6 +53,8 @@ export async function resumeOrphanedRuns(adapter, audit, actor, log) {
50
53
  }
51
54
  for (const view of executing) {
52
55
  const id = view.session.id;
56
+ if (skip(id))
57
+ continue;
53
58
  let events;
54
59
  try {
55
60
  events = await adapter.runEvents(id);
@@ -1 +1 @@
1
- {"version":3,"file":"run-boot-resume.js","sourceRoot":"","sources":["../../src/core/run-boot-resume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-boot-resume.js","sourceRoot":"","sources":["../../src/core/run-boot-resume.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-identity.d.ts","sourceRoot":"","sources":["../../src/core/run-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAgB/C,CAAC;AAEH,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGzE;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQ/D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAEnG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,gGAAgG;AAChG,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,sGAAsG;IACtG,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC/B;AAgBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAK3F;AA2BD,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAK5D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,IAAI,CAI9F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAGvI"}
1
+ {"version":3,"file":"run-identity.d.ts","sourceRoot":"","sources":["../../src/core/run-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAsB/C,CAAC;AAEH,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGzE;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQ/D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAEnG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,gGAAgG;AAChG,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,sGAAsG;IACtG,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC/B;AAgBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAK3F;AA2BD,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAK5D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,IAAI,CAI9F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAGvI"}
@@ -38,6 +38,8 @@ export const SYSTEM_WORKFLOWS = new Set([
38
38
  // crew#1157: the read-only analysis a chat runs (`POST /chats {workflow}`, studio's Understand
39
39
  // › Ask); it delivers nothing and has its own entry point.
40
40
  'analyze',
41
+ // The in-flight check on a working step (src/inspect): crew's own one-turn, read-only run.
42
+ 'inspect-unit',
41
43
  'onboarding',
42
44
  'capture-learnings',
43
45
  'steering-author',
@@ -49,6 +51,10 @@ export const SYSTEM_WORKFLOWS = new Set([
49
51
  'interactive-chat',
50
52
  'interactive-draft',
51
53
  'interactive-edit',
54
+ // wf-catalog (codex r1): the document review and theme-learning seams (`interactive/review-events.ts`,
55
+ // `theme-events.ts`) run on a handoff their subscriber writes; a hand launch has none to run on.
56
+ 'interactive-review',
57
+ 'interactive-theme',
52
58
  ]);
53
59
  /** Whether a preset/workflow name is a system one ({@link SYSTEM_WORKFLOWS}). */
54
60
  export function isSystemWorkflow(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"run-identity.js","sourceRoot":"","sources":["../../src/core/run-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-identity.js","sourceRoot":"","sources":["../../src/core/run-identity.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,11 @@ export interface AskRequest {
34
34
  question: string;
35
35
  choices?: string[];
36
36
  recommended?: number;
37
+ /** (guided asks) The operator may pick several of `choices` (wicked-core ask `multi`; bounds default 1 and all). */
38
+ multi?: {
39
+ min?: number;
40
+ max?: number;
41
+ };
37
42
  }
38
43
  export interface AskAdapter {
39
44
  askUnit(token: string): Promise<AskUnit>;
@@ -210,6 +215,15 @@ export interface LaunchRunInput {
210
215
  * `power` or the `powerModeDefault` setting, for a repo-scoped plan or preset launch only.
211
216
  */
212
217
  power?: boolean;
218
+ /**
219
+ * (program DES-LEARN §3.3, wicked-core#1216) The person's VOICE BLOCK for a POWER launch: their
220
+ * personality for the run's project (the project's override, else the person's own), which the
221
+ * engine appends to the orchestrator's brief only, behind a governance line (tone and habits, never
222
+ * rigor, gates, checks or permissions). The PA's scope step, reviewers, judges and QE never receive it.
223
+ * Set by `POST /runs` on a power launch when a personality is saved; never on a phased run. An addon
224
+ * without it drops the field, so the orchestrator runs without a voice (tone only, nothing to refuse).
225
+ */
226
+ voice?: string;
213
227
  /**
214
228
  * (QE-IN-APP-WORKFLOWS, wicked-core-ts >= 0.7.49) The operator's EXPLICIT skip of a required QE
215
229
  * acceptance, with this reason (core-ts `skipQeAcceptanceReason`), or its explicit force
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA8BH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACZ;IAArB,YAAqB,IAAmD,EAAE,OAAe;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAA+C;QAEtE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAWD,OAAO,EAAE,sBAAsB,EAAwB,MAAM,yBAAyB,CAAC;AA+JvF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC;AAkCtD,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,cAAc,EAAE,GAAG;IACnB,kBAAkB,EAAE,4BAA4B;IAChD,8FAA8F;IAC9F,+FAA+F;IAC/F,0BAA0B,EAAE,qCAAqC;IACjE,mGAAmG;IACnG,uBAAuB,EAAE,kCAAkC;IAC3D,6FAA6F;IAC7F,gFAAgF;IAChF,8DAA8D;IAC9D,cAAc,EAAE,IAAI;IACpB,gGAAgG;IAChG,mFAAmF;IACnF,YAAY,EAAE,UAAU;IACxB,+FAA+F;IAC/F,wFAAwF;IACxF,qBAAqB,EAAE,IAAI;IAC3B,+FAA+F;IAC/F,oGAAoG;IACpG,gBAAgB,EAAE,IAAI;IACtB,+FAA+F;IAC/F,8FAA8F;IAC9F,6FAA6F;IAC7F,6FAA6F;IAC7F,wFAAwF;IACxF,YAAY,EAAE,sBAAsB;IACpC,eAAe,EAAE,SAAS;IAC1B,2FAA2F;IAC3F,8FAA8F;IAC9F,6EAA6E;IAC7E,oBAAoB,EAAE,EAAE;CACzB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgCH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACZ;IAArB,YAAqB,IAAmD,EAAE,OAAe;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAA+C;QAEtE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAWD,OAAO,EAAE,sBAAsB,EAAwB,MAAM,yBAAyB,CAAC;AAwKvF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC;AAkCtD,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,cAAc,EAAE,GAAG;IACnB,kBAAkB,EAAE,4BAA4B;IAChD,8FAA8F;IAC9F,+FAA+F;IAC/F,0BAA0B,EAAE,qCAAqC;IACjE,mGAAmG;IACnG,uBAAuB,EAAE,kCAAkC;IAC3D,6FAA6F;IAC7F,gFAAgF;IAChF,8DAA8D;IAC9D,cAAc,EAAE,IAAI;IACpB,gGAAgG;IAChG,mFAAmF;IACnF,YAAY,EAAE,UAAU;IACxB,+FAA+F;IAC/F,wFAAwF;IACxF,qBAAqB,EAAE,IAAI;IAC3B,+FAA+F;IAC/F,oGAAoG;IACpG,gBAAgB,EAAE,IAAI;IACtB,+FAA+F;IAC/F,8FAA8F;IAC9F,6FAA6F;IAC7F,6FAA6F;IAC7F,wFAAwF;IACxF,YAAY,EAAE,sBAAsB;IACpC,eAAe,EAAE,SAAS;IAC1B,2FAA2F;IAC3F,8FAA8F;IAC9F,6EAA6E;IAC7E,oBAAoB,EAAE,EAAE;CACzB,CAAC"}
@@ -30,6 +30,11 @@ import type { DecisionService } from './land.js';
30
30
  import type { DecisionType } from './types.js';
31
31
  /** The opening fence, exactly as the codebook (`skills/mem/refs/decision-report.md`) spells it. */
32
32
  export declare const DECISIONS_FENCE = "```wicked-decisions";
33
+ /**
34
+ * DES-CHAT-ARTIFACTS-001 §4.1 (slice A2): a seat proposes an artifact job in a fenced `wicked-make` block, cut out of
35
+ * the reply and hidden while streaming on exactly this mechanism (`chat-proposals.ts` resolves it).
36
+ */
37
+ export declare const MAKE_FENCE = "```wicked-make";
33
38
  /** One labelled span, as the codebook defines it. `none` is crew's label, never an item. */
34
39
  export interface DecisionReportItem {
35
40
  quote: string;
@@ -63,10 +68,16 @@ export declare function splitDecisionsBlock(text: string): {
63
68
  block: string | null;
64
69
  truncated: boolean;
65
70
  };
71
+ export declare function splitMakeBlocks(text: string): {
72
+ text: string;
73
+ blocks: string[];
74
+ truncated: boolean;
75
+ };
66
76
  /**
67
- * The `chatDelta` filter: per (chat, seat), hold back the longest tail that is still a prefix of the
68
- * fence (so a fence split across frames is caught), and from the fence on drop every character
69
- * until {@link reset} (the turn's `chatReply`, which carries the clean full text anyway).
77
+ * The `chatDelta` filter: per (chat, seat), hold back the longest tail that is still a prefix of a
78
+ * hidden fence (`wicked-decisions`, or A2's `wicked-make`) so a fence split across frames is caught,
79
+ * and from the first fence on drop every character until {@link reset} (the turn's `chatReply`, which
80
+ * carries the clean full text anyway).
70
81
  */
71
82
  export declare class DecisionFenceFilter {
72
83
  private readonly state;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-recorder.d.ts","sourceRoot":"","sources":["../../src/decisions/chat-recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-recorder.d.ts","sourceRoot":"","sources":["../../src/decisions/chat-recorder.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,13 @@ import { chatTurnStaleAfterMs } from '../api/chat-turns.js';
29
29
  import { ingestDecision } from './ingest.js';
30
30
  /** The opening fence, exactly as the codebook (`skills/mem/refs/decision-report.md`) spells it. */
31
31
  export const DECISIONS_FENCE = '```wicked-decisions';
32
+ /**
33
+ * DES-CHAT-ARTIFACTS-001 §4.1 (slice A2): a seat proposes an artifact job in a fenced `wicked-make` block, cut out of
34
+ * the reply and hidden while streaming on exactly this mechanism (`chat-proposals.ts` resolves it).
35
+ */
36
+ export const MAKE_FENCE = '```wicked-make';
37
+ /** Every fence a reader never sees, held back and dropped by {@link DecisionFenceFilter}. */
38
+ const HIDDEN_FENCES = [DECISIONS_FENCE, MAKE_FENCE];
32
39
  const STEERING_TYPES = [
33
40
  'architecture',
34
41
  'development',
@@ -105,7 +112,9 @@ export function splitDecisionsBlock(text) {
105
112
  const afterOpen = text.indexOf('\n', lineStart);
106
113
  if (afterOpen === -1)
107
114
  return { text: trimEnd(text.slice(0, lineStart)), block: null, truncated: true };
108
- const close = /\n[ \t]*```/u.exec(text.slice(afterOpen));
115
+ // A close is a line of three backticks alone (A2): another fence's opening (```wicked-make, ```json) never ends it,
116
+ // so one hidden block can never leave another's body in the reply.
117
+ const close = /\n[ \t]*```[ \t]*(?=\r?\n|$)/u.exec(text.slice(afterOpen));
109
118
  if (close === null)
110
119
  return { text: trimEnd(text.slice(0, lineStart)), block: null, truncated: true };
111
120
  const closeAt = afterOpen + close.index;
@@ -114,9 +123,43 @@ export function splitDecisionsBlock(text) {
114
123
  return { text: trimEnd(text.slice(0, lineStart) + rest), block: body, truncated: false };
115
124
  }
116
125
  /**
117
- * The `chatDelta` filter: per (chat, seat), hold back the longest tail that is still a prefix of the
118
- * fence (so a fence split across frames is caught), and from the fence on drop every character
119
- * until {@link reset} (the turn's `chatReply`, which carries the clean full text anyway).
126
+ * DES-CHAT-ARTIFACTS-001 §4.1 (A2): cut EVERY fenced `wicked-make` block out of a reply, in order, with the same line
127
+ * rule as {@link splitDecisionsBlock} (an opening fence on a line of its own; a mention inside a sentence is prose).
128
+ * The caller takes the last block that parses (`chat-proposals.ts`). An opening with no closing fence removes the reply
129
+ * from its line on and is reported `truncated` (its body is not a block): nothing of a block ever reaches a reader.
130
+ */
131
+ /** Blocks taken from one reply, at most; from the next opening on, the reply is cut (hidden, never shown). */
132
+ const MAKE_BLOCKS_MAX = 16;
133
+ export function splitMakeBlocks(text) {
134
+ const blocks = [];
135
+ let out = text;
136
+ for (;;) {
137
+ // Bounded work on an untrusted reply: past the cap, everything from the next opening on is cut in one step.
138
+ if (blocks.length >= MAKE_BLOCKS_MAX) {
139
+ const more = /(^|\n)[ \t]*```wicked-make[ \t]*(?=\r?\n|$)/u.exec(out);
140
+ return more === null ? { text: out, blocks, truncated: false } : { text: trimEnd(out.slice(0, more.index + more[1].length)), blocks, truncated: true };
141
+ }
142
+ const opening = /(^|\n)[ \t]*```wicked-make[ \t]*(?=\r?\n|$)/u.exec(out);
143
+ if (opening === null)
144
+ return { text: out, blocks, truncated: false };
145
+ const lineStart = opening.index + opening[1].length;
146
+ const afterOpen = out.indexOf('\n', lineStart);
147
+ // The close is a line of its own: three backticks and nothing else. Another opening (```wicked-make, ```json) is
148
+ // not a close, so it can never end a block early and leave the rest of a block in the reply.
149
+ const close = afterOpen === -1 ? null : /\n[ \t]*```[ \t]*(?=\r?\n|$)/u.exec(out.slice(afterOpen));
150
+ if (afterOpen === -1 || close === null)
151
+ return { text: trimEnd(out.slice(0, lineStart)), blocks, truncated: true };
152
+ const closeAt = afterOpen + close.index;
153
+ blocks.push(out.slice(afterOpen + 1, closeAt).trim());
154
+ const rest = out.slice(closeAt + close[0].length).replace(/^[ \t]*\r?\n?/u, '');
155
+ out = trimEnd(out.slice(0, lineStart) + rest);
156
+ }
157
+ }
158
+ /**
159
+ * The `chatDelta` filter: per (chat, seat), hold back the longest tail that is still a prefix of a
160
+ * hidden fence (`wicked-decisions`, or A2's `wicked-make`) so a fence split across frames is caught,
161
+ * and from the first fence on drop every character until {@link reset} (the turn's `chatReply`, which
162
+ * carries the clean full text anyway).
120
163
  */
121
164
  export class DecisionFenceFilter {
122
165
  state = new Map();
@@ -131,14 +174,16 @@ export class DecisionFenceFilter {
131
174
  return '';
132
175
  }
133
176
  const buf = s.held + text;
134
- const at = buf.indexOf(DECISIONS_FENCE);
135
- if (at !== -1) {
177
+ const hits = HIDDEN_FENCES.map((f) => buf.indexOf(f)).filter((i) => i !== -1);
178
+ if (hits.length > 0) {
136
179
  this.state.set(key, { held: '', dropping: true });
137
- return buf.slice(0, at);
180
+ return buf.slice(0, Math.min(...hits));
138
181
  }
182
+ const longest = Math.max(...HIDDEN_FENCES.map((f) => f.length)) - 1;
139
183
  let hold = 0;
140
- for (let n = Math.min(buf.length, DECISIONS_FENCE.length - 1); n > 0; n -= 1) {
141
- if (DECISIONS_FENCE.startsWith(buf.slice(buf.length - n))) {
184
+ for (let n = Math.min(buf.length, longest); n > 0; n -= 1) {
185
+ const tail = buf.slice(buf.length - n);
186
+ if (HIDDEN_FENCES.some((f) => f.startsWith(tail))) {
142
187
  hold = n;
143
188
  break;
144
189
  }