@astrale-domains/issues 0.1.1

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 (37) hide show
  1. package/README.md +36 -0
  2. package/dist/schema/application/functions.js +156 -0
  3. package/dist/schema/application/index.d.ts +701 -0
  4. package/dist/schema/application/index.js +49 -0
  5. package/dist/schema/command/class.d.ts +38 -0
  6. package/dist/schema/command/class.js +13 -0
  7. package/dist/schema/command/index.d.ts +2 -0
  8. package/dist/schema/command/index.js +2 -0
  9. package/dist/schema/command/relationships.d.ts +32 -0
  10. package/dist/schema/command/relationships.js +14 -0
  11. package/dist/schema/comment/class.d.ts +34 -0
  12. package/dist/schema/comment/class.js +7 -0
  13. package/dist/schema/comment/index.d.ts +2 -0
  14. package/dist/schema/comment/index.js +2 -0
  15. package/dist/schema/comment/relationships.d.ts +32 -0
  16. package/dist/schema/comment/relationships.js +11 -0
  17. package/dist/schema/index.d.ts +7 -0
  18. package/dist/schema/index.js +6 -0
  19. package/dist/schema/issue/class.d.ts +74 -0
  20. package/dist/schema/issue/class.js +17 -0
  21. package/dist/schema/issue/index.d.ts +2 -0
  22. package/dist/schema/issue/index.js +2 -0
  23. package/dist/schema/issue/relationships.d.ts +112 -0
  24. package/dist/schema/issue/relationships.js +23 -0
  25. package/dist/schema/tag/class.d.ts +54 -0
  26. package/dist/schema/tag/class.js +10 -0
  27. package/dist/schema/tag/index.d.ts +2 -0
  28. package/dist/schema/tag/index.js +2 -0
  29. package/dist/schema/tag/relationships.d.ts +32 -0
  30. package/dist/schema/tag/relationships.js +12 -0
  31. package/dist/schema/tracker/class.d.ts +73 -0
  32. package/dist/schema/tracker/class.js +10 -0
  33. package/dist/schema/tracker/index.d.ts +2 -0
  34. package/dist/schema/tracker/index.js +2 -0
  35. package/dist/schema/tracker/relationships.d.ts +16 -0
  36. package/dist/schema/tracker/relationships.js +7 -0
  37. package/package.json +75 -0
