@owlmeans/planning 0.1.18-rc.22 → 0.1.18-rc.24

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 (37) hide show
  1. package/README.md +1 -1
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/planning/SKILL.md +10 -2
  4. package/build/entrypoints/types.d.ts +13 -12
  5. package/build/entrypoints/types.d.ts.map +1 -1
  6. package/build/entrypoints.d.ts.map +1 -1
  7. package/build/entrypoints.js.map +1 -1
  8. package/build/helpers/index.d.ts +2 -0
  9. package/build/helpers/index.d.ts.map +1 -1
  10. package/build/helpers/index.js +1 -0
  11. package/build/helpers/index.js.map +1 -1
  12. package/build/helpers/reply/consts.d.ts +2 -0
  13. package/build/helpers/reply/consts.d.ts.map +1 -0
  14. package/build/helpers/reply/consts.js +2 -0
  15. package/build/helpers/reply/consts.js.map +1 -0
  16. package/build/helpers/reply/types.d.ts +10 -0
  17. package/build/helpers/reply/types.d.ts.map +1 -0
  18. package/build/helpers/reply/types.js +2 -0
  19. package/build/helpers/reply/types.js.map +1 -0
  20. package/build/helpers/reply.d.ts +5 -0
  21. package/build/helpers/reply.d.ts.map +1 -0
  22. package/build/helpers/reply.js +29 -0
  23. package/build/helpers/reply.js.map +1 -0
  24. package/build/resources/protocol/types.d.ts +4 -3
  25. package/build/resources/protocol/types.d.ts.map +1 -1
  26. package/build/resources/protocol.d.ts.map +1 -1
  27. package/build/resources/protocol.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/entrypoints/types.ts +13 -12
  30. package/src/entrypoints.ts +13 -12
  31. package/src/helpers/index.ts +2 -0
  32. package/src/helpers/reply/consts.ts +1 -0
  33. package/src/helpers/reply/types.ts +13 -0
  34. package/src/helpers/reply.ts +27 -0
  35. package/src/resources/protocol/types.ts +4 -3
  36. package/src/resources/protocol.ts +4 -3
  37. package/tests/models.spec.ts +8 -1
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.22 ajv ajv-formats
12
+ bun add @owlmeans/planning@^0.1.18-rc.23 ajv ajv-formats
13
13
  ```
14
14
 
15
15
  ## Concepts
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/planning",
4
- "version": "0.1.18-rc.22",
5
- "generatedAt": "2026-10-09T11:30:42.747Z",
4
+ "version": "0.1.18-rc.24",
5
+ "generatedAt": "2026-10-09T13:40:06.950Z",
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.22"` in `dependencies` (`ajv` and `ajv-formats` are peers)
11
+ **Install:** `"@owlmeans/planning": "^0.1.18-rc.24"` 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
@@ -389,7 +389,9 @@ untrusted request or parse ordinary prose as identity.
389
389
 
390
390
  Teams are organization resources, reusable across projects. `teams.addMember/removeMember` and
391
391
  `teams.attach/detach` use the existing relationship store, with canonical team-member and
392
- project-team edges. `teams.members`, `teams.forProject` and `teams.assignees` read these links;
392
+ project-team edges. `teams.members(team)` and `teams.projects(team)` read membership and
393
+ attachment; `teams.assignees(project)` reads effective assignees. Read project teams through
394
+ `relationships.list({ from: project, type: PLANNING_PROJECT_TEAM, toKind: PlanningResourceKind.Team })`;
393
395
  project assignees are the deduplicated union of attached teams. Team `externalId` may name an
394
396
  external permission group; links do not mutate authentication group membership.
395
397
 
@@ -406,6 +408,12 @@ Declare `resources: true` on `makePlanningProtocols` to add assignee/team/commen
406
408
  for assignee type schema writes. Use stock facade methods, handlers, stores and feeds on both
407
409
  sides; resource commands and versions are validated by the shared wire contract.
408
410
 
411
+ Protocol responses use `PlanningReply<T>`: storage organization metadata (`entityId`) is absent
412
+ from records, schema scopes, receipts and commit frames. `planningReplyHelper.project` handles
413
+ only known record/envelope positions; custom fields, transition changes and schema definitions
414
+ remain opaque. Native facades retain their trusted storage scope. Remote facades hydrate the
415
+ shared record shape with empty advisory metadata; never derive organization identity from it.
416
+
409
417
 
410
418
  ## Related
411
419
 
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from '../helpers/reply/types.js';
1
2
  import type { PlanningResourceProtocols } from '../resources/protocol/types.js';
2
3
  import type { Assignee, Team, Comment, CommentMention } from '../resources/types.js';
