@owlmeans/viable-common 0.0.43 → 0.0.45

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 (708) hide show
  1. package/README.md +3 -3
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent-presentation/SKILL.md +4 -4
  4. package/agent-meta/skills/viable-common/SKILL.md +59 -36
  5. package/build/agent/consts.d.ts +58 -0
  6. package/build/agent/consts.d.ts.map +1 -0
  7. package/build/agent/consts.js +63 -0
  8. package/build/agent/consts.js.map +1 -0
  9. package/build/agent/consts.local.d.ts +21 -0
  10. package/build/agent/consts.local.d.ts.map +1 -0
  11. package/build/agent/consts.local.js +44 -0
  12. package/build/agent/consts.local.js.map +1 -0
  13. package/build/agent/index.d.ts +2 -0
  14. package/build/agent/index.d.ts.map +1 -1
  15. package/build/agent/index.js +1 -0
  16. package/build/agent/index.js.map +1 -1
  17. package/build/agent/presentation/types.d.ts +21 -0
  18. package/build/agent/presentation/types.d.ts.map +1 -0
  19. package/build/agent/presentation/types.js.map +1 -0
  20. package/build/agent/presentation.d.ts +12 -94
  21. package/build/agent/presentation.d.ts.map +1 -1
  22. package/build/agent/presentation.js +218 -299
  23. package/build/agent/presentation.js.map +1 -1
  24. package/build/agent/types.d.ts +30 -0
  25. package/build/agent/types.d.ts.map +1 -1
  26. package/build/agent/types.local.d.ts +4 -0
  27. package/build/agent/types.local.d.ts.map +1 -0
  28. package/build/agent/types.local.js +2 -0
  29. package/build/agent/types.local.js.map +1 -0
  30. package/build/areas/consts.d.ts +5 -0
  31. package/build/areas/consts.d.ts.map +1 -1
  32. package/build/areas/consts.js +4 -0
  33. package/build/areas/consts.js.map +1 -1
  34. package/build/areas/index.d.ts +1 -0
  35. package/build/areas/index.d.ts.map +1 -1
  36. package/build/areas/index.js.map +1 -1
  37. package/build/areas/tenancy/types.d.ts +23 -0
  38. package/build/areas/tenancy/types.d.ts.map +1 -0
  39. package/build/areas/tenancy/types.js +2 -0
  40. package/build/areas/tenancy/types.js.map +1 -0
  41. package/build/areas/tenancy.d.ts +6 -50
  42. package/build/areas/tenancy.d.ts.map +1 -1
  43. package/build/areas/tenancy.js +21 -31
  44. package/build/areas/tenancy.js.map +1 -1
  45. package/build/areas/types.d.ts +32 -0
  46. package/build/areas/types.d.ts.map +1 -1
  47. package/build/ba/connecting/types.d.ts +45 -0
  48. package/build/ba/connecting/types.d.ts.map +1 -0
  49. package/build/ba/connecting/types.js +2 -0
  50. package/build/ba/connecting/types.js.map +1 -0
  51. package/build/ba/connecting.d.ts +4 -0
  52. package/build/ba/connecting.d.ts.map +1 -0
  53. package/build/ba/connecting.js +47 -0
  54. package/build/ba/connecting.js.map +1 -0
  55. package/build/ba/helpers.d.ts +4 -39
  56. package/build/ba/helpers.d.ts.map +1 -1
  57. package/build/ba/helpers.js +5 -79
  58. package/build/ba/helpers.js.map +1 -1
  59. package/build/ba/index.d.ts +2 -0
  60. package/build/ba/index.d.ts.map +1 -1
  61. package/build/ba/index.js +1 -0
  62. package/build/ba/index.js.map +1 -1
  63. package/build/ba/types.d.ts +1 -1
  64. package/build/ba/types.d.ts.map +1 -1
  65. package/build/blueprint/consts.d.ts +41 -0
  66. package/build/blueprint/consts.d.ts.map +1 -1
  67. package/build/blueprint/consts.js +51 -0
  68. package/build/blueprint/consts.js.map +1 -1
  69. package/build/blueprint/consts.local.d.ts +2 -0
  70. package/build/blueprint/consts.local.d.ts.map +1 -0
  71. package/build/blueprint/consts.local.js +3 -0
  72. package/build/blueprint/consts.local.js.map +1 -0
  73. package/build/blueprint/index.d.ts +1 -0
  74. package/build/blueprint/index.d.ts.map +1 -1
  75. package/build/blueprint/index.js +1 -0
  76. package/build/blueprint/index.js.map +1 -1
  77. package/build/blueprint/types.d.ts +3 -52
  78. package/build/blueprint/types.d.ts.map +1 -1
  79. package/build/blueprint/types.js +1 -65
  80. package/build/blueprint/types.js.map +1 -1
  81. package/build/blueprint/utils.d.ts +11 -0
  82. package/build/blueprint/utils.d.ts.map +1 -0
  83. package/build/blueprint/utils.js +16 -0
  84. package/build/blueprint/utils.js.map +1 -0
  85. package/build/branding.d.ts +0 -8
  86. package/build/branding.d.ts.map +1 -1
  87. package/build/branding.js +0 -16
  88. package/build/branding.js.map +1 -1
  89. package/build/connect/branding/types.d.ts +28 -0
  90. package/build/connect/branding/types.d.ts.map +1 -0
  91. package/build/connect/branding/types.js +2 -0
  92. package/build/connect/branding/types.js.map +1 -0
  93. package/build/connect/consts.d.ts +2 -10
  94. package/build/connect/consts.d.ts.map +1 -1
  95. package/build/connect/consts.js +2 -23
  96. package/build/connect/consts.js.map +1 -1
  97. package/build/connect/conversion/types.d.ts +93 -0
  98. package/build/connect/conversion/types.d.ts.map +1 -0
  99. package/build/connect/conversion/types.js +2 -0
  100. package/build/connect/conversion/types.js.map +1 -0
  101. package/build/connect/entrypoints/types.d.ts +30 -0
  102. package/build/connect/entrypoints/types.d.ts.map +1 -0
  103. package/build/connect/entrypoints/types.js +2 -0
  104. package/build/connect/entrypoints/types.js.map +1 -0
  105. package/build/connect/entrypoints.d.ts +61 -92
  106. package/build/connect/entrypoints.d.ts.map +1 -1
  107. package/build/connect/entrypoints.js +5 -2
  108. package/build/connect/entrypoints.js.map +1 -1
  109. package/build/connect/errors/types.d.ts +20 -0
  110. package/build/connect/errors/types.d.ts.map +1 -0
  111. package/build/connect/errors/types.js +2 -0
  112. package/build/connect/errors/types.js.map +1 -0
  113. package/build/connect/errors.d.ts +32 -0
  114. package/build/connect/errors.d.ts.map +1 -1
  115. package/build/connect/errors.js +65 -0
  116. package/build/connect/errors.js.map +1 -1
  117. package/build/connect/index.d.ts +13 -2
  118. package/build/connect/index.d.ts.map +1 -1
  119. package/build/connect/index.js +1 -0
  120. package/build/connect/index.js.map +1 -1
  121. package/build/connect/kit/types.d.ts +52 -0
  122. package/build/connect/kit/types.d.ts.map +1 -0
  123. package/build/connect/kit/types.js +2 -0
  124. package/build/connect/{types.js.map → kit/types.js.map} +1 -1
  125. package/build/connect/model-tier/types.d.ts +16 -0
  126. package/build/connect/model-tier/types.d.ts.map +1 -0
  127. package/build/connect/model-tier/types.js +2 -0
  128. package/build/connect/model-tier/types.js.map +1 -0
  129. package/build/connect/model-tier.d.ts +4 -0
  130. package/build/connect/model-tier.d.ts.map +1 -0
  131. package/build/connect/model-tier.js +21 -0
  132. package/build/connect/model-tier.js.map +1 -0
  133. package/build/connect/{ops.d.ts → ops/types.d.ts} +13 -4
  134. package/build/connect/ops/types.d.ts.map +1 -0
  135. package/build/connect/ops/types.js +2 -0
  136. package/build/connect/ops/types.js.map +1 -0
  137. package/build/connect/pipeline/types.d.ts +39 -0
  138. package/build/connect/pipeline/types.d.ts.map +1 -0
  139. package/build/connect/pipeline/types.js +2 -0
  140. package/build/connect/pipeline/types.js.map +1 -0
  141. package/build/connect/project/types.d.ts +127 -0
  142. package/build/connect/project/types.d.ts.map +1 -0
  143. package/build/connect/project/types.js +2 -0
  144. package/build/connect/project/types.js.map +1 -0
  145. package/build/connect/references/types.d.ts +157 -0
  146. package/build/connect/references/types.d.ts.map +1 -0
  147. package/build/connect/references/types.js +2 -0
  148. package/build/connect/references/types.js.map +1 -0
  149. package/build/connect/references/types.local.d.ts +5 -0
  150. package/build/connect/references/types.local.d.ts.map +1 -0
  151. package/build/connect/references/types.local.js +2 -0
  152. package/build/connect/references/types.local.js.map +1 -0
  153. package/build/connect/references.d.ts +1 -153
  154. package/build/connect/references.d.ts.map +1 -1
  155. package/build/connect/references.js.map +1 -1
  156. package/build/connect/schemas.d.ts +9 -5
  157. package/build/connect/schemas.d.ts.map +1 -1
  158. package/build/connect/schemas.js +10 -3
  159. package/build/connect/schemas.js.map +1 -1
  160. package/build/connect/session/types.d.ts +73 -0
  161. package/build/connect/session/types.d.ts.map +1 -0
  162. package/build/connect/session/types.js +2 -0
  163. package/build/connect/session/types.js.map +1 -0
  164. package/build/connect/settings/types.d.ts +48 -0
  165. package/build/connect/settings/types.d.ts.map +1 -0
  166. package/build/connect/settings/types.js +2 -0
  167. package/build/connect/settings/types.js.map +1 -0
  168. package/build/consts.d.ts +8 -0
  169. package/build/consts.d.ts.map +1 -1
  170. package/build/consts.js +16 -0
  171. package/build/consts.js.map +1 -1
  172. package/build/convert/analysis/types.d.ts +93 -0
  173. package/build/convert/analysis/types.d.ts.map +1 -0
  174. package/build/convert/analysis/types.js +2 -0
  175. package/build/convert/analysis/types.js.map +1 -0
  176. package/build/convert/census/consts.local.d.ts +55 -0
  177. package/build/convert/census/consts.local.d.ts.map +1 -0
  178. package/build/convert/census/consts.local.js +104 -0
  179. package/build/convert/census/consts.local.js.map +1 -0
  180. package/build/convert/census/types.d.ts +176 -0
  181. package/build/convert/census/types.d.ts.map +1 -0
  182. package/build/convert/census/types.js +2 -0
  183. package/build/convert/census/types.js.map +1 -0
  184. package/build/convert/census.d.ts +4 -0
  185. package/build/convert/census.d.ts.map +1 -0
  186. package/build/convert/census.js +83 -0
  187. package/build/convert/census.js.map +1 -0
  188. package/build/convert/consts.d.ts +4 -12
  189. package/build/convert/consts.d.ts.map +1 -1
  190. package/build/convert/consts.js +4 -3
  191. package/build/convert/consts.js.map +1 -1
  192. package/build/convert/detection/types.d.ts +67 -0
  193. package/build/convert/detection/types.d.ts.map +1 -0
  194. package/build/convert/detection/types.js +2 -0
  195. package/build/convert/detection/types.js.map +1 -0
  196. package/build/convert/docs/types.d.ts +129 -0
  197. package/build/convert/docs/types.d.ts.map +1 -0
  198. package/build/convert/docs/types.js +2 -0
  199. package/build/convert/docs/types.js.map +1 -0
  200. package/build/convert/docs.d.ts +4 -0
  201. package/build/convert/docs.d.ts.map +1 -0
  202. package/build/convert/docs.js +9 -0
  203. package/build/convert/docs.js.map +1 -0
  204. package/build/convert/estimate/types.d.ts +77 -0
  205. package/build/convert/estimate/types.d.ts.map +1 -0
  206. package/build/convert/estimate/types.js +2 -0
  207. package/build/convert/estimate/types.js.map +1 -0
  208. package/build/convert/estimate.d.ts +11 -0
  209. package/build/convert/estimate.d.ts.map +1 -0
  210. package/build/convert/estimate.js +18 -0
  211. package/build/convert/estimate.js.map +1 -0
  212. package/build/convert/helpers.d.ts +14 -78
  213. package/build/convert/helpers.d.ts.map +1 -1
  214. package/build/convert/helpers.js +27 -300
  215. package/build/convert/helpers.js.map +1 -1
  216. package/build/convert/index.d.ts +15 -0
  217. package/build/convert/index.d.ts.map +1 -1
  218. package/build/convert/index.js +6 -0
  219. package/build/convert/index.js.map +1 -1
  220. package/build/convert/origin/types.d.ts +41 -0
  221. package/build/convert/origin/types.d.ts.map +1 -0
  222. package/build/convert/origin/types.js +2 -0
  223. package/build/convert/origin/types.js.map +1 -0
  224. package/build/convert/origin.d.ts +4 -0
  225. package/build/convert/origin.d.ts.map +1 -0
  226. package/build/convert/origin.js +25 -0
  227. package/build/convert/origin.js.map +1 -0
  228. package/build/convert/record/types.d.ts +98 -0
  229. package/build/convert/record/types.d.ts.map +1 -0
  230. package/build/convert/record/types.js +2 -0
  231. package/build/convert/record/types.js.map +1 -0
  232. package/build/convert/schemas.d.ts +7 -6
  233. package/build/convert/schemas.d.ts.map +1 -1
  234. package/build/convert/schemas.js +1 -5
  235. package/build/convert/schemas.js.map +1 -1
  236. package/build/convert/stage/types.d.ts +27 -0
  237. package/build/convert/stage/types.d.ts.map +1 -0
  238. package/build/convert/stage/types.js +2 -0
  239. package/build/convert/stage/types.js.map +1 -0
  240. package/build/convert/stage.d.ts +4 -0
  241. package/build/convert/stage.d.ts.map +1 -0
  242. package/build/convert/stage.js +25 -0
  243. package/build/convert/stage.js.map +1 -0
  244. package/build/convert/taxonomy/types.d.ts +71 -0
  245. package/build/convert/taxonomy/types.d.ts.map +1 -0
  246. package/build/convert/taxonomy/types.js +2 -0
  247. package/build/convert/taxonomy/types.js.map +1 -0
  248. package/build/convert/types.d.ts +1 -648
  249. package/build/convert/types.d.ts.map +1 -1
  250. package/build/convert/utils.d.ts +5 -0
  251. package/build/convert/utils.d.ts.map +1 -0
  252. package/build/convert/utils.js +6 -0
  253. package/build/convert/utils.js.map +1 -0
  254. package/build/design/consts.d.ts +37 -0
  255. package/build/design/consts.d.ts.map +1 -1
  256. package/build/design/consts.js +44 -8
  257. package/build/design/consts.js.map +1 -1
  258. package/build/design/helpers.d.ts +9 -49
  259. package/build/design/helpers.d.ts.map +1 -1
  260. package/build/design/helpers.js +17 -224
  261. package/build/design/helpers.js.map +1 -1
  262. package/build/design/index.d.ts +3 -0
  263. package/build/design/index.d.ts.map +1 -1
  264. package/build/design/index.js +1 -0
  265. package/build/design/index.js.map +1 -1
  266. package/build/design/runtime/types.d.ts +16 -0
  267. package/build/design/runtime/types.d.ts.map +1 -0
  268. package/build/design/runtime/types.js +2 -0
  269. package/build/design/runtime/types.js.map +1 -0
  270. package/build/design/runtime.d.ts +8 -105
  271. package/build/design/runtime.d.ts.map +1 -1
  272. package/build/design/runtime.js +13 -48
  273. package/build/design/runtime.js.map +1 -1
  274. package/build/design/schemas.d.ts +1 -9
  275. package/build/design/schemas.d.ts.map +1 -1
  276. package/build/design/schemas.js +1 -1
  277. package/build/design/schemas.js.map +1 -1
  278. package/build/design/story/types.d.ts +67 -0
  279. package/build/design/story/types.d.ts.map +1 -0
  280. package/build/design/story/types.js +2 -0
  281. package/build/design/story/types.js.map +1 -0
  282. package/build/design/story.d.ts +4 -0
  283. package/build/design/story.d.ts.map +1 -0
  284. package/build/design/story.js +184 -0
  285. package/build/design/story.js.map +1 -0
  286. package/build/design/types.d.ts +75 -1
  287. package/build/design/types.d.ts.map +1 -1
  288. package/build/dev/schemas.d.ts.map +1 -1
  289. package/build/dev/schemas.js.map +1 -1
  290. package/build/dev/types.local.d.ts +5 -0
  291. package/build/dev/types.local.d.ts.map +1 -0
  292. package/build/dev/types.local.js +2 -0
  293. package/build/dev/types.local.js.map +1 -0
  294. package/build/integrity/consts.d.ts +0 -117
  295. package/build/integrity/consts.d.ts.map +1 -1
  296. package/build/integrity/consts.js +0 -281
  297. package/build/integrity/consts.js.map +1 -1
  298. package/build/integrity/consts.local.d.ts +5 -0
  299. package/build/integrity/consts.local.d.ts.map +1 -0
  300. package/build/integrity/consts.local.js +5 -0
  301. package/build/integrity/consts.local.js.map +1 -0
  302. package/build/integrity/index.d.ts +5 -0
  303. package/build/integrity/index.d.ts.map +1 -1
  304. package/build/integrity/index.js +3 -0
  305. package/build/integrity/index.js.map +1 -1
  306. package/build/integrity/layout/consts.d.ts +59 -0
  307. package/build/integrity/layout/consts.d.ts.map +1 -0
  308. package/build/integrity/layout/consts.js +66 -0
  309. package/build/integrity/layout/consts.js.map +1 -0
  310. package/build/integrity/layout/consts.local.d.ts +18 -0
  311. package/build/integrity/layout/consts.local.d.ts.map +1 -0
  312. package/build/integrity/layout/consts.local.js +176 -0
  313. package/build/integrity/layout/consts.local.js.map +1 -0
  314. package/build/integrity/layout/types.d.ts +35 -0
  315. package/build/integrity/layout/types.d.ts.map +1 -0
  316. package/build/integrity/layout/types.js +2 -0
  317. package/build/integrity/layout/types.js.map +1 -0
  318. package/build/integrity/layout.d.ts +4 -0
  319. package/build/integrity/layout.d.ts.map +1 -0
  320. package/build/integrity/layout.js +25 -0
  321. package/build/integrity/layout.js.map +1 -0
  322. package/build/integrity/types.d.ts +36 -2
  323. package/build/integrity/types.d.ts.map +1 -1
  324. package/build/integrity/utils.d.ts +13 -0
  325. package/build/integrity/utils.d.ts.map +1 -0
  326. package/build/integrity/utils.js +12 -0
  327. package/build/integrity/utils.js.map +1 -0
  328. package/build/integrity/verify/types.d.ts +26 -0
  329. package/build/integrity/verify/types.d.ts.map +1 -0
  330. package/build/integrity/verify/types.js +2 -0
  331. package/build/integrity/verify/types.js.map +1 -0
  332. package/build/integrity/verify.d.ts +5 -19
  333. package/build/integrity/verify.d.ts.map +1 -1
  334. package/build/integrity/verify.js +165 -175
  335. package/build/integrity/verify.js.map +1 -1
  336. package/build/intent/consts.d.ts +16 -0
  337. package/build/intent/consts.d.ts.map +1 -1
  338. package/build/intent/consts.js +63 -0
  339. package/build/intent/consts.js.map +1 -1
  340. package/build/intent/entrypoints.d.ts +2 -12
  341. package/build/intent/entrypoints.d.ts.map +1 -1
  342. package/build/intent/entrypoints.js.map +1 -1
  343. package/build/intent/index.d.ts +0 -1
  344. package/build/intent/index.d.ts.map +1 -1
  345. package/build/intent/index.js +0 -1
  346. package/build/intent/index.js.map +1 -1
  347. package/build/intent/types.d.ts +13 -0
  348. package/build/intent/types.d.ts.map +1 -1
  349. package/build/metadata/consts.d.ts +33 -0
  350. package/build/metadata/consts.d.ts.map +1 -1
  351. package/build/metadata/consts.js +37 -0
  352. package/build/metadata/consts.js.map +1 -1
  353. package/build/metadata/types.d.ts +1 -33
  354. package/build/metadata/types.d.ts.map +1 -1
  355. package/build/metadata/types.js +1 -38
  356. package/build/metadata/types.js.map +1 -1
  357. package/build/moderation/index.d.ts +2 -0
  358. package/build/moderation/index.d.ts.map +1 -1
  359. package/build/moderation/index.js +1 -0
  360. package/build/moderation/index.js.map +1 -1
  361. package/build/moderation/utils.d.ts +3 -15
  362. package/build/moderation/utils.d.ts.map +1 -1
  363. package/build/moderation/utils.js +5 -30
  364. package/build/moderation/utils.js.map +1 -1
  365. package/build/moderation/verdict/types.d.ts +24 -0
  366. package/build/moderation/verdict/types.d.ts.map +1 -0
  367. package/build/moderation/verdict/types.js +2 -0
  368. package/build/moderation/verdict/types.js.map +1 -0
  369. package/build/moderation/verdict.d.ts +4 -0
  370. package/build/moderation/verdict.d.ts.map +1 -0
  371. package/build/moderation/verdict.js +21 -0
  372. package/build/moderation/verdict.js.map +1 -0
  373. package/build/planning/card/types.d.ts +42 -0
  374. package/build/planning/card/types.d.ts.map +1 -0
  375. package/build/planning/card/types.js +2 -0
  376. package/build/planning/card/types.js.map +1 -0
  377. package/build/planning/card.d.ts +4 -0
  378. package/build/planning/card.d.ts.map +1 -0
  379. package/build/planning/card.js +51 -0
  380. package/build/planning/card.js.map +1 -0
  381. package/build/planning/consts.d.ts +13 -1
  382. package/build/planning/consts.d.ts.map +1 -1
  383. package/build/planning/consts.js +13 -0
  384. package/build/planning/consts.js.map +1 -1
  385. package/build/planning/helpers.d.ts +11 -37
  386. package/build/planning/helpers.d.ts.map +1 -1
  387. package/build/planning/helpers.js +24 -103
  388. package/build/planning/helpers.js.map +1 -1
  389. package/build/planning/index.d.ts +5 -1
  390. package/build/planning/index.d.ts.map +1 -1
  391. package/build/planning/index.js +2 -1
  392. package/build/planning/index.js.map +1 -1
  393. package/build/planning/landing/types.d.ts +16 -0
  394. package/build/planning/landing/types.d.ts.map +1 -0
  395. package/build/planning/landing/types.js +2 -0
  396. package/build/planning/landing/types.js.map +1 -0
  397. package/build/planning/landing.d.ts +5 -22
  398. package/build/planning/landing.d.ts.map +1 -1
  399. package/build/planning/landing.js +21 -35
  400. package/build/planning/landing.js.map +1 -1
  401. package/build/planning/schemas.d.ts +33 -0
  402. package/build/planning/schemas.d.ts.map +1 -1
  403. package/build/planning/schemas.js +173 -4
  404. package/build/planning/schemas.js.map +1 -1
  405. package/build/planning/spec/types.d.ts +22 -0
  406. package/build/planning/spec/types.d.ts.map +1 -0
  407. package/build/planning/spec/types.js +2 -0
  408. package/build/planning/spec/types.js.map +1 -0
  409. package/build/planning/spec.d.ts +4 -0
  410. package/build/planning/spec.d.ts.map +1 -0
  411. package/build/planning/spec.js +30 -0
  412. package/build/planning/spec.js.map +1 -0
  413. package/build/planning/types.d.ts +6 -5
  414. package/build/planning/types.d.ts.map +1 -1
  415. package/build/preview/consts.d.ts +3 -1
  416. package/build/preview/consts.d.ts.map +1 -1
  417. package/build/preview/consts.js +2 -0
  418. package/build/preview/consts.js.map +1 -1
  419. package/build/preview/types.d.ts +17 -2
  420. package/build/preview/types.d.ts.map +1 -1
  421. package/build/scaffold/consts.d.ts +40 -1
  422. package/build/scaffold/consts.d.ts.map +1 -1
  423. package/build/scaffold/consts.js +52 -0
  424. package/build/scaffold/consts.js.map +1 -1
  425. package/build/scaffold/helpers.d.ts +5 -30
  426. package/build/scaffold/helpers.d.ts.map +1 -1
  427. package/build/scaffold/helpers.js +9 -53
  428. package/build/scaffold/helpers.js.map +1 -1
  429. package/build/scaffold/index.d.ts +4 -0
  430. package/build/scaffold/index.d.ts.map +1 -1
  431. package/build/scaffold/index.js +2 -0
  432. package/build/scaffold/index.js.map +1 -1
  433. package/build/scaffold/landing/types.d.ts +48 -0
  434. package/build/scaffold/landing/types.d.ts.map +1 -0
  435. package/build/scaffold/landing/types.js +2 -0
  436. package/build/scaffold/landing/types.js.map +1 -0
  437. package/build/scaffold/landing.d.ts +4 -0
  438. package/build/scaffold/landing.d.ts.map +1 -0
  439. package/build/scaffold/landing.js +95 -0
  440. package/build/scaffold/landing.js.map +1 -0
  441. package/build/scaffold/schemas.d.ts +3 -2
  442. package/build/scaffold/schemas.d.ts.map +1 -1
  443. package/build/scaffold/schemas.js +177 -7
  444. package/build/scaffold/schemas.js.map +1 -1
  445. package/build/scaffold/share/types.d.ts +35 -0
  446. package/build/scaffold/share/types.d.ts.map +1 -0
  447. package/build/scaffold/share/types.js +2 -0
  448. package/build/scaffold/share/types.js.map +1 -0
  449. package/build/scaffold/share.d.ts +4 -0
  450. package/build/scaffold/share.d.ts.map +1 -0
  451. package/build/scaffold/share.js +42 -0
  452. package/build/scaffold/share.js.map +1 -0
  453. package/build/scaffold/types.d.ts +114 -2
  454. package/build/scaffold/types.d.ts.map +1 -1
  455. package/build/skills/consts.d.ts +42 -0
  456. package/build/skills/consts.d.ts.map +1 -1
  457. package/build/skills/consts.js +43 -0
  458. package/build/skills/consts.js.map +1 -1
  459. package/build/skills/index.d.ts +0 -1
  460. package/build/skills/index.d.ts.map +1 -1
  461. package/build/skills/index.js +0 -1
  462. package/build/skills/index.js.map +1 -1
  463. package/build/slot/command/types.d.ts +21 -0
  464. package/build/slot/command/types.d.ts.map +1 -0
  465. package/build/slot/command/types.js +2 -0
  466. package/build/slot/command/types.js.map +1 -0
  467. package/build/slot/command.d.ts +4 -0
  468. package/build/slot/command.d.ts.map +1 -0
  469. package/build/slot/command.js +31 -0
  470. package/build/slot/command.js.map +1 -0
  471. package/build/slot/consts.d.ts +7 -13
  472. package/build/slot/consts.d.ts.map +1 -1
  473. package/build/slot/consts.js +10 -36
  474. package/build/slot/consts.js.map +1 -1
  475. package/build/slot/helpers.d.ts +3 -22
  476. package/build/slot/helpers.d.ts.map +1 -1
  477. package/build/slot/helpers.js +5 -26
  478. package/build/slot/helpers.js.map +1 -1
  479. package/build/slot/index.d.ts +6 -0
  480. package/build/slot/index.d.ts.map +1 -1
  481. package/build/slot/index.js +3 -0
  482. package/build/slot/index.js.map +1 -1
  483. package/build/slot/layout/types.d.ts +17 -0
  484. package/build/slot/layout/types.d.ts.map +1 -0
  485. package/build/slot/layout/types.js +2 -0
  486. package/build/slot/layout/types.js.map +1 -0
  487. package/build/slot/layout.d.ts +5 -66
  488. package/build/slot/layout.d.ts.map +1 -1
  489. package/build/slot/layout.js +13 -27
  490. package/build/slot/layout.js.map +1 -1
  491. package/build/slot/origin/types.d.ts +23 -0
  492. package/build/slot/origin/types.d.ts.map +1 -0
  493. package/build/slot/origin/types.js +2 -0
  494. package/build/slot/origin/types.js.map +1 -0
  495. package/build/slot/origin.d.ts +4 -0
  496. package/build/slot/origin.d.ts.map +1 -0
  497. package/build/slot/origin.js +15 -0
  498. package/build/slot/origin.js.map +1 -0
  499. package/build/slot/types.d.ts +55 -1
  500. package/build/slot/types.d.ts.map +1 -1
  501. package/build/slot/utils.d.ts +6 -0
  502. package/build/slot/utils.d.ts.map +1 -0
  503. package/build/slot/utils.js +6 -0
  504. package/build/slot/utils.js.map +1 -0
  505. package/build/topology/card/types.d.ts +21 -0
  506. package/build/topology/card/types.d.ts.map +1 -0
  507. package/build/topology/card/types.js +2 -0
  508. package/build/topology/card/types.js.map +1 -0
  509. package/build/topology/card.d.ts +7 -19
  510. package/build/topology/card.d.ts.map +1 -1
  511. package/build/topology/card.js +84 -89
  512. package/build/topology/card.js.map +1 -1
  513. package/build/topology/consts.local.d.ts +4 -0
  514. package/build/topology/consts.local.d.ts.map +1 -0
  515. package/build/topology/consts.local.js +4 -0
  516. package/build/topology/consts.local.js.map +1 -0
  517. package/build/topology/helpers.d.ts +7 -33
  518. package/build/topology/helpers.d.ts.map +1 -1
  519. package/build/topology/helpers.js +15 -111
  520. package/build/topology/helpers.js.map +1 -1
  521. package/build/topology/index.d.ts +3 -0
  522. package/build/topology/index.d.ts.map +1 -1
  523. package/build/topology/index.js +1 -0
  524. package/build/topology/index.js.map +1 -1
  525. package/build/topology/resolve/types.d.ts +47 -0
  526. package/build/topology/resolve/types.d.ts.map +1 -0
  527. package/build/topology/resolve/types.js +2 -0
  528. package/build/topology/resolve/types.js.map +1 -0
  529. package/build/topology/resolve.d.ts +4 -0
  530. package/build/topology/resolve.d.ts.map +1 -0
  531. package/build/topology/resolve.js +89 -0
  532. package/build/topology/resolve.js.map +1 -0
  533. package/build/topology/types.d.ts +5 -0
  534. package/build/topology/types.d.ts.map +1 -1
  535. package/package.json +13 -13
  536. package/src/agent/consts.local.ts +47 -0
  537. package/src/agent/consts.ts +61 -0
  538. package/src/agent/index.ts +2 -0
  539. package/src/agent/presentation/types.ts +21 -0
  540. package/src/agent/presentation.ts +200 -309
  541. package/src/agent/types.local.ts +3 -0
  542. package/src/agent/types.ts +40 -0
  543. package/src/areas/consts.ts +7 -0
  544. package/src/areas/index.ts +1 -0
  545. package/src/areas/tenancy/types.ts +23 -0
  546. package/src/areas/tenancy.ts +26 -61
  547. package/src/areas/types.ts +31 -0
  548. package/src/ba/connecting/types.ts +45 -0
  549. package/src/ba/connecting.ts +64 -0
  550. package/src/ba/helpers.ts +8 -92
  551. package/src/ba/index.ts +2 -0
  552. package/src/ba/types.ts +1 -1
  553. package/src/blueprint/consts.local.ts +3 -0
  554. package/src/blueprint/consts.ts +52 -0
  555. package/src/blueprint/index.ts +1 -0
  556. package/src/blueprint/types.ts +4 -74
  557. package/src/blueprint/utils.ts +20 -0
  558. package/src/branding.ts +0 -17
  559. package/src/connect/branding/types.ts +29 -0
  560. package/src/connect/consts.ts +3 -22
  561. package/src/connect/conversion/types.ts +96 -0
  562. package/src/connect/entrypoints/types.ts +25 -0
  563. package/src/connect/entrypoints.ts +18 -35
  564. package/src/connect/errors/types.ts +22 -0
  565. package/src/connect/errors.ts +75 -0
  566. package/src/connect/index.ts +13 -2
  567. package/src/connect/kit/types.ts +56 -0
  568. package/src/connect/model-tier/types.ts +16 -0
  569. package/src/connect/model-tier.ts +22 -0
  570. package/src/connect/{ops.ts → ops/types.ts} +13 -3
  571. package/src/connect/pipeline/types.ts +41 -0
  572. package/src/connect/project/types.ts +127 -0
  573. package/src/connect/references/types.local.ts +5 -0
  574. package/src/connect/references/types.ts +73 -0
  575. package/src/connect/references.ts +15 -75
  576. package/src/connect/schemas.ts +19 -12
  577. package/src/connect/session/types.ts +81 -0
  578. package/src/connect/settings/types.ts +52 -0
  579. package/src/consts.ts +17 -0
  580. package/src/convert/analysis/types.ts +89 -0
  581. package/src/convert/census/consts.local.ts +120 -0
  582. package/src/convert/census/types.ts +181 -0
  583. package/src/convert/census.ts +95 -0
  584. package/src/convert/consts.ts +5 -14
  585. package/src/convert/detection/types.ts +74 -0
  586. package/src/convert/docs/types.ts +151 -0
  587. package/src/convert/docs.ts +15 -0
  588. package/src/convert/estimate/types.ts +75 -0
  589. package/src/convert/estimate.ts +19 -0
  590. package/src/convert/helpers.ts +29 -328
  591. package/src/convert/index.ts +15 -0
  592. package/src/convert/origin/types.ts +43 -0
  593. package/src/convert/origin.ts +33 -0
  594. package/src/convert/record/types.ts +105 -0
  595. package/src/convert/schemas.ts +13 -12
  596. package/src/convert/stage/types.ts +27 -0
  597. package/src/convert/stage.ts +31 -0
  598. package/src/convert/taxonomy/types.ts +74 -0
  599. package/src/convert/types.ts +5 -703
  600. package/src/convert/utils.ts +7 -0
  601. package/src/design/consts.ts +48 -0
  602. package/src/design/helpers.ts +20 -245
  603. package/src/design/index.ts +3 -0
  604. package/src/design/runtime/types.ts +14 -0
  605. package/src/design/runtime.ts +18 -116
  606. package/src/design/schemas.ts +2 -10
  607. package/src/design/story/types.ts +67 -0
  608. package/src/design/story.ts +221 -0
  609. package/src/design/types.ts +81 -1
  610. package/src/dev/schemas.ts +1 -3
  611. package/src/dev/types.local.ts +4 -0
  612. package/src/integrity/consts.local.ts +5 -0
  613. package/src/integrity/consts.ts +0 -348
  614. package/src/integrity/index.ts +5 -0
  615. package/src/integrity/layout/consts.local.ts +188 -0
  616. package/src/integrity/layout/consts.ts +79 -0
  617. package/src/integrity/layout/types.ts +35 -0
  618. package/src/integrity/layout.ts +39 -0
  619. package/src/integrity/types.ts +37 -2
  620. package/src/integrity/utils.ts +21 -0
  621. package/src/integrity/verify/types.ts +26 -0
  622. package/src/integrity/verify.ts +178 -184
  623. package/src/intent/consts.ts +67 -0
  624. package/src/intent/entrypoints.ts +2 -3
  625. package/src/intent/index.ts +0 -1
  626. package/src/intent/types.ts +10 -0
  627. package/src/metadata/consts.ts +37 -0
  628. package/src/metadata/types.ts +1 -37
  629. package/src/moderation/index.ts +2 -0
  630. package/src/moderation/utils.ts +7 -30
  631. package/src/moderation/verdict/types.ts +22 -0
  632. package/src/moderation/verdict.ts +28 -0
  633. package/src/planning/card/types.ts +44 -0
  634. package/src/planning/card.ts +77 -0
  635. package/src/planning/consts.ts +15 -2
  636. package/src/planning/helpers.ts +28 -116
  637. package/src/planning/index.ts +5 -1
  638. package/src/planning/landing/types.ts +15 -0
  639. package/src/planning/landing.ts +28 -38
  640. package/src/planning/schemas.ts +191 -4
  641. package/src/planning/spec/types.ts +22 -0
  642. package/src/planning/spec.ts +41 -0
  643. package/src/planning/types.ts +6 -6
  644. package/src/preview/consts.ts +2 -0
  645. package/src/preview/types.ts +19 -0
  646. package/src/scaffold/consts.ts +65 -1
  647. package/src/scaffold/helpers.ts +14 -80
  648. package/src/scaffold/index.ts +4 -0
  649. package/src/scaffold/landing/types.ts +48 -0
  650. package/src/scaffold/landing.ts +120 -0
  651. package/src/scaffold/schemas.ts +183 -7
  652. package/src/scaffold/share/types.ts +35 -0
  653. package/src/scaffold/share.ts +60 -0
  654. package/src/scaffold/types.ts +123 -1
  655. package/src/skills/consts.ts +46 -0
  656. package/src/skills/index.ts +0 -1
  657. package/src/slot/command/types.ts +21 -0
  658. package/src/slot/command.ts +38 -0
  659. package/src/slot/consts.ts +11 -40
  660. package/src/slot/helpers.ts +6 -31
  661. package/src/slot/index.ts +6 -0
  662. package/src/slot/layout/types.ts +17 -0
  663. package/src/slot/layout.ts +19 -77
  664. package/src/slot/origin/types.ts +23 -0
  665. package/src/slot/origin.ts +20 -0
  666. package/src/slot/types.ts +58 -1
  667. package/src/slot/utils.ts +10 -0
  668. package/src/topology/card/types.ts +21 -0
  669. package/src/topology/card.ts +85 -90
  670. package/src/topology/consts.local.ts +6 -0
  671. package/src/topology/helpers.ts +20 -125
  672. package/src/topology/index.ts +3 -0
  673. package/src/topology/resolve/types.ts +47 -0
  674. package/src/topology/resolve.ts +118 -0
  675. package/src/topology/types.ts +6 -0
  676. package/tests/blueprint.spec.ts +1 -2
  677. package/tests/branding.spec.ts +2 -2
  678. package/tests/connect-convert.spec.ts +21 -1
  679. package/tests/connect-errors.spec.ts +34 -1
  680. package/tests/convert.spec.ts +51 -52
  681. package/tests/design.spec.ts +13 -16
  682. package/tests/error-status.spec.ts +7 -1
  683. package/tests/planning.spec.ts +58 -75
  684. package/tests/presentation.spec.ts +21 -23
  685. package/tests/scaffold.spec.ts +286 -6
  686. package/tests/tenancy.spec.ts +21 -21
  687. package/build/connect/ops.d.ts.map +0 -1
  688. package/build/connect/ops.js +0 -2
  689. package/build/connect/ops.js.map +0 -1
  690. package/build/connect/types.d.ts +0 -437
  691. package/build/connect/types.d.ts.map +0 -1
  692. package/build/intent/flow.d.ts +0 -17
  693. package/build/intent/flow.d.ts.map +0 -1
  694. package/build/intent/flow.js +0 -65
  695. package/build/intent/flow.js.map +0 -1
  696. package/build/planning/flows.d.ts +0 -34
  697. package/build/planning/flows.d.ts.map +0 -1
  698. package/build/planning/flows.js +0 -174
  699. package/build/planning/flows.js.map +0 -1
  700. package/build/skills/roles.d.ts +0 -43
  701. package/build/skills/roles.d.ts.map +0 -1
  702. package/build/skills/roles.js +0 -44
  703. package/build/skills/roles.js.map +0 -1
  704. package/src/connect/types.ts +0 -466
  705. package/src/intent/flow.ts +0 -67
  706. package/src/planning/flows.ts +0 -204
  707. package/src/skills/roles.ts +0 -46
  708. /package/build/{connect → agent/presentation}/types.js +0 -0
