@astrale-domains/issues 0.3.4 → 0.3.6

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 (30) hide show
  1. package/README.md +4 -21
  2. package/dist/schema/index.d.ts +2 -2
  3. package/dist/schema/index.js +2 -2
  4. package/dist/schema/modules/issue/classes/index.d.ts +0 -1
  5. package/dist/schema/modules/issue/classes/index.js +0 -1
  6. package/dist/schema/modules/issue/classes/issue.d.ts +0 -1
  7. package/dist/schema/modules/issue/classes/issue.js +0 -1
  8. package/dist/schema/modules/issue/index.d.ts +3 -3
  9. package/dist/schema/modules/issue/index.js +3 -3
  10. package/dist/schema/modules/issue/policies/index.d.ts +0 -1
  11. package/dist/schema/modules/issue/policies/index.js +0 -1
  12. package/dist/schema/modules/issue/types/index.d.ts +1 -1
  13. package/dist/schema/modules/issue/types/index.js +1 -1
  14. package/dist/schema/modules/issue/types/report.d.ts +0 -91
  15. package/dist/schema/modules/issue/types/report.js +0 -10
  16. package/dist/schema/modules/project/classes/project.d.ts +0 -59
  17. package/dist/schema/modules/project/classes/project.js +0 -4
  18. package/dist/schema/modules/project/functions/index.d.ts +0 -2
  19. package/dist/schema/modules/project/functions/index.js +0 -2
  20. package/dist/schema/schema.d.ts +0 -79
  21. package/dist/schema/schema.js +1 -3
  22. package/package.json +2 -1
  23. package/dist/schema/modules/issue/classes/issue-duplicate-candidate.d.ts +0 -18
  24. package/dist/schema/modules/issue/classes/issue-duplicate-candidate.js +0 -10
  25. package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.d.ts +0 -1
  26. package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.js +0 -10
  27. package/dist/schema/modules/project/functions/complete-project-report.d.ts +0 -10
  28. package/dist/schema/modules/project/functions/complete-project-report.js +0 -11
  29. package/dist/schema/modules/project/functions/list-project-reports.d.ts +0 -49
  30. package/dist/schema/modules/project/functions/list-project-reports.js +0 -14