3
4
  import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint';
@@ -43,35 +44,35 @@ export interface PlanningProtocols {
43
44
  /** The plain bundle — or, on a tree declared with `definitions`, a layer's scoped one. */
44
45
  list: EntrypointProtocol<{
45
46
  query?: SchemaListQuery;
46
- }, ScopedSchemaBundle>;
47
+ }, PlanningReply<ScopedSchemaBundle>>;
47
48
  /** Present on a tree declared with `definitions` only. */
48
49
  define?: EntrypointProtocol<{
49
50
  body: SchemaDefineRequest;
50
- }, SchemaDefineReply>;
51
+ }, PlanningReply<SchemaDefineReply>>;
51
52
  };
52
53
  card: {
53
54
  list: EntrypointProtocol<{
54
55
  query: WorkcardQueryWire;
55
- }, ListResult<Workcard>>;
56
+ }, PlanningReply<ListResult<Workcard>>>;
56
57
  summary: EntrypointProtocol<{
57
58
  query: SummaryQueryWire;
58
59
  }, SummaryView>;
59
60
  get: EntrypointProtocol<{
60
61
  params: WorkcardParams;
61
- }, Workcard>;
62
+ }, PlanningReply<Workcard>>;
62
63
  transitions: EntrypointProtocol<{
63
64
  params: WorkcardParams;
64
65
  query: TransitionQueryWire;
65
- }, ListResult<Transition>>;
66
+ }, PlanningReply<ListResult<Transition>>>;
66
67
  specifications: EntrypointProtocol<{
67
68
  params: WorkcardParams;
68
69
  query: SpecificationQueryWire;
69
- }, ListResult<Specification>>;
70
+ }, PlanningReply<ListResult<Specification>>>;
70
71
  };
71
72
  spec: {
72
73
  get: EntrypointProtocol<{
73
74
  params: WorkcardParams;
74
- }, Specification>;
75
+ }, PlanningReply<Specification>>;
75
76
  revisions: EntrypointProtocol<{
76
77
  params: WorkcardParams;
77
78
  query: RevisionsQuery;
@@ -80,24 +81,24 @@ export interface PlanningProtocols {
80
81
  link: {
81
82
  list: EntrypointProtocol<{
82
83
  query: RelationshipQueryWire;
83
- }, ListResult<Relationship>>;
84
+ }, PlanningReply<ListResult<Relationship>>>;
84
85
  };
85
86
  transition: {
86
87
  get: EntrypointProtocol<{
87
88
  params: TransitionParams;
88
- }, Transition>;
89
+ }, PlanningReply<Transition>>;
89
90
  };
90
91
  execute: EntrypointProtocol<{
91
92
  body: ExecuteRequest;
92
- }, TransitionReceiptView>;
93
+ }, PlanningReply<TransitionReceiptView>>;
93
94
  commit: {
94
95
  get: EntrypointProtocol<{
95
96
  params: TransitionParams;
96
97
  query: CommitQuery;
97
- }, CommitStatus>;
98
+ }, PlanningReply<CommitStatus>>;
98
99
  events: EntrypointProtocol<{
99
100
  query: CommitFeedQuery;
100
- }, CommitEvent>;
101
+ }, PlanningReply<CommitEvent>>;
101
102
  };
102
103
  }
103
104
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entrypoints/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EACV,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,qBAAqB,EAC5G,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAC1G,sBAAsB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAC9G,mBAAmB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EACxF,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAA;IACzB,oEAAoE;IACpE,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAClC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IAC7D;;;OAGG;IACH,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IAC7C,QAAQ,CAAC,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,EAAE,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAChD,MAAM,EAAE;QACN,0FAA0F;QAC1F,IAAI,EAAE,kBAAkB,CAAC;YAAE,KAAK,CAAC,EAAE,eAAe,CAAA;SAAE,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAA;QACxF,0DAA0D;QAC1D,MAAM,CAAC,EAAE,kBAAkB,CAAC;YAAE,IAAI,EAAE,mBAAmB,CAAA;SAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;KAC7F,CAAA;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,kBAAkB,CAAC;YAAE,KAAK,EAAE,iBAAiB,CAAA;SAAE,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3F,OAAO,EAAE,kBAAkB,CAAC;YAAE,KAAK,EAAE,gBAAgB,CAAA;SAAE,EAAE,WAAW,CAAC,CAAA;QACrE,GAAG,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,cAAc,CAAA;SAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5E,WAAW,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,cAAc,CAAC;YAAC,KAAK,EAAE,mBAAmB,CAAA;SAAE,EAAE,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC9H,cAAc,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,cAAc,CAAC;YAAC,KAAK,EAAE,sBAAsB,CAAA;SAAE,EAAE,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;KACxI,CAAA;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,cAAc,CAAA;SAAE,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAA;QACjF,SAAS,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,cAAc,CAAC;YAAC,KAAK,EAAE,cAAc,CAAA;SAAE,EAAE,yBAAyB,CAAC,CAAA;KAC5G,CAAA;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,kBAAkB,CAAC;YAAE,KAAK,EAAE,qBAAqB,CAAA;SAAE,EAAE,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;KACpG,CAAA;IACD,UAAU,EAAE;QACV,GAAG,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,gBAAgB,CAAA;SAAE,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;KACjF,CAAA;IACD,OAAO,EAAE,kBAAkB,CAAC;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAC3F,MAAM,EAAE;QACN,GAAG,EAAE,kBAAkB,CAAC;YAAE,MAAM,EAAE,gBAAgB,CAAC;YAAC,KAAK,EAAE,WAAW,CAAA;SAAE,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAA;QACtG,MAAM,EAAE,kBAAkB,CAAC;YAAE,KAAK,EAAE,eAAe,CAAA;SAAE,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;KACnF,CAAA;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AASxF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,SAAU,uBAAuB,KAAG,iBAsHrE,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type * from './card/types.js';
3
3
  export type * from './changes/types.js';
