@owlmeans/planning 0.1.18-rc.10 → 0.1.18-rc.12

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 (62) hide show
  1. package/README.md +35 -7
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/planning/SKILL.md +123 -12
  4. package/build/consts.d.ts +30 -0
  5. package/build/consts.d.ts.map +1 -1
  6. package/build/consts.js +33 -0
  7. package/build/consts.js.map +1 -1
  8. package/build/entrypoints.d.ts +4 -0
  9. package/build/entrypoints.d.ts.map +1 -1
  10. package/build/entrypoints.js +15 -5
  11. package/build/entrypoints.js.map +1 -1
  12. package/build/errors.d.ts +41 -0
  13. package/build/errors.d.ts.map +1 -1
  14. package/build/errors.js +61 -0
  15. package/build/errors.js.map +1 -1
  16. package/build/helpers/index.d.ts +1 -0
  17. package/build/helpers/index.d.ts.map +1 -1
  18. package/build/helpers/index.js +1 -0
  19. package/build/helpers/index.js.map +1 -1
  20. package/build/helpers/scoped.d.ts +56 -0
  21. package/build/helpers/scoped.d.ts.map +1 -0
  22. package/build/helpers/scoped.js +217 -0
  23. package/build/helpers/scoped.js.map +1 -0
  24. package/build/helpers/status.d.ts +3 -1
  25. package/build/helpers/status.d.ts.map +1 -1
  26. package/build/helpers/status.js +5 -2
  27. package/build/helpers/status.js.map +1 -1
  28. package/build/i18n/be.json +5 -0
  29. package/build/i18n/de.json +5 -0
  30. package/build/i18n/en.json +5 -0
  31. package/build/i18n/es.json +5 -0
  32. package/build/i18n/fr.json +5 -0
  33. package/build/i18n/pl.json +5 -0
  34. package/build/i18n/ru.json +5 -0
  35. package/build/i18n/uk.json +5 -0
  36. package/build/schemas.d.ts +10 -2
  37. package/build/schemas.d.ts.map +1 -1
  38. package/build/schemas.js +87 -1
  39. package/build/schemas.js.map +1 -1
  40. package/build/types.d.ts +207 -3
  41. package/build/types.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/src/consts.ts +34 -0
  44. package/src/entrypoints.ts +28 -9
  45. package/src/errors.ts +71 -0
  46. package/src/helpers/index.ts +1 -0
  47. package/src/helpers/scoped.ts +271 -0
  48. package/src/helpers/status.ts +4 -1
  49. package/src/i18n/be.json +5 -0
  50. package/src/i18n/de.json +5 -0
  51. package/src/i18n/en.json +5 -0
  52. package/src/i18n/es.json +5 -0
  53. package/src/i18n/fr.json +5 -0
  54. package/src/i18n/pl.json +5 -0
  55. package/src/i18n/ru.json +5 -0
  56. package/src/i18n/uk.json +5 -0
  57. package/src/schemas.ts +98 -2
  58. package/src/types.ts +214 -4
  59. package/tests/entrypoints.spec.ts +16 -1
  60. package/tests/error-status.spec.ts +6 -1
  61. package/tests/scoped.spec.ts +156 -0
  62. package/tests/status.spec.ts +11 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@ the executor with `@owlmeans/server-planning` and reads remotely with `@owlmeans
9
9
  ## Installation
10
10
 
11
11
  ```sh
12
- bun add @owlmeans/planning@^0.1.18-rc.10 ajv ajv-formats
12
+ bun add @owlmeans/planning@^0.1.18-rc.12 ajv ajv-formats
13
13
  ```
14
14
 
15
15
  ## Concepts
@@ -78,6 +78,20 @@ const page = await context.entrypoint(planningProtocols.card.list).call({ query
78
78
  const where = criteriaOf(decodeWorkcardQuery(req.query), { entityId })
79
79
  ```
80
80
 
81
+ Create a card and read it back through a facade — in process the one of `@owlmeans/server-planning`
82
+ (`ctx.service<PlanningHostService>(PLANNING_SERVICE).for({ entityId, profileId })`), remotely the one
83
+ of `@owlmeans/client-planning`:
84
+
85
+ ```ts
86
+ import { TransitionAction, WorkcardKind } from '@owlmeans/planning'
87
+
88
+ const drill = await planning.execute({
89
+ action: TransitionAction.Create,
90
+ card: { kind: WorkcardKind.Card, type: 'shed:tool', parent: shedId, title: 'Cordless drill' },
91
+ }, { wait: true }) // the options are the SECOND argument
92
+ const again = await planning.cards.get(drill.card!.id!)
93
+ ```
94
+
81
95
  Work through a model — the same code on either side of the wire:
82
96
 
