@owlmeans/planning 0.1.18-rc.8 → 0.1.18

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 (295) hide show
  1. package/README.md +122 -29
  2. package/agent-meta/manifest.json +131 -4
  3. package/agent-meta/skills/planning/SKILL.md +78 -171
  4. package/agent-meta/skills/planning/parts/collaboration.md +67 -0
  5. package/agent-meta/skills/planning/parts/errors.md +51 -0
  6. package/agent-meta/skills/planning/parts/fold.md +69 -0
  7. package/agent-meta/skills/planning/parts/mounting.md +64 -0
  8. package/agent-meta/skills/planning/parts/types.md +141 -0
  9. package/build/aliases/types.d.ts +72 -0
  10. package/build/aliases/types.d.ts.map +1 -0
  11. package/build/aliases/types.js +2 -0
  12. package/build/aliases/types.js.map +1 -0
  13. package/build/aliases.d.ts +4 -0
  14. package/build/aliases.d.ts.map +1 -0
  15. package/build/aliases.js +28 -0
  16. package/build/aliases.js.map +1 -0
  17. package/build/consts.d.ts +43 -34
  18. package/build/consts.d.ts.map +1 -1
  19. package/build/consts.js +49 -25
  20. package/build/consts.js.map +1 -1
  21. package/build/entrypoints/types.d.ts +105 -0
  22. package/build/entrypoints/types.d.ts.map +1 -0
  23. package/build/entrypoints/types.js +2 -0
  24. package/build/entrypoints/types.js.map +1 -0
  25. package/build/entrypoints.d.ts +5 -1
  26. package/build/entrypoints.d.ts.map +1 -1
  27. package/build/entrypoints.js +24 -6
  28. package/build/entrypoints.js.map +1 -1
  29. package/build/errors.d.ts +41 -0
  30. package/build/errors.d.ts.map +1 -1
  31. package/build/errors.js +61 -0
  32. package/build/errors.js.map +1 -1
  33. package/build/helpers/app/consts.local.d.ts +5 -0
  34. package/build/helpers/app/consts.local.d.ts.map +1 -0
  35. package/build/helpers/app/consts.local.js +5 -0
  36. package/build/helpers/app/consts.local.js.map +1 -0
  37. package/build/helpers/app/types.d.ts +53 -0
  38. package/build/helpers/app/types.d.ts.map +1 -0
  39. package/build/helpers/app/types.js +2 -0
  40. package/build/helpers/app/types.js.map +1 -0
  41. package/build/helpers/app.d.ts +4 -0
  42. package/build/helpers/app.d.ts.map +1 -0
  43. package/build/helpers/app.js +139 -0
  44. package/build/helpers/app.js.map +1 -0
  45. package/build/helpers/apply/consts.local.d.ts +7 -0
  46. package/build/helpers/apply/consts.local.d.ts.map +1 -0
  47. package/build/helpers/apply/consts.local.js +9 -0
  48. package/build/helpers/apply/consts.local.js.map +1 -0
  49. package/build/helpers/apply/types.d.ts +32 -0
  50. package/build/helpers/apply/types.d.ts.map +1 -0
  51. package/build/helpers/apply/types.js +2 -0
  52. package/build/helpers/apply/types.js.map +1 -0
  53. package/build/helpers/apply.d.ts +5 -23
  54. package/build/helpers/apply.d.ts.map +1 -1
  55. package/build/helpers/apply.js +127 -144
  56. package/build/helpers/apply.js.map +1 -1
  57. package/build/helpers/card/types.d.ts +20 -0
  58. package/build/helpers/card/types.d.ts.map +1 -0
  59. package/build/helpers/card/types.js +2 -0
  60. package/build/helpers/card/types.js.map +1 -0
  61. package/build/helpers/card.d.ts +11 -7
  62. package/build/helpers/card.d.ts.map +1 -1
  63. package/build/helpers/card.js +41 -28
  64. package/build/helpers/card.js.map +1 -1
  65. package/build/helpers/changes/consts.local.d.ts +13 -0
  66. package/build/helpers/changes/consts.local.d.ts.map +1 -0
  67. package/build/helpers/changes/consts.local.js +13 -0
  68. package/build/helpers/changes/consts.local.js.map +1 -0
  69. package/build/helpers/changes/types.d.ts +58 -0
  70. package/build/helpers/changes/types.d.ts.map +1 -0
  71. package/build/helpers/changes/types.js +2 -0
  72. package/build/helpers/changes/types.js.map +1 -0
  73. package/build/helpers/changes.d.ts +11 -42
  74. package/build/helpers/changes.d.ts.map +1 -1
  75. package/build/helpers/changes.js +237 -251
  76. package/build/helpers/changes.js.map +1 -1
  77. package/build/helpers/code/types.d.ts +27 -0
  78. package/build/helpers/code/types.d.ts.map +1 -0
  79. package/build/helpers/code/types.js +2 -0
  80. package/build/helpers/code/types.js.map +1 -0
  81. package/build/helpers/code.d.ts +6 -17
  82. package/build/helpers/code.d.ts.map +1 -1
  83. package/build/helpers/code.js +39 -40
  84. package/build/helpers/code.js.map +1 -1
  85. package/build/helpers/index.d.ts +16 -0
  86. package/build/helpers/index.d.ts.map +1 -1
  87. package/build/helpers/index.js +4 -0
  88. package/build/helpers/index.js.map +1 -1
  89. package/build/helpers/query/types.d.ts +23 -0
  90. package/build/helpers/query/types.d.ts.map +1 -0
  91. package/build/helpers/query/types.js +2 -0
  92. package/build/helpers/query/types.js.map +1 -0
  93. package/build/helpers/query.d.ts +25 -17
  94. package/build/helpers/query.d.ts.map +1 -1
  95. package/build/helpers/query.js +108 -280
  96. package/build/helpers/query.js.map +1 -1
  97. package/build/helpers/reply/consts.d.ts +2 -0
  98. package/build/helpers/reply/consts.d.ts.map +1 -0
  99. package/build/helpers/reply/consts.js +2 -0
  100. package/build/helpers/reply/consts.js.map +1 -0
  101. package/build/helpers/reply/types.d.ts +10 -0
  102. package/build/helpers/reply/types.d.ts.map +1 -0
  103. package/build/helpers/reply/types.js +2 -0
  104. package/build/helpers/reply/types.js.map +1 -0
  105. package/build/helpers/reply.d.ts +5 -0
  106. package/build/helpers/reply.d.ts.map +1 -0
  107. package/build/helpers/reply.js +29 -0
  108. package/build/helpers/reply.js.map +1 -0
  109. package/build/helpers/scoped/types.d.ts +73 -0
  110. package/build/helpers/scoped/types.d.ts.map +1 -0
  111. package/build/helpers/scoped/types.js +2 -0
  112. package/build/helpers/scoped/types.js.map +1 -0
  113. package/build/helpers/scoped.d.ts +25 -0
  114. package/build/helpers/scoped.d.ts.map +1 -0
  115. package/build/helpers/scoped.js +223 -0
  116. package/build/helpers/scoped.js.map +1 -0
  117. package/build/helpers/specification/types.d.ts +24 -0
  118. package/build/helpers/specification/types.d.ts.map +1 -0
  119. package/build/helpers/specification/types.js +2 -0
  120. package/build/helpers/specification/types.js.map +1 -0
  121. package/build/helpers/specification.d.ts +9 -13
  122. package/build/helpers/specification.d.ts.map +1 -1
  123. package/build/helpers/specification.js +47 -44
  124. package/build/helpers/specification.js.map +1 -1
  125. package/build/helpers/status/types.d.ts +48 -0
  126. package/build/helpers/status/types.d.ts.map +1 -0
  127. package/build/helpers/status/types.js +2 -0
  128. package/build/helpers/status/types.js.map +1 -0
  129. package/build/helpers/status.d.ts +16 -29
  130. package/build/helpers/status.d.ts.map +1 -1
  131. package/build/helpers/status.js +77 -73
  132. package/build/helpers/status.js.map +1 -1
  133. package/build/helpers/types.local.d.ts +17 -0
  134. package/build/helpers/types.local.d.ts.map +1 -0
  135. package/build/helpers/types.local.js +2 -0
  136. package/build/helpers/types.local.js.map +1 -0
  137. package/build/helpers/validate/types.d.ts +31 -0
  138. package/build/helpers/validate/types.d.ts.map +1 -0
  139. package/build/helpers/validate/types.js +2 -0
  140. package/build/helpers/validate/types.js.map +1 -0
  141. package/build/helpers/validate.d.ts +8 -19
  142. package/build/helpers/validate.d.ts.map +1 -1
  143. package/build/helpers/validate.js +79 -79
  144. package/build/helpers/validate.js.map +1 -1
  145. package/build/helpers/wire/types.d.ts +28 -0
  146. package/build/helpers/wire/types.d.ts.map +1 -0
  147. package/build/helpers/wire/types.js +2 -0
  148. package/build/helpers/wire/types.js.map +1 -0
  149. package/build/helpers/wire.d.ts +4 -0
  150. package/build/helpers/wire.d.ts.map +1 -0
  151. package/build/helpers/wire.js +216 -0
  152. package/build/helpers/wire.js.map +1 -0
  153. package/build/i18n/be.json +5 -0
  154. package/build/i18n/de.json +5 -0
  155. package/build/i18n/en.json +5 -0
  156. package/build/i18n/es.json +5 -0
  157. package/build/i18n/fr.json +5 -0
  158. package/build/i18n/pl.json +5 -0
  159. package/build/i18n/ru.json +5 -0
  160. package/build/i18n/uk.json +5 -0
  161. package/build/i18n.js +3 -3
  162. package/build/i18n.js.map +1 -1
  163. package/build/index.d.ts +7 -0
  164. package/build/index.d.ts.map +1 -1
  165. package/build/index.js +3 -0
  166. package/build/index.js.map +1 -1
  167. package/build/models/index.d.ts +2 -3
  168. package/build/models/index.d.ts.map +1 -1
  169. package/build/models/index.js +1 -15
  170. package/build/models/index.js.map +1 -1
  171. package/build/models/model.d.ts +5 -0
  172. package/build/models/model.d.ts.map +1 -0
  173. package/build/models/model.js +16 -0
  174. package/build/models/model.js.map +1 -0
  175. package/build/models/project.d.ts +2 -1
  176. package/build/models/project.d.ts.map +1 -1
  177. package/build/models/project.js.map +1 -1
  178. package/build/models/specification.d.ts +2 -1
  179. package/build/models/specification.d.ts.map +1 -1
  180. package/build/models/specification.js.map +1 -1
  181. package/build/models/types.d.ts +69 -0
  182. package/build/models/types.d.ts.map +1 -0
  183. package/build/models/types.js +2 -0
  184. package/build/models/types.js.map +1 -0
  185. package/build/models/workcard.d.ts +2 -1
  186. package/build/models/workcard.d.ts.map +1 -1
  187. package/build/models/workcard.js +12 -12
  188. package/build/models/workcard.js.map +1 -1
  189. package/build/registry.d.ts +3 -2
  190. package/build/registry.d.ts.map +1 -1
  191. package/build/registry.js +51 -3
  192. package/build/registry.js.map +1 -1
  193. package/build/resources/mentions.d.ts +4 -0
  194. package/build/resources/mentions.d.ts.map +1 -0
  195. package/build/resources/mentions.js +15 -0
  196. package/build/resources/mentions.js.map +1 -0
  197. package/build/resources/protocol/types.d.ts +30 -0
  198. package/build/resources/protocol/types.d.ts.map +1 -0
  199. package/build/resources/protocol/types.js +2 -0
  200. package/build/resources/protocol/types.js.map +1 -0
  201. package/build/resources/protocol.d.ts +6 -0
  202. package/build/resources/protocol.d.ts.map +1 -0
  203. package/build/resources/protocol.js +31 -0
  204. package/build/resources/protocol.js.map +1 -0
  205. package/build/resources/types.d.ts +146 -0
  206. package/build/resources/types.d.ts.map +1 -0
  207. package/build/resources/types.js +2 -0
  208. package/build/resources/types.js.map +1 -0
  209. package/build/resources/types.local.d.ts +6 -0
  210. package/build/resources/types.local.d.ts.map +1 -0
  211. package/build/resources/types.local.js +2 -0
  212. package/build/resources/types.local.js.map +1 -0
  213. package/build/schemas.d.ts +21 -2
  214. package/build/schemas.d.ts.map +1 -1
  215. package/build/schemas.js +164 -2
  216. package/build/schemas.js.map +1 -1
  217. package/build/types.d.ts +330 -151
  218. package/build/types.d.ts.map +1 -1
  219. package/build/utils.d.ts +6 -0
  220. package/build/utils.d.ts.map +1 -0
  221. package/build/utils.js +6 -0
  222. package/build/utils.js.map +1 -0
  223. package/package.json +13 -13
  224. package/src/aliases/types.ts +41 -0
  225. package/src/aliases.ts +34 -0
  226. package/src/consts.ts +50 -25
  227. package/src/entrypoints/types.ts +77 -0
  228. package/src/entrypoints.ts +53 -24
  229. package/src/errors.ts +71 -0
  230. package/src/helpers/app/consts.local.ts +5 -0
  231. package/src/helpers/app/types.ts +54 -0
  232. package/src/helpers/app.ts +158 -0
  233. package/src/helpers/apply/consts.local.ts +10 -0
  234. package/src/helpers/apply/types.ts +32 -0
  235. package/src/helpers/apply.ts +141 -153
  236. package/src/helpers/card/types.ts +20 -0
  237. package/src/helpers/card.ts +59 -33
  238. package/src/helpers/changes/consts.local.ts +17 -0
  239. package/src/helpers/changes/types.ts +66 -0
  240. package/src/helpers/changes.ts +270 -280
  241. package/src/helpers/code/types.ts +31 -0
  242. package/src/helpers/code.ts +52 -48
  243. package/src/helpers/index.ts +17 -0
  244. package/src/helpers/query/types.ts +26 -0
  245. package/src/helpers/query.ts +144 -314
  246. package/src/helpers/reply/consts.ts +1 -0
  247. package/src/helpers/reply/types.ts +13 -0
  248. package/src/helpers/reply.ts +27 -0
  249. package/src/helpers/scoped/types.ts +78 -0
  250. package/src/helpers/scoped.ts +281 -0
  251. package/src/helpers/specification/types.ts +26 -0
  252. package/src/helpers/specification.ts +69 -51
  253. package/src/helpers/status/types.ts +46 -0
  254. package/src/helpers/status.ts +117 -93
  255. package/src/helpers/types.local.ts +18 -0
  256. package/src/helpers/validate/types.ts +31 -0
  257. package/src/helpers/validate.ts +89 -77
  258. package/src/helpers/wire/types.ts +31 -0
  259. package/src/helpers/wire.ts +252 -0
  260. package/src/i18n/be.json +5 -0
  261. package/src/i18n/de.json +5 -0
  262. package/src/i18n/en.json +5 -0
  263. package/src/i18n/es.json +5 -0
  264. package/src/i18n/fr.json +5 -0
  265. package/src/i18n/pl.json +5 -0
  266. package/src/i18n/ru.json +5 -0
  267. package/src/i18n/uk.json +5 -0
  268. package/src/i18n.ts +4 -3
  269. package/src/index.ts +8 -0
  270. package/src/models/index.ts +2 -17
  271. package/src/models/model.ts +18 -0
  272. package/src/models/project.ts +2 -1
  273. package/src/models/specification.ts +2 -1
  274. package/src/models/types.ts +70 -0
  275. package/src/models/workcard.ts +14 -16
  276. package/src/registry.ts +55 -4
  277. package/src/resources/mentions.ts +11 -0
  278. package/src/resources/protocol/types.ts +21 -0
  279. package/src/resources/protocol.ts +36 -0
  280. package/src/resources/types.local.ts +5 -0
  281. package/src/resources/types.ts +148 -0
  282. package/src/schemas.ts +179 -4
  283. package/src/types.ts +334 -130
  284. package/src/utils.ts +9 -0
  285. package/tests/app.spec.ts +188 -0
  286. package/tests/apply.spec.ts +95 -31
  287. package/tests/code.spec.ts +9 -9
  288. package/tests/csp.spec.ts +122 -0
  289. package/tests/entrypoints.spec.ts +18 -2
  290. package/tests/error-status.spec.ts +6 -1
  291. package/tests/models.spec.ts +24 -16
  292. package/tests/query.spec.ts +13 -15
  293. package/tests/schemas.spec.ts +8 -8
  294. package/tests/scoped.spec.ts +161 -0
  295. package/tests/status.spec.ts +31 -22
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: types
3
+ description: Declaring card, project and specification types and status flows as closed data, the application's own definition properties and base card fields (`app`), the data-defined layers (code, entity, project) and retirement, and the rules every record schema keeps.
4
+ metadata:
5
+ purposes: data
6
+ mentions: WorkcardTypeSchema, ProjectTypeSchema, StatusFlowSchema, SpecificationSlot, CodePolicy, makeSchemaRegistry, scopedSchemaHelper, resolveScopedBundle, ScopedSchemaRecord, ScopedSchemaBundle, SchemaStore, putType, putFlow, putAssigneeType, scopedCardTypes, overridable, appSchemaHelper, PlanningAppDeclarations, PlanningAppSchema, registerApp, fieldsSchema
7
+ ---
8
+ <!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
9
+
10
+ # @owlmeans/planning — Types, flows and schemas
11
+
12
+ ## Declaring a type
13
+
14
+ A `WorkcardTypeSchema` / `ProjectTypeSchema` is plain data registered through a plugin's `schemas`
15
+ or `makeSchemaRegistry({ types, flows })`. **Every declaration schema is closed** — these are ALL
16
+ the keys:
17
+
18
+ | Declaration | Required | Optional |
19
+ |---|---|---|
20
+ | card / specification type | `type` (its key), `kind`, `version`, `fields`, `flows` (at least one), `specifications` | `intrinsic`, `relationships`, `labels`, `code`, `label`, `tone`, `icon`, `overridable`, `app` |
21
+ | project type | the same, plus `cardTypes` | `projectTypes`, `scopedCardTypes` |
22
+ | flow | `id` (its key), `version`, `statuses` (at least one), `transitions` | `label`, `tone`, `icon`, `overridable`, `app` |
23
+ | status | `key`, `intrinsic` | `initial`, `terminal`, `label`, `tone` |
24
+ | transition rule | `name`, `from` (status keys or `'*'`), `to` | `label`, `explicit` |
25
+
26
+ The display name is `label` everywhere; a type or a flow has no `name`, `key` or `description`
27
+ (`key` belongs to a status, `name` to a rule). Anything else the application keeps about a type or
28
+ a flow — a `description`, an origin's attribute — goes in its `app` bag, which the application
29
+ declares (below). As data, `definitions` refuses an extra key with `SchemaInvalid`; in code the
30
+ registry does not validate a declaration, so only TypeScript's excess-property check catches it —
31
+ keep the literal typed.
32
+
33
+ - `fields` — the AJV schema of `fields`; the registry compiles and caches it (`validator(type)`).
34
+ - `specifications` — the slots this type's cards carry as children. A slot may name its
35
+ specification `type`; otherwise `specificationHelper.specificationTypeOf` takes the only registered specification
36
+ type, then the one sharing the parent type's prefix (`viable:project` → `viable:spec`).
37
+ - `code` — `CodePolicy { prefix?, style: random|sequential|slug, length?, uppercase?, uniqueWithin:
38
+ parent|entity, mutable? }`. A code is fixed once minted unless `mutable`.
39
+ - `relationships` — the edge types a card may start (`single` = at most one per card).
40
+ - `labels` — the allowed labels (any when omitted).
41
+ - A project type lists `cardTypes` (and `projectTypes` for nesting) its children may have;
42
+ `scopedCardTypes: true` also admits card types defined as data (below).
43
+ - `overridable: true` on a code type or flow opens it to a data-defined override.
44
+ - `tone` / `icon` (type, flow) and `tone` (status) — PRESENTATION hints the package stores as free
45
+ text of at most 64 characters, neither validating nor rendering them. Their standard values and
46
+ their standard editor and renderer are `@owlmeans/web-panel/picker`: `tone` a palette key
47
+ (`PICKER_COLOR_KEYS` — red … graphite, 24) or a lowercase `#rrggbb` when the editor allows custom
48
+ colours, `icon` a kebab-case lucide name of its catalogue (`PICKER_ICON_NAMES`). A person edits a
49
+ type's or a flow's mark with `IconColorPicker` and shows it with `IconTile` / `ColorDot`; a
50
+ status's `tone` usually names a meaning the application's own palette maps (`ColorPicker` with
51
+ `colors`). An unknown value renders the picker's fallback (`slate`, `circle`); server code and
52
+ seeds read the data React-free from `@owlmeans/web-panel/picker/vocabulary`.
53
+
54
+ ## Application-declared properties (`app`)
55
+
56
+ Two kinds of field exist: the custom ones a data-defined type gives its cards (its `fields`,
57
+ written by the app's people), and the ones the APPLICATION pregenerates in code for every type,
58
+ flow or card. The latter are `PlanningAppDeclarations { type?, flow?, card? }`, declared in
59
+ `PlanningPlugin.schemas.app` (and `PlanningServiceOptions.schemas.app`) and served in the bundle
60
+ (`bundle.app`, `registry.app()`):
61
+
62
+ ```ts
63
+ schemas: { app: {
64
+ type: { properties: { description: { type: 'string', maxLength: 2000 } } },
65
+ flow: { properties: { description: { type: 'string' } } },
66
+ card: { properties: { priority: { type: 'string', enum: ['low', 'high'] } } },
67
+ } }
68
+ // then a type: { type: 'wm:task', …, app: { description: 'Work items' } }
69
+ ```
70
+
71
+ - **Closed form** (`appSchemaHelper.assertDeclarations` → `SchemaInvalid('app:<kind>:…')`): each
72
+ kind is `{ type?: 'object', properties, required? }` and nothing else; property names hold no
73
+ `.` or `$`; every `required` name is declared in the same declaration; outside a browser document
74
+ the schema compiles. A page never compiles (a strict `script-src` refuses Ajv's code generation):
75
+ building, loading or merging a registry there runs the closed-form checks only, and what it
76
+ registers is the bundle its server compiled when the plugins were registered.
77
+ - **Merge** (`appSchemaHelper.merge`, run by the server's plugin registry on every `use` and by
78
+ the client over the served bundle): the service's own `schemas.app` first, then each plugin's in
79
+ plugin order (`order` ascending, registration order among equals). Per kind `properties` are
80
+ united — a later declaration of a name replaces the earlier one whole — and `required` is united.
81
+ A plugin replaced by name takes its declarations with it. The result is normalized
82
+ (`type: 'object'`); nothing declared → `undefined` and no `app` key in any bundle.
83
+ - **`type` / `flow` → the definition's `app` bag**, closed over the declared properties
84
+ (`additionalProperties: false`; an absent bag reads `{}`, so a `required` property makes the bag
85
+ mandatory). Checked on every data-defined write — `define`, `put*`, `seed`, the wire
86
+ `schema.define` — by `assertTypeSchema(type, flows, app)` / `assertFlowSchema(flow, app)`. A kind
87
+ the application does not declare refuses any bag (`<kind>:<key>:app:undeclared`). Code
88
+ declarations are not validated (as every code declaration); a record written under earlier
89
+ declarations still resolves.
90
+ - **`card` → base `fields` of every type of kind `card`**, code or data-defined
91
+ (`registry.fieldsSchema(type)`, compiled by `registry.validator(type)`). The type's schema stays
92
+ the root (its `#/…` references still resolve); each base name absent from its top-level
93
+ `properties` is added as `{}` — so its `additionalProperties: false` never refuses a base field —
94
+ and the base object schema is appended to its `allOf`. A type that declares a base name itself
95
+ narrows it (both apply). Projects and specifications are untouched. A required base field, like a
96
+ newly required type field, refuses every later write of a card that lacks it.
97
+ - Without declarations every behavior is the previous one: `fieldsSchema(type)` IS `type.fields`.
98
+
99
+ ## Data-defined types and flows
100
+
101
+ Card types, assignee types and status flows may also be DATA — `ScopedSchemaRecord`s a store keeps
102
+ behind the optional `PlanningStore.schemas` port. Card types and flows layer **code → entity → project**;
103
+ assignee types layer **code → entity** and refuse a project-local declaration:
104
+
105
+ - `code` is the plugin registry (the default), `entity` an organization-wide record
106
+ (`project` absent), `project` a record of one project card. A project record overrides an
107
+ organization one of the same key.
108
+ - **Card types, assignee types and flows are data.** A code key is sealed unless its declaration says
109
+ `overridable: true`; project and specification types are always code's (`scopedSchemaHelper.assertOverridable` →
110
+ `SchemaSealed`).
111
+ - A record's `version` is its compare-and-set token and is written into the declaration's own
112
+ `version`: a write lands only at its layer's next version, 1 for a new key (`SchemaConflict`).
113
+ - The closed-form checks are shared by every store: `scopedSchemaHelper.assertFlowSchema` (the declaration's schema,
114
+ unique status keys, every `to` declared, `from` `'*'` or declared statuses, the `app` bag) and
115
+ `scopedSchemaHelper.assertTypeSchema` (the `card` kind, the `app` bag, a `fields` schema that
116
+ compiles with the base card fields, unique flows that resolve) — `SchemaInvalid`.
117
+ - **Retired** means offered for nothing new, still resolved for what uses it: a retired record
118
+ gives way to a live declaration below it, and a key retired in every layer resolves retired —
119
+ present in the bundle's `types`/`flows`, listed in `retired`. A flow cannot be retired while a
120
+ live type of an affected layer still runs it (`scopedSchemaHelper.flowInUse` → `SchemaInUse`).
121
+ - `scopedSchemaHelper.resolveScopedBundle(code, records, scope)` is the ONE resolution (pure);
122
+ `scopedRegistryOf` is its read-only registry (`originOf`, `isRetired`; `register*`/`load` refuse). A
123
+ `ScopedSchemaBundle` extends the plain bundle with `scope`, `revision`, `origins`, `retired`, so a
124
+ reader of the plain bundle is unaffected; the code bundle's `app` passes through.
125
+ - `SchemaStore`: `list(where)`, `put(record)` (the CAS), `purge({ entityId, project })`,
126
+ `revision(entityId)` (monotonic per organization), optional `watch(listener)`.
127
+ - `PlanningFacade.definitions` (present only where the store has the port): `bundle(project?)`,
128
+ `registry(project?)`, `records`, `putType`/`putFlow`/`putAssigneeType` (CAS on the declaration's version),
129
+ `define` (each at its layer's next version, flows first), `seed` (only the keys the layer lacks),
130
+ `retire(kind, key, { project? })`. The declaration still carries its own `version` (any number
131
+ ≥ 1 for `define`/`seed`, which assign the layer's next one; the exact next one for `put*`), and
132
+ a project layer is `{ project: <project card id> }` in the second argument (a `define` call:
133
+ `server-planning` → Creating and reading a card).
134
+
135
+ ## Schema rules
136
+
137
+ A record schema may become a Mongo `$jsonSchema`, so every exported schema keeps two rules: **no
138
+ `integer`** (`number` only) and **every optional property `nullable: true`** (an enum then admits
139
+ `null` too). No `oneOf`/`anyOf` inside a record schema. Build type arrays per schema, never share
140
+ one object between schemas — ajv may extend a `type` array while compiling. The walk that pins this
141
+ is part of the package's own tests.
@@ -0,0 +1,72 @@
1
+ /** The aliases one planning tree answers under — every one derived from the mount's base alias. */
2
+ export interface PlanningAliases {
3
+ readonly base: string;
4
+ readonly schema: {
5
+ readonly list: string;
6
+ };
7
+ readonly card: {
8
+ readonly list: string;
9
+ readonly summary: string;
10
+ readonly get: string;
11
+ readonly transitions: string;
12
+ readonly specifications: string;
13
+ };
14
+ readonly spec: {
15
+ readonly get: string;
16
+ readonly revisions: string;
17
+ };
18
+ readonly link: {
19
+ readonly list: string;
20
+ };
21
+ readonly transition: {
22
+ readonly get: string;
23
+ };
24
+ readonly execute: string;
25
+ readonly commit: {
26
+ readonly get: string;
27
+ readonly events: string;
28
+ };
29
+ }
30
+ /** The aliases of the leaves a tree gains with `definitions: true`. */
31
+ export interface PlanningDefinitionAliases {
32
+ readonly define: string;
33
+ }
34
+ export interface PlanningAliasHelper {
35
+ planningResourceAliases: (base: string) => PlanningResourceAliases;
36
+ /**
37
+ * The aliases one planning tree answers under, derived from the mount's base alias.
38
+ *
39
+ * Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
40
+ * which is why nothing here is a global constant.
41
+ */
42
+ planningAliases: (base: string) => PlanningAliases;
43
+ /**
44
+ * The aliases of the leaves a tree gains with `definitions: true` — kept apart from
45
+ * {@link PlanningAliasHelper.planningAliases} so a tree declared without them names no alias it
46
+ * does not declare.
47
+ */
48
+ planningDefinitionAliases: (base: string) => PlanningDefinitionAliases;
49
+ }
50
+ export interface PlanningResourceAliases {
51
+ assignees: {
52
+ get: string;
53
+ list: string;
54
+ write: string;
55
+ };
56
+ teams: {
57
+ get: string;
58
+ list: string;
59
+ write: string;
60
+ };
61
+ comments: {
62
+ get: string;
63
+ list: string;
64
+ write: string;
65
+ };
66
+ mentions: {
67
+ get: string;
68
+ list: string;
69
+ write: string;
70
+ };
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/aliases/types.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAChC,CAAA;IACD,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;AAED,uEAAuE;AACvE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAA;IAClE;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAA;IAClD;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,yBAAyB,CAAA;CACvE;AAED,MAAM,WAAW,uBAAuB;IAAG,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/aliases/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { PlanningAliasHelper } from './aliases/types.js';
2
+ export declare const createPlanningAliasHelper: () => PlanningAliasHelper;
3
+ export declare const planningAliasHelper: PlanningAliasHelper;
4
+ //# sourceMappingURL=aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,mBAAmB,EAAsD,MAAM,oBAAoB,CAAA;AAElI,eAAO,MAAM,yBAAyB,QAAO,mBA6B5C,CAAA;AAED,eAAO,MAAM,mBAAmB,qBAA8B,CAAA"}
@@ -0,0 +1,28 @@
1
+ export const createPlanningAliasHelper = () => {
2
+ const planningAliases = (base) => Object.freeze({
3
+ base,
4
+ schema: Object.freeze({ list: `${base}:schema:list` }),
5
+ card: Object.freeze({
6
+ list: `${base}:card:list`,
7
+ summary: `${base}:card:summary`,
8
+ get: `${base}:card:get`,
9
+ transitions: `${base}:card:transitions`,
10
+ specifications: `${base}:card:specifications`,
11
+ }),
12
+ spec: Object.freeze({
13
+ get: `${base}:specification:get`,
14
+ revisions: `${base}:specification:revisions`,
15
+ }),
16
+ link: Object.freeze({ list: `${base}:link:list` }),
17
+ transition: Object.freeze({ get: `${base}:transition:get` }),
18
+ execute: `${base}:execute`,
19
+ commit: Object.freeze({ get: `${base}:commit:get`, events: `${base}:commit:events` }),
20
+ });
21
+ const planningDefinitionAliases = (base) => Object.freeze({
22
+ define: `${base}:schema:define`,
23
+ });
24
+ const planningResourceAliases = (base) => Object.freeze(Object.fromEntries(['assignees', 'teams', 'comments', 'mentions'].map(name => [name, Object.freeze({ get: `${base}:${name}:get`, list: `${base}:${name}:list`, write: `${base}:${name}:write` })])));
25
+ return { planningAliases, planningDefinitionAliases, planningResourceAliases };
26
+ };
27
+ export const planningAliasHelper = createPlanningAliasHelper();
28
+ //# sourceMappingURL=aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliases.js","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAmB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACvE,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;QACtD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG,IAAI,YAAY;YACzB,OAAO,EAAE,GAAG,IAAI,eAAe;YAC/B,GAAG,EAAE,GAAG,IAAI,WAAW;YACvB,WAAW,EAAE,GAAG,IAAI,mBAAmB;YACvC,cAAc,EAAE,GAAG,IAAI,sBAAsB;SAC9C,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,GAAG,IAAI,oBAAoB;YAChC,SAAS,EAAE,GAAG,IAAI,0BAA0B;SAC7C,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC5D,OAAO,EAAE,GAAG,IAAI,UAAU;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,gBAAgB,EAAE,CAAC;KACtF,CAAC,CAAA;IAEF,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAA6B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3F,MAAM,EAAE,GAAG,IAAI,gBAAgB;KAChC,CAAC,CAAA;IAEF,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAA2B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CACzG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAChL,CAAuC,CAAA;IACxC,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAA;AAChF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAA"}
package/build/consts.d.ts CHANGED
@@ -52,6 +52,49 @@ export declare enum CodeScope {
52
52
  Parent = "parent",
53
53
  Entity = "entity"
54
54
  }
55
+ /** What a data-defined schema record declares: a card type or a status flow. */
56
+ export declare enum PlanningSchemaKind {
57
+ Type = "type",
58
+ Flow = "flow",
59
+ AssigneeType = "assignee-type"
60
+ }
61
+ export declare enum AssigneeKind {
62
+ Human = "human",
63
+ NonHuman = "non-human"
64
+ }
65
+ export declare enum PlanningResourceKind {
66
+ Workcard = "workcard",
67
+ Assignee = "assignee",
68
+ Team = "team",
69
+ Comment = "comment",
70
+ Mention = "mention"
71
+ }
72
+ export declare enum ProjectMode {
73
+ Opened = "opened",
74
+ Closed = "closed"
75
+ }
76
+ export declare const PLANNING_TEAM_MEMBER = "planning:team-member";
77
+ export declare const PLANNING_PROJECT_TEAM = "planning:project-team";
78
+ export declare const PLANNING_REPORTER = "planning:reporter";
79
+ export declare const PLANNING_ASSIGNEE = "planning:assignee";
80
+ /**
81
+ * The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
82
+ * `entity` an organization-wide record, `project` a record scoped to one project card.
83
+ */
84
+ export declare enum SchemaOrigin {
85
+ Code = "code",
86
+ Entity = "entity",
87
+ Project = "project"
88
+ }
89
+ /** How a `schema.define` request writes its declarations. */
90
+ export declare enum SchemaWriteMode {
91
+ /** Each declaration lands at its layer's next version. */
92
+ Define = "define",
93
+ /** Compare-and-set: each declaration's `version` must be its layer's next version. */
94
+ Put = "put",
95
+ /** Only keys the layer lacks are written, at version 1. */
96
+ Seed = "seed"
97
+ }
55
98
  /** Service alias of the planning facade host. Identical on the server and in a client. */
56
99
  export declare const PLANNING_SERVICE = "planning";
57
100
  /** The path segment the protocol tree answers under when the mount names none. */
@@ -89,38 +132,4 @@ export declare const REF_MAX = 1024;
89
132
  export declare const QUERY_TEXT_MAX = 256;
90
133
  /** The longest list a wire query carries in one value (ids, parents). */
91
134
  export declare const MAX_QUERY_LIST = 500;
92
- /**
93
- * The aliases one planning tree answers under, derived from the mount's base alias.
94
- *
95
- * Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
96
- * which is why nothing here is a global constant.
97
- */
98
- export declare const planningAliases: (base: string) => Readonly<{
99
- base: string;
100
- schema: Readonly<{
101
- list: `${string}:schema:list`;
102
- }>;
103
- card: Readonly<{
104
- list: `${string}:card:list`;
105
- summary: `${string}:card:summary`;
106
- get: `${string}:card:get`;
107
- transitions: `${string}:card:transitions`;
108
- specifications: `${string}:card:specifications`;
109
- }>;
110
- spec: Readonly<{
111
- get: `${string}:specification:get`;
112
- revisions: `${string}:specification:revisions`;
113
- }>;
114
- link: Readonly<{
115
- list: `${string}:link:list`;
116
- }>;
117
- transition: Readonly<{
118
- get: `${string}:transition:get`;
119
- }>;
120
- execute: `${string}:execute`;
121
- commit: Readonly<{
122
- get: `${string}:commit:get`;
123
- events: `${string}:commit:events`;
124
- }>;
125
- }>;
126
135
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,aAAa,kBAAkB;CAChC;AAED;;;;;GAKG;AACH,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAED,kGAAkG;AAClG,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAIpE,CAAA;AAEF,yEAAyE;AACzE,oBAAY,eAAe;IACzB,yCAAyC;IACzC,OAAO,YAAY;IACnB,+EAA+E;IAC/E,GAAG,QAAQ;CACZ;AAED,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,0CAA0C;AAC1C,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,kFAAkF;AAClF,eAAO,MAAM,aAAa,cAAc,CAAA;AAExC,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,sFAAsF;AACtF,eAAO,MAAM,aAAa,aAAa,CAAA;AAEvC,sDAAsD;AACtD,eAAO,MAAM,UAAU,MAAM,CAAA;AAE7B,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAC5C,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,gEAAgE;AAChE,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,eAAO,MAAM,SAAS,OAAO,CAAA;AAC7B,eAAO,MAAM,eAAe,QAAQ,CAAA;AACpC,eAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,UAAU,KAAK,CAAA;AAC5B,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,QAAQ,UAAY,CAAA;AACjC,eAAO,MAAM,SAAS,MAAM,CAAA;AAC5B,eAAO,MAAM,OAAO,MAAM,CAAA;AAC1B,eAAO,MAAM,OAAO,OAAO,CAAA;AAC3B,eAAO,MAAM,cAAc,MAAM,CAAA;AACjC,yEAAyE;AACzE,eAAO,MAAM,cAAc,MAAM,CAAA;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB1C,CAAA"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"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"}
package/build/consts.js CHANGED
@@ -64,6 +64,55 @@ export var CodeScope;
64
64
  CodeScope["Parent"] = "parent";
65
65
  CodeScope["Entity"] = "entity";
66
66
  })(CodeScope || (CodeScope = {}));
67
+ /** What a data-defined schema record declares: a card type or a status flow. */
68
+ export var PlanningSchemaKind;
69
+ (function (PlanningSchemaKind) {
70
+ PlanningSchemaKind["Type"] = "type";
71
+ PlanningSchemaKind["Flow"] = "flow";
72
+ PlanningSchemaKind["AssigneeType"] = "assignee-type";
73
+ })(PlanningSchemaKind || (PlanningSchemaKind = {}));
74
+ export var AssigneeKind;
75
+ (function (AssigneeKind) {
76
+ AssigneeKind["Human"] = "human";
77
+ AssigneeKind["NonHuman"] = "non-human";
78
+ })(AssigneeKind || (AssigneeKind = {}));
79
+ export var PlanningResourceKind;
80
+ (function (PlanningResourceKind) {
81
+ PlanningResourceKind["Workcard"] = "workcard";
82
+ PlanningResourceKind["Assignee"] = "assignee";
83
+ PlanningResourceKind["Team"] = "team";
84
+ PlanningResourceKind["Comment"] = "comment";
85
+ PlanningResourceKind["Mention"] = "mention";
86
+ })(PlanningResourceKind || (PlanningResourceKind = {}));
87
+ export var ProjectMode;
88
+ (function (ProjectMode) {
89
+ ProjectMode["Opened"] = "opened";
90
+ ProjectMode["Closed"] = "closed";
91
+ })(ProjectMode || (ProjectMode = {}));
92
+ export const PLANNING_TEAM_MEMBER = 'planning:team-member';
93
+ export const PLANNING_PROJECT_TEAM = 'planning:project-team';
94
+ export const PLANNING_REPORTER = 'planning:reporter';
95
+ export const PLANNING_ASSIGNEE = 'planning:assignee';
96
+ /**
97
+ * The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
98
+ * `entity` an organization-wide record, `project` a record scoped to one project card.
99
+ */
100
+ export var SchemaOrigin;
101
+ (function (SchemaOrigin) {
102
+ SchemaOrigin["Code"] = "code";
103
+ SchemaOrigin["Entity"] = "entity";
104
+ SchemaOrigin["Project"] = "project";
105
+ })(SchemaOrigin || (SchemaOrigin = {}));
106
+ /** How a `schema.define` request writes its declarations. */
107
+ export var SchemaWriteMode;
108
+ (function (SchemaWriteMode) {
109
+ /** Each declaration lands at its layer's next version. */
110
+ SchemaWriteMode["Define"] = "define";
111
+ /** Compare-and-set: each declaration's `version` must be its layer's next version. */
112
+ SchemaWriteMode["Put"] = "put";
113
+ /** Only keys the layer lacks are written, at version 1. */
114
+ SchemaWriteMode["Seed"] = "seed";
115
+ })(SchemaWriteMode || (SchemaWriteMode = {}));
67
116
  /** Service alias of the planning facade host. Identical on the server and in a client. */
68
117
  export const PLANNING_SERVICE = 'planning';
69
118
  /** The path segment the protocol tree answers under when the mount names none. */
@@ -101,29 +150,4 @@ export const REF_MAX = 1024;
101
150
  export const QUERY_TEXT_MAX = 256;
102
151
  /** The longest list a wire query carries in one value (ids, parents). */
103
152
  export const MAX_QUERY_LIST = 500;
104
- /**
105
- * The aliases one planning tree answers under, derived from the mount's base alias.
106
- *
107
- * Two mounts of the tree in one deployment are two base aliases, never two copies of this table —
108
- * which is why nothing here is a global constant.
109
- */
110
- export const planningAliases = (base) => Object.freeze({
111
- base,
112
- schema: Object.freeze({ list: `${base}:schema:list` }),
113
- card: Object.freeze({
114
- list: `${base}:card:list`,
115
- summary: `${base}:card:summary`,
116
- get: `${base}:card:get`,
117
- transitions: `${base}:card:transitions`,
118
- specifications: `${base}:card:specifications`,
119
- }),
120
- spec: Object.freeze({
121
- get: `${base}:specification:get`,
122
- revisions: `${base}:specification:revisions`,
123
- }),
124
- link: Object.freeze({ list: `${base}:link:list` }),
125
- transition: Object.freeze({ get: `${base}:transition:get` }),
126
- execute: `${base}:execute`,
127
- commit: Object.freeze({ get: `${base}:commit:get`, events: `${base}:commit:events` }),
128
- });
129
153
  //# sourceMappingURL=consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { PlanningReply } from '../helpers/reply/types.js';
2
+ import type { PlanningResourceProtocols } from '../resources/protocol/types.js';
3
+ import type { Assignee, Team, Comment, CommentMention } from '../resources/types.js';
4
+ import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint';
5
+ import type { ListResult } from '@owlmeans/resource';
6
+ import type { RouteParent } from '@owlmeans/route';
7
+ import type { CommitEvent, CommitFeedQuery, CommitQuery, CommitStatus, ExecuteRequest, Relationship, RelationshipQueryWire, RevisionsQuery, SchemaDefineReply, SchemaDefineRequest, SchemaListQuery, ScopedSchemaBundle, Specification, SpecificationQueryWire, SpecificationRevisionList, SummaryQueryWire, SummaryView, Transition, TransitionParams, TransitionQueryWire, TransitionReceiptView, Workcard, WorkcardParams, WorkcardQueryWire } from '../types.js';
8
+ export interface PlanningBaseOptions {
9
+ /** The base alias every leaf alias derives from (`planningAliases`). */
10
+ alias: string;
11
+ /** Defaults to `PLANNING_PATH`. */
12
+ path?: string;
13
+ parent?: RouteParent;
14
+ service?: string;
15
+ }
16
+ export interface PlanningProtocolOptions {
17
+ base: PlanningBaseOptions;
18
+ /** The guard(s) the base carries; every HTTP leaf inherits them. */
19
+ guards: string | readonly string[];
20
+ gate?: {
21
+ alias: string;
22
+ params?: string | readonly string[];
23
+ };
24
+ /** Mount the separate assignee, team, comment and mention protocol branches. Off by default. */
25
+ resources?: boolean;
26
+ /**
27
+ * The socket base the commit feed hangs under. The feed inherits THAT base's guards; the
28
+ * planning base when omitted.
29
+ */
30
+ socketBase?: RouteParent;
31
+ /**
32
+ * Declare the data-defined schema surface: `schema.list` takes a `project` query and answers
33
+ * that layer's scoped bundle, and `schema.define` writes. Off by default — a tree without it
34
+ * declares exactly the other leaves.
35
+ */
36
+ definitions?: boolean;
37
+ }
38
+ export interface PlanningProtocols {
39
+ assignees?: PlanningResourceProtocols<Assignee>;
40
+ teams?: PlanningResourceProtocols<Team>;
41
+ comments?: PlanningResourceProtocols<Comment>;
42
+ mentions?: PlanningResourceProtocols<CommentMention>;
43
+ base: EntrypointProtocol<OpenRequest, OpenValue>;
44
+ schema: {
45
+ /** The plain bundle — or, on a tree declared with `definitions`, a layer's scoped one. */
46
+ list: EntrypointProtocol<{
47
+ query?: SchemaListQuery;
48
+ }, PlanningReply<ScopedSchemaBundle>>;
49
+ /** Present on a tree declared with `definitions` only. */
50
+ define?: EntrypointProtocol<{
51
+ body: SchemaDefineRequest;
52
+ }, PlanningReply<SchemaDefineReply>>;
53
+ };
54
+ card: {
55
+ list: EntrypointProtocol<{
56
+ query: WorkcardQueryWire;
57
+ }, PlanningReply<ListResult<Workcard>>>;
58
+ summary: EntrypointProtocol<{
59
+ query: SummaryQueryWire;
60
+ }, SummaryView>;
61
+ get: EntrypointProtocol<{
62
+ params: WorkcardParams;
63
+ }, PlanningReply<Workcard>>;
64
+ transitions: EntrypointProtocol<{
65
+ params: WorkcardParams;
66
+ query: TransitionQueryWire;
67
+ }, PlanningReply<ListResult<Transition>>>;
68
+ specifications: EntrypointProtocol<{
69
+ params: WorkcardParams;
70
+ query: SpecificationQueryWire;
71
+ }, PlanningReply<ListResult<Specification>>>;
72
+ };
73
+ spec: {
74
+ get: EntrypointProtocol<{
75
+ params: WorkcardParams;
76
+ }, PlanningReply<Specification>>;
77
+ revisions: EntrypointProtocol<{
78
+ params: WorkcardParams;
79
+ query: RevisionsQuery;
80
+ }, SpecificationRevisionList>;
81
+ };
82
+ link: {
83
+ list: EntrypointProtocol<{
84
+ query: RelationshipQueryWire;
85
+ }, PlanningReply<ListResult<Relationship>>>;
86
+ };
87
+ transition: {
88
+ get: EntrypointProtocol<{
89
+ params: TransitionParams;
90
+ }, PlanningReply<Transition>>;
91
+ };
92
+ execute: EntrypointProtocol<{
93
+ body: ExecuteRequest;
94
+ }, PlanningReply<TransitionReceiptView>>;
95
+ commit: {
96
+ get: EntrypointProtocol<{
97
+ params: TransitionParams;
98
+ query: CommitQuery;
99
+ }, PlanningReply<CommitStatus>>;
100
+ events: EntrypointProtocol<{
101
+ query: CommitFeedQuery;
102
+ }, PlanningReply<CommitEvent>>;
103
+ };
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { PlanningProtocolOptions, PlanningProtocols } from './types.js';
1
+ import type { PlanningProtocolOptions, PlanningProtocols } from './entrypoints/types.js';
2
2
  /**
3
3
  * Declare the planning surface — one immutable tree a server binds and a client calls.
4
4
  *
@@ -9,6 +9,10 @@ import type { PlanningProtocolOptions, PlanningProtocols } from './types.js';
9
9
  *
10
10
  * Queries travel as their `*Wire` shapes: encode with `encode*Query` before a call, decode with
11
11
  * `decode*Query` in a handler.
12
+ *
13
+ * `definitions: true` adds the data-defined schema surface: `schema.list` takes a `project` query
14
+ * and answers that layer's scoped bundle, and `schema.define` (POST `/schemas`) writes. Without it
15
+ * the tree declares exactly the other leaves.
12
16
  */
13
17
  export declare const makePlanningProtocols: (opts: PlanningProtocolOptions) => PlanningProtocols;
14
18
  //# sourceMappingURL=entrypoints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAC+D,uBAAuB,EAChG,iBAAiB,EAIlB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,SAAU,uBAAuB,KAAG,iBAiGrE,CAAA"}
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AASxF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,SAAU,uBAAuB,KAAG,iBAsHrE,CAAA"}