@astrale-domains/issues 0.3.2 → 0.3.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 (35) hide show
  1. package/README.md +40 -9
  2. package/dist/schema/index.d.ts +2 -1
  3. package/dist/schema/index.js +2 -1
  4. package/dist/schema/modules/comment/classes/comment.d.ts +1 -1
  5. package/dist/schema/modules/issue/classes/index.d.ts +1 -0
  6. package/dist/schema/modules/issue/classes/index.js +1 -0
  7. package/dist/schema/modules/issue/classes/issue-duplicate-candidate.d.ts +18 -0
  8. package/dist/schema/modules/issue/classes/issue-duplicate-candidate.js +10 -0
  9. package/dist/schema/modules/issue/classes/issue.d.ts +41 -2
  10. package/dist/schema/modules/issue/classes/issue.js +4 -0
  11. package/dist/schema/modules/issue/index.d.ts +3 -3
  12. package/dist/schema/modules/issue/index.js +3 -3
  13. package/dist/schema/modules/issue/policies/index.d.ts +1 -0
  14. package/dist/schema/modules/issue/policies/index.js +1 -0
  15. package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.d.ts +1 -0
  16. package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.js +10 -0
  17. package/dist/schema/modules/issue/types/index.d.ts +1 -0
  18. package/dist/schema/modules/issue/types/index.js +1 -0
  19. package/dist/schema/modules/issue/types/report.d.ts +207 -0
  20. package/dist/schema/modules/issue/types/report.js +56 -0
  21. package/dist/schema/modules/project/classes/project.d.ts +103 -3
  22. package/dist/schema/modules/project/classes/project.js +6 -0
  23. package/dist/schema/modules/project/functions/complete-project-report.d.ts +10 -0
  24. package/dist/schema/modules/project/functions/complete-project-report.js +11 -0
  25. package/dist/schema/modules/project/functions/index.d.ts +3 -0
  26. package/dist/schema/modules/project/functions/index.js +3 -0
  27. package/dist/schema/modules/project/functions/list-project-reports.d.ts +49 -0
  28. package/dist/schema/modules/project/functions/list-project-reports.js +14 -0
  29. package/dist/schema/modules/project/functions/receive-project-report.d.ts +41 -0
  30. package/dist/schema/modules/project/functions/receive-project-report.js +10 -0
  31. package/dist/schema/modules/tag/classes/tag.d.ts +2 -2
  32. package/dist/schema/schema.d.ts +166 -8
  33. package/dist/schema/schema.js +3 -1
  34. package/package.json +8 -8
  35. package/CHANGELOG.md +0 -181
@@ -5,9 +5,9 @@ export declare const Project: import("@astrale-os/sdk/schema").AuthoredNodeClass
5
5
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
6
6
  readonly properties: {
7
7
  key: z.ZodString;
8
- ownerId: import("@astrale-os/sdk/schema").Property<z.ZodString, {}, never>;
9
- memberIds: import("@astrale-os/sdk/schema").Property<z.ZodArray<z.ZodString>, {}, never>;
10
- nextIssueNumber: import("@astrale-os/sdk/schema").Property<z.ZodNumber, {}, never>;
8
+ ownerId: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodString, {}>;
9
+ memberIds: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodArray<z.ZodString>, {}>;
10
+ nextIssueNumber: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodNumber, {}>;
11
11
  archived: z.ZodBoolean;
12
12
  };
13
13
  readonly methods: {
@@ -99,6 +99,106 @@ export declare const Project: import("@astrale-os/sdk/schema").AuthoredNodeClass
99
99
  archived: boolean;
100
100
  };
101
101
  }, "authorized", false, false>>;
