@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,35 @@
1
+ import type { TargetLayout } from '../consts.js'
2
+ import type { TargetLayoutManifest } from '../types.js'
3
+
4
+ /** The layouts a target tree may be in: what each asserts, and which one a tree is. */
5
+ export interface TargetLayoutHelper {
6
+ /** What one layout asserts. */
7
+ targetManifest: (layout: TargetLayout) => TargetLayoutManifest
8
+ /**
9
+ * Whether a tree of this layout can still be GENERATED INTO.
10
+ *
11
+ * A legacy target is served, built and run exactly like any other — that is the whole point of
12
+ * verifying it against its own manifest. What no longer works on it is code generation: every
13
+ * path builder, every stamped import specifier and the whole `docs/` metadata tree name the
14
+ * current layout's packages, so a story implemented into a legacy tree writes files into
15
+ * directories its workspace does not contain. That fails silently — the build succeeds, the
16
+ * story completes and the application does not change — which is why the platform refuses
17
+ * instead, and names re-initialization as the one cure.
18
+ *
19
+ * `undefined` reads as current: a publisher that predates layout reporting omits it, and reading
20
+ * that silence as legacy would refuse development for every slot already in the cluster.
21
+ */
22
+ isLegacyLayout: (layout: TargetLayout | string | undefined | null) => boolean
23
+ /**
24
+ * Which layout a tree is in, from its files alone — IO-free, like everything else here.
25
+ *
26
+ * A tree that shows neither probe is reported as the current layout: it is not a target at all,
27
+ * and the integrity report is what has to say so, in the vocabulary of the layout the platform
28
+ * generates today.
29
+ */
30
+ detectTargetLayout: (files: Record<string, string | null>) => TargetLayout
31
+ /** `<slug>-<package>` — the only way a workspace package is ever named, in either layout. */
32
+ targetPackageName: (slug: string, pkg: string) => string
33
+ /** Everything one package must declare, once the root manifest has named the slug. */
34
+ targetRequiredDeps: (slug: string, pkg: string, layout?: TargetLayout) => string[]
35
+ }
@@ -0,0 +1,39 @@
1
+ import { TARGET_CURRENT_LAYOUT, TargetLayout } from './consts.js'
2
+ import type { TargetLayoutManifest } from './types.js'
3
+ import { TARGET_LAYOUTS } from './layout/consts.js'
4
+ import type { TargetLayoutHelper } from './layout/types.js'
5
+
6
+ export const createTargetLayoutHelper = (): TargetLayoutHelper => {
7
+ const targetManifest = (layout: TargetLayout): TargetLayoutManifest =>
8
+ TARGET_LAYOUTS[layout]
9
+
10
+ const isLegacyLayout = (layout: TargetLayout | string | undefined | null): boolean =>
11
+ layout != null && layout !== TARGET_CURRENT_LAYOUT
12
+
13
+ const detectTargetLayout = (files: Record<string, string | null>): TargetLayout => {
14
+ for (const manifest of Object.values(TARGET_LAYOUTS)) {
15
+ if (files[manifest.probe] != null) {
16
+ return manifest.layout
17
+ }
18
+ }
19
+
20
+ return TARGET_CURRENT_LAYOUT
21
+ }
22
+
23
+ const targetPackageName = (slug: string, pkg: string): string => `${slug}-${pkg}`
24
+
25
+ const targetRequiredDeps = (
26
+ slug: string, pkg: string, layout: TargetLayout = TARGET_CURRENT_LAYOUT
27
+ ): string[] => {
28
+ const manifest = targetManifest(layout)
29
+
30
+ return [
31
+ ...(manifest.requiredDeps[pkg] ?? []),
32
+ ...(manifest.workspaceDeps[pkg] ?? []).map(dep => targetPackageName(slug, dep)),
33
+ ]
34
+ }
35
+
36
+ return { targetManifest, isLegacyLayout, detectTargetLayout, targetPackageName, targetRequiredDeps }
37
+ }
38
+
39
+ export const targetLayoutHelper = createTargetLayoutHelper()
@@ -1,4 +1,4 @@
1
- import type { IntegrityRule, TargetLayout } from './consts.js'
1
+ import { type IntegrityRule, TargetLayout } from './consts.js'
2
2
 
