@owlmeans/server-planning 0.1.18-rc.19 → 0.1.18-rc.20
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.
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ the `@owlmeans/server-planning/store` subpath.
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
12
|
```sh
|
|
13
|
-
bun add @owlmeans/server-planning@^0.1.18-rc.
|
|
13
|
+
bun add @owlmeans/server-planning@^0.1.18-rc.20 @owlmeans/planning@^0.1.18-rc.17 ajv
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
## Concepts
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/server-planning",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.20",
|
|
5
|
+
"generatedAt": "2026-10-04T01:01:54.399Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/server-planning
|
|
9
9
|
|
|
10
10
|
**Layer:** Server
|
|
11
|
-
**Install:** `"@owlmeans/server-planning": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/server-planning": "^0.1.18-rc.20"` in `dependencies` (`ajv` is a peer)
|
|
12
12
|
|
|
13
13
|
The general implementation of `@owlmeans/planning`: the planning service (a plugin host), the
|
|
14
14
|
scoped facade, the executor every write goes through, the in-memory reference store, the commit
|
|
@@ -321,7 +321,7 @@ decision per request; a throw is the request's answer (an `AuthForbidden` answer
|
|
|
321
321
|
admits, over `writes`: the project itself, a card whose `parents` name one, a specification
|
|
322
322
|
through its parent card; a create needs every named parent writable, and a create at the root
|
|
323
323
|
(no parent, not a project) is refused. `schema.define` of a project layer needs the project in
|
|
324
|
-
`writes`. A refusal is `PlanningForbidden` (403
|
|
324
|
+
`writes`. A refusal is `PlanningForbidden` (403, `forbidden:writes:<id>`), checked before the grants
|
|
325
325
|
and before the executor. NOT governed by it: a project create (`grants.createProjects` alone) and
|
|
326
326
|
the organization layer (`grants.defineSchemas`). A card the scope cannot see is still answered
|
|
327
327
|
as absent by the executor. Omitted — every visible project is writable.
|
|
@@ -334,26 +334,17 @@ decision per request; a throw is the request's answer (an `AuthForbidden` answer
|
|
|
334
334
|
|
|
335
335
|
## Mounting in a target
|
|
336
336
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
`
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
/ `defineSchemas` from their create and admin rights. A creator sees what they created — stamp
|
|
349
|
-
ownership in a `before` hook and add it to both lists.
|
|
350
|
-
- **Kit types and flows** are LITERAL objects in the target's `sources/common/src/planning.ts`
|
|
351
|
-
`PLANNING` plugin, between its sentinels (`// owlmeans: add planning flows above this line`,
|
|
352
|
-
`… types above this line`) — a spread or an imported constant hides them from the library's
|
|
353
|
-
registration checks. Card types and flows carry `overridable: true`, `fields` schemas stay open
|
|
354
|
-
(`additionalProperties: true`), and the container project type carries `scopedCardTypes: true`,
|
|
355
|
-
so the people of the app can override and extend them as data through `schema.define`.
|
|
356
|
-
- The web side is `client-planning` → Mounting in a target; the store, `planning-postgres`.
|
|
337
|
+
The api half of the target mount (the common tree and the kit literals: `planning` → Mounting in a
|
|
338
|
+
target).
|
|
339
|
+
|
|
340
|
+
- Bind `servePlanningEntrypoints(tree, { access })` WITHOUT the commit socket —
|
|
341
|
+
`.filter(entrypoint => entrypoint.protocol !== tree.commit.events)`: nothing authenticates a
|
|
342
|
+
target's socket after it opens, so the client long-polls (`commit.get` with `wait`, `execute`
|
|
343
|
+
with `wait: true`). Never write card, transition or schema routes beside it.
|
|
344
|
+
- The resolver maps container permissions onto the access: `projects` = the containers the person
|
|
345
|
+
may view, `writes` = those they may modify, `grants` = `createProjects` / `deleteProjects` /
|
|
346
|
+
`defineSchemas` from their create and admin rights. A creator sees what they created — stamp
|
|
347
|
+
ownership in a `before` hook and add the card to both lists.
|
|
357
348
|
|
|
358
349
|
## Data-defined types and flows
|
|
359
350
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/server-planning",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.20",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The general planning implementation — the planning service and its plugin/middleware registry, the transition executor, the in-memory store, the protocol handlers and the commit feed.",
|
|
6
6
|
"type": "module",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@owlmeans/context": "^0.1.18-rc.32",
|
|
51
51
|
"@owlmeans/entrypoint": "^0.1.18-rc.39",
|
|
52
52
|
"@owlmeans/error": "^0.1.18-rc.36",
|
|
53
|
-
"@owlmeans/planning": "^0.1.18-rc.
|
|
53
|
+
"@owlmeans/planning": "^0.1.18-rc.17",
|
|
54
54
|
"@owlmeans/queue": "^0.1.18-rc.38",
|
|
55
55
|
"@owlmeans/resource": "^0.1.18-rc.37",
|
|
56
56
|
"@owlmeans/route": "^0.1.18-rc.33",
|