@astrale-domains/issues 0.1.2 → 0.1.4
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/CHANGELOG.md +78 -0
- package/README.md +65 -15
- package/dist/schema/.runtime/states/issue/index.d.ts +27 -0
- package/dist/schema/.runtime/states/issue/index.js +11 -0
- package/dist/schema/index.d.ts +6 -7
- package/dist/schema/index.js +5 -6
- package/dist/schema/{comment/relationships.d.ts → modules/comment/classes/comment-authored-by.d.ts} +2 -18
- package/dist/schema/modules/comment/classes/comment-authored-by.js +9 -0
- package/dist/schema/{comment/class.d.ts → modules/comment/classes/comment.d.ts} +36 -4
- package/dist/schema/modules/comment/classes/comment.js +17 -0
- package/dist/schema/modules/comment/classes/index.d.ts +3 -0
- package/dist/schema/modules/comment/classes/index.js +3 -0
- package/dist/schema/modules/comment/classes/issue-has-comment.d.ts +16 -0
- package/dist/schema/modules/comment/classes/issue-has-comment.js +10 -0
- package/dist/schema/modules/comment/functions/delete-comment.d.ts +7 -0
- package/dist/schema/modules/comment/functions/delete-comment.js +11 -0
- package/dist/schema/modules/comment/functions/edit-comment.d.ts +9 -0
- package/dist/schema/modules/comment/functions/edit-comment.js +11 -0
- package/dist/schema/modules/comment/functions/index.d.ts +2 -0
- package/dist/schema/modules/comment/functions/index.js +2 -0
- package/dist/schema/modules/comment/index.d.ts +4 -0
- package/dist/schema/modules/comment/index.js +4 -0
- package/dist/schema/modules/comment/policies/contribute-to-comment.d.ts +1 -0
- package/dist/schema/modules/comment/policies/contribute-to-comment.js +12 -0
- package/dist/schema/modules/comment/policies/edit-own-comment.d.ts +1 -0
- package/dist/schema/modules/comment/policies/edit-own-comment.js +6 -0
- package/dist/schema/modules/comment/policies/index.d.ts +4 -0
- package/dist/schema/modules/comment/policies/index.js +4 -0
- package/dist/schema/modules/comment/policies/traverse-comment-relationship.d.ts +1 -0
- package/dist/schema/modules/comment/policies/traverse-comment-relationship.js +17 -0
- package/dist/schema/modules/comment/policies/traverse-issue-comment.d.ts +1 -0
- package/dist/schema/modules/comment/policies/traverse-issue-comment.js +14 -0
- package/dist/schema/modules/comment/types/comment.d.ts +5 -0
- package/dist/schema/modules/comment/types/comment.js +6 -0
- package/dist/schema/modules/comment/types/index.d.ts +1 -0
- package/dist/schema/modules/comment/types/index.js +1 -0
- package/dist/schema/modules/issue/classes/index.d.ts +5 -0
- package/dist/schema/modules/issue/classes/index.js +5 -0
- package/dist/schema/modules/issue/classes/issue-assigned-to.d.ts +16 -0
- package/dist/schema/modules/issue/classes/issue-assigned-to.js +9 -0
- package/dist/schema/modules/issue/classes/issue-reported-by.d.ts +16 -0
- package/dist/schema/modules/issue/classes/issue-reported-by.js +9 -0
- package/dist/schema/modules/issue/classes/issue-subtask-of.d.ts +19 -0
- package/dist/schema/modules/issue/classes/issue-subtask-of.js +10 -0
- package/dist/schema/modules/issue/classes/issue.d.ts +258 -0
- package/dist/schema/modules/issue/classes/issue.js +35 -0
- package/dist/schema/modules/issue/classes/project-contains-issue.d.ts +16 -0
- package/dist/schema/modules/issue/classes/project-contains-issue.js +10 -0
- package/dist/schema/modules/issue/functions/add-issue-comment.d.ts +9 -0
- package/dist/schema/modules/issue/functions/add-issue-comment.js +11 -0
- package/dist/schema/modules/issue/functions/archive-issue.d.ts +7 -0
- package/dist/schema/modules/issue/functions/archive-issue.js +11 -0
- package/dist/schema/modules/issue/functions/assign-issue.d.ts +9 -0
- package/dist/schema/modules/issue/functions/assign-issue.js +11 -0
- package/dist/schema/modules/issue/functions/index.d.ts +7 -0
- package/dist/schema/modules/issue/functions/index.js +7 -0
- package/dist/schema/modules/issue/functions/set-issue-parent.d.ts +9 -0
- package/dist/schema/modules/issue/functions/set-issue-parent.js +11 -0
- package/dist/schema/modules/issue/functions/set-issue-tags.d.ts +9 -0
- package/dist/schema/modules/issue/functions/set-issue-tags.js +11 -0
- package/dist/schema/modules/issue/functions/transition-issue.d.ts +22 -0
- package/dist/schema/modules/issue/functions/transition-issue.js +20 -0
- package/dist/schema/modules/issue/functions/update-issue.d.ts +16 -0
- package/dist/schema/modules/issue/functions/update-issue.js +15 -0
- package/dist/schema/modules/issue/index.d.ts +4 -0
- package/dist/schema/modules/issue/index.js +4 -0
- package/dist/schema/modules/issue/policies/contribute-to-issue.d.ts +1 -0
- package/dist/schema/modules/issue/policies/contribute-to-issue.js +10 -0
- package/dist/schema/modules/issue/policies/index.d.ts +5 -0
- package/dist/schema/modules/issue/policies/index.js +5 -0
- package/dist/schema/modules/issue/policies/traverse-issue-assignee.d.ts +1 -0
- package/dist/schema/modules/issue/policies/traverse-issue-assignee.js +14 -0
- package/dist/schema/modules/issue/policies/traverse-issue-parent.d.ts +1 -0
- package/dist/schema/modules/issue/policies/traverse-issue-parent.js +14 -0
- package/dist/schema/modules/issue/policies/traverse-issue-reporter.d.ts +1 -0
- package/dist/schema/modules/issue/policies/traverse-issue-reporter.js +14 -0
- package/dist/schema/modules/issue/policies/traverse-project-issue.d.ts +1 -0
- package/dist/schema/modules/issue/policies/traverse-project-issue.js +7 -0
- package/dist/schema/modules/issue/types/index.d.ts +1 -0
- package/dist/schema/modules/issue/types/index.js +1 -0
- package/dist/schema/modules/issue/types/issue.d.ts +10 -0
- package/dist/schema/modules/issue/types/issue.js +12 -0
- package/dist/schema/modules/project/classes/index.d.ts +3 -0
- package/dist/schema/modules/project/classes/index.js +3 -0
- package/dist/schema/modules/project/classes/project-has-member.d.ts +16 -0
- package/dist/schema/modules/project/classes/project-has-member.js +9 -0
- package/dist/schema/{tracker/relationships.d.ts → modules/project/classes/project-owned-by.d.ts} +5 -5
- package/dist/schema/modules/project/classes/project-owned-by.js +9 -0
- package/dist/schema/modules/project/classes/project.d.ts +283 -0
- package/dist/schema/modules/project/classes/project.js +35 -0
- package/dist/schema/modules/project/functions/add-project-member.d.ts +10 -0
- package/dist/schema/modules/project/functions/add-project-member.js +12 -0
- package/dist/schema/modules/project/functions/archive-project.d.ts +7 -0
- package/dist/schema/modules/project/functions/archive-project.js +11 -0
- package/dist/schema/modules/project/functions/create-project-issue.d.ts +16 -0
- package/dist/schema/modules/project/functions/create-project-issue.js +15 -0
- package/dist/schema/modules/project/functions/create-project-tag.d.ts +12 -0
- package/dist/schema/modules/project/functions/create-project-tag.js +14 -0
- package/dist/schema/modules/project/functions/create-project.d.ts +14 -0
- package/dist/schema/modules/project/functions/create-project.js +14 -0
- package/dist/schema/modules/project/functions/index.d.ts +8 -0
- package/dist/schema/modules/project/functions/index.js +8 -0
- package/dist/schema/modules/project/functions/list-projects.d.ts +25 -0
- package/dist/schema/modules/project/functions/list-projects.js +16 -0
- package/dist/schema/modules/project/functions/remove-project-member.d.ts +10 -0
- package/dist/schema/modules/project/functions/remove-project-member.js +12 -0
- package/dist/schema/modules/project/functions/update-project.d.ts +13 -0
- package/dist/schema/modules/project/functions/update-project.js +14 -0
- package/dist/schema/modules/project/index.d.ts +4 -0
- package/dist/schema/modules/project/index.js +4 -0
- package/dist/schema/modules/project/policies/contribute-to-project.d.ts +1 -0
- package/dist/schema/modules/project/policies/contribute-to-project.js +7 -0
- package/dist/schema/modules/project/policies/index.d.ts +4 -0
- package/dist/schema/modules/project/policies/index.js +4 -0
- package/dist/schema/modules/project/policies/manage-project.d.ts +1 -0
- package/dist/schema/modules/project/policies/manage-project.js +6 -0
- package/dist/schema/modules/project/policies/traverse-project-member.d.ts +1 -0
- package/dist/schema/modules/project/policies/traverse-project-member.js +7 -0
- package/dist/schema/modules/project/policies/traverse-project-owner.d.ts +1 -0
- package/dist/schema/modules/project/policies/traverse-project-owner.js +7 -0
- package/dist/schema/modules/project/types/index.d.ts +2 -0
- package/dist/schema/modules/project/types/index.js +2 -0
- package/dist/schema/modules/project/types/membership-change.d.ts +6 -0
- package/dist/schema/modules/project/types/membership-change.js +7 -0
- package/dist/schema/modules/project/types/project.d.ts +8 -0
- package/dist/schema/modules/project/types/project.js +9 -0
- package/dist/schema/modules/tag/classes/index.d.ts +3 -0
- package/dist/schema/modules/tag/classes/index.js +3 -0
- package/dist/schema/modules/tag/classes/issue-tagged-with.d.ts +16 -0
- package/dist/schema/modules/tag/classes/issue-tagged-with.js +10 -0
- package/dist/schema/modules/tag/classes/project-contains-tag.d.ts +16 -0
- package/dist/schema/modules/tag/classes/project-contains-tag.js +10 -0
- package/dist/schema/{tag/class.d.ts → modules/tag/classes/tag.d.ts} +40 -3
- package/dist/schema/modules/tag/classes/tag.js +16 -0
- package/dist/schema/modules/tag/functions/delete-tag.d.ts +7 -0
- package/dist/schema/modules/tag/functions/delete-tag.js +11 -0
- package/dist/schema/modules/tag/functions/edit-tag.d.ts +12 -0
- package/dist/schema/modules/tag/functions/edit-tag.js +14 -0
- package/dist/schema/modules/tag/functions/index.d.ts +2 -0
- package/dist/schema/modules/tag/functions/index.js +2 -0
- package/dist/schema/modules/tag/index.d.ts +4 -0
- package/dist/schema/modules/tag/index.js +4 -0
- package/dist/schema/modules/tag/policies/contribute-to-tag.d.ts +1 -0
- package/dist/schema/modules/tag/policies/contribute-to-tag.js +10 -0
- package/dist/schema/modules/tag/policies/index.d.ts +4 -0
- package/dist/schema/modules/tag/policies/index.js +4 -0
- package/dist/schema/modules/tag/policies/manage-tag.d.ts +1 -0
- package/dist/schema/modules/tag/policies/manage-tag.js +10 -0
- package/dist/schema/modules/tag/policies/traverse-issue-tag.d.ts +1 -0
- package/dist/schema/modules/tag/policies/traverse-issue-tag.js +14 -0
- package/dist/schema/modules/tag/policies/traverse-project-tag.d.ts +1 -0
- package/dist/schema/modules/tag/policies/traverse-project-tag.js +7 -0
- package/dist/schema/modules/tag/types/index.d.ts +1 -0
- package/dist/schema/modules/tag/types/index.js +1 -0
- package/dist/schema/modules/tag/types/tag.d.ts +7 -0
- package/dist/schema/modules/tag/types/tag.js +8 -0
- package/dist/schema/schema.d.ts +902 -0
- package/dist/schema/schema.js +49 -0
- package/dist/schema/types/index.js +1 -0
- package/dist/schema/types/node-id.js +2 -0
- package/package.json +28 -20
- package/dist/schema/application/functions.js +0 -156
- package/dist/schema/application/index.d.ts +0 -701
- package/dist/schema/application/index.js +0 -49
- package/dist/schema/command/class.d.ts +0 -38
- package/dist/schema/command/class.js +0 -13
- package/dist/schema/command/index.d.ts +0 -2
- package/dist/schema/command/index.js +0 -2
- package/dist/schema/command/relationships.d.ts +0 -32
- package/dist/schema/command/relationships.js +0 -14
- package/dist/schema/comment/class.js +0 -7
- package/dist/schema/comment/index.d.ts +0 -2
- package/dist/schema/comment/index.js +0 -2
- package/dist/schema/comment/relationships.js +0 -11
- package/dist/schema/issue/class.d.ts +0 -74
- package/dist/schema/issue/class.js +0 -17
- package/dist/schema/issue/index.d.ts +0 -2
- package/dist/schema/issue/index.js +0 -2
- package/dist/schema/issue/relationships.d.ts +0 -112
- package/dist/schema/issue/relationships.js +0 -23
- package/dist/schema/tag/class.js +0 -10
- package/dist/schema/tag/index.d.ts +0 -2
- package/dist/schema/tag/index.js +0 -2
- package/dist/schema/tag/relationships.d.ts +0 -32
- package/dist/schema/tag/relationships.js +0 -12
- package/dist/schema/tracker/class.d.ts +0 -73
- package/dist/schema/tracker/class.js +0 -10
- package/dist/schema/tracker/index.d.ts +0 -2
- package/dist/schema/tracker/index.js +0 -2
- package/dist/schema/tracker/relationships.js +0 -7
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.4](https://github.com/astrale-os/domains/compare/issues-v0.1.3...issues-v0.1.4) (2026-08-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **domains:** remove Property visibility annotations from V1 schemas ([#118](https://github.com/astrale-os/domains/issues/118)) ([215e5e0](https://github.com/astrale-os/domains/commit/215e5e0ca3b849cb56fcccc685d4e3fc51cc41f5))
|
|
9
|
+
* **issues:** restore native reporting continuity ([#119](https://github.com/astrale-os/domains/issues/119)) ([4c0738d](https://github.com/astrale-os/domains/commit/4c0738d05fb5b1281b1d480376960fd494b98840))
|
|
10
|
+
* **states:** adopt intrinsic property transitions ([#108](https://github.com/astrale-os/domains/issues/108)) ([0d137c2](https://github.com/astrale-os/domains/commit/0d137c2832e8f9b732b337086ccb17ad0c49bb4e))
|
|
11
|
+
|
|
12
|
+
## [0.1.3](https://github.com/astrale-os/domains/compare/issues-v0.1.2...issues-v0.1.3) (2026-08-27)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **issues:** replace Tracker with collaborative Projects ([#93](https://github.com/astrale-os/domains/issues/93)) ([68fbabe](https://github.com/astrale-os/domains/commit/68fbabe10ce1ffe45f854166c6db1a7028a10759))
|
|
18
|
+
* make Domain lifecycles authoritative ([#101](https://github.com/astrale-os/domains/issues/101)) ([4ed45f6](https://github.com/astrale-os/domains/commit/4ed45f6c3f5708db52455904c28a2c13c983e33f))
|
|
19
|
+
|
|
20
|
+
## [0.1.2](https://github.com/astrale-os/domains/compare/issues-v0.1.1...issues-v0.1.2) (2026-08-26)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **domains:** complete AI Gateway and Integrations parity qualification ([#87](https://github.com/astrale-os/domains/issues/87)) ([5be7461](https://github.com/astrale-os/domains/commit/5be74610469c4a20b108d73c38d0d2b6a298eef6))
|
|
26
|
+
* **domains:** restore AI Gateway and Integrations parity ([#80](https://github.com/astrale-os/domains/issues/80)) ([51ca802](https://github.com/astrale-os/domains/commit/51ca8027109bdc3fd3a05e861e6ed58bea8fe755))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* align domains with current SDK cohort ([#85](https://github.com/astrale-os/domains/issues/85)) ([f2153e2](https://github.com/astrale-os/domains/commit/f2153e271e1389692ee9f98a14207c5e4340a743))
|
|
32
|
+
* **deps:** qualify GRC and domain dependencies ([#84](https://github.com/astrale-os/domains/issues/84)) ([e8a4c6b](https://github.com/astrale-os/domains/commit/e8a4c6b80e8e8f02a385e0001aa0f220acef5ce6))
|
|
33
|
+
|
|
34
|
+
## [0.1.1](https://github.com/astrale-os/domains/compare/issues-v0.1.0...issues-v0.1.1) (2026-08-25)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Features
|
|
38
|
+
|
|
39
|
+
* **events:** add Events V0 and async issue notifications ([9538769](https://github.com/astrale-os/domains/commit/9538769b0e3ff4063583b3798b1e2301098a5e0c))
|
|
40
|
+
* **issues:** add complete issues domain ([9b9928c](https://github.com/astrale-os/domains/commit/9b9928cea40d91db91083935ee074086d8d365bd))
|
|
41
|
+
* **issues:** polish scoped views and navigation ([8c67e56](https://github.com/astrale-os/domains/commit/8c67e56ef273054b9ea82e852bbe1d5f32f05ca5))
|
|
42
|
+
* **issues:** publish creation events asynchronously ([711a2ec](https://github.com/astrale-os/domains/commit/711a2eceb7b12d2a24db7051bb6a4a9ea5bc8601))
|
|
43
|
+
* **issues:** publish schema package ([cf931cb](https://github.com/astrale-os/domains/commit/cf931cb50efe2e9888b8721dc7d7876aaf39d05e))
|
|
44
|
+
* **issues:** support priority updates ([2ade78d](https://github.com/astrale-os/domains/commit/2ade78dd46f91c8dd6d170edc2fc5c03aa9ccbb3))
|
|
45
|
+
* overhaul domain apps and runtime flows ([cb92e06](https://github.com/astrale-os/domains/commit/cb92e0601d329a601c4eb072d4c80b0eff6816e7))
|
|
46
|
+
* overhaul services and domain applications ([b8bc24d](https://github.com/astrale-os/domains/commit/b8bc24dbce4c4541ccf1f453b5f3cd335ff1aca4))
|
|
47
|
+
* publish Schema-only Domain contracts ([ec0a16a](https://github.com/astrale-os/domains/commit/ec0a16a46a08a3a2118ca1490a4f7e71239d62eb))
|
|
48
|
+
* publish Schema-only Domain contracts ([70aab15](https://github.com/astrale-os/domains/commit/70aab152f4eea0c69fed1a35cd4611d8d2f99ff9))
|
|
49
|
+
* replace issues and events with kernel v2 ([c0152fa](https://github.com/astrale-os/domains/commit/c0152fa326a598cfe76bbda75f5e7cc5d42fd011))
|
|
50
|
+
* **skills:** add domain skill packages ([#28](https://github.com/astrale-os/domains/issues/28)) ([6c0b949](https://github.com/astrale-os/domains/commit/6c0b949f1e5821d9f53745fb02eca3453ffb7f80))
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
* **ci:** keep standalone packaging permissive ([9151cf9](https://github.com/astrale-os/domains/commit/9151cf99311dd070068734c373a1b7ec7e1027a0))
|
|
56
|
+
* **ci:** make domain workspace standalone ([ff42931](https://github.com/astrale-os/domains/commit/ff429317dfd8dd4b0af2ffe8160867c9ba410099))
|
|
57
|
+
* **ci:** simplify Domain publication ([097befc](https://github.com/astrale-os/domains/commit/097befc1217352ce4e3ce91c01d797aba8fd78a2))
|
|
58
|
+
* **ci:** simplify Domain publication ([1b99dd9](https://github.com/astrale-os/domains/commit/1b99dd9781337e13e63c5b1838d96d4fd0dfa3bc))
|
|
59
|
+
* fetch kernel packages from codeload ([c7239d3](https://github.com/astrale-os/domains/commit/c7239d3678c97c902688e42476c93f568ed523bf))
|
|
60
|
+
* **frontend:** complete retained Domain identity ([cd667d1](https://github.com/astrale-os/domains/commit/cd667d111da05b76c599ce60ba7d741994a40abb))
|
|
61
|
+
* **frontend:** complete retained Domain identity ([efb9878](https://github.com/astrale-os/domains/commit/efb9878947877205f3469836d226875a7c50d055))
|
|
62
|
+
* **frontend:** restore project source discovery ([#72](https://github.com/astrale-os/domains/issues/72)) ([7795508](https://github.com/astrale-os/domains/commit/77955086688833289b474c64314a6adae598be9f))
|
|
63
|
+
* **issues:** grant create mutation authority ([60ebffc](https://github.com/astrale-os/domains/commit/60ebffc28bda5fd3b54333d347b7375edab538f9))
|
|
64
|
+
* **issues:** hide migration provenance in views ([246c9a2](https://github.com/astrale-os/domains/commit/246c9a2a074cfec115177f52ce8096c7eb688f08))
|
|
65
|
+
* **issues:** pin a coherent kernel cohort ([2bb8f80](https://github.com/astrale-os/domains/commit/2bb8f80e872d301d0dd7c0b32ddbc0e01151a7c5))
|
|
66
|
+
* **issues:** pin mature frontend dependencies ([e8f67f3](https://github.com/astrale-os/domains/commit/e8f67f3ac81ad1178675bc00b0cb787dba62d183))
|
|
67
|
+
* **issues:** preserve complete native issue projections ([6c327e3](https://github.com/astrale-os/domains/commit/6c327e33d0c203af70f006050509856b9d67540b))
|
|
68
|
+
* **issues:** preserve complete paginated exports ([35d03d2](https://github.com/astrale-os/domains/commit/35d03d216ef13a07cfada894f2d93fe3ba390d89))
|
|
69
|
+
* **issues:** remove redundant list method ([1ca9a31](https://github.com/astrale-os/domains/commit/1ca9a31fbaead49b3b0a715a862e3751e79bbc25))
|
|
70
|
+
* **issues:** restore Issue.create function authority ([20f6169](https://github.com/astrale-os/domains/commit/20f6169f17b5e0922cb3108624e69a81e2765bf1))
|
|
71
|
+
* **issues:** use mature lucide release ([c0010f5](https://github.com/astrale-os/domains/commit/c0010f52de8c2eefbb4c6c900760c51ac18b602d))
|
|
72
|
+
* migrate durable domains to public invocation errors [skip ci] ([b951546](https://github.com/astrale-os/domains/commit/b95154607eabcb19b152bf6192b202c884337391))
|
|
73
|
+
* pin published kernel runtime beta ([d3f508e](https://github.com/astrale-os/domains/commit/d3f508e56c85b3595a56fe880f07bb34a895a906))
|
|
74
|
+
* require hosted-functions SDK release ([e4d3122](https://github.com/astrale-os/domains/commit/e4d312268798a1ab803b815ebaff234aae24500a))
|
|
75
|
+
* use HTTPS for kernel dependencies ([182c604](https://github.com/astrale-os/domains/commit/182c6045580f407d0cd42077e9d4a8286770cf3a))
|
|
76
|
+
* use published kernel package cohort ([6671da9](https://github.com/astrale-os/domains/commit/6671da9fc3f27f05b165da59a184ca5291e86d07))
|
|
77
|
+
* **views:** adopt proof-bounded Shell cohort ([#74](https://github.com/astrale-os/domains/issues/74)) ([09fb9f3](https://github.com/astrale-os/domains/commit/09fb9f39e5350cf930ff083090b6a6f21369dc49))
|
|
78
|
+
* **views:** retain graph query provenance ([#75](https://github.com/astrale-os/domains/issues/75)) ([c880a42](https://github.com/astrale-os/domains/commit/c880a42f78f15e24ebfe54ae4eb76388d8872a80))
|
package/README.md
CHANGED
|
@@ -1,28 +1,77 @@
|
|
|
1
1
|
# Issues Domain
|
|
2
2
|
|
|
3
|
-
`issues.astrale.ai` owns
|
|
3
|
+
`issues.astrale.ai` owns collaborative Projects, numbered Issues, Comments, and Project-local Tags.
|
|
4
|
+
It is a current Astrale Application with Schema Policies, receiver Methods, atomic Mutations, and an
|
|
5
|
+
inbox-first Shell View.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
```text
|
|
8
|
+
Project
|
|
9
|
+
owned by one Identity; shared with member Identities
|
|
10
|
+
key, name, optional description, private owner/member execution index and nextIssueNumber, archived
|
|
11
|
+
contains Issues and Tags
|
|
12
|
+
|
|
13
|
+
Issue
|
|
14
|
+
immutable reference; title; optional description
|
|
15
|
+
status: open | accepted | resolved | deferred | closed
|
|
16
|
+
priority: 0..4; optional assignee; optional acyclic parent; Tags
|
|
17
|
+
|
|
18
|
+
Comment
|
|
19
|
+
body; immutable author; belongs to one Issue
|
|
20
|
+
|
|
21
|
+
Tag
|
|
22
|
+
name; Project-local slug; optional color; belongs to one Project
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The public callable surface keeps observation Project-owned and mutations receiver-owned:
|
|
6
26
|
|
|
7
27
|
```text
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
workflows/ authorization observation, replay, and Mutation coordination
|
|
15
|
-
views/ Shell-bound Tracker projection
|
|
16
|
-
ui/ Domain-free presentation
|
|
17
|
-
frontend/ Vite and TanStack Router application
|
|
28
|
+
Project.create
|
|
29
|
+
Project.list
|
|
30
|
+
Project.update | addMember | removeMember | createIssue | createTag | archive
|
|
31
|
+
Issue.update | assign | setTags | setParent | addComment | archive
|
|
32
|
+
Comment.edit | delete
|
|
33
|
+
Tag.edit | delete
|
|
18
34
|
```
|
|
19
35
|
|
|
20
|
-
|
|
36
|
+
`Tag.delete` remains one atomic Mutation through 2,046 linked Issues, the current supported Kernel
|
|
37
|
+
execution ceiling after its containment and Node removals. Larger Tags must first be removed from
|
|
38
|
+
enough Issues through `Issue.setTags`; the Workflow rejects them explicitly instead of submitting an
|
|
39
|
+
oversized Mutation with a backend-dependent failure.
|
|
40
|
+
|
|
41
|
+
`Project.create` and `Project.list` require authentication. `Project.list` returns only Projects the
|
|
42
|
+
caller owns or has joined, with their visible Issues and Comment threads nested for one CLI/agent
|
|
43
|
+
observation. Receiver Methods use Schema-owned Policies: Project owners administer metadata,
|
|
44
|
+
membership, Tags, and archival; owners and members contribute to Issues; only a Comment author edits
|
|
45
|
+
or deletes it. Reads are visible only through a Project the caller owns or has joined.
|
|
46
|
+
|
|
47
|
+
Ownership, membership, reporting, assignment, and authorship remain graph-native Policy facts. The
|
|
48
|
+
owning Project, Issue, or Comment also stores the corresponding Identity IDs privately, updated in
|
|
49
|
+
the same atomic Mutation as each edge. Recipes and Workflows can therefore validate current
|
|
50
|
+
collaboration state without requesting authority over every possible concrete Identity subtype from
|
|
51
|
+
another Domain.
|
|
52
|
+
Those private execution fields are not a second public model and never replace the Policy edges.
|
|
21
53
|
|
|
22
|
-
|
|
54
|
+
There is no Domain `Command`, receipt, universal idempotency layer, activity log, or undo system.
|
|
55
|
+
`Project.create` and `Project.list` are Actions; the seventeen multi-step receiver operations are
|
|
56
|
+
explicit Workflows whose Query and Mutation effects use stable steps. Set-style changes converge
|
|
57
|
+
naturally and stale
|
|
58
|
+
concurrent writes reject through atomic Mutation preconditions. Creation retries have no Domain
|
|
59
|
+
replay guarantee; generic invocation idempotency belongs to the platform when it exists.
|
|
60
|
+
|
|
61
|
+
The mounted View defaults to a focused open-Issue Inbox with queue progress and keyboard or button
|
|
62
|
+
navigation. Accepted work has a dedicated discussion view, while Browse searches and filters the
|
|
63
|
+
complete visible corpus with bounded pagination. The roomy metadata drawer exposes Close, Defer,
|
|
64
|
+
Resolved, and Accept triage actions plus priority, assignment, Tags, and parent controls without
|
|
65
|
+
blurring the main view. The four outcomes display and honor the `C`, `D`, `R`, and `A` keyboard
|
|
66
|
+
shortcuts whenever the user is not typing. The selected Issue description and its Comment thread remain below the
|
|
67
|
+
inbox as one continuous Markdown conversation with strict Mermaid diagrams. Project, Issue, and Tag
|
|
68
|
+
creation and Project membership administration intentionally remain API-first.
|
|
23
69
|
|
|
24
70
|
## Development
|
|
25
71
|
|
|
72
|
+
Dependency changes must refresh both `issues/pnpm-lock.yaml` and the workspace-root `pnpm-lock.yaml`;
|
|
73
|
+
repository CI installs the latter with a frozen lockfile.
|
|
74
|
+
|
|
26
75
|
```bash
|
|
27
76
|
pnpm install
|
|
28
77
|
pnpm typecheck
|
|
@@ -33,4 +82,5 @@ pnpm build
|
|
|
33
82
|
pnpm package
|
|
34
83
|
```
|
|
35
84
|
|
|
36
|
-
Domain source imports Kernel concepts through semantic `@astrale-os/sdk/*` facades and owns no
|
|
85
|
+
Domain source imports Kernel concepts through semantic `@astrale-os/sdk/*` facades and owns no
|
|
86
|
+
`.spec` tree.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type EventOf, type StateOf } from '@astrale-os/sdk/state';
|
|
2
|
+
export declare const issueStatus: import("@astrale-os/sdk/state").StateMachine<{
|
|
3
|
+
readonly open: {
|
|
4
|
+
readonly accept: "accepted";
|
|
5
|
+
readonly defer: "deferred";
|
|
6
|
+
readonly close: "closed";
|
|
7
|
+
};
|
|
8
|
+
readonly accepted: {
|
|
9
|
+
readonly resolve: "resolved";
|
|
10
|
+
readonly defer: "deferred";
|
|
11
|
+
readonly close: "closed";
|
|
12
|
+
};
|
|
13
|
+
readonly deferred: {
|
|
14
|
+
readonly reopen: "open";
|
|
15
|
+
readonly accept: "accepted";
|
|
16
|
+
readonly close: "closed";
|
|
17
|
+
};
|
|
18
|
+
readonly resolved: {
|
|
19
|
+
readonly reopen: "open";
|
|
20
|
+
readonly close: "closed";
|
|
21
|
+
};
|
|
22
|
+
readonly closed: {
|
|
23
|
+
readonly reopen: "open";
|
|
24
|
+
};
|
|
25
|
+
}, "open">;
|
|
26
|
+
export type IssueStatus = StateOf<typeof issueStatus>;
|
|
27
|
+
export type IssueEvent = EventOf<typeof issueStatus>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { stateMachine } from '@astrale-os/sdk/state';
|
|
2
|
+
export const issueStatus = stateMachine({
|
|
3
|
+
initial: 'open',
|
|
4
|
+
transitions: {
|
|
5
|
+
open: { accept: 'accepted', defer: 'deferred', close: 'closed' },
|
|
6
|
+
accepted: { resolve: 'resolved', defer: 'deferred', close: 'closed' },
|
|
7
|
+
deferred: { reopen: 'open', accept: 'accepted', close: 'closed' },
|
|
8
|
+
resolved: { reopen: 'open', close: 'closed' },
|
|
9
|
+
closed: { reopen: 'open' },
|
|
10
|
+
},
|
|
11
|
+
});
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export { schema } from './
|
|
2
|
-
export type { IssuesDomain, IssuesSchema } from './
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export { Tag, issue_tagged_with,
|
|
7
|
-
export { Tracker, tracker_owned_by } from './tracker/index.js';
|
|
1
|
+
export { schema } from './schema.js';
|
|
2
|
+
export type { IssuesDomain, IssuesSchema } from './schema.js';
|
|
3
|
+
export { Project, project_has_member, project_owned_by } from './modules/project/index.js';
|
|
4
|
+
export { Issue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
|
|
5
|
+
export { Comment, comment_authored_by, issue_has_comment } from './modules/comment/index.js';
|
|
6
|
+
export { Tag, issue_tagged_with, project_contains_tag } from './modules/tag/index.js';
|
package/dist/schema/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { schema } from './
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export { Tag, issue_tagged_with,
|
|
6
|
-
export { Tracker, tracker_owned_by } from './tracker/index.js';
|
|
1
|
+
export { schema } from './schema.js';
|
|
2
|
+
export { Project, project_has_member, project_owned_by } from './modules/project/index.js';
|
|
3
|
+
export { Issue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
|
|
4
|
+
export { Comment, comment_authored_by, issue_has_comment } from './modules/comment/index.js';
|
|
5
|
+
export { Tag, issue_tagged_with, project_contains_tag } from './modules/tag/index.js';
|
package/dist/schema/{comment/relationships.d.ts → modules/comment/classes/comment-authored-by.d.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const comment_authored_by: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
|
|
2
2
|
readonly depth: 0;
|
|
3
3
|
readonly abstract: false;
|
|
4
4
|
readonly extends: readonly [];
|
|
5
5
|
readonly properties: never;
|
|
6
6
|
readonly source: {
|
|
7
|
-
readonly as: "
|
|
7
|
+
readonly as: "author";
|
|
8
8
|
readonly outgoing: "0..*";
|
|
9
9
|
};
|
|
10
10
|
readonly target: {
|
|
@@ -14,19 +14,3 @@ export declare const issue_has_comment: import("@astrale-os/sdk/schema").Directe
|
|
|
14
14
|
readonly constraints: Record<never, never>;
|
|
15
15
|
readonly effectiveProperties: never;
|
|
16
16
|
}>;
|
|
17
|
-
export declare const comment_authored_by: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
|
|
18
|
-
readonly depth: 0;
|
|
19
|
-
readonly abstract: false;
|
|
20
|
-
readonly extends: readonly [];
|
|
21
|
-
readonly properties: never;
|
|
22
|
-
readonly source: {
|
|
23
|
-
readonly as: "comment";
|
|
24
|
-
readonly outgoing: "1";
|
|
25
|
-
};
|
|
26
|
-
readonly target: {
|
|
27
|
-
readonly as: "author";
|
|
28
|
-
readonly incoming: "0..*";
|
|
29
|
-
};
|
|
30
|
-
readonly constraints: Record<never, never>;
|
|
31
|
-
readonly effectiveProperties: never;
|
|
32
|
-
}>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { K, edgeClass } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { TraverseCommentRelationship } from '../policies/traverse-comment-relationship.js';
|
|
3
|
+
import { Comment } from './comment.js';
|
|
4
|
+
export const comment_authored_by = edgeClass.directed({
|
|
5
|
+
description: 'The immutable author of one Comment.',
|
|
6
|
+
source: { as: 'author', accepts: [K.classes.Identity], outgoing: '0..*' },
|
|
7
|
+
target: { as: 'comment', accepts: [() => Comment], incoming: '1' },
|
|
8
|
+
policies: { traverse: () => TraverseCommentRelationship },
|
|
9
|
+
});
|
|
@@ -20,15 +20,47 @@ export declare const Comment: import("@astrale-os/sdk/schema").NodeClass<{
|
|
|
20
20
|
}, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never>];
|
|
21
21
|
readonly properties: {
|
|
22
22
|
readonly body: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "body", "self">;
|
|
23
|
+
readonly authorId: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "authorId", "self">;
|
|
23
24
|
};
|
|
24
|
-
readonly methods:
|
|
25
|
-
|
|
25
|
+
readonly methods: {
|
|
26
|
+
readonly edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
27
|
+
body: string;
|
|
28
|
+
}, {
|
|
29
|
+
readonly mode: 'value';
|
|
30
|
+
readonly value: {
|
|
31
|
+
id: string;
|
|
32
|
+
body: string;
|
|
33
|
+
};
|
|
34
|
+
}, "authorized", false, "default">>;
|
|
35
|
+
readonly delete: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<Record<string, never>, {
|
|
36
|
+
readonly mode: 'value';
|
|
37
|
+
readonly value: {
|
|
38
|
+
commentId: string;
|
|
39
|
+
deleted: true;
|
|
40
|
+
};
|
|
41
|
+
}, "authorized", false, "default">>;
|
|
42
|
+
};
|
|
43
|
+
readonly effectiveProperties: (import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "authorId", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "body", "self">) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
|
|
26
44
|
readonly name: "createdAt";
|
|
27
45
|
readonly key: "kernel.astrale.ai:class.Timestamped.property.createdAt";
|
|
28
46
|
}) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
|
|
29
47
|
readonly name: "updatedAt";
|
|
30
48
|
readonly key: "kernel.astrale.ai:class.Timestamped.property.updatedAt";
|
|
31
49
|
});
|
|
32
|
-
readonly effectiveInstanceMethods: never
|
|
50
|
+
readonly effectiveInstanceMethods: import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<Record<string, never>, {
|
|
51
|
+
readonly mode: 'value';
|
|
52
|
+
readonly value: {
|
|
53
|
+
commentId: string;
|
|
54
|
+
deleted: true;
|
|
55
|
+
};
|
|
56
|
+
}, "authorized", false, "default">>, "delete", "self"> | import("@astrale-os/sdk/schema").AuthoredMethodProjection<import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
57
|
+
body: string;
|
|
58
|
+
}, {
|
|
59
|
+
readonly mode: 'value';
|
|
60
|
+
readonly value: {
|
|
61
|
+
id: string;
|
|
62
|
+
body: string;
|
|
63
|
+
};
|
|
64
|
+
}, "authorized", false, "default">>, "edit", "self">;
|
|
33
65
|
readonly effectiveStaticMethods: never;
|
|
34
|
-
}
|
|
66
|
+
}> & import("@astrale-os/sdk/schema").StateClass<Readonly<Omit<Readonly<Record<never, never>>, never> & {}>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { K, nodeClass, property } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { nodeIdValue } from '../../../types/index.js';
|
|
4
|
+
import { deleteCommentMethod } from '../functions/delete-comment.js';
|
|
5
|
+
import { editCommentMethod } from '../functions/edit-comment.js';
|
|
6
|
+
import { ContributeToComment } from '../policies/contribute-to-comment.js';
|
|
7
|
+
export const Comment = nodeClass({
|
|
8
|
+
description: 'One authored discussion entry attached to an Issue.',
|
|
9
|
+
icon: 'message-square',
|
|
10
|
+
extends: [K.classes.Timestamped],
|
|
11
|
+
properties: {
|
|
12
|
+
body: z.string().min(1).max(50_000),
|
|
13
|
+
authorId: property(nodeIdValue, {}),
|
|
14
|
+
},
|
|
15
|
+
methods: { edit: editCommentMethod, delete: deleteCommentMethod },
|
|
16
|
+
policies: { read: () => ContributeToComment },
|
|
17
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const issue_has_comment: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
|
|
2
|
+
readonly depth: 0;
|
|
3
|
+
readonly abstract: false;
|
|
4
|
+
readonly extends: readonly [];
|
|
5
|
+
readonly properties: never;
|
|
6
|
+
readonly source: {
|
|
7
|
+
readonly as: "issue";
|
|
8
|
+
readonly outgoing: "0..*";
|
|
9
|
+
};
|
|
10
|
+
readonly target: {
|
|
11
|
+
readonly as: "comment";
|
|
12
|
+
readonly incoming: "1";
|
|
13
|
+
};
|
|
14
|
+
readonly constraints: Record<never, never>;
|
|
15
|
+
readonly effectiveProperties: never;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { edgeClass } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { Issue } from '../../issue/index.js';
|
|
3
|
+
import { TraverseIssueComment } from '../policies/traverse-issue-comment.js';
|
|
4
|
+
import { Comment } from './comment.js';
|
|
5
|
+
export const issue_has_comment = edgeClass.directed({
|
|
6
|
+
description: 'One Issue contains one Comment.',
|
|
7
|
+
source: { as: 'issue', accepts: [() => Issue], outgoing: '0..*' },
|
|
8
|
+
target: { as: 'comment', accepts: [() => Comment], incoming: '1' },
|
|
9
|
+
policies: { traverse: () => TraverseIssueComment },
|
|
10
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const deleteCommentMethod: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<Record<string, never>, {
|
|
2
|
+
readonly mode: 'value';
|
|
3
|
+
readonly value: {
|
|
4
|
+
commentId: string;
|
|
5
|
+
deleted: true;
|
|
6
|
+
};
|
|
7
|
+
}, "authorized", false, "default">>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { method } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { nodeIdValue } from '../../../types/index.js';
|
|
4
|
+
import { EditOwnComment } from '../policies/edit-own-comment.js';
|
|
5
|
+
export const deleteCommentMethod = method({
|
|
6
|
+
description: 'Delete this Comment as its author.',
|
|
7
|
+
auth: 'authorized',
|
|
8
|
+
policy: ({ check, self }) => check(EditOwnComment, self),
|
|
9
|
+
input: z.strictObject({}),
|
|
10
|
+
output: z.strictObject({ commentId: nodeIdValue, deleted: z.literal(true) }),
|
|
11
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const editCommentMethod: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
2
|
+
body: string;
|
|
3
|
+
}, {
|
|
4
|
+
readonly mode: 'value';
|
|
5
|
+
readonly value: {
|
|
6
|
+
id: string;
|
|
7
|
+
body: string;
|
|
8
|
+
};
|
|
9
|
+
}, "authorized", false, "default">>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { method } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { EditOwnComment } from '../policies/edit-own-comment.js';
|
|
4
|
+
import { commentValue } from '../types/comment.js';
|
|
5
|
+
export const editCommentMethod = method({
|
|
6
|
+
description: 'Edit this Comment as its author.',
|
|
7
|
+
auth: 'authorized',
|
|
8
|
+
policy: ({ check, self }) => check(EditOwnComment, self),
|
|
9
|
+
input: z.strictObject({ body: z.string().min(1).max(50_000) }),
|
|
10
|
+
output: commentValue,
|
|
11
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { commentValue } from './types/index.js';
|
|
2
|
+
export { comment_authored_by, Comment, issue_has_comment } from './classes/index.js';
|
|
3
|
+
export { deleteCommentMethod, editCommentMethod } from './functions/index.js';
|
|
4
|
+
export { ContributeToComment, EditOwnComment, TraverseCommentRelationship, TraverseIssueComment, } from './policies/index.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { commentValue } from './types/index.js';
|
|
2
|
+
export { comment_authored_by, Comment, issue_has_comment } from './classes/index.js';
|
|
3
|
+
export { deleteCommentMethod, editCommentMethod } from './functions/index.js';
|
|
4
|
+
export { ContributeToComment, EditOwnComment, TraverseCommentRelationship, TraverseIssueComment, } from './policies/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ContributeToComment: import("@astrale-os/sdk/schema").Policy;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { policy } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { Issue, project_contains_issue } from '../../issue/index.js';
|
|
3
|
+
import { Project, project_has_member, project_owned_by } from '../../project/index.js';
|
|
4
|
+
import { issue_has_comment } from '../classes/issue-has-comment.js';
|
|
5
|
+
export const ContributeToComment = policy({
|
|
6
|
+
description: 'The caller owns or belongs to the Project containing this Comment.',
|
|
7
|
+
match: ({ allOf, anyOf, edge, exists, object, subject }) => exists(({ node }) => {
|
|
8
|
+
const project = node(() => Project);
|
|
9
|
+
const issue = node(() => Issue);
|
|
10
|
+
return allOf(anyOf(edge({ source: subject, class: () => project_owned_by, target: project }), edge({ source: subject, class: () => project_has_member, target: project })), edge({ source: project, class: () => project_contains_issue, target: issue }), edge({ source: issue, class: () => issue_has_comment, target: object }));
|
|
11
|
+
}),
|
|
12
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EditOwnComment: import("@astrale-os/sdk/schema").Policy;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { policy } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { comment_authored_by } from '../classes/comment-authored-by.js';
|
|
3
|
+
export const EditOwnComment = policy({
|
|
4
|
+
description: 'The caller is the immutable author of this Comment.',
|
|
5
|
+
match: ({ edge, object, subject }) => edge({ source: subject, class: () => comment_authored_by, target: object }),
|
|
6
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ContributeToComment } from './contribute-to-comment.js';
|
|
2
|
+
export { EditOwnComment } from './edit-own-comment.js';
|
|
3
|
+
export { TraverseCommentRelationship } from './traverse-comment-relationship.js';
|
|
4
|
+
export { TraverseIssueComment } from './traverse-issue-comment.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ContributeToComment } from './contribute-to-comment.js';
|
|
2
|
+
export { EditOwnComment } from './edit-own-comment.js';
|
|
3
|
+
export { TraverseCommentRelationship } from './traverse-comment-relationship.js';
|
|
4
|
+
export { TraverseIssueComment } from './traverse-issue-comment.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TraverseCommentRelationship: import("@astrale-os/sdk/schema").Policy;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { policy } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { Issue, project_contains_issue } from '../../issue/index.js';
|
|
3
|
+
import { Project, project_has_member, project_owned_by } from '../../project/index.js';
|
|
4
|
+
import { comment_authored_by } from '../classes/comment-authored-by.js';
|
|
5
|
+
import { issue_has_comment } from '../classes/issue-has-comment.js';
|
|
6
|
+
export const TraverseCommentRelationship = policy({
|
|
7
|
+
description: 'The caller owns or belongs to the Project containing the source Comment.',
|
|
8
|
+
match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
|
|
9
|
+
const issue = node(() => Issue);
|
|
10
|
+
const project = node(() => Project);
|
|
11
|
+
return allOf(edge({ source, class: () => comment_authored_by, target }), edge({ source: issue, class: () => issue_has_comment, target }), edge({ source: project, class: () => project_contains_issue, target: issue }), edge({ source: subject, class: () => project_owned_by, target: project }));
|
|
12
|
+
}), exists(({ node }) => {
|
|
13
|
+
const issue = node(() => Issue);
|
|
14
|
+
const project = node(() => Project);
|
|
15
|
+
return allOf(edge({ source, class: () => comment_authored_by, target }), edge({ source: issue, class: () => issue_has_comment, target }), edge({ source: project, class: () => project_contains_issue, target: issue }), edge({ source: subject, class: () => project_has_member, target: project }));
|
|
16
|
+
})),
|
|
17
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TraverseIssueComment: import("@astrale-os/sdk/schema").Policy;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { policy } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { project_contains_issue } from '../../issue/index.js';
|
|
3
|
+
import { Project, project_has_member, project_owned_by } from '../../project/index.js';
|
|
4
|
+
import { issue_has_comment } from '../classes/issue-has-comment.js';
|
|
5
|
+
export const TraverseIssueComment = policy({
|
|
6
|
+
description: 'Issue Comment containment is visible only inside the containing Project.',
|
|
7
|
+
match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
|
|
8
|
+
const project = node(() => Project);
|
|
9
|
+
return allOf(edge({ source, class: () => issue_has_comment, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_owned_by, target: project }));
|
|
10
|
+
}), exists(({ node }) => {
|
|
11
|
+
const project = node(() => Project);
|
|
12
|
+
return allOf(edge({ source, class: () => issue_has_comment, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_has_member, target: project }));
|
|
13
|
+
})),
|
|
14
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { commentValue } from './comment.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { commentValue } from './comment.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { issue_assigned_to } from './issue-assigned-to.js';
|
|
2
|
+
export { issue_reported_by } from './issue-reported-by.js';
|
|
3
|
+
export { issue_subtask_of } from './issue-subtask-of.js';
|
|
4
|
+
export { Issue } from './issue.js';
|
|
5
|
+
export { project_contains_issue } from './project-contains-issue.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { issue_assigned_to } from './issue-assigned-to.js';
|
|
2
|
+
export { issue_reported_by } from './issue-reported-by.js';
|
|
3
|
+
export { issue_subtask_of } from './issue-subtask-of.js';
|
|
4
|
+
export { Issue } from './issue.js';
|
|
5
|
+
export { project_contains_issue } from './project-contains-issue.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const issue_assigned_to: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
|
|
2
|
+
readonly depth: 0;
|
|
3
|
+
readonly abstract: false;
|
|
4
|
+
readonly extends: readonly [];
|
|
5
|
+
readonly properties: never;
|
|
6
|
+
readonly source: {
|
|
7
|
+
readonly as: "assignee";
|
|
8
|
+
readonly outgoing: "0..*";
|
|
9
|
+
};
|
|
10
|
+
readonly target: {
|
|
11
|
+
readonly as: "issue";
|
|
12
|
+
readonly incoming: "0..1";
|
|
13
|
+
};
|
|
14
|
+
readonly constraints: Record<never, never>;
|
|
15
|
+
readonly effectiveProperties: never;
|
|
16
|
+
}>;
|