4
4
  export type * from './code/types.js';
5
5
  export type * from './query/types.js';
6
+ export type * from './reply/types.js';
6
7
  export type * from './scoped/types.js';
7
8
  export type * from './specification/types.js';
8
9
  export type * from './status/types.js';
@@ -13,6 +14,7 @@ export * from './card.js';
13
14
  export * from './changes.js';
14
15
  export * from './code.js';
15
16
  export * from './query.js';
17
+ export * from './reply.js';
16
18
  export * from './scoped.js';
17
19
  export * from './specification.js';
18
20
  export * from './status.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,iBAAiB,CAAA;AAEpC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,iBAAiB,CAAA;AAEpC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
@@ -3,6 +3,7 @@ export * from './card.js';
3
3
  export * from './changes.js';
4
4
  export * from './code.js';
5
5
  export * from './query.js';
6
+ export * from './reply.js';
6
7
  export * from './scoped.js';
7
8
  export * from './specification.js';
8
9
  export * from './status.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAWA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAYA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const REPLY_CONTAINERS: Set<string>;
2
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/helpers/reply/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,aAAmF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const REPLY_CONTAINERS = new Set(['items', 'records', 'card', 'record', 'transition', 'bundle', 'scope']);
2
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/helpers/reply/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ /** Storage organization metadata is absent from planning HTTP and socket replies. */
2
+ export type PlanningReply<T> = T extends readonly (infer R)[] ? PlanningReply<R>[] : T extends object ? {
3
+ [K in keyof T as K extends 'entityId' ? never : K]: K extends 'items' | 'records' | 'card' | 'record' | 'transition' | 'bundle' | 'scope' ? PlanningReply<T[K]> : T[K];
4
+ } : T;
5
+ export interface PlanningReplyHelper {
6
+ project: <T>(value: T) => PlanningReply<T>;
7
+ /** Restore the shared facade shape with empty, non-authoritative organization metadata. */
8
+ hydrate: <T>(value: PlanningReply<T>) => T;
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/helpers/reply/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,GAC9E,CAAC,SAAS,MAAM,GAAG;KAClB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,SACnD,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GACzE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/B,GAAG,CAAC,CAAA;AAEP,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA;IAC1C,2FAA2F;IAC3F,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/helpers/reply/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { PlanningReplyHelper } from './reply/types.js';
2
+ /** Project known planning envelopes; custom fields, changes and schema definitions remain opaque. */
3
+ export declare const createPlanningReplyHelper: () => PlanningReplyHelper;
4
+ export declare const planningReplyHelper: PlanningReplyHelper;
5
+ //# sourceMappingURL=reply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../src/helpers/reply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE1E,qGAAqG;AACrG,eAAO,MAAM,yBAAyB,QAAO,mBAoB5C,CAAA;AAED,eAAO,MAAM,mBAAmB,qBAA8B,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { REPLY_CONTAINERS } from './reply/consts.js';
2
+ /** Project known planning envelopes; custom fields, changes and schema definitions remain opaque. */
3
+ export const createPlanningReplyHelper = () => {
4
+ const visit = (value, hydrate, scope = false) => {
5
+ if (Array.isArray(value))
6
+ return value.map(item => visit(item, hydrate));
7
+ if (value == null || typeof value !== 'object')
8
+ return value;
9
+ const source = value;
10
+ const result = {};
11
+ for (const [key, item] of Object.entries(source)) {
12
+ if (key === 'entityId')
13
+ continue;
14
+ result[key] = REPLY_CONTAINERS.has(key) ? visit(item, hydrate, key === 'scope') : item;
15
+ }
16
+ const record = typeof source.createdAt === 'string'
17
+ || (typeof source.card === 'string' && typeof source.seq === 'number'
18
+ && (source.commit != null || typeof source.state === 'string'));
19
+ if (hydrate && (scope || record))
20
+ result.entityId = '';
21
+ return result;
22
+ };
23
+ return {
24
+ project: (value) => visit(value, false),
25
+ hydrate: (value) => visit(value, true),
26
+ };
27
+ };
28
+ export const planningReplyHelper = createPlanningReplyHelper();
29
+ //# sourceMappingURL=reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.js","sourceRoot":"","sources":["../../src/helpers/reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGpD,qGAAqG;AACrG,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,OAAgB,EAAE,KAAK,GAAG,KAAK,EAAW,EAAE;QACzE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QACxE,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC5D,MAAM,MAAM,GAAG,KAAgC,CAAA;QAC/C,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,KAAK,UAAU;gBAAE,SAAQ;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACxF,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;eAC9C,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;mBAChE,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAA;QACnE,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAA;QACtD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IACD,OAAO;QACL,OAAO,EAAE,CAAI,KAAQ,EAAoB,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAqB;QACnF,OAAO,EAAE,CAAI,KAAuB,EAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAM;KACpE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from '../../helpers/reply/types.js';
1
2
  import type { EntrypointProtocol } from '@owlmeans/entrypoint';
2
3
  import type { ListResult } from '@owlmeans/resource';
3
4
  import type { AssigneeDraft, TeamDraft, CommentDraft, PlanningRecord } from '../types.js';
@@ -18,12 +19,12 @@ export interface PlanningResourceProtocols<R extends PlanningRecord = PlanningRe
18
19
  params: {
19
20
  id: string;
20
21
  };
21
- }, R>;
22
+ }, PlanningReply<R>>;
22
23
  list: EntrypointProtocol<{
23
24
  query: PlanningResourceQueryWire;
24
- }, ListResult<R>>;
25
+ }, PlanningReply<ListResult<R>>>;
25
26
  write: EntrypointProtocol<{
26
27
  body: PlanningResourceCommand;
27
- }, PlanningResourceReply>;
28
+ }, PlanningReply<PlanningResourceReply>>;
28
29
  }
