@owlmeans/viable-common 0.0.44 → 0.0.46

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 (605) hide show
  1. package/README.md +4 -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 -30
  5. package/build/agent/index.d.ts +1 -0
  6. package/build/agent/index.d.ts.map +1 -1
  7. package/build/agent/index.js.map +1 -1
  8. package/build/agent/presentation/types.d.ts +21 -0
  9. package/build/agent/presentation/types.d.ts.map +1 -0
  10. package/build/agent/presentation/types.js +2 -0
  11. package/build/agent/presentation/types.js.map +1 -0
  12. package/build/agent/presentation.d.ts +10 -8
  13. package/build/agent/presentation.d.ts.map +1 -1
  14. package/build/agent/presentation.js +216 -195
  15. package/build/agent/presentation.js.map +1 -1
  16. package/build/agent/types.local.d.ts +3 -1
  17. package/build/agent/types.local.d.ts.map +1 -1
  18. package/build/areas/index.d.ts +1 -0
  19. package/build/areas/index.d.ts.map +1 -1
  20. package/build/areas/index.js.map +1 -1
  21. package/build/areas/tenancy/types.d.ts +23 -0
  22. package/build/areas/tenancy/types.d.ts.map +1 -0
  23. package/build/areas/tenancy/types.js +2 -0
  24. package/build/areas/tenancy/types.js.map +1 -0
  25. package/build/areas/tenancy.d.ts +5 -14
  26. package/build/areas/tenancy.d.ts.map +1 -1
  27. package/build/areas/tenancy.js +20 -26
  28. package/build/areas/tenancy.js.map +1 -1
  29. package/build/ba/connecting/types.d.ts +45 -0
  30. package/build/ba/connecting/types.d.ts.map +1 -0
  31. package/build/ba/connecting/types.js +2 -0
  32. package/build/ba/connecting/types.js.map +1 -0
  33. package/build/ba/connecting.d.ts +4 -0
  34. package/build/ba/connecting.d.ts.map +1 -0
  35. package/build/ba/connecting.js +47 -0
  36. package/build/ba/connecting.js.map +1 -0
  37. package/build/ba/helpers.d.ts +4 -39
  38. package/build/ba/helpers.d.ts.map +1 -1
  39. package/build/ba/helpers.js +5 -79
  40. package/build/ba/helpers.js.map +1 -1
  41. package/build/ba/index.d.ts +2 -0
  42. package/build/ba/index.d.ts.map +1 -1
  43. package/build/ba/index.js +1 -0
  44. package/build/ba/index.js.map +1 -1
  45. package/build/blueprint/types.d.ts +1 -2
  46. package/build/blueprint/types.d.ts.map +1 -1
  47. package/build/connect/branding/types.d.ts +28 -0
  48. package/build/connect/branding/types.d.ts.map +1 -0
  49. package/build/connect/branding/types.js +2 -0
  50. package/build/connect/branding/types.js.map +1 -0
  51. package/build/connect/consts.d.ts +2 -0
  52. package/build/connect/consts.d.ts.map +1 -1
  53. package/build/connect/consts.js +2 -0
  54. package/build/connect/consts.js.map +1 -1
  55. package/build/connect/conversion/types.d.ts +93 -0
  56. package/build/connect/conversion/types.d.ts.map +1 -0
  57. package/build/connect/conversion/types.js +2 -0
  58. package/build/connect/conversion/types.js.map +1 -0
  59. package/build/connect/entrypoints/types.d.ts +30 -0
  60. package/build/connect/entrypoints/types.d.ts.map +1 -0
  61. package/build/connect/entrypoints/types.js +2 -0
  62. package/build/connect/entrypoints/types.js.map +1 -0
  63. package/build/connect/entrypoints.d.ts +17 -11
  64. package/build/connect/entrypoints.d.ts.map +1 -1
  65. package/build/connect/entrypoints.js.map +1 -1
  66. package/build/connect/errors/types.d.ts +20 -0
  67. package/build/connect/errors/types.d.ts.map +1 -0
  68. package/build/connect/errors/types.js +2 -0
  69. package/build/connect/errors/types.js.map +1 -0
  70. package/build/connect/errors.d.ts +1 -1
  71. package/build/connect/errors.d.ts.map +1 -1
  72. package/build/connect/index.d.ts +13 -3
  73. package/build/connect/index.d.ts.map +1 -1
  74. package/build/connect/index.js +1 -1
  75. package/build/connect/index.js.map +1 -1
  76. package/build/connect/kit/types.d.ts +52 -0
  77. package/build/connect/kit/types.d.ts.map +1 -0
  78. package/build/connect/kit/types.js +2 -0
  79. package/build/connect/kit/types.js.map +1 -0
  80. package/build/connect/model-tier/types.d.ts +16 -0
  81. package/build/connect/model-tier/types.d.ts.map +1 -0
  82. package/build/connect/model-tier/types.js +2 -0
  83. package/build/connect/model-tier/types.js.map +1 -0
  84. package/build/connect/model-tier.d.ts +4 -0
  85. package/build/connect/model-tier.d.ts.map +1 -0
  86. package/build/connect/model-tier.js +21 -0
  87. package/build/connect/model-tier.js.map +1 -0
  88. package/build/connect/ops/types.d.ts +198 -0
  89. package/build/connect/ops/types.d.ts.map +1 -0
  90. package/build/connect/ops/types.js +2 -0
  91. package/build/connect/ops/types.js.map +1 -0
  92. package/build/connect/pipeline/types.d.ts +39 -0
  93. package/build/connect/pipeline/types.d.ts.map +1 -0
  94. package/build/connect/pipeline/types.js +2 -0
  95. package/build/connect/pipeline/types.js.map +1 -0
  96. package/build/connect/project/types.d.ts +127 -0
  97. package/build/connect/project/types.d.ts.map +1 -0
  98. package/build/connect/project/types.js +2 -0
  99. package/build/connect/project/types.js.map +1 -0
  100. package/build/connect/references/types.d.ts +157 -0
  101. package/build/connect/references/types.d.ts.map +1 -0
  102. package/build/connect/references/types.js +2 -0
  103. package/build/connect/references/types.js.map +1 -0
  104. package/build/connect/references/types.local.d.ts +5 -0
  105. package/build/connect/references/types.local.d.ts.map +1 -0
  106. package/build/connect/references/types.local.js.map +1 -0
  107. package/build/connect/references.d.ts +1 -1
  108. package/build/connect/references.d.ts.map +1 -1
  109. package/build/connect/references.js.map +1 -1
  110. package/build/connect/schemas.d.ts +8 -5
  111. package/build/connect/schemas.d.ts.map +1 -1
  112. package/build/connect/schemas.js +1 -3
  113. package/build/connect/schemas.js.map +1 -1
  114. package/build/connect/session/types.d.ts +73 -0
  115. package/build/connect/session/types.d.ts.map +1 -0
  116. package/build/connect/session/types.js +2 -0
  117. package/build/connect/session/types.js.map +1 -0
  118. package/build/connect/settings/types.d.ts +48 -0
  119. package/build/connect/settings/types.d.ts.map +1 -0
  120. package/build/connect/settings/types.js +2 -0
  121. package/build/connect/settings/types.js.map +1 -0
  122. package/build/connect/types.d.ts +1 -198
  123. package/build/connect/types.d.ts.map +1 -1
  124. package/build/convert/analysis/types.d.ts +93 -0
  125. package/build/convert/analysis/types.d.ts.map +1 -0
  126. package/build/convert/analysis/types.js +2 -0
  127. package/build/convert/analysis/types.js.map +1 -0
  128. package/build/convert/{consts.local.d.ts → census/consts.local.d.ts} +1 -1
  129. package/build/convert/census/consts.local.d.ts.map +1 -0
  130. package/build/convert/{consts.local.js → census/consts.local.js} +1 -1
  131. package/build/convert/census/consts.local.js.map +1 -0
  132. package/build/convert/census/types.d.ts +176 -0
  133. package/build/convert/census/types.d.ts.map +1 -0
  134. package/build/convert/census/types.js +2 -0
  135. package/build/convert/census/types.js.map +1 -0
  136. package/build/convert/census.d.ts +4 -0
  137. package/build/convert/census.d.ts.map +1 -0
  138. package/build/convert/census.js +83 -0
  139. package/build/convert/census.js.map +1 -0
  140. package/build/convert/consts.d.ts +4 -0
  141. package/build/convert/consts.d.ts.map +1 -1
  142. package/build/convert/consts.js +4 -0
  143. package/build/convert/consts.js.map +1 -1
  144. package/build/convert/detection/types.d.ts +67 -0
  145. package/build/convert/detection/types.d.ts.map +1 -0
  146. package/build/convert/detection/types.js +2 -0
  147. package/build/convert/detection/types.js.map +1 -0
  148. package/build/convert/docs/types.d.ts +129 -0
  149. package/build/convert/docs/types.d.ts.map +1 -0
  150. package/build/convert/docs/types.js +2 -0
  151. package/build/convert/docs/types.js.map +1 -0
  152. package/build/convert/docs.d.ts +4 -0
  153. package/build/convert/docs.d.ts.map +1 -0
  154. package/build/convert/docs.js +9 -0
  155. package/build/convert/docs.js.map +1 -0
  156. package/build/convert/estimate/types.d.ts +77 -0
  157. package/build/convert/estimate/types.d.ts.map +1 -0
  158. package/build/convert/estimate/types.js +2 -0
  159. package/build/convert/estimate/types.js.map +1 -0
  160. package/build/convert/estimate.d.ts +11 -0
  161. package/build/convert/estimate.d.ts.map +1 -0
  162. package/build/convert/estimate.js +18 -0
  163. package/build/convert/estimate.js.map +1 -0
  164. package/build/convert/helpers.d.ts +14 -78
  165. package/build/convert/helpers.d.ts.map +1 -1
  166. package/build/convert/helpers.js +27 -199
  167. package/build/convert/helpers.js.map +1 -1
  168. package/build/convert/index.d.ts +14 -0
  169. package/build/convert/index.d.ts.map +1 -1
  170. package/build/convert/index.js +5 -0
  171. package/build/convert/index.js.map +1 -1
  172. package/build/convert/origin/types.d.ts +41 -0
  173. package/build/convert/origin/types.d.ts.map +1 -0
  174. package/build/convert/origin/types.js +2 -0
  175. package/build/convert/origin/types.js.map +1 -0
  176. package/build/convert/origin.d.ts +4 -0
  177. package/build/convert/origin.d.ts.map +1 -0
  178. package/build/convert/origin.js +25 -0
  179. package/build/convert/origin.js.map +1 -0
  180. package/build/convert/record/types.d.ts +98 -0
  181. package/build/convert/record/types.d.ts.map +1 -0
  182. package/build/convert/record/types.js +2 -0
  183. package/build/convert/record/types.js.map +1 -0
  184. package/build/convert/schemas.d.ts +7 -6
  185. package/build/convert/schemas.d.ts.map +1 -1
  186. package/build/convert/schemas.js +1 -5
  187. package/build/convert/schemas.js.map +1 -1
  188. package/build/convert/stage/types.d.ts +27 -0
  189. package/build/convert/stage/types.d.ts.map +1 -0
  190. package/build/convert/stage/types.js +2 -0
  191. package/build/convert/stage/types.js.map +1 -0
  192. package/build/convert/stage.d.ts +4 -0
  193. package/build/convert/stage.d.ts.map +1 -0
  194. package/build/convert/stage.js +25 -0
  195. package/build/convert/stage.js.map +1 -0
  196. package/build/convert/taxonomy/types.d.ts +71 -0
  197. package/build/convert/taxonomy/types.d.ts.map +1 -0
  198. package/build/convert/taxonomy/types.js +2 -0
  199. package/build/convert/taxonomy/types.js.map +1 -0
  200. package/build/convert/types.d.ts +1 -657
  201. package/build/convert/types.d.ts.map +1 -1
  202. package/build/convert/utils.d.ts +2 -1
  203. package/build/convert/utils.d.ts.map +1 -1
  204. package/build/convert/utils.js +5 -4
  205. package/build/convert/utils.js.map +1 -1
  206. package/build/design/helpers.d.ts +9 -49
  207. package/build/design/helpers.d.ts.map +1 -1
  208. package/build/design/helpers.js +17 -224
  209. package/build/design/helpers.js.map +1 -1
  210. package/build/design/index.d.ts +3 -0
  211. package/build/design/index.d.ts.map +1 -1
  212. package/build/design/index.js +1 -0
  213. package/build/design/index.js.map +1 -1
  214. package/build/design/runtime/types.d.ts +16 -0
  215. package/build/design/runtime/types.d.ts.map +1 -0
  216. package/build/design/runtime/types.js +2 -0
  217. package/build/design/runtime/types.js.map +1 -0
  218. package/build/design/runtime.d.ts +6 -2
  219. package/build/design/runtime.d.ts.map +1 -1
  220. package/build/design/runtime.js +13 -5
  221. package/build/design/runtime.js.map +1 -1
  222. package/build/design/story/types.d.ts +67 -0
  223. package/build/design/story/types.d.ts.map +1 -0
  224. package/build/design/story/types.js +2 -0
  225. package/build/design/story/types.js.map +1 -0
  226. package/build/design/story.d.ts +4 -0
  227. package/build/design/story.d.ts.map +1 -0
  228. package/build/design/story.js +184 -0
  229. package/build/design/story.js.map +1 -0
  230. package/build/dev/types.local.d.ts +2 -1
  231. package/build/dev/types.local.d.ts.map +1 -1
  232. package/build/index.d.ts +1 -0
  233. package/build/index.d.ts.map +1 -1
  234. package/build/index.js +1 -0
  235. package/build/index.js.map +1 -1
  236. package/build/integrity/index.d.ts +4 -0
  237. package/build/integrity/index.d.ts.map +1 -1
  238. package/build/integrity/index.js +2 -0
  239. package/build/integrity/index.js.map +1 -1
  240. package/build/integrity/layout/consts.d.ts +59 -0
  241. package/build/integrity/layout/consts.d.ts.map +1 -0
  242. package/build/integrity/layout/consts.js +66 -0
  243. package/build/integrity/layout/consts.js.map +1 -0
  244. package/build/integrity/layout/consts.local.d.ts +18 -0
  245. package/build/integrity/layout/consts.local.d.ts.map +1 -0
  246. package/build/integrity/layout/consts.local.js +176 -0
  247. package/build/integrity/layout/consts.local.js.map +1 -0
  248. package/build/integrity/layout/types.d.ts +35 -0
  249. package/build/integrity/layout/types.d.ts.map +1 -0
  250. package/build/integrity/layout/types.js +2 -0
  251. package/build/integrity/layout/types.js.map +1 -0
  252. package/build/integrity/layout.d.ts +4 -0
  253. package/build/integrity/layout.d.ts.map +1 -0
  254. package/build/integrity/layout.js +25 -0
  255. package/build/integrity/layout.js.map +1 -0
  256. package/build/integrity/types.d.ts +3 -1
  257. package/build/integrity/types.d.ts.map +1 -1
  258. package/build/integrity/utils.d.ts +6 -81
  259. package/build/integrity/utils.d.ts.map +1 -1
  260. package/build/integrity/utils.js +11 -279
  261. package/build/integrity/utils.js.map +1 -1
  262. package/build/integrity/verify/types.d.ts +26 -0
  263. package/build/integrity/verify/types.d.ts.map +1 -0
  264. package/build/integrity/verify/types.js +2 -0
  265. package/build/integrity/verify/types.js.map +1 -0
  266. package/build/integrity/verify.d.ts +5 -19
  267. package/build/integrity/verify.d.ts.map +1 -1
  268. package/build/integrity/verify.js +164 -175
  269. package/build/integrity/verify.js.map +1 -1
  270. package/build/intent/consts.d.ts +16 -0
  271. package/build/intent/consts.d.ts.map +1 -1
  272. package/build/intent/consts.js +63 -0
  273. package/build/intent/consts.js.map +1 -1
  274. package/build/intent/entrypoints.d.ts +2 -11
  275. package/build/intent/entrypoints.d.ts.map +1 -1
  276. package/build/intent/entrypoints.js.map +1 -1
  277. package/build/intent/flow.d.ts.map +1 -1
  278. package/build/intent/flow.js +2 -2
  279. package/build/intent/flow.js.map +1 -1
  280. package/build/intent/index.d.ts +0 -1
  281. package/build/intent/index.d.ts.map +1 -1
  282. package/build/intent/index.js +0 -1
  283. package/build/intent/index.js.map +1 -1
  284. package/build/intent/types.d.ts +13 -2
  285. package/build/intent/types.d.ts.map +1 -1
  286. package/build/legal/consts.d.ts +36 -0
  287. package/build/legal/consts.d.ts.map +1 -0
  288. package/build/legal/consts.js +16 -0
  289. package/build/legal/consts.js.map +1 -0
  290. package/build/legal/index.d.ts +3 -0
  291. package/build/legal/index.d.ts.map +1 -0
  292. package/build/legal/index.js +2 -0
  293. package/build/legal/index.js.map +1 -0
  294. package/build/legal/types.d.ts +10 -0
  295. package/build/legal/types.d.ts.map +1 -0
  296. package/build/legal/types.js +2 -0
  297. package/build/legal/types.js.map +1 -0
  298. package/build/moderation/index.d.ts +2 -0
  299. package/build/moderation/index.d.ts.map +1 -1
  300. package/build/moderation/index.js +1 -0
  301. package/build/moderation/index.js.map +1 -1
  302. package/build/moderation/utils.d.ts +3 -15
  303. package/build/moderation/utils.d.ts.map +1 -1
  304. package/build/moderation/utils.js +5 -30
  305. package/build/moderation/utils.js.map +1 -1
  306. package/build/moderation/verdict/types.d.ts +24 -0
  307. package/build/moderation/verdict/types.d.ts.map +1 -0
  308. package/build/moderation/verdict/types.js +2 -0
  309. package/build/moderation/verdict/types.js.map +1 -0
  310. package/build/moderation/verdict.d.ts +4 -0
  311. package/build/moderation/verdict.d.ts.map +1 -0
  312. package/build/moderation/verdict.js +21 -0
  313. package/build/moderation/verdict.js.map +1 -0
  314. package/build/planning/card/types.d.ts +42 -0
  315. package/build/planning/card/types.d.ts.map +1 -0
  316. package/build/planning/card/types.js +2 -0
  317. package/build/planning/card/types.js.map +1 -0
  318. package/build/planning/card.d.ts +4 -0
  319. package/build/planning/card.d.ts.map +1 -0
  320. package/build/planning/card.js +51 -0
  321. package/build/planning/card.js.map +1 -0
  322. package/build/planning/flows.d.ts +34 -0
  323. package/build/planning/flows.d.ts.map +1 -0
  324. package/build/planning/flows.js +174 -0
  325. package/build/planning/flows.js.map +1 -0
  326. package/build/planning/helpers.d.ts +11 -37
  327. package/build/planning/helpers.d.ts.map +1 -1
  328. package/build/planning/helpers.js +24 -103
  329. package/build/planning/helpers.js.map +1 -1
  330. package/build/planning/index.d.ts +5 -0
  331. package/build/planning/index.d.ts.map +1 -1
  332. package/build/planning/index.js +2 -0
  333. package/build/planning/index.js.map +1 -1
  334. package/build/planning/landing/types.d.ts +16 -0
  335. package/build/planning/landing/types.d.ts.map +1 -0
  336. package/build/planning/landing/types.js +2 -0
  337. package/build/planning/landing/types.js.map +1 -0
  338. package/build/planning/landing.d.ts +5 -10
  339. package/build/planning/landing.d.ts.map +1 -1
  340. package/build/planning/landing.js +20 -22
  341. package/build/planning/landing.js.map +1 -1
  342. package/build/planning/schemas.d.ts +1 -5
  343. package/build/planning/schemas.d.ts.map +1 -1
  344. package/build/planning/schemas.js +3 -3
  345. package/build/planning/schemas.js.map +1 -1
  346. package/build/planning/spec/types.d.ts +22 -0
  347. package/build/planning/spec/types.d.ts.map +1 -0
  348. package/build/planning/spec/types.js +2 -0
  349. package/build/planning/spec/types.js.map +1 -0
  350. package/build/planning/spec.d.ts +4 -0
  351. package/build/planning/spec.d.ts.map +1 -0
  352. package/build/planning/spec.js +30 -0
  353. package/build/planning/spec.js.map +1 -0
  354. package/build/planning/types.d.ts +4 -3
  355. package/build/planning/types.d.ts.map +1 -1
  356. package/build/scaffold/consts.d.ts +40 -1
  357. package/build/scaffold/consts.d.ts.map +1 -1
  358. package/build/scaffold/consts.js +52 -0
  359. package/build/scaffold/consts.js.map +1 -1
  360. package/build/scaffold/helpers.d.ts +4 -16
  361. package/build/scaffold/helpers.d.ts.map +1 -1
  362. package/build/scaffold/helpers.js +9 -64
  363. package/build/scaffold/helpers.js.map +1 -1
  364. package/build/scaffold/index.d.ts +4 -0
  365. package/build/scaffold/index.d.ts.map +1 -1
  366. package/build/scaffold/index.js +2 -0
  367. package/build/scaffold/index.js.map +1 -1
  368. package/build/scaffold/landing/types.d.ts +48 -0
  369. package/build/scaffold/landing/types.d.ts.map +1 -0
  370. package/build/scaffold/landing/types.js +2 -0
  371. package/build/scaffold/landing/types.js.map +1 -0
  372. package/build/scaffold/landing.d.ts +4 -0
  373. package/build/scaffold/landing.d.ts.map +1 -0
  374. package/build/scaffold/landing.js +95 -0
  375. package/build/scaffold/landing.js.map +1 -0
  376. package/build/scaffold/schemas.d.ts +3 -2
  377. package/build/scaffold/schemas.d.ts.map +1 -1
  378. package/build/scaffold/schemas.js +177 -7
  379. package/build/scaffold/schemas.js.map +1 -1
  380. package/build/scaffold/share/types.d.ts +35 -0
  381. package/build/scaffold/share/types.d.ts.map +1 -0
  382. package/build/scaffold/share/types.js +2 -0
  383. package/build/scaffold/share/types.js.map +1 -0
  384. package/build/scaffold/share.d.ts +4 -0
  385. package/build/scaffold/share.d.ts.map +1 -0
  386. package/build/scaffold/share.js +42 -0
  387. package/build/scaffold/share.js.map +1 -0
  388. package/build/scaffold/types.d.ts +112 -2
  389. package/build/scaffold/types.d.ts.map +1 -1
  390. package/build/skills/consts.d.ts +42 -0
  391. package/build/skills/consts.d.ts.map +1 -1
  392. package/build/skills/consts.js +43 -0
  393. package/build/skills/consts.js.map +1 -1
  394. package/build/skills/index.d.ts +0 -1
  395. package/build/skills/index.d.ts.map +1 -1
  396. package/build/skills/index.js +0 -1
  397. package/build/skills/index.js.map +1 -1
  398. package/build/slot/command/types.d.ts +21 -0
  399. package/build/slot/command/types.d.ts.map +1 -0
  400. package/build/slot/command/types.js +2 -0
  401. package/build/slot/command/types.js.map +1 -0
  402. package/build/slot/command.d.ts +4 -0
  403. package/build/slot/command.d.ts.map +1 -0
  404. package/build/slot/command.js +31 -0
  405. package/build/slot/command.js.map +1 -0
  406. package/build/slot/helpers.d.ts +2 -16
  407. package/build/slot/helpers.d.ts.map +1 -1
  408. package/build/slot/helpers.js +5 -26
  409. package/build/slot/helpers.js.map +1 -1
  410. package/build/slot/index.d.ts +5 -0
  411. package/build/slot/index.d.ts.map +1 -1
  412. package/build/slot/index.js +2 -0
  413. package/build/slot/index.js.map +1 -1
  414. package/build/slot/layout/types.d.ts +17 -0
  415. package/build/slot/layout/types.d.ts.map +1 -0
  416. package/build/slot/layout/types.js +2 -0
  417. package/build/slot/layout/types.js.map +1 -0
  418. package/build/slot/layout.d.ts +4 -9
  419. package/build/slot/layout.d.ts.map +1 -1
  420. package/build/slot/layout.js +13 -15
  421. package/build/slot/layout.js.map +1 -1
  422. package/build/slot/origin/types.d.ts +23 -0
  423. package/build/slot/origin/types.d.ts.map +1 -0
  424. package/build/slot/origin/types.js +2 -0
  425. package/build/slot/origin/types.js.map +1 -0
  426. package/build/slot/origin.d.ts +4 -0
  427. package/build/slot/origin.d.ts.map +1 -0
  428. package/build/slot/origin.js +15 -0
  429. package/build/slot/origin.js.map +1 -0
  430. package/build/slot/types.d.ts.map +1 -1
  431. package/build/slot/utils.d.ts +3 -15
  432. package/build/slot/utils.d.ts.map +1 -1
  433. package/build/slot/utils.js +5 -40
  434. package/build/slot/utils.js.map +1 -1
  435. package/build/topology/card/types.d.ts +21 -0
  436. package/build/topology/card/types.d.ts.map +1 -0
  437. package/build/topology/card/types.js +2 -0
  438. package/build/topology/card/types.js.map +1 -0
  439. package/build/topology/card.d.ts +6 -13
  440. package/build/topology/card.d.ts.map +1 -1
  441. package/build/topology/card.js +83 -86
  442. package/build/topology/card.js.map +1 -1
  443. package/build/topology/helpers.d.ts +7 -33
  444. package/build/topology/helpers.d.ts.map +1 -1
  445. package/build/topology/helpers.js +15 -111
  446. package/build/topology/helpers.js.map +1 -1
  447. package/build/topology/index.d.ts +3 -0
  448. package/build/topology/index.d.ts.map +1 -1
  449. package/build/topology/index.js +1 -0
  450. package/build/topology/index.js.map +1 -1
  451. package/build/topology/resolve/types.d.ts +47 -0
  452. package/build/topology/resolve/types.d.ts.map +1 -0
  453. package/build/topology/resolve/types.js +2 -0
  454. package/build/topology/resolve/types.js.map +1 -0
  455. package/build/topology/resolve.d.ts +4 -0
  456. package/build/topology/resolve.d.ts.map +1 -0
  457. package/build/topology/resolve.js +89 -0
  458. package/build/topology/resolve.js.map +1 -0
  459. package/package.json +18 -11
  460. package/src/agent/index.ts +1 -0
  461. package/src/agent/presentation/types.ts +21 -0
  462. package/src/agent/presentation.ts +199 -165
  463. package/src/agent/types.local.ts +3 -1
  464. package/src/areas/index.ts +1 -0
  465. package/src/areas/tenancy/types.ts +23 -0
  466. package/src/areas/tenancy.ts +26 -25
  467. package/src/ba/connecting/types.ts +45 -0
  468. package/src/ba/connecting.ts +64 -0
  469. package/src/ba/helpers.ts +8 -92
  470. package/src/ba/index.ts +2 -0
  471. package/src/blueprint/types.ts +2 -2
  472. package/src/connect/branding/types.ts +29 -0
  473. package/src/connect/consts.ts +3 -0
  474. package/src/connect/conversion/types.ts +96 -0
  475. package/src/connect/entrypoints/types.ts +25 -0
  476. package/src/connect/entrypoints.ts +13 -2
  477. package/src/connect/errors/types.ts +22 -0
  478. package/src/connect/errors.ts +1 -1
  479. package/src/connect/index.ts +13 -3
  480. package/src/connect/kit/types.ts +56 -0
  481. package/src/connect/model-tier/types.ts +16 -0
  482. package/src/connect/model-tier.ts +22 -0
  483. package/src/connect/{ops.ts → ops/types.ts} +13 -3
  484. package/src/connect/pipeline/types.ts +41 -0
  485. package/src/connect/project/types.ts +127 -0
  486. package/src/connect/references/types.local.ts +5 -0
  487. package/src/connect/references/types.ts +73 -0
  488. package/src/connect/references.ts +13 -2
  489. package/src/connect/schemas.ts +9 -13
  490. package/src/connect/session/types.ts +81 -0
  491. package/src/connect/settings/types.ts +52 -0
  492. package/src/convert/analysis/types.ts +89 -0
  493. package/src/convert/{consts.local.ts → census/consts.local.ts} +1 -1
  494. package/src/convert/census/types.ts +181 -0
  495. package/src/convert/census.ts +95 -0
  496. package/src/convert/consts.ts +5 -0
  497. package/src/convert/detection/types.ts +74 -0
  498. package/src/convert/docs/types.ts +151 -0
  499. package/src/convert/docs.ts +15 -0
  500. package/src/convert/estimate/types.ts +75 -0
  501. package/src/convert/estimate.ts +19 -0
  502. package/src/convert/helpers.ts +29 -210
  503. package/src/convert/index.ts +14 -0
  504. package/src/convert/origin/types.ts +43 -0
  505. package/src/convert/origin.ts +33 -0
  506. package/src/convert/record/types.ts +105 -0
  507. package/src/convert/schemas.ts +13 -12
  508. package/src/convert/stage/types.ts +27 -0
  509. package/src/convert/stage.ts +31 -0
  510. package/src/convert/taxonomy/types.ts +74 -0
  511. package/src/convert/types.ts +5 -709
  512. package/src/convert/utils.ts +5 -6
  513. package/src/design/helpers.ts +20 -245
  514. package/src/design/index.ts +3 -0
  515. package/src/design/runtime/types.ts +14 -0
  516. package/src/design/runtime.ts +22 -7
  517. package/src/design/story/types.ts +67 -0
  518. package/src/design/story.ts +221 -0
  519. package/src/dev/types.local.ts +1 -1
  520. package/src/index.ts +1 -0
  521. package/src/integrity/index.ts +4 -0
  522. package/src/integrity/layout/consts.local.ts +188 -0
  523. package/src/integrity/layout/consts.ts +79 -0
  524. package/src/integrity/layout/types.ts +35 -0
  525. package/src/integrity/layout.ts +39 -0
  526. package/src/integrity/types.ts +3 -1
  527. package/src/integrity/utils.ts +14 -313
  528. package/src/integrity/verify/types.ts +26 -0
  529. package/src/integrity/verify.ts +177 -181
  530. package/src/intent/consts.ts +67 -0
  531. package/src/intent/entrypoints.ts +2 -2
  532. package/src/intent/index.ts +0 -1
  533. package/src/intent/types.ts +9 -2
  534. package/src/legal/consts.ts +17 -0
  535. package/src/legal/index.ts +2 -0
  536. package/src/legal/types.ts +11 -0
  537. package/src/moderation/index.ts +2 -0
  538. package/src/moderation/utils.ts +7 -30
  539. package/src/moderation/verdict/types.ts +22 -0
  540. package/src/moderation/verdict.ts +28 -0
  541. package/src/planning/card/types.ts +44 -0
  542. package/src/planning/card.ts +77 -0
  543. package/src/planning/helpers.ts +28 -116
  544. package/src/planning/index.ts +5 -0
  545. package/src/planning/landing/types.ts +15 -0
  546. package/src/planning/landing.ts +27 -24
  547. package/src/planning/schemas.ts +3 -3
  548. package/src/planning/spec/types.ts +22 -0
  549. package/src/planning/spec.ts +41 -0
  550. package/src/planning/types.ts +4 -4
  551. package/src/scaffold/consts.ts +65 -1
  552. package/src/scaffold/helpers.ts +14 -77
  553. package/src/scaffold/index.ts +4 -0
  554. package/src/scaffold/landing/types.ts +48 -0
  555. package/src/scaffold/landing.ts +120 -0
  556. package/src/scaffold/schemas.ts +183 -7
  557. package/src/scaffold/share/types.ts +35 -0
  558. package/src/scaffold/share.ts +60 -0
  559. package/src/scaffold/types.ts +120 -1
  560. package/src/skills/consts.ts +46 -0
  561. package/src/skills/index.ts +0 -1
  562. package/src/slot/command/types.ts +21 -0
  563. package/src/slot/command.ts +38 -0
  564. package/src/slot/helpers.ts +5 -25
  565. package/src/slot/index.ts +5 -0
  566. package/src/slot/layout/types.ts +17 -0
  567. package/src/slot/layout.ts +19 -16
  568. package/src/slot/origin/types.ts +23 -0
  569. package/src/slot/origin.ts +20 -0
  570. package/src/slot/types.ts +1 -0
  571. package/src/slot/utils.ts +8 -43
  572. package/src/topology/card/types.ts +21 -0
  573. package/src/topology/card.ts +84 -82
  574. package/src/topology/helpers.ts +20 -125
  575. package/src/topology/index.ts +3 -0
  576. package/src/topology/resolve/types.ts +47 -0
  577. package/src/topology/resolve.ts +118 -0
  578. package/tests/blueprint.spec.ts +1 -2
  579. package/tests/connect-errors.spec.ts +1 -1
  580. package/tests/convert.spec.ts +50 -50
  581. package/tests/design.spec.ts +13 -16
  582. package/tests/planning.spec.ts +57 -59
  583. package/tests/presentation.spec.ts +20 -20
  584. package/tests/scaffold.spec.ts +286 -6
  585. package/tests/tenancy.spec.ts +21 -21
  586. package/build/connect/types.local.d.ts +0 -4
  587. package/build/connect/types.local.d.ts.map +0 -1
  588. package/build/connect/types.local.js.map +0 -1
  589. package/build/connect/utils.d.ts +0 -12
  590. package/build/connect/utils.d.ts.map +0 -1
  591. package/build/connect/utils.js +0 -25
  592. package/build/connect/utils.js.map +0 -1
  593. package/build/convert/consts.local.d.ts.map +0 -1
  594. package/build/convert/consts.local.js.map +0 -1
  595. package/build/intent/consts.local.d.ts +0 -4
  596. package/build/intent/consts.local.d.ts.map +0 -1
  597. package/build/intent/consts.local.js +0 -3
  598. package/build/intent/consts.local.js.map +0 -1
  599. package/src/connect/types.local.ts +0 -5
  600. package/src/connect/types.ts +0 -589
  601. package/src/connect/utils.ts +0 -23
  602. package/src/intent/consts.local.ts +0 -3
  603. package/src/intent/flow.ts +0 -66
  604. package/src/skills/roles.ts +0 -46
  605. /package/build/connect/{types.local.js → references/types.local.js} +0 -0