83
97
  ```ts
@@ -107,10 +121,16 @@ const links = transitions.reduce(applyRelationship, [])
107
121
  - Write path and feed: `TransitionExecution`, `WorkcardDraft`, `ExecuteRequest`,
108
122
  `TransitionReceipt`, `TransitionReceiptView`, `CommitEvent`, `CommitStatus`, `CommitSource`.
109
123
  - Ports and seam: `TransitionStore`, `ProjectionStore`, `SpecificationStore`, `RelationshipStore`,
110
- `PlanningStore`, `PlanningPlugin`, `PlanningScope`, `PlanningFacade`, `PlanningService`.
124
+ `SchemaStore`, `PlanningStore`, `PlanningPlugin`, `PlanningScope`, `PlanningFacade`,
125
+ `PlanningService`, `PlanningDefinitions`.
126
+ - Data-defined types and flows: `ScopedSchemaRecord`, `ScopedSchemaWhere`, `ScopedSchemaBundle`,
127
+ `ScopedSchemaRegistry`, `SchemaDeclarations`, `SchemaWriteOptions`, `SchemaDefineRequest`,
128
+ `SchemaDefineReply`, `resolveScopedBundle`, `scopedRegistryOf`, `assertTypeSchema`,
129
+ `assertFlowSchema`, `assertOverridable`, `flowInUse`.
111
130
  - Enums and constants: `WorkcardKind`, `IntrinsicStatus`, `IntrinsicPolicy`, `TransitionAction`,
112
- `CommitState`, `SpecificationFormat`, `CodeStyle`, `CodeScope`, `PLANNING_SERVICE`,
113
- `PLANNING_PATH`, `PLANNING_COMMIT_EVENT`, `planningAliases`, limits (`TITLE_MAX`, …).
131
+ `CommitState`, `SpecificationFormat`, `CodeStyle`, `CodeScope`, `PlanningSchemaKind`,
132
+ `SchemaOrigin`, `SchemaWriteMode`, `PLANNING_SERVICE`, `PLANNING_PATH`, `PLANNING_COMMIT_EVENT`,
133
+ `planningAliases`, `planningDefinitionAliases`, limits (`TITLE_MAX`, …).
114
134
  - Fold and changes: `applyTransition`, `applyRelationship`, `computeChanges`, `isEmptyChange`,
115
135
  `assertMutable`, `mergeFields`, `applyUnset`.
116
136
  - Status: `intrinsicOf`, `initialStatusOf`, `ruleOf`, `canTransit`, `transitionsFrom`,
@@ -128,12 +148,18 @@ const links = transitions.reduce(applyRelationship, [])
128
148
  `ParentNotFound`, `CardTypeNotAllowed`, `PlanningRefused`, `IllegalTransition`, `FieldsInvalid`,
129
149
  `LabelNotAllowed`, `SpecificationSlotUnknown`, `SpecificationRevisionConflict`,
130
150
  `RelationshipRefused`, `CodeTaken`, `WorkcardConflict`, `CommitTimeout`, `CommitFailed`,
131
- `PlanningScopeMismatch`, `PlanningUnsupported`.
151
+ `PlanningScopeMismatch`, `SchemaConflict`, `SchemaInUse`, `SchemaSealed`, `SchemaInvalid`,
152
+ `PlanningForbidden`, `PlanningUnsupported`.
132
153
  - Schemas: `WorkcardSchema`, `SpecificationSchema`, `TransitionSchema`, `ExecuteRequestSchema`,
133
154
  `WorkcardQuerySchema`, … (every record, declaration, request and view).
134
155
 
135
156
  ## Common pitfalls
136
157
 
158
+ - A create's draft goes under `card` (never `draft`), and `{ wait, timeout }` is the second argument
159
+ of `execute` — inside the execution an in-process facade ignores it.
160
+ - A type or flow declaration has no `name` or `key`: the display name is `label`, the key is `type`
161
+ (a type) or `id` (a flow); a status has `key`, a transition rule `name`. The declaration schemas
162
+ are closed — `definitions.define` refuses an extra key with `SchemaInvalid`.
137
163
  - Pass a query through `encode*Query` before an HTTP call — arrays and objects do not survive a
138
164
  query string as they are.
139
165
  - `status`, `intrinsic` and `flows` move only through `transit`; an `update` naming them is refused.
@@ -142,13 +168,15 @@ const links = transitions.reduce(applyRelationship, [])
142
168
  - `WorkcardNotFound` is also the answer for another entity's card — never read it as "deleted".
143
169
  - `CommitTimeout` leaves the transition pending; it will still commit.
144
170
  - Keep schemas `$jsonSchema`-safe: no `integer`, every optional property nullable.
171
+ - Only card types and flows are data-defined, and a code key needs `overridable: true` to be
172
+ overridden; a data-defined declaration's `version` is its compare-and-set token.
145
173
 
146
174
  ## Related packages
147
175
 
148
176
  - `@owlmeans/server-planning` — executor, plugin registry, memory store, handlers
149
177
  - `@owlmeans/client-planning` — remote facade, state mirror, commit waiting
150
178
  - `@owlmeans/resource` — the criteria language
151
- - `@owlmeans/server-planning` — server execution and projection implementations
179
+ - `@owlmeans/planning-postgres` — the durable Postgres store
152
180
 
153
181
  <!-- owlmeans:agent-guidance:start -->
154
182
  ## Agent guidance
@@ -158,7 +186,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
158
186
  your project's skill store (`.agents/skills/`):
159
187
 
160
188
  ```sh