29
30
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resources/protocol/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,MAAM,WAAW,yBAAyB;IAAG,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzJ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;AAEvF,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAClF,GAAG,EAAE,kBAAkB,CAAC;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAC,CAAC,CAAA;IACtD,IAAI,EAAE,kBAAkB,CAAC;QAAE,KAAK,EAAE,yBAAyB,CAAA;KAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,KAAK,EAAE,kBAAkB,CAAC;QAAE,IAAI,EAAE,uBAAuB,CAAA;KAAE,EAAE,qBAAqB,CAAC,CAAA;CACpF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resources/protocol/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,MAAM,WAAW,yBAAyB;IAAG,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzJ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;AAEvF,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAClF,GAAG,EAAE,kBAAkB,CAAC;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,IAAI,EAAE,kBAAkB,CAAC;QAAE,KAAK,EAAE,yBAAyB,CAAA;KAAE,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5F,KAAK,EAAE,kBAAkB,CAAC;QAAE,IAAI,EAAE,uBAAuB,CAAA;KAAE,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAA;CACnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/resources/protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAA2B,yBAAyB,EAAoD,MAAM,qBAAqB,CAAA;AAE/I,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,cAAc,QAAQ,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,KAAG,yBAAyB,CAAC,CAAC,CAuB7M,CAAA"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/resources/protocol.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAA2B,yBAAyB,EAAoD,MAAM,qBAAqB,CAAA;AAE/I,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,cAAc,QAAQ,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,KAAG,yBAAyB,CAAC,CAAC,CAuB7M,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/resources/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/resources/protocol.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/planning",
3
- "version": "0.1.18-rc.22",
3
+ "version": "0.1.18-rc.24",
4
4
  "license": "MIT",
5
5
  "description": "Runtime-free project-planning contracts — the workcard super type, projects, specifications, typed relationships, status flows with three intrinsic states, the transition event and its pure fold, the schema registry, the models and the protocol tree.",
6
6
  "type": "module",
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from '../helpers/reply/types.js'
1
2
  import type { PlanningResourceProtocols } from '../resources/protocol/types.js'
2
3
  import type { Assignee, Team, Comment, CommentMention } from '../resources/types.js'
3
4
  import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint'