102
+ receiveReport: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
103
+ title: string;
104
+ body: string;
105
+ context?: {
106
+ observedAt: string;
107
+ cli: {
108
+ version: string;
109
+ platform: string;
110
+ arch: string;
111
+ };
112
+ runtime: {
113
+ node: string;
114
+ bun?: string | undefined;
115
+ };
116
+ project?: {
117
+ name: string;
118
+ version?: string | undefined;
119
+ packages: {
120
+ name: string;
121
+ declared?: string | undefined;
122
+ version?: string | undefined;
123
+ source: "installed" | "local" | "unresolved";
124
+ commit?: string | undefined;
125
+ dirty?: boolean | undefined;
126
+ }[];
127
+ } | undefined;
128
+ instance?: {
129
+ name: string;
130
+ issuer?: string | undefined;
131
+ url?: string | undefined;
132
+ } | undefined;
133
+ } | undefined;
134
+ requestId: string;
135
+ reporterId: string;
136
+ }, {
137
+ readonly mode: 'value';
138
+ readonly value: {
139
+ id: string;
140
+ reference: string;
141
+ };
142
+ }, "authorized", false, false>>;
143
+ listReports: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
144
+ pending?: boolean | undefined;
145
+ cursor?: string | undefined;
146
+ }, {
147
+ readonly mode: 'value';
148
+ readonly value: {
149
+ reports: {
150
+ id: string;
151
+ reference: string;
152
+ reporterId: string;
153
+ content: {
154
+ title: string;
155
+ body: string;
156
+ context?: {
157
+ observedAt: string;
158
+ cli: {
159
+ version: string;
160
+ platform: string;
161
+ arch: string;
162
+ };
163
+ runtime: {
164
+ node: string;
165
+ bun?: string | undefined;
166
+ };
167
+ project?: {
168
+ name: string;
169
+ version?: string | undefined;
170
+ packages: {
171
+ name: string;
172
+ declared?: string | undefined;
173
+ version?: string | undefined;
174
+ source: "installed" | "local" | "unresolved";
175
+ commit?: string | undefined;
176
+ dirty?: boolean | undefined;
177
+ }[];
178
+ } | undefined;
179
+ instance?: {
180
+ name: string;
181
+ issuer?: string | undefined;
182
+ url?: string | undefined;
183
+ } | undefined;
184
+ } | undefined;
185
+ };
186
+ pending: boolean;
187
+ receivedAt: string;
188
+ }[];
189
+ cursor?: string | undefined;
190
+ };
191
+ }, "authorized", false, false>>;
192
+ completeReport: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
193
+ issueId: string;
194
+ duplicateCandidateId?: string | undefined;
195
+ }, {
196
+ readonly mode: 'value';
197
+ readonly value: {
198
+ issueId: string;
199
+ changed: boolean;
200
+ };
201
+ }, "authorized", false, false>>;
102
202
  createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
103
203
  name: string;
104
204
  color?: string | undefined;
@@ -4,10 +4,13 @@ import { z } from 'zod';
4
4
  import { nodeIdValue } from '../../../types/index.js';
5
5
  import { addProjectMemberMethod } from '../functions/add-project-member.js';
6
6
  import { archiveProjectMethod } from '../functions/archive-project.js';
7
+ import { completeProjectReportMethod } from '../functions/complete-project-report.js';
7
8
  import { createProjectIssueMethod } from '../functions/create-project-issue.js';
8
9
  import { createProjectTagMethod } from '../functions/create-project-tag.js';
9
10
  import { createProjectMethod } from '../functions/create-project.js';
11
+ import { listProjectReportsMethod } from '../functions/list-project-reports.js';
10
12
  import { listProjectsMethod } from '../functions/list-projects.js';
13
+ import { receiveProjectReportMethod } from '../functions/receive-project-report.js';
11
14
  import { removeProjectMemberMethod } from '../functions/remove-project-member.js';
12
15
  import { updateProjectMethod } from '../functions/update-project.js';
13
16
  import { ContributeToProject } from '../policies/contribute-to-project.js';