161
- npx @owlmeans/agent-skills@^0.1.18-rc.39
189
+ npx @owlmeans/agent-skills@^0.1.18-rc.42
162
190
  ```
163
191
 
164
192
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/planning",
4
- "version": "0.1.18-rc.10",
5
- "generatedAt": "2026-09-24T14:00:35.039Z",
4
+ "version": "0.1.18-rc.12",
5
+ "generatedAt": "2026-09-29T08:01:58.127Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/planning
9
9
 
10
10
  **Layer:** Cross-cutting domain
11
- **Install:** `"@owlmeans/planning": "^0.1.18-rc.10"` in `dependencies` (`ajv` and `ajv-formats` are peers)
11
+ **Install:** `"@owlmeans/planning": "^0.1.18-rc.12"` in `dependencies` (`ajv` and `ajv-formats` are peers)
12
12
 
13
13
  The contracts of project planning: record shapes, schemas, refusals, the protocol tree, the pure
14
14
  fold and the models. No database, no fastify, no React. The executor, the plugin registry, the
@@ -22,6 +22,42 @@ transitions in `seq` order. There is one write path (`facade.execute(exec)`), on
22
22
  (`applyTransition`) and one query translation (`criteriaOf`), shared by every store and both sides
23
23
  of the wire, so one log always means one card.
24
24
 
25
+ ## The write call
26
+
27
+ `facade.execute(execution, options?)` — the same signature on the server facade
28
+ (`@owlmeans/server-planning`, reached as `ctx.service<PlanningHostService>(PLANNING_SERVICE).for({
29
+ entityId, profileId })`) and the remote one (`@owlmeans/client-planning`).
30
+
31
+ - The **execution** has exactly these keys — `TransitionExecutionSchema` is closed, but only the
32
+ wire validates against it; in process an unknown key is silently ignored: `card` — the `WorkcardDraft` of a
33
+ create (`kind`, `type`, `title` required; `parent`/`parents`, `description`, `code`, `labels`,
34
+ `order`, `fields`, `status`, and a specification's `category`/`format`/`body`), the card id
35
+ otherwise — and `action` (`TransitionAction`), then per action `transition`, `flow`, `changes`,
36
+ `unset`, `link` / `links`, and `cause`, `key`, `expectSeq`.
37
+ - The **options** are `{ wait?, timeout? }`, always the second argument. Only the wire body
38
+ (`ExecuteRequest`) carries them beside the execution.
39
+
40
+ ```ts
41
+ import { TransitionAction, WorkcardKind } from '@owlmeans/planning'
42
+
43
+ const drill = await planning.execute({
44
+ action: TransitionAction.Create,
45
+ card: { kind: WorkcardKind.Card, type: 'shed:tool', parent: shedId, title: 'Cordless drill', fields: { brand: 'Acme' } },
46
+ }, { wait: true }) // drill.card — the committed record
47
+ await planning.cards.get(drill.card!.id!)
48
+ await planning.execute({ action: TransitionAction.Transit, card: drill.card!.id!, transition: 'lend' }, { wait: true })
49
+ ```
50
+
51
+ | Wrong | What happens | Right |
52
+ |---|---|---|
53
+ | `{ action, draft: { … } }` | `planning:malformed:create-without-draft` | the draft goes under `card` |
54
+ | `{ …, wait: true }` in the execution | ignored in process: the receipt returns before the commit, with no `card` | `execute(exec, { wait: true })` |
55
+ | `action: 'create'` | a type error — `TransitionAction` is an enum | `TransitionAction.Create` |
56
+
57
+ Each is a compile error against the typed `TransitionExecution`; it reaches run time only through a
58
+ value typed `any`. `server-planning` carries the full example (facade, read back, data-defined
59
+ type and flow).
60
+
25
61
  ## Key exports
26
62
 
27
63
  | Export | What it is |
@@ -29,10 +65,11 @@ of the wire, so one log always means one card.
29
65
  | `Workcard`, `Card`, `Project`, `Specification`, `Relationship`, `Transition` | The records |
30
66
  | `StatusFlowSchema`, `WorkcardTypeSchema`, `ProjectTypeSchema`, `SpecificationSlot`, `CodePolicy`, `RelationshipType`, `PlanningSchemaBundle` | Type declarations — data, not code |
31
67
  | `TransitionExecution`, `WorkcardDraft`, `TransitionReceipt`, `CommitEvent`, `CommitSource` | The write path and its commit feed |
32
- | `TransitionStore`, `ProjectionStore`, `SpecificationStore`, `RelationshipStore`, `PlanningStore` | Ports a store implements (only `cards` is required) |
33
- | `PlanningPlugin`, `PlanningScope`, `PlanningFacade`, `PlanningService` | The plugin seam and the facade, typed here so a plugin and a client can name them |
34
- | `WorkcardKind`, `IntrinsicStatus`, `IntrinsicPolicy`, `TransitionAction`, `CommitState`, `SpecificationFormat`, `CodeStyle`, `CodeScope` | Enums |
35
- | `PLANNING_SERVICE` (`'planning'`), `PLANNING_PATH`, `PLANNING_COMMIT_EVENT` (`'planning-commit'`), `planningAliases(base)` | Names both sides share |
68
+ | `TransitionStore`, `ProjectionStore`, `SpecificationStore`, `RelationshipStore`, `SchemaStore`, `PlanningStore` | Ports a store implements (only `cards` is required) |
69
+ | `PlanningPlugin`, `PlanningScope`, `PlanningFacade`, `PlanningService`, `PlanningDefinitions` | The plugin seam and the facade, typed here so a plugin and a client can name them |
70
+ | `ScopedSchemaRecord`, `ScopedSchemaWhere`, `ScopedSchemaBundle`, `ScopedSchemaRegistry`, `SchemaDeclarations`, `SchemaWriteOptions`, `SchemaScope`, `SchemaKey`, `SchemaListQuery`, `SchemaDefineRequest`, `SchemaDefineReply` | Data-defined types and flows |
71
+ | `WorkcardKind`, `IntrinsicStatus`, `IntrinsicPolicy`, `TransitionAction`, `CommitState`, `SpecificationFormat`, `CodeStyle`, `CodeScope`, `PlanningSchemaKind`, `SchemaOrigin`, `SchemaWriteMode` | Enums |
72
+ | `PLANNING_SERVICE` (`'planning'`), `PLANNING_PATH`, `PLANNING_COMMIT_EVENT` (`'planning-commit'`), `planningAliases(base)`, `planningDefinitionAliases(base)` | Names both sides share |
36
73
  | `TITLE_MAX` 2048, `DESCRIPTION_MAX` 16384, `CODE_MAX` 64, `BODY_MAX` 1048576, `MAX_LABELS` 32, `MAX_PARENTS` 32, `DEFAULT_COMMIT_TIMEOUT` 30 s, `DEFAULT_COMMIT_POLL` 20 s, `MAX_COMMIT_POLL` 55 s, `CODE_MINT_ATTEMPTS` 8 | Limits |
37
74
  | `applyTransition`, `applyRelationship` | The fold |
38
75
  | `computeChanges`, `isEmptyChange`, `assertMutable`, `mergeFields`, `applyUnset`, `sameValue` | What a transition records |
@@ -43,6 +80,7 @@ of the wire, so one log always means one card.
43
80
  | `slotOf`, `currentSpecification`, `nextRevision`, `specificationTypeOf`, `bodyCharsOf` | Specifications |
44
81
  | `makeAjv`, `validateFields`, `validateCard`, `validateSpecificationBody`, `invalidFieldKeys`, `ajvErrorText` | Validation |
45
82
  | `makeSchemaRegistry(bundle?)` | Types, flows, cached field validators; `bundle()` / `load()` |
83
+ | `resolveScopedBundle`, `scopedRegistryOf`, `assertTypeSchema`, `assertFlowSchema`, `assertOverridable`, `flowInUse`, `schemaRecordKey`, `schemaKeyOf` | Data-defined layers: resolution, the read-only view, the closed-form checks |
46
84
  | `makePlanningProtocols(opts)` | The protocol tree |
47
85
  | `makeWorkcardModel`, `makeProjectModel`, `makeSpecificationModel`, `modelOf`, `executeFor` | Models |
48
86
  | `*Schema` | AJV schemas of every record, declaration, request and view |
@@ -75,7 +113,9 @@ of the wire, so one log always means one card.
75
113
  - A rule name may repeat with different `from` sets (`start` from `planned`, `start` from
76
114
  `failed`). `ruleOf` picks the rule naming the current status; a `'*'` rule of that name answers
77
115
  only when none does, wherever it is declared. `'*'` includes the target status itself, so
78
- `reset` from `planned` is legal.
116
+ `reset` from `planned` is legal. A status the flow does NOT declare (a card whose flow changed
117
+ under it) matches every rule of the name, the first declared answering — such a card can always
118
+ move back onto the flow it now runs.
79
119
  - `transitionsFrom(flow, status)` answers one rule per name in declaration order;
80
120
  `{ explicit: true }` keeps the ones offered to a person.
81
121
  - `IntrinsicPolicy.Primary` (default) reads the primary flow; `IntrinsicPolicy.All` takes the least
@@ -85,7 +125,21 @@ of the wire, so one log always means one card.
85
125
  ## Declaring a type
86
126
 
87
127
  A `WorkcardTypeSchema` / `ProjectTypeSchema` is plain data registered through a plugin's `schemas`
88
- or `makeSchemaRegistry({ types, flows })`:
128
+ or `makeSchemaRegistry({ types, flows })`. **Every declaration schema is closed** — these are ALL
129
+ the keys:
130
+
131
+ | Declaration | Required | Optional |
132
+ |---|---|---|
133
+ | card / specification type | `type` (its key), `kind`, `version`, `fields`, `flows` (at least one), `specifications` | `intrinsic`, `relationships`, `labels`, `code`, `label`, `overridable` |
134
+ | project type | the same, plus `cardTypes` | `projectTypes`, `scopedCardTypes` |
135
+ | flow | `id` (its key), `version`, `statuses` (at least one), `transitions` | `label`, `overridable` |
136
+ | status | `key`, `intrinsic` | `initial`, `terminal`, `label`, `tone` |
137
+ | transition rule | `name`, `from` (status keys or `'*'`), `to` | `label`, `explicit` |
138
+
139
+ The display name is `label` everywhere; a type or a flow has no `name`, `key` or `description`
140
+ (`key` belongs to a status, `name` to a rule). As data, `definitions` refuses an extra key with
141
+ `SchemaInvalid`; in code the registry does not validate a declaration, so only TypeScript's
142
+ excess-property check catches it — keep the literal typed.
89
143
 
90
144
  - `fields` — the AJV schema of `fields`; the registry compiles and caches it (`validator(type)`).
91
145
  - `specifications` — the slots this type's cards carry as children. A slot may name its
@@ -95,7 +149,54 @@ or `makeSchemaRegistry({ types, flows })`:
95
149
  parent|entity, mutable? }`. A code is fixed once minted unless `mutable`.
