@owlmeans/viable-common 0.0.43 → 0.0.44

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 (322) 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 +1 -1
  4. package/agent-meta/skills/viable-common/SKILL.md +22 -11
  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 +1 -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.d.ts +2 -86
  18. package/build/agent/presentation.d.ts.map +1 -1
  19. package/build/agent/presentation.js +2 -104
  20. package/build/agent/presentation.js.map +1 -1
  21. package/build/agent/types.d.ts +30 -0
  22. package/build/agent/types.d.ts.map +1 -1
  23. package/build/agent/types.local.d.ts +2 -0
  24. package/build/agent/types.local.d.ts.map +1 -0
  25. package/build/agent/types.local.js +2 -0
  26. package/build/agent/types.local.js.map +1 -0
  27. package/build/areas/consts.d.ts +5 -0
  28. package/build/areas/consts.d.ts.map +1 -1
  29. package/build/areas/consts.js +4 -0
  30. package/build/areas/consts.js.map +1 -1
  31. package/build/areas/tenancy.d.ts +1 -36
  32. package/build/areas/tenancy.d.ts.map +1 -1
  33. package/build/areas/tenancy.js +1 -5
  34. package/build/areas/tenancy.js.map +1 -1
  35. package/build/areas/types.d.ts +32 -0
  36. package/build/areas/types.d.ts.map +1 -1
  37. package/build/ba/types.d.ts +1 -1
  38. package/build/ba/types.d.ts.map +1 -1
  39. package/build/blueprint/consts.d.ts +41 -0
  40. package/build/blueprint/consts.d.ts.map +1 -1
  41. package/build/blueprint/consts.js +51 -0
  42. package/build/blueprint/consts.js.map +1 -1
  43. package/build/blueprint/consts.local.d.ts +2 -0
  44. package/build/blueprint/consts.local.d.ts.map +1 -0
  45. package/build/blueprint/consts.local.js +3 -0
  46. package/build/blueprint/consts.local.js.map +1 -0
  47. package/build/blueprint/index.d.ts +1 -0
  48. package/build/blueprint/index.d.ts.map +1 -1
  49. package/build/blueprint/index.js +1 -0
  50. package/build/blueprint/index.js.map +1 -1
  51. package/build/blueprint/types.d.ts +2 -50
  52. package/build/blueprint/types.d.ts.map +1 -1
  53. package/build/blueprint/types.js +1 -65
  54. package/build/blueprint/types.js.map +1 -1
  55. package/build/blueprint/utils.d.ts +11 -0
  56. package/build/blueprint/utils.d.ts.map +1 -0
  57. package/build/blueprint/utils.js +16 -0
  58. package/build/blueprint/utils.js.map +1 -0
  59. package/build/branding.d.ts +0 -8
  60. package/build/branding.d.ts.map +1 -1
  61. package/build/branding.js +0 -16
  62. package/build/branding.js.map +1 -1
  63. package/build/connect/consts.d.ts +0 -10
  64. package/build/connect/consts.d.ts.map +1 -1
  65. package/build/connect/consts.js +0 -23
  66. package/build/connect/consts.js.map +1 -1
  67. package/build/connect/entrypoints.d.ts +49 -86
  68. package/build/connect/entrypoints.d.ts.map +1 -1
  69. package/build/connect/entrypoints.js +5 -2
  70. package/build/connect/entrypoints.js.map +1 -1
  71. package/build/connect/errors.d.ts +32 -0
  72. package/build/connect/errors.d.ts.map +1 -1
  73. package/build/connect/errors.js +65 -0
  74. package/build/connect/errors.js.map +1 -1
  75. package/build/connect/index.d.ts +1 -0
  76. package/build/connect/index.d.ts.map +1 -1
  77. package/build/connect/index.js +1 -0
  78. package/build/connect/index.js.map +1 -1
  79. package/build/connect/references.d.ts +1 -153
  80. package/build/connect/references.d.ts.map +1 -1
  81. package/build/connect/references.js.map +1 -1
  82. package/build/connect/schemas.d.ts +2 -1
  83. package/build/connect/schemas.d.ts.map +1 -1
  84. package/build/connect/schemas.js +9 -0
  85. package/build/connect/schemas.js.map +1 -1
  86. package/build/connect/types.d.ts +214 -1
  87. package/build/connect/types.d.ts.map +1 -1
  88. package/build/connect/types.local.d.ts +4 -0
  89. package/build/connect/types.local.d.ts.map +1 -0
  90. package/build/connect/types.local.js +2 -0
  91. package/build/connect/types.local.js.map +1 -0
  92. package/build/connect/utils.d.ts +12 -0
  93. package/build/connect/utils.d.ts.map +1 -0
  94. package/build/connect/utils.js +25 -0
  95. package/build/connect/utils.js.map +1 -0
  96. package/build/consts.d.ts +8 -0
  97. package/build/consts.d.ts.map +1 -1
  98. package/build/consts.js +16 -0
  99. package/build/consts.js.map +1 -1
  100. package/build/convert/consts.d.ts +0 -12
  101. package/build/convert/consts.d.ts.map +1 -1
  102. package/build/convert/consts.js +0 -3
  103. package/build/convert/consts.js.map +1 -1
  104. package/build/convert/consts.local.d.ts +55 -0
  105. package/build/convert/consts.local.d.ts.map +1 -0
  106. package/build/convert/consts.local.js +104 -0
  107. package/build/convert/consts.local.js.map +1 -0
  108. package/build/convert/helpers.d.ts.map +1 -1
  109. package/build/convert/helpers.js +1 -102
  110. package/build/convert/helpers.js.map +1 -1
  111. package/build/convert/index.d.ts +1 -0
  112. package/build/convert/index.d.ts.map +1 -1
  113. package/build/convert/index.js +1 -0
  114. package/build/convert/index.js.map +1 -1
  115. package/build/convert/types.d.ts +10 -1
  116. package/build/convert/types.d.ts.map +1 -1
  117. package/build/convert/utils.d.ts +4 -0
  118. package/build/convert/utils.d.ts.map +1 -0
  119. package/build/convert/utils.js +5 -0
  120. package/build/convert/utils.js.map +1 -0
  121. package/build/design/consts.d.ts +37 -0
  122. package/build/design/consts.d.ts.map +1 -1
  123. package/build/design/consts.js +44 -8
  124. package/build/design/consts.js.map +1 -1
  125. package/build/design/runtime.d.ts +2 -103
  126. package/build/design/runtime.d.ts.map +1 -1
  127. package/build/design/runtime.js +1 -44
  128. package/build/design/runtime.js.map +1 -1
  129. package/build/design/schemas.d.ts +1 -9
  130. package/build/design/schemas.d.ts.map +1 -1
  131. package/build/design/schemas.js +1 -1
  132. package/build/design/schemas.js.map +1 -1
  133. package/build/design/types.d.ts +75 -1
  134. package/build/design/types.d.ts.map +1 -1
  135. package/build/dev/schemas.d.ts.map +1 -1
  136. package/build/dev/schemas.js.map +1 -1
  137. package/build/dev/types.local.d.ts +4 -0
  138. package/build/dev/types.local.d.ts.map +1 -0
  139. package/build/dev/types.local.js +2 -0
  140. package/build/dev/types.local.js.map +1 -0
  141. package/build/integrity/consts.d.ts +0 -117
  142. package/build/integrity/consts.d.ts.map +1 -1
  143. package/build/integrity/consts.js +0 -281
  144. package/build/integrity/consts.js.map +1 -1
  145. package/build/integrity/consts.local.d.ts +5 -0
  146. package/build/integrity/consts.local.d.ts.map +1 -0
  147. package/build/integrity/consts.local.js +5 -0
  148. package/build/integrity/consts.local.js.map +1 -0
  149. package/build/integrity/index.d.ts +1 -0
  150. package/build/integrity/index.d.ts.map +1 -1
  151. package/build/integrity/index.js +1 -0
  152. package/build/integrity/index.js.map +1 -1
  153. package/build/integrity/types.d.ts +33 -1
  154. package/build/integrity/types.d.ts.map +1 -1
  155. package/build/integrity/utils.d.ts +88 -0
  156. package/build/integrity/utils.d.ts.map +1 -0
  157. package/build/integrity/utils.js +280 -0
  158. package/build/integrity/utils.js.map +1 -0
  159. package/build/integrity/verify.d.ts.map +1 -1
  160. package/build/integrity/verify.js +2 -1
  161. package/build/integrity/verify.js.map +1 -1
  162. package/build/intent/consts.local.d.ts +4 -0
  163. package/build/intent/consts.local.d.ts.map +1 -0
  164. package/build/intent/consts.local.js +3 -0
  165. package/build/intent/consts.local.js.map +1 -0
  166. package/build/intent/entrypoints.d.ts +0 -1
  167. package/build/intent/entrypoints.d.ts.map +1 -1
  168. package/build/intent/flow.d.ts.map +1 -1
  169. package/build/intent/flow.js +2 -2
  170. package/build/intent/flow.js.map +1 -1
  171. package/build/intent/types.d.ts +2 -0
  172. package/build/intent/types.d.ts.map +1 -1
  173. package/build/metadata/consts.d.ts +33 -0
  174. package/build/metadata/consts.d.ts.map +1 -1
  175. package/build/metadata/consts.js +37 -0
  176. package/build/metadata/consts.js.map +1 -1
  177. package/build/metadata/types.d.ts +1 -33
  178. package/build/metadata/types.d.ts.map +1 -1
  179. package/build/metadata/types.js +1 -38
  180. package/build/metadata/types.js.map +1 -1
  181. package/build/planning/consts.d.ts +13 -1
  182. package/build/planning/consts.d.ts.map +1 -1
  183. package/build/planning/consts.js +13 -0
  184. package/build/planning/consts.js.map +1 -1
  185. package/build/planning/index.d.ts +0 -1
  186. package/build/planning/index.d.ts.map +1 -1
  187. package/build/planning/index.js +0 -1
  188. package/build/planning/index.js.map +1 -1
  189. package/build/planning/landing.d.ts +0 -12
  190. package/build/planning/landing.d.ts.map +1 -1
  191. package/build/planning/landing.js +1 -13
  192. package/build/planning/landing.js.map +1 -1
  193. package/build/planning/schemas.d.ts +37 -0
  194. package/build/planning/schemas.d.ts.map +1 -1
  195. package/build/planning/schemas.js +173 -4
  196. package/build/planning/schemas.js.map +1 -1
  197. package/build/planning/types.d.ts +2 -2
  198. package/build/planning/types.d.ts.map +1 -1
  199. package/build/preview/consts.d.ts +3 -1
  200. package/build/preview/consts.d.ts.map +1 -1
  201. package/build/preview/consts.js +2 -0
  202. package/build/preview/consts.js.map +1 -1
  203. package/build/preview/types.d.ts +17 -2
  204. package/build/preview/types.d.ts.map +1 -1
  205. package/build/scaffold/helpers.d.ts +1 -14
  206. package/build/scaffold/helpers.d.ts.map +1 -1
  207. package/build/scaffold/helpers.js +11 -0
  208. package/build/scaffold/helpers.js.map +1 -1
  209. package/build/scaffold/types.d.ts +2 -0
  210. package/build/scaffold/types.d.ts.map +1 -1
  211. package/build/slot/consts.d.ts +7 -13
  212. package/build/slot/consts.d.ts.map +1 -1
  213. package/build/slot/consts.js +10 -36
  214. package/build/slot/consts.js.map +1 -1
  215. package/build/slot/helpers.d.ts +1 -6
  216. package/build/slot/helpers.d.ts.map +1 -1
  217. package/build/slot/helpers.js.map +1 -1
  218. package/build/slot/index.d.ts +1 -0
  219. package/build/slot/index.d.ts.map +1 -1
  220. package/build/slot/index.js +1 -0
  221. package/build/slot/index.js.map +1 -1
  222. package/build/slot/layout.d.ts +1 -57
  223. package/build/slot/layout.d.ts.map +1 -1
  224. package/build/slot/layout.js +0 -12
  225. package/build/slot/layout.js.map +1 -1
  226. package/build/slot/types.d.ts +55 -1
  227. package/build/slot/types.d.ts.map +1 -1
  228. package/build/slot/utils.d.ts +18 -0
  229. package/build/slot/utils.d.ts.map +1 -0
  230. package/build/slot/utils.js +41 -0
  231. package/build/slot/utils.js.map +1 -0
  232. package/build/topology/card.d.ts +1 -6
  233. package/build/topology/card.d.ts.map +1 -1
  234. package/build/topology/card.js +1 -3
  235. package/build/topology/card.js.map +1 -1
  236. package/build/topology/consts.local.d.ts +4 -0
  237. package/build/topology/consts.local.d.ts.map +1 -0
  238. package/build/topology/consts.local.js +4 -0
  239. package/build/topology/consts.local.js.map +1 -0
  240. package/build/topology/types.d.ts +5 -0
  241. package/build/topology/types.d.ts.map +1 -1
  242. package/package.json +13 -13
  243. package/src/agent/consts.local.ts +47 -0
  244. package/src/agent/consts.ts +61 -0
  245. package/src/agent/index.ts +1 -0
  246. package/src/agent/presentation.ts +4 -147
  247. package/src/agent/types.local.ts +1 -0
  248. package/src/agent/types.ts +40 -0
  249. package/src/areas/consts.ts +7 -0
  250. package/src/areas/tenancy.ts +2 -38
  251. package/src/areas/types.ts +31 -0
  252. package/src/ba/types.ts +1 -1
  253. package/src/blueprint/consts.local.ts +3 -0
  254. package/src/blueprint/consts.ts +52 -0
  255. package/src/blueprint/index.ts +1 -0
  256. package/src/blueprint/types.ts +2 -72
  257. package/src/blueprint/utils.ts +20 -0
  258. package/src/branding.ts +0 -17
  259. package/src/connect/consts.ts +0 -22
  260. package/src/connect/entrypoints.ts +7 -35
  261. package/src/connect/errors.ts +75 -0
  262. package/src/connect/index.ts +1 -0
  263. package/src/connect/references.ts +4 -75
  264. package/src/connect/schemas.ts +11 -0
  265. package/src/connect/types.local.ts +5 -0
  266. package/src/connect/types.ts +124 -1
  267. package/src/connect/utils.ts +23 -0
  268. package/src/consts.ts +17 -0
  269. package/src/convert/consts.local.ts +120 -0
  270. package/src/convert/consts.ts +0 -14
  271. package/src/convert/helpers.ts +1 -119
  272. package/src/convert/index.ts +1 -0
  273. package/src/convert/types.ts +11 -5
  274. package/src/convert/utils.ts +8 -0
  275. package/src/design/consts.ts +48 -0
  276. package/src/design/runtime.ts +2 -115
  277. package/src/design/schemas.ts +2 -10
  278. package/src/design/types.ts +81 -1
  279. package/src/dev/schemas.ts +1 -3
  280. package/src/dev/types.local.ts +4 -0
  281. package/src/integrity/consts.local.ts +5 -0
  282. package/src/integrity/consts.ts +0 -348
  283. package/src/integrity/index.ts +1 -0
  284. package/src/integrity/types.ts +34 -1
  285. package/src/integrity/utils.ts +320 -0
  286. package/src/integrity/verify.ts +2 -4
  287. package/src/intent/consts.local.ts +3 -0
  288. package/src/intent/entrypoints.ts +0 -1
  289. package/src/intent/flow.ts +2 -3
  290. package/src/intent/types.ts +3 -0
  291. package/src/metadata/consts.ts +37 -0
  292. package/src/metadata/types.ts +1 -37
  293. package/src/planning/consts.ts +15 -2
  294. package/src/planning/index.ts +0 -1
  295. package/src/planning/landing.ts +1 -14
  296. package/src/planning/schemas.ts +191 -4
  297. package/src/planning/types.ts +2 -2
  298. package/src/preview/consts.ts +2 -0
  299. package/src/preview/types.ts +19 -0
  300. package/src/scaffold/helpers.ts +1 -4
  301. package/src/scaffold/types.ts +3 -0
  302. package/src/slot/consts.ts +11 -40
  303. package/src/slot/helpers.ts +1 -6
  304. package/src/slot/index.ts +1 -0
  305. package/src/slot/layout.ts +1 -62
  306. package/src/slot/types.ts +57 -1
  307. package/src/slot/utils.ts +45 -0
  308. package/src/topology/card.ts +2 -9
  309. package/src/topology/consts.local.ts +6 -0
  310. package/src/topology/types.ts +6 -0
  311. package/tests/branding.spec.ts +2 -2
  312. package/tests/connect-convert.spec.ts +21 -1
  313. package/tests/connect-errors.spec.ts +34 -1
  314. package/tests/convert.spec.ts +2 -3
  315. package/tests/error-status.spec.ts +7 -1
  316. package/tests/planning.spec.ts +3 -18
  317. package/tests/presentation.spec.ts +2 -4
  318. package/build/planning/flows.d.ts +0 -34
  319. package/build/planning/flows.d.ts.map +0 -1
  320. package/build/planning/flows.js +0 -174
  321. package/build/planning/flows.js.map +0 -1
  322. package/src/planning/flows.ts +0 -204