@@ -29,6 +32,9 @@ export const Project = nodeClass({
29
32
  addMember: addProjectMemberMethod,
30
33
  removeMember: removeProjectMemberMethod,
31
34
  createIssue: createProjectIssueMethod,
35
+ receiveReport: receiveProjectReportMethod,
36
+ listReports: listProjectReportsMethod,
37
+ completeReport: completeProjectReportMethod,
32
38
  createTag: createProjectTagMethod,
33
39
  archive: archiveProjectMethod,
34
40
  },
@@ -0,0 +1,10 @@
1
+ export declare const completeProjectReportMethod: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
+ issueId: string;
3
+ duplicateCandidateId?: string | undefined;
4
+ }, {
5
+ readonly mode: 'value';
6
+ readonly value: {
7
+ issueId: string;
8
+ changed: boolean;
9
+ };
10
+ }, "authorized", false, false>>;
@@ -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 { ManageProject } from '../policies/manage-project.js';
5
+ export const completeProjectReportMethod = method({
6
+ description: 'Confirm report processing once, optionally adding one duplicate candidate without editing original evidence or human triage.',
7
+ auth: 'authorized',
8
+ policy: ({ check, self }) => check(ManageProject, self),
9
+ input: z.strictObject({ issueId: nodeIdValue, duplicateCandidateId: nodeIdValue.optional() }),
10
+ output: z.strictObject({ issueId: nodeIdValue, changed: z.boolean() }),
11
+ });
@@ -6,3 +6,6 @@ export { createProjectMethod } from './create-project.js';
6
6
  export { listProjectsMethod } from './list-projects.js';
7
7
  export { removeProjectMemberMethod } from './remove-project-member.js';
8
8
  export { updateProjectMethod } from './update-project.js';
9
+ export { receiveProjectReportMethod } from './receive-project-report.js';
10
+ export { listProjectReportsMethod } from './list-project-reports.js';
11
+ export { completeProjectReportMethod } from './complete-project-report.js';
@@ -6,3 +6,6 @@ export { createProjectMethod } from './create-project.js';
6
6
  export { listProjectsMethod } from './list-projects.js';
7
7
  export { removeProjectMemberMethod } from './remove-project-member.js';
8
8
  export { updateProjectMethod } from './update-project.js';