@@ -46,30 +47,30 @@ export interface PlanningProtocols {
46
47
  base: EntrypointProtocol<OpenRequest, OpenValue>
47
48
  schema: {
48
49
  /** The plain bundle — or, on a tree declared with `definitions`, a layer's scoped one. */
49
- list: EntrypointProtocol<{ query?: SchemaListQuery }, ScopedSchemaBundle>
50
+ list: EntrypointProtocol<{ query?: SchemaListQuery }, PlanningReply<ScopedSchemaBundle>>
50
51
  /** Present on a tree declared with `definitions` only. */
51
- define?: EntrypointProtocol<{ body: SchemaDefineRequest }, SchemaDefineReply>
52
+ define?: EntrypointProtocol<{ body: SchemaDefineRequest }, PlanningReply<SchemaDefineReply>>
52
53
  }
53
54
  card: {
54
- list: EntrypointProtocol<{ query: WorkcardQueryWire }, ListResult<Workcard>>
55
+ list: EntrypointProtocol<{ query: WorkcardQueryWire }, PlanningReply<ListResult<Workcard>>>
55
56
  summary: EntrypointProtocol<{ query: SummaryQueryWire }, SummaryView>
56
- get: EntrypointProtocol<{ params: WorkcardParams }, Workcard>
57
- transitions: EntrypointProtocol<{ params: WorkcardParams, query: TransitionQueryWire }, ListResult<Transition>>
58
- specifications: EntrypointProtocol<{ params: WorkcardParams, query: SpecificationQueryWire }, ListResult<Specification>>
57
+ get: EntrypointProtocol<{ params: WorkcardParams }, PlanningReply<Workcard>>
58
+ transitions: EntrypointProtocol<{ params: WorkcardParams, query: TransitionQueryWire }, PlanningReply<ListResult<Transition>>>
59
+ specifications: EntrypointProtocol<{ params: WorkcardParams, query: SpecificationQueryWire }, PlanningReply<ListResult<Specification>>>
59
60
  }
60
61
  spec: {
61
- get: EntrypointProtocol<{ params: WorkcardParams }, Specification>
62
+ get: EntrypointProtocol<{ params: WorkcardParams }, PlanningReply<Specification>>
62
63
  revisions: EntrypointProtocol<{ params: WorkcardParams, query: RevisionsQuery }, SpecificationRevisionList>
63
64
  }
64
65
  link: {
65
- list: EntrypointProtocol<{ query: RelationshipQueryWire }, ListResult<Relationship>>
66
+ list: EntrypointProtocol<{ query: RelationshipQueryWire }, PlanningReply<ListResult<Relationship>>>
66
67
  }
67
68
  transition: {
68
- get: EntrypointProtocol<{ params: TransitionParams }, Transition>
69
+ get: EntrypointProtocol<{ params: TransitionParams }, PlanningReply<Transition>>
69
70
  }
70
- execute: EntrypointProtocol<{ body: ExecuteRequest }, TransitionReceiptView>
71
+ execute: EntrypointProtocol<{ body: ExecuteRequest }, PlanningReply<TransitionReceiptView>>
71
72
  commit: {
72
- get: EntrypointProtocol<{ params: TransitionParams, query: CommitQuery }, CommitStatus>
73
- events: EntrypointProtocol<{ query: CommitFeedQuery }, CommitEvent>
73
+ get: EntrypointProtocol<{ params: TransitionParams, query: CommitQuery }, PlanningReply<CommitStatus>>
74
+ events: EntrypointProtocol<{ query: CommitFeedQuery }, PlanningReply<CommitEvent>>
74
75
  }
75
76
  }
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from './helpers/reply/types.js'
1
2
  import { makePlanningResourceProtocols } from './resources/protocol.js'
2
3
  import type { Assignee, Team, Comment, CommentMention } from './resources/types.js'
3
4
  import { contract, openProtocol, protocol, typed } from '@owlmeans/entrypoint'
@@ -51,11 +52,11 @@ export const makePlanningProtocols = (opts: PlanningProtocolOptions): PlanningPr
51
52
  ? Object.freeze({
52
53
  list: protocol(
53
54
  get(aliases.schema.list, '/schemas'),
54
- contract.request({ query: typed<SchemaListQuery>(SchemaListQuerySchema) }, typed<ScopedSchemaBundle>())
55
+ contract.request({ query: typed<SchemaListQuery>(SchemaListQuerySchema) }, typed<PlanningReply<ScopedSchemaBundle>>())
55
56
  ) as unknown as PlanningProtocols['schema']['list'],
56
57
  define: protocol(
57
58
  route(planningAliasHelper.planningDefinitionAliases(opts.base.alias).define, '/schemas', backend({ parent: base }, RouteMethod.POST)),
58
- contract.request({ body: typed<SchemaDefineRequest>(SchemaDefineRequestSchema) }, typed<SchemaDefineReply>())
59
+ contract.request({ body: typed<SchemaDefineRequest>(SchemaDefineRequestSchema) }, typed<PlanningReply<SchemaDefineReply>>())
59
60
  ),
60
61
  })
