@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
@@ -0,0 +1,7 @@
1
+ import { conversionDocHelper } from './docs.js'
2
+
3
+ /** @deprecated compat:factory-refactor — use `conversionDocHelper.conversionStoryDoc(…)` */
4
+ export const conversionStoryDoc = (code: string): string => conversionDocHelper.conversionStoryDoc(code)
5
+
6
+ /** @deprecated compat:factory-refactor — use `conversionDocHelper.conversionSeedDoc(…)` */
7
+ export const conversionSeedDoc = (name: string): string => conversionDocHelper.conversionSeedDoc(name)
@@ -6,6 +6,8 @@
6
6
  * the fields it is missing were absent because they had not been designed and which because the
7
7
  * shape did not have them yet. Those are different questions with different answers.
8
8
  */
9
+ import type { StoryDesignRuntime } from './types.js'
10
+
9
11
  export const STORY_DESIGN_VERSION = 1
10
12
 
11
13
  /** How far a design may drift from the project it was written against before it is stale. */
@@ -21,3 +23,49 @@ export enum DesignStaleness {
21
23
  /** The generated tree moved under it. Re-run the stages that read the tree. */
22
24
  Tree = 'tree',
23
25
  }
26
+
27
+ /** Who acts in a story. */
28
+ export enum StoryActor {
29
+ /** A person, in one of the four areas. Every story until something says otherwise. */
30
+ Human = 'human',
31
+ /**
32
+ * The application's own LLM agent.
33
+ *
34
+ * An EPHEMERAL role: it holds no permissions and has no area of its own, because there is nobody
35
+ * to sign in as it. A story belongs to it when the work is the agent's — the human half is a
36
+ * separate, paired story that starts the work and watches it.
37
+ */
38
+ Agent = 'agent',
39
+ /** A queue consumer. Ephemeral in exactly the same sense. */
40
+ Worker = 'worker',
41
+ }
42
+
43
+ /** The ephemeral actors — those a permission may never be granted to. */
44
+ export const EPHEMERAL_ACTORS: StoryActor[] = [StoryActor.Agent, StoryActor.Worker]
45
+
46
+ /**
47
+ * The three shapes that can perform work with a model, cheapest first.
48
+ *
49
+ * They are not interchangeable and the difference is who decides the order. A CALL is one prompt
50
+ * and one answer; a PIPELINE runs steps this application named in advance; an AGENT is handed
51
+ * tools and works out its own path. Each step up buys capability with latency, money and a
52
+ * failure mode, so the right answer is the simplest shape that does the job — and for most work
53
+ * that asks for a model at all, it is a call.
54
+ */
55
+ export enum StoryAgentKind {
56
+ /** One prompt, one answer, optionally schema-shaped. The default. */
57
+ Call = 'call',
58
+ /** Ordered steps decided by the application, not by the model. */
59
+ Pipeline = 'pipeline',
60
+ /** The model chooses its own path through the tools it was given. */
61
+ Agent = 'agent',
62
+ }
63
+
64
+ /** What a design carries when nobody has asked the question — and when the answer was "no". */
65
+ export const NO_RUNTIME: StoryDesignRuntime = {
66
+ actor: StoryActor.Human,
67
+ worker: false,
68
+ jobs: [],
69
+ agents: [],
70
+ kv: false,
71
+ }
@@ -1,259 +1,34 @@
1
- import { SpecCategory } from '../ba/consts.js'
2
- import type { Entity, StoryComponent, StoryScreen, UserStory } from '../ba/types.js'
3
- import { DesignStaleness, STORY_DESIGN_VERSION } from './consts.js'
1
+ import type { UserStory } from '../ba/types.js'
2
+ import type { DesignStaleness } from './consts.js'
3
+ import { storyDesignHelper } from './story.js'
4
4
  import type { StoryDesign } from './types.js'
5
5
 
