@owlmeans/viable-common 0.0.44 → 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 (589) 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 +40 -28
  5. package/build/agent/index.d.ts +1 -0
  6. package/build/agent/index.d.ts.map +1 -1
  7. package/build/agent/index.js.map +1 -1
  8. package/build/agent/presentation/types.d.ts +21 -0
  9. package/build/agent/presentation/types.d.ts.map +1 -0
  10. package/build/agent/presentation/types.js.map +1 -0
  11. package/build/agent/presentation.d.ts +10 -8
  12. package/build/agent/presentation.d.ts.map +1 -1
  13. package/build/agent/presentation.js +216 -195
  14. package/build/agent/presentation.js.map +1 -1
  15. package/build/agent/types.local.d.ts +3 -1
  16. package/build/agent/types.local.d.ts.map +1 -1
  17. package/build/areas/index.d.ts +1 -0
  18. package/build/areas/index.d.ts.map +1 -1
  19. package/build/areas/index.js.map +1 -1
  20. package/build/areas/tenancy/types.d.ts +23 -0
  21. package/build/areas/tenancy/types.d.ts.map +1 -0
  22. package/build/areas/tenancy/types.js +2 -0
  23. package/build/areas/tenancy/types.js.map +1 -0
  24. package/build/areas/tenancy.d.ts +5 -14
  25. package/build/areas/tenancy.d.ts.map +1 -1
  26. package/build/areas/tenancy.js +20 -26
  27. package/build/areas/tenancy.js.map +1 -1
  28. package/build/ba/connecting/types.d.ts +45 -0
  29. package/build/ba/connecting/types.d.ts.map +1 -0
  30. package/build/ba/connecting/types.js +2 -0
  31. package/build/ba/connecting/types.js.map +1 -0
  32. package/build/ba/connecting.d.ts +4 -0
  33. package/build/ba/connecting.d.ts.map +1 -0
  34. package/build/ba/connecting.js +47 -0
  35. package/build/ba/connecting.js.map +1 -0
  36. package/build/ba/helpers.d.ts +4 -39
  37. package/build/ba/helpers.d.ts.map +1 -1
  38. package/build/ba/helpers.js +5 -79
  39. package/build/ba/helpers.js.map +1 -1
  40. package/build/ba/index.d.ts +2 -0
  41. package/build/ba/index.d.ts.map +1 -1
  42. package/build/ba/index.js +1 -0
  43. package/build/ba/index.js.map +1 -1
  44. package/build/blueprint/types.d.ts +1 -2
  45. package/build/blueprint/types.d.ts.map +1 -1
  46. package/build/connect/branding/types.d.ts +28 -0
  47. package/build/connect/branding/types.d.ts.map +1 -0
  48. package/build/connect/branding/types.js +2 -0
  49. package/build/connect/branding/types.js.map +1 -0
  50. package/build/connect/consts.d.ts +2 -0
  51. package/build/connect/consts.d.ts.map +1 -1
  52. package/build/connect/consts.js +2 -0
  53. package/build/connect/consts.js.map +1 -1
  54. package/build/connect/conversion/types.d.ts +93 -0
  55. package/build/connect/conversion/types.d.ts.map +1 -0
  56. package/build/connect/conversion/types.js +2 -0
  57. package/build/connect/conversion/types.js.map +1 -0
  58. package/build/connect/entrypoints/types.d.ts +30 -0
  59. package/build/connect/entrypoints/types.d.ts.map +1 -0
  60. package/build/connect/entrypoints/types.js +2 -0
  61. package/build/connect/entrypoints/types.js.map +1 -0
  62. package/build/connect/entrypoints.d.ts +17 -11
  63. package/build/connect/entrypoints.d.ts.map +1 -1
  64. package/build/connect/entrypoints.js.map +1 -1
  65. package/build/connect/errors/types.d.ts +20 -0
  66. package/build/connect/errors/types.d.ts.map +1 -0
  67. package/build/connect/errors/types.js +2 -0
  68. package/build/connect/errors/types.js.map +1 -0
  69. package/build/connect/errors.d.ts +1 -1
  70. package/build/connect/errors.d.ts.map +1 -1
  71. package/build/connect/index.d.ts +13 -3
  72. package/build/connect/index.d.ts.map +1 -1
  73. package/build/connect/index.js +1 -1
  74. package/build/connect/index.js.map +1 -1
  75. package/build/connect/kit/types.d.ts +52 -0
  76. package/build/connect/kit/types.d.ts.map +1 -0
  77. package/build/connect/kit/types.js +2 -0
  78. package/build/connect/{types.js.map → kit/types.js.map} +1 -1
  79. package/build/connect/model-tier/types.d.ts +16 -0
  80. package/build/connect/model-tier/types.d.ts.map +1 -0
  81. package/build/connect/model-tier/types.js +2 -0
  82. package/build/connect/model-tier/types.js.map +1 -0
  83. package/build/connect/model-tier.d.ts +4 -0
  84. package/build/connect/model-tier.d.ts.map +1 -0
  85. package/build/connect/model-tier.js +21 -0
  86. package/build/connect/model-tier.js.map +1 -0
  87. package/build/connect/{ops.d.ts → ops/types.d.ts} +13 -4
  88. package/build/connect/ops/types.d.ts.map +1 -0
  89. package/build/connect/ops/types.js +2 -0
  90. package/build/connect/ops/types.js.map +1 -0
  91. package/build/connect/pipeline/types.d.ts +39 -0
  92. package/build/connect/pipeline/types.d.ts.map +1 -0
  93. package/build/connect/pipeline/types.js +2 -0
  94. package/build/connect/pipeline/types.js.map +1 -0
  95. package/build/connect/project/types.d.ts +127 -0
  96. package/build/connect/project/types.d.ts.map +1 -0
  97. package/build/connect/project/types.js +2 -0
  98. package/build/connect/project/types.js.map +1 -0
  99. package/build/connect/references/types.d.ts +157 -0
  100. package/build/connect/references/types.d.ts.map +1 -0
  101. package/build/connect/references/types.js +2 -0
  102. package/build/connect/references/types.js.map +1 -0
  103. package/build/connect/references/types.local.d.ts +5 -0
  104. package/build/connect/references/types.local.d.ts.map +1 -0
  105. package/build/connect/references/types.local.js.map +1 -0
  106. package/build/connect/references.d.ts +1 -1
  107. package/build/connect/references.d.ts.map +1 -1
  108. package/build/connect/references.js.map +1 -1
  109. package/build/connect/schemas.d.ts +8 -5
  110. package/build/connect/schemas.d.ts.map +1 -1
  111. package/build/connect/schemas.js +1 -3
  112. package/build/connect/schemas.js.map +1 -1
  113. package/build/connect/session/types.d.ts +73 -0
  114. package/build/connect/session/types.d.ts.map +1 -0
  115. package/build/connect/session/types.js +2 -0
  116. package/build/connect/session/types.js.map +1 -0
  117. package/build/connect/settings/types.d.ts +48 -0
  118. package/build/connect/settings/types.d.ts.map +1 -0
  119. package/build/connect/settings/types.js +2 -0
  120. package/build/connect/settings/types.js.map +1 -0
  121. package/build/convert/analysis/types.d.ts +93 -0
  122. package/build/convert/analysis/types.d.ts.map +1 -0
  123. package/build/convert/analysis/types.js +2 -0
  124. package/build/convert/analysis/types.js.map +1 -0
  125. package/build/convert/{consts.local.d.ts → census/consts.local.d.ts} +1 -1
  126. package/build/convert/census/consts.local.d.ts.map +1 -0
  127. package/build/convert/{consts.local.js → census/consts.local.js} +1 -1
  128. package/build/convert/census/consts.local.js.map +1 -0
  129. package/build/convert/census/types.d.ts +176 -0
  130. package/build/convert/census/types.d.ts.map +1 -0
  131. package/build/convert/census/types.js +2 -0
  132. package/build/convert/census/types.js.map +1 -0
  133. package/build/convert/census.d.ts +4 -0
  134. package/build/convert/census.d.ts.map +1 -0
  135. package/build/convert/census.js +83 -0
  136. package/build/convert/census.js.map +1 -0
  137. package/build/convert/consts.d.ts +4 -0
  138. package/build/convert/consts.d.ts.map +1 -1
  139. package/build/convert/consts.js +4 -0
  140. package/build/convert/consts.js.map +1 -1
  141. package/build/convert/detection/types.d.ts +67 -0
  142. package/build/convert/detection/types.d.ts.map +1 -0
  143. package/build/convert/detection/types.js +2 -0
  144. package/build/convert/detection/types.js.map +1 -0
  145. package/build/convert/docs/types.d.ts +129 -0
  146. package/build/convert/docs/types.d.ts.map +1 -0
  147. package/build/convert/docs/types.js +2 -0
  148. package/build/convert/docs/types.js.map +1 -0
  149. package/build/convert/docs.d.ts +4 -0
  150. package/build/convert/docs.d.ts.map +1 -0
  151. package/build/convert/docs.js +9 -0
  152. package/build/convert/docs.js.map +1 -0
  153. package/build/convert/estimate/types.d.ts +77 -0
  154. package/build/convert/estimate/types.d.ts.map +1 -0
  155. package/build/convert/estimate/types.js +2 -0
  156. package/build/convert/estimate/types.js.map +1 -0
  157. package/build/convert/estimate.d.ts +11 -0
  158. package/build/convert/estimate.d.ts.map +1 -0
  159. package/build/convert/estimate.js +18 -0
  160. package/build/convert/estimate.js.map +1 -0
  161. package/build/convert/helpers.d.ts +14 -78
  162. package/build/convert/helpers.d.ts.map +1 -1
  163. package/build/convert/helpers.js +27 -199
  164. package/build/convert/helpers.js.map +1 -1
  165. package/build/convert/index.d.ts +14 -0
  166. package/build/convert/index.d.ts.map +1 -1
  167. package/build/convert/index.js +5 -0
  168. package/build/convert/index.js.map +1 -1
  169. package/build/convert/origin/types.d.ts +41 -0
  170. package/build/convert/origin/types.d.ts.map +1 -0
  171. package/build/convert/origin/types.js +2 -0
  172. package/build/convert/origin/types.js.map +1 -0
  173. package/build/convert/origin.d.ts +4 -0
  174. package/build/convert/origin.d.ts.map +1 -0
  175. package/build/convert/origin.js +25 -0
  176. package/build/convert/origin.js.map +1 -0
  177. package/build/convert/record/types.d.ts +98 -0
  178. package/build/convert/record/types.d.ts.map +1 -0
  179. package/build/convert/record/types.js +2 -0
  180. package/build/convert/record/types.js.map +1 -0
  181. package/build/convert/schemas.d.ts +7 -6
  182. package/build/convert/schemas.d.ts.map +1 -1
  183. package/build/convert/schemas.js +1 -5
  184. package/build/convert/schemas.js.map +1 -1
  185. package/build/convert/stage/types.d.ts +27 -0
  186. package/build/convert/stage/types.d.ts.map +1 -0
  187. package/build/convert/stage/types.js +2 -0
  188. package/build/convert/stage/types.js.map +1 -0
  189. package/build/convert/stage.d.ts +4 -0
  190. package/build/convert/stage.d.ts.map +1 -0
  191. package/build/convert/stage.js +25 -0
  192. package/build/convert/stage.js.map +1 -0
  193. package/build/convert/taxonomy/types.d.ts +71 -0
  194. package/build/convert/taxonomy/types.d.ts.map +1 -0
  195. package/build/convert/taxonomy/types.js +2 -0
  196. package/build/convert/taxonomy/types.js.map +1 -0
  197. package/build/convert/types.d.ts +1 -657
  198. package/build/convert/types.d.ts.map +1 -1
  199. package/build/convert/utils.d.ts +2 -1
  200. package/build/convert/utils.d.ts.map +1 -1
  201. package/build/convert/utils.js +5 -4
  202. package/build/convert/utils.js.map +1 -1
  203. package/build/design/helpers.d.ts +9 -49
  204. package/build/design/helpers.d.ts.map +1 -1
  205. package/build/design/helpers.js +17 -224
  206. package/build/design/helpers.js.map +1 -1
  207. package/build/design/index.d.ts +3 -0
  208. package/build/design/index.d.ts.map +1 -1
  209. package/build/design/index.js +1 -0
  210. package/build/design/index.js.map +1 -1
  211. package/build/design/runtime/types.d.ts +16 -0
  212. package/build/design/runtime/types.d.ts.map +1 -0
  213. package/build/design/runtime/types.js +2 -0
  214. package/build/design/runtime/types.js.map +1 -0
  215. package/build/design/runtime.d.ts +6 -2
  216. package/build/design/runtime.d.ts.map +1 -1
  217. package/build/design/runtime.js +13 -5
  218. package/build/design/runtime.js.map +1 -1
  219. package/build/design/story/types.d.ts +67 -0
  220. package/build/design/story/types.d.ts.map +1 -0
  221. package/build/design/story/types.js +2 -0
  222. package/build/design/story/types.js.map +1 -0
  223. package/build/design/story.d.ts +4 -0
  224. package/build/design/story.d.ts.map +1 -0
  225. package/build/design/story.js +184 -0
  226. package/build/design/story.js.map +1 -0
  227. package/build/dev/types.local.d.ts +2 -1
  228. package/build/dev/types.local.d.ts.map +1 -1
  229. package/build/integrity/index.d.ts +4 -0
  230. package/build/integrity/index.d.ts.map +1 -1
  231. package/build/integrity/index.js +2 -0
  232. package/build/integrity/index.js.map +1 -1
  233. package/build/integrity/layout/consts.d.ts +59 -0
  234. package/build/integrity/layout/consts.d.ts.map +1 -0
  235. package/build/integrity/layout/consts.js +66 -0
  236. package/build/integrity/layout/consts.js.map +1 -0
  237. package/build/integrity/layout/consts.local.d.ts +18 -0
  238. package/build/integrity/layout/consts.local.d.ts.map +1 -0
  239. package/build/integrity/layout/consts.local.js +176 -0
  240. package/build/integrity/layout/consts.local.js.map +1 -0
  241. package/build/integrity/layout/types.d.ts +35 -0
  242. package/build/integrity/layout/types.d.ts.map +1 -0
  243. package/build/integrity/layout/types.js +2 -0
  244. package/build/integrity/layout/types.js.map +1 -0
  245. package/build/integrity/layout.d.ts +4 -0
  246. package/build/integrity/layout.d.ts.map +1 -0
  247. package/build/integrity/layout.js +25 -0
  248. package/build/integrity/layout.js.map +1 -0
  249. package/build/integrity/types.d.ts +3 -1
  250. package/build/integrity/types.d.ts.map +1 -1
  251. package/build/integrity/utils.d.ts +6 -81
  252. package/build/integrity/utils.d.ts.map +1 -1
  253. package/build/integrity/utils.js +11 -279
  254. package/build/integrity/utils.js.map +1 -1
  255. package/build/integrity/verify/types.d.ts +26 -0
  256. package/build/integrity/verify/types.d.ts.map +1 -0
  257. package/build/integrity/verify/types.js +2 -0
  258. package/build/integrity/verify/types.js.map +1 -0
  259. package/build/integrity/verify.d.ts +5 -19
  260. package/build/integrity/verify.d.ts.map +1 -1
  261. package/build/integrity/verify.js +164 -175
  262. package/build/integrity/verify.js.map +1 -1
  263. package/build/intent/consts.d.ts +16 -0
  264. package/build/intent/consts.d.ts.map +1 -1
  265. package/build/intent/consts.js +63 -0
  266. package/build/intent/consts.js.map +1 -1
  267. package/build/intent/entrypoints.d.ts +2 -11
  268. package/build/intent/entrypoints.d.ts.map +1 -1
  269. package/build/intent/entrypoints.js.map +1 -1
  270. package/build/intent/index.d.ts +0 -1
  271. package/build/intent/index.d.ts.map +1 -1
  272. package/build/intent/index.js +0 -1
  273. package/build/intent/index.js.map +1 -1
  274. package/build/intent/types.d.ts +13 -2
  275. package/build/intent/types.d.ts.map +1 -1
  276. package/build/moderation/index.d.ts +2 -0
  277. package/build/moderation/index.d.ts.map +1 -1
  278. package/build/moderation/index.js +1 -0
  279. package/build/moderation/index.js.map +1 -1
  280. package/build/moderation/utils.d.ts +3 -15
  281. package/build/moderation/utils.d.ts.map +1 -1
  282. package/build/moderation/utils.js +5 -30
  283. package/build/moderation/utils.js.map +1 -1
  284. package/build/moderation/verdict/types.d.ts +24 -0
  285. package/build/moderation/verdict/types.d.ts.map +1 -0
  286. package/build/moderation/verdict/types.js +2 -0
  287. package/build/moderation/verdict/types.js.map +1 -0
  288. package/build/moderation/verdict.d.ts +4 -0
  289. package/build/moderation/verdict.d.ts.map +1 -0
  290. package/build/moderation/verdict.js +21 -0
  291. package/build/moderation/verdict.js.map +1 -0
  292. package/build/planning/card/types.d.ts +42 -0
  293. package/build/planning/card/types.d.ts.map +1 -0
  294. package/build/planning/card/types.js +2 -0
  295. package/build/planning/card/types.js.map +1 -0
  296. package/build/planning/card.d.ts +4 -0
  297. package/build/planning/card.d.ts.map +1 -0
  298. package/build/planning/card.js +51 -0
  299. package/build/planning/card.js.map +1 -0
  300. package/build/planning/helpers.d.ts +11 -37
  301. package/build/planning/helpers.d.ts.map +1 -1
  302. package/build/planning/helpers.js +24 -103
  303. package/build/planning/helpers.js.map +1 -1
  304. package/build/planning/index.d.ts +5 -0
  305. package/build/planning/index.d.ts.map +1 -1
  306. package/build/planning/index.js +2 -0
  307. package/build/planning/index.js.map +1 -1
  308. package/build/planning/landing/types.d.ts +16 -0
  309. package/build/planning/landing/types.d.ts.map +1 -0
  310. package/build/planning/landing/types.js +2 -0
  311. package/build/planning/landing/types.js.map +1 -0
  312. package/build/planning/landing.d.ts +5 -10
  313. package/build/planning/landing.d.ts.map +1 -1
  314. package/build/planning/landing.js +20 -22
  315. package/build/planning/landing.js.map +1 -1
  316. package/build/planning/schemas.d.ts +1 -5
  317. package/build/planning/schemas.d.ts.map +1 -1
  318. package/build/planning/schemas.js +3 -3
  319. package/build/planning/schemas.js.map +1 -1
  320. package/build/planning/spec/types.d.ts +22 -0
  321. package/build/planning/spec/types.d.ts.map +1 -0
  322. package/build/planning/spec/types.js +2 -0
  323. package/build/planning/spec/types.js.map +1 -0
  324. package/build/planning/spec.d.ts +4 -0
  325. package/build/planning/spec.d.ts.map +1 -0
  326. package/build/planning/spec.js +30 -0
  327. package/build/planning/spec.js.map +1 -0
  328. package/build/planning/types.d.ts +4 -3
  329. package/build/planning/types.d.ts.map +1 -1
  330. package/build/scaffold/consts.d.ts +40 -1
  331. package/build/scaffold/consts.d.ts.map +1 -1
  332. package/build/scaffold/consts.js +52 -0
  333. package/build/scaffold/consts.js.map +1 -1
  334. package/build/scaffold/helpers.d.ts +4 -16
  335. package/build/scaffold/helpers.d.ts.map +1 -1
  336. package/build/scaffold/helpers.js +9 -64
  337. package/build/scaffold/helpers.js.map +1 -1
  338. package/build/scaffold/index.d.ts +4 -0
  339. package/build/scaffold/index.d.ts.map +1 -1
  340. package/build/scaffold/index.js +2 -0
  341. package/build/scaffold/index.js.map +1 -1
  342. package/build/scaffold/landing/types.d.ts +48 -0
  343. package/build/scaffold/landing/types.d.ts.map +1 -0
  344. package/build/scaffold/landing/types.js +2 -0
  345. package/build/scaffold/landing/types.js.map +1 -0
  346. package/build/scaffold/landing.d.ts +4 -0
  347. package/build/scaffold/landing.d.ts.map +1 -0
  348. package/build/scaffold/landing.js +95 -0
  349. package/build/scaffold/landing.js.map +1 -0
  350. package/build/scaffold/schemas.d.ts +3 -2
  351. package/build/scaffold/schemas.d.ts.map +1 -1
  352. package/build/scaffold/schemas.js +177 -7
  353. package/build/scaffold/schemas.js.map +1 -1
  354. package/build/scaffold/share/types.d.ts +35 -0
  355. package/build/scaffold/share/types.d.ts.map +1 -0
  356. package/build/scaffold/share/types.js +2 -0
  357. package/build/scaffold/share/types.js.map +1 -0
  358. package/build/scaffold/share.d.ts +4 -0
  359. package/build/scaffold/share.d.ts.map +1 -0
  360. package/build/scaffold/share.js +42 -0
  361. package/build/scaffold/share.js.map +1 -0
  362. package/build/scaffold/types.d.ts +112 -2
  363. package/build/scaffold/types.d.ts.map +1 -1
  364. package/build/skills/consts.d.ts +42 -0
  365. package/build/skills/consts.d.ts.map +1 -1
  366. package/build/skills/consts.js +43 -0
  367. package/build/skills/consts.js.map +1 -1
  368. package/build/skills/index.d.ts +0 -1
  369. package/build/skills/index.d.ts.map +1 -1
  370. package/build/skills/index.js +0 -1
  371. package/build/skills/index.js.map +1 -1
  372. package/build/slot/command/types.d.ts +21 -0
  373. package/build/slot/command/types.d.ts.map +1 -0
  374. package/build/slot/command/types.js +2 -0
  375. package/build/slot/command/types.js.map +1 -0
  376. package/build/slot/command.d.ts +4 -0
  377. package/build/slot/command.d.ts.map +1 -0
  378. package/build/slot/command.js +31 -0
  379. package/build/slot/command.js.map +1 -0
  380. package/build/slot/helpers.d.ts +2 -16
  381. package/build/slot/helpers.d.ts.map +1 -1
  382. package/build/slot/helpers.js +5 -26
  383. package/build/slot/helpers.js.map +1 -1
  384. package/build/slot/index.d.ts +5 -0
  385. package/build/slot/index.d.ts.map +1 -1
  386. package/build/slot/index.js +2 -0
  387. package/build/slot/index.js.map +1 -1
  388. package/build/slot/layout/types.d.ts +17 -0
  389. package/build/slot/layout/types.d.ts.map +1 -0
  390. package/build/slot/layout/types.js +2 -0
  391. package/build/slot/layout/types.js.map +1 -0
  392. package/build/slot/layout.d.ts +4 -9
  393. package/build/slot/layout.d.ts.map +1 -1
  394. package/build/slot/layout.js +13 -15
  395. package/build/slot/layout.js.map +1 -1
  396. package/build/slot/origin/types.d.ts +23 -0
  397. package/build/slot/origin/types.d.ts.map +1 -0
  398. package/build/slot/origin/types.js +2 -0
  399. package/build/slot/origin/types.js.map +1 -0
  400. package/build/slot/origin.d.ts +4 -0
  401. package/build/slot/origin.d.ts.map +1 -0
  402. package/build/slot/origin.js +15 -0
  403. package/build/slot/origin.js.map +1 -0
  404. package/build/slot/types.d.ts.map +1 -1
  405. package/build/slot/utils.d.ts +3 -15
  406. package/build/slot/utils.d.ts.map +1 -1
  407. package/build/slot/utils.js +5 -40
  408. package/build/slot/utils.js.map +1 -1
  409. package/build/topology/card/types.d.ts +21 -0
  410. package/build/topology/card/types.d.ts.map +1 -0
  411. package/build/topology/card/types.js +2 -0
  412. package/build/topology/card/types.js.map +1 -0
  413. package/build/topology/card.d.ts +6 -13
  414. package/build/topology/card.d.ts.map +1 -1
  415. package/build/topology/card.js +83 -86
  416. package/build/topology/card.js.map +1 -1
  417. package/build/topology/helpers.d.ts +7 -33
  418. package/build/topology/helpers.d.ts.map +1 -1
  419. package/build/topology/helpers.js +15 -111
  420. package/build/topology/helpers.js.map +1 -1
  421. package/build/topology/index.d.ts +3 -0
  422. package/build/topology/index.d.ts.map +1 -1
  423. package/build/topology/index.js +1 -0
  424. package/build/topology/index.js.map +1 -1
  425. package/build/topology/resolve/types.d.ts +47 -0
  426. package/build/topology/resolve/types.d.ts.map +1 -0
  427. package/build/topology/resolve/types.js +2 -0
  428. package/build/topology/resolve/types.js.map +1 -0
  429. package/build/topology/resolve.d.ts +4 -0
  430. package/build/topology/resolve.d.ts.map +1 -0
  431. package/build/topology/resolve.js +89 -0
  432. package/build/topology/resolve.js.map +1 -0
  433. package/package.json +11 -11
  434. package/src/agent/index.ts +1 -0
  435. package/src/agent/presentation/types.ts +21 -0
  436. package/src/agent/presentation.ts +199 -165
  437. package/src/agent/types.local.ts +3 -1
  438. package/src/areas/index.ts +1 -0
  439. package/src/areas/tenancy/types.ts +23 -0
  440. package/src/areas/tenancy.ts +26 -25
  441. package/src/ba/connecting/types.ts +45 -0
  442. package/src/ba/connecting.ts +64 -0
  443. package/src/ba/helpers.ts +8 -92
  444. package/src/ba/index.ts +2 -0
  445. package/src/blueprint/types.ts +2 -2
  446. package/src/connect/branding/types.ts +29 -0
  447. package/src/connect/consts.ts +3 -0
  448. package/src/connect/conversion/types.ts +96 -0
  449. package/src/connect/entrypoints/types.ts +25 -0
  450. package/src/connect/entrypoints.ts +13 -2
  451. package/src/connect/errors/types.ts +22 -0
  452. package/src/connect/errors.ts +1 -1
  453. package/src/connect/index.ts +13 -3
  454. package/src/connect/kit/types.ts +56 -0
  455. package/src/connect/model-tier/types.ts +16 -0
  456. package/src/connect/model-tier.ts +22 -0
  457. package/src/connect/{ops.ts → ops/types.ts} +13 -3
  458. package/src/connect/pipeline/types.ts +41 -0
  459. package/src/connect/project/types.ts +127 -0
  460. package/src/connect/references/types.local.ts +5 -0
  461. package/src/connect/references/types.ts +73 -0
  462. package/src/connect/references.ts +13 -2
  463. package/src/connect/schemas.ts +9 -13
  464. package/src/connect/session/types.ts +81 -0
  465. package/src/connect/settings/types.ts +52 -0
  466. package/src/convert/analysis/types.ts +89 -0
  467. package/src/convert/{consts.local.ts → census/consts.local.ts} +1 -1
  468. package/src/convert/census/types.ts +181 -0
  469. package/src/convert/census.ts +95 -0
  470. package/src/convert/consts.ts +5 -0
  471. package/src/convert/detection/types.ts +74 -0
  472. package/src/convert/docs/types.ts +151 -0
  473. package/src/convert/docs.ts +15 -0
  474. package/src/convert/estimate/types.ts +75 -0
  475. package/src/convert/estimate.ts +19 -0
  476. package/src/convert/helpers.ts +29 -210
  477. package/src/convert/index.ts +14 -0
  478. package/src/convert/origin/types.ts +43 -0
  479. package/src/convert/origin.ts +33 -0
  480. package/src/convert/record/types.ts +105 -0
  481. package/src/convert/schemas.ts +13 -12
  482. package/src/convert/stage/types.ts +27 -0
  483. package/src/convert/stage.ts +31 -0
  484. package/src/convert/taxonomy/types.ts +74 -0
  485. package/src/convert/types.ts +5 -709
  486. package/src/convert/utils.ts +5 -6
  487. package/src/design/helpers.ts +20 -245
  488. package/src/design/index.ts +3 -0
  489. package/src/design/runtime/types.ts +14 -0
  490. package/src/design/runtime.ts +22 -7
  491. package/src/design/story/types.ts +67 -0
  492. package/src/design/story.ts +221 -0
  493. package/src/dev/types.local.ts +1 -1
  494. package/src/integrity/index.ts +4 -0
  495. package/src/integrity/layout/consts.local.ts +188 -0
  496. package/src/integrity/layout/consts.ts +79 -0
  497. package/src/integrity/layout/types.ts +35 -0
  498. package/src/integrity/layout.ts +39 -0
  499. package/src/integrity/types.ts +3 -1
  500. package/src/integrity/utils.ts +14 -313
  501. package/src/integrity/verify/types.ts +26 -0
  502. package/src/integrity/verify.ts +177 -181
  503. package/src/intent/consts.ts +67 -0
  504. package/src/intent/entrypoints.ts +2 -2
  505. package/src/intent/index.ts +0 -1
  506. package/src/intent/types.ts +9 -2
  507. package/src/moderation/index.ts +2 -0
  508. package/src/moderation/utils.ts +7 -30
  509. package/src/moderation/verdict/types.ts +22 -0
  510. package/src/moderation/verdict.ts +28 -0
  511. package/src/planning/card/types.ts +44 -0
  512. package/src/planning/card.ts +77 -0
  513. package/src/planning/helpers.ts +28 -116
  514. package/src/planning/index.ts +5 -0
  515. package/src/planning/landing/types.ts +15 -0
  516. package/src/planning/landing.ts +27 -24
  517. package/src/planning/schemas.ts +3 -3
  518. package/src/planning/spec/types.ts +22 -0
  519. package/src/planning/spec.ts +41 -0
  520. package/src/planning/types.ts +4 -4
  521. package/src/scaffold/consts.ts +65 -1
  522. package/src/scaffold/helpers.ts +14 -77
  523. package/src/scaffold/index.ts +4 -0
  524. package/src/scaffold/landing/types.ts +48 -0
  525. package/src/scaffold/landing.ts +120 -0
  526. package/src/scaffold/schemas.ts +183 -7
  527. package/src/scaffold/share/types.ts +35 -0
  528. package/src/scaffold/share.ts +60 -0
  529. package/src/scaffold/types.ts +120 -1
  530. package/src/skills/consts.ts +46 -0
  531. package/src/skills/index.ts +0 -1
  532. package/src/slot/command/types.ts +21 -0
  533. package/src/slot/command.ts +38 -0
  534. package/src/slot/helpers.ts +5 -25
  535. package/src/slot/index.ts +5 -0
  536. package/src/slot/layout/types.ts +17 -0
  537. package/src/slot/layout.ts +19 -16
  538. package/src/slot/origin/types.ts +23 -0
  539. package/src/slot/origin.ts +20 -0
  540. package/src/slot/types.ts +1 -0
  541. package/src/slot/utils.ts +8 -43
  542. package/src/topology/card/types.ts +21 -0
  543. package/src/topology/card.ts +84 -82
  544. package/src/topology/helpers.ts +20 -125
  545. package/src/topology/index.ts +3 -0
  546. package/src/topology/resolve/types.ts +47 -0
  547. package/src/topology/resolve.ts +118 -0
  548. package/tests/blueprint.spec.ts +1 -2
  549. package/tests/connect-errors.spec.ts +1 -1
  550. package/tests/convert.spec.ts +50 -50
  551. package/tests/design.spec.ts +13 -16
  552. package/tests/planning.spec.ts +57 -59
  553. package/tests/presentation.spec.ts +20 -20
  554. package/tests/scaffold.spec.ts +286 -6
  555. package/tests/tenancy.spec.ts +21 -21
  556. package/build/connect/ops.d.ts.map +0 -1
  557. package/build/connect/ops.js +0 -2
  558. package/build/connect/ops.js.map +0 -1
  559. package/build/connect/types.d.ts +0 -650
  560. package/build/connect/types.d.ts.map +0 -1
  561. package/build/connect/types.local.d.ts +0 -4
  562. package/build/connect/types.local.d.ts.map +0 -1
  563. package/build/connect/types.local.js.map +0 -1
  564. package/build/connect/utils.d.ts +0 -12
  565. package/build/connect/utils.d.ts.map +0 -1
  566. package/build/connect/utils.js +0 -25
  567. package/build/connect/utils.js.map +0 -1
  568. package/build/convert/consts.local.d.ts.map +0 -1
  569. package/build/convert/consts.local.js.map +0 -1
  570. package/build/intent/consts.local.d.ts +0 -4
  571. package/build/intent/consts.local.d.ts.map +0 -1
  572. package/build/intent/consts.local.js +0 -3
  573. package/build/intent/consts.local.js.map +0 -1
  574. package/build/intent/flow.d.ts +0 -17
  575. package/build/intent/flow.d.ts.map +0 -1
  576. package/build/intent/flow.js +0 -65
  577. package/build/intent/flow.js.map +0 -1
  578. package/build/skills/roles.d.ts +0 -43
  579. package/build/skills/roles.d.ts.map +0 -1
  580. package/build/skills/roles.js +0 -44
  581. package/build/skills/roles.js.map +0 -1
  582. package/src/connect/types.local.ts +0 -5
  583. package/src/connect/types.ts +0 -589
  584. package/src/connect/utils.ts +0 -23
  585. package/src/intent/consts.local.ts +0 -3
  586. package/src/intent/flow.ts +0 -66
  587. package/src/skills/roles.ts +0 -46
  588. /package/build/{connect → agent/presentation}/types.js +0 -0
  589. /package/build/connect/{types.local.js → references/types.local.js} +0 -0
