Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
173 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS1import type { User, Viewer } from "./identity";
2import type { RepoPath } from "./repos";
3import type { Result } from "./result";
4
5/**
6 * Events, delivered to the addresses a repository or a workspace registers.
7 * Mirrors `crates/contracts/src/webhooks.rs`.
8 */
9
10/** Every event a webhook can be sent, in the order people are shown them. */
11export const EVENT_TYPES = [
12 "git.push",
Merge branch 'worktree-agent-a8b78c62188153aa3' into claude/cool-newton-7nm8r913 "git.deleted",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS14 "branch.renamed",
15 "repo.created",
16 "repo.forked",
17 "repo.updated",
18 "repo.visibility_changed",
19 "repo.renamed",
20 "repo.transferred",
21 "repo.default_branch_changed",
22 "repo.archived",
23 "repo.unarchived",
24 "repo.deleted",
25 "repo.restored",
26 "repo.purged",
27 "repo.collaborator_added",
28 "repo.collaborator_removed",
29 "repo.collaborator_role_changed",
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar30 "team.created",
31 "team.edited",
32 "team.deleted",
33 "team.member_added",
34 "team.member_role_changed",
35 "team.member_removed",
36 "team.repo_added",
37 "team.repo_role_changed",
38 "team.repo_removed",
@g1t welcomes you when you join a workspace, and that is the one introduction any agent makes. Identity now says when a person becomes a member, workspace.member_joined, by invitation, by an invite code, or by creating the workspace, and webhooks can hear it; the agents service hears it too, and for anyone who joined, never the creator, the workspace's @g1t opens your direct message and says in its own voice who it is, what to ask it, how agents answer, and where things are, once per person per workspace and charged to @g1t like any reply, with a fixed welcome when no model can be used. The agents, workspaces, authentication and webhooks guides say so.39 "workspace.member_joined",
Merge rulesets: branch and tag rules, agent-first, enforced on push and merge40 "ruleset.created",
41 "ruleset.updated",
42 "ruleset.deleted",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS43 "issue.opened",
44 "issue.updated",
45 "issue.assigned",
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar46 "issue.labeled",
47 "issue.unlabeled",
48 "issue.milestoned",
49 "issue.demilestoned",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS50 "issue.closed",
51 "issue.reopened",
52 "comment.created",
Merge Actions: cross-repo workflows and actions, release and deployment triggers, step timeouts53 "comment.edited",
54 "comment.deleted",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS55 "pull.opened",
56 "pull.ready",
57 "pull.updated",
58 "pull.merge_requested",
59 "pull.merged",
60 "pull.closed",
Merge Actions: cross-repo workflows and actions, release and deployment triggers, step timeouts61 "pull.reopened",
62 "pull.converted_to_draft",
Events: review requests, assignments, stops and deployments are published63 "pull.assigned",
64 "pull.review_requested",
65 "pull.review_request_removed",
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar66 "pull.labeled",
67 "pull.unlabeled",
68 "pull.milestoned",
69 "pull.demilestoned",
70 "pull.base_changed",
Events: review requests, assignments, stops and deployments are published71 "pull.stalled",
72 "pull.resumed",
Merge Actions: cross-repo workflows and actions, release and deployment triggers, step timeouts73 "release.created",
74 "release.published",
75 "release.released",
76 "release.prereleased",
77 "release.edited",
78 "release.unpublished",
79 "release.deleted",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS80 "agent.asked",
81 "checks.completed",
Merge checks: statuses and check runs on every commit82 "status.created",
83 "check_run.created",
84 "check_run.completed",
85 "check_run.rerequested",
86 "check_run.requested_action",
87 "check_suite.completed",
88 "check_suite.rerequested",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS89 "review.completed",
90 "workflow.completed",
Events: review requests, assignments, stops and deployments are published91 "deployment.succeeded",
92 "deployment.failed",
Merge branch 'main' into worktree-agent-a69aeabc4b0deeb9793 "deployment.created",
94 "deployment_status.created",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS95 "queue.changed",
96 "session.appended",
97 "package.published",
98 "package.version_deleted",
99 "package.deleted",
100 "package.visibility_changed",
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar101 "secret_scanning_alert.created",
102 "secret_scanning_alert.fixed",
103 "secret_scanning_alert.dismissed",
104 "secret_scanning_alert.reopened",
105 "secret_scanning.bypass_requested",
106 "secret_scanning.bypass_reviewed",
107 "code_scanning_alert.created",
108 "code_scanning_alert.fixed",
109 "code_scanning_alert.dismissed",
110 "code_scanning_alert.reopened",
111 "vulnerability_alert.created",
112 "vulnerability_alert.fixed",
113 "vulnerability_alert.dismissed",
Merge remote-tracking branch 'origin/claude/cool-newton-7nm8r9' into claude/cool-newton-7nm8r9114 "secret_scanning_alert.summary",
115 "code_scanning_alert.summary",
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar116 "vulnerability_alert.reopened",
Merge remote-tracking branch 'origin/claude/cool-newton-7nm8r9' into claude/cool-newton-7nm8r9117 "vulnerability_alert.summary",
118 "security_advisory.published",
119 "security_advisory.withdrawn",
120 "security_advisory.reported",
The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS121] as const;
122
123export type Hook = {
124 id: string;
125 scope: "repo" | "workspace";
126 workspace: string;
127 /** For a repository's webhook: `owner/name`. */
128 repo: string | null;
129 url: string;
130 /** Event types, or `["*"]` for all. */
131 events: string[];
132 active: boolean;
133 secretHint: string;
134 createdBy: string;
135 createdAt: string;
136 lastStatus: "delivered" | "pending" | "failed" | null;
137 lastDeliveredAt: string | null;
138};
139
140export type HookDelivery = {
141 id: string;
142 hookId: string;
143 eventId: string;
144 event: string;
145 status: "pending" | "delivered" | "failed";
146 attempts: number;
147 responseStatus: number | null;
148 responseBody: string | null;
149 error: string | null;
150 durationMs: number | null;
151 /** The JSON that was sent. */
152 payload: string;
153 createdAt: string;
154 deliveredAt: string | null;
155 nextAttemptAt: string | null;
156};
157
158/** A repository's webhooks, or with `repo` left out, the workspace's own. */
159export type HookOwner = { workspace: string; repo?: RepoPath };
160
161export interface WebhooksApi {
162 list(viewer: Viewer, owner: HookOwner): Promise<Result<Hook[]>>;
163 create(
164 actor: User,
165 owner: HookOwner,
166 input: { url: string; events?: string[]; secret?: string },
167 ): Promise<Result<{ hook: Hook; secret: string | null }>>;
168 update(actor: User, owner: HookOwner, id: string, input: { url?: string; events?: string[]; active?: boolean }): Promise<Result<Hook>>;
169 delete(actor: User, owner: HookOwner, id: string): Promise<Result<boolean>>;
170 ping(actor: User, owner: HookOwner, id: string): Promise<Result<HookDelivery>>;
171 deliveries(viewer: Viewer, owner: HookOwner, id: string): Promise<Result<HookDelivery[]>>;
172 redeliver(actor: User, owner: HookOwner, deliveryId: string): Promise<Result<HookDelivery>>;
173}

This file's history is long; its oldest lines are credited to the oldest commit read.