96
150
  - `relationships` — the edge types a card may start (`single` = at most one per card).
97
151
  - `labels` — the allowed labels (any when omitted).
98
- - A project type lists `cardTypes` (and `projectTypes` for nesting) its children may have.
152
+ - A project type lists `cardTypes` (and `projectTypes` for nesting) its children may have;
153
+ `scopedCardTypes: true` also admits card types defined as data (below).
154
+ - `overridable: true` on a code type or flow opens it to a data-defined override.
155
+
156
+ ## Data-defined types and flows
157
+
158
+ Card types and status flows may also be DATA — `ScopedSchemaRecord`s a store keeps behind the
159
+ optional `PlanningStore.schemas` port — layered **code → entity → project**:
160
+
161
+ - `code` is the plugin registry (unchanged, the default), `entity` an organization-wide record
162
+ (`project` absent), `project` a record of one project card. A project record overrides an
163
+ organization one of the same key.
164
+ - **Only card types and flows are data.** A code key is sealed unless its declaration says
165
+ `overridable: true`; project and specification types are always code's (`assertOverridable` →
166
+ `SchemaSealed`).
167
+ - A record's `version` is its compare-and-set token and is written into the declaration's own
168
+ `version`: a write lands only at its layer's next version, 1 for a new key (`SchemaConflict`).
169
+ - The closed-form checks are shared by every store: `assertFlowSchema` (the declaration's schema,
170
+ unique status keys, every `to` declared, `from` `'*'` or declared statuses) and
171
+ `assertTypeSchema` (the `card` kind, a compiling `fields` schema, unique flows that resolve) —
172
+ `SchemaInvalid`.
173
+ - **Retired** means offered for nothing new, still resolved for what uses it: a retired record
174
+ gives way to a live declaration below it, and a key retired in every layer resolves retired —
175
+ present in the bundle's `types`/`flows`, listed in `retired`. A flow cannot be retired while a
176
+ live type of an affected layer still runs it (`flowInUse` → `SchemaInUse`).
177
+ - `resolveScopedBundle(code, records, scope)` is the ONE resolution (pure); `scopedRegistryOf` is
178
+ its read-only registry (`originOf`, `isRetired`; `register*`/`load` refuse). A
179
+ `ScopedSchemaBundle` extends the plain bundle with `scope`, `revision`, `origins`, `retired`, so a
180
+ reader of the plain bundle is unaffected.
181
+ - `SchemaStore`: `list(where)`, `put(record)` (the CAS), `purge({ entityId, project })`,
182
+ `revision(entityId)` (monotonic per organization), optional `watch(listener)`.
183
+ - `PlanningFacade.definitions` (present only where the store has the port): `bundle(project?)`,
184
+ `registry(project?)`, `records`, `putType`/`putFlow` (CAS on the declaration's version),
185
+ `define` (each at its layer's next version, flows first), `seed` (only the keys the layer lacks),
186
+ `retire(kind, key, { project? })`. The declaration still carries its own `version` (any number
187
+ ≥ 1 for `define`/`seed`, which assign the layer's next one; the exact next one for `put*`), and
188
+ a project layer is `{ project: <project card id> }` in the second argument:
189
+
190
+ ```ts
191
+ await planning.definitions!.define({
192
+ flows: [{ id: 'shed:repair', version: 1, label: 'Repair',
193
+ statuses: [{ key: 'reported', intrinsic: IntrinsicStatus.Planned, initial: true },
194
+ { key: 'fixed', intrinsic: IntrinsicStatus.Closed, terminal: true }],
195
+ transitions: [{ name: 'fix', from: ['reported'], to: 'fixed', explicit: true }] }],
196
+ types: [{ type: 'shed:repair', kind: WorkcardKind.Card, version: 1, label: 'Repair ticket',
197
+ fields: { type: 'object' }, flows: ['shed:repair'], specifications: [] }],
198
+ }, { project: shedId }) // admitted under the shed when its type says `scopedCardTypes: true` (or lists it in `cardTypes`)
199
+ ```
99
200
 
100
201
  ## The fold
101
202
 
@@ -140,7 +241,9 @@ bare values and arrays pass through (`kind`, `type`, `status`, `intrinsic`, `cod
140
241
  description `$ilike` (wildcards escaped) and code `$startsWith`, `updatedSince` → `updatedAt: {
141
242
  $gte }`. `entityId` always comes from the scope; `undefined` is omitted. Paging and sort are
142
243
  `listOptionsOf` (`size: 0` = no limit). `summaryOf(cards, parents)` counts DIRECT children by
143
- intrinsic state and gives no key to a parent with none.
244
+ intrinsic state and gives no key to a parent with none. A scope naming `projects` is narrowed by
245
+ the SERVER facade on top of this translation (`server-planning`); `TransitionWhere.project` and
246
+ `RelationshipWhere.project` take one id or a list.
144
247
 
145
248
  **A query crosses HTTP in its wire form.** The OwlMeans transport cannot carry arrays or nested
146
249
  objects in a query string (the client writes `key[]=`, the server reads that key literally), so
@@ -168,9 +271,13 @@ A client calls `encodeWorkcardQuery(query)` before `call({ query })`; a handler
168
271
  | `execute` | POST `/execute` | body `ExecuteRequest` → `TransitionReceiptView` |
169
272
  | `commit.get` | GET `/commits/:transition` | query `CommitQuery { wait? }` → `CommitStatus` |
170
273
  | `commit.events` | SOCKET `/commits` | query `CommitFeedQuery` → `CommitEvent` frames |
274
+ | `schema.define` (with `definitions: true`) | POST `/schemas` | body `SchemaDefineRequest { project?, mode?, types?, flows?, retire? }` → `SchemaDefineReply { records, bundle }` |
171
275
 
172
276
  - Aliases derive from the base alias (`planningAliases(base)` → `<base>:card:list`, …); two mounts
173
- are two base aliases.
277
+ are two base aliases. `definitions: true` adds `schema.define` (its alias from
278
+ `planningDefinitionAliases(base)`, kept apart so a tree without it names no undeclared alias)
279
+ and gives `schema.list` a `SchemaListQuery { project? }` answered with that layer's scoped bundle.
280
+ Without it the tree declares exactly the other leaves.
174
281
  - The guards and the gate sit on the base alone; every HTTP leaf inherits them. `path` defaults to
175
282
  `/planning`.
176
283
  - Static `/cards/summary` is declared before parametric `/cards/:id`.
@@ -213,13 +320,17 @@ the marker survives a hop where the class is unknown, so match on it there:
213
320
  | `SpecificationSlotUnknown` / `SpecificationRevisionConflict` | `specification-slot-unknown:` / `specification-revision-conflict:` | 422 / 409 |
214
321
  | `RelationshipRefused` / `CodeTaken` | `relationship-refused:` / `code-taken:` | 422 / 409 |
215
322
  | `WorkcardConflict` | `workcard-conflict:` — stale `expectSeq` | 409 |
323
+ | `SchemaConflict` / `SchemaInUse` | `schema-conflict:` (lost version CAS) / `schema-in-use:` (retiring a flow a live type runs) | 409 |
324
+ | `SchemaSealed` / `SchemaInvalid` | `schema-sealed:` / `schema-invalid:` | 422 |
325
+ | `PlanningForbidden` | `forbidden:<grant>:<target>` — the request's access lacks a grant | 403 |
216
326
  | `CommitTimeout` / `CommitFailed` | `commit-timeout:` (still pending, nothing undone) / `commit-failed:` | 500 |
217
327
  | `PlanningScopeMismatch` / `PlanningUnsupported` | `scope-mismatch:` / `unsupported:` | 404 / 500 |
218
328
 
219
329
  Type names are `PlanningError<Suffix>` (`PlanningErrorWorkcardNotFound`).
220
330
 
221
331
  **The HTTP column is each class's `static httpStatus`** (the `error` skill's principle; 500 = none
222
- declared): an addressed card that is absent or another entity's is 404, a card whose state or head
332
+ declared): an addressed card that is absent or another entity's is 404, a write the request's
333
+ access does not grant is 403, a card whose state or head (or a schema record whose version)
223
334
  refuses the write is 409, a body naming what the registry, the parent or a schema refuses is 422.
224
335
  Faults declare nothing, and so does `PlanningError` itself — its three causes share one class, and
225
336
  a base's static would reach every subclass. A new refusal declares on its own leaf class, and
@@ -252,4 +363,4 @@ is part of the package's own tests.
252
363
  - [[server-planning]] — the executor, the plugin registry, the memory store, the handlers
253
364
  - [[client-planning]] — the remote facade, the state mirror, waiting for a commit
254
365
  - [[resource]] — the criteria language `criteriaOf` targets
255
- - [[server-planning]] — executor, projection implementations, plugin registry and memory store
366
+ - [[planning-postgres]] — a durable store implementing every port, the schema port included
package/build/consts.d.ts CHANGED
@@ -52,6 +52,29 @@ 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
+ }
60
+ /**
61
+ * The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
62
+ * `entity` an organization-wide record, `project` a record scoped to one project card.
63
+ */
64
+ export declare enum SchemaOrigin {
65
+ Code = "code",
66
+ Entity = "entity",
67
+ Project = "project"
68
+ }
69
+ /** How a `schema.define` request writes its declarations. */
70
+ export declare enum SchemaWriteMode {
71
+ /** Each declaration lands at its layer's next version. */
72
+ Define = "define",
73
+ /** Compare-and-set: each declaration's `version` must be its layer's next version. */
74
+ Put = "put",
75
+ /** Only keys the layer lacks are written, at version 1. */
76
+ Seed = "seed"
77
+ }
55
78
  /** Service alias of the planning facade host. Identical on the server and in a client. */
56
79
  export declare const PLANNING_SERVICE = "planning";
57
80
  /** The path segment the protocol tree answers under when the mount names none. */
@@ -123,4 +146,11 @@ export declare const planningAliases: (base: string) => Readonly<{
123
146
  events: `${string}:commit:events`;
124
147
  }>;
125
148
  }>;
149
+ /**
150
+ * The aliases of the leaves a tree gains with `definitions: true` — kept apart from
151
+ * {@link planningAliases} so a tree declared without them names no alias it does not declare.
152
+ */
153
+ export declare const planningDefinitionAliases: (base: string) => Readonly<{
154
+ define: `${string}:schema:define`;
155
+ }>;
126
156
  //# 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,32 @@ 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 || (PlanningSchemaKind = {}));
73
+ /**
74
+ * The layer a resolved type or flow comes from. `code` is the in-process registry (plugins),
75
+ * `entity` an organization-wide record, `project` a record scoped to one project card.
76
+ */
77
+ export var SchemaOrigin;
78
+ (function (SchemaOrigin) {
79
+ SchemaOrigin["Code"] = "code";
80
+ SchemaOrigin["Entity"] = "entity";
81
+ SchemaOrigin["Project"] = "project";
82
+ })(SchemaOrigin || (SchemaOrigin = {}));
83
+ /** How a `schema.define` request writes its declarations. */
84
+ export var SchemaWriteMode;
85
+ (function (SchemaWriteMode) {
86
+ /** Each declaration lands at its layer's next version. */
87
+ SchemaWriteMode["Define"] = "define";
88
+ /** Compare-and-set: each declaration's `version` must be its layer's next version. */
89
+ SchemaWriteMode["Put"] = "put";
90
+ /** Only keys the layer lacks are written, at version 1. */
91
+ SchemaWriteMode["Seed"] = "seed";
92
+ })(SchemaWriteMode || (SchemaWriteMode = {}));
67
93
  /** Service alias of the planning facade host. Identical on the server and in a client. */
68
94
  export const PLANNING_SERVICE = 'planning';
69
95
  /** The path segment the protocol tree answers under when the mount names none. */
@@ -126,4 +152,11 @@ export const planningAliases = (base) => Object.freeze({
126
152
  execute: `${base}:execute`,
127
153
  commit: Object.freeze({ get: `${base}:commit:get`, events: `${base}:commit:events` }),
128
154
  });
155
+ /**
156
+ * The aliases of the leaves a tree gains with `definitions: true` — kept apart from
157
+ * {@link planningAliases} so a tree declared without them names no alias it does not declare.
158
+ */
159
+ export const planningDefinitionAliases = (base) => Object.freeze({
160
+ define: `${base}:schema:define`,
161
+ });
129
162
  //# 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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"}
@@ -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":"AAUA,OAAO,KAAK,EAC+D,uBAAuB,EAChG,iBAAiB,EAIlB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,SAAU,uBAAuB,KAAG,iBAgHrE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { contract, openProtocol, protocol, typed } from '@owlmeans/entrypoint';
2
2
  import { backend, route, RouteMethod, socket } from '@owlmeans/route';
3
- import { PLANNING_PATH, planningAliases } from './consts.js';
4
- import { CommitQuerySchema, ExecuteRequestSchema, RelationshipQuerySchema, RevisionsQuerySchema, SpecificationQuerySchema, SummaryQuerySchema, TransitionParamsSchema, TransitionQuerySchema, WorkcardParamsSchema, WorkcardQuerySchema, } from './schemas.js';
3
+ import { PLANNING_PATH, planningAliases, planningDefinitionAliases } from './consts.js';
4
+ import { CommitQuerySchema, ExecuteRequestSchema, RelationshipQuerySchema, RevisionsQuerySchema, SchemaDefineRequestSchema, SchemaListQuerySchema, SpecificationQuerySchema, SummaryQuerySchema, TransitionParamsSchema, TransitionQuerySchema, WorkcardParamsSchema, WorkcardQuerySchema, } from './schemas.js';
5
5
  /**
6
6
  * Declare the planning surface — one immutable tree a server binds and a client calls.
7
7
  *
@@ -12,6 +12,10 @@ import { CommitQuerySchema, ExecuteRequestSchema, RelationshipQuerySchema, Revis
12
12
  *
13
13
  * Queries travel as their `*Wire` shapes: encode with `encode*Query` before a call, decode with
14
14
  * `decode*Query` in a handler.
15
+ *
16
+ * `definitions: true` adds the data-defined schema surface: `schema.list` takes a `project` query
17
+ * and answers that layer's scoped bundle, and `schema.define` (POST `/schemas`) writes. Without it
18
+ * the tree declares exactly the other leaves.
15
19
  */
16
20
  export const makePlanningProtocols = (opts) => {
17
21
  const aliases = planningAliases(opts.base.alias);
@@ -24,11 +28,17 @@ export const makePlanningProtocols = (opts) => {
24
28
  ...(opts.gate != null ? { gate: opts.gate } : {}),
25
29
  });
26
30
  const get = (alias, path) => route(alias, path, backend({ parent: base }, RouteMethod.GET));
31
+ const schema = opts.definitions === true
32
+ ? Object.freeze({
33
+ list: protocol(get(aliases.schema.list, '/schemas'), contract.request({ query: typed(SchemaListQuerySchema) }, typed())),
34
+ define: protocol(route(planningDefinitionAliases(opts.base.alias).define, '/schemas', backend({ parent: base }, RouteMethod.POST)), contract.request({ body: typed(SchemaDefineRequestSchema) }, typed())),
35
+ })
36
+ : Object.freeze({
37
+ list: protocol(get(aliases.schema.list, '/schemas'), contract(typed())),
38
+ });
27
39
  return Object.freeze({
28
40
  base,
29
- schema: Object.freeze({
30
- list: protocol(get(aliases.schema.list, '/schemas'), contract(typed())),
31
- }),
41
+ schema,
32
42
  card: Object.freeze({
33
43
  list: protocol(get(aliases.card.list, '/cards'), contract.request({ query: typed(WorkcardQuerySchema) }, typed())),
34
44
  // Static before parametric: `/cards/summary` must never be read as a card id.
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EACL,iBAAiB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EACtF,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,qBAAqB,EAC3F,oBAAoB,EAAE,mBAAmB,GAC1C,MAAM,cAAc,CAAA;AASrB;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA6B,EAAqB,EAAE;IACxF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,MAAM,KAAK,GAA0B;QACnC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAA;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAC9F,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAE3G,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QAEJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAwB,CAAC,CAAC;SAC9F,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAoB,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAwB,CAAC,CAC1G;YACD,8EAA8E;YAC9E,OAAO,EAAE,QAAQ,CACf,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAmB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAe,CAAC,CAC/F;YACD,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAY,CAAC,CAC7F;YACD,WAAW,EAAE,QAAQ,CACnB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,EACvD,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAsB,qBAAqB,CAAC;aACzD,EAAE,KAAK,EAA0B,CAAC,CACpC;YACD,cAAc,EAAE,QAAQ,CACtB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,2BAA2B,CAAC,EAC7D,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAyB,wBAAwB,CAAC;aAC/D,EAAE,KAAK,EAA6B,CAAC,CACvC;SACF,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,EAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAiB,CAAC,CAClG;YACD,SAAS,EAAE,QAAQ,CACjB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAC5D,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAiB,oBAAoB,CAAC;aACnD,EAAE,KAAK,EAA6B,CAAC,CACvC;SACF,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAwB,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAA4B,CAAC,CACtH;SACF,CAAC;QAEF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,0BAA0B,CAAC,EACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAmB,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAc,CAAC,CACnG;SACF,CAAC;QAEF,OAAO,EAAE,QAAQ,CACf,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAyB,CAAC,CACxG;QAED,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAC/C,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAmB,sBAAsB,CAAC;gBACvD,KAAK,EAAE,KAAK,CAAc,iBAAiB,CAAC;aAC7C,EAAE,KAAK,EAAgB,CAAC,CAC1B;YACD,MAAM,EAAE,QAAQ,CACd,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,EACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAmB,EAAE,EAAE,KAAK,EAAe,CAAC,CAC5E;SACF,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EACL,iBAAiB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EACtF,yBAAyB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAC9F,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,GACzF,MAAM,cAAc,CAAA;AASrB;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA6B,EAAqB,EAAE;IACxF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,MAAM,KAAK,GAA0B;QACnC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAA;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAC9F,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAE3G,MAAM,MAAM,GAAgC,IAAI,CAAC,WAAW,KAAK,IAAI;QACnE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAkB,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAsB,CAAC,CACtD;YACnD,MAAM,EAAE,QAAQ,CACd,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EACjH,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAsB,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAqB,CAAC,CAC9G;SACF,CAAC;QACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAwB,CAAC,CAC5B;SACpD,CAAC,CAAA;IAEJ,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QAEJ,MAAM;QAEN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAoB,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAwB,CAAC,CAC1G;YACD,8EAA8E;YAC9E,OAAO,EAAE,QAAQ,CACf,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAmB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAe,CAAC,CAC/F;YACD,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAY,CAAC,CAC7F;YACD,WAAW,EAAE,QAAQ,CACnB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,EACvD,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAsB,qBAAqB,CAAC;aACzD,EAAE,KAAK,EAA0B,CAAC,CACpC;YACD,cAAc,EAAE,QAAQ,CACtB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,2BAA2B,CAAC,EAC7D,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAyB,wBAAwB,CAAC;aAC/D,EAAE,KAAK,EAA6B,CAAC,CACvC;SACF,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,EAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAiB,CAAC,CAClG;YACD,SAAS,EAAE,QAAQ,CACjB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAC5D,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAiB,oBAAoB,CAAC;gBACnD,KAAK,EAAE,KAAK,CAAiB,oBAAoB,CAAC;aACnD,EAAE,KAAK,EAA6B,CAAC,CACvC;SACF,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,QAAQ,CACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAwB,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAA4B,CAAC,CACtH;SACF,CAAC;QAEF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,0BAA0B,CAAC,EACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAmB,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAc,CAAC,CACnG;SACF,CAAC;QAEF,OAAO,EAAE,QAAQ,CACf,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAiB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAyB,CAAC,CACxG;QAED,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,QAAQ,CACX,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAC/C,QAAQ,CAAC,OAAO,CAAC;gBACf,MAAM,EAAE,KAAK,CAAmB,sBAAsB,CAAC;gBACvD,KAAK,EAAE,KAAK,CAAc,iBAAiB,CAAC;aAC7C,EAAE,KAAK,EAAgB,CAAC,CAC1B;YACD,MAAM,EAAE,QAAQ,CACd,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,EACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAmB,EAAE,EAAE,KAAK,EAAe,CAAC,CAC5E;SACF,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA"}
package/build/errors.d.ts CHANGED
@@ -116,6 +116,47 @@ export declare class PlanningScopeMismatch extends PlanningError {
116
116
  static httpStatus: number;
117
117
  constructor(message?: string);
118
118
  }
119
+ /**
120
+ * A data-defined schema write lost its compare-and-set: the layer's record is not at the version
121
+ * the write replaces. Re-read the layer and retry.
122
+ */
123
+ export declare class SchemaConflict extends PlanningError {
124
+ static typeName: string;
125
+ /** The stored record moved past the expected version: answered 409. */
126
+ static httpStatus: number;
127
+ constructor(message?: string);
128
+ }
129
+ /** A flow cannot be retired while a live type of an affected layer still resolves it. */
130
+ export declare class SchemaInUse extends PlanningError {
131
+ static typeName: string;
132
+ /** Other declarations still depend on the key: answered 409. */
133
+ static httpStatus: number;
134
+ constructor(message?: string);
135
+ }
136
+ /**
137
+ * The key is registered in code and does not declare itself `overridable` — or it is a project
138
+ * or specification type, which only code declares.
139
+ */
140
+ export declare class SchemaSealed extends PlanningError {
141
+ static typeName: string;
142
+ /** The key cannot be declared as data: answered 422. */
143
+ static httpStatus: number;
144
+ constructor(message?: string);
145
+ }
146
+ /** A data-defined declaration fails its closed-form checks. */
147
+ export declare class SchemaInvalid extends PlanningError {
148
+ static typeName: string;
149
+ /** The declaration's content is refused: answered 422. */
150
+ static httpStatus: number;
151
+ constructor(message?: string);
152
+ }
153
+ /** The request's access does not grant the write (creating or deleting a project, defining schemas). */
154
+ export declare class PlanningForbidden extends PlanningError {
155
+ static typeName: string;
156
+ /** The caller lacks the grant the write needs: answered 403. */
157
+ static httpStatus: number;
158
+ constructor(message?: string);
159
+ }
119
160
  /** The store behind this type cannot do what was asked (a foreign provider without a log). */
120
161
  export declare class PlanningUnsupported extends PlanningError {
121
162
  static typeName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}