61
62
  : Object.freeze({
@@ -78,7 +79,7 @@ export const makePlanningProtocols = (opts: PlanningProtocolOptions): PlanningPr
78
79
  card: Object.freeze({
79
80
  list: protocol(
80
81
  get(aliases.card.list, '/cards'),
81
- contract.request({ query: typed<WorkcardQueryWire>(WorkcardQuerySchema) }, typed<ListResult<Workcard>>())
82
+ contract.request({ query: typed<WorkcardQueryWire>(WorkcardQuerySchema) }, typed<PlanningReply<ListResult<Workcard>>>())
82
83
  ),
83
84
  // Static before parametric: `/cards/summary` must never be read as a card id.
84
85
  summary: protocol(
@@ -87,28 +88,28 @@ export const makePlanningProtocols = (opts: PlanningProtocolOptions): PlanningPr
87
88
  ),
88
89
  get: protocol(
89
90
  get(aliases.card.get, '/cards/:id'),
90
- contract.request({ params: typed<WorkcardParams>(WorkcardParamsSchema) }, typed<Workcard>())
91
+ contract.request({ params: typed<WorkcardParams>(WorkcardParamsSchema) }, typed<PlanningReply<Workcard>>())
91
92
  ),
92
93
  transitions: protocol(
93
94
  get(aliases.card.transitions, '/cards/:id/transitions'),
94
95
  contract.request({
95
96
  params: typed<WorkcardParams>(WorkcardParamsSchema),
96
97
  query: typed<TransitionQueryWire>(TransitionQuerySchema),
97
- }, typed<ListResult<Transition>>())
98
+ }, typed<PlanningReply<ListResult<Transition>>>())
98
99
  ),
99
100
  specifications: protocol(
100
101
  get(aliases.card.specifications, '/cards/:id/specifications'),
101
102
  contract.request({
102
103
  params: typed<WorkcardParams>(WorkcardParamsSchema),
103
104
  query: typed<SpecificationQueryWire>(SpecificationQuerySchema),
104
- }, typed<ListResult<Specification>>())
105
+ }, typed<PlanningReply<ListResult<Specification>>>())
105
106
  ),
106
107
  }),
107
108
 
108
109
  spec: Object.freeze({
109
110
  get: protocol(
110
111
  get(aliases.spec.get, '/specifications/:id'),
111
- contract.request({ params: typed<WorkcardParams>(WorkcardParamsSchema) }, typed<Specification>())
112
+ contract.request({ params: typed<WorkcardParams>(WorkcardParamsSchema) }, typed<PlanningReply<Specification>>())
112
113
  ),
113
114
  revisions: protocol(
114
115
  get(aliases.spec.revisions, '/specifications/:id/revisions'),
@@ -122,20 +123,20 @@ export const makePlanningProtocols = (opts: PlanningProtocolOptions): PlanningPr
122
123
  link: Object.freeze({
123
124
  list: protocol(
124
125
  get(aliases.link.list, '/links'),
125
- contract.request({ query: typed<RelationshipQueryWire>(RelationshipQuerySchema) }, typed<ListResult<Relationship>>())
126
+ contract.request({ query: typed<RelationshipQueryWire>(RelationshipQuerySchema) }, typed<PlanningReply<ListResult<Relationship>>>())
126
127
  ),
127
128
  }),
128
129
 
129
130
  transition: Object.freeze({
130
131
  get: protocol(
131
132
  get(aliases.transition.get, '/transitions/:transition'),
132
- contract.request({ params: typed<TransitionParams>(TransitionParamsSchema) }, typed<Transition>())
133
+ contract.request({ params: typed<TransitionParams>(TransitionParamsSchema) }, typed<PlanningReply<Transition>>())
133
134
  ),
134
135
  }),
135
136
 
136
137
  execute: protocol(
137
138
  route(aliases.execute, '/execute', backend({ parent: base }, RouteMethod.POST)),
138
- contract.request({ body: typed<ExecuteRequest>(ExecuteRequestSchema) }, typed<TransitionReceiptView>())
139
+ contract.request({ body: typed<ExecuteRequest>(ExecuteRequestSchema) }, typed<PlanningReply<TransitionReceiptView>>())
139
140
  ),
140
141
 
141
142
  commit: Object.freeze({
@@ -144,11 +145,11 @@ export const makePlanningProtocols = (opts: PlanningProtocolOptions): PlanningPr
144
145
  contract.request({
145
146
  params: typed<TransitionParams>(TransitionParamsSchema),
146
147
  query: typed<CommitQuery>(CommitQuerySchema),
147
- }, typed<CommitStatus>())
148
+ }, typed<PlanningReply<CommitStatus>>())
148
149
  ),
149
150
  events: protocol(
150
151
  route(aliases.commit.events, '/commits', socket({ parent: opts.socketBase ?? base })),
151
- contract.request({ query: typed<CommitFeedQuery>() }, typed<CommitEvent>())
152
+ contract.request({ query: typed<CommitFeedQuery>() }, typed<PlanningReply<CommitEvent>>())
152
153
  ),
153
154
  }),
