@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
@@ -1,69 +1,34 @@
1
1
  import type { Blueprint } from '../blueprint/types.js'
2
- import { ProjectArea } from './consts.js'
2
+ import { ProjectArea, NO_TENANCY } from './consts.js'
3
+ import type { ProjectTenancy } from './types.js'
4
+ import type { TenancyHelper } from './tenancy/types.js'
3
5
 
4
- /**
5
- * Whether a generated application splits its audiences into tenant ORGANIZATIONS.
6
- *
7
- * Two flags rather than one, because the two audiences split independently: one back office can
8
- * serve end users who each belong to their own company (`users` only), every reseller can run its
9
- * own staff over one shared public (`operators` only), and a B2B tool usually does both. An
10
- * organization is an IAM-managed tenant — never a table the target keeps for itself.
11
- *
12
- * Both false is today's application: one organization, the project owner's, that every person acts in.
13
- */
14
- export interface ProjectTenancy {
15
- /** The staff of the back office are split into tenant organizations. */
16
- operators: boolean
17
- /** The end users of the front office are distributed across tenant organizations. */
18
- users: boolean
19
- }
6
+ export const createTenancyHelper = (): TenancyHelper => {
7
+ const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
8
+ const tenancy = blueprint?.experience?.tenancy
9
+ const operators = tenancy?.operators === true
10
+ const users = tenancy?.users === true
20
11
 
21
- /**
22
- * A tenancy decision as the project card records it (`fields.tenancy`).
23
- *
24
- * The flags plus where they came from. `quotes` are the requester's OWN sentences, verbatim — the
25
- * evidence a later reader (a person reviewing the board, a run asked to reconsider) checks the
26
- * decision against, which a paraphrase would quietly replace with the model's reading of it.
27
- * `by` says whether a model inferred it or the owner set it; `at` is when, an ISO timestamp.
28
- */
29
- export interface ViableTenancyDecision extends ProjectTenancy {
30
- quotes?: { operators?: string; users?: string }
31
- by: 'model' | 'owner'
32
- at: string
33
- }
12
+ return operators || users ? Object.freeze({ operators, users }) : NO_TENANCY
13
+ }
34
14
 
35
- /** The longest requester sentence a tenancy decision quotes — a card refuses a longer one. */
36
- export const TENANCY_QUOTE_MAX = 1024
15
+ const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
16
+ switch (area) {
17
+ case ProjectArea.User: return tenancy.users === true
18
+ case ProjectArea.Operator: return tenancy.operators === true
19
+ default: return false
20
+ }
21
+ }
37
22
 
38
- /** A single-organization application — what every project is until a decision says otherwise. */
39
- export const NO_TENANCY: ProjectTenancy = Object.freeze({ operators: false, users: false })
23
+ return { tenancyOf, tenantedArea }
24
+ }
40
25
 
41
- /**
42
- * The tenancy of a resolved blueprint.
43
- *
44
- * Total, like `landingGatePreferenceOf`: an absent layer, an absent key and a value this deploy
45
- * cannot read all answer {@link NO_TENANCY}. Only a literal `true` turns a flag on, because a flag
46
- * read as on by mistake splits a product's people into organizations nobody asked for, while one
47
- * read as off leaves the application exactly as it was before tenancy existed.
48
- */
49
- export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
50
- const tenancy = blueprint?.experience?.tenancy
51
- const operators = tenancy?.operators === true
52
- const users = tenancy?.users === true
26
+ export const tenancyHelper = createTenancyHelper()
53
27
 
54
- return operators || users ? Object.freeze({ operators, users }) : NO_TENANCY
55
- }
28
+ /** @deprecated compat:factory-refactor — use `tenancyHelper.tenancyOf(…)` */
29
+ export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy =>
30
+ tenancyHelper.tenancyOf(blueprint)
56
31
 
