@astrale-domains/issues 0.1.3 → 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.
Files changed (185) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +13 -19
  3. package/dist/schema/.runtime/states/issue/index.d.ts +4 -7
  4. package/dist/schema/.runtime/states/issue/index.js +2 -2
  5. package/dist/schema/index.d.ts +4 -4
  6. package/dist/schema/index.js +4 -4
  7. package/dist/schema/{comment/relationships.d.ts → modules/comment/classes/comment-authored-by.d.ts} +0 -16
  8. package/dist/schema/modules/comment/classes/comment-authored-by.js +9 -0
  9. package/dist/schema/{comment/class.d.ts → modules/comment/classes/comment.d.ts} +1 -1
  10. package/dist/schema/{comment/class.js → modules/comment/classes/comment.js} +5 -4
  11. package/dist/schema/modules/comment/classes/index.d.ts +3 -0
  12. package/dist/schema/modules/comment/classes/index.js +3 -0
  13. package/dist/schema/modules/comment/classes/issue-has-comment.d.ts +16 -0
  14. package/dist/schema/modules/comment/classes/issue-has-comment.js +10 -0
  15. package/dist/schema/modules/comment/functions/delete-comment.d.ts +7 -0
  16. package/dist/schema/modules/comment/functions/delete-comment.js +11 -0
  17. package/dist/schema/modules/comment/functions/edit-comment.d.ts +9 -0
  18. package/dist/schema/modules/comment/functions/edit-comment.js +11 -0
  19. package/dist/schema/modules/comment/functions/index.d.ts +2 -0
  20. package/dist/schema/modules/comment/functions/index.js +2 -0
  21. package/dist/schema/modules/comment/index.d.ts +4 -0
  22. package/dist/schema/modules/comment/index.js +4 -0
  23. package/dist/schema/{comment/contribute-to-comment-policy.js → modules/comment/policies/contribute-to-comment.js} +3 -3
  24. package/dist/schema/{comment/edit-own-comment-policy.js → modules/comment/policies/edit-own-comment.js} +1 -1
  25. package/dist/schema/modules/comment/policies/index.d.ts +4 -0
  26. package/dist/schema/modules/comment/policies/index.js +4 -0
  27. package/dist/schema/{comment/traverse-comment-relationship-policy.d.ts → modules/comment/policies/traverse-comment-relationship.d.ts} +0 -1
  28. package/dist/schema/{comment/traverse-comment-relationship-policy.js → modules/comment/policies/traverse-comment-relationship.js} +4 -4
  29. package/dist/schema/modules/comment/policies/traverse-issue-comment.d.ts +1 -0
  30. package/dist/schema/modules/comment/policies/traverse-issue-comment.js +14 -0
  31. package/dist/schema/modules/comment/types/comment.d.ts +5 -0
  32. package/dist/schema/modules/comment/types/comment.js +6 -0
  33. package/dist/schema/modules/comment/types/index.d.ts +1 -0
  34. package/dist/schema/modules/comment/types/index.js +1 -0
  35. package/dist/schema/modules/issue/classes/index.d.ts +5 -0
  36. package/dist/schema/modules/issue/classes/index.js +5 -0
  37. package/dist/schema/modules/issue/classes/issue-assigned-to.d.ts +16 -0
  38. package/dist/schema/modules/issue/classes/issue-assigned-to.js +9 -0
  39. package/dist/schema/modules/issue/classes/issue-reported-by.d.ts +16 -0
  40. package/dist/schema/modules/issue/classes/issue-reported-by.js +9 -0
  41. package/dist/schema/modules/issue/classes/issue-subtask-of.d.ts +19 -0
  42. package/dist/schema/modules/issue/classes/issue-subtask-of.js +10 -0
  43. package/dist/schema/{issue/class.d.ts → modules/issue/classes/issue.d.ts} +28 -3
  44. package/dist/schema/modules/issue/classes/issue.js +35 -0
  45. package/dist/schema/modules/issue/classes/project-contains-issue.d.ts +16 -0
  46. package/dist/schema/modules/issue/classes/project-contains-issue.js +10 -0
  47. package/dist/schema/modules/issue/functions/add-issue-comment.d.ts +9 -0
  48. package/dist/schema/modules/issue/functions/add-issue-comment.js +11 -0
  49. package/dist/schema/modules/issue/functions/archive-issue.d.ts +7 -0
  50. package/dist/schema/modules/issue/functions/archive-issue.js +11 -0
  51. package/dist/schema/modules/issue/functions/assign-issue.d.ts +9 -0
  52. package/dist/schema/modules/issue/functions/assign-issue.js +11 -0
  53. package/dist/schema/modules/issue/functions/index.d.ts +7 -0
  54. package/dist/schema/modules/issue/functions/index.js +7 -0
  55. package/dist/schema/modules/issue/functions/set-issue-parent.d.ts +9 -0
  56. package/dist/schema/modules/issue/functions/set-issue-parent.js +11 -0
  57. package/dist/schema/modules/issue/functions/set-issue-tags.d.ts +9 -0
  58. package/dist/schema/modules/issue/functions/set-issue-tags.js +11 -0
  59. package/dist/schema/modules/issue/functions/transition-issue.d.ts +22 -0
  60. package/dist/schema/modules/issue/functions/transition-issue.js +20 -0
  61. package/dist/schema/modules/issue/functions/update-issue.d.ts +16 -0
  62. package/dist/schema/modules/issue/functions/update-issue.js +15 -0
  63. package/dist/schema/modules/issue/index.d.ts +4 -0
  64. package/dist/schema/modules/issue/index.js +4 -0
  65. package/dist/schema/{issue/contribute-to-issue-policy.js → modules/issue/policies/contribute-to-issue.js} +2 -2
  66. package/dist/schema/modules/issue/policies/index.d.ts +5 -0
  67. package/dist/schema/modules/issue/policies/index.js +5 -0
  68. package/dist/schema/modules/issue/policies/traverse-issue-assignee.d.ts +1 -0
  69. package/dist/schema/modules/issue/policies/traverse-issue-assignee.js +14 -0
  70. package/dist/schema/modules/issue/policies/traverse-issue-parent.d.ts +1 -0
  71. package/dist/schema/modules/issue/policies/traverse-issue-parent.js +14 -0
  72. package/dist/schema/modules/issue/policies/traverse-issue-reporter.d.ts +1 -0
  73. package/dist/schema/modules/issue/policies/traverse-issue-reporter.js +14 -0
  74. package/dist/schema/modules/issue/policies/traverse-project-issue.d.ts +1 -0
  75. package/dist/schema/modules/issue/policies/traverse-project-issue.js +7 -0
  76. package/dist/schema/modules/issue/types/index.d.ts +1 -0
  77. package/dist/schema/modules/issue/types/index.js +1 -0
  78. package/dist/schema/modules/issue/types/issue.d.ts +10 -0
  79. package/dist/schema/modules/issue/types/issue.js +12 -0
  80. package/dist/schema/modules/project/classes/index.d.ts +3 -0
  81. package/dist/schema/modules/project/classes/index.js +3 -0
  82. package/dist/schema/{project/relationships.d.ts → modules/project/classes/project-has-member.d.ts} +0 -16
  83. package/dist/schema/modules/project/classes/project-has-member.js +9 -0
  84. package/dist/schema/modules/project/classes/project-owned-by.d.ts +16 -0
  85. package/dist/schema/modules/project/classes/project-owned-by.js +9 -0
  86. package/dist/schema/{project/class.d.ts → modules/project/classes/project.d.ts} +60 -11
  87. package/dist/schema/modules/project/classes/project.js +35 -0
  88. package/dist/schema/modules/project/functions/add-project-member.d.ts +10 -0
  89. package/dist/schema/modules/project/functions/add-project-member.js +12 -0
  90. package/dist/schema/modules/project/functions/archive-project.d.ts +7 -0
  91. package/dist/schema/modules/project/functions/archive-project.js +11 -0
  92. package/dist/schema/modules/project/functions/create-project-issue.d.ts +16 -0
  93. package/dist/schema/modules/project/functions/create-project-issue.js +15 -0
  94. package/dist/schema/modules/project/functions/create-project-tag.d.ts +12 -0
  95. package/dist/schema/modules/project/functions/create-project-tag.js +14 -0
  96. package/dist/schema/modules/project/functions/create-project.d.ts +14 -0
  97. package/dist/schema/modules/project/functions/create-project.js +14 -0
  98. package/dist/schema/modules/project/functions/index.d.ts +8 -0
  99. package/dist/schema/modules/project/functions/index.js +8 -0
  100. package/dist/schema/modules/project/functions/list-projects.d.ts +25 -0
  101. package/dist/schema/modules/project/functions/list-projects.js +16 -0
  102. package/dist/schema/modules/project/functions/remove-project-member.d.ts +10 -0
  103. package/dist/schema/modules/project/functions/remove-project-member.js +12 -0
  104. package/dist/schema/modules/project/functions/update-project.d.ts +13 -0
  105. package/dist/schema/modules/project/functions/update-project.js +14 -0
  106. package/dist/schema/modules/project/index.d.ts +4 -0
  107. package/dist/schema/modules/project/index.js +4 -0
  108. package/dist/schema/{project/contribute-to-project-policy.js → modules/project/policies/contribute-to-project.js} +2 -1
  109. package/dist/schema/modules/project/policies/index.d.ts +4 -0
  110. package/dist/schema/modules/project/policies/index.js +4 -0
  111. package/dist/schema/{project/manage-project-policy.js → modules/project/policies/manage-project.js} +1 -1
  112. package/dist/schema/modules/project/policies/traverse-project-member.d.ts +1 -0
  113. package/dist/schema/modules/project/policies/traverse-project-member.js +7 -0
  114. package/dist/schema/modules/project/policies/traverse-project-owner.d.ts +1 -0
  115. package/dist/schema/modules/project/policies/traverse-project-owner.js +7 -0
  116. package/dist/schema/modules/project/types/index.d.ts +2 -0
  117. package/dist/schema/modules/project/types/index.js +2 -0
  118. package/dist/schema/modules/project/types/membership-change.d.ts +6 -0
  119. package/dist/schema/modules/project/types/membership-change.js +7 -0
  120. package/dist/schema/modules/project/types/project.d.ts +8 -0
  121. package/dist/schema/modules/project/types/project.js +9 -0
  122. package/dist/schema/modules/tag/classes/index.d.ts +3 -0
  123. package/dist/schema/modules/tag/classes/index.js +3 -0
  124. package/dist/schema/modules/tag/classes/issue-tagged-with.d.ts +16 -0
  125. package/dist/schema/modules/tag/classes/issue-tagged-with.js +10 -0
  126. package/dist/schema/{tag/relationships.d.ts → modules/tag/classes/project-contains-tag.d.ts} +0 -16
  127. package/dist/schema/modules/tag/classes/project-contains-tag.js +10 -0
  128. package/dist/schema/{tag/class.d.ts → modules/tag/classes/tag.d.ts} +1 -1
  129. package/dist/schema/{tag/class.js → modules/tag/classes/tag.js} +3 -2
  130. package/dist/schema/modules/tag/functions/delete-tag.d.ts +7 -0
  131. package/dist/schema/modules/tag/functions/delete-tag.js +11 -0
  132. package/dist/schema/modules/tag/functions/edit-tag.d.ts +12 -0
  133. package/dist/schema/modules/tag/functions/edit-tag.js +14 -0
  134. package/dist/schema/modules/tag/functions/index.d.ts +2 -0
  135. package/dist/schema/modules/tag/functions/index.js +2 -0
  136. package/dist/schema/modules/tag/index.d.ts +4 -0
  137. package/dist/schema/modules/tag/index.js +4 -0
  138. package/dist/schema/{tag/contribute-to-tag-policy.js → modules/tag/policies/contribute-to-tag.js} +2 -2
  139. package/dist/schema/modules/tag/policies/index.d.ts +4 -0
  140. package/dist/schema/modules/tag/policies/index.js +4 -0
  141. package/dist/schema/{tag/manage-tag-policy.js → modules/tag/policies/manage-tag.js} +2 -2
  142. package/dist/schema/modules/tag/policies/traverse-issue-tag.d.ts +1 -0
  143. package/dist/schema/modules/tag/policies/traverse-issue-tag.js +14 -0
  144. package/dist/schema/modules/tag/policies/traverse-project-tag.d.ts +1 -0
  145. package/dist/schema/modules/tag/policies/traverse-project-tag.js +7 -0
  146. package/dist/schema/modules/tag/types/index.d.ts +1 -0
  147. package/dist/schema/modules/tag/types/index.js +1 -0
  148. package/dist/schema/modules/tag/types/tag.d.ts +7 -0
  149. package/dist/schema/modules/tag/types/tag.js +8 -0
  150. package/dist/schema/schema.d.ts +732 -650
  151. package/dist/schema/schema.js +47 -42
  152. package/dist/schema/types/index.js +1 -0
  153. package/dist/schema/types/node-id.js +2 -0
  154. package/package.json +24 -26
  155. package/dist/schema/comment/index.d.ts +0 -5
  156. package/dist/schema/comment/index.js +0 -5
  157. package/dist/schema/comment/methods.js +0 -18
  158. package/dist/schema/comment/relationships.js +0 -16
  159. package/dist/schema/issue/class.js +0 -29
  160. package/dist/schema/issue/index.d.ts +0 -4
  161. package/dist/schema/issue/index.js +0 -4
  162. package/dist/schema/issue/methods.js +0 -66
  163. package/dist/schema/issue/relationships.d.ts +0 -67
  164. package/dist/schema/issue/relationships.js +0 -29
  165. package/dist/schema/issue/traverse-issue-relationship-policy.d.ts +0 -5
  166. package/dist/schema/issue/traverse-issue-relationship-policy.js +0 -55
  167. package/dist/schema/project/class.js +0 -27
  168. package/dist/schema/project/index.d.ts +0 -5
  169. package/dist/schema/project/index.js +0 -5
  170. package/dist/schema/project/methods.js +0 -68
  171. package/dist/schema/project/relationships.js +0 -15
  172. package/dist/schema/project/traverse-project-relationship-policy.d.ts +0 -4
  173. package/dist/schema/project/traverse-project-relationship-policy.js +0 -20
  174. package/dist/schema/tag/index.d.ts +0 -4
  175. package/dist/schema/tag/index.js +0 -4
  176. package/dist/schema/tag/methods.js +0 -21
  177. package/dist/schema/tag/relationships.js +0 -16
  178. package/dist/schema/value/index.js +0 -34
  179. /package/dist/schema/{comment/contribute-to-comment-policy.d.ts → modules/comment/policies/contribute-to-comment.d.ts} +0 -0
  180. /package/dist/schema/{comment/edit-own-comment-policy.d.ts → modules/comment/policies/edit-own-comment.d.ts} +0 -0
  181. /package/dist/schema/{issue/contribute-to-issue-policy.d.ts → modules/issue/policies/contribute-to-issue.d.ts} +0 -0
  182. /package/dist/schema/{project/contribute-to-project-policy.d.ts → modules/project/policies/contribute-to-project.d.ts} +0 -0
  183. /package/dist/schema/{project/manage-project-policy.d.ts → modules/project/policies/manage-project.d.ts} +0 -0
  184. /package/dist/schema/{tag/contribute-to-tag-policy.d.ts → modules/tag/policies/contribute-to-tag.d.ts} +0 -0
  185. /package/dist/schema/{tag/manage-tag-policy.d.ts → modules/tag/policies/manage-tag.d.ts} +0 -0