@@ -3,7 +3,7 @@ import { frontend, route, RouteMethod } from '@owlmeans/route'
3
3
  import { INTENT_API_PATH, INTENT_LANDING_PATH, intent } from './consts.js'
4
4
  import { IntentPickupBodySchema, IntentStashBodySchema } from './schemas.js'
5
5
  import type {
6
- IntentPickupBody, IntentPickupResult, IntentProtocolOptions, IntentStashBody, IntentStashResult,
6
+ IntentPickupBody, IntentPickupResult, IntentProtocolOptions, IntentProtocols, IntentStashBody, IntentStashResult,
7
7
  } from './types.js'
8
8
 
9
9
  /**
@@ -20,7 +20,7 @@ import type {
20
20
  * The landing screen is `sticky`, like the OAuth consent screens: it is an ordinary in-app screen
21
21
  * that a visitor arrives at directly from another origin.
22
22
  */
23
- export const makeIntentProtocols = (opts: IntentProtocolOptions = {}) => {
23
+ export const makeIntentProtocols = (opts: IntentProtocolOptions = {}): IntentProtocols => {
24
24
  const base = openProtocol(route(intent.base, opts.path ?? INTENT_API_PATH))
25
25
 
26
26
  return {
@@ -40,4 +40,3 @@ export const makeIntentProtocols = (opts: IntentProtocolOptions = {}) => {
40
40
  }
41
41
  }
42
42
 
43
- export type IntentProtocols = ReturnType<typeof makeIntentProtocols>
@@ -2,5 +2,4 @@ export * from './consts.js'
2
2
  export * from './schemas.js'
3
3
  export * from './errors.js'
4
4
  export * from './entrypoints.js'
5
- export * from './flow.js'
6
5
  export type * from './types.js'
@@ -1,3 +1,4 @@
1
+ import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint'
1
2
  import type { ResourceRecord } from '@owlmeans/resource'
2
3
 
3
4
  /** What the public site sends: the prompt and the person's confirmation of its processing. */
@@ -43,3 +44,12 @@ export interface IntentProtocolOptions {
43
44
  /** Path of the landing screen; defaults to `/start`. */
44
45
  landing?: string
45
46
  }
47
+
48
+ /** The intent-first hand-off tree {@link makeIntentProtocols} declares. */
49
+ export interface IntentProtocols {
50
+ base: EntrypointProtocol<OpenRequest, OpenValue>
51
+ stash: EntrypointProtocol<{ body: IntentStashBody }, IntentStashResult>
52
+ pickup: EntrypointProtocol<{ body: IntentPickupBody }, IntentPickupResult>
53
+ /** The landing screen — `sticky`, an in-app screen a visitor reaches from another origin. */
54
+ landing: EntrypointProtocol<OpenRequest, OpenValue>
55
+ }
@@ -116,3 +116,40 @@ export const METADATA_SUFFIXES = [SPEC_SUFFIX, UX_SUFFIX, UI_SUFFIX]
116
116
 
117
117
  /** The trees the pipeline writes into — excluded wholesale when source files are enumerated. */
118
118
  export const METADATA_DIRS = [HARNESS_DIR, DOCS_DIR]
119
+
120
+ export enum MetadataKind {
121
+ Project = 'project',
122
+ Story = 'story',
123
+ Source = 'source',
124
+ History = 'history',
125
+ }
126
+
127
+ export enum MetadataListKind {
128
+ Stories = 'stories',
129
+ Meta = 'meta',
130
+ // All metadata: the docs/ and .agents/ trees + co-located *.spec/.ux/.ui.md beside sources
131
+ All = 'all',
132
+ }
133
+
134
+ /**
135
+ * What a registry entry names.
136
+ *
137
+ * One entry per artifact the pipeline can generate, so that "where does this live" and "what is
138
+ * it called" have exactly one answer for the whole life of the project.
139
+ */
140
+ export enum RegistryKind {
141
+ /** The single directory segment an entity owns across models/, resources/ and backend models/ */
142
+ EntityDir = 'entity-dir',
143
+ ModelType = 'model-type',
144
+ Resource = 'resource',
145
+ BackendModel = 'backend-model',
146
+ ApiHandlers = 'api-handlers',
147
+ Service = 'service',
148
+ Layout = 'layout',
149
+ Screen = 'screen',
150
+ Component = 'component',
151
+ ViewModel = 'view-model',
152
+ State = 'state',
153
+ /** Alias-only entry for one endpoint — carries no source path of its own */
154
+ ApiEntrypoint = 'api-entrypoint',
155
+ }
@@ -1,5 +1,6 @@
1
1
 
2
2
  import type { SpecCategory } from '../ba/consts.js'
3
+ import { MetadataKind, MetadataListKind, RegistryKind } from './consts.js'
3
4
 
4
5
  export interface MetadataFile<T extends Record<string, unknown> = Record<string, unknown>> {
5
6
  path: string
@@ -12,20 +13,6 @@ export interface MetadataWriteInput<T extends Record<string, unknown> = Record<s
12
13
  body: string
13
14
  }
14
15
 
15
- export enum MetadataKind {
16
- Project = 'project',
17
- Story = 'story',
18
- Source = 'source',
19
- History = 'history',
20
- }
21
-
22
- export enum MetadataListKind {
23
- Stories = 'stories',
24
- Meta = 'meta',
25
- // All metadata: the docs/ and .agents/ trees + co-located *.spec/.ux/.ui.md beside sources
26
- All = 'all',
27
- }
28
-
29
16
  /**
30
17
  * Identifies a single metadata document to read:
31
18
  * - Project: kind=Project, no ref/category needed
@@ -181,29 +168,6 @@ export interface StoryWriteInput {
181
168
 
182
169
  // ─── Name registry (.agents/memory/registry.md) ───────────────────────────────────────
183
170
 
184
- /**
185
- * What a registry entry names.
186
- *
187
- * One entry per artifact the pipeline can generate, so that "where does this live" and "what is
188
- * it called" have exactly one answer for the whole life of the project.
189
- */
190
- export enum RegistryKind {
191
- /** The single directory segment an entity owns across models/, resources/ and backend models/ */
192
- EntityDir = 'entity-dir',
193
- ModelType = 'model-type',
194
- Resource = 'resource',
195
- BackendModel = 'backend-model',
196
- ApiHandlers = 'api-handlers',
197
- Service = 'service',
198
- Layout = 'layout',
199
- Screen = 'screen',
200
- Component = 'component',
201
- ViewModel = 'view-model',
202
- State = 'state',
203
- /** Alias-only entry for one endpoint — carries no source path of its own */
204
- ApiEntrypoint = 'api-entrypoint',
205
- }
206
-
207
171
  /**
208
172
  * One allocated name.
209
173
  *
@@ -1,4 +1,6 @@
1
1
  export * from './consts.js'
2
2
  export * from './schemas.js'
3
+ export * from './verdict.js'
3
4
  export * from './utils.js'
4
5
  export type * from './types.js'
6
+ export type * from './verdict/types.js'
@@ -1,35 +1,12 @@
1
- import { ModerationCategory } from './consts.js'
1
+ import type { ModerationCategory } from './consts.js'
2
2
  import type { ModerationAction, ModerationPolicy, ModerationVerdict } from './types.js'
3
+ import { moderationVerdictHelper } from './verdict.js'
3
4
 
4
- /**
5
- * Narrow whatever the model put in `category` to a real one, or to nothing.
6
- *
7
- * The wire field is a free string on purpose — see {@link ModerationVerdictSchema}. A model
8
- * that is allowing has nothing to categorise and still fills the field, so anything
9
- * unrecognized is treated as absent rather than as a failure.
10
- */
11
- export const normalizeCategory = (category?: string): ModerationCategory | undefined => {
12
- const values = Object.values(ModerationCategory) as string[]
5
+ /** @deprecated compat:factory-refactor — use `moderationVerdictHelper.normalizeCategory(…)` */
6
+ export const normalizeCategory = (category?: string): ModerationCategory | undefined =>
7
+ moderationVerdictHelper.normalizeCategory(category)
13
8
 
14
- return category != null && values.includes(category)
15
- ? category as ModerationCategory
16
- : undefined
17
- }
18
-
19
- /**
20
- * What to do about a verdict.
21
- *
22
- * Pure, because this is the part with the operational levers on it and the part most likely
23
- * to be wrong in a hurry: `enforce` turns the whole gate into an observer without a deploy,
24
- * and `bypassEntities` releases one entity when a real customer is wrongly refused.
25
- */
9
+ /** @deprecated compat:factory-refactor — use `moderationVerdictHelper.decideModeration(…)` */
26
10
  export const decideModeration = (
27
11
  verdict: ModerationVerdict, policy: ModerationPolicy & { entityId?: string } = {}
28
- ): ModerationAction => {
29
- if (verdict.allowed) return 'allow'
30
- if (policy.entityId != null && policy.bypassEntities?.includes(policy.entityId) === true) return 'allow'
31
-
32
- // Defaults to ON: a gate that has to be switched on is a gate that is off in every
33
- // environment nobody remembered to configure.
34
- return policy.enforce !== false ? 'refuse' : 'shadow'
35
- }
12
+ ): ModerationAction => moderationVerdictHelper.decideModeration(verdict, policy)
@@ -0,0 +1,22 @@
1
+ import type { ModerationCategory } from '../consts.js'
2
+ import type { ModerationAction, ModerationPolicy, ModerationVerdict } from '../types.js'
3
+
4
+ /** Reading a moderation verdict: its category, and what to do about it. */
5
+ export interface ModerationVerdictHelper {
6
+ /**
7
+ * Narrow whatever the model put in `category` to a real one, or to nothing.
8
+ *
9
+ * The wire field is a free string on purpose — see {@link ModerationVerdictSchema}. A model
10
+ * that is allowing has nothing to categorise and still fills the field, so anything
11
+ * unrecognized is treated as absent rather than as a failure.
12
+ */
13
+ normalizeCategory: (category?: string) => ModerationCategory | undefined
14
+ /**
15
+ * What to do about a verdict.
16
+ *
17
+ * Pure, because this is the part with the operational levers on it and the part most likely
18
+ * to be wrong in a hurry: `enforce` turns the whole gate into an observer without a deploy,
19
+ * and `bypassEntities` releases one entity when a real customer is wrongly refused.
20
+ */
21
+ decideModeration: (verdict: ModerationVerdict, policy?: ModerationPolicy & { entityId?: string }) => ModerationAction
22
+ }
@@ -0,0 +1,28 @@
1
+ import { ModerationCategory } from './consts.js'
2
+ import type { ModerationAction, ModerationPolicy, ModerationVerdict } from './types.js'
3
+ import type { ModerationVerdictHelper } from './verdict/types.js'
4
+
5
+ export const createModerationVerdictHelper = (): ModerationVerdictHelper => {
6
+ const normalizeCategory = (category?: string): ModerationCategory | undefined => {
7
+ const values = Object.values(ModerationCategory) as string[]
8
+
9
+ return category != null && values.includes(category)
10
+ ? category as ModerationCategory
11
+ : undefined
12
+ }
13
+
14
+ const decideModeration = (
15
+ verdict: ModerationVerdict, policy: ModerationPolicy & { entityId?: string } = {}
16
+ ): ModerationAction => {
17
+ if (verdict.allowed) return 'allow'
18
+ if (policy.entityId != null && policy.bypassEntities?.includes(policy.entityId) === true) return 'allow'
19
+
20
+ // Defaults to ON: a gate that has to be switched on is a gate that is off in every
21
+ // environment nobody remembered to configure.
22
+ return policy.enforce !== false ? 'refuse' : 'shadow'
23
+ }
24
+
25
+ return { normalizeCategory, decideModeration }
26
+ }
27
+
28
+ export const moderationVerdictHelper = createModerationVerdictHelper()
@@ -0,0 +1,44 @@
1
+ import type { Workcard } from '@owlmeans/planning'
2
+ import type { StoryDraft } from '../../areas/types.js'
3
+ import type { UserStory } from '../../ba/types.js'
4
+ import type { StoryDesign } from '../../design/types.js'
5
+ import type { StoryWriteInput } from '../../metadata/types.js'
6
+ import type {
7
+ StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
8
+ } from '../types.js'
9
+
10
+ /** Reading Viable's planning cards — a project, a user story — and what a write carries. */
11
+ export interface ViableCardHelper {
12
+ /** A `viable:project` card — kind AND type, since a foreign provider may share either alone. */
13
+ isViableProject: (card?: Workcard | null) => card is ViableProjectCard
14
+ /** A `viable:user-story` card. */
15
+ isViableStory: (card?: Workcard | null) => card is ViableStoryCard
16
+ /** Whether a write came from a person (`web`, `connect`) rather than the platform's own runs. */
17
+ isUserChannel: (channel?: string | null) => boolean
18
+ projectFieldsOf: (card: Workcard) => ViableProjectFields
19
+ /**
20
+ * A story card's fields, with the two required ones always answered.
21
+ *
22
+ * An absent area reads as `guest` — the area that guards nothing — and an absent primary flag as
23
+ * `false`, so a reader never branches on a card written by a store that dropped them.
24
+ */
25
+ storyFieldsOf: (card: Workcard) => ViableStoryFields
26
+ /** The draft shape the analysis prompts and moderation take, from a card. */
27
+ storyDraftOf: (card: Workcard) => StoryDraft
28
+ /**
29
+ * The aggregate the coders take, for a story CARD.
30
+ *
31
+ * The card wins on the narrative, the code, the area and the actor — a person may have changed any
32
+ * of them since the design was written. The design supplies what only it knows: the entities and
33
+ * the screens. Without a design the aggregate has no screens yet.
34
+ */
35
+ userStoryOf: (card: Workcard, design?: StoryDesign | null) => UserStory
36
+ /**
37
+ * What the metadata store writes to `docs/stories/<code>.md`, from the card and a run's content.
38
+ *
39
+ * The CODE is the target's only story identifier — a card id never reaches a target file — so a
40
+ * story card without one is refused rather than filed under its id. The landing flag is carried
41
+ * only when it is set, so every other story's frontmatter keeps the shape it always had.
42
+ */
43
+ storyWriteInputOf: (card: Workcard, content: StoryWriteContent) => StoryWriteInput
44
+ }
@@ -0,0 +1,77 @@
1
+ import { WorkcardKind } from '@owlmeans/planning'
2
+ import type { Workcard } from '@owlmeans/planning'
3
+ import { ProjectArea } from '../areas/consts.js'
4
+ import type { StoryDraft } from '../areas/types.js'
5
+ import type { UserStory } from '../ba/types.js'
6
+ import { storyDesignHelper } from '../design/story.js'
7
+ import type { StoryDesign } from '../design/types.js'
8
+ import type { StoryWriteInput } from '../metadata/types.js'
9
+ import { VIABLE_PROJECT_TYPE, VIABLE_STORY_TYPE, VIABLE_USER_CHANNELS } from './consts.js'
10
+ import { ProjectStoryMissconfigured } from './errors.js'
11
+ import type {
12
+ StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
13
+ } from './types.js'
14
+ import type { ViableCardHelper } from './card/types.js'
15
+
16
+ export const createViableCardHelper = (): ViableCardHelper => {
17
+ const isViableProject = (card?: Workcard | null): card is ViableProjectCard =>
18
+ card != null && card.kind === WorkcardKind.Project && card.type === VIABLE_PROJECT_TYPE
19
+
20
+ const isViableStory = (card?: Workcard | null): card is ViableStoryCard =>
21
+ card != null && card.kind === WorkcardKind.Card && card.type === VIABLE_STORY_TYPE
22
+
23
+ const isUserChannel = (channel?: string | null): boolean =>
24
+ channel != null && VIABLE_USER_CHANNELS.includes(channel)
25
+
26
+ const projectFieldsOf = (card: Workcard): ViableProjectFields =>
27
+ (card.fields ?? {}) as ViableProjectFields
28
+
29
+ const storyFieldsOf = (card: Workcard): ViableStoryFields => {
30
+ const fields = (card.fields ?? {}) as Partial<ViableStoryFields>
31
+
32
+ return { ...fields, area: fields.area ?? ProjectArea.Guest, primary: fields.primary === true }
33
+ }
34
+
35
+ const storyDraftOf = (card: Workcard): StoryDraft =>
36
+ ({ story: card.title, area: storyFieldsOf(card).area })
37
+
38
+ const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory => {
39
+ const fields = storyFieldsOf(card)
40
+ const base: UserStory = design != null
41
+ ? storyDesignHelper.userStoryOfDesign(design)
42
+ : { story: card.title, area: fields.area, entity: null as unknown as string, entities: [], screens: [] }
43
+ const code = card.code ?? base.code
44
+
45
+ return {
46
+ ...base,
47
+ story: card.title,
48
+ ...(code != null ? { code } : {}),
49
+ area: fields.area,
50
+ ...(fields.actor != null ? { actor: fields.actor } : {}),
51
+ }
52
+ }
53
+
54
+ const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput => {
55
+ if (card.code == null || card.code === '') {
56
+ throw new ProjectStoryMissconfigured('no-code')
57
+ }
58
+ const { status, ...rest } = content
59
+ const fields = storyFieldsOf(card)
60
+
61
+ return {
62
+ ...rest,
63
+ code: card.code,
64
+ narrative: card.title,
65
+ status: status ?? card.status,
66
+ primary: fields.primary,
67
+ ...(fields.landing === true ? { landing: true } : {}),
68
+ }
69
+ }
70
+
71
+ return {
72
+ isViableProject, isViableStory, isUserChannel, projectFieldsOf, storyFieldsOf, storyDraftOf, userStoryOf,
73
+ storyWriteInputOf,
74
+ }
75
+ }
76
+
77
+ export const viableCardHelper = createViableCardHelper()
@@ -1,5 +1,4 @@
1
- import { CodeScope, CodeStyle } from '@owlmeans/planning'
2
- import type { CodePolicy } from '@owlmeans/planning'
1
+ import { CodeScope, CodeStyle, type CodePolicy } from '@owlmeans/planning'
3
2
 
4
3
  /**
5
4
  * The OwlMeans Viable vocabulary over `@owlmeans/planning`.
@@ -180,3 +179,17 @@ export const VIABLE_IMPROVEMENT_CODE: CodePolicy = Object.freeze({
180
179
  export const VIABLE_REQUIREMENT_CODE: CodePolicy = Object.freeze({
181
180
  ...VIABLE_STORY_CODE, prefix: VIABLE_REQUIREMENT_CODE_PREFIX,
182
181
  })
182
+
183
+ /**
184
+ * The sentence a landing story's narrative carries — what a person reading the board sees.
185
+ *
186
+ * The AUTHORITY is the card's `fields.landing` flag, never this text: the design and development
187
+ * stages key on the flag, and a person may reword the narrative at any time. The sentence exists so
188
+ * the board says in plain words why this story is different, and so the analyst and the designer,
189
+ * who read the narrative, write a screen that continues what the guest started.
190
+ *
191
+ * A constant, byte for byte, because {@link hasLandingSentence} is how a resumed decision step
192
+ * knows it already appended it.
193
+ */
194
+ export const LANDING_STORY_SENTENCE = 'A visitor can start this on the landing page without an account;'
195
+ + ' after signing in they continue here with their choices carried over.'
@@ -1,136 +1,48 @@
1
- import { WorkcardKind } from '@owlmeans/planning'
2
1
  import type { Specification, Workcard } from '@owlmeans/planning'
3
- import { ProjectArea } from '../areas/consts.js'
4
2
  import type { StoryDraft } from '../areas/types.js'
5
3
  import type { AgentProject, UserStory } from '../ba/types.js'
6
- import { userStoryOfDesign } from '../design/helpers.js'
7
4
  import type { StoryDesign } from '../design/types.js'
8
5
  import type { StoryWriteInput } from '../metadata/types.js'
9
- import {
10
- VIABLE_PROJECT_TYPE, VIABLE_STORY_TYPE, VIABLE_USER_CHANNELS, ViableSpecCategory,
11
- } from './consts.js'
12
- import { ProjectStoryMissconfigured } from './errors.js'
6
+ import { viableCardHelper } from './card.js'
7
+ import { viableSpecHelper } from './spec.js'
13
8
  import type {
14
9
  StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
15
10
  } from './types.js'
16
11
 
17
- /** A `viable:project` card — kind AND type, since a foreign provider may share either alone. */
18
- export const isViableProject = (card?: Workcard | null): card is ViableProjectCard =>
19
- card != null && card.kind === WorkcardKind.Project && card.type === VIABLE_PROJECT_TYPE
12
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.isViableProject(…)` */
13
+ export const isViableProject = (card?: Workcard | null): card is ViableProjectCard => viableCardHelper.isViableProject(card)
20
14
 
21
- /** A `viable:user-story` card. */
22
- export const isViableStory = (card?: Workcard | null): card is ViableStoryCard =>
23
- card != null && card.kind === WorkcardKind.Card && card.type === VIABLE_STORY_TYPE
15
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.isViableStory(…)` */
16
+ export const isViableStory = (card?: Workcard | null): card is ViableStoryCard => viableCardHelper.isViableStory(card)
24
17
 
25
- /** Whether a write came from a person (`web`, `connect`) rather than the platform's own runs. */
26
- export const isUserChannel = (channel?: string | null): boolean =>
27
- channel != null && VIABLE_USER_CHANNELS.includes(channel)
18
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.isUserChannel(…)` */
19
+ export const isUserChannel = (channel?: string | null): boolean => viableCardHelper.isUserChannel(channel)
28
20
 
29
- export const projectFieldsOf = (card: Workcard): ViableProjectFields =>
30
- (card.fields ?? {}) as ViableProjectFields
21
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.projectFieldsOf(…)` */
22
+ export const projectFieldsOf = (card: Workcard): ViableProjectFields => viableCardHelper.projectFieldsOf(card)
31
23
 
32
- /**
33
- * A story card's fields, with the two required ones always answered.
34
- *
35
- * An absent area reads as `guest` — the area that guards nothing — and an absent primary flag as
36
- * `false`, so a reader never branches on a card written by a store that dropped them.
37
- */
38
- export const storyFieldsOf = (card: Workcard): ViableStoryFields => {
39
- const fields = (card.fields ?? {}) as Partial<ViableStoryFields>
24
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.storyFieldsOf(…)` */
25
+ export const storyFieldsOf = (card: Workcard): ViableStoryFields => viableCardHelper.storyFieldsOf(card)
40
26
 
41
- return { ...fields, area: fields.area ?? ProjectArea.Guest, primary: fields.primary === true }
42
- }
27
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.storyDraftOf(…)` */
28
+ export const storyDraftOf = (card: Workcard): StoryDraft => viableCardHelper.storyDraftOf(card)
43
29
 
44
- /** The draft shape the analysis prompts and moderation take, from a card. */
45
- export const storyDraftOf = (card: Workcard): StoryDraft =>
46
- ({ story: card.title, area: storyFieldsOf(card).area })
30
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.userStoryOf(…)` */
31
+ export const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory =>
32
+ viableCardHelper.userStoryOf(card, design)
47
33
 
48
- /**
49
- * The aggregate the coders take, for a story CARD.
50
- *
51
- * The card wins on the narrative, the code, the area and the actor — a person may have changed any
52
- * of them since the design was written. The design supplies what only it knows: the entities and
53
- * the screens. Without a design the aggregate has no screens yet.
54
- */
55
- export const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory => {
56
- const fields = storyFieldsOf(card)
57
- const base: UserStory = design != null
58
- ? userStoryOfDesign(design)
59
- : { story: card.title, area: fields.area, entity: null as unknown as string, entities: [], screens: [] }
60
- const code = card.code ?? base.code
34
+ /** @deprecated compat:factory-refactor — use `viableSpecHelper.currentSpecOf(…)` */
35
+ export const currentSpecOf = (specs: readonly Specification[], category: string): Specification | null =>
36
+ viableSpecHelper.currentSpecOf(specs, category)
61
37
 
62
- return {
63
- ...base,
64
- story: card.title,
65
- ...(code != null ? { code } : {}),
66
- area: fields.area,
67
- ...(fields.actor != null ? { actor: fields.actor } : {}),
68
- }
69
- }
70
-
71
- /**
72
- * The current document of one category among a card's specifications.
73
- *
74
- * The highest revision wins, then the most recently updated; a category nobody wrote answers
75
- * `null`.
76
- */
77
- export const currentSpecOf = (
78
- specs: readonly Specification[], category: string,
79
- ): Specification | null =>
80
- specs
81
- .filter(spec => spec.category === category)
82
- .reduce<Specification | null>((best, spec) => {
83
- if (best == null) return spec
84
- const byRevision = (spec.revision ?? 0) - (best.revision ?? 0)
85
- if (byRevision !== 0) return byRevision > 0 ? spec : best
86
-
87
- return (spec.updatedAt ?? spec.createdAt) > (best.updatedAt ?? best.createdAt) ? spec : best
88
- }, null)
89
-
90
- /** The body of a category's current document, `''` when there is none. */
38
+ /** @deprecated compat:factory-refactor — use `viableSpecHelper.currentSpecBody(…)` */
91
39
  export const currentSpecBody = (specs: readonly Specification[], category: string): string =>
92
- currentSpecOf(specs, category)?.body ?? ''
93
-
94
- /**
95
- * The brief a generator reads, assembled from the project card and its specifications.
96
- *
97
- * `name` is the card's title and `alias` its code; a brief part nobody wrote is `''`, which is
98
- * what every prompt already treats as "not stated".
99
- */
100
- export const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject => {
101
- const { language } = projectFieldsOf(project)
102
-
103
- return {
104
- name: project.title,
105
- ...(project.code != null ? { alias: project.code } : {}),
106
- description: project.description ?? '',
107
- specification: currentSpecBody(specs, ViableSpecCategory.Specification),
108
- designSystem: currentSpecBody(specs, ViableSpecCategory.DesignSystem),
109
- vision: currentSpecBody(specs, ViableSpecCategory.Vision),
110
- ...(language != null ? { language } : {}),
111
- }
112
- }
40
+ viableSpecHelper.currentSpecBody(specs, category)
113
41
 
114
- /**
115
- * What the metadata store writes to `docs/stories/<code>.md`, from the card and a run's content.
116
- *
117
- * The CODE is the target's only story identifier — a card id never reaches a target file — so a
118
- * story card without one is refused rather than filed under its id. The landing flag is carried
119
- * only when it is set, so every other story's frontmatter keeps the shape it always had.
120
- */
121
- export const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput => {
122
- if (card.code == null || card.code === '') {
123
- throw new ProjectStoryMissconfigured('no-code')
124
- }
125
- const { status, ...rest } = content
126
- const fields = storyFieldsOf(card)
42
+ /** @deprecated compat:factory-refactor — use `viableSpecHelper.projectBriefOf(…)` */
43
+ export const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject =>
44
+ viableSpecHelper.projectBriefOf(project, specs)
127
45
 
128
- return {
129
- ...rest,
130
- code: card.code,
131
- narrative: card.title,
132
- status: status ?? card.status,
133
- primary: fields.primary,
134
- ...(fields.landing === true ? { landing: true } : {}),
135
- }
136
- }
46
+ /** @deprecated compat:factory-refactor — use `viableCardHelper.storyWriteInputOf(…)` */
47
+ export const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput =>
48
+ viableCardHelper.storyWriteInputOf(card, content)
@@ -1,7 +1,11 @@
1
1
  export * from './consts.js'
2
2
  export * from './errors.js'
3
3
  export * from './schemas.js'
4
- export * from './flows.js'
4
+ export * from './card.js'
5
+ export * from './spec.js'
5
6
  export * from './helpers.js'
6
7
  export * from './landing.js'
7
8
  export type * from './types.js'
9
+ export type * from './card/types.js'
10
+ export type * from './spec/types.js'
11
+ export type * from './landing/types.js'
@@ -0,0 +1,15 @@
1
+ /** The landing sentence a landing-gate story's narrative carries. */
2
+ export interface LandingSentenceHelper {
3
+ /** Whether a narrative already carries the landing sentence, whatever whitespace surrounds it. */
4
+ hasLandingSentence: (title: string) => boolean
5
+ /**
6
+ * The narrative with the landing sentence appended once.
7
+ *
8
+ * Idempotent — a narrative that already carries the sentence comes back unchanged, so a decision
9
+ * step that is resumed after it wrote the card never appends a second copy. It never produces a
10
+ * title longer than a card accepts (`TITLE_MAX`): a narrative with no room left is returned as it
11
+ * is rather than cut, because a person's words are worth more than the note, and the flag on the
12
+ * card still carries the fact.
13
+ */
14
+ withLandingSentence: (title: string) => string
15
+ }