154
155
  })
@@ -3,6 +3,7 @@ export type * from './card/types.js'
3
3
  export type * from './changes/types.js'
4
4
  export type * from './code/types.js'
5
5
  export type * from './query/types.js'
6
+ export type * from './reply/types.js'
6
7
  export type * from './scoped/types.js'
7
8
  export type * from './specification/types.js'
8
9
  export type * from './status/types.js'
@@ -14,6 +15,7 @@ export * from './card.js'
14
15
  export * from './changes.js'
15
16
  export * from './code.js'
16
17
  export * from './query.js'
18
+ export * from './reply.js'
17
19
  export * from './scoped.js'
18
20
  export * from './specification.js'
19
21
  export * from './status.js'
@@ -0,0 +1 @@
1
+ export const REPLY_CONTAINERS = new Set(['items', 'records', 'card', 'record', 'transition', 'bundle', 'scope'])
@@ -0,0 +1,13 @@
1
+ /** Storage organization metadata is absent from planning HTTP and socket replies. */
2
+ export type PlanningReply<T> = T extends readonly (infer R)[] ? PlanningReply<R>[]
3
+ : T extends object ? {
4
+ [K in keyof T as K extends 'entityId' ? never : K]: K extends
5
+ 'items' | 'records' | 'card' | 'record' | 'transition' | 'bundle' | 'scope'
6
+ ? PlanningReply<T[K]> : T[K]
7
+ } : T
8
+
9
+ export interface PlanningReplyHelper {
10
+ project: <T>(value: T) => PlanningReply<T>
11
+ /** Restore the shared facade shape with empty, non-authoritative organization metadata. */
12
+ hydrate: <T>(value: PlanningReply<T>) => T
13
+ }
@@ -0,0 +1,27 @@
1
+ import { REPLY_CONTAINERS } from './reply/consts.js'
2
+ import type { PlanningReply, PlanningReplyHelper } from './reply/types.js'
3
+
4
+ /** Project known planning envelopes; custom fields, changes and schema definitions remain opaque. */
5
+ export const createPlanningReplyHelper = (): PlanningReplyHelper => {
6
+ const visit = (value: unknown, hydrate: boolean, scope = false): unknown => {
7
+ if (Array.isArray(value)) return value.map(item => visit(item, hydrate))
8
+ if (value == null || typeof value !== 'object') return value
9
+ const source = value as Record<string, unknown>
10
+ const result: Record<string, unknown> = {}
11
+ for (const [key, item] of Object.entries(source)) {
12
+ if (key === 'entityId') continue
13
+ result[key] = REPLY_CONTAINERS.has(key) ? visit(item, hydrate, key === 'scope') : item
14
+ }
15
+ const record = typeof source.createdAt === 'string'
16
+ || (typeof source.card === 'string' && typeof source.seq === 'number'
17
+ && (source.commit != null || typeof source.state === 'string'))
18
+ if (hydrate && (scope || record)) result.entityId = ''
19
+ return result
20
+ }
21
+ return {
22
+ project: <T>(value: T): PlanningReply<T> => visit(value, false) as PlanningReply<T>,
23
+ hydrate: <T>(value: PlanningReply<T>): T => visit(value, true) as T,
24
+ }
25
+ }
26
+
27
+ export const planningReplyHelper = createPlanningReplyHelper()
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from '../../helpers/reply/types.js'
1
2
  import type { EntrypointProtocol } from '@owlmeans/entrypoint'
2
3
  import type { ListResult } from '@owlmeans/resource'
3
4
  import type { AssigneeDraft, TeamDraft, CommentDraft, PlanningRecord } from '../types.js'