@@ -1,44 +1,49 @@
1
+ import { ShellSchema } from '@astrale-domains/shell';
1
2
  import { KernelSchema, defineSchema, view } from '@astrale-os/sdk/schema';
2
- import { Comment, ContributeToComment, EditOwnComment, TraverseCommentRelationship, comment_authored_by, issue_has_comment, } from './comment/index.js';
3
- import { ContributeToIssue, Issue, TraverseIssueAssignee, TraverseIssueComment, TraverseIssueParent, TraverseIssueReporter, TraverseIssueTag, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './issue/index.js';
4
- import { ContributeToProject, ManageProject, Project, TraverseProjectIssue, TraverseProjectMember, TraverseProjectOwner, TraverseProjectTag, project_has_member, project_owned_by, } from './project/index.js';
5
- import { ContributeToTag, ManageTag, Tag, issue_tagged_with, project_contains_tag, } from './tag/index.js';
6
- export const schema = defineSchema('issues.astrale.ai', {
7
- dependencies: { kernel: KernelSchema },
8
- classes: {
9
- Project,
10
- Issue,
11
- Comment,
12
- Tag,
13
- project_owned_by,
14
- project_has_member,
15
- project_contains_issue,
16
- issue_reported_by,
17
- issue_assigned_to,
18
- issue_subtask_of,
19
- issue_has_comment,
20
- comment_authored_by,
21
- project_contains_tag,
22
- issue_tagged_with,
23
- },
24
- policies: {
25
- ManageProject,
26
- ContributeToProject,
27
- ContributeToIssue,
28
- ContributeToTag,
29
- ManageTag,
30
- ContributeToComment,
31
- EditOwnComment,
32
- TraverseProjectOwner,
33
- TraverseProjectMember,
34
- TraverseProjectIssue,
35
- TraverseProjectTag,
36
- TraverseIssueReporter,
37
- TraverseIssueAssignee,
38
- TraverseIssueParent,
39
- TraverseIssueComment,
40
- TraverseIssueTag,
41
- TraverseCommentRelationship,
42
- },
43
- views: { application: view({}) },
3
+ import { Comment, comment_authored_by, issue_has_comment, ContributeToComment, EditOwnComment, TraverseCommentRelationship, TraverseIssueComment, } from './modules/comment/index.js';
4
+ import { Issue, ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
5
+ import { Project, ContributeToProject, ManageProject, TraverseProjectMember, TraverseProjectOwner, project_has_member, project_owned_by, } from './modules/project/index.js';
6
+ import { Tag, ContributeToTag, ManageTag, TraverseIssueTag, TraverseProjectTag, issue_tagged_with, project_contains_tag, } from './modules/tag/index.js';
7
+ const origin = 'issues.astrale.ai';
8
+ const classes = {
9
+ Project,
10
+ Issue,
11
+ Comment,
12
+ Tag,
13
+ project_owned_by,
14
+ project_has_member,
15
+ project_contains_issue,
16
+ issue_reported_by,
17
+ issue_assigned_to,
18
+ issue_subtask_of,
19
+ issue_has_comment,
20
+ comment_authored_by,
21
+ project_contains_tag,
22
+ issue_tagged_with,
23
+ };
24
+ const policies = {
25
+ ManageProject,
26
+ ContributeToProject,
27
+ ContributeToIssue,
28
+ ContributeToTag,
29
+ ManageTag,
30
+ ContributeToComment,
31
+ EditOwnComment,
32
+ TraverseProjectOwner,
33
+ TraverseProjectMember,
34
+ TraverseProjectIssue,
35
+ TraverseProjectTag,
36
+ TraverseIssueReporter,
37
+ TraverseIssueAssignee,
38
+ TraverseIssueParent,
39
+ TraverseIssueComment,
40
+ TraverseIssueTag,
41
+ TraverseCommentRelationship,
42
+ };
43
+ const views = { application: view({}) };
44
+ export const schema = defineSchema(origin, {
45
+ dependencies: { kernel: KernelSchema, shell: ShellSchema },
46
+ classes,
47
+ policies,
48
+ views,
44
49
  });
@@ -0,0 +1 @@
1
+ export { nodeIdValue } from './node-id.js';
@@ -0,0 +1,2 @@
1
+ import { z } from 'zod';
2
+ export const nodeIdValue = z.string().min(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-domains/issues",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/astrale-os/domains.git",
@@ -28,36 +28,37 @@
28
28
  "registry": "https://registry.npmjs.org/"
29
29
  },
30
30
  "dependencies": {
31
- "@astrale-os/sdk": "0.5.0-beta.64",
31
+ "@astrale-domains/shell": "0.1.0-beta.14",
32
+ "@astrale-os/sdk": "0.5.0-beta.75",
32
33
  "zod": "^4.4.3"
33
34
  },
34
35
  "devDependencies": {
35
- "@astrale-os/adapter-cloudflare": "0.5.0-beta.67",
36
- "@astrale-os/ox": ">=0.1.3 <1.0.0",
37
- "@astrale-os/shell": "0.4.2-beta.7",
38
- "@astrale-os/shell-react": "0.3.2-beta.3",
39
- "@astrale-os/ui": "0.3.0-beta.9",
40
- "@tailwindcss/vite": "^4.0.6",
41
- "@tanstack/react-router": "1.170.17",
42
- "@tanstack/router-plugin": "1.168.19",
36
+ "@astrale-os/adapter-cloudflare": "0.5.0-beta.78",
37
+ "@astrale-os/ox": ">=0.1.4 <1.0.0",
38
+ "@astrale-os/shell": "0.4.2-beta.8",
39
+ "@astrale-os/shell-react": "0.3.2-beta.5",
40
+ "@astrale-os/ui": "0.3.0-beta.13",
41
+ "@tailwindcss/vite": "^4.3.3",
42
+ "@tanstack/react-router": "1.170.18",
43
+ "@tanstack/router-plugin": "1.168.23",
43
44
  "@testing-library/react": "16.3.2",
44
- "@testing-library/user-event": "14.6.1",
45
- "@types/node": "^22.0.0",
46
- "@types/react": "^19.2.0",
47
- "@types/react-dom": "^19.2.0",
48
- "@vitejs/plugin-react": "^6.0.5",
45
+ "@testing-library/user-event": "14.6.5",
46
+ "@types/node": "^26.2.0",
47
+ "@types/react": "^19.2.18",
48
+ "@types/react-dom": "^19.2.4",
49
+ "@vitejs/plugin-react": "^6.1.0",
49
50
  "jsdom": "30.0.1",
50
51
  "mermaid": "^11.17.0",
51
- "oxlint": ">=1.78.0 <2.0.0",
52
- "react": "^19.2.0",
53
- "react-dom": "^19.2.0",
52
+ "oxlint": ">=1.79.0 <2.0.0",
53
+ "react": "^19.2.8",
54
+ "react-dom": "^19.2.8",
54
55
  "react-markdown": "^10.1.0",
55
56
  "remark-gfm": "^4.0.1",
56
- "tailwindcss": "^4.0.6",
57
- "type-fest": "^4.41.0",
57
+ "tailwindcss": "^4.3.3",
58
+ "type-fest": "^5.8.0",
58
59
  "typescript": "7.0.2",
59
- "vite": "^8.2.1",
60
- "vitest": "^4.1.10"
60
+ "vite": "^8.2.2",
61
+ "vitest": "^4.1.11"
61
62
  },
62
63
  "engines": {
63
64
  "node": ">=22.13"
@@ -76,10 +77,7 @@
76
77
  "lint:fix": "astrale-domain lint --fix",
77
78
  "package": "astrale-domain package",
78
79
  "typecheck": "tsc --noEmit",
79
- "test": "vitest run --config vitest.config.ts && node --test scripts/**/*.test.mjs",
80
- "legacy:snapshot": "node scripts/legacy-issues-import/import-tracker-domain.mjs snapshot",
81
- "legacy:deprovision": "node scripts/legacy-issues-import/import-tracker-domain.mjs deprovision",
82
- "legacy:import": "node scripts/legacy-issues-import/import-tracker-domain.mjs import",
80
+ "test": "vitest run --config vitest.config.ts",
83
81
  "frontend:dev": "vite",
84
82
  "frontend:build": "vite build"
85
83
  }
@@ -1,5 +0,0 @@
1
- export { Comment } from './class.js';
2
- export { ContributeToComment } from './contribute-to-comment-policy.js';
3
- export { EditOwnComment } from './edit-own-comment-policy.js';
4
- export { comment_authored_by, issue_has_comment } from './relationships.js';
5
- export { TraverseCommentRelationship } from './traverse-comment-relationship-policy.js';
@@ -1,5 +0,0 @@
1
- export { Comment } from './class.js';
2
- export { ContributeToComment } from './contribute-to-comment-policy.js';
3
- export { EditOwnComment } from './edit-own-comment-policy.js';
4
- export { comment_authored_by, issue_has_comment } from './relationships.js';
5
- export { TraverseCommentRelationship } from './traverse-comment-relationship-policy.js';
@@ -1,18 +0,0 @@
1
- import { method } from '@astrale-os/sdk/schema';
2
- import { z } from 'zod';
3
- import { commentValue, nodeIdValue } from '../value/index.js';
4
- import { EditOwnComment } from './edit-own-comment-policy.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
- });
12
- export const deleteCommentMethod = method({
13
- description: 'Delete this Comment as its author.',
14
- auth: 'authorized',
15
- policy: ({ check, self }) => check(EditOwnComment, self),
16
- input: z.strictObject({}),
17
- output: z.strictObject({ commentId: nodeIdValue, deleted: z.literal(true) }),
18
- });
@@ -1,16 +0,0 @@
1
- import { K, edgeClass } from '@astrale-os/sdk/schema';
2
- import { Issue, TraverseIssueComment } from '../issue/index.js';
3
- import { Comment } from './class.js';
4
- import { TraverseCommentRelationship } from './traverse-comment-relationship-policy.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
- });
11
- export const comment_authored_by = edgeClass.directed({
12
- description: 'The immutable author of one Comment.',
13
- source: { as: 'author', accepts: [K.classes.Identity], outgoing: '0..*' },
14
- target: { as: 'comment', accepts: [() => Comment], incoming: '1' },
15
- policies: { traverse: () => TraverseCommentRelationship },
16
- });
@@ -1,29 +0,0 @@
1
- import { K, nodeClass, property } from '@astrale-os/sdk/schema';
2
- import { z } from 'zod';
3
- import { nodeIdValue } from '../value/index.js';
4
- import { issueLifecycle } from '../.runtime/states/issue/index.js';
5
- import { ContributeToIssue } from './contribute-to-issue-policy.js';
6
- import { addIssueCommentMethod, archiveIssueMethod, assignIssueMethod, setIssueParentMethod, setIssueTagsMethod, transitionIssueMethod, updateIssueMethod, } from './methods.js';
7
- export const Issue = nodeClass({
8
- description: 'One immutable-reference work item contained by exactly one Project.',
9
- icon: 'circle-dot',
10
- extends: [K.classes.Named, K.classes.Descriptable, K.classes.Timestamped],
11
- properties: {
12
- reference: z.string().min(1).max(32),
13
- reporterId: property(nodeIdValue, { visibility: 'private' }),
14
- assigneeId: property(nodeIdValue.optional(), { visibility: 'private' }),
15
- status: issueLifecycle.stateSchema,
16
- priority: z.number().int().min(0).max(4),
17
- archived: z.boolean(),
18
- },
19
- methods: {
20
- update: updateIssueMethod,
21
- transition: transitionIssueMethod,
22
- assign: assignIssueMethod,
23
- setTags: setIssueTagsMethod,
24
- setParent: setIssueParentMethod,
25
- addComment: addIssueCommentMethod,
26
- archive: archiveIssueMethod,
27
- },
28
- policies: { read: () => ContributeToIssue },
29
- });
@@ -1,4 +0,0 @@
1
- export { Issue } from './class.js';
2
- export { ContributeToIssue } from './contribute-to-issue-policy.js';
3
- export { issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './relationships.js';
4
- export { TraverseIssueAssignee, TraverseIssueComment, TraverseIssueParent, TraverseIssueReporter, TraverseIssueTag, } from './traverse-issue-relationship-policy.js';
@@ -1,4 +0,0 @@
1
- export { Issue } from './class.js';
2
- export { ContributeToIssue } from './contribute-to-issue-policy.js';
3
- export { issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './relationships.js';
4
- export { TraverseIssueAssignee, TraverseIssueComment, TraverseIssueParent, TraverseIssueReporter, TraverseIssueTag, } from './traverse-issue-relationship-policy.js';
@@ -1,66 +0,0 @@
1
- import { method } from '@astrale-os/sdk/schema';
2
- import { z } from 'zod';
3
- import { commentValue, issueValue, nodeIdValue } from '../value/index.js';
4
- import { issueLifecycle } from '../.runtime/states/issue/index.js';
5
- import { ContributeToIssue } from './contribute-to-issue-policy.js';
6
- export const updateIssueMethod = method({
7
- description: 'Update mutable Issue fields.',
8
- auth: 'authorized',
9
- policy: ({ check, self }) => check(ContributeToIssue, self),
10
- input: z.strictObject({
11
- title: z.string().min(1).max(200).optional(),
12
- description: z.string().max(50_000).optional(),
13
- priority: z.number().int().min(0).max(4).optional(),
14
- }),
15
- output: issueValue,
16
- });
17
- export const transitionIssueMethod = method({
18
- description: 'Apply one legal Issue lifecycle event.',
19
- auth: 'authorized',
20
- policy: ({ check, self }) => check(ContributeToIssue, self),
21
- input: z.strictObject({ event: issueLifecycle.eventSchema }),
22
- output: z.discriminatedUnion('kind', [
23
- z.strictObject({ kind: z.literal('transitioned'), issue: issueValue }),
24
- z.strictObject({
25
- kind: z.literal('rejected'),
26
- code: z.literal('STATE_TRANSITION_ILLEGAL'),
27
- from: issueLifecycle.stateSchema,
28
- event: issueLifecycle.eventSchema,
29
- }),
30
- ]),
31
- });
32
- export const assignIssueMethod = method({
33
- description: 'Assign this Issue to a Project participant or clear its assignee.',
34
- auth: 'authorized',
35
- policy: ({ check, self }) => check(ContributeToIssue, self),
36
- input: z.strictObject({ assigneeId: nodeIdValue.nullable() }),
37
- output: z.strictObject({ issueId: nodeIdValue, assigneeId: nodeIdValue.optional() }),
38
- });
39
- export const setIssueTagsMethod = method({
40
- description: 'Replace this Issue Tag set with an exact Project-local set.',
41
- auth: 'authorized',
42
- policy: ({ check, self }) => check(ContributeToIssue, self),
43
- input: z.strictObject({ tagIds: z.array(nodeIdValue).max(128) }),
44
- output: z.strictObject({ issueId: nodeIdValue, tagIds: z.array(nodeIdValue) }),
45
- });
46
- export const setIssueParentMethod = method({
47
- description: 'Set or clear this Issue parent inside the same Project.',
48
- auth: 'authorized',
49
- policy: ({ check, self }) => check(ContributeToIssue, self),
50
- input: z.strictObject({ parentId: nodeIdValue.nullable() }),
51
- output: z.strictObject({ issueId: nodeIdValue, parentId: nodeIdValue.optional() }),
52
- });
53
- export const addIssueCommentMethod = method({
54
- description: 'Add one authored Comment to this Issue.',
55
- auth: 'authorized',
56
- policy: ({ check, self }) => check(ContributeToIssue, self),
57
- input: z.strictObject({ body: z.string().min(1).max(50_000) }),
58
- output: commentValue,
59
- });
60
- export const archiveIssueMethod = method({
61
- description: 'Archive this Issue without deleting its discussion or relationships.',
62
- auth: 'authorized',
63
- policy: ({ check, self }) => check(ContributeToIssue, self),
64
- input: z.strictObject({}),
65
- output: z.strictObject({ issueId: nodeIdValue, archived: z.literal(true) }),
66
- });
@@ -1,67 +0,0 @@
1
- export declare const project_contains_issue: 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: "project";
8
- readonly outgoing: "0..*";
9
- };
10
- readonly target: {
11
- readonly as: "issue";
12
- readonly incoming: "1";
13
- };
14
- readonly constraints: Record<never, never>;
15
- readonly effectiveProperties: never;
16
- }>;
17
- export declare const issue_reported_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: "reporter";
24
- readonly outgoing: "0..*";
25
- };
26
- readonly target: {
27
- readonly as: "issue";
28
- readonly incoming: "1";
29
- };
30
- readonly constraints: Record<never, never>;
31
- readonly effectiveProperties: never;
32
- }>;
33
- export declare const issue_assigned_to: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
34
- readonly depth: 0;
35
- readonly abstract: false;
36
- readonly extends: readonly [];
37
- readonly properties: never;
38
- readonly source: {
39
- readonly as: "assignee";
40
- readonly outgoing: "0..*";
41
- };
42
- readonly target: {
43
- readonly as: "issue";
44
- readonly incoming: "0..1";
45
- };
46
- readonly constraints: Record<never, never>;
47
- readonly effectiveProperties: never;
48
- }>;
49
- export declare const issue_subtask_of: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
50
- readonly depth: 0;
51
- readonly abstract: false;
52
- readonly extends: readonly [];
53
- readonly properties: never;
54
- readonly source: {
55
- readonly as: "child";
56
- readonly outgoing: "0..1";
57
- };
58
- readonly target: {
59
- readonly as: "parent";
60
- readonly incoming: "0..*";
61
- };
62
- readonly constraints: {
63
- readonly noSelf: true;
64
- readonly acyclic: true;
65
- };
66
- readonly effectiveProperties: never;
67
- }>;
@@ -1,29 +0,0 @@
1
- import { K, edgeClass } from '@astrale-os/sdk/schema';
2
- import { Project, TraverseProjectIssue } from '../project/index.js';
3
- import { Issue } from './class.js';
4
- import { TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, } from './traverse-issue-relationship-policy.js';
5
- export const project_contains_issue = edgeClass.directed({
6
- description: 'One Project contains and numbers one Issue.',
7
- source: { as: 'project', accepts: [() => Project], outgoing: '0..*' },
8
- target: { as: 'issue', accepts: [() => Issue], incoming: '1' },
9
- policies: { traverse: () => TraverseProjectIssue },
10
- });
11
- export const issue_reported_by = edgeClass.directed({
12
- description: 'The immutable reporter of one Issue.',
13
- source: { as: 'reporter', accepts: [K.classes.Identity], outgoing: '0..*' },
14
- target: { as: 'issue', accepts: [() => Issue], incoming: '1' },
15
- policies: { traverse: () => TraverseIssueReporter },
16
- });
17
- export const issue_assigned_to = edgeClass.directed({
18
- description: 'The optional current assignee of one Issue.',
19
- source: { as: 'assignee', accepts: [K.classes.Identity], outgoing: '0..*' },
20
- target: { as: 'issue', accepts: [() => Issue], incoming: '0..1' },
21
- policies: { traverse: () => TraverseIssueAssignee },
22
- });
23
- export const issue_subtask_of = edgeClass.directed({
24
- description: 'One Issue is an acyclic subtask of at most one Issue in the same Project.',
25
- source: { as: 'child', accepts: [() => Issue], outgoing: '0..1' },
26
- target: { as: 'parent', accepts: [() => Issue], incoming: '0..*' },
27
- constraints: { noSelf: true, acyclic: true },
28
- policies: { traverse: () => TraverseIssueParent },
29
- });
@@ -1,5 +0,0 @@
1
- export declare const TraverseIssueReporter: import("@astrale-os/sdk/schema").Policy;
2
- export declare const TraverseIssueAssignee: import("@astrale-os/sdk/schema").Policy;
3
- export declare const TraverseIssueParent: import("@astrale-os/sdk/schema").Policy;
4
- export declare const TraverseIssueComment: import("@astrale-os/sdk/schema").Policy;
5
- export declare const TraverseIssueTag: import("@astrale-os/sdk/schema").Policy;
@@ -1,55 +0,0 @@
1
- import { policy } from '@astrale-os/sdk/schema';
2
- import { issue_has_comment } from '../comment/index.js';
3
- import { Project, project_has_member, project_owned_by } from '../project/index.js';
4
- import { issue_tagged_with } from '../tag/index.js';
5
- import { issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './relationships.js';
6
- export const TraverseIssueReporter = policy({
7
- description: 'Issue reporter relationships are visible only inside the containing Project.',
8
- match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
9
- const project = node(() => Project);
10
- return allOf(edge({ source, class: () => issue_reported_by, target }), edge({ source: project, class: () => project_contains_issue, target }), edge({ source: subject, class: () => project_owned_by, target: project }));
11
- }), exists(({ node }) => {
12
- const project = node(() => Project);
13
- return allOf(edge({ source, class: () => issue_reported_by, target }), edge({ source: project, class: () => project_contains_issue, target }), edge({ source: subject, class: () => project_has_member, target: project }));
14
- })),
15
- });
16
- export const TraverseIssueAssignee = policy({
17
- description: 'Issue assignment relationships are visible only inside the containing Project.',
18
- match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
19
- const project = node(() => Project);
20
- return allOf(edge({ source, class: () => issue_assigned_to, target }), edge({ source: project, class: () => project_contains_issue, target }), edge({ source: subject, class: () => project_owned_by, target: project }));
21
- }), exists(({ node }) => {
22
- const project = node(() => Project);
23
- return allOf(edge({ source, class: () => issue_assigned_to, target }), edge({ source: project, class: () => project_contains_issue, target }), edge({ source: subject, class: () => project_has_member, target: project }));
24
- })),
25
- });
26
- export const TraverseIssueParent = policy({
27
- description: 'Issue parent relationships are visible only inside the containing Project.',
28
- match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
29
- const project = node(() => Project);
30
- return allOf(edge({ source, class: () => issue_subtask_of, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_owned_by, target: project }));
31
- }), exists(({ node }) => {
32
- const project = node(() => Project);
33
- return allOf(edge({ source, class: () => issue_subtask_of, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_has_member, target: project }));
34
- })),
35
- });
36
- export const TraverseIssueComment = policy({
37
- description: 'Issue Comment containment is visible only inside the containing Project.',
38
- match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
39
- const project = node(() => Project);
40
- 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 }));
41
- }), exists(({ node }) => {
42
- const project = node(() => Project);
43
- 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 }));
44
- })),
45
- });
46
- export const TraverseIssueTag = policy({
47
- description: 'Issue Tag relationships are visible only inside the containing Project.',
48
- match: ({ allOf, anyOf, edge, exists, source, subject, target }) => anyOf(exists(({ node }) => {
49
- const project = node(() => Project);
50
- return allOf(edge({ source, class: () => issue_tagged_with, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_owned_by, target: project }));
51
- }), exists(({ node }) => {
52
- const project = node(() => Project);
53
- return allOf(edge({ source, class: () => issue_tagged_with, target }), edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: subject, class: () => project_has_member, target: project }));
54
- })),
55
- });
@@ -1,27 +0,0 @@
1
- import { K, nodeClass, property } from '@astrale-os/sdk/schema';
2
- import { z } from 'zod';
3
- import { nodeIdValue } from '../value/index.js';
4
- import { ContributeToProject } from './contribute-to-project-policy.js';
5
- import { addProjectMemberMethod, archiveProjectMethod, createProjectIssueMethod, createProjectMethod, createProjectTagMethod, removeProjectMemberMethod, updateProjectMethod, } from './methods.js';
6
- export const Project = nodeClass({
7
- description: 'A collaborative namespace for numbered Issues, Tags, and membership.',
8
- icon: 'folder-kanban',
9
- extends: [K.classes.Named, K.classes.Descriptable, K.classes.Timestamped],
10
- properties: {
11
- key: z.string().min(2).max(10),
12
- ownerId: property(nodeIdValue, { visibility: 'private' }),
13
- memberIds: property(z.array(nodeIdValue).max(256), { visibility: 'private' }),
14
- nextIssueNumber: property(z.number().int().min(1), { visibility: 'private' }),
15
- archived: z.boolean(),
16
- },
17
- methods: {
18
- create: createProjectMethod,
19
- update: updateProjectMethod,
20
- addMember: addProjectMemberMethod,
21
- removeMember: removeProjectMemberMethod,
22
- createIssue: createProjectIssueMethod,
23
- createTag: createProjectTagMethod,
24
- archive: archiveProjectMethod,
25
- },
26
- policies: { read: () => ContributeToProject },
27
- });
@@ -1,5 +0,0 @@
1
- export { Project } from './class.js';
2
- export { ContributeToProject } from './contribute-to-project-policy.js';
3
- export { ManageProject } from './manage-project-policy.js';
4
- export { project_has_member, project_owned_by } from './relationships.js';
5
- export { TraverseProjectIssue, TraverseProjectMember, TraverseProjectOwner, TraverseProjectTag, } from './traverse-project-relationship-policy.js';
@@ -1,5 +0,0 @@
1
- export { Project } from './class.js';
2
- export { ContributeToProject } from './contribute-to-project-policy.js';
3
- export { ManageProject } from './manage-project-policy.js';
4
- export { project_has_member, project_owned_by } from './relationships.js';
5
- export { TraverseProjectIssue, TraverseProjectMember, TraverseProjectOwner, TraverseProjectTag, } from './traverse-project-relationship-policy.js';
@@ -1,68 +0,0 @@
1
- import { method } from '@astrale-os/sdk/schema';
2
- import { z } from 'zod';
3
- import { issueValue, membershipChangeValue, nodeIdValue, projectValue, tagValue, } from '../value/index.js';
4
- import { ContributeToProject } from './contribute-to-project-policy.js';
5
- import { ManageProject } from './manage-project-policy.js';
6
- export const createProjectMethod = method({
7
- description: 'Create one Project owned by the authenticated caller.',
8
- static: true,
9
- auth: 'authenticated',
10
- input: z.strictObject({
11
- key: z.string().min(1).max(40),
12
- name: z.string().min(1).max(120),
13
- description: z.string().max(5_000).optional(),
14
- }),
15
- output: projectValue,
16
- });
17
- export const updateProjectMethod = method({
18
- description: 'Update mutable Project metadata.',
19
- auth: 'authorized',
20
- policy: ({ check, self }) => check(ManageProject, self),
21
- input: z.strictObject({
22
- name: z.string().min(1).max(120).optional(),
23
- description: z.string().max(5_000).optional(),
24
- }),
25
- output: projectValue,
26
- });
27
- export const addProjectMemberMethod = method({
28
- description: 'Add one Identity as a Project member.',
29
- auth: 'authorized',
30
- policy: ({ check, self }) => check(ManageProject, self),
31
- input: z.strictObject({ memberId: nodeIdValue }),
32
- output: membershipChangeValue,
33
- });
34
- export const removeProjectMemberMethod = method({
35
- description: 'Remove one unassigned Identity from Project membership.',
36
- auth: 'authorized',
37
- policy: ({ check, self }) => check(ManageProject, self),
38
- input: z.strictObject({ memberId: nodeIdValue }),
39
- output: membershipChangeValue,
40
- });
41
- export const createProjectIssueMethod = method({
42
- description: 'Create one atomically numbered Issue in this Project.',
43
- auth: 'authorized',
44
- policy: ({ check, self }) => check(ContributeToProject, self),
45
- input: z.strictObject({
46
- title: z.string().min(1).max(200),
47
- description: z.string().max(50_000).optional(),
48
- priority: z.number().int().min(0).max(4).optional(),
49
- }),
50
- output: issueValue,
51
- });
52
- export const createProjectTagMethod = method({
53
- description: 'Create one Project-local Tag.',
54
- auth: 'authorized',
55
- policy: ({ check, self }) => check(ManageProject, self),
56
- input: z.strictObject({
57
- name: z.string().min(1).max(64),
58
- color: z.string().optional(),
59
- }),
60
- output: tagValue,
61
- });
62
- export const archiveProjectMethod = method({
63
- description: 'Archive this Project without deleting its aggregate.',
64
- auth: 'authorized',
65
- policy: ({ check, self }) => check(ManageProject, self),
66
- input: z.strictObject({}),
67
- output: z.strictObject({ projectId: nodeIdValue, archived: z.literal(true) }),
68
- });
@@ -1,15 +0,0 @@
1
- import { K, edgeClass } from '@astrale-os/sdk/schema';
2
- import { Project } from './class.js';
3
- import { TraverseProjectMember, TraverseProjectOwner, } from './traverse-project-relationship-policy.js';
4
- export const project_owned_by = edgeClass.directed({
5
- description: 'The exact Identity that owns and administers one Project.',
6
- source: { as: 'owner', accepts: [K.classes.Identity], outgoing: '0..*' },
7
- target: { as: 'project', accepts: [() => Project], incoming: '1' },
8
- policies: { traverse: () => TraverseProjectOwner },
9
- });
10
- export const project_has_member = edgeClass.directed({
11
- description: 'An Identity admitted to collaborate in one Project.',
12
- source: { as: 'member', accepts: [K.classes.Identity], outgoing: '0..*' },
13
- target: { as: 'project', accepts: [() => Project], incoming: '0..*' },
14
- policies: { traverse: () => TraverseProjectMember },
15
- });
@@ -1,4 +0,0 @@
1
- export declare const TraverseProjectOwner: import("@astrale-os/sdk/schema").Policy;
2
- export declare const TraverseProjectMember: import("@astrale-os/sdk/schema").Policy;
3
- export declare const TraverseProjectIssue: import("@astrale-os/sdk/schema").Policy;
4
- export declare const TraverseProjectTag: import("@astrale-os/sdk/schema").Policy;