9
+ export { receiveProjectReportMethod } from './receive-project-report.js';
10
+ export { listProjectReportsMethod } from './list-project-reports.js';
11
+ export { completeProjectReportMethod } from './complete-project-report.js';
@@ -0,0 +1,49 @@
1
+ export declare const listProjectReportsMethod: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
+ pending?: boolean | undefined;
3
+ cursor?: string | undefined;
4
+ }, {
5
+ readonly mode: 'value';
6
+ readonly value: {
7
+ reports: {
8
+ id: string;
9
+ reference: string;
10
+ reporterId: string;
11
+ content: {
12
+ title: string;
13
+ body: string;
14
+ context?: {
15
+ observedAt: string;
16
+ cli: {
17
+ version: string;
18
+ platform: string;
19
+ arch: string;
20
+ };
21
+ runtime: {
22
+ node: string;
23
+ bun?: string | undefined;
24
+ };
25
+ project?: {
26
+ name: string;
27
+ version?: string | undefined;
28
+ packages: {
29
+ name: string;
30
+ declared?: string | undefined;
31
+ version?: string | undefined;
32
+ source: "installed" | "local" | "unresolved";
33
+ commit?: string | undefined;
34
+ dirty?: boolean | undefined;
35
+ }[];
36
+ } | undefined;
37
+ instance?: {
38
+ name: string;
39
+ issuer?: string | undefined;
40
+ url?: string | undefined;
41
+ } | undefined;
42
+ } | undefined;
43
+ };
44
+ pending: boolean;
45
+ receivedAt: string;
46
+ }[];
47
+ cursor?: string | undefined;
48
+ };
49
+ }, "authorized", false, false>>;
@@ -0,0 +1,14 @@
1
+ import { method } from '@astrale-os/sdk/schema';
2
+ import { z } from 'zod';
3
+ import { reportPageValue } from '../../issue/index.js';
4
+ import { ManageProject } from '../policies/manage-project.js';
5
+ export const listProjectReportsMethod = method({
6
+ description: 'Read one bounded page of original reports for this Project owner; resume the returned cursor with the same pending filter.',
7
+ auth: 'authorized',
8
+ policy: ({ check, self }) => check(ManageProject, self),
9
+ input: z.strictObject({
10
+ pending: z.boolean().optional(),
11
+ cursor: z.string().max(16_384).optional(),
12
+ }),
13
+ output: reportPageValue,
14
+ });
@@ -0,0 +1,41 @@
1
+ export declare const receiveProjectReportMethod: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
+ title: string;
3
+ body: string;
4
+ context?: {
5
+ observedAt: string;
6
+ cli: {
7
+ version: string;
8
+ platform: string;
9
+ arch: string;
10
+ };
11
+ runtime: {
12
+ node: string;
13
+ bun?: string | undefined;
14
+ };
15
+ project?: {
16
+ name: string;
17
+ version?: string | undefined;
18
+ packages: {
19
+ name: string;
20
+ declared?: string | undefined;
21
+ version?: string | undefined;
22
+ source: "installed" | "local" | "unresolved";
23
+ commit?: string | undefined;
24
+ dirty?: boolean | undefined;
25
+ }[];
26
+ } | undefined;
27
+ instance?: {
28
+ name: string;
29
+ issuer?: string | undefined;
30
+ url?: string | undefined;
31
+ } | undefined;
32
+ } | undefined;
33
+ requestId: string;
34
+ reporterId: string;
35
+ }, {
36
+ readonly mode: 'value';
37
+ readonly value: {
38
+ id: string;
39
+ reference: string;
40
+ };
41
+ }, "authorized", false, false>>;
@@ -0,0 +1,10 @@
1
+ import { method } from '@astrale-os/sdk/schema';
2
+ import { receiveReportInput, reportReceiptValue } from '../../issue/index.js';
3
+ import { ManageProject } from '../policies/manage-project.js';
4
+ export const receiveProjectReportMethod = method({
5
+ description: 'Receive an idempotent report from a trusted Project owner integration, attributing its verified reporter without granting Project membership.',
6
+ auth: 'authorized',
7
+ policy: ({ check, self }) => check(ManageProject, self),
8
+ input: receiveReportInput,
9
+ output: reportReceiptValue,
10
+ });
@@ -5,9 +5,9 @@ export declare const Tag: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
5
5
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
6
6
  readonly properties: {
7
7
  slug: z.ZodString;
8
- color: import("@astrale-os/sdk/schema").Property<z.ZodString, {
8
+ color: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodString, {
9
9
  readonly required: false;
10
- }, never>;
10
+ }>;
11
11
  };
12
12
  readonly methods: {
13
13
  edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -8,9 +8,9 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
8
8
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
9
9
  readonly properties: {
10
10
  key: import("zod").ZodString;
11
- ownerId: import("@astrale-os/sdk/schema").Property<import("zod").ZodString, {}, never>;
12
- memberIds: import("@astrale-os/sdk/schema").Property<import("zod").ZodArray<import("zod").ZodString>, {}, never>;
13
- nextIssueNumber: import("@astrale-os/sdk/schema").Property<import("zod").ZodNumber, {}, never>;
11
+ ownerId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {}>;
12
+ memberIds: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodArray<import("zod").ZodString>, {}>;
13
+ nextIssueNumber: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodNumber, {}>;
14
14
  archived: import("zod").ZodBoolean;
15
15
  };
16
16
  readonly methods: {
@@ -102,6 +102,106 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
102
102
  archived: boolean;
103
103
  };
104
104
  }, "authorized", false, false>>;