57
- /**
58
- * Whether an AREA's people act inside a tenant organization.
59
- *
60
- * Guest has no organization to act in, and admin is the project owner, who stands above every
61
- * tenant rather than inside one — so both are never tenanted, whatever the flags say.
62
- */
63
- export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
64
- switch (area) {
65
- case ProjectArea.User: return tenancy.users === true
66
- case ProjectArea.Operator: return tenancy.operators === true
67
- default: return false
68
- }
69
- }
32
+ /** @deprecated compat:factory-refactor — use `tenancyHelper.tenantedArea(…)` */
33
+ export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean =>
34
+ tenancyHelper.tenantedArea(area, tenancy)
@@ -27,3 +27,34 @@ export interface NavEntry {
27
27
  alias: string
28
28
  label: string
29
29
  }
30
+
31
+ /**
32
+ * Whether a generated application splits its audiences into tenant ORGANIZATIONS.
33
+ *
34
+ * Two flags rather than one, because the two audiences split independently: one back office can
35
+ * serve end users who each belong to their own company (`users` only), every reseller can run its
36
+ * own staff over one shared public (`operators` only), and a B2B tool usually does both. An
37
+ * organization is an IAM-managed tenant — never a table the target keeps for itself.
38
+ *
39
+ * Both false is today's application: one organization, the project owner's, that every person acts in.
40
+ */
41
+ export interface ProjectTenancy {
42
+ /** The staff of the back office are split into tenant organizations. */
43
+ operators: boolean
44
+ /** The end users of the front office are distributed across tenant organizations. */
45
+ users: boolean
46
+ }
47
+
48
+ /**
49
+ * A tenancy decision as the project card records it (`fields.tenancy`).
50
+ *
51
+ * The flags plus where they came from. `quotes` are the requester's OWN sentences, verbatim — the
52
+ * evidence a later reader (a person reviewing the board, a run asked to reconsider) checks the
53
+ * decision against, which a paraphrase would quietly replace with the model's reading of it.
54
+ * `by` says whether a model inferred it or the owner set it; `at` is when, an ISO timestamp.
55
+ */
56
+ export interface ViableTenancyDecision extends ProjectTenancy {
57
+ quotes?: { operators?: string; users?: string }
58
+ by: 'model' | 'owner'
59
+ at: string
60
+ }
@@ -0,0 +1,45 @@
1
+ import type { StoryDraft } from '../../areas/types.js'
2
+ import type { ConnectingStoryDraft, MergedStoryDraft } from '../types.js'
3
+
4
+ /** The connecting stories of a flow: how many it may carry, and where each one lands. */
5
+ export interface ConnectingStoryHelper {
6
+ /**
7
+ * How many connecting stories one flow may carry.
8
+ *
9
+ * An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
10
+ * flow sizes its own supporting cast, and a three-step product can never end up with eight list
11
+ * screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
12
+ * derived, and most flows land well below this.
13
+ *
14
+ * The real reason for a hard number: every story here becomes a full develop run the project's
15
+ * owner pays for.
16
+ */
17
+ connectingStoryCap: (flowCount: number) => number
18
+ /**
19
+ * Interleave the connecting stories into the flow they were derived from.
20
+ *
21
+ * `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
22
+ * displays, so the connecting story lands immediately behind it — which is also immediately in
23
+ * front of the step it leads into. The result is ONE ordered list, and it is the order records are
24
+ * created in.
25
+ *
26
+ * This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
27
+ * produces it and the pipeline that persists the result — read it through here, or the two drift
28
+ * and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
29
+ * entry as `after`, which is what the story card's `follows` relationship is written from.
30
+ *
31
+ * Four properties are deliberate:
32
+ *
33
+ * - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
34
+ * `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
35
+ * primary story depends on that.
36
+ * - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
37
+ * position in front of the flow — nothing can be listed before the step that produced it, and
38
+ * story 1 stays the enabling action.
39
+ * - **A placement is advice; the story is work already paid for.** An anchor past the end means
40
+ * "at the end", and one that is not a number at all means the front of the flow. Neither is a
41
+ * reason to lose a story.
42
+ * - **Ties keep the model's order**, which is the only ranking anything has.
43
+ */
44
+ mergeConnectingStories: (flow: StoryDraft[], connecting: ConnectingStoryDraft[]) => MergedStoryDraft[]
45
+ }
@@ -0,0 +1,64 @@
1
+ import type { StoryDraft } from "../areas/types.js"
2
+ import type { ConnectingStoryDraft, MergedStoryDraft } from "./types.js"
3
+ import { StoryKind } from "./consts.js"
4
+ import type { ConnectingStoryHelper } from './connecting/types.js'
5
+
6
+ export const createConnectingStoryHelper = (): ConnectingStoryHelper => {
7
+ const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
8
+
9
+ /** Collapse case and whitespace, so "the same story twice" is recognised as such. */
10
+ const canonical = (story: string): string => story.trim().replace(/\s+/g, ' ').toLowerCase()
11
+
12
+ const mergeConnectingStories = (
13
+ flow: StoryDraft[], connecting: ConnectingStoryDraft[]
14
+ ): MergedStoryDraft[] => {
15
+ if (flow.length < 1) {
16
+ return []
17
+ }
18
+
19
+ const seen = new Set(flow.map(({ story }) => canonical(story)))
20
+ const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
21
+
22
+ for (const draft of connecting) {
23
+ const text = canonical(draft.story)
24
+ // A connecting story that repeats a flow story is not a second story: it is one develop run
25
+ // spent twice AND — since the home-screen detector matches its answer back by exact text — a
26
+ // second record that answer could resolve to.
27
+ if (text === '' || seen.has(text)) {
28
+ continue
29
+ }
30
+ seen.add(text)
31
+
32
+ const after = Number(draft.after)
33
+ placed.push({
34
+ draft,
35
+ at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
36
+ })
37
+ }
38
+
39
+ // Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
40
+ // it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
41
+ // The sort is stable, so two stories on the same step keep the order they were derived in.
42
+ const surviving = placed
43
+ .map((entry, order) => ({ ...entry, order }))
44
+ .sort((a, b) => a.at - b.at || a.order - b.order)
45
+ .slice(0, connectingStoryCap(flow.length))
46
+
47
+ // Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
48
+ const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
49
+ for (const { draft, at } of surviving) {
50
+ buckets[at - 1]!.push(draft)
51
+ }
52
+
53
+ return flow.flatMap(({ story, area }, index) => [
54
+ { story, area, kind: StoryKind.Flow },
55
+ ...buckets[index]!.map(draft => (
56
+ { story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
57
+ )),
58
+ ])
59
+ }
60
+
61
+ return { connectingStoryCap, mergeConnectingStories }
62
+ }
63
+
64
+ export const connectingStoryHelper = createConnectingStoryHelper()
package/src/ba/helpers.ts CHANGED
@@ -1,94 +1,10 @@
1
- import type { StoryDraft } from "../areas/types.js"
2
- import type { ConnectingStoryDraft, MergedStoryDraft } from "./types.js"
3
- import { StoryKind } from "./consts.js"
1
+ import type { StoryDraft } from '../areas/types.js'
2
+ import { connectingStoryHelper } from './connecting.js'
3
+ import type { ConnectingStoryDraft, MergedStoryDraft } from './types.js'
4
4
 
5
- /**
6
- * How many connecting stories one flow may carry.
7
- *
8
- * An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
9
- * flow sizes its own supporting cast, and a three-step product can never end up with eight list
10
- * screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
11
- * derived, and most flows land well below this.
12
- *
13
- * The real reason for a hard number: every story here becomes a full develop run the project's
14
- * owner pays for.
15
- */
16
- export const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
5
+ /** @deprecated compat:factory-refactor — use `connectingStoryHelper.connectingStoryCap(…)` */
6
+ export const connectingStoryCap = (flowCount: number): number => connectingStoryHelper.connectingStoryCap(flowCount)
17
7
 
18
- /** Collapse case and whitespace, so "the same story twice" is recognised as such. */
19
- const canonical = (story: string): string => story.trim().replace(/\s+/g, ' ').toLowerCase()
20
-
21
- /**
22
- * Interleave the connecting stories into the flow they were derived from.
23
- *
24
- * `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
25
- * displays, so the connecting story lands immediately behind it — which is also immediately in
26
- * front of the step it leads into. The result is ONE ordered list, and it is the order records are
27
- * created in.
28
- *
29
- * This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
30
- * produces it and the pipeline that persists the result — read it through here, or the two drift
31
- * and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
32
- * entry as `after`, which is what the story card's `follows` relationship is written from.
33
- *
34
- * Four properties are deliberate:
35
- *
36
- * - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
37
- * `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
38
- * primary story depends on that.
39
- * - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
40
- * position in front of the flow — nothing can be listed before the step that produced it, and
41
- * story 1 stays the enabling action.
42
- * - **A placement is advice; the story is work already paid for.** An anchor past the end means
43
- * "at the end", and one that is not a number at all means the front of the flow. Neither is a
44
- * reason to lose a story.
45
- * - **Ties keep the model's order**, which is the only ranking anything has.
46
- */
47
- export const mergeConnectingStories = (
48
- flow: StoryDraft[], connecting: ConnectingStoryDraft[]
49
- ): MergedStoryDraft[] => {
50
- if (flow.length < 1) {
51
- return []
52
- }
53
-
54
- const seen = new Set(flow.map(({ story }) => canonical(story)))
55
- const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
56
-
57
- for (const draft of connecting) {
58
- const text = canonical(draft.story)
59
- // A connecting story that repeats a flow story is not a second story: it is one develop run
60
- // spent twice AND — since the home-screen detector matches its answer back by exact text — a
61
- // second record that answer could resolve to.
62
- if (text === '' || seen.has(text)) {
63
- continue
64
- }
65
- seen.add(text)
66
-
67
- const after = Number(draft.after)
68
- placed.push({
69
- draft,
70
- at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
71
- })
72
- }
73
-
74
- // Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
75
- // it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
76
- // The sort is stable, so two stories on the same step keep the order they were derived in.
77
- const surviving = placed
78
- .map((entry, order) => ({ ...entry, order }))
79
- .sort((a, b) => a.at - b.at || a.order - b.order)
80
- .slice(0, connectingStoryCap(flow.length))
81
-
82
- // Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
83
- const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
84
- for (const { draft, at } of surviving) {
85
- buckets[at - 1]!.push(draft)
86
- }
87
-
88
- return flow.flatMap(({ story, area }, index) => [
89
- { story, area, kind: StoryKind.Flow },
90
- ...buckets[index]!.map(draft => (
91
- { story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
92
- )),
93
- ])
94
- }
8
+ /** @deprecated compat:factory-refactor — use `connectingStoryHelper.mergeConnectingStories(…)` */
9
+ export const mergeConnectingStories = (flow: StoryDraft[], connecting: ConnectingStoryDraft[]): MergedStoryDraft[] =>
10
+ connectingStoryHelper.mergeConnectingStories(flow, connecting)
package/src/ba/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ export * from './connecting.js'
2
3
  export * from './helpers.js'
3
4
  export * from './consts.js'
4
5
  export type * from './types.js'
6
+ export type * from './connecting/types.js'
package/src/ba/types.ts CHANGED
@@ -2,7 +2,7 @@ import { SpecCategory } from "./consts"
2
2
  import type { ConnectingStoryKind, StoryKind } from "./consts.js"
3
3
  import type { ProjectArea } from "../areas/consts.js"
4
4
  import type { StoryDraft } from "../areas/types.js"
5
- import type { StoryActor } from "../design/runtime.js"
5
+ import type { StoryActor } from "../design/consts.js"
6
6
 
7
7
  export interface EntityList {
8
8
  entities: string[]
@@ -0,0 +1,3 @@
1
+ import { LandingGatePreference } from './consts.js'
2
+
3
+ export const LANDING_GATE_PREFERENCES = new Set<string>(Object.values(LandingGatePreference))
@@ -85,3 +85,55 @@ export enum WorkKind {
85
85
 
86
86
  /** The longest case quote a project card keeps (`fields.caseQuote`) — one sentence, generously. */
87
87
  export const CASE_QUOTE_MAX = 1024
88
+
89
+ /**
90
+ * The layers, lowest first. A higher layer's value replaces the same key from a lower one.
91
+ *
92
+ * The ordering is the point: `technology` overrides everything, because a change of language
93
+ * invalidates every template, prompt and package below it. Nothing today has more than one
94
+ * technology — the ladder exists so that adding one is a data change. `experience` is last and
95
+ * optional: it shares no key with the five build layers, so its place decides nothing today.
96
+ */
97
+ export enum BlueprintLayer {
98
+ Technology = 'technology',
99
+ Stack = 'stack',
100
+ Template = 'template',
101
+ CreateApp = 'create-app',
102
+ Packages = 'packages',
103
+ Experience = 'experience',
104
+ }
105
+
106
+ export const BLUEPRINT_LAYER_ORDER: BlueprintLayer[] = [
107
+ BlueprintLayer.Technology,
108
+ BlueprintLayer.Stack,
109
+ BlueprintLayer.Template,
110
+ BlueprintLayer.CreateApp,
111
+ BlueprintLayer.Packages,
112
+ BlueprintLayer.Experience,
113
+ ]
114
+
115
+ /**
116
+ * How strongly a product of this kind wants a LANDING GATE — the working entry into the key
117
+ * end-user workflow drawn on the guest home, where a guest starts before signing in.
118
+ *
119
+ * A PRIOR handed to the model that decides, never the decision itself: `Encourage` still lets it
120
+ * answer "no gate" for a product with no end-user step a guest could begin, and `Discourage` still
121
+ * lets it choose one when the specification plainly describes such a step.
122
+ */
123
+ export enum LandingGatePreference {
124
+ /** Most products of this kind have a first-value step a guest can begin — look for it. */
125
+ Encourage = 'encourage',
126
+ /** Neutral: decide from the specification alone. */
127
+ Allow = 'allow',
128
+ /** Products of this kind rarely have one — choose a gate only when the specification asks. */
129
+ Discourage = 'discourage',
130
+ }
131
+
132
+ export enum BlueprintPatchKind {
133
+ /** Deep-merge a JSON document — the manifests, the tsconfigs. */
134
+ JsonMerge = 'json-merge',
135
+ /** Rewrite the `<head>` of an HTML document from the project's identity. */
136
+ HtmlHead = 'html-head',
137
+ /** Write a document composed from the project's identity. */
138
+ Compose = 'compose',
139
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './types.js'
2
+ export * from './utils.js'
2
3
 
3
4
  export * from './consts.js'
@@ -1,8 +1,8 @@
1
- import type { ProjectTenancy } from '../areas/tenancy.js'
1
+ import type { ProjectTenancy } from '../areas/types.js'
2
2
  import type { SubProject } from '../slot/consts.js'
3
- import type { ViableSkill } from '../skills/consts.js'
4
- import type { ViablePersona } from '../skills/roles.js'
3
+ import type { ViablePersona, ViableSkill } from '../skills/consts.js'
5
4
  import type { TopologyDescriptor } from '../topology/types.js'
5
+ import { BlueprintPatchKind, LandingGatePreference } from './consts.js'
6
6
 
7
7
  /**
8
8
  * A BLUEPRINT is everything that decides what kind of project the pipeline is building — the
@@ -35,49 +35,6 @@ export interface Blueprint {
35
35
  experience?: ExperienceLayer
36
36
  }
37
37
 
38
- /**
39
- * The layers, lowest first. A higher layer's value replaces the same key from a lower one.
40
- *
41
- * The ordering is the point: `technology` overrides everything, because a change of language
42
- * invalidates every template, prompt and package below it. Nothing today has more than one
43
- * technology — the ladder exists so that adding one is a data change. `experience` is last and
44
- * optional: it shares no key with the five build layers, so its place decides nothing today.
45
- */
46
- export enum BlueprintLayer {
47
- Technology = 'technology',
48
- Stack = 'stack',
49
- Template = 'template',
50
- CreateApp = 'create-app',
51
- Packages = 'packages',
52
- Experience = 'experience',
53
- }
54
-
55
- export const BLUEPRINT_LAYER_ORDER: BlueprintLayer[] = [
56
- BlueprintLayer.Technology,
57
- BlueprintLayer.Stack,
58
- BlueprintLayer.Template,
59
- BlueprintLayer.CreateApp,
60
- BlueprintLayer.Packages,
61
- BlueprintLayer.Experience,
62
- ]
63
-
64
- /**
65
- * How strongly a product of this kind wants a LANDING GATE — the working entry into the key
66
- * end-user workflow drawn on the guest home, where a guest starts before signing in.
67
- *
68
- * A PRIOR handed to the model that decides, never the decision itself: `Encourage` still lets it
69
- * answer "no gate" for a product with no end-user step a guest could begin, and `Discourage` still
70
- * lets it choose one when the specification plainly describes such a step.
71
- */
72
- export enum LandingGatePreference {
73
- /** Most products of this kind have a first-value step a guest can begin — look for it. */
74
- Encourage = 'encourage',
75
- /** Neutral: decide from the specification alone. */
76
- Allow = 'allow',
77
- /** Products of this kind rarely have one — choose a gate only when the specification asks. */
78
- Discourage = 'discourage',
79
- }
80
-
81
38
  /**
82
39
  * What the product should do for the people using it, independent of the stack it is built on.
83
40
  *
@@ -96,25 +53,6 @@ export interface ExperienceLayer {
96
53
  tenancy?: ProjectTenancy
97
54
  }
98
55
 
99
- const LANDING_GATE_PREFERENCES = new Set<string>(Object.values(LandingGatePreference))
100
-
101
- /**
102
- * The landing-gate preference of a resolved blueprint.
103
- *
104
- * Total: an absent layer, an absent key and a value this deploy does not know (a patch serialized
105
- * by a newer one) all answer `Allow` — the neutral prior, which leaves the decision to the
106
- * specification rather than tilting it either way on a value nobody set.
107
- */
108
- export const landingGatePreferenceOf = (
109
- blueprint?: Pick<Blueprint, 'experience'> | null
110
- ): LandingGatePreference => {
111
- const value = blueprint?.experience?.landingGate
112
-
113
- return value != null && LANDING_GATE_PREFERENCES.has(value)
114
- ? value
115
- : LandingGatePreference.Allow
116
- }
117
-
118
56
  /** Language and toolchain. Overrides everything below it. */
119
57
  export interface TechnologyLayer {
120
58
  id: string
@@ -181,15 +119,6 @@ export interface BlueprintPatchSpec {
181
119
  kind: BlueprintPatchKind
182
120
  }
183
121
 
184
- export enum BlueprintPatchKind {
185
- /** Deep-merge a JSON document — the manifests, the tsconfigs. */
186
- JsonMerge = 'json-merge',
187
- /** Rewrite the `<head>` of an HTML document from the project's identity. */
188
- HtmlHead = 'html-head',
189
- /** Write a document composed from the project's identity. */
190
- Compose = 'compose',
191
- }
192
-
193
122
  /** Which scaffolder runs first, and how. */
194
123
  export interface CreateAppLayer {
195
124
  id: string
@@ -259,6 +188,7 @@ export interface BlueprintCapabilities {
259
188
  marketingConsent: boolean
260
189
  }
261
190
 
191
+ // Kept as a type: a mapped type over the blueprint's keys.
262
192
  /** A partial override of a blueprint, deep-merged over the resolved value. */
263
193
  export type BlueprintPatch = {
264
194
  [K in keyof Blueprint]?: Blueprint[K] extends string ? Blueprint[K] : Partial<Blueprint[K]>
@@ -0,0 +1,20 @@
1
+ import { LANDING_GATE_PREFERENCES } from './consts.local.js'
2
+ import { LandingGatePreference } from './consts.js'
3
+ import type { Blueprint } from './types.js'
4
+
5
+ /**
6
+ * The landing-gate preference of a resolved blueprint.
7
+ *
8
+ * Total: an absent layer, an absent key and a value this deploy does not know (a patch serialized
9
+ * by a newer one) all answer `Allow` — the neutral prior, which leaves the decision to the
10
+ * specification rather than tilting it either way on a value nobody set.
11
+ */
12
+ export const landingGatePreferenceOf = (
13
+ blueprint?: Pick<Blueprint, 'experience'> | null
14
+ ): LandingGatePreference => {
15
+ const value = blueprint?.experience?.landingGate
16
+
17
+ return value != null && LANDING_GATE_PREFERENCES.has(value)
18
+ ? value
19
+ : LandingGatePreference.Allow
20
+ }
package/src/branding.ts CHANGED
@@ -1,22 +1,5 @@
1
1
  import type { SlotMetadata } from './types.js'
2
2
 
3
- /**
4
- * The build-time environment keys a generated application reads its branding from.
5
- *
6
- * Named here, once, because two processes emit them — the publisher for the preview and the agent
7
- * for a production publish — and a key spelled differently in one of them produces an application
8
- * that silently falls back to its defaults with nothing anywhere reporting it.
9
- */
10
- export const BRANDING_ENV_KEYS = [
11
- 'BRANDING_COPYRIGHT',
12
- 'BRANDING_ORGANIZATION',
13
- 'BRANDING_TERMS_URL',
14
- 'BRANDING_PRIVACY_URL',
15
- 'BRANDING_CREDIT',
16
- 'BRANDING_PRODUCT',
17
- 'BRANDING_GOOGLE_TAG',
18
- ] as const
19
-
20
3
  /**
21
4
  * Slot metadata as build-time environment.
22
5
  *
@@ -0,0 +1,29 @@
1
+
2
+
3
+ /**
4
+ * A project's branding as a connector reads it — what the generated application says about who
5
+ * made it, and the Google tag it loads.
6
+ *
7
+ * Every field is a string, `''` when unset, in the platform's own branding vocabulary. The
8
+ * platform credit is absent on purpose: hiding it is a paid capability behind its own gated route,
9
+ * and neither reading nor saving this record may reach it.
10
+ */
11
+ export interface ConnectProjectBranding {
12
+ /** The copyright line in the application's footer. Never empty once saved. */
13
+ copyright: string
14
+ /** The organization's display name. Never empty once saved. */
15
+ organizationName: string
16
+ /** `''`, an `https://` URL, or a same-origin path such as `/terms` (the generated page). */
17
+ termsUrl: string
18
+ /** `''`, an `https://` URL, or a same-origin path such as `/privacy` (the generated page). */
19
+ privacyUrl: string
20
+ /** `''`, or a Google tag id: `GTM-…`, `G-…`, `GT-…`, `AW-…`, `DC-…`. */
21
+ googleTag: string
22
+ }
23
+
24
+ /**
25
+ * A PATCH of a project's branding: every field optional, and an absent field keeps its current
26
+ * value. The platform merges it over what is stored, validates the result as a whole with the
27
+ * rules the web form uses, and answers the merged record.
28
+ */
29
+ export interface ConnectProjectBrandingSave extends Partial<ConnectProjectBranding> {}
@@ -169,28 +169,6 @@ export const MODEL_TIER_ROLES: Record<string, ModelTier> = {
169
169
  'picker': ModelTier.Cheap,
170
170
  }
171
171
 
172
- export const tierOfRole = (role: string): ModelTier =>
173
- MODEL_TIER_ROLES[role] ?? ModelTier.Standard
174
-
175
- /**
176
- * Pick the best tier a parent actually offers, never below what was asked for by more than the
177
- * offer allows.
178
- *
179
- * A parent that offers only one model answers every task with it; a parent that offers two gets
180
- * the nearer of the two. Silence is not an option — a task the connector cannot place is a run
181
- * that stops.
182
- */
183
- export const clampTier = (wanted: ModelTier, offered: ModelTier[]): ModelTier => {
184
- if (offered.length < 1 || offered.includes(wanted)) return wanted
185
- const ladder = [ModelTier.Strong, ModelTier.Standard, ModelTier.Cheap]
186
- const from = ladder.indexOf(wanted)
187
- // Prefer a stronger model over a weaker one: the task was sized for `wanted`.
188
- for (let i = from; i >= 0; --i) if (offered.includes(ladder[i])) return ladder[i]
189
- for (let i = from + 1; i < ladder.length; ++i) if (offered.includes(ladder[i])) return ladder[i]
190
-
191
- return wanted
192
- }
193
-
194
172
  /** What the model task asks the parent's subagent to produce. */
195
173
  export enum ModelTaskMode {
196
174
  /** Prose or code. */
@@ -434,3 +412,6 @@ export const connect = Object.freeze({
434
412
  resume: 'viable:manager-api:connect:pipeline:resume',
435
413
  }),
436
414
  })
415
+
416
+ /** Tier → the model the parent will run it on. Free-form; display only. */
417
+ export const ModelTierValues = Object.values(ModelTier)