package/README.md CHANGED
@@ -30,7 +30,7 @@ The public callable surface keeps observation Project-owned and mutations receiv
30
30
  ```text
31
31
  Project.create
32
32
  Project.list
33
- Project.update | addMember | removeMember | createIssue | receiveReport | listReports | completeReport | createTag | archive
33
+ Project.update | addMember | removeMember | createIssue | receiveReport | createTag | archive
34
34
  Issue.update | transition | assign | setTags | setParent | addComment | archive
35
35
  Comment.edit | delete
36
36
  Tag.edit | delete
@@ -60,7 +60,7 @@ supplies a verified `reporterId`, an opaque `requestId`, `title`, `body`, and op
60
60
  must not receive this privileged owner capability or Project membership.
61
61
 
62
62
  One atomic mutation allocates the number, creates the Issue and reporter/containment edges, retains
63
- the original report, and sets `reportPending`. A query precondition fences the exact
63
+ the original report. A query precondition fences the exact
64
64
  Project/reporter/request triple. A retry with identical content returns the original `{ id, reference }`,
65
65
  even after triage edits or archival; changed content under the same key is rejected. Independent
66
66
  request IDs remain independent reports. Known counter/key contention is retried up to eight attempts;
@@ -69,25 +69,8 @@ The inline Workflow runner is not the source of durability: the graph receipt an
69
69
 
70
70
  Context describes current client observations, separate from mutable Issue text. Missing versions and
71
71
  instance coordinates remain unknown. Creating a report does not grant access to this or other Issues.
72
- The generic domain has no Admin dependency. Admin setup, instance resolution, and scheduling remain
73
- integration-owned.
74
-
75
- The Project owner processes reports through two methods:
76
-
77
- - `Project.listReports({ pending?, cursor? })` returns up to 32 original reports, their reporters,
78
- receipt times, and an opaque continuation cursor. Continue with the same pending filter. Omitting
79
- the filter also includes completed originals. This method does not drain the collection.
80
- - `Project.completeReport({ issueId, duplicateCandidateId? })` acknowledges processing, optionally
81
- adding one same-Project `issue_duplicate_candidate` edge in the same transaction. It preserves
82
- all existing candidate edges, original evidence, and human edits. The edge is a triage suggestion,
83
- not a merge. Traversal requires participation in the Project containing both endpoints.
84
-
85
- Completion guards the observed candidate set and pending state. Known concurrent changes reject
86
- without partial writes; the scheduler should reread and retry. Replaying a completed report returns
87
- `changed: false`, without applying a new candidate. Only acknowledge after integration-owned effects
88
- are durably recorded; those effects must also be idempotent because a worker can stop between them
89
- and acknowledgement. A failed report remains pending. An integration must resume pagination rather
90
- than repeatedly processing only the first page, so a persistent failure cannot starve later reports.
72
+ The generic domain has no Admin dependency. Receiving a report performs no automatic triage,
73
+ duplicate matching, or background processing.
91
74
 
92
75
  Other creation methods retain their existing retry semantics. Set-style changes converge naturally;
93
76
  stale concurrent edits reject through atomic mutation preconditions.
@@ -1,7 +1,7 @@
1
1
  export { schema } from './schema.js';
2
2
  export type { IssuesDomain, IssuesSchema } from './schema.js';
3
3
  export { Project, project_has_member, project_owned_by } from './modules/project/index.js';
4
- export { Issue, issue_assigned_to, issue_duplicate_candidate, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
4
+ export { Issue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
5
5
  export { Comment, comment_authored_by, issue_has_comment } from './modules/comment/index.js';
6
6
  export { Tag, issue_tagged_with, project_contains_tag } from './modules/tag/index.js';
7
- export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, type ReportContent, } from './modules/issue/index.js';
7
+ export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, type ReportContent, } from './modules/issue/index.js';
@@ -1,6 +1,6 @@
1
1
  export { schema } from './schema.js';
2
2
  export { Project, project_has_member, project_owned_by } from './modules/project/index.js';
3
- export { Issue, issue_assigned_to, issue_duplicate_candidate, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
3
+ export { Issue, issue_assigned_to, issue_reported_by, issue_subtask_of, project_contains_issue, } from './modules/issue/index.js';
4
4
  export { Comment, comment_authored_by, issue_has_comment } from './modules/comment/index.js';
5
5
  export { Tag, issue_tagged_with, project_contains_tag } from './modules/tag/index.js';
6
- export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, } from './modules/issue/index.js';
6
+ export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, } from './modules/issue/index.js';
@@ -3,4 +3,3 @@ export { issue_reported_by } from './issue-reported-by.js';
3
3
  export { issue_subtask_of } from './issue-subtask-of.js';
4
4
  export { Issue } from './issue.js';
5
5
  export { project_contains_issue } from './project-contains-issue.js';
6
- export { issue_duplicate_candidate } from './issue-duplicate-candidate.js';
@@ -3,4 +3,3 @@ export { issue_reported_by } from './issue-reported-by.js';
3
3
  export { issue_subtask_of } from './issue-subtask-of.js';
4
4
  export { Issue } from './issue.js';
5
5
  export { project_contains_issue } from './project-contains-issue.js';
6
- export { issue_duplicate_candidate } from './issue-duplicate-candidate.js';
@@ -74,7 +74,6 @@ export declare const Issue: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
74
74
  }, z.core.$strict>>;
75
75
  }, z.core.$strict>>;
76
76
  }, z.core.$strict>>, {}>;
77
- reportPending: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodOptional<z.ZodBoolean>, {}>;
78
77
  };
79
78
  readonly methods: {
80
79
  update: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -25,7 +25,6 @@ export const Issue = nodeClass({
25
25
  archived: z.boolean(),
26
26
  reportRequestId: property(z.string().min(1).max(128).optional(), {}),
27
27
  report: property(reportContentValue.optional(), {}),
28
- reportPending: property(z.boolean().optional(), {}),
29
28
  },
30
29
  methods: {
31
30
  update: updateIssueMethod,
@@ -1,5 +1,5 @@
1
- export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, type ReportContent, } from './types/index.js';
1
+ export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, type ReportContent, } from './types/index.js';
2
2
  export { issueStatus, type IssueEvent, type IssueStatus } from './states/index.js';
3
- export { issue_assigned_to, issue_duplicate_candidate, issue_reported_by, issue_subtask_of, Issue, project_contains_issue, } from './classes/index.js';
3
+ export { issue_assigned_to, issue_reported_by, issue_subtask_of, Issue, project_contains_issue, } from './classes/index.js';
4
4
  export { addIssueCommentMethod, archiveIssueMethod, assignIssueMethod, setIssueParentMethod, setIssueTagsMethod, transitionIssueMethod, updateIssueMethod, } from './functions/index.js';
5
- export { ContributeToIssue, TraverseDuplicateCandidate, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, } from './policies/index.js';
5
+ export { ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, } from './policies/index.js';
@@ -1,5 +1,5 @@
1
- export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, } from './types/index.js';
1
+ export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, } from './types/index.js';
2
2
  export { issueStatus } from './states/index.js';
3
- export { issue_assigned_to, issue_duplicate_candidate, issue_reported_by, issue_subtask_of, Issue, project_contains_issue, } from './classes/index.js';
3
+ export { issue_assigned_to, issue_reported_by, issue_subtask_of, Issue, project_contains_issue, } from './classes/index.js';
4
4
  export { addIssueCommentMethod, archiveIssueMethod, assignIssueMethod, setIssueParentMethod, setIssueTagsMethod, transitionIssueMethod, updateIssueMethod, } from './functions/index.js';
5
- export { ContributeToIssue, TraverseDuplicateCandidate, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, } from './policies/index.js';
5
+ export { ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, } from './policies/index.js';
@@ -3,4 +3,3 @@ export { TraverseIssueAssignee } from './traverse-issue-assignee.js';
3
3
  export { TraverseIssueParent } from './traverse-issue-parent.js';
4
4
  export { TraverseIssueReporter } from './traverse-issue-reporter.js';
5
5
  export { TraverseProjectIssue } from './traverse-project-issue.js';
6
- export { TraverseDuplicateCandidate } from './traverse-duplicate-candidate.js';
@@ -3,4 +3,3 @@ export { TraverseIssueAssignee } from './traverse-issue-assignee.js';
3
3
  export { TraverseIssueParent } from './traverse-issue-parent.js';
4
4
  export { TraverseIssueReporter } from './traverse-issue-reporter.js';
5
5
  export { TraverseProjectIssue } from './traverse-project-issue.js';
6
- export { TraverseDuplicateCandidate } from './traverse-duplicate-candidate.js';
@@ -1,2 +1,2 @@
1
1
  export { issueValue } from './issue.js';
2
- export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, type ReportContent, } from './report.js';
2
+ export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, type ReportContent, } from './report.js';
@@ -1,2 +1,2 @@
1
1
  export { issueValue } from './issue.js';
2
- export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, reportRecordValue, reportPageValue, } from './report.js';
2
+ export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, } from './report.js';
@@ -114,94 +114,3 @@ export declare const reportReceiptValue: z.ZodObject<{
114
114
  reference: z.ZodString;
115
115
  }, z.core.$strict>;
116
116
  export type ReportContent = z.infer<typeof reportContentValue>;
117
- export declare const reportRecordValue: z.ZodObject<{
118
- id: z.ZodString;
119
- reference: z.ZodString;
120
- reporterId: z.ZodString;
121
- content: z.ZodObject<{
122
- title: z.ZodString;
123
- body: z.ZodString;
124
- context: z.ZodOptional<z.ZodObject<{
125
- observedAt: z.ZodString;
126
- cli: z.ZodObject<{
127
- version: z.ZodString;
128
- platform: z.ZodString;
129
- arch: z.ZodString;
130
- }, z.core.$strict>;
131
- runtime: z.ZodObject<{
132
- node: z.ZodString;
133
- bun: z.ZodOptional<z.ZodString>;
134
- }, z.core.$strict>;
135
- project: z.ZodOptional<z.ZodObject<{
136
- name: z.ZodString;
137
- version: z.ZodOptional<z.ZodString>;
138
- packages: z.ZodArray<z.ZodObject<{
139
- name: z.ZodString;
140
- declared: z.ZodOptional<z.ZodString>;
141
- version: z.ZodOptional<z.ZodString>;
142
- source: z.ZodEnum<{
143
- installed: "installed";
144
- local: "local";
145
- unresolved: "unresolved";
146
- }>;
147
- commit: z.ZodOptional<z.ZodString>;
148
- dirty: z.ZodOptional<z.ZodBoolean>;
149
- }, z.core.$strict>>;
150
- }, z.core.$strict>>;
151
- instance: z.ZodOptional<z.ZodObject<{
152
- name: z.ZodString;
153
- issuer: z.ZodOptional<z.ZodString>;
154
- url: z.ZodOptional<z.ZodString>;
155
- }, z.core.$strict>>;
156
- }, z.core.$strict>>;
157
- }, z.core.$strict>;
158
- pending: z.ZodBoolean;
159
- receivedAt: z.ZodString;
160
- }, z.core.$strict>;
161
- export declare const reportPageValue: z.ZodObject<{
162
- reports: z.ZodArray<z.ZodObject<{
163
- id: z.ZodString;
164
- reference: z.ZodString;
165
- reporterId: z.ZodString;
166
- content: z.ZodObject<{
167
- title: z.ZodString;
168
- body: z.ZodString;
169
- context: z.ZodOptional<z.ZodObject<{
170
- observedAt: z.ZodString;
171
- cli: z.ZodObject<{
172
- version: z.ZodString;
173
- platform: z.ZodString;
174
- arch: z.ZodString;
175
- }, z.core.$strict>;
176
- runtime: z.ZodObject<{
177
- node: z.ZodString;
178
- bun: z.ZodOptional<z.ZodString>;
179
- }, z.core.$strict>;
180
- project: z.ZodOptional<z.ZodObject<{
181
- name: z.ZodString;
182
- version: z.ZodOptional<z.ZodString>;
183
- packages: z.ZodArray<z.ZodObject<{
184
- name: z.ZodString;
185
- declared: z.ZodOptional<z.ZodString>;
186
- version: z.ZodOptional<z.ZodString>;
187
- source: z.ZodEnum<{
188
- installed: "installed";
189
- local: "local";
190
- unresolved: "unresolved";
191
- }>;
192
- commit: z.ZodOptional<z.ZodString>;
193
- dirty: z.ZodOptional<z.ZodBoolean>;
194
- }, z.core.$strict>>;
195
- }, z.core.$strict>>;
196
- instance: z.ZodOptional<z.ZodObject<{
197
- name: z.ZodString;
198
- issuer: z.ZodOptional<z.ZodString>;
199
- url: z.ZodOptional<z.ZodString>;
200
- }, z.core.$strict>>;
201
- }, z.core.$strict>>;
202
- }, z.core.$strict>;
203
- pending: z.ZodBoolean;
204
- receivedAt: z.ZodString;
205
- }, z.core.$strict>>;
206
- cursor: z.ZodOptional<z.ZodString>;
207
- }, z.core.$strict>;
@@ -44,13 +44,3 @@ export const reportReceiptValue = z.strictObject({
44
44
  id: nodeIdValue,
45
45
  reference: z.string().min(1).max(32),
46
46
  });
47
- export const reportRecordValue = reportReceiptValue.extend({
48
- reporterId: nodeIdValue,
49
- content: reportContentValue,
50
- pending: z.boolean(),
51
- receivedAt: z.string().min(1).max(64),
52
- });
53
- export const reportPageValue = z.strictObject({
54
- reports: z.array(reportRecordValue).max(32),
55
- cursor: z.string().optional(),
56
- });
@@ -140,65 +140,6 @@ export declare const Project: import("@astrale-os/sdk/schema").AuthoredNodeClass
140
140
  reference: string;
141
141
  };
142
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>>;
202
143
  createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
203
144
  name: string;
204
145
  color?: string | undefined;
@@ -4,11 +4,9 @@ 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';
8
7
  import { createProjectIssueMethod } from '../functions/create-project-issue.js';
9
8
  import { createProjectTagMethod } from '../functions/create-project-tag.js';
10
9
  import { createProjectMethod } from '../functions/create-project.js';
11
- import { listProjectReportsMethod } from '../functions/list-project-reports.js';
12
10
  import { listProjectsMethod } from '../functions/list-projects.js';
13
11
  import { receiveProjectReportMethod } from '../functions/receive-project-report.js';
14
12
  import { removeProjectMemberMethod } from '../functions/remove-project-member.js';
@@ -33,8 +31,6 @@ export const Project = nodeClass({
33
31
  removeMember: removeProjectMemberMethod,
34
32
  createIssue: createProjectIssueMethod,
35
33
  receiveReport: receiveProjectReportMethod,
36
- listReports: listProjectReportsMethod,
37
- completeReport: completeProjectReportMethod,
38
34
  createTag: createProjectTagMethod,
39
35
  archive: archiveProjectMethod,
40
36
  },
@@ -7,5 +7,3 @@ export { listProjectsMethod } from './list-projects.js';
7
7
  export { removeProjectMemberMethod } from './remove-project-member.js';
8
8
  export { updateProjectMethod } from './update-project.js';
9
9
  export { receiveProjectReportMethod } from './receive-project-report.js';
10
- export { listProjectReportsMethod } from './list-project-reports.js';
11
- export { completeProjectReportMethod } from './complete-project-report.js';
@@ -7,5 +7,3 @@ export { listProjectsMethod } from './list-projects.js';
7
7
  export { removeProjectMemberMethod } from './remove-project-member.js';
8
8
  export { updateProjectMethod } from './update-project.js';
9
9
  export { receiveProjectReportMethod } from './receive-project-report.js';
10
- export { listProjectReportsMethod } from './list-project-reports.js';
11
- export { completeProjectReportMethod } from './complete-project-report.js';
@@ -143,65 +143,6 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
143
143
  reference: string;
144
144
  };
145
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>>;
205
146
  createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
206
147
  name: string;
207
148
  color?: string | undefined;
@@ -301,7 +242,6 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
301
242
  }, import("zod/v4/core").$strict>>;
302
243
  }, import("zod/v4/core").$strict>>;
303
244
  }, import("zod/v4/core").$strict>>, {}>;
304
- reportPending: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodBoolean>, {}>;
305
245
  };
306
246
  readonly methods: {
307
247
  update: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
@@ -554,24 +494,6 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
554
494
  };
555
495
  readonly effectiveProperties: never;
556
496
  }>;
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
- }>;
575
497
  readonly issue_has_comment: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
576
498
  readonly depth: 0;
577
499
  readonly abstract: false;
@@ -640,7 +562,6 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
640
562
  readonly policies: {
641
563
  readonly ManageProject: import("@astrale-os/sdk/schema").Policy;
642
564
  readonly ContributeToProject: import("@astrale-os/sdk/schema").Policy;
643
- readonly TraverseDuplicateCandidate: import("@astrale-os/sdk/schema").Policy;
644
565
  readonly ContributeToIssue: import("@astrale-os/sdk/schema").Policy;
645
566
  readonly ContributeToTag: import("@astrale-os/sdk/schema").Policy;
646
567
  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, 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';
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';
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,7 +15,6 @@ const classes = {
15
15
  issue_reported_by,
16
16
  issue_assigned_to,
17
17
  issue_subtask_of,
18
- issue_duplicate_candidate,
19
18
  issue_has_comment,
20
19
  comment_authored_by,
21
20
  project_contains_tag,
@@ -24,7 +23,6 @@ const classes = {
24
23
  const policies = {
25
24
  ManageProject,
26
25
  ContributeToProject,
27
- TraverseDuplicateCandidate,
28
26
  ContributeToIssue,
29
27
  ContributeToTag,
30
28
  ManageTag,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-domains/issues",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/astrale-os/domains.git",
@@ -47,6 +47,7 @@
47
47
  "@types/react-dom": "^19.2.4",
48
48
  "@vitejs/plugin-react": "^6.1.0",
49
49
  "bun": "1.4.2",
50
+ "esbuild": "0.28.1",
50
51
  "jsdom": "30.0.1",
51
52
  "mermaid": "^11.17.0",
52
53
  "oxlint": ">=1.79.0 <2.0.0",
@@ -1,18 +0,0 @@
1
- export declare const issue_duplicate_candidate: 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: "report";
8
- readonly outgoing: "0..*";
9
- };
10
- readonly target: {
11
- readonly as: "candidate";
12
- readonly incoming: "0..*";
13
- };
14
- readonly constraints: {
15
- readonly noSelf: true;
16
- };
17
- readonly effectiveProperties: never;
18
- }>;
@@ -1,10 +0,0 @@
1
- import { edgeClass } from '@astrale-os/sdk/schema';
2
- import { TraverseDuplicateCandidate } from '../policies/traverse-duplicate-candidate.js';
3
- import { Issue } from './issue.js';
4
- export const issue_duplicate_candidate = edgeClass.directed({
5
- description: 'A retained report may describe the same problem as another Issue; a suggestion for triage, not a merge or canonical identity.',
6
- source: { as: 'report', accepts: [() => Issue], outgoing: '0..*' },
7
- target: { as: 'candidate', accepts: [() => Issue], incoming: '0..*' },
8
- constraints: { noSelf: true },
9
- policies: { traverse: () => TraverseDuplicateCandidate },
10
- });
@@ -1 +0,0 @@
1
- export declare const TraverseDuplicateCandidate: import("@astrale-os/sdk/schema").Policy;
@@ -1,10 +0,0 @@
1
- import { policy } from '@astrale-os/sdk/schema';
2
- import { Project, project_has_member, project_owned_by } from '../../project/index.js';
3
- import { project_contains_issue } from '../classes/project-contains-issue.js';
4
- export const TraverseDuplicateCandidate = policy({
5
- description: 'The caller participates in the Project containing both candidate duplicate Issues.',
6
- match: ({ allOf, anyOf, edge, exists, source, target, subject }) => exists(({ node }) => {
7
- const project = node(() => Project);
8
- return allOf(edge({ source: project, class: () => project_contains_issue, target: source }), edge({ source: project, class: () => project_contains_issue, target }), anyOf(edge({ source: subject, class: () => project_owned_by, target: project }), edge({ source: subject, class: () => project_has_member, target: project })));
9
- }),
10
- });
@@ -1,10 +0,0 @@
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>>;
@@ -1,11 +0,0 @@
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
- });
@@ -1,49 +0,0 @@
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>>;
@@ -1,14 +0,0 @@
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
- });