@@ -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,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,6 +1,11 @@
1
1
  export * from './consts.js'
2
2
  export * from './errors.js'
3
3
  export * from './schemas.js'
4
+ export * from './card.js'
5
+ export * from './spec.js'
4
6
  export * from './helpers.js'
5
7
  export * from './landing.js'
6
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
+ }
@@ -1,30 +1,33 @@
1
1
  import { TITLE_MAX } from '@owlmeans/planning'
2
2
  import { LANDING_STORY_SENTENCE } from './consts.js'
3
+ import type { LandingSentenceHelper } from './landing/types.js'
3
4
 
4
- const normalized = (text: string): string => text.replace(/\s+/g, ' ')
5
-
6
- /** Whether a narrative already carries the landing sentence, whatever whitespace surrounds it. */
7
- export const hasLandingSentence = (title: string): boolean =>
8
- normalized(title).includes(LANDING_STORY_SENTENCE)
9
-
10
- /**
11
- * The narrative with the landing sentence appended once.
12
- *
13
- * Idempotent — a narrative that already carries the sentence comes back unchanged, so a decision
14
- * step that is resumed after it wrote the card never appends a second copy. It never produces a
15
- * title longer than a card accepts (`TITLE_MAX`): a narrative with no room left is returned as it
16
- * is rather than cut, because a person's words are worth more than the note, and the flag on the
17
- * card still carries the fact.
18
- */
19
- export const withLandingSentence = (title: string): string => {
20
- if (hasLandingSentence(title)) {
21
- return title
22
- }
23
- const base = title.trimEnd()
24
- if (base === '') {
25
- return LANDING_STORY_SENTENCE
5
+ export const createLandingSentenceHelper = (): LandingSentenceHelper => {
6
+ const normalized = (text: string): string => text.replace(/\s+/g, ' ')
7
+
8
+ const hasLandingSentence = (title: string): boolean =>
9
+ normalized(title).includes(LANDING_STORY_SENTENCE)
10
+
11
+ const withLandingSentence = (title: string): string => {
12
+ if (hasLandingSentence(title)) {
13
+ return title
14
+ }
15
+ const base = title.trimEnd()
16
+ if (base === '') {
17
+ return LANDING_STORY_SENTENCE
18
+ }
19
+ const joined = `${base} ${LANDING_STORY_SENTENCE}`
20
+
21
+ return joined.length > TITLE_MAX ? title : joined
26
22
  }
27
- const joined = `${base} ${LANDING_STORY_SENTENCE}`
28
23
 
29
- return joined.length > TITLE_MAX ? title : joined
24
+ return { hasLandingSentence, withLandingSentence }
30
25
  }
26
+
27
+ export const landingSentenceHelper = createLandingSentenceHelper()
28
+
29
+ /** @deprecated compat:factory-refactor — use `landingSentenceHelper.hasLandingSentence(…)` */
30
+ export const hasLandingSentence = (title: string): boolean => landingSentenceHelper.hasLandingSentence(title)
31
+
32
+ /** @deprecated compat:factory-refactor — use `landingSentenceHelper.withLandingSentence(…)` */
33
+ export const withLandingSentence = (title: string): string => landingSentenceHelper.withLandingSentence(title)
@@ -198,7 +198,7 @@ export const VIABLE_SPEC_FLOW_SCHEMA: StatusFlowSchema = {
198
198
  transitions: [],
199
199
  }
200
200
 
201
- export const slot = (
201
+ const slot = (
202
202
  category: ViableSpecCategory, format: SpecificationFormat, extra: Partial<SpecificationSlot> = {},
203
203
  ): SpecificationSlot => ({ category, format, type: VIABLE_SPEC_TYPE, ...extra })
204
204
 
@@ -222,7 +222,7 @@ export const VIABLE_STORY_SLOTS: SpecificationSlot[] = [
222
222
  }),
223
223
  ]
224
224
 
225
- export const storyLink = (name: ViableRelationship): RelationshipType =>
225
+ const storyLink = (name: ViableRelationship): RelationshipType =>
226
226
  ({ name, from: [VIABLE_STORY_TYPE], to: [VIABLE_STORY_TYPE], single: true })
227
227
 
228
228
  export const VIABLE_STORY_RELATIONSHIPS: RelationshipType[] = [
@@ -264,7 +264,7 @@ export const VIABLE_SPEC_TYPE_SCHEMA: WorkcardTypeSchema = {
264
264
  specifications: [],
265
265
  }
266
266
 
267
- export const reserved = (type: string, code: WorkcardTypeSchema['code']): WorkcardTypeSchema => ({
267
+ const reserved = (type: string, code: WorkcardTypeSchema['code']): WorkcardTypeSchema => ({
268
268
  type,
269
269
  kind: WorkcardKind.Card,
270
270
  version: 1,
@@ -0,0 +1,22 @@
1
+ import type { Specification, Workcard } from '@owlmeans/planning'
2
+ import type { AgentProject } from '../../ba/types.js'
3
+
4
+ /** Reading a card's specifications: the current document per category, and the project brief. */
5
+ export interface ViableSpecHelper {
6
+ /**
7
+ * The current document of one category among a card's specifications.
8
+ *
9
+ * The highest revision wins, then the most recently updated; a category nobody wrote answers
10
+ * `null`.
11
+ */
12
+ currentSpecOf: (specs: readonly Specification[], category: string) => Specification | null
13
+ /** The body of a category's current document, `''` when there is none. */
14
+ currentSpecBody: (specs: readonly Specification[], category: string) => string
15
+ /**
16
+ * The brief a generator reads, assembled from the project card and its specifications.
17
+ *
18
+ * `name` is the card's title and `alias` its code; a brief part nobody wrote is `''`, which is
19
+ * what every prompt already treats as "not stated".
20
+ */
21
+ projectBriefOf: (project: Workcard, specs: readonly Specification[]) => AgentProject
22
+ }
@@ -0,0 +1,41 @@
1
+ import type { Specification, Workcard } from '@owlmeans/planning'
2
+ import type { AgentProject } from '../ba/types.js'
3
+ import { viableCardHelper } from './card.js'
4
+ import { ViableSpecCategory } from './consts.js'
5
+ import type { ViableSpecHelper } from './spec/types.js'
6
+
7
+ export const createViableSpecHelper = (): ViableSpecHelper => {
8
+ const currentSpecOf = (
9
+ specs: readonly Specification[], category: string,
10
+ ): Specification | null =>
11
+ specs
12
+ .filter(spec => spec.category === category)
13
+ .reduce<Specification | null>((best, spec) => {
14
+ if (best == null) return spec
15
+ const byRevision = (spec.revision ?? 0) - (best.revision ?? 0)
16
+ if (byRevision !== 0) return byRevision > 0 ? spec : best
17
+
18
+ return (spec.updatedAt ?? spec.createdAt) > (best.updatedAt ?? best.createdAt) ? spec : best
19
+ }, null)
20
+
21
+ const currentSpecBody = (specs: readonly Specification[], category: string): string =>
22
+ currentSpecOf(specs, category)?.body ?? ''
23
+
24
+ const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject => {
25
+ const { language } = viableCardHelper.projectFieldsOf(project)
26
+
27
+ return {
28
+ name: project.title,
29
+ ...(project.code != null ? { alias: project.code } : {}),
30
+ description: project.description ?? '',
31
+ specification: currentSpecBody(specs, ViableSpecCategory.Specification),
32
+ designSystem: currentSpecBody(specs, ViableSpecCategory.DesignSystem),
33
+ vision: currentSpecBody(specs, ViableSpecCategory.Vision),
34
+ ...(language != null ? { language } : {}),
35
+ }
36
+ }
37
+
38
+ return { currentSpecOf, currentSpecBody, projectBriefOf }
39
+ }
40
+
41
+ export const viableSpecHelper = createViableSpecHelper()
@@ -8,6 +8,7 @@ import type { ProjectOrigin } from '../convert/types.js'
8
8
  import type { StoryActor } from '../design/consts.js'
9
9
  import type { StoryWriteInput } from '../metadata/types.js'
10
10
 
11
+ // Kept as a type: card fields must satisfy `Record<string, unknown>`, which needs the implicit index signature of a type literal.
11
12
  /**
12
13
  * What a `viable:project` card keeps under `fields`.
13
14
  *
@@ -65,6 +66,7 @@ export interface ViableLandingDecision {
65
66
  at: string
66
67
  }
67
68
 
69
+ // Kept as a type: card fields must satisfy `Record<string, unknown>`, which needs the implicit index signature of a type literal.
68
70
  /**
69
71
  * What a `viable:user-story` card keeps under `fields`.
70
72
  *
@@ -102,7 +104,7 @@ export interface ViableStoryCard extends Card {
102
104
  }
103
105
 
104
106
  /** A document under a Viable card — the brief parts, the scaffold plan, a story design. */
105
- export type ViableSpecification = Specification
107
+ export interface ViableSpecification extends Specification {}
106
108
 
107
109
  /**
108
110
  * What a develop run hands the metadata store beside the card.
@@ -110,6 +112,4 @@ export type ViableSpecification = Specification
110
112
  * The code, the narrative, the primary flag and the landing flag are the CARD's and are never
111
113
  * passed separately — a second copy is a second answer. `status` defaults to the card's own.
112
114
  */
113
- export type StoryWriteContent =
114
- & Omit<StoryWriteInput, 'code' | 'narrative' | 'primary' | 'landing' | 'status'>
115
- & { status?: string }
115
+ export interface StoryWriteContent extends Omit<StoryWriteInput, 'code' | 'narrative' | 'primary' | 'landing' | 'status'> { status?: string }
@@ -1,4 +1,6 @@
1
- import type { BentoFragmentKind, LandingGateFieldKind } from './types.js'
1
+ import type {
2
+ BentoFragmentKind, LandingAnchor, LandingBand, LandingGateFieldKind, LandingSlot,
3
+ } from './types.js'
2
4
 
3
5
  /**
4
6
  * The shapes a drawn widget can take.
@@ -47,3 +49,65 @@ export const LANDING_GATE_MAX_FIELDS = 3
47
49
 
48
50
  /** The options a `select` field carries: fewer is no choice, more is a list to browse. */
49
51
  export const LANDING_GATE_OPTIONS = { min: 2, max: 6 } as const
52
+
53
+ /**
54
+ * The bands of a landing page in the HOUSE ORDER — the order every page draws them in, whichever
55
+ * of them it carries. `problem` is the problem-and-solution band.
56
+ */
57
+ export const LANDING_BAND_ORDER: LandingBand[] = [
58
+ 'hero', 'steps', 'features', 'use-cases', 'problem', 'differentiator', 'approach',
59
+ 'testimonials', 'about', 'closing',
60
+ ]
61
+
62
+ /** The bands the guest header menu can jump to, in page order. */
63
+ export const LANDING_ANCHORS: LandingAnchor[] = [
64
+ 'how', 'features', 'use-cases', 'why', 'approach', 'community', 'about',
65
+ ]
66
+
67
+ /** Which band each menu anchor jumps to. */
68
+ export const LANDING_ANCHOR_BAND: Record<LandingAnchor, LandingBand> = {
69
+ how: 'steps',
70
+ features: 'features',
71
+ 'use-cases': 'use-cases',
72
+ why: 'differentiator',
73
+ approach: 'approach',
74
+ community: 'testimonials',
75
+ about: 'about',
76
+ }
77
+
78
+ /**
79
+ * The English menu labels an entry falls back to when neither the menu nor the page's own section
80
+ * label names it. A fallback, never the intended copy: the plan writes labels in the product's
81
+ * language.
82
+ */
83
+ export const LANDING_ANCHOR_LABELS: Record<LandingAnchor, string> = {
84
+ how: 'How it works',
85
+ features: 'Features',
86
+ 'use-cases': 'Use cases',
87
+ why: 'Why us',
88
+ approach: 'How we work',
89
+ community: 'Reviews',
90
+ about: 'About',
91
+ }
92
+
93
+ /** Entries of the guest header menu: fewer is not a menu, more crowds a phone's header. */
94
+ export const LANDING_MENU = { min: 2, max: 4 } as const
95
+
96
+ /** Cases of the use-cases band; fewer than `min` and the band is not drawn. */
97
+ export const LANDING_USE_CASES = { min: 2, max: 4 } as const
98
+
99
+ /** Rows of the differentiator's usual-vs-ours contrast; fewer than `min` and no table is drawn. */
100
+ export const LANDING_CONTRAST = { min: 2, max: 3 } as const
101
+
102
+ /** Principles of the approach band; fewer than `min` and the band is not drawn. */
103
+ export const LANDING_PRINCIPLES = { min: 3, max: 4 } as const
104
+
105
+ /** Every button or link of a landing page that can open a user story, in page order. */
106
+ export const LANDING_SLOTS: LandingSlot[] = [
107
+ 'hero.cta', 'hero.secondary', 'hero.browse',
108
+ 'useCase.1', 'useCase.2', 'useCase.3', 'useCase.4',
109
+ 'closing.primary', 'closing.secondary', 'closing.link.1', 'closing.link.2',
110
+ ]
111
+
112
+ /** The slots a landing gate replaces: with a usable gate the page draws none of them. */
113
+ export const LANDING_GATE_SLOTS: LandingSlot[] = ['hero.cta', 'hero.secondary', 'closing.primary']