-8
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/knot.tsp
-8
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/knot.tsp
-24
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label.op.tsp
-24
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label.op.tsp
···
1
-
import "@typelex/emitter";
2
-
3
-
namespace sh.tangled.label.`op` {
4
-
@rec("tid")
5
-
model Main {
6
-
/** The subject (task, pull or discussion) of this label. Appviews may apply a `scope` check and refuse this op. */
7
-
@required
8
-
subject: atUri;
9
-
10
-
@required performedAt: datetime;
11
-
@required add: Operand[];
12
-
@required delete: Operand[];
13
-
}
14
-
15
-
model Operand {
16
-
/** ATURI to the label definition */
17
-
@required
18
-
key: atUri;
19
-
20
-
/** Stringified value of the label. This is first unstringed by appviews and then interpreted as a concrete value. */
21
-
@required
22
-
value: string;
23
-
}
24
-
}
+29
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label/op.tsp
+29
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label/op.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.label.`op` {
4
+
@rec("tid")
5
+
model Main {
6
+
@doc("The subject (task, pull or discussion) of this label. Appviews may apply a `scope` check and refuse this op.")
7
+
@required
8
+
subject: atUri;
9
+
10
+
@required
11
+
add: Operand[];
12
+
13
+
@required
14
+
delete: Operand[];
15
+
16
+
@required
17
+
performedAt: datetime;
18
+
}
19
+
20
+
model Operand {
21
+
@doc("ATURI to the label definition")
22
+
@required
23
+
key: atUri;
24
+
25
+
@doc("Stringified value of the label. This is first unstringed by appviews and then interpreted as a concrete value.")
26
+
@required
27
+
value: string;
28
+
}
29
+
}
-81
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/pipeline.tsp
-81
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/pipeline.tsp
···
1
-
import "@typelex/emitter";
2
-
3
-
namespace sh.tangled.pipeline {
4
-
@rec("tid")
5
-
model Main {
6
-
@required triggerMetadata: TriggerMetadata;
7
-
@required workflows: Workflow[];
8
-
}
9
-
10
-
@closed
11
-
@inline
12
-
union TriggerKind {
13
-
"push",
14
-
"pull_request",
15
-
"manual",
16
-
}
17
-
18
-
model TriggerMetadata {
19
-
@required kind: TriggerKind;
20
-
@required repo: TriggerRepo;
21
-
22
-
push?: PushTriggerData;
23
-
pullRequest?: PullRequestTriggerData;
24
-
manual?: ManualTriggerData;
25
-
}
26
-
27
-
model TriggerRepo {
28
-
@required knot: string;
29
-
@required did: did;
30
-
@required repo: string;
31
-
@required defaultBranch: string;
32
-
}
33
-
34
-
model PushTriggerData {
35
-
@required ref: string;
36
-
37
-
@minLength(40)
38
-
@maxLength(40)
39
-
@required
40
-
newSha: string;
41
-
42
-
@minLength(40)
43
-
@maxLength(40)
44
-
@required
45
-
oldSha: string;
46
-
}
47
-
48
-
model PullRequestTriggerData {
49
-
@required sourceBranch: string;
50
-
@required targetBranch: string;
51
-
52
-
@minLength(40)
53
-
@maxLength(40)
54
-
@required
55
-
sourceSha: string;
56
-
57
-
@required action: string;
58
-
}
59
-
60
-
model ManualTriggerData {
61
-
inputs?: Pair[];
62
-
}
63
-
64
-
model Workflow {
65
-
@required name: string;
66
-
@required engine: string;
67
-
@required clone: CloneOpts;
68
-
@required raw: string;
69
-
}
70
-
71
-
model CloneOpts {
72
-
@required skip: boolean;
73
-
@required depth: integer;
74
-
@required submodules: boolean;
75
-
}
76
-
77
-
model Pair {
78
-
@required key: string;
79
-
@required value: string;
80
-
}
81
-
}
+30
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo.tsp
+30
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo {
4
+
@rec("tid")
5
+
model Main {
6
+
@doc("name of the repo")
7
+
@required
8
+
name: string;
9
+
10
+
@doc("knot where the repo was created")
11
+
@required
12
+
knot: string;
13
+
14
+
@doc("CI runner to send jobs to and receive results from")
15
+
spindle?: string;
16
+
17
+
@minGraphemes(1)
18
+
@maxGraphemes(140)
19
+
description?: string;
20
+
21
+
@doc("source of the repo")
22
+
source?: uri;
23
+
24
+
@doc("List of labels that this repo subscribes to")
25
+
labels?: atUri[];
26
+
27
+
@required
28
+
createdAt: datetime;
29
+
}
30
+
}
+20
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/addSecret.tsp
+20
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/addSecret.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.addSecret {
4
+
@procedure
5
+
@doc("Add a CI secret")
6
+
op main(input: {
7
+
@required
8
+
repo: atUri;
9
+
10
+
@required
11
+
@maxLength(50)
12
+
@minLength(1)
13
+
key: string;
14
+
15
+
@required
16
+
@maxLength(200)
17
+
@minLength(1)
18
+
value: string;
19
+
}): void;
20
+
}
+44
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/archive.tsp
+44
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/archive.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.archive {
4
+
@query
5
+
@encoding("*/*")
6
+
@errors(RepoNotFound, RefNotFound, InvalidRequest, ArchiveError)
7
+
op main(
8
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
9
+
@required
10
+
repo: string,
11
+
12
+
@doc("Git reference (branch, tag, or commit SHA)")
13
+
@required
14
+
ref: string,
15
+
16
+
@doc("Archive format")
17
+
format?: ArchiveFormat = "tar.gz",
18
+
19
+
@doc("Prefix for files in the archive")
20
+
prefix?: string
21
+
): never;
22
+
23
+
@closed
24
+
@inline
25
+
union ArchiveFormat {
26
+
"tar",
27
+
"zip",
28
+
"tar.gz",
29
+
"tar.bz2",
30
+
"tar.xz"
31
+
}
32
+
33
+
@doc("Repository not found or access denied")
34
+
model RepoNotFound {}
35
+
36
+
@doc("Git reference not found")
37
+
model RefNotFound {}
38
+
39
+
@doc("Invalid request parameters")
40
+
model InvalidRequest {}
41
+
42
+
@doc("Failed to create archive")
43
+
model ArchiveError {}
44
+
}
+28
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/artifact.tsp
+28
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/artifact.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.artifact {
4
+
@rec("tid")
5
+
model Main {
6
+
@doc("name of the artifact")
7
+
@required
8
+
name: string;
9
+
10
+
@doc("repo that this artifact is being uploaded to")
11
+
@required
12
+
repo: atUri;
13
+
14
+
@doc("hash of the tag object that this artifact is attached to (only annotated tags are supported)")
15
+
@required
16
+
@minBytes(20)
17
+
@maxBytes(20)
18
+
tag: bytes;
19
+
20
+
@doc("time of creation of this artifact")
21
+
@required
22
+
createdAt: datetime;
23
+
24
+
@doc("the artifact")
25
+
@required
26
+
artifact: Blob<#["*/*"], 52428800>;
27
+
}
28
+
}
+100
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/blob.tsp
+100
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/blob.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.blob {
4
+
@query
5
+
@errors(RepoNotFound, RefNotFound, FileNotFound, InvalidRequest)
6
+
op main(
7
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
8
+
@required
9
+
repo: string,
10
+
11
+
@doc("Git reference (branch, tag, or commit SHA)")
12
+
@required
13
+
ref: string,
14
+
15
+
@doc("Path to the file within the repository")
16
+
@required
17
+
path: string,
18
+
19
+
@doc("Return raw file content instead of JSON response")
20
+
raw?: boolean = false
21
+
): {
22
+
@doc("The git reference used")
23
+
@required
24
+
ref: string;
25
+
26
+
@doc("The file path")
27
+
@required
28
+
path: string;
29
+
30
+
@doc("File content (base64 encoded for binary files)")
31
+
@required
32
+
content: string;
33
+
34
+
@doc("Content encoding")
35
+
encoding?: ContentEncoding;
36
+
37
+
@doc("File size in bytes")
38
+
size?: integer;
39
+
40
+
@doc("Whether the file is binary")
41
+
isBinary?: boolean;
42
+
43
+
@doc("MIME type of the file")
44
+
mimeType?: string;
45
+
46
+
lastCommit?: LastCommit;
47
+
};
48
+
49
+
@closed
50
+
@inline
51
+
union ContentEncoding {
52
+
"utf-8",
53
+
"base64"
54
+
}
55
+
56
+
model LastCommit {
57
+
@doc("Commit hash")
58
+
@required
59
+
hash: string;
60
+
61
+
@doc("Short commit hash")
62
+
shortHash?: string;
63
+
64
+
@doc("Commit message")
65
+
@required
66
+
message: string;
67
+
68
+
author?: Signature;
69
+
70
+
@doc("Commit timestamp")
71
+
@required
72
+
when: datetime;
73
+
}
74
+
75
+
model Signature {
76
+
@doc("Author name")
77
+
@required
78
+
name: string;
79
+
80
+
@doc("Author email")
81
+
@required
82
+
email: string;
83
+
84
+
@doc("Author timestamp")
85
+
@required
86
+
when: datetime;
87
+
}
88
+
89
+
@doc("Repository not found or access denied")
90
+
model RepoNotFound {}
91
+
92
+
@doc("Git reference not found")
93
+
model RefNotFound {}
94
+
95
+
@doc("File not found at the specified path")
96
+
model FileNotFound {}
97
+
98
+
@doc("Invalid request parameters")
99
+
model InvalidRequest {}
100
+
}
+61
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branch.tsp
+61
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branch.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.branch {
4
+
@query
5
+
@errors(RepoNotFound, BranchNotFound, InvalidRequest)
6
+
op main(
7
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
8
+
@required
9
+
repo: string,
10
+
11
+
@doc("Branch name to get information for")
12
+
@required
13
+
name: string
14
+
): {
15
+
@doc("Branch name")
16
+
@required
17
+
name: string;
18
+
19
+
@doc("Latest commit hash on this branch")
20
+
@required
21
+
hash: string;
22
+
23
+
@doc("Short commit hash")
24
+
shortHash?: string;
25
+
26
+
@doc("Timestamp of latest commit")
27
+
@required
28
+
when: datetime;
29
+
30
+
@doc("Latest commit message")
31
+
message?: string;
32
+
33
+
author?: Signature;
34
+
35
+
@doc("Whether this is the default branch")
36
+
isDefault?: boolean;
37
+
};
38
+
39
+
model Signature {
40
+
@doc("Author name")
41
+
@required
42
+
name: string;
43
+
44
+
@doc("Author email")
45
+
@required
46
+
email: string;
47
+
48
+
@doc("Author timestamp")
49
+
@required
50
+
when: datetime;
51
+
}
52
+
53
+
@doc("Repository not found or access denied")
54
+
model RepoNotFound {}
55
+
56
+
@doc("Branch not found")
57
+
model BranchNotFound {}
58
+
59
+
@doc("Invalid request parameters")
60
+
model InvalidRequest {}
61
+
}
+26
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branches.tsp
+26
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branches.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.branches {
4
+
@query
5
+
@encoding("*/*")
6
+
@errors(RepoNotFound, InvalidRequest)
7
+
op main(
8
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
9
+
@required
10
+
repo: string,
11
+
12
+
@doc("Maximum number of branches to return")
13
+
@minValue(1)
14
+
@maxValue(100)
15
+
limit?: integer = 50,
16
+
17
+
@doc("Pagination cursor")
18
+
cursor?: string
19
+
): never;
20
+
21
+
@doc("Repository not found or access denied")
22
+
model RepoNotFound {}
23
+
24
+
@doc("Invalid request parameters")
25
+
model InvalidRequest {}
26
+
}
+16
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/collaborator.tsp
+16
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/collaborator.tsp
+32
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/compare.tsp
+32
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/compare.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.compare {
4
+
@query
5
+
@encoding("*/*")
6
+
@errors(RepoNotFound, RevisionNotFound, InvalidRequest, CompareError)
7
+
op main(
8
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
9
+
@required
10
+
repo: string,
11
+
12
+
@doc("First revision (commit, branch, or tag)")
13
+
@required
14
+
rev1: string,
15
+
16
+
@doc("Second revision (commit, branch, or tag)")
17
+
@required
18
+
rev2: string
19
+
): never;
20
+
21
+
@doc("Repository not found or access denied")
22
+
model RepoNotFound {}
23
+
24
+
@doc("One or both revisions not found")
25
+
model RevisionNotFound {}
26
+
27
+
@doc("Invalid request parameters")
28
+
model InvalidRequest {}
29
+
30
+
@doc("Failed to compare revisions")
31
+
model CompareError {}
32
+
}
+17
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/create.tsp
+17
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/create.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.create {
4
+
@procedure
5
+
@doc("Create a new repository")
6
+
op main(input: {
7
+
@doc("Rkey of the repository record")
8
+
@required
9
+
rkey: string;
10
+
11
+
@doc("Default branch to push to")
12
+
defaultBranch?: string;
13
+
14
+
@doc("A source URL to clone from, populate this when forking or importing a repository.")
15
+
source?: string;
16
+
}): void;
17
+
}
+19
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/delete.tsp
+19
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/delete.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.delete {
4
+
@procedure
5
+
@doc("Delete a repository")
6
+
op main(input: {
7
+
@doc("DID of the repository owner")
8
+
@required
9
+
did: did;
10
+
11
+
@doc("Name of the repository to delete")
12
+
@required
13
+
name: string;
14
+
15
+
@doc("Rkey of the repository record")
16
+
@required
17
+
rkey: string;
18
+
}): void;
19
+
}
+25
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/diff.tsp
+25
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/diff.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.diff {
4
+
@query
5
+
@encoding("*/*")
6
+
@errors(RepoNotFound, RefNotFound, InvalidRequest)
7
+
op main(
8
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
9
+
@required
10
+
repo: string,
11
+
12
+
@doc("Git reference (branch, tag, or commit SHA)")
13
+
@required
14
+
ref: string
15
+
): never;
16
+
17
+
@doc("Repository not found or access denied")
18
+
model RepoNotFound {}
19
+
20
+
@doc("Git reference not found")
21
+
model RefNotFound {}
22
+
23
+
@doc("Invalid request parameters")
24
+
model InvalidRequest {}
25
+
}
+31
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkStatus.tsp
+31
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkStatus.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.forkStatus {
4
+
@procedure
5
+
@doc("Check fork status relative to upstream source")
6
+
op main(input: {
7
+
@doc("DID of the fork owner")
8
+
@required
9
+
did: did;
10
+
11
+
@doc("Name of the forked repository")
12
+
@required
13
+
name: string;
14
+
15
+
@doc("Source repository URL")
16
+
@required
17
+
source: string;
18
+
19
+
@doc("Branch to check status for")
20
+
@required
21
+
branch: string;
22
+
23
+
@doc("Hidden ref to use for comparison")
24
+
@required
25
+
hiddenRef: string;
26
+
}): {
27
+
@doc("Fork status: 0=UpToDate, 1=FastForwardable, 2=Conflict, 3=MissingBranch")
28
+
@required
29
+
status: integer;
30
+
};
31
+
}
+23
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkSync.tsp
+23
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkSync.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.forkSync {
4
+
@procedure
5
+
@doc("Sync a forked repository with its upstream source")
6
+
op main(input: {
7
+
@doc("DID of the fork owner")
8
+
@required
9
+
did: did;
10
+
11
+
@doc("AT-URI of the source repository")
12
+
@required
13
+
source: atUri;
14
+
15
+
@doc("Name of the forked repository")
16
+
@required
17
+
name: string;
18
+
19
+
@doc("Branch to sync")
20
+
@required
21
+
branch: string;
22
+
}): void;
23
+
}
+51
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/getDefaultBranch.tsp
+51
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/getDefaultBranch.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.getDefaultBranch {
4
+
@query
5
+
@errors(RepoNotFound, InvalidRequest)
6
+
op main(
7
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
8
+
@required
9
+
repo: string
10
+
): {
11
+
@doc("Default branch name")
12
+
@required
13
+
name: string;
14
+
15
+
@doc("Latest commit hash on default branch")
16
+
@required
17
+
hash: string;
18
+
19
+
@doc("Short commit hash")
20
+
shortHash?: string;
21
+
22
+
@doc("Timestamp of latest commit")
23
+
@required
24
+
when: datetime;
25
+
26
+
@doc("Latest commit message")
27
+
message?: string;
28
+
29
+
author?: Signature;
30
+
};
31
+
32
+
model Signature {
33
+
@doc("Author name")
34
+
@required
35
+
name: string;
36
+
37
+
@doc("Author email")
38
+
@required
39
+
email: string;
40
+
41
+
@doc("Author timestamp")
42
+
@required
43
+
when: datetime;
44
+
}
45
+
46
+
@doc("Repository not found or access denied")
47
+
model RepoNotFound {}
48
+
49
+
@doc("Invalid request parameters")
50
+
model InvalidRequest {}
51
+
}
+59
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/languages.tsp
+59
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/languages.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.languages {
4
+
@query
5
+
@errors(RepoNotFound, RefNotFound, InvalidRequest)
6
+
op main(
7
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
8
+
@required
9
+
repo: string,
10
+
11
+
@doc("Git reference (branch, tag, or commit SHA)")
12
+
ref?: string = "HEAD"
13
+
): {
14
+
@doc("The git reference used")
15
+
@required
16
+
ref: string;
17
+
18
+
@required
19
+
languages: Language[];
20
+
21
+
@doc("Total size of all analyzed files in bytes")
22
+
totalSize?: integer;
23
+
24
+
@doc("Total number of files analyzed")
25
+
totalFiles?: integer;
26
+
};
27
+
28
+
model Language {
29
+
@doc("Programming language name")
30
+
@required
31
+
name: string;
32
+
33
+
@doc("Total size of files in this language (bytes)")
34
+
@required
35
+
size: integer;
36
+
37
+
@doc("Percentage of total codebase (0-100)")
38
+
@required
39
+
percentage: integer;
40
+
41
+
@doc("Number of files in this language")
42
+
fileCount?: integer;
43
+
44
+
@doc("Hex color code for this language")
45
+
color?: string;
46
+
47
+
@doc("File extensions associated with this language")
48
+
extensions?: string[];
49
+
}
50
+
51
+
@doc("Repository not found or access denied")
52
+
model RepoNotFound {}
53
+
54
+
@doc("Git reference not found")
55
+
model RefNotFound {}
56
+
57
+
@doc("Invalid request parameters")
58
+
model InvalidRequest {}
59
+
}
+28
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/listSecrets.tsp
+28
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/listSecrets.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.listSecrets {
4
+
@query
5
+
op main(
6
+
@required
7
+
repo: atUri
8
+
): {
9
+
@required
10
+
secrets: Secret[];
11
+
};
12
+
13
+
model Secret {
14
+
@required
15
+
repo: atUri;
16
+
17
+
@required
18
+
@maxLength(50)
19
+
@minLength(1)
20
+
key: string;
21
+
22
+
@required
23
+
createdAt: datetime;
24
+
25
+
@required
26
+
createdBy: did;
27
+
}
28
+
}
+39
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/log.tsp
+39
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/log.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.log {
4
+
@query
5
+
@encoding("*/*")
6
+
@errors(RepoNotFound, RefNotFound, PathNotFound, InvalidRequest)
7
+
op main(
8
+
@doc("Repository identifier in format 'did:plc:.../repoName'")
9
+
@required
10
+
repo: string,
11
+
12
+
@doc("Git reference (branch, tag, or commit SHA)")
13
+
@required
14
+
ref: string,
15
+
16
+
@doc("Path to filter commits by")
17
+
path?: string = "",
18
+
19
+
@doc("Maximum number of commits to return")
20
+
@minValue(1)
21
+
@maxValue(100)
22
+
limit?: integer = 50,
23
+
24
+
@doc("Pagination cursor (commit SHA)")
25
+
cursor?: string
26
+
): never;
27
+
28
+
@doc("Repository not found or access denied")
29
+
model RepoNotFound {}
30
+
31
+
@doc("Git reference not found")
32
+
model RefNotFound {}
33
+
34
+
@doc("Path not found in repository")
35
+
model PathNotFound {}
36
+
37
+
@doc("Invalid request parameters")
38
+
model InvalidRequest {}
39
+
}
+35
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/merge.tsp
+35
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/merge.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.repo.merge {
4
+
@procedure
5
+
@doc("Merge a patch into a repository branch")
6
+
op main(input: {
7
+
@doc("DID of the repository owner")
8
+
@required
9
+
did: did;
10
+
11
+
@doc("Name of the repository")
12
+
@required
13
+
name: string;
14
+
15
+
@doc("Patch content to merge")
16
+
@required
17
+
patch: string;
18
+
19
+
@doc("Target branch to merge into")
20
+
@required
21
+
branch: string;
22
+
23
+
@doc("Author name for the merge commit")
24
+
authorName?: string;
25
+
26
+
@doc("Author email for the merge commit")
27
+
authorEmail?: string;
28
+
29
+
@doc("Additional commit message body")
30
+
commitBody?: string;
31
+
32
+
@doc("Merge commit message")
33
+
commitMessage?: string;
34
+
}): void;
35
+
}
+1
-1
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp
+1
-1
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp
+13
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/setDefaultBranch.tsp
+13
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/setDefaultBranch.tsp
+16
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/spindle/member.tsp
+16
packages/emitter/test/integration/lexicon-examples/input/sh/tangled/spindle/member.tsp
···
1
+
import "@typelex/emitter";
2
+
3
+
namespace sh.tangled.spindle.member {
4
+
@rec("tid")
5
+
model Main {
6
+
@required
7
+
subject: did;
8
+
9
+
@doc("spindle instance that the subject is now a member of")
10
+
@required
11
+
instance: string;
12
+
13
+
@required
14
+
createdAt: datetime;
15
+
}
16
+
}
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot/knot.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot/knot.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline/pipeline.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline/pipeline.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/defaultBranch.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/setDefaultBranch.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/defaultBranch.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/setDefaultBranch.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/repo.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/repo.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle/spindle.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle/spindle.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string/string.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string/string.json
packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string.json