@@ -14,7 +15,7 @@ export interface PlanningResourceCommand {
14
15
  export type PlanningResourceReply = PlanningRecord | PlanningRecord[] | string[] | null
15
16
 
16
17
  export interface PlanningResourceProtocols<R extends PlanningRecord = PlanningRecord> {
17
- get: EntrypointProtocol<{ params: { id: string } }, R>
18
- list: EntrypointProtocol<{ query: PlanningResourceQueryWire }, ListResult<R>>
19
- write: EntrypointProtocol<{ body: PlanningResourceCommand }, PlanningResourceReply>
18
+ get: EntrypointProtocol<{ params: { id: string } }, PlanningReply<R>>
19
+ list: EntrypointProtocol<{ query: PlanningResourceQueryWire }, PlanningReply<ListResult<R>>>
20
+ write: EntrypointProtocol<{ body: PlanningResourceCommand }, PlanningReply<PlanningResourceReply>>
20
21
  }
@@ -1,3 +1,4 @@
1
+ import type { PlanningReply } from '../helpers/reply/types.js'
1
2
  import { planningAliasHelper } from '../aliases.js'
2
3
  import { contract, protocol, typed } from '@owlmeans/entrypoint'
3
4
  import type { EntrypointProtocol } from '@owlmeans/entrypoint'
@@ -28,8 +29,8 @@ export const makePlanningResourceProtocols = <R extends PlanningRecord>(base: En
28
29
  }, required: ['action'], additionalProperties: false,
29
30
  }
30
31
  return Object.freeze({
31
- get: protocol(route(aliases.get, `/${name}/:id`, backend({ parent: base }, RouteMethod.GET)), contract.request({ params: typed<{ id: string }>(WorkcardParamsSchema) }, typed<R>())),
32
- list: protocol(route(aliases.list, `/${name}`, backend({ parent: base }, RouteMethod.GET)), contract.request({ query: typed<PlanningResourceQueryWire>({ type: 'object', properties: { query: { type: 'string', maxLength: 16384, nullable: true } }, required: [], additionalProperties: false }) }, typed<ListResult<R>>())),
33
- write: protocol(route(aliases.write, `/${name}`, backend({ parent: base }, RouteMethod.POST)), contract.request({ body: typed<PlanningResourceCommand>(commandSchema as any) }, typed<PlanningResourceReply>())),
32
+ get: protocol(route(aliases.get, `/${name}/:id`, backend({ parent: base }, RouteMethod.GET)), contract.request({ params: typed<{ id: string }>(WorkcardParamsSchema) }, typed<PlanningReply<R>>())),
33
+ list: protocol(route(aliases.list, `/${name}`, backend({ parent: base }, RouteMethod.GET)), contract.request({ query: typed<PlanningResourceQueryWire>({ type: 'object', properties: { query: { type: 'string', maxLength: 16384, nullable: true } }, required: [], additionalProperties: false }) }, typed<PlanningReply<ListResult<R>>>())),
34
+ write: protocol(route(aliases.write, `/${name}`, backend({ parent: base }, RouteMethod.POST)), contract.request({ body: typed<PlanningResourceCommand>(commandSchema as any) }, typed<PlanningReply<PlanningResourceReply>>())),
34
35
  })
35
36
  }
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test'
2
2
  import { CommitState, TransitionAction, WorkcardKind } from '../src/consts.js'
3
- import { WorkcardNotFound } from '../src/errors.js'
3
+ import { PlanningUnsupported, WorkcardNotFound } from '../src/errors.js'
4
4
  import { makeProjectModel, makeWorkcardModel, modelOf } from '../src/models/index.js'
5
5
  import type { ProjectModel } from '../src/models/types.js'
6
6
  import type {
@@ -22,8 +22,15 @@ const makeFacade = () => {
22
22
  const cards = new Map<string, Workcard>()
23
23
  const executed: TransitionExecution[] = []
24
24
  let next = 0
25
+ const unsupported = async (): Promise<never> => { throw new PlanningUnsupported('model-fixture:resources') }
25
26
 
26
27
  const facade: PlanningFacade = {
28
+ assignees: { get: unsupported, load: unsupported, list: unsupported, create: unsupported, update: unsupported, retire: unsupported },
29
+ teams: { get: unsupported, load: unsupported, list: unsupported, create: unsupported, update: unsupported, remove: unsupported,
30
+ members: unsupported, addMember: unsupported, removeMember: unsupported, projects: unsupported,
31
+ attach: unsupported, detach: unsupported, assignees: unsupported },
32
+ comments: { get: unsupported, load: unsupported, list: unsupported, create: unsupported, update: unsupported, remove: unsupported },
33
+ mentions: { get: unsupported, load: unsupported, list: unsupported, rebuild: unsupported },
27
34
  scope: { entityId: ENTITY },
28
35
  schemas,
29
36
  cards: {