105
+ receiveReport: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
106
+ title: string;
107
+ body: string;
108
+ context?: {
109
+ observedAt: string;
110
+ cli: {
111
+ version: string;
112
+ platform: string;
113
+ arch: string;
114
+ };
115
+ runtime: {
116
+ node: string;
117
+ bun?: string | undefined;
118
+ };
119
+ project?: {
120
+ name: string;
121
+ version?: string | undefined;
122
+ packages: {
123
+ name: string;
124
+ declared?: string | undefined;
125
+ version?: string | undefined;
126
+ source: "installed" | "local" | "unresolved";
127
+ commit?: string | undefined;
128
+ dirty?: boolean | undefined;
129
+ }[];
130
+ } | undefined;
131
+ instance?: {
132
+ name: string;
133
+ issuer?: string | undefined;
134
+ url?: string | undefined;
135
+ } | undefined;
136
+ } | undefined;
137
+ requestId: string;
138
+ reporterId: string;
139
+ }, {
140
+ readonly mode: 'value';
141
+ readonly value: {
142
+ id: string;
143
+ reference: string;
144
+ };
145
+ }, "authorized", false, false>>;
146
+ listReports: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
147
+ pending?: boolean | undefined;
148
+ cursor?: string | undefined;
149
+ }, {
150
+ readonly mode: 'value';
151
+ readonly value: {
152
+ reports: {
153
+ id: string;
154
+ reference: string;
155
+ reporterId: string;
156
+ content: {
157
+ title: string;
158
+ body: string;
159
+ context?: {
160
+ observedAt: string;
161
+ cli: {
162
+ version: string;
163
+ platform: string;
164
+ arch: string;
165
+ };
166
+ runtime: {
167
+ node: string;
168
+ bun?: string | undefined;
169
+ };
170
+ project?: {
171
+ name: string;
172
+ version?: string | undefined;
173
+ packages: {
174
+ name: string;
175
+ declared?: string | undefined;
176
+ version?: string | undefined;
177
+ source: "installed" | "local" | "unresolved";
178
+ commit?: string | undefined;
179
+ dirty?: boolean | undefined;
180
+ }[];
181
+ } | undefined;
182
+ instance?: {
183
+ name: string;
184
+ issuer?: string | undefined;
185
+ url?: string | undefined;
186
+ } | undefined;
187
+ } | undefined;
188
+ };
189
+ pending: boolean;
190
+ receivedAt: string;
191
+ }[];
192
+ cursor?: string | undefined;
193
+ };
194
+ }, "authorized", false, false>>;
195
+ completeReport: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
196
+ issueId: string;
197
+ duplicateCandidateId?: string | undefined;
198
+ }, {
199
+ readonly mode: 'value';
200
+ readonly value: {
201
+ issueId: string;
202
+ changed: boolean;
203
+ };
204
+ }, "authorized", false, false>>;
105
205
  createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
106
206
  name: string;
107
207
  color?: string | undefined;
