@contractspec/example.team-hub 1.44.0

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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/announcement/announcement.operations.d.ts +61 -0
  4. package/dist/announcement/announcement.operations.d.ts.map +1 -0
  5. package/dist/announcement/announcement.operations.js +53 -0
  6. package/dist/announcement/announcement.operations.js.map +1 -0
  7. package/dist/announcement/announcement.schema.d.ts +64 -0
  8. package/dist/announcement/announcement.schema.d.ts.map +1 -0
  9. package/dist/announcement/announcement.schema.js +73 -0
  10. package/dist/announcement/announcement.schema.js.map +1 -0
  11. package/dist/announcement/index.d.ts +3 -0
  12. package/dist/announcement/index.js +4 -0
  13. package/dist/docs/index.d.ts +1 -0
  14. package/dist/docs/index.js +1 -0
  15. package/dist/docs/team-hub.docblock.d.ts +1 -0
  16. package/dist/docs/team-hub.docblock.js +106 -0
  17. package/dist/docs/team-hub.docblock.js.map +1 -0
  18. package/dist/entities/index.d.ts +150 -0
  19. package/dist/entities/index.d.ts.map +1 -0
  20. package/dist/entities/index.js +263 -0
  21. package/dist/entities/index.js.map +1 -0
  22. package/dist/events.d.ts +289 -0
  23. package/dist/events.d.ts.map +1 -0
  24. package/dist/events.js +214 -0
  25. package/dist/events.js.map +1 -0
  26. package/dist/example.d.ts +40 -0
  27. package/dist/example.d.ts.map +1 -0
  28. package/dist/example.js +51 -0
  29. package/dist/example.js.map +1 -0
  30. package/dist/handlers/index.d.ts +8 -0
  31. package/dist/handlers/index.d.ts.map +1 -0
  32. package/dist/handlers/index.js +9 -0
  33. package/dist/handlers/index.js.map +1 -0
  34. package/dist/index.d.ts +15 -0
  35. package/dist/index.js +16 -0
  36. package/dist/presentations/index.d.ts +5 -0
  37. package/dist/presentations/index.d.ts.map +1 -0
  38. package/dist/presentations/index.js +13 -0
  39. package/dist/presentations/index.js.map +1 -0
  40. package/dist/presentations.d.ts +12 -0
  41. package/dist/presentations.d.ts.map +1 -0
  42. package/dist/presentations.js +154 -0
  43. package/dist/presentations.js.map +1 -0
  44. package/dist/ritual/index.d.ts +3 -0
  45. package/dist/ritual/index.js +4 -0
  46. package/dist/ritual/ritual.operations.d.ts +107 -0
  47. package/dist/ritual/ritual.operations.d.ts.map +1 -0
  48. package/dist/ritual/ritual.operations.js +98 -0
  49. package/dist/ritual/ritual.operations.js.map +1 -0
  50. package/dist/ritual/ritual.schema.d.ts +85 -0
  51. package/dist/ritual/ritual.schema.d.ts.map +1 -0
  52. package/dist/ritual/ritual.schema.js +98 -0
  53. package/dist/ritual/ritual.schema.js.map +1 -0
  54. package/dist/space/index.d.ts +3 -0
  55. package/dist/space/index.js +4 -0
  56. package/dist/space/space.operations.d.ts +49 -0
  57. package/dist/space/space.operations.d.ts.map +1 -0
  58. package/dist/space/space.operations.js +52 -0
  59. package/dist/space/space.operations.js.map +1 -0
  60. package/dist/space/space.schema.d.ts +52 -0
  61. package/dist/space/space.schema.d.ts.map +1 -0
  62. package/dist/space/space.schema.js +61 -0
  63. package/dist/space/space.schema.js.map +1 -0
  64. package/dist/task/index.d.ts +3 -0
  65. package/dist/task/index.js +4 -0
  66. package/dist/task/task.operations.d.ts +230 -0
  67. package/dist/task/task.operations.d.ts.map +1 -0
  68. package/dist/task/task.operations.js +180 -0
  69. package/dist/task/task.operations.js.map +1 -0
  70. package/dist/task/task.schema.d.ts +81 -0
  71. package/dist/task/task.schema.d.ts.map +1 -0
  72. package/dist/task/task.schema.js +94 -0
  73. package/dist/task/task.schema.js.map +1 -0
  74. package/dist/team-hub.feature.d.ts +7 -0
  75. package/dist/team-hub.feature.d.ts.map +1 -0
  76. package/dist/team-hub.feature.js +159 -0
  77. package/dist/team-hub.feature.js.map +1 -0
  78. package/package.json +99 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Chaman Ventures, SASU
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # @contractspec/example.team-hub
2
+
3
+ Website: https://contractspec.io/
4
+
5
+
6
+ Team Hub reference example with spaces/projects, tasks, rituals, and announcements for internal teams.
7
+
8
+ Highlights:
9
+
10
+ - Spaces/projects with members and roles
11
+ - Tasks with status, priority, assignees, and due dates
12
+ - Rituals (recurring meetings/check-ins) with schedules and attendance
13
+ - Announcements with audience targeting
14
+ - Notifications for rituals/reminders and task assignments
15
+ - Jobs hooks for recurring ritual creation
@@ -0,0 +1,61 @@
1
+ import * as _contractspec_lib_schema107 from "@contractspec/lib.schema";
2
+ import * as _contractspec_lib_contracts11 from "@contractspec/lib.contracts";
3
+
4
+ //#region src/announcement/announcement.operations.d.ts
5
+ /**
6
+ * Post an announcement.
7
+ */
8
+ declare const PostAnnouncementContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema107.SchemaModel<{
9
+ title: {
10
+ type: _contractspec_lib_schema107.FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ body: {
14
+ type: _contractspec_lib_schema107.FieldType<string, string>;
15
+ isOptional: false;
16
+ };
17
+ audience: {
18
+ type: _contractspec_lib_schema107.FieldType<string, string>;
19
+ isOptional: false;
20
+ };
21
+ audienceRole: {
22
+ type: _contractspec_lib_schema107.FieldType<string, string>;
23
+ isOptional: true;
24
+ };
25
+ spaceId: {
26
+ type: _contractspec_lib_schema107.FieldType<string, string>;
27
+ isOptional: true;
28
+ };
29
+ expiresAt: {
30
+ type: _contractspec_lib_schema107.FieldType<Date, string>;
31
+ isOptional: true;
32
+ };
33
+ }>, _contractspec_lib_schema107.SchemaModel<{
34
+ id: {
35
+ type: _contractspec_lib_schema107.FieldType<string, string>;
36
+ isOptional: false;
37
+ };
38
+ title: {
39
+ type: _contractspec_lib_schema107.FieldType<string, string>;
40
+ isOptional: false;
41
+ };
42
+ body: {
43
+ type: _contractspec_lib_schema107.FieldType<string, string>;
44
+ isOptional: false;
45
+ };
46
+ audience: {
47
+ type: _contractspec_lib_schema107.FieldType<string, string>;
48
+ isOptional: false;
49
+ };
50
+ audienceRole: {
51
+ type: _contractspec_lib_schema107.FieldType<string, string>;
52
+ isOptional: true;
53
+ };
54
+ spaceId: {
55
+ type: _contractspec_lib_schema107.FieldType<string, string>;
56
+ isOptional: true;
57
+ };
58
+ }>, undefined>;
59
+ //#endregion
60
+ export { PostAnnouncementContract };
61
+ //# sourceMappingURL=announcement.operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.operations.d.ts","names":[],"sources":["../../src/announcement/announcement.operations.ts"],"sourcesContent":[],"mappings":";;;;;;;cAWa,wDAAwB,0CAAA;EAAxB,KAAA,EAAA;IAqCX,IAAA,EAAA,2BAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;IArCmC,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;IAAA,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;UAAA,2BAAA,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
2
+ import { defineCommand } from "@contractspec/lib.contracts";
3
+
4
+ //#region src/announcement/announcement.operations.ts
5
+ const OWNERS = ["@examples.team-hub"];
6
+ /**
7
+ * Post an announcement.
8
+ */
9
+ const PostAnnouncementContract = defineCommand({
10
+ meta: {
11
+ key: "team.announcement.post",
12
+ version: 1,
13
+ stability: "stable",
14
+ owners: [...OWNERS],
15
+ tags: [
16
+ "team-hub",
17
+ "announcement",
18
+ "post"
19
+ ],
20
+ description: "Post an announcement.",
21
+ goal: "Communicate with team.",
22
+ context: "Communication."
23
+ },
24
+ io: {
25
+ input: PostAnnouncementInputModel,
26
+ output: AnnouncementModel
27
+ },
28
+ policy: { auth: "user" },
29
+ acceptance: {
30
+ scenarios: [{
31
+ key: "post-announcement-happy-path",
32
+ given: ["User is authenticated"],
33
+ when: ["User posts an announcement"],
34
+ then: ["Announcement is posted and distributed"]
35
+ }],
36
+ examples: [{
37
+ key: "post-general",
38
+ input: {
39
+ spaceId: "space-123",
40
+ title: "New Policy",
41
+ content: "Please read..."
42
+ },
43
+ output: {
44
+ id: "ann-456",
45
+ status: "posted"
46
+ }
47
+ }]
48
+ }
49
+ });
50
+
51
+ //#endregion
52
+ export { PostAnnouncementContract };
53
+ //# sourceMappingURL=announcement.operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.operations.js","names":[],"sources":["../../src/announcement/announcement.operations.ts"],"sourcesContent":["import { defineCommand } from '@contractspec/lib.contracts';\nimport {\n AnnouncementModel,\n PostAnnouncementInputModel,\n} from './announcement.schema';\n\nconst OWNERS = ['@examples.team-hub'] as const;\n\n/**\n * Post an announcement.\n */\nexport const PostAnnouncementContract = defineCommand({\n meta: {\n key: 'team.announcement.post',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['team-hub', 'announcement', 'post'],\n description: 'Post an announcement.',\n goal: 'Communicate with team.',\n context: 'Communication.',\n },\n io: {\n input: PostAnnouncementInputModel,\n output: AnnouncementModel,\n },\n policy: { auth: 'user' },\n acceptance: {\n scenarios: [\n {\n key: 'post-announcement-happy-path',\n given: ['User is authenticated'],\n when: ['User posts an announcement'],\n then: ['Announcement is posted and distributed'],\n },\n ],\n examples: [\n {\n key: 'post-general',\n input: {\n spaceId: 'space-123',\n title: 'New Policy',\n content: 'Please read...',\n },\n output: { id: 'ann-456', status: 'posted' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAMA,MAAM,SAAS,CAAC,qBAAqB;;;;AAKrC,MAAa,2BAA2B,cAAc;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAY;GAAgB;GAAO;EAC1C,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EAAE,MAAM,QAAQ;CACxB,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,wBAAwB;GAChC,MAAM,CAAC,6BAA6B;GACpC,MAAM,CAAC,yCAAyC;GACjD,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IACL,SAAS;IACT,OAAO;IACP,SAAS;IACV;GACD,QAAQ;IAAE,IAAI;IAAW,QAAQ;IAAU;GAC5C,CACF;EACF;CACF,CAAC"}
@@ -0,0 +1,64 @@
1
+ import * as _contractspec_lib_schema93 from "@contractspec/lib.schema";
2
+
3
+ //#region src/announcement/announcement.schema.d.ts
4
+ /**
5
+ * Announcement to spaces/org.
6
+ */
7
+ declare const AnnouncementModel: _contractspec_lib_schema93.SchemaModel<{
8
+ id: {
9
+ type: _contractspec_lib_schema93.FieldType<string, string>;
10
+ isOptional: false;
11
+ };
12
+ title: {
13
+ type: _contractspec_lib_schema93.FieldType<string, string>;
14
+ isOptional: false;
15
+ };
16
+ body: {
17
+ type: _contractspec_lib_schema93.FieldType<string, string>;
18
+ isOptional: false;
19
+ };
20
+ audience: {
21
+ type: _contractspec_lib_schema93.FieldType<string, string>;
22
+ isOptional: false;
23
+ };
24
+ audienceRole: {
25
+ type: _contractspec_lib_schema93.FieldType<string, string>;
26
+ isOptional: true;
27
+ };
28
+ spaceId: {
29
+ type: _contractspec_lib_schema93.FieldType<string, string>;
30
+ isOptional: true;
31
+ };
32
+ }>;
33
+ /**
34
+ * Input for posting an announcement.
35
+ */
36
+ declare const PostAnnouncementInputModel: _contractspec_lib_schema93.SchemaModel<{
37
+ title: {
38
+ type: _contractspec_lib_schema93.FieldType<string, string>;
39
+ isOptional: false;
40
+ };
41
+ body: {
42
+ type: _contractspec_lib_schema93.FieldType<string, string>;
43
+ isOptional: false;
44
+ };
45
+ audience: {
46
+ type: _contractspec_lib_schema93.FieldType<string, string>;
47
+ isOptional: false;
48
+ };
49
+ audienceRole: {
50
+ type: _contractspec_lib_schema93.FieldType<string, string>;
51
+ isOptional: true;
52
+ };
53
+ spaceId: {
54
+ type: _contractspec_lib_schema93.FieldType<string, string>;
55
+ isOptional: true;
56
+ };
57
+ expiresAt: {
58
+ type: _contractspec_lib_schema93.FieldType<Date, string>;
59
+ isOptional: true;
60
+ };
61
+ }>;
62
+ //#endregion
63
+ export { AnnouncementModel, PostAnnouncementInputModel };
64
+ //# sourceMappingURL=announcement.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.schema.d.ts","names":[],"sources":["../../src/announcement/announcement.schema.ts"],"sourcesContent":[],"mappings":";;;;;;AAKa,cAAA,iBAWX,6BAX4B,WAW5B,CAAA;EAAA,EAAA,EAAA;UAAA,0BAAA,CAAA;;;;;;EAX4B,CAAA;EAgBjB,IAAA,EAAA;IAWX,IAAA,sCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;IAXqC,IAAA,sCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;cAA1B,uDAA0B;;UAWrC,0BAAA,CAAA"}
@@ -0,0 +1,73 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
2
+
3
+ //#region src/announcement/announcement.schema.ts
4
+ /**
5
+ * Announcement to spaces/org.
6
+ */
7
+ const AnnouncementModel = defineSchemaModel({
8
+ name: "Announcement",
9
+ description: "Announcement to spaces/org",
10
+ fields: {
11
+ id: {
12
+ type: ScalarTypeEnum.String_unsecure(),
13
+ isOptional: false
14
+ },
15
+ title: {
16
+ type: ScalarTypeEnum.String_unsecure(),
17
+ isOptional: false
18
+ },
19
+ body: {
20
+ type: ScalarTypeEnum.String_unsecure(),
21
+ isOptional: false
22
+ },
23
+ audience: {
24
+ type: ScalarTypeEnum.String_unsecure(),
25
+ isOptional: false
26
+ },
27
+ audienceRole: {
28
+ type: ScalarTypeEnum.String_unsecure(),
29
+ isOptional: true
30
+ },
31
+ spaceId: {
32
+ type: ScalarTypeEnum.String_unsecure(),
33
+ isOptional: true
34
+ }
35
+ }
36
+ });
37
+ /**
38
+ * Input for posting an announcement.
39
+ */
40
+ const PostAnnouncementInputModel = defineSchemaModel({
41
+ name: "PostAnnouncementInput",
42
+ description: "Post an announcement",
43
+ fields: {
44
+ title: {
45
+ type: ScalarTypeEnum.String_unsecure(),
46
+ isOptional: false
47
+ },
48
+ body: {
49
+ type: ScalarTypeEnum.String_unsecure(),
50
+ isOptional: false
51
+ },
52
+ audience: {
53
+ type: ScalarTypeEnum.String_unsecure(),
54
+ isOptional: false
55
+ },
56
+ audienceRole: {
57
+ type: ScalarTypeEnum.String_unsecure(),
58
+ isOptional: true
59
+ },
60
+ spaceId: {
61
+ type: ScalarTypeEnum.String_unsecure(),
62
+ isOptional: true
63
+ },
64
+ expiresAt: {
65
+ type: ScalarTypeEnum.DateTime(),
66
+ isOptional: true
67
+ }
68
+ }
69
+ });
70
+
71
+ //#endregion
72
+ export { AnnouncementModel, PostAnnouncementInputModel };
73
+ //# sourceMappingURL=announcement.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.schema.js","names":[],"sources":["../../src/announcement/announcement.schema.ts"],"sourcesContent":["import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\n/**\n * Announcement to spaces/org.\n */\nexport const AnnouncementModel = defineSchemaModel({\n name: 'Announcement',\n description: 'Announcement to spaces/org',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\n/**\n * Input for posting an announcement.\n */\nexport const PostAnnouncementInputModel = defineSchemaModel({\n name: 'PostAnnouncementInput',\n description: 'Post an announcement',\n fields: {\n title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n"],"mappings":";;;;;;AAKA,MAAa,oBAAoB,kBAAkB;CACjD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACpE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,UAAU;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACvE,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACtE;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,kBAAkB;CAC1D,MAAM;CACN,aAAa;CACb,QAAQ;EACN,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACpE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,UAAU;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACvE,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACrE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAM;EACjE;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PostAnnouncementContract } from "./announcement.operations.js";
2
+ import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
3
+ export { AnnouncementModel, PostAnnouncementContract, PostAnnouncementInputModel };
@@ -0,0 +1,4 @@
1
+ import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
2
+ import { PostAnnouncementContract } from "./announcement.operations.js";
3
+
4
+ export { AnnouncementModel, PostAnnouncementContract, PostAnnouncementInputModel };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ import "./team-hub.docblock.js";
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,106 @@
1
+ import { registerDocBlocks } from "@contractspec/lib.contracts/docs";
2
+
3
+ //#region src/docs/team-hub.docblock.ts
4
+ registerDocBlocks([
5
+ {
6
+ id: "docs.examples.team-hub",
7
+ title: "Team Hub",
8
+ summary: "Internal collaboration hub with spaces, tasks, rituals, and announcements.",
9
+ kind: "reference",
10
+ visibility: "public",
11
+ route: "/docs/examples/team-hub",
12
+ tags: [
13
+ "tasks",
14
+ "rituals",
15
+ "announcements",
16
+ "collaboration"
17
+ ],
18
+ body: `## Domains
19
+
20
+ - Spaces/projects with members and roles.
21
+ - Tasks with status, priority, assignees, due dates.
22
+ - Rituals (standups/retros/planning) with cadence and attendance.
23
+ - Announcements targeted by space or role.
24
+
25
+ ## Modules reused
26
+ - Identity/RBAC for roles and membership
27
+ - Notifications for reminders and announcements
28
+ - Jobs for scheduling rituals/reminders
29
+ - Audit trail for state changes
30
+
31
+ ## Presentations
32
+ - Dashboard, space list, task board/detail, ritual calendar, announcement feed.
33
+ `
34
+ },
35
+ {
36
+ id: "docs.examples.team-hub.goal",
37
+ title: "Team Hub — Goal",
38
+ summary: "Why this collaboration hub exists and outcomes it targets.",
39
+ kind: "goal",
40
+ visibility: "public",
41
+ route: "/docs/examples/team-hub/goal",
42
+ tags: ["collaboration", "goal"],
43
+ body: `## Why it matters
44
+ - Provides a regenerable hub for spaces, tasks, rituals, and announcements.
45
+ - Keeps ceremonies and task flows consistent across UI/API/events.
46
+
47
+ ## Business/Product goal
48
+ - Support team rituals with reminders, visibility, and auditability.
49
+ - Enable staged rollouts of new rituals/boards via feature flags.
50
+
51
+ ## Success criteria
52
+ - Tasks/rituals/announcements regenerate safely from spec updates.
53
+ - Notifications and audit hooks fire for key transitions.`
54
+ },
55
+ {
56
+ id: "docs.examples.team-hub.usage",
57
+ title: "Team Hub — Usage",
58
+ summary: "How to set up spaces, tasks, and rituals and regenerate safely.",
59
+ kind: "usage",
60
+ visibility: "public",
61
+ route: "/docs/examples/team-hub/usage",
62
+ tags: ["collaboration", "usage"],
63
+ body: `## Setup
64
+ 1) Seed (if available) or create a space; add members and tasks; schedule rituals.
65
+ 2) Configure Notifications for rituals/reminders and announcements; use Jobs for scheduling.
66
+
67
+ ## Extend & regenerate
68
+ 1) Adjust schemas: task priority/status, ritual cadence/attendance, announcement targeting.
69
+ 2) Regenerate to update boards/calendars/feeds; mark PII paths as needed.
70
+ 3) Use Feature Flags to trial new rituals or task views.
71
+
72
+ ## Guardrails
73
+ - Emit events for task/ritual/announcement changes; log in Audit Trail.
74
+ - Keep ritual cadence declarative; avoid hardcoded schedules.
75
+ - Ensure announcements carry title/description for accessibility.`
76
+ },
77
+ {
78
+ id: "docs.examples.team-hub.constraints",
79
+ title: "Team Hub — Constraints & Safety",
80
+ summary: "Internal guardrails for rituals, tasks, and announcements regeneration.",
81
+ kind: "reference",
82
+ visibility: "internal",
83
+ route: "/docs/examples/team-hub/constraints",
84
+ tags: [
85
+ "collaboration",
86
+ "constraints",
87
+ "internal"
88
+ ],
89
+ body: `## Constraints
90
+ - Ritual cadence and task states must stay declarative in spec; no hardcoded schedules.
91
+ - Events to emit: task.created/updated/completed, ritual.scheduled/completed, announcement.published.
92
+ - Regeneration should not drop reminders or announcements routing.
93
+
94
+ ## PII & A11y
95
+ - Mark PII (names/emails) for redaction in presentations.
96
+ - Announcements must include title/description; respect accessibility guidance.
97
+
98
+ ## Verification
99
+ - Add fixtures for ritual cadence changes and announcement targeting.
100
+ - Ensure Notifications/Jobs wiring persists after regeneration.
101
+ - Use Feature Flags to trial new boards/rituals with safe defaults.`
102
+ }
103
+ ]);
104
+
105
+ //#endregion
106
+ //# sourceMappingURL=team-hub.docblock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-hub.docblock.js","names":[],"sources":["../../src/docs/team-hub.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { registerDocBlocks } from '@contractspec/lib.contracts/docs';\n\nconst teamHubDocBlocks: DocBlock[] = [\n {\n id: 'docs.examples.team-hub',\n title: 'Team Hub',\n summary:\n 'Internal collaboration hub with spaces, tasks, rituals, and announcements.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/examples/team-hub',\n tags: ['tasks', 'rituals', 'announcements', 'collaboration'],\n body: `## Domains\n\n- Spaces/projects with members and roles.\n- Tasks with status, priority, assignees, due dates.\n- Rituals (standups/retros/planning) with cadence and attendance.\n- Announcements targeted by space or role.\n\n## Modules reused\n- Identity/RBAC for roles and membership\n- Notifications for reminders and announcements\n- Jobs for scheduling rituals/reminders\n- Audit trail for state changes\n\n## Presentations\n- Dashboard, space list, task board/detail, ritual calendar, announcement feed.\n`,\n },\n {\n id: 'docs.examples.team-hub.goal',\n title: 'Team Hub — Goal',\n summary: 'Why this collaboration hub exists and outcomes it targets.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/examples/team-hub/goal',\n tags: ['collaboration', 'goal'],\n body: `## Why it matters\n- Provides a regenerable hub for spaces, tasks, rituals, and announcements.\n- Keeps ceremonies and task flows consistent across UI/API/events.\n\n## Business/Product goal\n- Support team rituals with reminders, visibility, and auditability.\n- Enable staged rollouts of new rituals/boards via feature flags.\n\n## Success criteria\n- Tasks/rituals/announcements regenerate safely from spec updates.\n- Notifications and audit hooks fire for key transitions.`,\n },\n {\n id: 'docs.examples.team-hub.usage',\n title: 'Team Hub — Usage',\n summary: 'How to set up spaces, tasks, and rituals and regenerate safely.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/examples/team-hub/usage',\n tags: ['collaboration', 'usage'],\n body: `## Setup\n1) Seed (if available) or create a space; add members and tasks; schedule rituals.\n2) Configure Notifications for rituals/reminders and announcements; use Jobs for scheduling.\n\n## Extend & regenerate\n1) Adjust schemas: task priority/status, ritual cadence/attendance, announcement targeting.\n2) Regenerate to update boards/calendars/feeds; mark PII paths as needed.\n3) Use Feature Flags to trial new rituals or task views.\n\n## Guardrails\n- Emit events for task/ritual/announcement changes; log in Audit Trail.\n- Keep ritual cadence declarative; avoid hardcoded schedules.\n- Ensure announcements carry title/description for accessibility.`,\n },\n {\n id: 'docs.examples.team-hub.constraints',\n title: 'Team Hub — Constraints & Safety',\n summary:\n 'Internal guardrails for rituals, tasks, and announcements regeneration.',\n kind: 'reference',\n visibility: 'internal',\n route: '/docs/examples/team-hub/constraints',\n tags: ['collaboration', 'constraints', 'internal'],\n body: `## Constraints\n- Ritual cadence and task states must stay declarative in spec; no hardcoded schedules.\n- Events to emit: task.created/updated/completed, ritual.scheduled/completed, announcement.published.\n- Regeneration should not drop reminders or announcements routing.\n\n## PII & A11y\n- Mark PII (names/emails) for redaction in presentations.\n- Announcements must include title/description; respect accessibility guidance.\n\n## Verification\n- Add fixtures for ritual cadence changes and announcement targeting.\n- Ensure Notifications/Jobs wiring persists after regeneration.\n- Use Feature Flags to trial new boards/rituals with safe defaults.`,\n },\n];\n\nregisterDocBlocks(teamHubDocBlocks);\n"],"mappings":";;;AAiGA,kBA9FqC;CACnC;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAS;GAAW;GAAiB;GAAgB;EAC5D,MAAM;;;;;;;;;;;;;;;;EAgBP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,iBAAiB,OAAO;EAC/B,MAAM;;;;;;;;;;;EAWP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,iBAAiB,QAAQ;EAChC,MAAM;;;;;;;;;;;;;EAaP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAiB;GAAe;GAAW;EAClD,MAAM;;;;;;;;;;;;;EAaP;CACF,CAEkC"}
@@ -0,0 +1,150 @@
1
+ import * as _contractspec_lib_schema121 from "@contractspec/lib.schema";
2
+ import { ModuleSchemaContribution } from "@contractspec/lib.schema";
3
+
4
+ //#region src/entities/index.d.ts
5
+ declare const TaskStatusEnum: _contractspec_lib_schema121.EntityEnumDef;
6
+ declare const TaskPriorityEnum: _contractspec_lib_schema121.EntityEnumDef;
7
+ declare const RitualCadenceEnum: _contractspec_lib_schema121.EntityEnumDef;
8
+ declare const AnnouncementAudienceEnum: _contractspec_lib_schema121.EntityEnumDef;
9
+ declare const SpaceEntity: _contractspec_lib_schema121.EntitySpec<{
10
+ id: _contractspec_lib_schema121.EntityScalarField;
11
+ name: _contractspec_lib_schema121.EntityScalarField;
12
+ description: _contractspec_lib_schema121.EntityScalarField;
13
+ orgId: _contractspec_lib_schema121.EntityScalarField;
14
+ ownerId: _contractspec_lib_schema121.EntityScalarField;
15
+ members: _contractspec_lib_schema121.EntityScalarField;
16
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
17
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
18
+ tasks: _contractspec_lib_schema121.EntityRelationField;
19
+ rituals: _contractspec_lib_schema121.EntityRelationField;
20
+ announcements: _contractspec_lib_schema121.EntityRelationField;
21
+ }>;
22
+ declare const TaskEntity: _contractspec_lib_schema121.EntitySpec<{
23
+ id: _contractspec_lib_schema121.EntityScalarField;
24
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
25
+ title: _contractspec_lib_schema121.EntityScalarField;
26
+ description: _contractspec_lib_schema121.EntityScalarField;
27
+ status: _contractspec_lib_schema121.EntityEnumField;
28
+ priority: _contractspec_lib_schema121.EntityEnumField;
29
+ assigneeId: _contractspec_lib_schema121.EntityScalarField;
30
+ dueDate: _contractspec_lib_schema121.EntityScalarField;
31
+ tags: _contractspec_lib_schema121.EntityScalarField;
32
+ orgId: _contractspec_lib_schema121.EntityScalarField;
33
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
34
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
35
+ space: _contractspec_lib_schema121.EntityRelationField;
36
+ }>;
37
+ declare const RitualEntity: _contractspec_lib_schema121.EntitySpec<{
38
+ id: _contractspec_lib_schema121.EntityScalarField;
39
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
40
+ title: _contractspec_lib_schema121.EntityScalarField;
41
+ cadence: _contractspec_lib_schema121.EntityEnumField;
42
+ dayOfWeek: _contractspec_lib_schema121.EntityScalarField;
43
+ time: _contractspec_lib_schema121.EntityScalarField;
44
+ facilitatorId: _contractspec_lib_schema121.EntityScalarField;
45
+ participants: _contractspec_lib_schema121.EntityScalarField;
46
+ location: _contractspec_lib_schema121.EntityScalarField;
47
+ agendaTemplate: _contractspec_lib_schema121.EntityScalarField;
48
+ orgId: _contractspec_lib_schema121.EntityScalarField;
49
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
50
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
51
+ occurrences: _contractspec_lib_schema121.EntityRelationField;
52
+ space: _contractspec_lib_schema121.EntityRelationField;
53
+ }>;
54
+ declare const RitualOccurrenceEntity: _contractspec_lib_schema121.EntitySpec<{
55
+ id: _contractspec_lib_schema121.EntityScalarField;
56
+ ritualId: _contractspec_lib_schema121.EntityScalarField;
57
+ scheduledFor: _contractspec_lib_schema121.EntityScalarField;
58
+ status: _contractspec_lib_schema121.EntityScalarField;
59
+ summary: _contractspec_lib_schema121.EntityScalarField;
60
+ attendance: _contractspec_lib_schema121.EntityScalarField;
61
+ recordingUrl: _contractspec_lib_schema121.EntityScalarField;
62
+ orgId: _contractspec_lib_schema121.EntityScalarField;
63
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
64
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
65
+ ritual: _contractspec_lib_schema121.EntityRelationField;
66
+ }>;
67
+ declare const AnnouncementEntity: _contractspec_lib_schema121.EntitySpec<{
68
+ id: _contractspec_lib_schema121.EntityScalarField;
69
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
70
+ title: _contractspec_lib_schema121.EntityScalarField;
71
+ body: _contractspec_lib_schema121.EntityScalarField;
72
+ audience: _contractspec_lib_schema121.EntityEnumField;
73
+ audienceRole: _contractspec_lib_schema121.EntityScalarField;
74
+ pinnedUntil: _contractspec_lib_schema121.EntityScalarField;
75
+ orgId: _contractspec_lib_schema121.EntityScalarField;
76
+ createdBy: _contractspec_lib_schema121.EntityScalarField;
77
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
78
+ expiresAt: _contractspec_lib_schema121.EntityScalarField;
79
+ }>;
80
+ declare const teamHubEntities: (_contractspec_lib_schema121.EntitySpec<{
81
+ id: _contractspec_lib_schema121.EntityScalarField;
82
+ name: _contractspec_lib_schema121.EntityScalarField;
83
+ description: _contractspec_lib_schema121.EntityScalarField;
84
+ orgId: _contractspec_lib_schema121.EntityScalarField;
85
+ ownerId: _contractspec_lib_schema121.EntityScalarField;
86
+ members: _contractspec_lib_schema121.EntityScalarField;
87
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
88
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
89
+ tasks: _contractspec_lib_schema121.EntityRelationField;
90
+ rituals: _contractspec_lib_schema121.EntityRelationField;
91
+ announcements: _contractspec_lib_schema121.EntityRelationField;
92
+ }> | _contractspec_lib_schema121.EntitySpec<{
93
+ id: _contractspec_lib_schema121.EntityScalarField;
94
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
95
+ title: _contractspec_lib_schema121.EntityScalarField;
96
+ description: _contractspec_lib_schema121.EntityScalarField;
97
+ status: _contractspec_lib_schema121.EntityEnumField;
98
+ priority: _contractspec_lib_schema121.EntityEnumField;
99
+ assigneeId: _contractspec_lib_schema121.EntityScalarField;
100
+ dueDate: _contractspec_lib_schema121.EntityScalarField;
101
+ tags: _contractspec_lib_schema121.EntityScalarField;
102
+ orgId: _contractspec_lib_schema121.EntityScalarField;
103
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
104
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
105
+ space: _contractspec_lib_schema121.EntityRelationField;
106
+ }> | _contractspec_lib_schema121.EntitySpec<{
107
+ id: _contractspec_lib_schema121.EntityScalarField;
108
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
109
+ title: _contractspec_lib_schema121.EntityScalarField;
110
+ cadence: _contractspec_lib_schema121.EntityEnumField;
111
+ dayOfWeek: _contractspec_lib_schema121.EntityScalarField;
112
+ time: _contractspec_lib_schema121.EntityScalarField;
113
+ facilitatorId: _contractspec_lib_schema121.EntityScalarField;
114
+ participants: _contractspec_lib_schema121.EntityScalarField;
115
+ location: _contractspec_lib_schema121.EntityScalarField;
116
+ agendaTemplate: _contractspec_lib_schema121.EntityScalarField;
117
+ orgId: _contractspec_lib_schema121.EntityScalarField;
118
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
119
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
120
+ occurrences: _contractspec_lib_schema121.EntityRelationField;
121
+ space: _contractspec_lib_schema121.EntityRelationField;
122
+ }> | _contractspec_lib_schema121.EntitySpec<{
123
+ id: _contractspec_lib_schema121.EntityScalarField;
124
+ ritualId: _contractspec_lib_schema121.EntityScalarField;
125
+ scheduledFor: _contractspec_lib_schema121.EntityScalarField;
126
+ status: _contractspec_lib_schema121.EntityScalarField;
127
+ summary: _contractspec_lib_schema121.EntityScalarField;
128
+ attendance: _contractspec_lib_schema121.EntityScalarField;
129
+ recordingUrl: _contractspec_lib_schema121.EntityScalarField;
130
+ orgId: _contractspec_lib_schema121.EntityScalarField;
131
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
132
+ updatedAt: _contractspec_lib_schema121.EntityScalarField;
133
+ ritual: _contractspec_lib_schema121.EntityRelationField;
134
+ }> | _contractspec_lib_schema121.EntitySpec<{
135
+ id: _contractspec_lib_schema121.EntityScalarField;
136
+ spaceId: _contractspec_lib_schema121.EntityScalarField;
137
+ title: _contractspec_lib_schema121.EntityScalarField;
138
+ body: _contractspec_lib_schema121.EntityScalarField;
139
+ audience: _contractspec_lib_schema121.EntityEnumField;
140
+ audienceRole: _contractspec_lib_schema121.EntityScalarField;
141
+ pinnedUntil: _contractspec_lib_schema121.EntityScalarField;
142
+ orgId: _contractspec_lib_schema121.EntityScalarField;
143
+ createdBy: _contractspec_lib_schema121.EntityScalarField;
144
+ createdAt: _contractspec_lib_schema121.EntityScalarField;
145
+ expiresAt: _contractspec_lib_schema121.EntityScalarField;
146
+ }>)[];
147
+ declare const teamHubSchemaContribution: ModuleSchemaContribution;
148
+ //#endregion
149
+ export { AnnouncementAudienceEnum, AnnouncementEntity, RitualCadenceEnum, RitualEntity, RitualOccurrenceEntity, SpaceEntity, TaskEntity, TaskPriorityEnum, TaskStatusEnum, teamHubEntities, teamHubSchemaContribution };
150
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/entities/index.ts"],"sourcesContent":[],"mappings":";;;;cAUa,gBAKX,2BAAA,CALyB;cAOd,kBAKX,2BAAA,CAL2B;cAOhB,mBAKX,2BAAA,CAL4B;AAdjB,cAqBA,wBAhBX,EAqBA,2BAAA,CALmC,aAhBnC;AAEW,cAqBA,WAhBX,8BAgBsB,UAhBtB,CAAA;EAEW,EAAA,EAoCX,2BAAA,CAAA,iBA/BA;EAEW,IAAA,+CAKX;EAEW,WAAA,+CAsBX;EAAA,KAAA,+CAAA;;;;;;;;;cAEW,wCAAU;MAyCrB,2BAAA,CAAA;wDAjEsB;EAAA,KAAA,+CAAA;EAwBX,WAAA,+CAyCX;EAAA,MAAA,6CAAA;;;;;;;;;;cAEW,0CAAY;MAmCvB,2BAAA,CAAA;;sDA9EqB;EAAA,OAAA,6CAAA;EA2CV,SAAA,+CAmCX;EAAA,IAAA,+CAAA;;;;;;;;;;;cAEW,oDAAsB;MAkCjC,2BAAA,CAAA;;;uDAvEuB;EAAA,OAAA,+CAAA;EAqCZ,UAAA,+CAkCX;EAAA,YAAA,+CAAA;;;;;;cAEW,gDAAkB;MAgC7B,2BAAA,CAAA;;;;uDApEiC;EAAA,YAAA,+CAAA;EAoCtB,WAAA,+CAgCX;EAAA,KAAA,+CAAA;;;;;cAEW,8CAAe;MAM3B,2BAAA,CAAA;;;;;wDAxC8B;EAAA,SAAA,+CAAA;EAkClB,SAAA,+CAMZ;EAAA,KAAA,iDAAA;;;;MAN2B,2BAAA,CAAA;;;;;;;wDAAA;EAAA,IAAA,+CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQf,2BAA2B"}