@@ -198,6 +198,90 @@ export interface LandingGateAnswer {
198
198
  note: string
199
199
  }
200
200
 
201
+ /**
202
+ * A band of the landing page that the header menu can jump to — the `id` its section carries.
203
+ * A CLOSED set: each value is one stamped band, so a value nothing draws is a menu entry that
204
+ * scrolls nowhere. `LANDING_ANCHOR_BAND` maps each to its band.
205
+ */
206
+ export type LandingAnchor = 'how' | 'features' | 'use-cases' | 'why' | 'approach' | 'community' | 'about'
207
+
208
+ /**
209
+ * The bands a landing page can carry, named in the house order `LANDING_BAND_ORDER` declares.
210
+ * `problem` is the problem-and-solution band. Which of them a page draws is `landingBandsOf`.
211
+ */
212
+ export type LandingBand =
213
+ | 'hero' | 'steps' | 'features' | 'use-cases' | 'problem' | 'differentiator' | 'approach'
214
+ | 'testimonials' | 'about' | 'closing'
215
+
216
+ /**
217
+ * A button or link of the landing page that can open a user story — the place a {@link HomeLink}
218
+ * attaches to. Which of them a given page actually draws is `homeSlotsOf`.
219
+ */
220
+ export type LandingSlot =
221
+ | 'hero.cta' | 'hero.secondary' | 'hero.browse'
222
+ | 'closing.primary' | 'closing.secondary' | 'closing.link.1' | 'closing.link.2'
223
+ | 'useCase.1' | 'useCase.2' | 'useCase.3' | 'useCase.4'
224
+
225
+ /** One entry of the guest header menu: a band to jump to and the word it is shown as. */
226
+ export interface LandingMenuEntry {
227
+ anchor: LandingAnchor
228
+ /** 1-2 words in the product's language. */
229
+ label: string
230
+ }
231
+
232
+ /** A home button that opens a user story instead of its default action. */
233
+ export interface HomeLink {
234
+ slot: LandingSlot
235
+ /** The story's CODE. */
236
+ story: string
237
+ }
238
+
239
+ /** One use case of the landing page: who, doing what. */
240
+ export interface LandingUseCase {
241
+ /** Who this case is for, in a few words. */
242
+ audience: string
243
+ title: string
244
+ text: string
245
+ }
246
+
247
+ /**
248
+ * The bands added with the gated landing page carry a `basis`: a passage copied word for word from
249
+ * the person's own words, the specification or the vision. It is checked downstream, and a band
250
+ * whose basis is not found there is removed — the band exists only when its claim has a source.
251
+ */
252
+ export interface LandingUseCases {
253
+ /** Two to four cases. */
254
+ cases: LandingUseCase[]
255
+ basis: string
256
+ }
257
+
258
+ /** "Why us": what this product does differently, as a short usual-vs-ours contrast. */
259
+ export interface LandingDifferentiator {
260
+ title: string
261
+ text: string
262
+ /** Two to three rows, at most six words on each side. */
263
+ contrast: { usual: string, ours: string }[]
264
+ /** The heading over the `usual` column; absent falls back to the stamper's own. */
265
+ usualLabel?: string | null
266
+ /** The heading over the `ours` column; absent falls back to the stamper's own. */
267
+ oursLabel?: string | null
268
+ basis: string
269
+ }
270
+
271
+ /** "How we work": the principles the product is run by, three to four. */
272
+ export interface LandingApproach {
273
+ title?: string | null
274
+ principles: { title: string, text: string }[]
275
+ basis: string
276
+ }
277
+
278
+ /** The about band: who is behind the product. */
279
+ export interface LandingAbout {
280
+ title: string
281
+ text: string
282
+ basis: string
283
+ }
284
+
201
285
  /** The guest area's landing page — the product's public face. */