@@ -132,8 +232,8 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
132
232
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
133
233
  readonly properties: {
134
234
  reference: import("zod").ZodString;
135
- reporterId: import("@astrale-os/sdk/schema").Property<import("zod").ZodString, {}, never>;
136
- assigneeId: import("@astrale-os/sdk/schema").Property<import("zod").ZodOptional<import("zod").ZodString>, {}, never>;
235
+ reporterId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {}>;
236
+ assigneeId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodString>, {}>;
137
237
  status: import("@astrale-os/sdk/schema").StateProperty<import("@astrale-os/sdk/schema").StateMachine<{
138
238
  readonly open: {
139
239
  readonly accept: "accepted";
@@ -163,6 +263,45 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
163
263
  }>;
164
264
  priority: import("zod").ZodNumber;
165
265
  archived: import("zod").ZodBoolean;
266
+ reportRequestId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodString>, {}>;
267
+ report: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodObject<{
268
+ title: import("zod").ZodString;
269
+ body: import("zod").ZodString;
270
+ context: import("zod").ZodOptional<import("zod").ZodObject<{
271
+ observedAt: import("zod").ZodString;
272
+ cli: import("zod").ZodObject<{
273
+ version: import("zod").ZodString;
274
+ platform: import("zod").ZodString;
275
+ arch: import("zod").ZodString;
276
+ }, import("zod/v4/core").$strict>;
277
+ runtime: import("zod").ZodObject<{
278
+ node: import("zod").ZodString;
279
+ bun: import("zod").ZodOptional<import("zod").ZodString>;
280
+ }, import("zod/v4/core").$strict>;
281
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
282
+ name: import("zod").ZodString;
283
+ version: import("zod").ZodOptional<import("zod").ZodString>;
284
+ packages: import("zod").ZodArray<import("zod").ZodObject<{
285
+ name: import("zod").ZodString;
286
+ declared: import("zod").ZodOptional<import("zod").ZodString>;
287
+ version: import("zod").ZodOptional<import("zod").ZodString>;
288
+ source: import("zod").ZodEnum<{
289
+ installed: "installed";
290
+ local: "local";
291
+ unresolved: "unresolved";
292
+ }>;
293
+ commit: import("zod").ZodOptional<import("zod").ZodString>;
294
+ dirty: import("zod").ZodOptional<import("zod").ZodBoolean>;
295
+ }, import("zod/v4/core").$strict>>;
296
+ }, import("zod/v4/core").$strict>>;
297
+ instance: import("zod").ZodOptional<import("zod").ZodObject<{
298
+ name: import("zod").ZodString;
299
+ issuer: import("zod").ZodOptional<import("zod").ZodString>;
300
+ url: import("zod").ZodOptional<import("zod").ZodString>;
301
+ }, import("zod/v4/core").$strict>>;
302
+ }, import("zod/v4/core").$strict>>;
303
+ }, import("zod/v4/core").$strict>>, {}>;
304
+ reportPending: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodBoolean>, {}>;
166
305
  };
167
306
  readonly methods: {
168
307
  update: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -257,7 +396,7 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
257
396
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
258
397
  readonly properties: {
259
398
  body: import("zod").ZodString;
260
- authorId: import("@astrale-os/sdk/schema").Property<import("zod").ZodString, {}, never>;
399
+ authorId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {}>;
261
400
  };
262
401
  readonly methods: {
263
402
  edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -287,9 +426,9 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
287
426
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
288
427
  readonly properties: {
289
428
  slug: import("zod").ZodString;
290
- color: import("@astrale-os/sdk/schema").Property<import("zod").ZodString, {
429
+ color: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {
291
430
  readonly required: false;
292
- }, never>;
431
+ }>;
293
432
  };
294
433
  readonly methods: {
295
434
  edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -415,6 +554,24 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
415
554
  };
416
555
  readonly effectiveProperties: never;
417
556
  }>;
557
+ readonly issue_duplicate_candidate: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
558
+ readonly depth: 0;
559
+ readonly abstract: false;
560
+ readonly extends: readonly [];
561
+ readonly properties: never;
562
+ readonly source: {
563
+ readonly as: "report";
564
+ readonly outgoing: "0..*";
565
+ };
566
+ readonly target: {
567
+ readonly as: "candidate";
568
+ readonly incoming: "0..*";
569
+ };
570
+ readonly constraints: {
571
+ readonly noSelf: true;
572
+ };
573
+ readonly effectiveProperties: never;
574
+ }>;
418
575
  readonly issue_has_comment: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
419
576
  readonly depth: 0;
420
577
  readonly abstract: false;