3
3
  /** One reason a tree was refused. */
4
4
  export interface IntegrityViolation {
@@ -34,4 +34,39 @@ export interface TargetIntegrityReport {
34
34
  * The file map handed to the verifier: every path in `TARGET_INTEGRITY_FILES`, with `null` for
35
35
  * one that could not be read. The verifier does no IO — see `verifyTargetShape`.
36
36
  */
37
- export type TargetFileMap = Record<string, string | null>
37
+ export interface TargetFileMap {
38
+ [path: string]: string | null
39
+ }
40
+
41
+ /**
42
+ * Everything one layout asserts about a tree.
43
+ *
44
+ * One record per layout rather than a set of parallel constants, because the rules are the same
45
+ * questions asked of a different package set: a rule that exists for one layout and is forgotten
46
+ * for the other is a hole that nothing fails on.
47
+ */
48
+ export interface TargetLayoutManifest {
49
+ layout: TargetLayout
50
+ /** Directory holding the workspace packages, relative to the sandbox root. */
51
+ dir: string
52
+ /** Package directory names, in build order. */
53
+ packages: readonly string[]
54
+ /** The one file whose presence identifies this layout and appears in no other. */
55
+ probe: string
56
+ /** Every file the verifier reads for this layout. */
57
+ files: readonly string[]
58
+ /** Files no user-facing write may touch in a tree of this layout. */
59
+ protectedFiles: readonly string[]
60
+ /** The exact `scripts.build` each package must declare. */
61
+ buildScripts: Readonly<Record<string, string>>
62
+ /** Framework dependencies without which a package cannot be the generated app. */
63
+ requiredDeps: Readonly<Record<string, readonly string[]>>
64
+ /** The workspace siblings each package must depend on. */
65
+ workspaceDeps: Readonly<Record<string, readonly string[]>>
66
+ /** The glob spelling of the root manifest's workspace list. */
67
+ workspaceGlob: string
68
+ /** The written-out spelling of the same list. */
69
+ workspaceEntries: readonly string[]
70
+ /** Markers proving an entry file is still the framework's entry, keyed by file. */
71
+ markers: Readonly<Record<string, readonly string[]>>
72
+ }
@@ -0,0 +1,21 @@
1
+ import type { TargetLayout } from './consts.js'
2
+ import { targetLayoutHelper } from './layout.js'
3
+ import type { TargetLayoutManifest } from './types.js'
4
+
5
+ /** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetManifest(…)` */
6
+ export const targetManifest = (layout: TargetLayout): TargetLayoutManifest => targetLayoutHelper.targetManifest(layout)
7
+
8
+ /** @deprecated compat:factory-refactor — use `targetLayoutHelper.isLegacyLayout(…)` */
9
+ export const isLegacyLayout = (layout: TargetLayout | string | undefined | null): boolean =>
10
+ targetLayoutHelper.isLegacyLayout(layout)
11
+
12
+ /** @deprecated compat:factory-refactor — use `targetLayoutHelper.detectTargetLayout(…)` */
13
+ export const detectTargetLayout = (files: Record<string, string | null>): TargetLayout =>
14
+ targetLayoutHelper.detectTargetLayout(files)
15
+
16
+ /** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetPackageName(…)` */
17
+ export const targetPackageName = (slug: string, pkg: string): string => targetLayoutHelper.targetPackageName(slug, pkg)
18
+
19
+ /** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetRequiredDeps(…)` */
20
+ export const targetRequiredDeps = (slug: string, pkg: string, layout?: TargetLayout): string[] =>
21
+ targetLayoutHelper.targetRequiredDeps(slug, pkg, layout)
@@ -0,0 +1,26 @@
1
+ import type { TargetFileMap, TargetIntegrityReport } from '../types.js'
2
+
3
+ /** The integrity verdict on a target tree, and its one-line-per-violation rendering. */
4
+ export interface TargetIntegrityHelper {
5
+ /**
6
+ * Decide whether a tree is the generated application, from its files alone.
7
+ *
8
+ * Pure and IO-free on purpose. The publisher reads the sandbox and calls this; a test reads
9
+ * the template and calls this; both then agree by construction. It is also why the check is
10
+ * cheap enough to sit in front of every spawn rather than only at the moments someone
11
+ * remembered to guard.
12
+ *
13
+ * The tree picks the manifest it is verified against. A slot holds the layout it was
14
+ * initialized with for the life of the project and nothing migrates it, so asserting the
15
+ * current layout unconditionally does not make the check stricter — it aims it at a tree that
16
+ * was never there, and every legacy slot answers with one `missing` violation per file it was
17
+ * never supposed to have. That refuses the application the platform itself generated.
18
+ *
19
+ * Every rule collects rather than short-circuits: a tree that fails is usually a person's
20
+ * repository, and telling them one thing at a time turns a fix into a dozen round trips
21
+ * through a pull that reverts itself each time.
22
+ */
23
+ verifyTargetShape: (files: TargetFileMap) => TargetIntegrityReport
24
+ /** One line per violation — what goes into a log, `slot.lastError`, or a build diagnostic. */
25
+ formatIntegrityReport: (report: TargetIntegrityReport) => string
26
+ }
@@ -1,221 +1,215 @@
1
- import {
2
- detectTargetLayout, IntegrityRule, TARGET_FORBIDDEN_SCRIPTS, TARGET_SLUG_PATTERN,
3
- targetManifest, targetPackageName, targetRequiredDeps
4
- } from './consts.js'
1
+ import { IntegrityRule, TARGET_FORBIDDEN_SCRIPTS, TARGET_SLUG_PATTERN } from './consts.js'
2
+ import { targetLayoutHelper } from './layout.js'
5
3
  import type { IntegrityViolation, TargetFileMap, TargetIntegrityReport } from './types.js'
6
-
7
- /**
8
- * Decide whether a tree is the generated application, from its files alone.
9
- *
10
- * Pure and IO-free on purpose. The publisher reads the sandbox and calls this; a test reads
11
- * the template and calls this; both then agree by construction. It is also why the check is
12
- * cheap enough to sit in front of every spawn rather than only at the moments someone
13
- * remembered to guard.
14
- *
15
- * The tree picks the manifest it is verified against. A slot holds the layout it was
16
- * initialized with for the life of the project and nothing migrates it, so asserting the
17
- * current layout unconditionally does not make the check stricter — it aims it at a tree that
18
- * was never there, and every legacy slot answers with one `missing` violation per file it was
19
- * never supposed to have. That refuses the application the platform itself generated.
20
- *
21
- * Every rule collects rather than short-circuits: a tree that fails is usually a person's
22
- * repository, and telling them one thing at a time turns a fix into a dozen round trips
23
- * through a pull that reverts itself each time.
24
- */
25
- export const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport => {
26
- const violations: IntegrityViolation[] = []
27
- const layout = detectTargetLayout(files)
28
- const manifest = targetManifest(layout)
29
-
30
- // Only this layout's files. The caller reads the union of every layout's list so that the
31
- // probes are in hand before the layout is known — reporting the other layout's paths as
32
- // missing would refuse both trees at once.
33
- for (const path of manifest.files) {
34
- if (files[path] == null) {
35
- violations.push({
36
- path, rule: IntegrityRule.Missing,
37
- detail: `${path} is missing — a Viable project always has it.`
38
- })
4
+ import type { TargetIntegrityHelper } from './verify/types.js'
5
+
6
+ export const createTargetIntegrityHelper = (): TargetIntegrityHelper => {
7
+ const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport => {
8
+ const violations: IntegrityViolation[] = []
9
+ const layout = targetLayoutHelper.detectTargetLayout(files)
10
+ const manifest = targetLayoutHelper.targetManifest(layout)
11
+
12
+ // Only this layout's files. The caller reads the union of every layout's list so that the
13
+ // probes are in hand before the layout is known — reporting the other layout's paths as
14
+ // missing would refuse both trees at once.
15
+ for (const path of manifest.files) {
16
+ if (files[path] == null) {
17
+ violations.push({
18
+ path, rule: IntegrityRule.Missing,
19
+ detail: `${path} is missing — a Viable project always has it.`
20
+ })
21
+ }
39
22
  }
40
- }
41
-
42
- // The slug is read once, from the root, and every package name is checked against it. A
43
- // project the user renamed is still the project; a package that does not carry the root's
44
- // name is a different tree wearing the workspace layout.
45
- const slug = checkRoot()
46
- checkInstallConfig()
47
- for (const pkg of manifest.packages) {
48
- checkPackage(pkg, slug)
49
- }
50
- checkMarkers()
51
23
 
52
- return { ok: violations.length === 0, violations, layout }
24
+ // The slug is read once, from the root, and every package name is checked against it. A
25
+ // project the user renamed is still the project; a package that does not carry the root's
26
+ // name is a different tree wearing the workspace layout.
27
+ const slug = checkRoot()
28
+ checkInstallConfig()
29
+ for (const pkg of manifest.packages) {
30
+ checkPackage(pkg, slug)
31
+ }
32
+ checkMarkers()
53
33
 
54
- function checkRoot(): string | null {
55
- const found = readJson('package.json')
56
- if (found == null) return null
34
+ return { ok: violations.length === 0, violations, layout }
57
35
 
58
- const name = typeof found.name === 'string' ? found.name : ''
59
- if (!TARGET_SLUG_PATTERN.test(name)) {
60
- violations.push({
61
- path: 'package.json', rule: IntegrityRule.PackageName,
62
- detail: `The root package name "${String(found.name)}" is not a project slug`
63
- + ` — lowercase letters, digits and inner hyphens, up to 32 characters.`
64
- })
65
- }
66
- if (found.type !== 'module') {
67
- violations.push({
68
- path: 'package.json', rule: IntegrityRule.ModuleType,
69
- detail: 'The root package must declare "type": "module".'
70
- })
71
- }
36
+ function checkRoot(): string | null {
37
+ const found = readJson('package.json')
38
+ if (found == null) return null
72
39
 
73
- // The workspace list is what makes the packages resolve to each other. Both spellings are
74
- // the same tree: the glob `create-app` emits, or the entries written out.
75
- const declared = Array.isArray(found.workspaces) ? found.workspaces as string[] : []
76
- const isGlob = declared.length === 1 && declared[0] === manifest.workspaceGlob
77
- const isExplicit = declared.length === manifest.workspaceEntries.length
78
- && manifest.workspaceEntries.every(entry => declared.includes(entry))
79
- if (!isGlob && !isExplicit) {
80
- violations.push({
81
- path: 'package.json', rule: IntegrityRule.Workspaces,
82
- detail: `The root package must declare the workspaces as ["${manifest.workspaceGlob}"]`
83
- + ` or as exactly ${manifest.workspaceEntries.join(', ')}.`
84
- })
85
- }
40
+ const name = typeof found.name === 'string' ? found.name : ''
41
+ if (!TARGET_SLUG_PATTERN.test(name)) {
42
+ violations.push({
43
+ path: 'package.json', rule: IntegrityRule.PackageName,
44
+ detail: `The root package name "${String(found.name)}" is not a project slug`
45
+ + ` — lowercase letters, digits and inner hyphens, up to 32 characters.`
46
+ })
47
+ }
48
+ if (found.type !== 'module') {
49
+ violations.push({
50
+ path: 'package.json', rule: IntegrityRule.ModuleType,
51
+ detail: 'The root package must declare "type": "module".'
52
+ })
53
+ }
86
54
 
87
- checkScripts('package.json', found)
55
+ // The workspace list is what makes the packages resolve to each other. Both spellings are
56
+ // the same tree: the glob `create-app` emits, or the entries written out.
57
+ const declared = Array.isArray(found.workspaces) ? found.workspaces as string[] : []
58
+ const isGlob = declared.length === 1 && declared[0] === manifest.workspaceGlob
59
+ const isExplicit = declared.length === manifest.workspaceEntries.length
60
+ && manifest.workspaceEntries.every(entry => declared.includes(entry))
61
+ if (!isGlob && !isExplicit) {
62
+ violations.push({
63
+ path: 'package.json', rule: IntegrityRule.Workspaces,
64
+ detail: `The root package must declare the workspaces as ["${manifest.workspaceGlob}"]`
65
+ + ` or as exactly ${manifest.workspaceEntries.join(', ')}.`
66
+ })
67
+ }
88
68
 
89
- return TARGET_SLUG_PATTERN.test(name) ? name : null
90
- }
69
+ checkScripts('package.json', found)
91
70
 
92
- /**
93
- * `bunfig.toml` decides where `bun install` fetches from and how it links.
94
- *
95
- * A registry line pointed elsewhere makes every dependency in the tree arbitrary code
96
- * regardless of how well-formed the manifests are, so it is checked as a shape rather than
97
- * a marker: nothing but the hoisted-linker install block belongs in it.
98
- */
99
- function checkInstallConfig(): void {
100
- const content = files['bunfig.toml']
101
- if (content == null) return
102
-
103
- const offending = content.split('\n')
104
- .map(line => line.trim())
105
- .filter(line => line.length > 0 && !line.startsWith('#'))
106
- .filter(line => !/^\[install\]$/.test(line) && !/^linker\s*=/.test(line))
107
-
108
- if (offending.length > 0) {
109
- violations.push({
110
- path: 'bunfig.toml', rule: IntegrityRule.InstallConfig,
111
- detail: 'bunfig.toml may only declare the hoisted install linker.'
112
- })
71
+ return TARGET_SLUG_PATTERN.test(name) ? name : null
113
72
  }
114
- }
115
73
 
116
- function checkPackage(pkg: string, slug: string | null): void {
117
- const path = `${manifest.dir}/${pkg}/package.json`
118
- const found = readJson(path)
119
- if (found == null) return
120
-
121
- // With no readable slug the name and the workspace dependencies have nothing to be checked
122
- // against; the root violation already says why, and repeating it per package is noise.
123
- if (slug != null) {
124
- const expected = targetPackageName(slug, pkg)
125
- if (found.name !== expected) {
74
+ /**
75
+ * `bunfig.toml` decides where `bun install` fetches from and how it links.
76
+ *
77
+ * A registry line pointed elsewhere makes every dependency in the tree arbitrary code
78
+ * regardless of how well-formed the manifests are, so it is checked as a shape rather than
79
+ * a marker: nothing but the hoisted-linker install block belongs in it.
80
+ */
81
+ function checkInstallConfig(): void {
82
+ const content = files['bunfig.toml']
83
+ if (content == null) return
84
+
85
+ const offending = content.split('\n')
86
+ .map(line => line.trim())
87
+ .filter(line => line.length > 0 && !line.startsWith('#'))
88
+ .filter(line => !/^\[install\]$/.test(line) && !/^linker\s*=/.test(line))
89
+
90
+ if (offending.length > 0) {
126
91
  violations.push({
127
- path, rule: IntegrityRule.PackageName,
128
- detail: `Package must be named "${expected}", not "${String(found.name)}".`
92
+ path: 'bunfig.toml', rule: IntegrityRule.InstallConfig,
93
+ detail: 'bunfig.toml may only declare the hoisted install linker.'
129
94
  })
130
95
  }
131
96
  }
132
- if (found.type !== 'module') {
133
- violations.push({
134
- path, rule: IntegrityRule.ModuleType,
135
- detail: `Package "${pkg}" must declare "type": "module".`
136
- })
137
- }
138
-
139
- const scripts = asRecord(found.scripts)
140
- if (scripts.build !== manifest.buildScripts[pkg]) {
141
- // The one the platform actually spawns.
142
- violations.push({
143
- path, rule: IntegrityRule.BuildScript,
144
- detail: `The build script of "${pkg}" must be exactly \`${manifest.buildScripts[pkg]}\`.`
145
- })
146
- }
147
- checkScripts(path, found)
148
97
 
149
- if (slug == null) return
150
-
151
- const deps = { ...asRecord(found.dependencies), ...asRecord(found.devDependencies) }
152
- for (const dep of targetRequiredDeps(slug, pkg, layout)) {
153
- if (deps[dep] == null) {
98
+ function checkPackage(pkg: string, slug: string | null): void {
99
+ const path = `${manifest.dir}/${pkg}/package.json`
100
+ const found = readJson(path)
101
+ if (found == null) return
102
+
103
+ // With no readable slug the name and the workspace dependencies have nothing to be checked
104
+ // against; the root violation already says why, and repeating it per package is noise.
105
+ if (slug != null) {
106
+ const expected = targetLayoutHelper.targetPackageName(slug, pkg)
107
+ if (found.name !== expected) {
108
+ violations.push({
109
+ path, rule: IntegrityRule.PackageName,
110
+ detail: `Package must be named "${expected}", not "${String(found.name)}".`
111
+ })
112
+ }
113
+ }
114
+ if (found.type !== 'module') {
154
115
  violations.push({
155
- path, rule: IntegrityRule.RequiredDependency,
156
- detail: `Package "${pkg}" must depend on ${dep}.`
116
+ path, rule: IntegrityRule.ModuleType,
117
+ detail: `Package "${pkg}" must declare "type": "module".`
157
118
  })
158
119
  }
159
- }
160
- }
161
120
 
162
- /** Lifecycle hooks run on `bun install`, before anything else has a chance to refuse. */
163
- function checkScripts(path: string, found: Record<string, unknown>): void {
164
- const scripts = asRecord(found.scripts)
165
- for (const hook of TARGET_FORBIDDEN_SCRIPTS) {
166
- if (scripts[hook] != null) {
121
+ const scripts = asRecord(found.scripts)
122
+ if (scripts.build !== manifest.buildScripts[pkg]) {
123
+ // The one the platform actually spawns.
167
124
  violations.push({
168
- path, rule: IntegrityRule.LifecycleScript,
169
- detail: `Lifecycle script "${hook}" is not allowed in a target project.`
125
+ path, rule: IntegrityRule.BuildScript,
126
+ detail: `The build script of "${pkg}" must be exactly \`${manifest.buildScripts[pkg]}\`.`
170
127
  })
171
128
  }
129
+ checkScripts(path, found)
130
+
131
+ if (slug == null) return
132
+
133
+ const deps = { ...asRecord(found.dependencies), ...asRecord(found.devDependencies) }
134
+ for (const dep of targetLayoutHelper.targetRequiredDeps(slug, pkg, layout)) {
135
+ if (deps[dep] == null) {
136
+ violations.push({
137
+ path, rule: IntegrityRule.RequiredDependency,
138
+ detail: `Package "${pkg}" must depend on ${dep}.`
139
+ })
140
+ }
141
+ }
172
142
  }
173
- }
174
143
 
175
- function checkMarkers(): void {
176
- for (const [path, markers] of Object.entries(manifest.markers)) {
177
- const content = files[path]
178
- if (content == null) continue
144
+ /** Lifecycle hooks run on `bun install`, before anything else has a chance to refuse. */
145
+ function checkScripts(path: string, found: Record<string, unknown>): void {
146
+ const scripts = asRecord(found.scripts)
147
+ for (const hook of TARGET_FORBIDDEN_SCRIPTS) {
148
+ if (scripts[hook] != null) {
149
+ violations.push({
150
+ path, rule: IntegrityRule.LifecycleScript,
151
+ detail: `Lifecycle script "${hook}" is not allowed in a target project.`
152
+ })
153
+ }
154
+ }
155
+ }
179
156
 
180
- const absent = markers.filter(marker => !content.includes(marker))
181
- if (absent.length > 0) {
182
- violations.push({
183
- path, rule: IntegrityRule.EntryMarker,
184
- detail: `${path} does not look like the generated app's entry: ${absent.join(', ')} not found.`
185
- })
157
+ function checkMarkers(): void {
158
+ for (const [path, markers] of Object.entries(manifest.markers)) {
159
+ const content = files[path]
160
+ if (content == null) continue
161
+
162
+ const absent = markers.filter(marker => !content.includes(marker))
163
+ if (absent.length > 0) {
164
+ violations.push({
165
+ path, rule: IntegrityRule.EntryMarker,
166
+ detail: `${path} does not look like the generated app's entry: ${absent.join(', ')} not found.`
167
+ })
168
+ }
186
169
  }
187
170
  }
188
- }
189
171
 
190
- function readJson(path: string): Record<string, unknown> | null {
191
- const content = files[path]
192
- if (content == null) return null
193
- try {
194
- const parsed: unknown = JSON.parse(content)
195
-
196
- return typeof parsed === 'object' && parsed !== null
197
- ? parsed as Record<string, unknown>
198
- : reportUnreadable(path)
199
- } catch {
200
- return reportUnreadable(path)
172
+ function readJson(path: string): Record<string, unknown> | null {
173
+ const content = files[path]
174
+ if (content == null) return null
175
+ try {
176
+ const parsed: unknown = JSON.parse(content)
177
+
178
+ return typeof parsed === 'object' && parsed !== null
179
+ ? parsed as Record<string, unknown>
180
+ : reportUnreadable(path)
181
+ } catch {
182
+ return reportUnreadable(path)
183
+ }
201
184
  }
202
- }
203
185
 
204
- function reportUnreadable(path: string): null {
205
- violations.push({
206
- path, rule: IntegrityRule.Unreadable, detail: `${path} is not a readable JSON object.`
207
- })
186
+ function reportUnreadable(path: string): null {
187
+ violations.push({
188
+ path, rule: IntegrityRule.Unreadable, detail: `${path} is not a readable JSON object.`
189
+ })
190
+
191
+ return null
192
+ }
208
193
 
209
- return null
194
+ function asRecord(value: unknown): Record<string, string> {
195
+ return typeof value === 'object' && value !== null
196
+ ? value as Record<string, string>
197
+ : {}
198
+ }
210
199
  }
211
200
 
212
- function asRecord(value: unknown): Record<string, string> {
213
- return typeof value === 'object' && value !== null
214
- ? value as Record<string, string>
215
- : {}
216
- }
201
+ const formatIntegrityReport = (report: TargetIntegrityReport): string =>
202
+ report.violations.map(violation => `${violation.path}: ${violation.detail}`).join('\n')
203
+
204
+ return { verifyTargetShape, formatIntegrityReport }
217
205
  }
218
206
 
219
- /** One line per violation — what goes into a log, `slot.lastError`, or a build diagnostic. */
207
+ export const targetIntegrityHelper = createTargetIntegrityHelper()
208
+
209
+ /** @deprecated compat:factory-refactor — use `targetIntegrityHelper.verifyTargetShape(…)` */
210
+ export const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport =>
211
+ targetIntegrityHelper.verifyTargetShape(files)
212
+
213
+ /** @deprecated compat:factory-refactor — use `targetIntegrityHelper.formatIntegrityReport(…)` */
220
214
  export const formatIntegrityReport = (report: TargetIntegrityReport): string =>
221
- report.violations.map(violation => `${violation.path}: ${violation.detail}`).join('\n')
215
+ targetIntegrityHelper.formatIntegrityReport(report)
@@ -12,6 +12,10 @@
12
12
  * read the same declarations, and none of them may reinvent a name the others parse.
13
13
  */
14
14
 
15
+ import { DISPATCHER } from '@owlmeans/auth'
16
+ import { HOME } from '@owlmeans/context'
17
+ import type { ShallowFlow } from '@owlmeans/flow'
18
+
15
19
  /** Every address of the hand-off. API routes are guest routes; the landing is a screen. */
16
20
  export const intent = Object.freeze({
17
21
  base: 'viable:manager-api:intent:base',
@@ -64,3 +68,66 @@ export enum IntentFlowStep {
64
68
  /** The platform's home screen, where the draft is offered back. */
65
69
  Review = 'review',
66
70
  }
71
+
72
+ const payloadMap = { [INTENT_PAYLOAD_REF]: 0 }
73
+
74
+ /**
75
+ * The hand-off flow both sides walk.
76
+ *
77
+ * `compose` runs on the public site: the prompt is stashed and `handoff` carries the reference to
78
+ * `land`, whose module is the platform's landing screen — so the site redirects to
79
+ * `land`'s address with the payload as query. The landing then enters at `land` FRESH (the
80
+ * reference arrives as `?ref=`, never as a serialized token, which the platform's own sign-in
81
+ * parses from `?flow=` on every page), and either goes on to `review` (signed in) or parks the flow
82
+ * with `suspendFlow` at `sign-in`, whose non-explicit way forward is `review` — the home screen —
83
+ * so whichever sign-in method finishes lands there.
84
+ *
85
+ * The steps address CONCRETE entrypoint aliases, never `$`-prefixed references: this flow is never
86
+ * the live `FlowService` model and nothing here needs `configureFlows`.
87
+ */
88
+ export const intentFlow: ShallowFlow = {
89
+ flow: INTENT_FLOW,
90
+ initialStep: IntentFlowStep.Compose,
91
+ steps: {
92
+ [IntentFlowStep.Compose]: {
93
+ index: 0,
94
+ step: IntentFlowStep.Compose,
95
+ service: '',
96
+ initial: true,
97
+ payloadMap,
98
+ transitions: {
99
+ handoff: { transition: 'handoff', step: IntentFlowStep.Land },
100
+ },
101
+ },
102
+ [IntentFlowStep.Land]: {
103
+ index: 1,
104
+ step: IntentFlowStep.Land,
105
+ service: '',
106
+ module: intent.landing,
107
+ initial: true,
108
+ payloadMap,
109
+ transitions: {
110
+ review: { transition: 'review', step: IntentFlowStep.Review },
111
+ 'sign-in': { transition: 'sign-in', step: IntentFlowStep.SignIn, explicit: true },
112
+ },
113
+ },
114
+ [IntentFlowStep.SignIn]: {
115
+ index: 2,
116
+ step: IntentFlowStep.SignIn,
117
+ service: '',
118
+ module: DISPATCHER,
119
+ payloadMap,
120
+ transitions: {
121
+ next: { transition: 'next', step: IntentFlowStep.Review },
122
+ },
123
+ },
124
+ [IntentFlowStep.Review]: {
125
+ index: 3,
126
+ step: IntentFlowStep.Review,
127
+ service: '',
128
+ module: HOME,
129
+ payloadMap,
130
+ transitions: {},
131
+ },
132
+ },
133
+ }