@astrale-domains/issues 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -21
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.js +2 -2
- package/dist/schema/modules/issue/classes/index.d.ts +0 -1
- package/dist/schema/modules/issue/classes/index.js +0 -1
- package/dist/schema/modules/issue/classes/issue.d.ts +0 -1
- package/dist/schema/modules/issue/classes/issue.js +0 -1
- package/dist/schema/modules/issue/index.d.ts +3 -3
- package/dist/schema/modules/issue/index.js +3 -3
- package/dist/schema/modules/issue/policies/index.d.ts +0 -1
- package/dist/schema/modules/issue/policies/index.js +0 -1
- package/dist/schema/modules/issue/types/index.d.ts +1 -1
- package/dist/schema/modules/issue/types/index.js +1 -1
- package/dist/schema/modules/issue/types/report.d.ts +0 -91
- package/dist/schema/modules/issue/types/report.js +0 -10
- package/dist/schema/modules/project/classes/project.d.ts +0 -59
- package/dist/schema/modules/project/classes/project.js +0 -4
- package/dist/schema/modules/project/functions/index.d.ts +0 -2
- package/dist/schema/modules/project/functions/index.js +0 -2
- package/dist/schema/schema.d.ts +0 -79
- package/dist/schema/schema.js +1 -3
- package/package.json +1 -1
- package/dist/schema/modules/issue/classes/issue-duplicate-candidate.d.ts +0 -18
- package/dist/schema/modules/issue/classes/issue-duplicate-candidate.js +0 -10
- package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.d.ts +0 -1
- package/dist/schema/modules/issue/policies/traverse-duplicate-candidate.js +0 -10
- package/dist/schema/modules/project/functions/complete-project-report.d.ts +0 -10
- package/dist/schema/modules/project/functions/complete-project-report.js +0 -11
- package/dist/schema/modules/project/functions/list-project-reports.d.ts +0 -49
- 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 |
|
|
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
|
|
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.
|
|
73
|
-
|
|
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.
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
7
|
+
export { reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, type ReportContent, } from './modules/issue/index.js';
|
package/dist/schema/index.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
5
|
+
export { ContributeToIssue, TraverseIssueAssignee, TraverseIssueParent, TraverseIssueReporter, TraverseProjectIssue, } from './policies/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue,
|
|
1
|
+
export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, } from './types/index.js';
|
|
2
2
|
export { issueStatus } from './states/index.js';
|
|
3
|
-
export { issue_assigned_to,
|
|
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,
|
|
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,
|
|
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,
|
|
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';
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -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;
|
package/dist/schema/schema.js
CHANGED
|
@@ -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,
|
|
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,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
|
-
});
|