@@ -1,6 +1,7 @@
1
1
  import { describe, expect, test } from 'bun:test'
2
2
  import { ResilientError } from '@owlmeans/error'
3
- import { ConnectConsentRequired, ConnectOutOfCredits } from '../src/connect/errors.js'
3
+ import { ConnectConfirmationRequired, ConnectConsentRequired, ConnectOutOfCredits } from '../src/connect/errors.js'
4
+ import type { ConnectConfirmation } from '../src/connect/types.js'
4
5
 
5
6
  describe('@owlmeans/viable-common — ConnectOutOfCredits', () => {
6
7
  test('carries its fields fresh, and survives a marshal/unmarshal round trip', () => {
@@ -50,3 +51,35 @@ describe('@owlmeans/viable-common — ConnectConsentRequired', () => {
50
51
  expect((ResilientError.ensure(fresh.marshal()) as ConnectConsentRequired).deadline).toBeUndefined()
51
52
  })
52
53
  })
54
+
55
+ describe('@owlmeans/viable-common — ConnectConfirmationRequired', () => {
56
+ const fields: ConnectConfirmation = {
57
+ action: 'convert-proceed', cap: 1_000_000, spent: 420_000, estimate: 850_000, fromAllowance: 580_000,
58
+ fromCreditLimits: 150_000, moneyUsd: 2.4,
59
+ }
60
+
61
+ test('packs the action, the conversion limit and the stage split, and answers 428', () => {
62
+ const fresh = new ConnectConfirmationRequired(ConnectConfirmationRequired.encode(fields))
63
+
64
+ expect(fresh.message).toBe('viable-connect:confirmation-required:convert-proceed:1000000:420000:850000:580000:150000:2.4')
65
+ expect(fresh).toEqual(expect.objectContaining(fields))
66
+ expect((fresh.constructor as { httpStatus?: number }).httpStatus).toBe(428)
67
+ })
68
+
69
+ test('survives a marshal/unmarshal round trip — only type and message cross a hop', () => {
70
+ const restored = ResilientError.ensure(
71
+ new ConnectConfirmationRequired(ConnectConfirmationRequired.encode({ ...fields, action: 'convert-start' })).marshal()
72
+ )
73
+
74
+ expect(restored).toBeInstanceOf(ConnectConfirmationRequired)
75
+ expect(restored).toEqual(expect.objectContaining({ ...fields, action: 'convert-start' }))
76
+ })
77
+
78
+ test('decode is encode\'s inverse; an unreadable number reads back as 0, never NaN', () => {
79
+ expect(ConnectConfirmationRequired.decode(ConnectConfirmationRequired.encode(fields))).toEqual(fields)
80
+ expect(ConnectConfirmationRequired.encode({ ...fields, moneyUsd: Number.NaN })).toEndWith(':0')
81
+ expect(ConnectConfirmationRequired.decode('convert-start:x')).toEqual({
82
+ action: 'convert-start', cap: 0, spent: 0, estimate: 0, fromAllowance: 0, fromCreditLimits: 0, moneyUsd: 0,
83
+ })
84
+ })
85
+ })
@@ -12,9 +12,8 @@ import {
12
12
  sizeClassOf, stageAfter, storyComplexity
13
13
  } from '../src/convert/helpers.js'
14
14
  import { HISTORY_FILE } from '../src/metadata/consts.js'
15
- import {
16
- conversionStoryDoc, CONVERTED_ORIGIN_DIR, ConversionDecision
17
- } from '../src/convert/consts.js'
15
+ import { CONVERTED_ORIGIN_DIR, ConversionDecision } from '../src/convert/consts.js'
16
+ import { conversionStoryDoc } from '../src/convert/utils.js'
18
17
 
19
18
  /**
20
19
  * Every `*Schema` a module exports.
@@ -19,6 +19,7 @@ const DECLARED: Record<string, number | undefined> = {
19
19
  ConnectOpRefused: 422,
20
20
  ConnectOutOfCredits: 402,
21
21
  ConnectConsentRequired: 428,
22
+ ConnectConfirmationRequired: 428,
22
23
  ConnectOpTimeout: undefined,
23
24
  ProjectResourceError: undefined,
24
25
  ProjectNotFound: 404,
@@ -41,7 +42,7 @@ describe('viable-common refusals — declared HTTP statuses', () => {
41
42
  expect(classes.map(([name]) => name).sort()).toEqual(Object.keys(DECLARED).sort())
42
43
  })
43
44
 
44
- test('balance 402, an absent target 404, a conflicting state 409, refused content 422, a consent only a person gives 428; faults nothing', () => {
45
+ test('balance 402, an absent target 404, a conflicting state 409, refused content 422, a consent or a confirmation only a person gives 428; faults nothing', () => {
45
46
  for (const [name, Class] of classes) {
46
47
  expect([name, statusOf(new Class('x'))]).toEqual([name, DECLARED[name]])
47
48
  }
@@ -60,5 +61,10 @@ describe('viable-common refusals — declared HTTP statuses', () => {
60
61
  new connect.ConnectConsentRequired(connect.ConnectConsentRequired.encode('story', 'https://x.test/?consent=1')).marshal()
61
62
  )
62
63
  expect([statusOf(consent), (consent as connect.ConnectConsentRequired).consentUrl]).toEqual([428, 'https://x.test/?consent=1'])
64
+ const confirmation = ResilientError.ensure(new connect.ConnectConfirmationRequired(connect.ConnectConfirmationRequired.encode({
65
+ action: 'convert-proceed', cap: 1_000_000, spent: 420_000, estimate: 300_000, fromAllowance: 300_000,
66
+ fromCreditLimits: 0, moneyUsd: 0,
67
+ })).marshal())
68
+ expect([statusOf(confirmation), (confirmation as connect.ConnectConfirmationRequired).spent]).toEqual([428, 420_000])
63
69
  })
64
70
  })
@@ -2,32 +2,17 @@ import { describe, expect, test } from 'bun:test'
2
2
  import Ajv from 'ajv'
3
3
  import addFormats from 'ajv-formats'
4
4
  import { ResilientError } from '@owlmeans/error'
5
- import {
6
- canTransit, CodeScope, CodeStyle, intrinsicOf, IntrinsicStatus, makeSchemaRegistry,
7
- SpecificationFormat, TITLE_MAX, transitionsFrom, WorkcardKind,
8
- } from '@owlmeans/planning'
9
- import type { Specification } from '@owlmeans/planning'
5
+ import { canTransit, CodeScope, CodeStyle, intrinsicOf, IntrinsicStatus, makeSchemaRegistry, SpecificationFormat, TITLE_MAX, transitionsFrom, WorkcardKind, type Specification } from '@owlmeans/planning'
10
6
  import { ProjectArea } from '../src/areas/consts.js'
11
7
  import { ConnectingStoryKind, SpecCategory, StoryKind } from '../src/ba/consts.js'
12
8
  import { mergeConnectingStories } from '../src/ba/helpers.js'
13
- import { STORY_DESIGN_VERSION } from '../src/design/consts.js'
9
+ import { STORY_DESIGN_VERSION, StoryActor } from '../src/design/consts.js'
14
10
  import { emptyStoryDesign } from '../src/design/helpers.js'
15
- import { StoryActor } from '../src/design/runtime.js'
16
11
  import type { StoryDesign } from '../src/design/types.js'
17
12
  import {
18
13
  hasLandingSentence, LANDING_STORY_SENTENCE, withLandingSentence,
19
14
  } from '../src/index.js'
20
- import {
21
- isUserChannel, isViableProject, isViableStory, ProjectAgentOccupied, ProjectNotFound,
22
- ProjectStoryMissconfigured, projectBriefOf, storyDraftOf, storyWriteInputOf, userStoryOf,
23
- VIABLE_FLOW_SCHEMAS, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_FLOW_SCHEMA, VIABLE_PROJECT_TYPE,
24
- VIABLE_PROJECT_TYPE_SCHEMA, VIABLE_RESERVED_TYPE_SCHEMAS, VIABLE_SPEC_TYPE, VIABLE_STORY_FLOW,
25
- VIABLE_STORY_FLOW_SCHEMA,
26
- VIABLE_STORY_TYPE, VIABLE_STORY_TYPE_SCHEMA, VIABLE_TYPE_SCHEMAS, ViableChannel,
27
- ViableProjectFieldsSchema, ViableProjectStatus, ViableProjectTransition, ViableRelationship,
28
- ViableSpecCategory, ViableStoryFieldsSchema, ViableStoryStatus, ViableStoryTransition,
29
- } from '../src/planning/index.js'
30
- import type { ViableProjectCard, ViableStoryCard } from '../src/planning/index.js'
15
+ import { isUserChannel, isViableProject, isViableStory, ProjectAgentOccupied, ProjectNotFound, ProjectStoryMissconfigured, projectBriefOf, storyDraftOf, storyWriteInputOf, userStoryOf, VIABLE_FLOW_SCHEMAS, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_FLOW_SCHEMA, VIABLE_PROJECT_TYPE, VIABLE_PROJECT_TYPE_SCHEMA, VIABLE_RESERVED_TYPE_SCHEMAS, VIABLE_SPEC_TYPE, VIABLE_STORY_FLOW, VIABLE_STORY_FLOW_SCHEMA, VIABLE_STORY_TYPE, VIABLE_STORY_TYPE_SCHEMA, VIABLE_TYPE_SCHEMAS, ViableChannel, ViableProjectFieldsSchema, ViableProjectStatus, ViableProjectTransition, ViableRelationship, ViableSpecCategory, ViableStoryFieldsSchema, ViableStoryStatus, ViableStoryTransition, type ViableProjectCard, type ViableStoryCard } from '../src/planning/index.js'
31
16
 
32
17
  const at = '2026-09-16T10:00:00.000Z'
33
18
 
@@ -1,8 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test'
2
- import {
3
- AgentCodeLanguage, AgentMarkdownKind, AgentMessageCategory, AgentMessageRole,
4
- AgentStructuredKind, classifyAgentMessage, isAgentMessageHidden,
5
- } from '../src/agent/presentation.js'
2
+ import { classifyAgentMessage, isAgentMessageHidden } from '../src/agent/presentation.js'
3
+ import { AgentCodeLanguage, AgentMarkdownKind, AgentMessageCategory, AgentMessageRole, AgentStructuredKind } from '../src/agent/consts.js'
6
4
 
7
5
  describe('@owlmeans/viable-common — agent message presentation', () => {
8
6
  test('classifies source and unified diffs with their display language', () => {
@@ -1,34 +0,0 @@
1
- import type { AnyTypeSchema, ProjectTypeSchema, RelationshipType, SpecificationSlot, StatusFlowSchema, WorkcardTypeSchema } from '@owlmeans/planning';
2
- /**
3
- * The story flow.
4
- *
5
- * `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
6
- * a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
7
- * completed story still accepts.
8
- */
9
- export declare const VIABLE_STORY_FLOW_SCHEMA: StatusFlowSchema;
10
- /**
11
- * The project flow.
12
- *
13
- * A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
14
- * `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
15
- * destroying a project is a `delete` plus the platform's cascade — never `archive`.
16
- */
17
- export declare const VIABLE_PROJECT_FLOW_SCHEMA: StatusFlowSchema;
18
- /** A document is written or revised; it has no lifecycle to move through. */
19
- export declare const VIABLE_SPEC_FLOW_SCHEMA: StatusFlowSchema;
20
- /** The brief a person confirms, and the plan the scaffold draws from it. */
21
- export declare const VIABLE_PROJECT_SLOTS: SpecificationSlot[];
22
- /** A story's design — the payload the implementation stage consumes. */
23
- export declare const VIABLE_STORY_SLOTS: SpecificationSlot[];
24
- export declare const VIABLE_STORY_RELATIONSHIPS: RelationshipType[];
25
- export declare const VIABLE_PROJECT_TYPE_SCHEMA: ProjectTypeSchema;
26
- export declare const VIABLE_STORY_TYPE_SCHEMA: WorkcardTypeSchema;
27
- export declare const VIABLE_SPEC_TYPE_SCHEMA: WorkcardTypeSchema;
28
- /** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
29
- export declare const VIABLE_RESERVED_TYPE_SCHEMAS: WorkcardTypeSchema[];
30
- /** Every Viable type — what a planning plugin registers. */
31
- export declare const VIABLE_TYPE_SCHEMAS: AnyTypeSchema[];
32
- /** Every Viable flow — registered beside the types. */
33
- export declare const VIABLE_FLOW_SCHEMAS: StatusFlowSchema[];
34
- //# sourceMappingURL=flows.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../src/planning/flows.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EACvF,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAgB3B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBA6BtC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBA6BxC,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,gBAOrC,CAAA;AAMD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAOnD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAOjD,CAAA;AAKD,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,iBAUxC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAUtC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAOrC,CAAA;AAaD,iGAAiG;AACjG,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,EAI5D,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,aAAa,EAK9C,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAIjD,CAAA"}
@@ -1,174 +0,0 @@
1
- import { IntrinsicPolicy, IntrinsicStatus, SpecificationFormat, WorkcardKind } from '@owlmeans/planning';
2
- import { STORY_DESIGN_VERSION } from '../design/consts.js';
3
- import { StoryDesignSchema } from '../design/schemas.js';
4
- import { ScaffoldPlanSchema } from '../scaffold/schemas.js';
5
- import { VIABLE_BUG_CODE, VIABLE_BUG_TYPE, VIABLE_DESIGN_REVISIONS_KEPT, VIABLE_IMPROVEMENT_CODE, VIABLE_IMPROVEMENT_TYPE, VIABLE_PROJECT_CODE, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_TYPE, VIABLE_REQUIREMENT_CODE, VIABLE_REQUIREMENT_TYPE, VIABLE_SPEC_FLOW, VIABLE_SPEC_TYPE, VIABLE_STORY_CODE, VIABLE_STORY_FLOW, VIABLE_STORY_TYPE, ViableProjectStatus, ViableProjectTransition, ViableRelationship, ViableSpecCategory, ViableSpecStatus, ViableStoryStatus, ViableStoryTransition, ViableTone, } from './consts.js';
6
- import { ViableOpenFieldsSchema, ViableProjectFieldsSchema, ViableSpecFieldsSchema, ViableStoryFieldsSchema, } from './schemas.js';
7
- /**
8
- * The story flow.
9
- *
10
- * `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
11
- * a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
12
- * completed story still accepts.
13
- */
14
- export const VIABLE_STORY_FLOW_SCHEMA = {
15
- id: VIABLE_STORY_FLOW,
16
- version: 1,
17
- statuses: [
18
- { key: ViableStoryStatus.Planned, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
19
- { key: ViableStoryStatus.InProgress, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
20
- { key: ViableStoryStatus.Completed, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Green },
21
- { key: ViableStoryStatus.Failed, intrinsic: IntrinsicStatus.Planned, tone: ViableTone.Red },
22
- ],
23
- transitions: [
24
- {
25
- name: ViableStoryTransition.Start,
26
- from: [ViableStoryStatus.Planned, ViableStoryStatus.Failed],
27
- to: ViableStoryStatus.InProgress,
28
- explicit: true,
29
- },
30
- {
31
- name: ViableStoryTransition.Complete,
32
- from: [ViableStoryStatus.InProgress],
33
- to: ViableStoryStatus.Completed,
34
- explicit: true,
35
- },
36
- {
37
- name: ViableStoryTransition.Fail,
38
- from: [ViableStoryStatus.InProgress],
39
- to: ViableStoryStatus.Failed,
40
- },
41
- { name: ViableStoryTransition.Reset, from: '*', to: ViableStoryStatus.Planned, explicit: true },
42
- ],
43
- };
44
- /**
45
- * The project flow.
46
- *
47
- * A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
48
- * `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
49
- * destroying a project is a `delete` plus the platform's cascade — never `archive`.
50
- */
51
- export const VIABLE_PROJECT_FLOW_SCHEMA = {
52
- id: VIABLE_PROJECT_FLOW,
53
- version: 1,
54
- statuses: [
55
- { key: ViableProjectStatus.Draft, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
56
- { key: ViableProjectStatus.Confirmed, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
57
- { key: ViableProjectStatus.Active, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Green },
58
- { key: ViableProjectStatus.Archived, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Neutral },
59
- ],
60
- transitions: [
61
- {
62
- name: ViableProjectTransition.Confirm,
63
- from: [ViableProjectStatus.Draft],
64
- to: ViableProjectStatus.Confirmed,
65
- explicit: true,
66
- },
67
- {
68
- name: ViableProjectTransition.Activate,
69
- from: [ViableProjectStatus.Confirmed],
70
- to: ViableProjectStatus.Active,
71
- },
72
- { name: ViableProjectTransition.Archive, from: '*', to: ViableProjectStatus.Archived, explicit: true },
73
- {
74
- name: ViableProjectTransition.Reopen,
75
- from: [ViableProjectStatus.Archived],
76
- to: ViableProjectStatus.Active,
77
- explicit: true,
78
- },
79
- ],
80
- };
81
- /** A document is written or revised; it has no lifecycle to move through. */
82
- export const VIABLE_SPEC_FLOW_SCHEMA = {
83
- id: VIABLE_SPEC_FLOW,
84
- version: 1,
85
- statuses: [
86
- { key: ViableSpecStatus.Current, intrinsic: IntrinsicStatus.Closed, initial: true, tone: ViableTone.Neutral },
87
- ],
88
- transitions: [],
89
- };
90
- const slot = (category, format, extra = {}) => ({ category, format, type: VIABLE_SPEC_TYPE, ...extra });
91
- /** The brief a person confirms, and the plan the scaffold draws from it. */
92
- export const VIABLE_PROJECT_SLOTS = [
93
- slot(ViableSpecCategory.Specification, SpecificationFormat.Markdown, { required: true }),
94
- slot(ViableSpecCategory.Vision, SpecificationFormat.Markdown),
95
- slot(ViableSpecCategory.DesignSystem, SpecificationFormat.Markdown),
96
- slot(ViableSpecCategory.Scaffold, SpecificationFormat.Json, {
97
- revisioned: true, keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT, schema: ScaffoldPlanSchema,
98
- }),
99
- ];
100
- /** A story's design — the payload the implementation stage consumes. */
101
- export const VIABLE_STORY_SLOTS = [
102
- slot(ViableSpecCategory.Design, SpecificationFormat.Json, {
103
- revisioned: true,
104
- keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT,
105
- schema: StoryDesignSchema,
106
- version: STORY_DESIGN_VERSION,
107
- }),
108
- ];
109
- const storyLink = (name) => ({ name, from: [VIABLE_STORY_TYPE], to: [VIABLE_STORY_TYPE], single: true });
110
- export const VIABLE_STORY_RELATIONSHIPS = [
111
- storyLink(ViableRelationship.Follows),
112
- storyLink(ViableRelationship.SharesWidget),
113
- storyLink(ViableRelationship.SharesScreen),
114
- ];
115
- export const VIABLE_PROJECT_TYPE_SCHEMA = {
116
- type: VIABLE_PROJECT_TYPE,
117
- kind: WorkcardKind.Project,
118
- version: 1,
119
- fields: ViableProjectFieldsSchema,
120
- flows: [VIABLE_PROJECT_FLOW],
121
- intrinsic: IntrinsicPolicy.Primary,
122
- specifications: VIABLE_PROJECT_SLOTS,
123
- code: VIABLE_PROJECT_CODE,
124
- cardTypes: [VIABLE_STORY_TYPE],
125
- };
126
- export const VIABLE_STORY_TYPE_SCHEMA = {
127
- type: VIABLE_STORY_TYPE,
128
- kind: WorkcardKind.Card,
129
- version: 1,
130
- fields: ViableStoryFieldsSchema,
131
- flows: [VIABLE_STORY_FLOW],
132
- intrinsic: IntrinsicPolicy.Primary,
133
- specifications: VIABLE_STORY_SLOTS,
134
- relationships: VIABLE_STORY_RELATIONSHIPS,
135
- code: VIABLE_STORY_CODE,
136
- };
137
- export const VIABLE_SPEC_TYPE_SCHEMA = {
138
- type: VIABLE_SPEC_TYPE,
139
- kind: WorkcardKind.Specification,
140
- version: 1,
141
- fields: ViableSpecFieldsSchema,
142
- flows: [VIABLE_SPEC_FLOW],
143
- specifications: [],
144
- };
145
- const reserved = (type, code) => ({
146
- type,
147
- kind: WorkcardKind.Card,
148
- version: 1,
149
- fields: ViableOpenFieldsSchema,
150
- flows: [VIABLE_STORY_FLOW],
151
- intrinsic: IntrinsicPolicy.Primary,
152
- specifications: [],
153
- code,
154
- });
155
- /** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
156
- export const VIABLE_RESERVED_TYPE_SCHEMAS = [
157
- reserved(VIABLE_BUG_TYPE, VIABLE_BUG_CODE),
158
- reserved(VIABLE_IMPROVEMENT_TYPE, VIABLE_IMPROVEMENT_CODE),
159
- reserved(VIABLE_REQUIREMENT_TYPE, VIABLE_REQUIREMENT_CODE),
160
- ];
161
- /** Every Viable type — what a planning plugin registers. */
162
- export const VIABLE_TYPE_SCHEMAS = [
163
- VIABLE_PROJECT_TYPE_SCHEMA,
164
- VIABLE_STORY_TYPE_SCHEMA,
165
- VIABLE_SPEC_TYPE_SCHEMA,
166
- ...VIABLE_RESERVED_TYPE_SCHEMAS,
167
- ];
168
- /** Every Viable flow — registered beside the types. */
169
- export const VIABLE_FLOW_SCHEMAS = [
170
- VIABLE_PROJECT_FLOW_SCHEMA,
171
- VIABLE_STORY_FLOW_SCHEMA,
172
- VIABLE_SPEC_FLOW_SCHEMA,
173
- ];
174
- //# sourceMappingURL=flows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../src/planning/flows.ts"],"names":[],"mappings":"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"}
@@ -1,204 +0,0 @@
1
- import { IntrinsicPolicy, IntrinsicStatus, SpecificationFormat, WorkcardKind } from '@owlmeans/planning'
2
- import type {
3
- AnyTypeSchema, ProjectTypeSchema, RelationshipType, SpecificationSlot, StatusFlowSchema,
4
- WorkcardTypeSchema,
5
- } from '@owlmeans/planning'
6
- import { STORY_DESIGN_VERSION } from '../design/consts.js'
7
- import { StoryDesignSchema } from '../design/schemas.js'
8
- import { ScaffoldPlanSchema } from '../scaffold/schemas.js'
9
- import {
10
- VIABLE_BUG_CODE, VIABLE_BUG_TYPE, VIABLE_DESIGN_REVISIONS_KEPT, VIABLE_IMPROVEMENT_CODE,
11
- VIABLE_IMPROVEMENT_TYPE, VIABLE_PROJECT_CODE, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_TYPE,
12
- VIABLE_REQUIREMENT_CODE, VIABLE_REQUIREMENT_TYPE, VIABLE_SPEC_FLOW, VIABLE_SPEC_TYPE,
13
- VIABLE_STORY_CODE, VIABLE_STORY_FLOW, VIABLE_STORY_TYPE, ViableProjectStatus,
14
- ViableProjectTransition, ViableRelationship, ViableSpecCategory, ViableSpecStatus,
15
- ViableStoryStatus, ViableStoryTransition, ViableTone,
16
- } from './consts.js'
17
- import {
18
- ViableOpenFieldsSchema, ViableProjectFieldsSchema, ViableSpecFieldsSchema, ViableStoryFieldsSchema,
19
- } from './schemas.js'
20
-
21
- /**
22
- * The story flow.
23
- *
24
- * `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
25
- * a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
26
- * completed story still accepts.
27
- */
28
- export const VIABLE_STORY_FLOW_SCHEMA: StatusFlowSchema = {
29
- id: VIABLE_STORY_FLOW,
30
- version: 1,
31
- statuses: [
32
- { key: ViableStoryStatus.Planned, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
33
- { key: ViableStoryStatus.InProgress, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
34
- { key: ViableStoryStatus.Completed, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Green },
35
- { key: ViableStoryStatus.Failed, intrinsic: IntrinsicStatus.Planned, tone: ViableTone.Red },
36
- ],
37
- transitions: [
38
- {
39
- name: ViableStoryTransition.Start,
40
- from: [ViableStoryStatus.Planned, ViableStoryStatus.Failed],
41
- to: ViableStoryStatus.InProgress,
42
- explicit: true,
43
- },
44
- {
45
- name: ViableStoryTransition.Complete,
46
- from: [ViableStoryStatus.InProgress],
47
- to: ViableStoryStatus.Completed,
48
- explicit: true,
49
- },
50
- {
51
- name: ViableStoryTransition.Fail,
52
- from: [ViableStoryStatus.InProgress],
53
- to: ViableStoryStatus.Failed,
54
- },
55
- { name: ViableStoryTransition.Reset, from: '*', to: ViableStoryStatus.Planned, explicit: true },
56
- ],
57
- }
58
-
59
- /**
60
- * The project flow.
61
- *
62
- * A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
63
- * `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
64
- * destroying a project is a `delete` plus the platform's cascade — never `archive`.
65
- */
66
- export const VIABLE_PROJECT_FLOW_SCHEMA: StatusFlowSchema = {
67
- id: VIABLE_PROJECT_FLOW,
68
- version: 1,
69
- statuses: [
70
- { key: ViableProjectStatus.Draft, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
71
- { key: ViableProjectStatus.Confirmed, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
72
- { key: ViableProjectStatus.Active, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Green },
73
- { key: ViableProjectStatus.Archived, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Neutral },
74
- ],
75
- transitions: [
76
- {
77
- name: ViableProjectTransition.Confirm,
78
- from: [ViableProjectStatus.Draft],
79
- to: ViableProjectStatus.Confirmed,
80
- explicit: true,
81
- },
82
- {
83
- name: ViableProjectTransition.Activate,
84
- from: [ViableProjectStatus.Confirmed],
85
- to: ViableProjectStatus.Active,
86
- },
87
- { name: ViableProjectTransition.Archive, from: '*', to: ViableProjectStatus.Archived, explicit: true },
88
- {
89
- name: ViableProjectTransition.Reopen,
90
- from: [ViableProjectStatus.Archived],
91
- to: ViableProjectStatus.Active,
92
- explicit: true,
93
- },
94
- ],
95
- }
96
-
97
- /** A document is written or revised; it has no lifecycle to move through. */
98
- export const VIABLE_SPEC_FLOW_SCHEMA: StatusFlowSchema = {
99
- id: VIABLE_SPEC_FLOW,
100
- version: 1,
101
- statuses: [
102
- { key: ViableSpecStatus.Current, intrinsic: IntrinsicStatus.Closed, initial: true, tone: ViableTone.Neutral },
103
- ],
104
- transitions: [],
105
- }
106
-
107
- const slot = (
108
- category: ViableSpecCategory, format: SpecificationFormat, extra: Partial<SpecificationSlot> = {},
109
- ): SpecificationSlot => ({ category, format, type: VIABLE_SPEC_TYPE, ...extra })
110
-
111
- /** The brief a person confirms, and the plan the scaffold draws from it. */
112
- export const VIABLE_PROJECT_SLOTS: SpecificationSlot[] = [
113
- slot(ViableSpecCategory.Specification, SpecificationFormat.Markdown, { required: true }),
114
- slot(ViableSpecCategory.Vision, SpecificationFormat.Markdown),
115
- slot(ViableSpecCategory.DesignSystem, SpecificationFormat.Markdown),
116
- slot(ViableSpecCategory.Scaffold, SpecificationFormat.Json, {
117
- revisioned: true, keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT, schema: ScaffoldPlanSchema,
118
- }),
119
- ]
120
-
121
- /** A story's design — the payload the implementation stage consumes. */
122
- export const VIABLE_STORY_SLOTS: SpecificationSlot[] = [
123
- slot(ViableSpecCategory.Design, SpecificationFormat.Json, {
124
- revisioned: true,
125
- keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT,
126
- schema: StoryDesignSchema,
127
- version: STORY_DESIGN_VERSION,
128
- }),
129
- ]
130
-
131
- const storyLink = (name: ViableRelationship): RelationshipType =>
132
- ({ name, from: [VIABLE_STORY_TYPE], to: [VIABLE_STORY_TYPE], single: true })
133
-
134
- export const VIABLE_STORY_RELATIONSHIPS: RelationshipType[] = [
135
- storyLink(ViableRelationship.Follows),
136
- storyLink(ViableRelationship.SharesWidget),
137
- storyLink(ViableRelationship.SharesScreen),
138
- ]
139
-
140
- export const VIABLE_PROJECT_TYPE_SCHEMA: ProjectTypeSchema = {
141
- type: VIABLE_PROJECT_TYPE,
142
- kind: WorkcardKind.Project,
143
- version: 1,
144
- fields: ViableProjectFieldsSchema,
145
- flows: [VIABLE_PROJECT_FLOW],
146
- intrinsic: IntrinsicPolicy.Primary,
147
- specifications: VIABLE_PROJECT_SLOTS,
148
- code: VIABLE_PROJECT_CODE,
149
- cardTypes: [VIABLE_STORY_TYPE],
150
- }
151
-
152
- export const VIABLE_STORY_TYPE_SCHEMA: WorkcardTypeSchema = {
153
- type: VIABLE_STORY_TYPE,
154
- kind: WorkcardKind.Card,
155
- version: 1,
156
- fields: ViableStoryFieldsSchema,
157
- flows: [VIABLE_STORY_FLOW],
158
- intrinsic: IntrinsicPolicy.Primary,
159
- specifications: VIABLE_STORY_SLOTS,
160
- relationships: VIABLE_STORY_RELATIONSHIPS,
161
- code: VIABLE_STORY_CODE,
162
- }
163
-
164
- export const VIABLE_SPEC_TYPE_SCHEMA: WorkcardTypeSchema = {
165
- type: VIABLE_SPEC_TYPE,
166
- kind: WorkcardKind.Specification,
167
- version: 1,
168
- fields: ViableSpecFieldsSchema,
169
- flows: [VIABLE_SPEC_FLOW],
170
- specifications: [],
171
- }
172
-
173
- const reserved = (type: string, code: WorkcardTypeSchema['code']): WorkcardTypeSchema => ({
174
- type,
175
- kind: WorkcardKind.Card,
176
- version: 1,
177
- fields: ViableOpenFieldsSchema,
178
- flows: [VIABLE_STORY_FLOW],
179
- intrinsic: IntrinsicPolicy.Primary,
180
- specifications: [],
181
- code,
182
- })
183
-
184
- /** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
185
- export const VIABLE_RESERVED_TYPE_SCHEMAS: WorkcardTypeSchema[] = [
186
- reserved(VIABLE_BUG_TYPE, VIABLE_BUG_CODE),
187
- reserved(VIABLE_IMPROVEMENT_TYPE, VIABLE_IMPROVEMENT_CODE),
188
- reserved(VIABLE_REQUIREMENT_TYPE, VIABLE_REQUIREMENT_CODE),
189
- ]
190
-
191
- /** Every Viable type — what a planning plugin registers. */
192
- export const VIABLE_TYPE_SCHEMAS: AnyTypeSchema[] = [
193
- VIABLE_PROJECT_TYPE_SCHEMA,
194
- VIABLE_STORY_TYPE_SCHEMA,
195
- VIABLE_SPEC_TYPE_SCHEMA,
196
- ...VIABLE_RESERVED_TYPE_SCHEMAS,
197
- ]
198
-
199
- /** Every Viable flow — registered beside the types. */
200
- export const VIABLE_FLOW_SCHEMAS: StatusFlowSchema[] = [
201
- VIABLE_PROJECT_FLOW_SCHEMA,
202
- VIABLE_STORY_FLOW_SCHEMA,
203
- VIABLE_SPEC_FLOW_SCHEMA,
204
- ]