@@ -483,6 +640,7 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
483
640
  readonly policies: {
484
641
  readonly ManageProject: import("@astrale-os/sdk/schema").Policy;
485
642
  readonly ContributeToProject: import("@astrale-os/sdk/schema").Policy;
643
+ readonly TraverseDuplicateCandidate: import("@astrale-os/sdk/schema").Policy;
486
644
  readonly ContributeToIssue: import("@astrale-os/sdk/schema").Policy;
487
645
  readonly ContributeToTag: import("@astrale-os/sdk/schema").Policy;
488
646
  readonly ManageTag: import("@astrale-os/sdk/schema").Policy;
@@ -1,6 +1,6 @@
1
1
  import { KernelSchema, defineSchema, view } from '@astrale-os/sdk/schema';
2
2
  import { Comment, comment_authored_by, issue_has_comment, ContributeToComment, EditOwnComment, TraverseCommentRelationship, TraverseIssueComment, } from './modules/comment/index.js';
3
- import { Issue, ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
3
+ import { Issue, issue_duplicate_candidate, TraverseDuplicateCandidate, ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
4
4
  import { Project, ContributeToProject, ManageProject, TraverseProjectMember, TraverseProjectOwner, project_has_member, project_owned_by, } from './modules/project/index.js';
5
5
  import { Tag, ContributeToTag, ManageTag, TraverseIssueTag, TraverseProjectTag, issue_tagged_with, project_contains_tag, } from './modules/tag/index.js';
6
6
  const origin = 'issues.astrale.ai';
@@ -15,6 +15,7 @@ const classes = {
15
15
  issue_reported_by,
16
16
  issue_assigned_to,
17
17
  issue_subtask_of,
18
+ issue_duplicate_candidate,
18
19
  issue_has_comment,
19
20
  comment_authored_by,
20
21
  project_contains_tag,
@@ -23,6 +24,7 @@ const classes = {
23
24
  const policies = {
24
25
  ManageProject,
25
26
  ContributeToProject,
27
+ TraverseDuplicateCandidate,
26
28
  ContributeToIssue,
27
29
  ContributeToTag,
28
30
  ManageTag,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-domains/issues",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/astrale-os/domains.git",
@@ -28,15 +28,15 @@
28
28
  "registry": "https://registry.npmjs.org/"
29
29
  },
30
30
  "dependencies": {
31
- "@astrale-os/sdk": "0.5.0-beta.128",
31
+ "@astrale-os/sdk": "0.6.0-beta.0",
32
32
  "zod": "4.4.3"
33
33
  },
34
34
  "devDependencies": {
35
- "@astrale-os/adapter-cloudflare": "0.5.0-beta.131",
35
+ "@astrale-os/adapter-cloudflare": "0.5.0-beta.155",
36
36
  "@astrale-os/ox": ">=0.1.4 <1.0.0",
37
- "@astrale-os/shell": "0.5.0-beta.16",
38
- "@astrale-os/shell-react": "0.4.0-beta.15",
39
- "@astrale-os/ui": "0.3.0-beta.25",
37
+ "@astrale-os/shell": "0.6.0-beta.3",
38
+ "@astrale-os/shell-react": "0.5.0-beta.3",
39
+ "@astrale-os/ui": "0.3.0-beta.31",
40
40
  "@tailwindcss/vite": "^4.3.3",
41
41
  "@tanstack/react-router": "1.170.18",
42
42
  "@tanstack/router-plugin": "1.168.23",
@@ -46,7 +46,7 @@
46
46
  "@types/react": "^19.2.18",
47
47
  "@types/react-dom": "^19.2.4",
48
48
  "@vitejs/plugin-react": "^6.1.0",
49
- "bun": "1.4.0",
49
+ "bun": "1.4.2",
50
50
  "jsdom": "30.0.1",
51
51
  "mermaid": "^11.17.0",
52
52
  "oxlint": ">=1.79.0 <2.0.0",
@@ -58,7 +58,7 @@
58
58
  "type-fest": "^5.8.0",
59
59
  "typescript": "7.0.2",
60
60
  "vite": "^8.2.2",
61
- "vitest": "^4.1.11"
61
+ "vitest": "^5.0.1"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=22.13"