6
- /**
7
- * The in-memory aggregate the coders take, derived from the design ALONE.
8
- *
9
- * Derived rather than stored, and derived HERE rather than at the platform: the aggregate is what
10
- * every generation helper reads, and a second place that assembles it is a second place that can
11
- * assemble it differently. The `code` in particular is load-bearing - the scaffold stamps every
12
- * placeholder it draws with it, so a run keyed by anything else cannot recognise its own
13
- * reservation.
14
- *
15
- * For a context with no card behind it. Where a story card exists, `userStoryOf(card, design)` is
16
- * the reader: the card wins on the narrative, code, area and actor, which a person may have
17
- * changed since the design was written.
18
- */
19
- export const userStoryOfDesign = (design: StoryDesign): UserStory => {
20
- const componentOf = (name: string): StoryComponent | null => {
21
- const component = design.components.find(entry => entry.name === name)
22
- if (component == null) {
23
- return null
24
- }
6
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.userStoryOfDesign(…)` */
7
+ export const userStoryOfDesign = (design: StoryDesign): UserStory => storyDesignHelper.userStoryOfDesign(design)
25
8
 
26
- return {
27
- name: component.name,
28
- description: '',
29
- specs: {
30
- [SpecCategory.UX]: component.specs.ux,
31
- [SpecCategory.UI]: component.specs.ui,
32
- } as Record<SpecCategory, string>,
33
- entities: component.entities.map(entity => ({
34
- name: entity, description: '', attributes: [],
35
- } satisfies Entity)),
36
- }
37
- }
9
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.screenMapOf(…)` */
10
+ export const screenMapOf = (design: StoryDesign): Record<string, string[]> => storyDesignHelper.screenMapOf(design)
38
11
 
39
- const screens: StoryScreen[] = design.screens.map(screen => ({
40
- name: screen.name,
41
- description: '',
42
- ...(screen.section != null ? { section: screen.section } : {}),
43
- specs: {
44
- [SpecCategory.UX]: screen.specs.ux,
45
- [SpecCategory.UI]: screen.specs.ui,
46
- } as Record<SpecCategory, string>,
47
- components: screen.components
48
- .map(componentOf)
49
- .filter((component): component is StoryComponent => component != null),
50
- }))
12
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.designPaths(…)` */
13
+ export const designPaths = (design: StoryDesign): string[] => storyDesignHelper.designPaths(design)
51
14
 
52
- return {
53
- story: design.narrative,
54
- code: design.code,
55
- area: design.area,
56
- entity: null as unknown as string,
57
- entities: design.entities.map(entity => ({
58
- name: entity.name, description: entity.description, attributes: [],
59
- } satisfies Entity)),
60
- screens,
61
- }
62
- }
63
-
64
- /** Screen name to component names - the shape every UX and UI prompt takes. */
65
- export const screenMapOf = (design: StoryDesign): Record<string, string[]> =>
66
- design.screens.reduce<Record<string, string[]>>((map, screen) => {
67
- map[screen.name] = [...screen.components]
68
-
69
- return map
70
- }, {})
71
-
72
- /** Every path the design names, in the order the implementation stage visits them. */
73
- export const designPaths = (design: StoryDesign): string[] => [
74
- ...design.types.map(entry => entry.path),
75
- ...design.resources.map(entry => entry.path),
76
- ...design.models.map(entry => entry.path),
77
- ...design.api.map(entry => entry.path),
78
- ...design.stores.map(entry => entry.path),
79
- ...design.components.flatMap(entry => [entry.viewModelPath, entry.path]),
80
- ...design.screens.map(entry => entry.path),
81
- ]
82
-
83
- /**
84
- * How far the world has moved since the design was written.
85
- *
86
- * Ordered by severity, and each answer has one correct reaction: a version mismatch REFUSES, a
87
- * changed narrative re-designs, a changed project warns and continues, a moved tree re-runs only
88
- * the stages that read the tree. Collapsing them into a boolean would make every one of those the
89
- * most expensive of the four.
90
- */
15
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.designStaleness(…)` */
91
16
  export const designStaleness = (
92
17
  design: StoryDesign,
93
18
  now: { narrativeHash: string, projectHash: string, registryHash: string },
94
- ): DesignStaleness => {
95
- if (design.version !== STORY_DESIGN_VERSION) {
96
- return DesignStaleness.Version
97
- }
98
- if (design.provenance.narrativeHash !== now.narrativeHash) {
99
- return DesignStaleness.Narrative
100
- }
101
- if (design.provenance.projectHash !== now.projectHash) {
102
- return DesignStaleness.Project
103
- }
104
- if (design.provenance.registryHash !== now.registryHash) {
105
- return DesignStaleness.Tree
106
- }
107
-
108
- return DesignStaleness.Fresh
109
- }
110
-
111
- /**
112
- * A stable, dependency-free hash of arbitrary text.
113
- *
114
- * FNV-1a, because what is being detected is "did this change", not "is this authentic" - and a
115
- * design record must be readable by a browser bundle, a worker and a test with no crypto import
116
- * between them.
117
- */
118
- export const designHash = (...parts: Array<string | undefined>): string => {
119
- const text = parts.filter(part => part != null).join(' ')
120
- let hash = 0x811c9dc5
121
- for (let at = 0; at < text.length; at += 1) {
122
- hash ^= text.charCodeAt(at)
123
- hash = Math.imul(hash, 0x01000193) >>> 0
124
- }
19
+ ): DesignStaleness => storyDesignHelper.designStaleness(design, now)
125
20
 
126
- return hash.toString(16).padStart(8, '0')
127
- }
21
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.designHash(…)` */
22
+ export const designHash = (...parts: Array<string | undefined>): string => storyDesignHelper.designHash(...parts)
128
23
 
129
- /** An empty design, so every stage can fill its own slice without inventing the shape. */
24
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.emptyStoryDesign(…)` */
130
25
  export const emptyStoryDesign = (
131
26
  input: Pick<StoryDesign, 'code' | 'narrative' | 'area'> & Partial<StoryDesign>,
132
- ): StoryDesign => ({
133
- version: STORY_DESIGN_VERSION,
134
- reserved: {},
135
- entities: [],
136
- screens: [],
137
- components: [],
138
- types: [],
139
- resources: [],
140
- models: [],
141
- api: [],
142
- stores: [],
143
- transitions: [],
144
- access: { list: {}, resolvedAt: {} },
145
- provenance: {
146
- designedAt: new Date().toISOString(),
147
- narrativeHash: '',
148
- projectHash: '',
149
- registryHash: '',
150
- paths: [],
151
- },
152
- ...input,
153
- })
154
-
155
- /**
156
- * The design, small enough to hand a model, complete enough to act on.
157
- *
158
- * What a free-flight agent needs is names and counts: which screens exist, what is on them, which
159
- * types and endpoints the story implies. The UX and UI prose is the bulk of a design and none of
160
- * it helps an agent decide what to do next, so it is deliberately left out.
161
- */
162
- export const designDigest = (design: StoryDesign): string => {
163
- const lines: string[] = [
164
- `Story ${design.code} (${design.area}): ${design.narrative}`,
165
- ]
166
- if (design.reserved.section != null || design.reserved.screen != null) {
167
- lines.push(`Reserved: section=${design.reserved.section ?? '-'} screen=${design.reserved.screen ?? '-'}`)
168
- }
169
- lines.push('', 'Screens:')
170
- for (const screen of design.screens) {
171
- lines.push(
172
- `- ${screen.name} -> ${screen.path} (alias ${screen.alias}`
173
- + `${screen.section != null ? `, section ${screen.section}` : ''}`
174
- + `${screen.adopted ? ', existing' : ''}) renders ${screen.components.join(', ') || '-'}`,
175
- )
176
- }
177
- lines.push('', 'Components:')
178
- for (const component of design.components) {
179
- lines.push(
180
- `- ${component.name} -> ${component.path} (+ ${component.viewModelPath})`
181
- + `${component.entities.length > 0 ? ` about ${component.entities.join(', ')}` : ''}`,
182
- )
183
- }
184
- lines.push('', 'Data layer:')
185
- for (const type of design.types) {
186
- lines.push(`- type ${type.path} (${type.entity})`)
187
- }
188
- for (const resource of design.resources) {
189
- lines.push(`- resource ${resource.path} (${resource.entity})`)
190
- }
191
- for (const model of design.models) {
192
- lines.push(`- model ${model.path} (${model.entities.join(', ')})`)
193
- }
194
- for (const api of design.api) {
195
- lines.push(
196
- `- api ${api.path} (${api.entity})`
197
- + `${api.endpoints.length > 0 ? `: ${api.endpoints.map(e => e.alias).join(', ')}` : ''}`,
198
- )
199
- }
200
- for (const store of design.stores) {
201
- lines.push(`- store ${store.path} (${store.entity})`)
202
- }
203
- if (design.transitions.length > 0) {
204
- lines.push('', 'Transitions:')
205
- for (const transition of design.transitions) {
206
- lines.push(`- ${transition.from} -> ${transition.to} (${transition.action})`)
207
- }
208
- }
209
- const guarded = Object.keys(design.access.list)
210
- if (guarded.length > 0) {
211
- lines.push('', `Access declared on: ${guarded.join(', ')}`)
212
- }
213
-
214
- return lines.join('\n')
215
- }
216
-
217
- /**
218
- * Apply a patch to a design, refusing anything that would rename an allocated artifact.
219
- *
220
- * A path or an alias is registry-owned. Changing one behind the registry's back leaves two
221
- * spellings of the same thing in a project, and no number of fix attempts repairs that — the
222
- * compiler sees a missing module and the fixer, reasonably, renames the reference to match
223
- * whichever spelling it found first.
224
- *
225
- * Returns the reason as a STRING when it refuses, so a model can read it and take the other route.
226
- */
227
- export const amendStoryDesign = (
228
- design: StoryDesign, patch: Record<string, unknown>,
229
- ): StoryDesign | string => {
230
- const forbidden: string[] = []
231
-
232
- const checkList = <T extends { path?: string, alias?: string, name?: string }>(
233
- key: string, current: T[], next: unknown,
234
- ): void => {
235
- if (!Array.isArray(next)) return
236
- for (const entry of next as T[]) {
237
- const known = current.find(item => item.name === entry.name)
238
- if (known == null) continue
239
- if (entry.path != null && known.path != null && entry.path !== known.path) {
240
- forbidden.push(`${key}.${String(entry.name)}.path`)
241
- }
242
- if (entry.alias != null && known.alias != null && entry.alias !== known.alias) {
243
- forbidden.push(`${key}.${String(entry.name)}.alias`)
244
- }
245
- }
246
- }
247
-
248
- checkList('screens', design.screens, patch.screens)
249
- checkList('components', design.components, patch.components)
27
+ ): StoryDesign => storyDesignHelper.emptyStoryDesign(input)
250
28
 
251
- if (forbidden.length > 0) {
252
- return `Refused: ${forbidden.join(', ')} name artifacts the project's registry allocated. `
253
- + 'A design may change what a screen or a component DOES - its UX, its UI, its section, its '
254
- + 'endpoints - but never where it lives or what it is called. Rename through the registry, '
255
- + 'or leave the name alone and change the behaviour.'
256
- }
29
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.designDigest(…)` */
30
+ export const designDigest = (design: StoryDesign): string => storyDesignHelper.designDigest(design)
257
31
 
258
- return { ...design, ...patch } as StoryDesign
259
- }
32
+ /** @deprecated compat:factory-refactor — use `storyDesignHelper.amendStoryDesign(…)` */
33
+ export const amendStoryDesign = (design: StoryDesign, patch: Record<string, unknown>): StoryDesign | string =>
34
+ storyDesignHelper.amendStoryDesign(design, patch)
@@ -1,5 +1,8 @@
1
1
  export * from './consts.js'
2
+ export * from './story.js'
2
3
  export * from './helpers.js'
3
4
  export * from './schemas.js'
4
5
  export type * from './types.js'
6
+ export type * from './story/types.js'
7
+ export type * from './runtime/types.js'
5
8
  export * from './runtime.js'
@@ -0,0 +1,14 @@
1
+ import type { StoryActor } from '../consts.js'
2
+ import type { StoryDesignRuntime } from '../types.js'
3
+
4
+ /**
5
+ * What a story needs BEYOND a screen, an endpoint and a table — and the standing answer is
6
+ * "nothing". See `design/runtime.ts`.
7
+ */
8
+ export interface StoryRuntimeHelper {
9
+ isEphemeralActor: (actor?: StoryActor) => boolean
10
+ /** Read the gate off a design, total over a design that predates it. */
11
+ runtimeOf: (design?: { runtime?: StoryDesignRuntime }) => StoryDesignRuntime
12
+ /** Whether anything at all was asked for — the one check every new step is gated on. */
13
+ needsRuntime: (runtime: StoryDesignRuntime) => boolean
14
+ }
@@ -14,129 +14,31 @@
14
14
  * emits exactly the tree it emitted before any of this existed.
15
15
  */
16
16
 
17
- /** Who acts in a story. */
18
- export enum StoryActor {
19
- /** A person, in one of the four areas. Every story until something says otherwise. */
20
- Human = 'human',
21
- /**
22
- * The application's own LLM agent.
23
- *
24
- * An EPHEMERAL role: it holds no permissions and has no area of its own, because there is nobody
25
- * to sign in as it. A story belongs to it when the work is the agent's — the human half is a
26
- * separate, paired story that starts the work and watches it.
27
- */
28
- Agent = 'agent',
29
- /** A queue consumer. Ephemeral in exactly the same sense. */
30
- Worker = 'worker',
31
- }
32
-
33
- /** The ephemeral actors — those a permission may never be granted to. */
34
- export const EPHEMERAL_ACTORS: StoryActor[] = [StoryActor.Agent, StoryActor.Worker]
17
+ import { EPHEMERAL_ACTORS, NO_RUNTIME, StoryActor } from './consts.js'
18
+ import type { StoryDesignRuntime } from './types.js'
19
+ import type { StoryRuntimeHelper } from './runtime/types.js'
35
20
 
36
- export const isEphemeralActor = (actor?: StoryActor): boolean =>
37
- actor != null && EPHEMERAL_ACTORS.includes(actor)
21
+ export const createStoryRuntimeHelper = (): StoryRuntimeHelper => {
22
+ const isEphemeralActor = (actor?: StoryActor): boolean =>
23
+ actor != null && EPHEMERAL_ACTORS.includes(actor)
38
24
 
39
- /** One queued unit of work. */
40
- export interface StoryDesignJob {
41
- /** The queue it is enqueued onto. */
42
- queue: string
43
- /** The job name, which becomes the backend-only `job:<name>` protocol alias. */
44
- name: string
45
- /** The processor module, relative to the worker package's `src`. */
46
- path: string
47
- /** What it does, in one sentence, for the coder that writes the processor. */
48
- purpose: string
49
- /**
50
- * Why it may not run on the request path.
51
- *
52
- * Recorded because it is the thing a later run has to be able to disagree with. "It might be
53
- * slow" is not a reason; "it calls a model" and "it walks every row of a table the user owns"
54
- * are.
55
- */
56
- reason: string
57
- /**
58
- * Whether running it twice is safe, and how it was made so.
59
- *
60
- * A worker can die mid-job; the lock expires and the step re-runs. There is no way to make that
61
- * automatic, so the answer is written down where the processor's author has to read it.
62
- */
63
- idempotency: string
64
- }
25
+ const runtimeOf = (design?: { runtime?: StoryDesignRuntime }): StoryDesignRuntime =>
26
+ design?.runtime ?? NO_RUNTIME
65
27
 
66
- /** An LLM agent or pipeline generated INTO the target. */
67
- export interface StoryDesignAgent {
68
- /** Its alias in the target's own agent registry. */
69
- alias: string
70
- /** The module, relative to the shared backend package's `src`. */
71
- path: string
72
- /** What it is for. */
73
- purpose: string
74
- /** Which of the three shapes this is — a call, a pipeline, or a tool-using agent. */
75
- kind: StoryAgentKind
76
- /** The job that runs it — an agent is never invoked on the request path. */
77
- job?: string
78
- }
28
+ const needsRuntime = (runtime: StoryDesignRuntime): boolean =>
29
+ runtime.worker || runtime.jobs.length > 0 || runtime.agents.length > 0
79
30
 
80
- /**
81
- * The three shapes that can perform work with a model, cheapest first.
82
- *
83
- * They are not interchangeable and the difference is who decides the order. A CALL is one prompt
84
- * and one answer; a PIPELINE runs steps this application named in advance; an AGENT is handed
85
- * tools and works out its own path. Each step up buys capability with latency, money and a
86
- * failure mode, so the right answer is the simplest shape that does the job — and for most work
87
- * that asks for a model at all, it is a call.
88
- */
89
- export enum StoryAgentKind {
90
- /** One prompt, one answer, optionally schema-shaped. The default. */
91
- Call = 'call',
92
- /** Ordered steps decided by the application, not by the model. */
93
- Pipeline = 'pipeline',
94
- /** The model chooses its own path through the tools it was given. */
95
- Agent = 'agent',
31
+ return { isEphemeralActor, runtimeOf, needsRuntime }
96
32
  }
97
33
 
98
- /**
99
- * The gate, as the design stage recorded it.
100
- *
101
- * Absent on a design written before this existed, and read as "none of it" everywhere — which is
102
- * both the safe answer and the true one for every story developed until now.
103
- */
104
- export interface StoryDesignRuntime {
105
- actor: StoryActor
106
- /** Whether this story puts work on the queue at all. */
107
- worker: boolean
108
- jobs: StoryDesignJob[]
109
- agents: StoryDesignAgent[]
110
- /**
111
- * Whether this story's data belongs in the key/value store rather than in Postgres.
112
- *
113
- * Postgres is the default and being wrong with it is cheap. This is true only for data with an
114
- * expiry, a lock, a counter or a fan-out, and a bounded, namespaced key set.
115
- */
116
- kv: boolean
117
- /**
118
- * Which HUMAN story shows the progress of this story's queued work.
119
- *
120
- * An ephemeral actor cannot report to anybody: there is no screen it owns and no session it runs
121
- * in. A story that enqueues work therefore names the story whose screen carries the job feed, and
122
- * the permission to enqueue and to watch is granted to that area's role.
123
- */
124
- feedback?: string
125
- }
34
+ export const storyRuntimeHelper = createStoryRuntimeHelper()
126
35
 
127
- /** What a design carries when nobody has asked the question — and when the answer was "no". */
128
- export const NO_RUNTIME: StoryDesignRuntime = {
129
- actor: StoryActor.Human,
130
- worker: false,
131
- jobs: [],
132
- agents: [],
133
- kv: false,
134
- }
36
+ /** @deprecated compat:factory-refactor — use `storyRuntimeHelper.isEphemeralActor(…)` */
37
+ export const isEphemeralActor = (actor?: StoryActor): boolean => storyRuntimeHelper.isEphemeralActor(actor)
135
38
 
136
- /** Read the gate off a design, total over a design that predates it. */
39
+ /** @deprecated compat:factory-refactor — use `storyRuntimeHelper.runtimeOf(…)` */
137
40
  export const runtimeOf = (design?: { runtime?: StoryDesignRuntime }): StoryDesignRuntime =>
138
- design?.runtime ?? NO_RUNTIME
41
+ storyRuntimeHelper.runtimeOf(design)
139
42
 
140
- /** Whether anything at all was asked for — the one check every new step is gated on. */
141
- export const needsRuntime = (runtime: StoryDesignRuntime): boolean =>
142
- runtime.worker || runtime.jobs.length > 0 || runtime.agents.length > 0
43
+ /** @deprecated compat:factory-refactor — use `storyRuntimeHelper.needsRuntime(…)` */
44
+ export const needsRuntime = (runtime: StoryDesignRuntime): boolean => storyRuntimeHelper.needsRuntime(runtime)
@@ -1,9 +1,8 @@
1
1
  import type { JSONSchemaType } from 'ajv'
2
2
 
3
3
  import { ProjectArea } from '../areas/consts.js'
4
- import { StoryActor, StoryAgentKind } from './runtime.js'
5
- import type { StoryDesignAgent, StoryDesignJob } from './runtime.js'
6
- import type { StoryDesign } from './types.js'
4
+ import { StoryActor, StoryAgentKind } from './consts.js'
5
+ import type { StoryDesign, RuntimeDecision } from './types.js'
7
6
 
8
7
  /**
9
8
  * The design shape, validated where the shape is DEFINED.
@@ -375,10 +374,3 @@ export const RuntimeDecisionSchema = {
375
374
  // is that they are usually empty.
376
375
  } as unknown as JSONSchemaType<RuntimeDecision>
377
376
 
378
- /** What the gate answers with — the model's half of {@link StoryDesignRuntime}. */
379
- export interface RuntimeDecision {
380
- kv: boolean
381
- feedback: string
382
- jobs: StoryDesignJob[]
383
- agents: StoryDesignAgent[]
384
- }
@@ -0,0 +1,67 @@
1
+ import type { UserStory } from '../../ba/types.js'
2
+ import type { DesignStaleness } from '../consts.js'
3
+ import type { StoryDesign } from '../types.js'
4
+
5
+ /** Reading, digesting, hashing and amending a story's design record. */
6
+ export interface StoryDesignHelper {
7
+ /**
8
+ * The in-memory aggregate the coders take, derived from the design ALONE.
9
+ *
10
+ * Derived rather than stored, and derived HERE rather than at the platform: the aggregate is what
11
+ * every generation helper reads, and a second place that assembles it is a second place that can
12
+ * assemble it differently. The `code` in particular is load-bearing - the scaffold stamps every
13
+ * placeholder it draws with it, so a run keyed by anything else cannot recognise its own
14
+ * reservation.
15
+ *
16
+ * For a context with no card behind it. Where a story card exists, `userStoryOf(card, design)` is
17
+ * the reader: the card wins on the narrative, code, area and actor, which a person may have
18
+ * changed since the design was written.
19
+ */
20
+ userStoryOfDesign: (design: StoryDesign) => UserStory
21
+ /** Screen name to component names - the shape every UX and UI prompt takes. */
22
+ screenMapOf: (design: StoryDesign) => Record<string, string[]>
23
+ /** Every path the design names, in the order the implementation stage visits them. */
24
+ designPaths: (design: StoryDesign) => string[]
25
+ /**
26
+ * How far the world has moved since the design was written.
27
+ *
28
+ * Ordered by severity, and each answer has one correct reaction: a version mismatch REFUSES, a
29
+ * changed narrative re-designs, a changed project warns and continues, a moved tree re-runs only
30
+ * the stages that read the tree. Collapsing them into a boolean would make every one of those the
31
+ * most expensive of the four.
32
+ */
33
+ designStaleness: (
34
+ design: StoryDesign, now: { narrativeHash: string, projectHash: string, registryHash: string },
35
+ ) => DesignStaleness
36
+ /**
37
+ * A stable, dependency-free hash of arbitrary text.
38
+ *
39
+ * FNV-1a, because what is being detected is "did this change", not "is this authentic" - and a
40
+ * design record must be readable by a browser bundle, a worker and a test with no crypto import
41
+ * between them.
42
+ */
43
+ designHash: (...parts: Array<string | undefined>) => string
44
+ /** An empty design, so every stage can fill its own slice without inventing the shape. */
45
+ emptyStoryDesign: (
46
+ input: Pick<StoryDesign, 'code' | 'narrative' | 'area'> & Partial<StoryDesign>,
47
+ ) => StoryDesign
48
+ /**
49
+ * The design, small enough to hand a model, complete enough to act on.
50
+ *
51
+ * What a free-flight agent needs is names and counts: which screens exist, what is on them, which
52
+ * types and endpoints the story implies. The UX and UI prose is the bulk of a design and none of
53
+ * it helps an agent decide what to do next, so it is deliberately left out.
54
+ */
55
+ designDigest: (design: StoryDesign) => string
56
+ /**
57
+ * Apply a patch to a design, refusing anything that would rename an allocated artifact.
58
+ *
59
+ * A path or an alias is registry-owned. Changing one behind the registry's back leaves two
60
+ * spellings of the same thing in a project, and no number of fix attempts repairs that — the
61
+ * compiler sees a missing module and the fixer, reasonably, renames the reference to match
62
+ * whichever spelling it found first.
63
+ *
64
+ * Returns the reason as a STRING when it refuses, so a model can read it and take the other route.
65
+ */
66
+ amendStoryDesign: (design: StoryDesign, patch: Record<string, unknown>) => StoryDesign | string
67
+ }