@@ -0,0 +1,49 @@
1
+ import { KernelSchema, defineSchema, view } from '@astrale-os/sdk/schema';
2
+ import { Command, command_requested_by, command_targets_primary } from '#schema/command';
3
+ import { Comment, comment_authored_by, issue_has_comment } from '#schema/comment';
4
+ import { Issue, issue_assigned_to, issue_blocks, issue_duplicates, issue_relates_to, issue_reported_by, issue_subtask_of, tracker_contains_issue, } from '#schema/issue';
5
+ import { Tag, issue_tagged_with, tracker_contains_tag } from '#schema/tag';
6
+ import { Tracker, tracker_owned_by } from '#schema/tracker';
7
+ import { addComment, changeIssueTag, createIssue, createTag, createTracker, deleteComment, deleteIssue, deleteTag, editComment, editTag, exportTracker, listIssues, listTrackers, relateIssue, updateIssue, } from './functions.js';
8
+ export const schema = defineSchema('issues.astrale.ai', {
9
+ dependencies: { kernel: KernelSchema },
10
+ classes: {
11
+ Tracker,
12
+ Issue,
13
+ Comment,
14
+ Tag,
15
+ Command,
16
+ tracker_owned_by,
17
+ tracker_contains_issue,
18
+ issue_reported_by,
19
+ issue_assigned_to,
20
+ issue_blocks,
21
+ issue_duplicates,
22
+ issue_relates_to,
23
+ issue_subtask_of,
24
+ issue_has_comment,
25
+ comment_authored_by,
26
+ tracker_contains_tag,
27
+ issue_tagged_with,
28
+ command_requested_by,
29
+ command_targets_primary,
30
+ },
31
+ functions: {
32
+ listTrackers,
33
+ createTracker,
34
+ listIssues,
35
+ createIssue,
36
+ updateIssue,
37
+ deleteIssue,
38
+ addComment,
39
+ editComment,
40
+ deleteComment,
41
+ createTag,
42
+ editTag,
43
+ deleteTag,
44
+ changeIssueTag,
45
+ relateIssue,
46
+ exportTracker,
47
+ },
48
+ views: { application: view({}) },
49
+ });
@@ -0,0 +1,38 @@
1
+ export declare const Command: import("@astrale-os/sdk/schema").NodeClass<{
2
+ readonly depth: 1;
3
+ readonly abstract: false;
4
+ readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
6
+ readonly origin: "kernel.astrale.ai";
7
+ };
8
+ readonly kind: 'node';
9
+ readonly abstract: true;
10
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
11
+ readonly origin: "kernel.astrale.ai";
12
+ }, "kernel.astrale.ai:class.Timestamped", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
+ readonly origin: "kernel.astrale.ai";
15
+ };
16
+ readonly kind: 'node';
17
+ readonly abstract: true;
18
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
+ readonly origin: "kernel.astrale.ai";
20
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never>];
21
+ readonly properties: {
22
+ readonly kind: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "kind", "self">;
23
+ readonly idempotencyKey: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "idempotencyKey", "self">;
24
+ readonly fingerprint: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "fingerprint", "self">;
25
+ readonly changed: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<boolean, boolean, true, "changed", "self">;
26
+ readonly reference: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, false, "reference", "self">;
27
+ };
28
+ readonly methods: Readonly<Record<never, never>>;
29
+ readonly effectiveProperties: (import("@astrale-os/sdk/schema").AuthoredPropertyProjection<boolean, boolean, true, "changed", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "fingerprint", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "idempotencyKey", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "kind", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, false, "reference", "self">) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
30
+ readonly name: "createdAt";
31
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.createdAt";
32
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
33
+ readonly name: "updatedAt";
34
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.updatedAt";
35
+ });
36
+ readonly effectiveInstanceMethods: never;
37
+ readonly effectiveStaticMethods: never;
38
+ }>;
@@ -0,0 +1,13 @@
1
+ import { K, nodeClass, property } from '@astrale-os/sdk/schema';
2
+ import { z } from 'zod';
3
+ export const Command = nodeClass({
4
+ description: 'Private exact-once receipt for one caller command.',
5
+ extends: [K.classes.Timestamped],
6
+ properties: {
7
+ kind: z.string().min(1).max(80),
8
+ idempotencyKey: z.string().min(1).max(200),
9
+ fingerprint: z.string().min(1).max(500),
10
+ changed: z.boolean(),
11
+ reference: property(z.string().min(1).max(80), { required: false }),
12
+ },
13
+ });
@@ -0,0 +1,2 @@
1
+ export { Command } from './class.js';
2
+ export { command_requested_by, command_targets_primary } from './relationships.js';
@@ -0,0 +1,2 @@
1
+ export { Command } from './class.js';
2
+ export { command_requested_by, command_targets_primary } from './relationships.js';
@@ -0,0 +1,32 @@
1
+ export declare const command_requested_by: 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: "command";
8
+ readonly outgoing: "1";
9
+ };
10
+ readonly target: {
11
+ readonly as: "requester";
12
+ readonly incoming: "0..*";
13
+ };
14
+ readonly constraints: Record<never, never>;
15
+ readonly effectiveProperties: never;
16
+ }>;
17
+ export declare const command_targets_primary: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
18
+ readonly depth: 0;
19
+ readonly abstract: false;
20
+ readonly extends: readonly [];
21
+ readonly properties: never;
22
+ readonly source: {
23
+ readonly as: "command";
24
+ readonly outgoing: "0..1";
25
+ };
26
+ readonly target: {
27
+ readonly as: "primary";
28
+ readonly incoming: "0..*";
29
+ };
30
+ readonly constraints: Record<never, never>;
31
+ readonly effectiveProperties: never;
32
+ }>;
@@ -0,0 +1,14 @@
1
+ import { K, edgeClass } from '@astrale-os/sdk/schema';
2
+ import { Comment } from '#schema/comment';
3
+ import { Issue } from '#schema/issue';
4
+ import { Tag } from '#schema/tag';
5
+ import { Tracker } from '#schema/tracker';
6
+ import { Command } from './class.js';
7
+ export const command_requested_by = edgeClass.directed({
8
+ source: { as: 'command', accepts: [Command], outgoing: '1' },
9
+ target: { as: 'requester', accepts: [K.classes.Identity], incoming: '0..*' },
10
+ });
11
+ export const command_targets_primary = edgeClass.directed({
12
+ source: { as: 'command', accepts: [Command], outgoing: '0..1' },
13
+ target: { as: 'primary', accepts: [Tracker, Issue, Comment, Tag], incoming: '0..*' },
14
+ });
@@ -0,0 +1,34 @@
1
+ export declare const Comment: import("@astrale-os/sdk/schema").NodeClass<{
2
+ readonly depth: 1;
3
+ readonly abstract: false;
4
+ readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
6
+ readonly origin: "kernel.astrale.ai";
7
+ };
8
+ readonly kind: 'node';
9
+ readonly abstract: true;
10
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
11
+ readonly origin: "kernel.astrale.ai";
12
+ }, "kernel.astrale.ai:class.Timestamped", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
+ readonly origin: "kernel.astrale.ai";
15
+ };
16
+ readonly kind: 'node';
17
+ readonly abstract: true;
18
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
+ readonly origin: "kernel.astrale.ai";
20
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never>];
21
+ readonly properties: {
22
+ readonly body: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "body", "self">;
23
+ };
24
+ readonly methods: Readonly<Record<never, never>>;
25
+ readonly effectiveProperties: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "body", "self"> | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
26
+ readonly name: "createdAt";
27
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.createdAt";
28
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
29
+ readonly name: "updatedAt";
30
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.updatedAt";
31
+ });
32
+ readonly effectiveInstanceMethods: never;
33
+ readonly effectiveStaticMethods: never;
34
+ }>;
@@ -0,0 +1,7 @@
1
+ import { K, nodeClass } from '@astrale-os/sdk/schema';
2
+ import { z } from 'zod';
3
+ export const Comment = nodeClass({
4
+ description: 'One authored discussion entry attached to an Issue.',
5
+ extends: [K.classes.Timestamped],
6
+ properties: { body: z.string().min(1).max(50_000) },
7
+ });
@@ -0,0 +1,2 @@
1
+ export { Comment } from './class.js';
2
+ export { comment_authored_by, issue_has_comment } from './relationships.js';
@@ -0,0 +1,2 @@
1
+ export { Comment } from './class.js';
2
+ export { comment_authored_by, issue_has_comment } from './relationships.js';
@@ -0,0 +1,32 @@
1
+ export declare const issue_has_comment: 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: "issue";
8
+ readonly outgoing: "0..*";
9
+ };
10
+ readonly target: {
11
+ readonly as: "comment";
12
+ readonly incoming: "1";
13
+ };
14
+ readonly constraints: Record<never, never>;
15
+ readonly effectiveProperties: never;
16
+ }>;
17
+ export declare const comment_authored_by: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
18
+ readonly depth: 0;
19
+ readonly abstract: false;
20
+ readonly extends: readonly [];
21
+ readonly properties: never;
22
+ readonly source: {
23
+ readonly as: "comment";
24
+ readonly outgoing: "1";
25
+ };
26
+ readonly target: {
27
+ readonly as: "author";
28
+ readonly incoming: "0..*";
29
+ };
30
+ readonly constraints: Record<never, never>;
31
+ readonly effectiveProperties: never;
32
+ }>;
@@ -0,0 +1,11 @@
1
+ import { K, edgeClass } from '@astrale-os/sdk/schema';
2
+ import { Issue } from '#schema/issue';
3
+ import { Comment } from './class.js';
4
+ export const issue_has_comment = edgeClass.directed({
5
+ source: { as: 'issue', accepts: [Issue], outgoing: '0..*' },
6
+ target: { as: 'comment', accepts: [Comment], incoming: '1' },
7
+ });
8
+ export const comment_authored_by = edgeClass.directed({
9
+ source: { as: 'comment', accepts: [Comment], outgoing: '1' },
10
+ target: { as: 'author', accepts: [K.classes.Identity], incoming: '0..*' },
11
+ });
@@ -0,0 +1,7 @@
1
+ export { schema } from './application/index.js';
2
+ export type { IssuesDomain, IssuesSchema } from './application/index.js';
3
+ export { Command, command_requested_by, command_targets_primary } from './command/index.js';
4
+ export { Comment, comment_authored_by, issue_has_comment } from './comment/index.js';
5
+ export { Issue, issue_assigned_to, issue_blocks, issue_duplicates, issue_relates_to, issue_reported_by, issue_subtask_of, tracker_contains_issue, } from './issue/index.js';
6
+ export { Tag, issue_tagged_with, tracker_contains_tag } from './tag/index.js';
7
+ export { Tracker, tracker_owned_by } from './tracker/index.js';
@@ -0,0 +1,6 @@
1
+ export { schema } from './application/index.js';
2
+ export { Command, command_requested_by, command_targets_primary } from './command/index.js';
3
+ export { Comment, comment_authored_by, issue_has_comment } from './comment/index.js';
4
+ export { Issue, issue_assigned_to, issue_blocks, issue_duplicates, issue_relates_to, issue_reported_by, issue_subtask_of, tracker_contains_issue, } from './issue/index.js';
5
+ export { Tag, issue_tagged_with, tracker_contains_tag } from './tag/index.js';
6
+ export { Tracker, tracker_owned_by } from './tracker/index.js';
@@ -0,0 +1,74 @@
1
+ export declare const Issue: import("@astrale-os/sdk/schema").NodeClass<{
2
+ readonly depth: 1;
3
+ readonly abstract: false;
4
+ readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
6
+ readonly origin: "kernel.astrale.ai";
7
+ };
8
+ readonly kind: 'node';
9
+ readonly abstract: true;
10
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
11
+ readonly origin: "kernel.astrale.ai";
12
+ }, "kernel.astrale.ai:class.Named", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
+ readonly origin: "kernel.astrale.ai";
15
+ };
16
+ readonly kind: 'node';
17
+ readonly abstract: true;
18
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
+ readonly origin: "kernel.astrale.ai";
20
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
21
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
22
+ readonly origin: "kernel.astrale.ai";
23
+ };
24
+ readonly kind: 'node';
25
+ readonly abstract: true;
26
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Descriptable"> & {
27
+ readonly origin: "kernel.astrale.ai";
28
+ }, "kernel.astrale.ai:class.Descriptable", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
29
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
30
+ readonly origin: "kernel.astrale.ai";
31
+ };
32
+ readonly kind: 'node';
33
+ readonly abstract: true;
34
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
35
+ readonly origin: "kernel.astrale.ai";
36
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, false, "description", "kernel.astrale.ai:class.Descriptable.property.description">, never, never>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
37
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
38
+ readonly origin: "kernel.astrale.ai";
39
+ };
40
+ readonly kind: 'node';
41
+ readonly abstract: true;
42
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
43
+ readonly origin: "kernel.astrale.ai";
44
+ }, "kernel.astrale.ai:class.Timestamped", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
45
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
46
+ readonly origin: "kernel.astrale.ai";
47
+ };
48
+ readonly kind: 'node';
49
+ readonly abstract: true;
50
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
51
+ readonly origin: "kernel.astrale.ai";
52
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never>];
53
+ readonly properties: {
54
+ readonly reference: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "reference", "self">;
55
+ readonly status: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<"canceled" | "in_progress" | "open" | "resolved", "canceled" | "in_progress" | "open" | "resolved", true, "status", "self">;
56
+ readonly priority: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<number, number, true, "priority", "self">;
57
+ };
58
+ readonly methods: Readonly<Record<never, never>>;
59
+ readonly effectiveProperties: (import("@astrale-os/sdk/schema").AuthoredPropertyProjection<number, number, true, "priority", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "reference", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<"canceled" | "in_progress" | "open" | "resolved", "canceled" | "in_progress" | "open" | "resolved", true, "status", "self">) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, false> & {
60
+ readonly name: "description";
61
+ readonly key: "kernel.astrale.ai:class.Descriptable.property.description";
62
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
63
+ readonly name: "createdAt";
64
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.createdAt";
65
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
66
+ readonly name: "name";
67
+ readonly key: "kernel.astrale.ai:class.Named.property.name";
68
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
69
+ readonly name: "updatedAt";
70
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.updatedAt";
71
+ });
72
+ readonly effectiveInstanceMethods: never;
73
+ readonly effectiveStaticMethods: never;
74
+ }>;
@@ -0,0 +1,17 @@
1
+ import { K, nodeClass } from '@astrale-os/sdk/schema';
2
+ import { z } from 'zod';
3
+ const statuses = [
4
+ 'open',
5
+ 'in_progress',
6
+ 'resolved',
7
+ 'canceled',
8
+ ];
9
+ export const Issue = nodeClass({
10
+ description: 'One numbered work item contained by exactly one Tracker.',
11
+ extends: [K.classes.Named, K.classes.Descriptable, K.classes.Timestamped],
12
+ properties: {
13
+ reference: z.string().min(1).max(32),
14
+ status: z.enum(statuses),
15
+ priority: z.number().int().min(0).max(4),
16
+ },
17
+ });
@@ -0,0 +1,2 @@
1
+ export { Issue } from './class.js';
2
+ export { issue_assigned_to, issue_blocks, issue_duplicates, issue_relates_to, issue_reported_by, issue_subtask_of, tracker_contains_issue, } from './relationships.js';
@@ -0,0 +1,2 @@
1
+ export { Issue } from './class.js';
2
+ export { issue_assigned_to, issue_blocks, issue_duplicates, issue_relates_to, issue_reported_by, issue_subtask_of, tracker_contains_issue, } from './relationships.js';
@@ -0,0 +1,112 @@
1
+ export declare const tracker_contains_issue: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
2
+ readonly depth: 0;
3
+ readonly abstract: false;
4
+ readonly extends: readonly [];
5
+ readonly properties: never;
6
+ readonly source: {
7
+ readonly as: "tracker";
8
+ readonly outgoing: "0..*";
9
+ };
10
+ readonly target: {
11
+ readonly as: "issue";
12
+ readonly incoming: "1";
13
+ };
14
+ readonly constraints: Record<never, never>;
15
+ readonly effectiveProperties: never;
16
+ }>;
17
+ export declare const issue_reported_by: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
18
+ readonly depth: 0;
19
+ readonly abstract: false;
20
+ readonly extends: readonly [];
21
+ readonly properties: never;
22
+ readonly source: {
23
+ readonly as: "issue";
24
+ readonly outgoing: "1";
25
+ };
26
+ readonly target: {
27
+ readonly as: "reporter";
28
+ readonly incoming: "0..*";
29
+ };
30
+ readonly constraints: Record<never, never>;
31
+ readonly effectiveProperties: never;
32
+ }>;
33
+ export declare const issue_assigned_to: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
34
+ readonly depth: 0;
35
+ readonly abstract: false;
36
+ readonly extends: readonly [];
37
+ readonly properties: never;
38
+ readonly source: {
39
+ readonly as: "issue";
40
+ readonly outgoing: "0..1";
41
+ };
42
+ readonly target: {
43
+ readonly as: "assignee";
44
+ readonly incoming: "0..*";
45
+ };
46
+ readonly constraints: Record<never, never>;
47
+ readonly effectiveProperties: never;
48
+ }>;
49
+ export declare const issue_blocks: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
50
+ readonly depth: 0;
51
+ readonly abstract: false;
52
+ readonly extends: readonly [];
53
+ readonly properties: never;
54
+ readonly source: {
55
+ readonly as: "source";
56
+ readonly outgoing: "0..*";
57
+ };
58
+ readonly target: {
59
+ readonly as: "target";
60
+ readonly incoming: "0..*";
61
+ };
62
+ readonly constraints: Record<never, never>;
63
+ readonly effectiveProperties: never;
64
+ }>;
65
+ export declare const issue_duplicates: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
66
+ readonly depth: 0;
67
+ readonly abstract: false;
68
+ readonly extends: readonly [];
69
+ readonly properties: never;
70
+ readonly source: {
71
+ readonly as: "source";
72
+ readonly outgoing: "0..*";
73
+ };
74
+ readonly target: {
75
+ readonly as: "target";
76
+ readonly incoming: "0..*";
77
+ };
78
+ readonly constraints: Record<never, never>;
79
+ readonly effectiveProperties: never;
80
+ }>;
81
+ export declare const issue_relates_to: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
82
+ readonly depth: 0;
83
+ readonly abstract: false;
84
+ readonly extends: readonly [];
85
+ readonly properties: never;
86
+ readonly source: {
87
+ readonly as: "source";
88
+ readonly outgoing: "0..*";
89
+ };
90
+ readonly target: {
91
+ readonly as: "target";
92
+ readonly incoming: "0..*";
93
+ };
94
+ readonly constraints: Record<never, never>;
95
+ readonly effectiveProperties: never;
96
+ }>;
97
+ export declare const issue_subtask_of: import("@astrale-os/sdk/schema").DirectedEdgeClass<{
98
+ readonly depth: 0;
99
+ readonly abstract: false;
100
+ readonly extends: readonly [];
101
+ readonly properties: never;
102
+ readonly source: {
103
+ readonly as: "source";
104
+ readonly outgoing: "0..*";
105
+ };
106
+ readonly target: {
107
+ readonly as: "target";
108
+ readonly incoming: "0..*";
109
+ };
110
+ readonly constraints: Record<never, never>;
111
+ readonly effectiveProperties: never;
112
+ }>;
@@ -0,0 +1,23 @@
1
+ import { K, edgeClass } from '@astrale-os/sdk/schema';
2
+ import { Tracker } from '#schema/tracker';
3
+ import { Issue } from './class.js';
4
+ export const tracker_contains_issue = edgeClass.directed({
5
+ source: { as: 'tracker', accepts: [Tracker], outgoing: '0..*' },
6
+ target: { as: 'issue', accepts: [Issue], incoming: '1' },
7
+ });
8
+ export const issue_reported_by = edgeClass.directed({
9
+ source: { as: 'issue', accepts: [Issue], outgoing: '1' },
10
+ target: { as: 'reporter', accepts: [K.classes.Identity], incoming: '0..*' },
11
+ });
12
+ export const issue_assigned_to = edgeClass.directed({
13
+ source: { as: 'issue', accepts: [Issue], outgoing: '0..1' },
14
+ target: { as: 'assignee', accepts: [K.classes.Identity], incoming: '0..*' },
15
+ });
16
+ const relation = () => edgeClass.directed({
17
+ source: { as: 'source', accepts: [Issue], outgoing: '0..*' },
18
+ target: { as: 'target', accepts: [Issue], incoming: '0..*' },
19
+ });
20
+ export const issue_blocks = relation();
21
+ export const issue_duplicates = relation();
22
+ export const issue_relates_to = relation();
23
+ export const issue_subtask_of = relation();
@@ -0,0 +1,54 @@
1
+ export declare const Tag: import("@astrale-os/sdk/schema").NodeClass<{
2
+ readonly depth: 1;
3
+ readonly abstract: false;
4
+ readonly extends: readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
5
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
6
+ readonly origin: "kernel.astrale.ai";
7
+ };
8
+ readonly kind: 'node';
9
+ readonly abstract: true;
10
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Named"> & {
11
+ readonly origin: "kernel.astrale.ai";
12
+ }, "kernel.astrale.ai:class.Named", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
13
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
14
+ readonly origin: "kernel.astrale.ai";
15
+ };
16
+ readonly kind: 'node';
17
+ readonly abstract: true;
18
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
19
+ readonly origin: "kernel.astrale.ai";
20
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "name", "kernel.astrale.ai:class.Named.property.name">, never, never>, import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
21
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
22
+ readonly origin: "kernel.astrale.ai";
23
+ };
24
+ readonly kind: 'node';
25
+ readonly abstract: true;
26
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Timestamped"> & {
27
+ readonly origin: "kernel.astrale.ai";
28
+ }, "kernel.astrale.ai:class.Timestamped", readonly [import("@astrale-os/sdk/schema").ClassProjection<"node", import("@astrale-os/sdk/schema").NodeClassDefinition & {
29
+ readonly ref: import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
30
+ readonly origin: "kernel.astrale.ai";
31
+ };
32
+ readonly kind: 'node';
33
+ readonly abstract: true;
34
+ }, import("@astrale-os/sdk/schema").ClassRef & import("@astrale-os/sdk/schema").ClassRef<"Node"> & {
35
+ readonly origin: "kernel.astrale.ai";
36
+ }, "kernel.astrale.ai:class.Node", readonly import("@astrale-os/sdk/schema").AnyResolvedClass[], never, never, never, never, never, never>, ...never[]], import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never, import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "createdAt", "kernel.astrale.ai:class.Timestamped.property.createdAt"> | import("@astrale-os/sdk/schema").PropertyProjection<string | number | boolean | import("@astrale-os/sdk/schema").Array | import("@astrale-os/sdk/schema").Object | null, true, "updatedAt", "kernel.astrale.ai:class.Timestamped.property.updatedAt">, never, never>];
37
+ readonly properties: {
38
+ readonly slug: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "slug", "self">;
39
+ readonly color: import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, false, "color", "self">;
40
+ };
41
+ readonly methods: Readonly<Record<never, never>>;
42
+ readonly effectiveProperties: (import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, false, "color", "self"> | import("@astrale-os/sdk/schema").AuthoredPropertyProjection<string, string, true, "slug", "self">) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
43
+ readonly name: "createdAt";
44
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.createdAt";
45
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
46
+ readonly name: "name";
47
+ readonly key: "kernel.astrale.ai:class.Named.property.name";
48
+ }) | (import("@astrale-os/sdk/schema").ResolvedProperty<import("@astrale-os/sdk/schema").Value, true> & {
49
+ readonly name: "updatedAt";
50
+ readonly key: "kernel.astrale.ai:class.Timestamped.property.updatedAt";
51
+ });
52
+ readonly effectiveInstanceMethods: never;
53
+ readonly effectiveStaticMethods: never;
54
+ }>;
@@ -0,0 +1,10 @@
1
+ import { K, nodeClass, property } from '@astrale-os/sdk/schema';
2
+ import { z } from 'zod';
3
+ export const Tag = nodeClass({
4
+ description: 'One Tracker-local label with a canonical slug.',
5
+ extends: [K.classes.Named, K.classes.Timestamped],
6
+ properties: {
7
+ slug: z.string().min(1).max(80),
8
+ color: property(z.string().min(7).max(7), { required: false }),
9
+ },
10
+ });
@@ -0,0 +1,2 @@
1
+ export { Tag } from './class.js';
2
+ export { issue_tagged_with, tracker_contains_tag } from './relationships.js';
@@ -0,0 +1,2 @@
1
+ export { Tag } from './class.js';
2
+ export { issue_tagged_with, tracker_contains_tag } from './relationships.js';