202
286
  export interface GuestHomePlan {
203
287
  hero: {
@@ -219,9 +303,21 @@ export interface GuestHomePlan {
219
303
  solution: { title: string, text: string }
220
304
  /** The bento tiles — four, each optionally anchored by a fragment of the product's interface. */
221
305
  features: { title: string, text: string, fragment?: BentoFragment }[]
222
- testimonials: { quote: string, name: string, role: string }[]
306
+ /**
307
+ * None or exactly two. Optional since the gated landing page: a plan stored before carries it,
308
+ * and a product whose end users do not choose it for themselves leaves it out.
309
+ */
310
+ testimonials?: { quote: string, name: string, role: string }[] | null
223
311
  /** "How it works" — three steps taken from the main flow. */
224
312
  steps?: { title: string, text: string }[]
313
+ /** Who it is for, case by case. */
314
+ useCases?: LandingUseCases | null
315
+ /** "Why us". */
316
+ differentiator?: LandingDifferentiator | null
317
+ /** "How we work". */
318
+ approach?: LandingApproach | null
319
+ /** Who is behind the product. */
320
+ about?: LandingAbout | null
225
321
  /** The small section labels and section headings; absent ones fall back to the stamper's own. */
226
322
  labels?: {
227
323
  steps?: string
@@ -232,7 +328,30 @@ export interface GuestHomePlan {
232
328
  testimonialsTitle?: string
233
329
  problem?: string
234
330
  solution?: string
331
+ useCases?: string | null
332
+ useCasesTitle?: string | null
333
+ differentiator?: string | null
334
+ approach?: string | null
335
+ approachTitle?: string | null
336
+ about?: string | null
235
337
  }
338
+ /**
339
+ * The guest header menu — two to four bands to jump to. Entries whose band the page does not
340
+ * draw are dropped; `landingMenuOf` is the one reading of it.
341
+ */
342
+ menu?: LandingMenuEntry[] | null
343
+ /**
344
+ * Which home buttons open which user story. Absent or `null` means NOT DECIDED yet; `[]` means
345
+ * decided: none. A slot the page does not draw (`homeSlotsOf`) is ignored.
346
+ */
347
+ links?: HomeLink[] | null
348
+ /**
349
+ * The story codes whose links were decided at DEVELOPMENT time, one per story asked — a decision
350
+ * of "no control" included. Absent (or `null`) on a plan whose links the planner decided: then
351
+ * {@link GuestHomePlan.links} speaks for every story of the plan. Written by code, never asked of
352
+ * the model.
353
+ */
354
+ linksDecided?: string[] | null
236
355
  /** The closing band: a headline, a lead, the two pills and two link cards. */
237
356
  closing?: {
238
357
  headline: string
@@ -85,3 +85,49 @@ export enum ViableSkill {
85
85
  LibrariesAi = 'libraries-ai',
86
86
  LibrariesGame = 'libraries-game',
87
87
  }
88
+
89
+ /**
90
+ * Who the model is being asked to be.
91
+ *
92
+ * A persona is per HELPER, not per model role: `ModelRole` selects which model answers,
93
+ * this selects what it is told it does. Two helpers can share a model and need different
94
+ * personas, and the same persona can run on a cheap or an expensive model depending on
95
+ * the effort tier — keeping the two axes separate is what makes that possible.
96
+ */
97
+ export enum ViablePersona {
98
+ BusinessAnalyst = 'business-analyst',
99
+ ProductNaming = 'product-naming',
100
+ /** Decides what KIND of product a prompt describes — which blueprint case builds it. */
101
+ ProductArchitect = 'product-architect',
102
+ UxDesigner = 'ux-designer',
103
+ VisualDesigner = 'visual-designer',
104
+
105
+ LayoutArchitect = 'layout-architect',
106
+ ComponentArchitect = 'component-architect',
107
+ StateArchitect = 'state-architect',
108
+ NavigationArchitect = 'navigation-architect',
109
+ DomainTypesArchitect = 'domain-types-architect',
110
+ AccessArchitect = 'access-architect',
111
+ ApiArchitect = 'api-architect',
112
+ DatalayerArchitect = 'datalayer-architect',
113
+ BackendDomainArchitect = 'backend-domain-architect',
114
+
115
+ CommonCoder = 'common-coder',
116
+ UiStateCoder = 'ui-state-coder',
117
+ UiViewCoder = 'ui-view-coder',
118
+ UiNavCoder = 'ui-nav-coder',
119
+ DatalayerCoder = 'datalayer-coder',
120
+ ApiCoder = 'api-coder',
121
+ BackendModelCoder = 'backend-model-coder',
122
+ /** Decides whether a story needs a queue, a worker or an agent — and usually decides it does not. */
123
+ RuntimeArchitect = 'runtime-architect',
124
+ /** Writes queue declarations, job processors and the application's own agents. */
125
+ WorkerCoder = 'worker-coder',
126
+ FreeFlightCoder = 'free-flight-coder',
127
+
128
+ Fixer = 'fixer',
129
+ Orchestrator = 'orchestrator',
130
+ SourceExtractor = 'source-extractor',
131
+ DeclarationLookup = 'declaration-lookup',
132
+ FixAgent = 'fix-agent',
133
+ }
@@ -1,3 +1,2 @@
1
1
 
2
2
  export * from './consts.js'
3
- export * from './roles.js'
@@ -0,0 +1,21 @@
1
+ import type { SlotCommandType } from '../consts.js'
2
+
3
+ /** The time bounds of one slot command: the caller's timeout and the executor's deadline. */
4
+ export interface SlotCommandHelper {
5
+ /**
6
+ * Resolve the caller-side bound for one command.
7
+ *
8
+ * One function rather than three lookups at each call site: an asker that forgets the per-command
9
+ * table inherits twenty minutes for a fifteen-second command, which is the failure this table was
10
+ * added to stop.
11
+ */
12
+ commandTimeout: (type: SlotCommandType, command: string, override?: number) => number
13
+ /**
14
+ * Resolve the executor-side deadline for one command.
15
+ *
16
+ * Per-command first, per-type second. It was per-type only, which is how a clone inherited the
17
+ * bound of a `git status` — the same shape as the shell table above, and added for the same
18
+ * reason.
19
+ */
20
+ commandDeadline: (type: SlotCommandType, command: string) => number
21
+ }
@@ -0,0 +1,38 @@
1
+ import { COMMAND_DEADLINES, COMMAND_TIMEOUTS, DEFAULT_COMMAND_DEADLINE, DEFAULT_COMMAND_TIMEOUT, DEFAULT_FILE_COMMAND_DEADLINE, DEFAULT_GIT_COMMAND_DEADLINE, FILE_COMMAND_DEADLINES, FILE_COMMAND_TIMEOUTS, GIT_COMMAND_DEADLINES, GIT_COMMAND_TIMEOUTS, SHELL_COMMAND_TIMEOUTS, SlotCommandType, SlotFileCommand, SlotGitCommand } from './consts.js'
2
+ import type { SlotCommandHelper } from './command/types.js'
3
+
4
+ export const createSlotCommandHelper = (): SlotCommandHelper => {
5
+ /** The per-command caller bound for one command, or nothing where its type's default is right. */
6
+ const perCommandTimeout = (type: SlotCommandType, command: string): number | undefined => {
7
+ switch (type) {
8
+ case SlotCommandType.Shell: return SHELL_COMMAND_TIMEOUTS[command]
9
+ case SlotCommandType.Git: return GIT_COMMAND_TIMEOUTS[command as SlotGitCommand]
10
+ case SlotCommandType.Database: return COMMAND_TIMEOUTS[SlotCommandType.Database]
11
+ default: return FILE_COMMAND_TIMEOUTS[command as SlotFileCommand]
12
+ }
13
+ }
14
+
15
+ const commandTimeout = (
16
+ type: SlotCommandType, command: string, override?: number
17
+ ): number => override
18
+ ?? perCommandTimeout(type, command)
19
+ ?? COMMAND_TIMEOUTS[type]
20
+ ?? DEFAULT_COMMAND_TIMEOUT
21
+
22
+ const commandDeadline = (type: SlotCommandType, command: string): number => {
23
+ switch (type) {
24
+ case SlotCommandType.Shell:
25
+ return COMMAND_DEADLINES[command] ?? DEFAULT_COMMAND_DEADLINE
26
+ case SlotCommandType.Git:
27
+ return GIT_COMMAND_DEADLINES[command as SlotGitCommand] ?? DEFAULT_GIT_COMMAND_DEADLINE
28
+ case SlotCommandType.Database:
29
+ return 30_000
30
+ default:
31
+ return FILE_COMMAND_DEADLINES[command as SlotFileCommand] ?? DEFAULT_FILE_COMMAND_DEADLINE
32
+ }
33
+ }
34
+
35
+ return { commandTimeout, commandDeadline }
36
+ }
37
+
38
+ export const slotCommandHelper = createSlotCommandHelper()
@@ -1,29 +1,9 @@
1
- import { WorkloadKind } from './consts.js'
1
+ import { slotOriginHelper } from './origin.js'
2
2
  import type { AddressableSlot } from './types.js'
3
3
 
4
- /**
5
- * The origin a slot's application answers at.
6
- *
7
- * Read back from the slot's stored `host`, never recomposed from a slug — a preview host is a
8
- * CLAIMED resource with a certificate behind it, and the name a slot ended up with is not always
9
- * the name its project would compose today. What this adds is the scheme, which is the one part
10
- * that follows from the kind rather than from the record: a local target is a loopback address and
11
- * therefore `http`, everything else is TLS-terminated at an edge and therefore `https`.
12
- */
13
- export const slotOrigin = (slot: AddressableSlot): string => {
14
- const host = slot.host ?? ''
15
- if (host === '') return ''
16
- if (host.startsWith('http://') || host.startsWith('https://')) return host
4
+ /** @deprecated compat:factory-refactor — use `slotOriginHelper.slotOrigin(…)` */
5
+ export const slotOrigin = (slot: AddressableSlot): string => slotOriginHelper.slotOrigin(slot)
17
6
 
18
- return `${slot.kind === WorkloadKind.Local ? 'http' : 'https'}://${host}`
19
- }
20
-
21
- /**
22
- * The exact redirect URIs a target's OIDC client must carry for one origin.
23
- *
24
- * Exact, because a provider matches a redirect URI literally and refuses a wildcard — and both
25
- * entries are needed: the callback the login round trip returns to, and the bare origin, which is
26
- * where the application's own logout lands.
27
- */
7
+ /** @deprecated compat:factory-refactor — use `slotOriginHelper.targetRedirectUrisForOrigin(…)` */
28
8
  export const targetRedirectUrisForOrigin = (origin: string, callbackPath: string): string[] =>
29
- origin === '' ? [] : [origin, `${origin}${callbackPath}`]
9
+ slotOriginHelper.targetRedirectUrisForOrigin(origin, callbackPath)
package/src/slot/index.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  export * from './consts.js'
2
+ export * from './command.js'
2
3
  export * from './utils.js'
3
4
  export * from './schemas.js'
4
5
  export * from './layout.js'
6
+ export * from './origin.js'
5
7
  export * from './helpers.js'
6
8
  export type * from './types.js'
9
+ export type * from './command/types.js'
10
+ export type * from './layout/types.js'
11
+ export type * from './origin/types.js'
@@ -0,0 +1,17 @@
1
+ import type { TargetLayout } from '../../integrity/consts.js'
2
+ import type { SubProject } from '../consts.js'
3
+ import type { TargetPaths } from '../types.js'
4
+
5
+ /** Where a target's roles live, per layout — read off {@link LAYOUTS} and {@link ROLE_DIRS}. */
6
+ export interface SlotLayoutHelper {
7
+ /**
8
+ * Resolve a wire-level role to the directory it names in a given layout.
9
+ *
10
+ * An unknown value — a role from a sender newer than this reader — falls back to the role's own
11
+ * name, which is the honest guess for a layout whose packages are named after their roles, and
12
+ * which fails visibly rather than resolving to some other package's directory.
13
+ */
14
+ subprojectDirOf: (layout: TargetLayout, role: SubProject) => string
15
+ /** Where every role lives, for a layout already decided. */
16
+ pathsOf: (layout: TargetLayout) => TargetPaths
17
+ }
@@ -1,7 +1,8 @@
1
1
  import { TargetLayout } from '../integrity/index.js'
2
- import { packageForRole, resolveTopology, topologyOf } from '../topology/index.js'
2
+ import { topologyHelper } from '../topology/resolve.js'
3
3
  import { SubProject } from './consts.js'
4
4
  import type { TargetPaths } from './types.js'
5
+ import type { SlotLayoutHelper } from './layout/types.js'
5
6
 
6
7
  /**
7
8
  * Where every role lives, per layout — DERIVED from that layout's topology.
@@ -15,8 +16,8 @@ import type { TargetPaths } from './types.js'
15
16
  * The VALUES are unchanged, and `topology.spec.ts` pins them against the tables they replaced.
16
17
  */
17
18
  const pathsOfTopology = (layout: TargetLayout): TargetPaths => {
18
- const topology = resolveTopology(topologyOf(layout))
19
- const dirOf = (role: SubProject): string | undefined => packageForRole(topology, role)?.name
19
+ const topology = topologyHelper.resolveTopology(topologyHelper.topologyOf(layout))
20
+ const dirOf = (role: SubProject): string | undefined => topologyHelper.packageForRole(topology, role)?.name
20
21
 
21
22
  return {
22
23
  layout,
@@ -52,10 +53,10 @@ export const LAYOUTS: Record<TargetLayout, TargetPaths> = {
52
53
  * so an unmapped role falls back to its own name here, which is that same visible failure.
53
54
  */
54
55
  const roleDirsOfTopology = (layout: TargetLayout): Record<SubProject, string> => {
55
- const topology = resolveTopology(topologyOf(layout))
56
+ const topology = topologyHelper.resolveTopology(topologyHelper.topologyOf(layout))
56
57
 
57
58
  return Object.values(SubProject).reduce<Record<SubProject, string>>((dirs, role) => {
58
- dirs[role] = packageForRole(topology, role)?.name ?? role
59
+ dirs[role] = topologyHelper.packageForRole(topology, role)?.name ?? role
59
60
 
60
61
  return dirs
61
62
  }, {} as Record<SubProject, string>)
@@ -66,15 +67,17 @@ export const ROLE_DIRS: Record<TargetLayout, Record<SubProject, string>> = {
66
67
  [TargetLayout.V2]: roleDirsOfTopology(TargetLayout.V2),
67
68
  }
68
69
 
69
- /**
70
- * Resolve a wire-level role to the directory it names in a given layout.
71
- *
72
- * An unknown value — a role from a sender newer than this reader — falls back to the role's own
73
- * name, which is the honest guess for a layout whose packages are named after their roles, and
74
- * which fails visibly rather than resolving to some other package's directory.
75
- */
76
- export const subprojectDirOf = (layout: TargetLayout, role: SubProject): string =>
77
- ROLE_DIRS[layout][role] ?? role
70
+ export const createSlotLayoutHelper = (): SlotLayoutHelper => {
71
+ const subprojectDirOf = (layout: TargetLayout, role: SubProject): string =>
72
+ ROLE_DIRS[layout][role] ?? role
73
+
74
+ const pathsOf = (layout: TargetLayout): TargetPaths => LAYOUTS[layout]
78
75
 
79
- /** Where every role lives, for a layout already decided. */
80
- export const pathsOf = (layout: TargetLayout): TargetPaths => LAYOUTS[layout]
76
+ return { subprojectDirOf, pathsOf }
77
+ }
78
+
79
+ export const slotLayoutHelper = createSlotLayoutHelper()
80
+
81
+ /** @deprecated compat:factory-refactor — use `slotLayoutHelper.subprojectDirOf(…)` */
82
+ export const subprojectDirOf = (layout: TargetLayout, role: SubProject): string =>
83
+ slotLayoutHelper.subprojectDirOf(layout, role)
@@ -0,0 +1,23 @@
1
+ import type { AddressableSlot } from '../types.js'
2
+
3
+ /** Where a slot's application answers, and the redirect URIs its OIDC client needs there. */
4
+ export interface SlotOriginHelper {
5
+ /**
6
+ * The origin a slot's application answers at.
7
+ *
8
+ * Read back from the slot's stored `host`, never recomposed from a slug — a preview host is a
9
+ * CLAIMED resource with a certificate behind it, and the name a slot ended up with is not always
10
+ * the name its project would compose today. What this adds is the scheme, which is the one part
11
+ * that follows from the kind rather than from the record: a local target is a loopback address and
12
+ * therefore `http`, everything else is TLS-terminated at an edge and therefore `https`.
13
+ */
14
+ slotOrigin: (slot: AddressableSlot) => string
15
+ /**
16
+ * The exact redirect URIs a target's OIDC client must carry for one origin.
17
+ *
18
+ * Exact, because a provider matches a redirect URI literally and refuses a wildcard — and both
19
+ * entries are needed: the callback the login round trip returns to, and the bare origin, which is
20
+ * where the application's own logout lands.
21
+ */
22
+ targetRedirectUrisForOrigin: (origin: string, callbackPath: string) => string[]
23
+ }
@@ -0,0 +1,20 @@
1
+ import { WorkloadKind } from './consts.js'
2
+ import type { AddressableSlot } from './types.js'
3
+ import type { SlotOriginHelper } from './origin/types.js'
4
+
5
+ export const createSlotOriginHelper = (): SlotOriginHelper => {
6
+ const slotOrigin = (slot: AddressableSlot): string => {
7
+ const host = slot.host ?? ''
8
+ if (host === '') return ''
9
+ if (host.startsWith('http://') || host.startsWith('https://')) return host
10
+
11
+ return `${slot.kind === WorkloadKind.Local ? 'http' : 'https'}://${host}`
12
+ }
13
+
14
+ const targetRedirectUrisForOrigin = (origin: string, callbackPath: string): string[] =>
15
+ origin === '' ? [] : [origin, `${origin}${callbackPath}`]
16
+
17
+ return { slotOrigin, targetRedirectUrisForOrigin }
18
+ }
19
+
20
+ export const slotOriginHelper = createSlotOriginHelper()
package/src/slot/types.ts CHANGED
@@ -22,6 +22,7 @@ export interface SlotDatabaseQueryArgs {
22
22
  timeoutMs?: number
23
23
  }
24
24
 
25
+ // Kept as a type: a union of the success and the failure shape.
25
26
  export type SlotDatabaseQueryResult = {
26
27
  ok: true
27
28
  columns: Array<{ name: string; dataType: string }>
package/src/slot/utils.ts CHANGED
@@ -1,45 +1,10 @@
1
- import { COMMAND_DEADLINES, COMMAND_TIMEOUTS, DEFAULT_COMMAND_DEADLINE, DEFAULT_COMMAND_TIMEOUT, DEFAULT_FILE_COMMAND_DEADLINE, DEFAULT_GIT_COMMAND_DEADLINE, FILE_COMMAND_DEADLINES, FILE_COMMAND_TIMEOUTS, GIT_COMMAND_DEADLINES, GIT_COMMAND_TIMEOUTS, SHELL_COMMAND_TIMEOUTS, SlotCommandType, SlotFileCommand, SlotGitCommand } from './consts.js'
1
+ import { slotCommandHelper } from './command.js'
2
+ import type { SlotCommandType } from './consts.js'
2
3
 
3
- /** The per-command caller bound for one command, or nothing where its type's default is right. */
4
- const perCommandTimeout = (type: SlotCommandType, command: string): number | undefined => {
5
- switch (type) {
6
- case SlotCommandType.Shell: return SHELL_COMMAND_TIMEOUTS[command]
7
- case SlotCommandType.Git: return GIT_COMMAND_TIMEOUTS[command as SlotGitCommand]
8
- case SlotCommandType.Database: return COMMAND_TIMEOUTS[SlotCommandType.Database]
9
- default: return FILE_COMMAND_TIMEOUTS[command as SlotFileCommand]
10
- }
11
- }
4
+ /** @deprecated compat:factory-refactor — use `slotCommandHelper.commandTimeout(…)` */
5
+ export const commandTimeout = (type: SlotCommandType, command: string, override?: number): number =>
6
+ slotCommandHelper.commandTimeout(type, command, override)
12
7
 
13
- /**
14
- * Resolve the caller-side bound for one command.
15
- *
16
- * One function rather than three lookups at each call site: an asker that forgets the per-command
17
- * table inherits twenty minutes for a fifteen-second command, which is the failure this table was
18
- * added to stop.
19
- */
20
- export const commandTimeout = (
21
- type: SlotCommandType, command: string, override?: number
22
- ): number => override
23
- ?? perCommandTimeout(type, command)
24
- ?? COMMAND_TIMEOUTS[type]
25
- ?? DEFAULT_COMMAND_TIMEOUT
26
-
27
- /**
28
- * Resolve the executor-side deadline for one command.
29
- *
30
- * Per-command first, per-type second. It was per-type only, which is how a clone inherited the
31
- * bound of a `git status` — the same shape as the shell table above, and added for the same
32
- * reason.
33
- */
34
- export const commandDeadline = (type: SlotCommandType, command: string): number => {
35
- switch (type) {
36
- case SlotCommandType.Shell:
37
- return COMMAND_DEADLINES[command] ?? DEFAULT_COMMAND_DEADLINE
38
- case SlotCommandType.Git:
39
- return GIT_COMMAND_DEADLINES[command as SlotGitCommand] ?? DEFAULT_GIT_COMMAND_DEADLINE
40
- case SlotCommandType.Database:
41
- return 30_000
42
- default:
43
- return FILE_COMMAND_DEADLINES[command as SlotFileCommand] ?? DEFAULT_FILE_COMMAND_DEADLINE
44
- }
45
- }
8
+ /** @deprecated compat:factory-refactor — use `slotCommandHelper.commandDeadline(…)` */
9
+ export const commandDeadline = (type: SlotCommandType, command: string): number =>
10
+ slotCommandHelper.commandDeadline(type, command)
@@ -0,0 +1,21 @@
1
+ import type { TopologyDescriptor, TopologyMeta } from '../types.js'
2
+
3
+ /** The topology file `.agents/memory/topology.md`: its frontmatter, read and written, and its body. */
4
+ export interface TopologyCardHelper {
5
+ /**
6
+ * Narrow a parsed frontmatter block into a topology, or answer `null`.
7
+ *
8
+ * `null` means "use the layout default", and every caller treats it that way. A topology file
9
+ * written by a platform version this one cannot read must not stop a project from building — the
10
+ * arrangement it describes is almost certainly still the default one.
11
+ */
12
+ parseTopologyMeta: (data: unknown) => TopologyDescriptor | null
13
+ topologyMeta: (topology: TopologyDescriptor) => TopologyMeta
14
+ /**
15
+ * The body of `.agents/memory/topology.md` — what a model reads, and what a person reads.
16
+ *
17
+ * Rendered from the descriptor rather than maintained beside it, for the same reason the layout
18
+ * tables are: a card that disagrees with the frontmatter teaches the wrong tree.
19
+ */
20
+ renderTopologyCard: (topology: TopologyDescriptor) => string
21
+ }