@astrale-domains/issues 0.3.3 → 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 +21 -7
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.js +1 -0
- package/dist/schema/modules/comment/classes/comment.d.ts +1 -1
- package/dist/schema/modules/issue/classes/issue.d.ts +40 -2
- package/dist/schema/modules/issue/classes/issue.js +3 -0
- package/dist/schema/modules/issue/index.d.ts +1 -1
- package/dist/schema/modules/issue/index.js +1 -1
- package/dist/schema/modules/issue/types/index.d.ts +1 -0
- package/dist/schema/modules/issue/types/index.js +1 -0
- package/dist/schema/modules/issue/types/report.d.ts +116 -0
- package/dist/schema/modules/issue/types/report.js +46 -0
- package/dist/schema/modules/project/classes/project.d.ts +44 -3
- package/dist/schema/modules/project/classes/project.js +2 -0
- package/dist/schema/modules/project/functions/index.d.ts +1 -0
- package/dist/schema/modules/project/functions/index.js +1 -0
- package/dist/schema/modules/project/functions/receive-project-report.d.ts +41 -0
- package/dist/schema/modules/project/functions/receive-project-report.js +10 -0
- package/dist/schema/modules/tag/classes/tag.d.ts +2 -2
- package/dist/schema/schema.d.ts +87 -8
- package/package.json +8 -8
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 | 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
|
|
@@ -54,12 +54,26 @@ collaboration state without requesting authority over every possible concrete Id
|
|
|
54
54
|
another Domain.
|
|
55
55
|
Those private execution fields are not a second public model and never replace the Policy edges.
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
`Project.receiveReport` is the owner-only intake for trusted integrations such as Admin. Its owner
|
|
58
|
+
supplies a verified `reporterId`, an opaque `requestId`, `title`, `body`, and optional structured
|
|
59
|
+
`context`. The public Admin facade must derive the reporter from authentication; ordinary senders
|
|
60
|
+
must not receive this privileged owner capability or Project membership.
|
|
61
|
+
|
|
62
|
+
One atomic mutation allocates the number, creates the Issue and reporter/containment edges, retains
|
|
63
|
+
the original report. A query precondition fences the exact
|
|
64
|
+
Project/reporter/request triple. A retry with identical content returns the original `{ id, reference }`,
|
|
65
|
+
even after triage edits or archival; changed content under the same key is rejected. Independent
|
|
66
|
+
request IDs remain independent reports. Known counter/key contention is retried up to eight attempts;
|
|
67
|
+
unknown outcomes propagate, so the sender must retain the original payload and key until confirmation.
|
|
68
|
+
The inline Workflow runner is not the source of durability: the graph receipt and atomic preconditions are.
|
|
69
|
+
|
|
70
|
+
Context describes current client observations, separate from mutable Issue text. Missing versions and
|
|
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. Receiving a report performs no automatic triage,
|
|
73
|
+
duplicate matching, or background processing.
|
|
74
|
+
|
|
75
|
+
Other creation methods retain their existing retry semantics. Set-style changes converge naturally;
|
|
76
|
+
stale concurrent edits reject through atomic mutation preconditions.
|
|
63
77
|
|
|
64
78
|
The mounted View defaults to a focused open-Issue Inbox with queue progress and keyboard or button
|
|
65
79
|
navigation. Accepted work has a dedicated discussion view, while Browse searches and filters the
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export { Project, project_has_member, project_owned_by } from './modules/project
|
|
|
4
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, type ReportContent, } from './modules/issue/index.js';
|
package/dist/schema/index.js
CHANGED
|
@@ -3,3 +3,4 @@ export { Project, project_has_member, project_owned_by } from './modules/project
|
|
|
3
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, } from './modules/issue/index.js';
|
|
@@ -5,7 +5,7 @@ export declare const Comment: import("@astrale-os/sdk/schema").AuthoredNodeClass
|
|
|
5
5
|
readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
|
|
6
6
|
readonly properties: {
|
|
7
7
|
body: z.ZodString;
|
|
8
|
-
authorId: import("@astrale-os/sdk/schema").
|
|
8
|
+
authorId: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodString, {}>;
|
|
9
9
|
};
|
|
10
10
|
readonly methods: {
|
|
11
11
|
edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
@@ -5,8 +5,8 @@ export declare const Issue: 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
|
reference: z.ZodString;
|
|
8
|
-
reporterId: import("@astrale-os/sdk/schema").
|
|
9
|
-
assigneeId: import("@astrale-os/sdk/schema").
|
|
8
|
+
reporterId: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodString, {}>;
|
|
9
|
+
assigneeId: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodOptional<z.ZodString>, {}>;
|
|
10
10
|
status: import("@astrale-os/sdk/schema").StateProperty<import("@astrale-os/sdk/schema").StateMachine<{
|
|
11
11
|
readonly open: {
|
|
12
12
|
readonly accept: "accepted";
|
|
@@ -36,6 +36,44 @@ export declare const Issue: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
|
|
|
36
36
|
}>;
|
|
37
37
|
priority: z.ZodNumber;
|
|
38
38
|
archived: z.ZodBoolean;
|
|
39
|
+
reportRequestId: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodOptional<z.ZodString>, {}>;
|
|
40
|
+
report: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodOptional<z.ZodObject<{
|
|
41
|
+
title: z.ZodString;
|
|
42
|
+
body: z.ZodString;
|
|
43
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
observedAt: z.ZodString;
|
|
45
|
+
cli: z.ZodObject<{
|
|
46
|
+
version: z.ZodString;
|
|
47
|
+
platform: z.ZodString;
|
|
48
|
+
arch: z.ZodString;
|
|
49
|
+
}, z.core.$strict>;
|
|
50
|
+
runtime: z.ZodObject<{
|
|
51
|
+
node: z.ZodString;
|
|
52
|
+
bun: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$strict>;
|
|
54
|
+
project: z.ZodOptional<z.ZodObject<{
|
|
55
|
+
name: z.ZodString;
|
|
56
|
+
version: z.ZodOptional<z.ZodString>;
|
|
57
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
declared: z.ZodOptional<z.ZodString>;
|
|
60
|
+
version: z.ZodOptional<z.ZodString>;
|
|
61
|
+
source: z.ZodEnum<{
|
|
62
|
+
installed: "installed";
|
|
63
|
+
local: "local";
|
|
64
|
+
unresolved: "unresolved";
|
|
65
|
+
}>;
|
|
66
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
67
|
+
dirty: z.ZodOptional<z.ZodBoolean>;
|
|
68
|
+
}, z.core.$strict>>;
|
|
69
|
+
}, z.core.$strict>>;
|
|
70
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
71
|
+
name: z.ZodString;
|
|
72
|
+
issuer: z.ZodOptional<z.ZodString>;
|
|
73
|
+
url: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, z.core.$strict>>;
|
|
75
|
+
}, z.core.$strict>>;
|
|
76
|
+
}, z.core.$strict>>, {}>;
|
|
39
77
|
};
|
|
40
78
|
readonly methods: {
|
|
41
79
|
update: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
@@ -11,6 +11,7 @@ import { transitionIssueMethod } from '../functions/transition-issue.js';
|
|
|
11
11
|
import { updateIssueMethod } from '../functions/update-issue.js';
|
|
12
12
|
import { ContributeToIssue } from '../policies/contribute-to-issue.js';
|
|
13
13
|
import { issueStatus } from '../states/index.js';
|
|
14
|
+
import { reportContentValue } from '../types/report.js';
|
|
14
15
|
export const Issue = nodeClass({
|
|
15
16
|
description: 'One immutable-reference work item contained by exactly one Project.',
|
|
16
17
|
icon: classIcon.lucide(CircleDot),
|
|
@@ -22,6 +23,8 @@ export const Issue = nodeClass({
|
|
|
22
23
|
status: stateProperty(issueStatus),
|
|
23
24
|
priority: z.number().int().min(0).max(4),
|
|
24
25
|
archived: z.boolean(),
|
|
26
|
+
reportRequestId: property(z.string().min(1).max(128).optional(), {}),
|
|
27
|
+
report: property(reportContentValue.optional(), {}),
|
|
25
28
|
},
|
|
26
29
|
methods: {
|
|
27
30
|
update: updateIssueMethod,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { issueValue } 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
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';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { issueValue } from './types/index.js';
|
|
1
|
+
export { issueValue, reportContentValue, reportContextValue, receiveReportInput, reportReceiptValue, } from './types/index.js';
|
|
2
2
|
export { issueStatus } from './states/index.js';
|
|
3
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';
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Observations at submission time; never evidence of a historical deployed build. */
|
|
3
|
+
export declare const reportContextValue: z.ZodObject<{
|
|
4
|
+
observedAt: z.ZodString;
|
|
5
|
+
cli: z.ZodObject<{
|
|
6
|
+
version: z.ZodString;
|
|
7
|
+
platform: z.ZodString;
|
|
8
|
+
arch: z.ZodString;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
runtime: z.ZodObject<{
|
|
11
|
+
node: z.ZodString;
|
|
12
|
+
bun: z.ZodOptional<z.ZodString>;
|
|
13
|
+
}, z.core.$strict>;
|
|
14
|
+
project: z.ZodOptional<z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
version: z.ZodOptional<z.ZodString>;
|
|
17
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
declared: z.ZodOptional<z.ZodString>;
|
|
20
|
+
version: z.ZodOptional<z.ZodString>;
|
|
21
|
+
source: z.ZodEnum<{
|
|
22
|
+
installed: "installed";
|
|
23
|
+
local: "local";
|
|
24
|
+
unresolved: "unresolved";
|
|
25
|
+
}>;
|
|
26
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
27
|
+
dirty: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
}, z.core.$strict>>;
|
|
29
|
+
}, z.core.$strict>>;
|
|
30
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
issuer: z.ZodOptional<z.ZodString>;
|
|
33
|
+
url: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, z.core.$strict>>;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
export declare const reportContentValue: z.ZodObject<{
|
|
37
|
+
title: z.ZodString;
|
|
38
|
+
body: z.ZodString;
|
|
39
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
40
|
+
observedAt: z.ZodString;
|
|
41
|
+
cli: z.ZodObject<{
|
|
42
|
+
version: z.ZodString;
|
|
43
|
+
platform: z.ZodString;
|
|
44
|
+
arch: z.ZodString;
|
|
45
|
+
}, z.core.$strict>;
|
|
46
|
+
runtime: z.ZodObject<{
|
|
47
|
+
node: z.ZodString;
|
|
48
|
+
bun: z.ZodOptional<z.ZodString>;
|
|
49
|
+
}, z.core.$strict>;
|
|
50
|
+
project: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
name: z.ZodString;
|
|
52
|
+
version: z.ZodOptional<z.ZodString>;
|
|
53
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
54
|
+
name: z.ZodString;
|
|
55
|
+
declared: z.ZodOptional<z.ZodString>;
|
|
56
|
+
version: z.ZodOptional<z.ZodString>;
|
|
57
|
+
source: z.ZodEnum<{
|
|
58
|
+
installed: "installed";
|
|
59
|
+
local: "local";
|
|
60
|
+
unresolved: "unresolved";
|
|
61
|
+
}>;
|
|
62
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
63
|
+
dirty: z.ZodOptional<z.ZodBoolean>;
|
|
64
|
+
}, z.core.$strict>>;
|
|
65
|
+
}, z.core.$strict>>;
|
|
66
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
67
|
+
name: z.ZodString;
|
|
68
|
+
issuer: z.ZodOptional<z.ZodString>;
|
|
69
|
+
url: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strict>>;
|
|
71
|
+
}, z.core.$strict>>;
|
|
72
|
+
}, z.core.$strict>;
|
|
73
|
+
export declare const receiveReportInput: z.ZodObject<{
|
|
74
|
+
title: z.ZodString;
|
|
75
|
+
body: z.ZodString;
|
|
76
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
77
|
+
observedAt: z.ZodString;
|
|
78
|
+
cli: z.ZodObject<{
|
|
79
|
+
version: z.ZodString;
|
|
80
|
+
platform: z.ZodString;
|
|
81
|
+
arch: z.ZodString;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
runtime: z.ZodObject<{
|
|
84
|
+
node: z.ZodString;
|
|
85
|
+
bun: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$strict>;
|
|
87
|
+
project: z.ZodOptional<z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
version: z.ZodOptional<z.ZodString>;
|
|
90
|
+
packages: z.ZodArray<z.ZodObject<{
|
|
91
|
+
name: z.ZodString;
|
|
92
|
+
declared: z.ZodOptional<z.ZodString>;
|
|
93
|
+
version: z.ZodOptional<z.ZodString>;
|
|
94
|
+
source: z.ZodEnum<{
|
|
95
|
+
installed: "installed";
|
|
96
|
+
local: "local";
|
|
97
|
+
unresolved: "unresolved";
|
|
98
|
+
}>;
|
|
99
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
100
|
+
dirty: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
}, z.core.$strict>>;
|
|
102
|
+
}, z.core.$strict>>;
|
|
103
|
+
instance: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
name: z.ZodString;
|
|
105
|
+
issuer: z.ZodOptional<z.ZodString>;
|
|
106
|
+
url: z.ZodOptional<z.ZodString>;
|
|
107
|
+
}, z.core.$strict>>;
|
|
108
|
+
}, z.core.$strict>>;
|
|
109
|
+
requestId: z.ZodString;
|
|
110
|
+
reporterId: z.ZodString;
|
|
111
|
+
}, z.core.$strict>;
|
|
112
|
+
export declare const reportReceiptValue: z.ZodObject<{
|
|
113
|
+
id: z.ZodString;
|
|
114
|
+
reference: z.ZodString;
|
|
115
|
+
}, z.core.$strict>;
|
|
116
|
+
export type ReportContent = z.infer<typeof reportContentValue>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { nodeIdValue } from '../../../types/index.js';
|
|
3
|
+
const coordinate = z.string().min(1).max(2_048);
|
|
4
|
+
const version = z.string().max(128);
|
|
5
|
+
/** Observations at submission time; never evidence of a historical deployed build. */
|
|
6
|
+
export const reportContextValue = z.strictObject({
|
|
7
|
+
observedAt: z.string().min(1).max(64),
|
|
8
|
+
cli: z.strictObject({ version, platform: z.string().max(64), arch: z.string().max(64) }),
|
|
9
|
+
runtime: z.strictObject({ node: version, bun: version.optional() }),
|
|
10
|
+
project: z
|
|
11
|
+
.strictObject({
|
|
12
|
+
name: z.string().max(200),
|
|
13
|
+
version: version.optional(),
|
|
14
|
+
packages: z
|
|
15
|
+
.array(z.strictObject({
|
|
16
|
+
name: z.string().min(1).max(200),
|
|
17
|
+
declared: z.string().max(128).optional(),
|
|
18
|
+
version: version.optional(),
|
|
19
|
+
source: z.enum(['installed', 'local', 'unresolved']),
|
|
20
|
+
commit: z.string().min(40).max(64).optional(),
|
|
21
|
+
dirty: z.boolean().optional(),
|
|
22
|
+
}))
|
|
23
|
+
.max(64),
|
|
24
|
+
})
|
|
25
|
+
.optional(),
|
|
26
|
+
instance: z
|
|
27
|
+
.strictObject({
|
|
28
|
+
name: z.string().max(200),
|
|
29
|
+
issuer: coordinate.optional(),
|
|
30
|
+
url: coordinate.optional(),
|
|
31
|
+
})
|
|
32
|
+
.optional(),
|
|
33
|
+
});
|
|
34
|
+
export const reportContentValue = z.strictObject({
|
|
35
|
+
title: z.string().min(1).max(200),
|
|
36
|
+
body: z.string().min(1).max(50_000),
|
|
37
|
+
context: reportContextValue.optional(),
|
|
38
|
+
});
|
|
39
|
+
export const receiveReportInput = reportContentValue.extend({
|
|
40
|
+
requestId: z.string().min(1).max(128),
|
|
41
|
+
reporterId: nodeIdValue,
|
|
42
|
+
});
|
|
43
|
+
export const reportReceiptValue = z.strictObject({
|
|
44
|
+
id: nodeIdValue,
|
|
45
|
+
reference: z.string().min(1).max(32),
|
|
46
|
+
});
|
|
@@ -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").
|
|
9
|
-
memberIds: import("@astrale-os/sdk/schema").
|
|
10
|
-
nextIssueNumber: import("@astrale-os/sdk/schema").
|
|
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,47 @@ 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>>;
|
|
102
143
|
createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
103
144
|
name: string;
|
|
104
145
|
color?: string | undefined;
|
|
@@ -8,6 +8,7 @@ import { createProjectIssueMethod } from '../functions/create-project-issue.js';
|
|
|
8
8
|
import { createProjectTagMethod } from '../functions/create-project-tag.js';
|
|
9
9
|
import { createProjectMethod } from '../functions/create-project.js';
|
|
10
10
|
import { listProjectsMethod } from '../functions/list-projects.js';
|
|
11
|
+
import { receiveProjectReportMethod } from '../functions/receive-project-report.js';
|
|
11
12
|
import { removeProjectMemberMethod } from '../functions/remove-project-member.js';
|
|
12
13
|
import { updateProjectMethod } from '../functions/update-project.js';
|
|
13
14
|
import { ContributeToProject } from '../policies/contribute-to-project.js';
|
|
@@ -29,6 +30,7 @@ export const Project = nodeClass({
|
|
|
29
30
|
addMember: addProjectMemberMethod,
|
|
30
31
|
removeMember: removeProjectMemberMethod,
|
|
31
32
|
createIssue: createProjectIssueMethod,
|
|
33
|
+
receiveReport: receiveProjectReportMethod,
|
|
32
34
|
createTag: createProjectTagMethod,
|
|
33
35
|
archive: archiveProjectMethod,
|
|
34
36
|
},
|
|
@@ -6,3 +6,4 @@ 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';
|
|
@@ -6,3 +6,4 @@ 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';
|
|
@@ -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").
|
|
8
|
+
color: import("@astrale-os/sdk/schema").AuthoredProperty<z.ZodString, {
|
|
9
9
|
readonly required: false;
|
|
10
|
-
}
|
|
10
|
+
}>;
|
|
11
11
|
};
|
|
12
12
|
readonly methods: {
|
|
13
13
|
edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -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").
|
|
12
|
-
memberIds: import("@astrale-os/sdk/schema").
|
|
13
|
-
nextIssueNumber: import("@astrale-os/sdk/schema").
|
|
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,47 @@ 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>>;
|
|
105
146
|
createTag: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
106
147
|
name: string;
|
|
107
148
|
color?: string | undefined;
|
|
@@ -132,8 +173,8 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
|
|
|
132
173
|
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
174
|
readonly properties: {
|
|
134
175
|
reference: import("zod").ZodString;
|
|
135
|
-
reporterId: import("@astrale-os/sdk/schema").
|
|
136
|
-
assigneeId: import("@astrale-os/sdk/schema").
|
|
176
|
+
reporterId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {}>;
|
|
177
|
+
assigneeId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodString>, {}>;
|
|
137
178
|
status: import("@astrale-os/sdk/schema").StateProperty<import("@astrale-os/sdk/schema").StateMachine<{
|
|
138
179
|
readonly open: {
|
|
139
180
|
readonly accept: "accepted";
|
|
@@ -163,6 +204,44 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
|
|
|
163
204
|
}>;
|
|
164
205
|
priority: import("zod").ZodNumber;
|
|
165
206
|
archived: import("zod").ZodBoolean;
|
|
207
|
+
reportRequestId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodString>, {}>;
|
|
208
|
+
report: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodOptional<import("zod").ZodObject<{
|
|
209
|
+
title: import("zod").ZodString;
|
|
210
|
+
body: import("zod").ZodString;
|
|
211
|
+
context: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
212
|
+
observedAt: import("zod").ZodString;
|
|
213
|
+
cli: import("zod").ZodObject<{
|
|
214
|
+
version: import("zod").ZodString;
|
|
215
|
+
platform: import("zod").ZodString;
|
|
216
|
+
arch: import("zod").ZodString;
|
|
217
|
+
}, import("zod/v4/core").$strict>;
|
|
218
|
+
runtime: import("zod").ZodObject<{
|
|
219
|
+
node: import("zod").ZodString;
|
|
220
|
+
bun: import("zod").ZodOptional<import("zod").ZodString>;
|
|
221
|
+
}, import("zod/v4/core").$strict>;
|
|
222
|
+
project: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
223
|
+
name: import("zod").ZodString;
|
|
224
|
+
version: import("zod").ZodOptional<import("zod").ZodString>;
|
|
225
|
+
packages: import("zod").ZodArray<import("zod").ZodObject<{
|
|
226
|
+
name: import("zod").ZodString;
|
|
227
|
+
declared: import("zod").ZodOptional<import("zod").ZodString>;
|
|
228
|
+
version: import("zod").ZodOptional<import("zod").ZodString>;
|
|
229
|
+
source: import("zod").ZodEnum<{
|
|
230
|
+
installed: "installed";
|
|
231
|
+
local: "local";
|
|
232
|
+
unresolved: "unresolved";
|
|
233
|
+
}>;
|
|
234
|
+
commit: import("zod").ZodOptional<import("zod").ZodString>;
|
|
235
|
+
dirty: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
236
|
+
}, import("zod/v4/core").$strict>>;
|
|
237
|
+
}, import("zod/v4/core").$strict>>;
|
|
238
|
+
instance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
239
|
+
name: import("zod").ZodString;
|
|
240
|
+
issuer: import("zod").ZodOptional<import("zod").ZodString>;
|
|
241
|
+
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
242
|
+
}, import("zod/v4/core").$strict>>;
|
|
243
|
+
}, import("zod/v4/core").$strict>>;
|
|
244
|
+
}, import("zod/v4/core").$strict>>, {}>;
|
|
166
245
|
};
|
|
167
246
|
readonly methods: {
|
|
168
247
|
update: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
@@ -257,7 +336,7 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
|
|
|
257
336
|
readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
|
|
258
337
|
readonly properties: {
|
|
259
338
|
body: import("zod").ZodString;
|
|
260
|
-
authorId: import("@astrale-os/sdk/schema").
|
|
339
|
+
authorId: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {}>;
|
|
261
340
|
};
|
|
262
341
|
readonly methods: {
|
|
263
342
|
edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
@@ -287,9 +366,9 @@ export declare const schema: import("@astrale-os/sdk/schema").AuthoredSchema<"is
|
|
|
287
366
|
readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Timestamped">];
|
|
288
367
|
readonly properties: {
|
|
289
368
|
slug: import("zod").ZodString;
|
|
290
|
-
color: import("@astrale-os/sdk/schema").
|
|
369
|
+
color: import("@astrale-os/sdk/schema").AuthoredProperty<import("zod").ZodString, {
|
|
291
370
|
readonly required: false;
|
|
292
|
-
}
|
|
371
|
+
}>;
|
|
293
372
|
};
|
|
294
373
|
readonly methods: {
|
|
295
374
|
edit: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrale-domains/issues",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
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.
|
|
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.
|
|
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.
|
|
38
|
-
"@astrale-os/shell-react": "0.
|
|
39
|
-
"@astrale-os/ui": "0.3.0-beta.
|
|
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.
|
|
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": "^
|
|
61
|
+
"vitest": "^5.0.1"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=22.13"
|