@pome-sh/checks 0.1.0
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/CHANGELOG.md +17 -0
- package/README.md +88 -0
- package/dist/_types/sdk/check-discrimination.d.ts +7 -0
- package/dist/_types/sdk/check-state-path.d.ts +71 -0
- package/dist/_types/sdk/checks.d.ts +93 -0
- package/dist/_types/sdk/db.d.ts +44 -0
- package/dist/_types/sdk/failure-injection-rules.d.ts +32 -0
- package/dist/_types/twin-github/src/check-kind.d.ts +3 -0
- package/dist/_types/twin-github/src/check-state.d.ts +77 -0
- package/dist/_types/twin-github/src/checks.d.ts +50 -0
- package/dist/_types/twin-github/src/seed.d.ts +92 -0
- package/dist/_types/twin-github/src/types.d.ts +244 -0
- package/dist/_types/twin-gmail/src/check-kind.d.ts +3 -0
- package/dist/_types/twin-gmail/src/check-state.d.ts +138 -0
- package/dist/_types/twin-gmail/src/checks.d.ts +19 -0
- package/dist/_types/twin-gmail/src/faults.d.ts +21 -0
- package/dist/_types/twin-gmail/src/seed.d.ts +247 -0
- package/dist/_types/twin-gmail/src/types.d.ts +150 -0
- package/dist/_types/twin-linear/src/check-kind.d.ts +3 -0
- package/dist/_types/twin-linear/src/check-state.d.ts +123 -0
- package/dist/_types/twin-linear/src/checks.d.ts +29 -0
- package/dist/_types/twin-linear/src/seed.d.ts +166 -0
- package/dist/_types/twin-linear/src/types.d.ts +366 -0
- package/dist/_types/twin-slack/src/check-kind.d.ts +3 -0
- package/dist/_types/twin-slack/src/check-state.d.ts +107 -0
- package/dist/_types/twin-slack/src/checks.d.ts +14 -0
- package/dist/_types/twin-slack/src/seed.d.ts +62 -0
- package/dist/_types/twin-slack/src/types.d.ts +182 -0
- package/dist/_types/twin-stripe/src/check-kind.d.ts +3 -0
- package/dist/_types/twin-stripe/src/check-state.d.ts +107 -0
- package/dist/_types/twin-stripe/src/checks.d.ts +22 -0
- package/dist/_types/twin-stripe/src/seed.d.ts +213 -0
- package/dist/_types/twin-stripe/src/types.d.ts +252 -0
- package/dist/_types/wire/index.d.ts +23 -0
- package/dist/_types/wire/otel/event-schema.d.ts +424 -0
- package/dist/_types/wire/otel/index.d.ts +25 -0
- package/dist/_types/wire/otel/legacy-shim.d.ts +105 -0
- package/dist/_types/wire/otel/map-span.d.ts +64 -0
- package/dist/_types/wire/otel/nano.d.ts +26 -0
- package/dist/_types/wire/otel/project.d.ts +42 -0
- package/dist/_types/wire/otel/semconv.d.ts +57 -0
- package/dist/_types/wire/otel/span-event.d.ts +198 -0
- package/dist/_types/wire/recorder-events.d.ts +526 -0
- package/dist/_types/wire/redaction.d.ts +2 -0
- package/dist/chunk-4WXX5VPA.js +238 -0
- package/dist/chunk-5SJ4PVO5.js +981 -0
- package/dist/chunk-GYFGMULG.js +1138 -0
- package/dist/chunk-IVENH4KX.js +814 -0
- package/dist/chunk-NORTPYDQ.js +1015 -0
- package/dist/chunk-SJ6SVRAA.js +432 -0
- package/dist/chunk-ZXE6LAM3.js +1 -0
- package/dist/dsl.d.ts +11 -0
- package/dist/dsl.js +2 -0
- package/dist/github.d.ts +2 -0
- package/dist/github.js +2 -0
- package/dist/gmail.d.ts +2 -0
- package/dist/gmail.js +2 -0
- package/dist/index.d.ts +163 -0
- package/dist/index.js +24 -0
- package/dist/linear.d.ts +2 -0
- package/dist/linear.js +2 -0
- package/dist/slack.d.ts +2 -0
- package/dist/slack.js +2 -0
- package/dist/stripe.d.ts +2 -0
- package/dist/stripe.js +2 -0
- package/package.json +93 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type { TwinDatabase } from "../../sdk/db.js";
|
|
2
|
+
export type GmailTwinDatabase = TwinDatabase;
|
|
3
|
+
export type DeliveryMode = "sender-only" | "seeded-mailboxes";
|
|
4
|
+
export type SeedLabel = {
|
|
5
|
+
id?: string;
|
|
6
|
+
name: string;
|
|
7
|
+
color?: {
|
|
8
|
+
textColor?: string;
|
|
9
|
+
backgroundColor?: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export type SeedAttachment = {
|
|
13
|
+
filename: string;
|
|
14
|
+
mimeType?: string;
|
|
15
|
+
disposition?: "attachment" | "inline";
|
|
16
|
+
contentId?: string;
|
|
17
|
+
data: string;
|
|
18
|
+
};
|
|
19
|
+
export type SeedMessage = {
|
|
20
|
+
id?: string;
|
|
21
|
+
threadId?: string;
|
|
22
|
+
raw?: string;
|
|
23
|
+
from?: string;
|
|
24
|
+
to?: string[];
|
|
25
|
+
cc?: string[];
|
|
26
|
+
bcc?: string[];
|
|
27
|
+
subject?: string;
|
|
28
|
+
text?: string;
|
|
29
|
+
html?: string;
|
|
30
|
+
date?: string;
|
|
31
|
+
messageId?: string;
|
|
32
|
+
inReplyTo?: string;
|
|
33
|
+
references?: string[];
|
|
34
|
+
labels?: string[];
|
|
35
|
+
attachments?: SeedAttachment[];
|
|
36
|
+
};
|
|
37
|
+
export type SeedDraft = Omit<SeedMessage, "labels"> & {
|
|
38
|
+
id?: string;
|
|
39
|
+
};
|
|
40
|
+
export type SeedFilter = {
|
|
41
|
+
id?: string;
|
|
42
|
+
criteria?: {
|
|
43
|
+
from?: string;
|
|
44
|
+
to?: string;
|
|
45
|
+
subject?: string;
|
|
46
|
+
query?: string;
|
|
47
|
+
negatedQuery?: string;
|
|
48
|
+
hasAttachment?: boolean;
|
|
49
|
+
excludeChats?: boolean;
|
|
50
|
+
size?: number;
|
|
51
|
+
sizeComparison?: "larger" | "smaller";
|
|
52
|
+
};
|
|
53
|
+
action?: {
|
|
54
|
+
addLabelIds?: string[];
|
|
55
|
+
removeLabelIds?: string[];
|
|
56
|
+
forward?: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
export type SeedSendAs = {
|
|
60
|
+
sendAsEmail: string;
|
|
61
|
+
displayName?: string;
|
|
62
|
+
replyToAddress?: string;
|
|
63
|
+
isPrimary?: boolean;
|
|
64
|
+
isDefault?: boolean;
|
|
65
|
+
verificationStatus?: "accepted" | "pending";
|
|
66
|
+
};
|
|
67
|
+
export type SeedMailbox = {
|
|
68
|
+
email: string;
|
|
69
|
+
displayName?: string;
|
|
70
|
+
labels?: SeedLabel[];
|
|
71
|
+
messages?: SeedMessage[];
|
|
72
|
+
drafts?: SeedDraft[];
|
|
73
|
+
filters?: SeedFilter[];
|
|
74
|
+
forwardingAddresses?: Array<{
|
|
75
|
+
forwardingEmail: string;
|
|
76
|
+
verificationStatus?: "accepted" | "pending";
|
|
77
|
+
}>;
|
|
78
|
+
sendAs?: SeedSendAs[];
|
|
79
|
+
};
|
|
80
|
+
export type GmailStateSeed = {
|
|
81
|
+
primaryMailbox: SeedMailbox;
|
|
82
|
+
mailboxes?: SeedMailbox[];
|
|
83
|
+
deliveryMode?: DeliveryMode;
|
|
84
|
+
clock?: string;
|
|
85
|
+
faults?: import("./faults.js").GmailFault[];
|
|
86
|
+
};
|
|
87
|
+
export type MessageRow = {
|
|
88
|
+
mailbox_id: number;
|
|
89
|
+
id: string;
|
|
90
|
+
thread_id: string;
|
|
91
|
+
rfc_message_id: string;
|
|
92
|
+
internal_date: number;
|
|
93
|
+
sent_at: string;
|
|
94
|
+
from_address: string;
|
|
95
|
+
to_json: string;
|
|
96
|
+
cc_json: string;
|
|
97
|
+
bcc_json: string;
|
|
98
|
+
delivered_to: string;
|
|
99
|
+
subject: string;
|
|
100
|
+
normalized_subject: string;
|
|
101
|
+
snippet: string;
|
|
102
|
+
text_body: string;
|
|
103
|
+
html_body: string;
|
|
104
|
+
headers_json: string;
|
|
105
|
+
size_estimate: number;
|
|
106
|
+
};
|
|
107
|
+
export type DraftRow = {
|
|
108
|
+
mailbox_id: number;
|
|
109
|
+
id: string;
|
|
110
|
+
message_id: string;
|
|
111
|
+
created_at: string;
|
|
112
|
+
updated_at: string;
|
|
113
|
+
};
|
|
114
|
+
export type HistoryEvent = {
|
|
115
|
+
id: string;
|
|
116
|
+
mailboxEmail: string;
|
|
117
|
+
messageId: string | null;
|
|
118
|
+
threadId: string | null;
|
|
119
|
+
type: string;
|
|
120
|
+
labelIds: string[];
|
|
121
|
+
timestamp: string;
|
|
122
|
+
};
|
|
123
|
+
export type GmailIdentity = {
|
|
124
|
+
email: string;
|
|
125
|
+
};
|
|
126
|
+
export type SemanticMessage = {
|
|
127
|
+
id: string;
|
|
128
|
+
threadId: string;
|
|
129
|
+
rfcMessageId: string;
|
|
130
|
+
internalDate: number;
|
|
131
|
+
from: string;
|
|
132
|
+
to: string[];
|
|
133
|
+
cc: string[];
|
|
134
|
+
bcc: string[];
|
|
135
|
+
subject: string;
|
|
136
|
+
snippet: string;
|
|
137
|
+
text: string;
|
|
138
|
+
html: string;
|
|
139
|
+
sizeEstimate: number;
|
|
140
|
+
labelIds: string[];
|
|
141
|
+
attachments: Array<{
|
|
142
|
+
id: string;
|
|
143
|
+
filename: string;
|
|
144
|
+
mimeType: string;
|
|
145
|
+
disposition: string;
|
|
146
|
+
contentId: string | null;
|
|
147
|
+
sha256: string;
|
|
148
|
+
size: number;
|
|
149
|
+
}>;
|
|
150
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { type CheckOutcome } from "../../sdk/checks.js";
|
|
2
|
+
export interface LinearCheckStateTeam {
|
|
3
|
+
id?: string;
|
|
4
|
+
key?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface LinearCheckStateWorkflowState {
|
|
8
|
+
id?: string;
|
|
9
|
+
teamId?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
type?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface LinearCheckStateLabel {
|
|
14
|
+
id?: string;
|
|
15
|
+
teamId?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface LinearCheckStateIssue {
|
|
19
|
+
id?: string;
|
|
20
|
+
identifier?: string;
|
|
21
|
+
number?: number;
|
|
22
|
+
teamId?: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
estimate?: number | null;
|
|
25
|
+
stateId?: string;
|
|
26
|
+
assigneeId?: string;
|
|
27
|
+
archivedAt?: string | null;
|
|
28
|
+
labelIds?: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface LinearCheckStateComment {
|
|
31
|
+
id?: string;
|
|
32
|
+
issueId?: string;
|
|
33
|
+
parentId?: string | null;
|
|
34
|
+
userId?: string;
|
|
35
|
+
body?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface LinearCheckStateUser {
|
|
38
|
+
id?: string;
|
|
39
|
+
email?: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
displayName?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface LinearCheckState {
|
|
44
|
+
teams?: LinearCheckStateTeam[] | null;
|
|
45
|
+
workflowStates?: LinearCheckStateWorkflowState[] | null;
|
|
46
|
+
labels?: LinearCheckStateLabel[] | null;
|
|
47
|
+
issues?: LinearCheckStateIssue[] | null;
|
|
48
|
+
comments?: LinearCheckStateComment[] | null;
|
|
49
|
+
users?: LinearCheckStateUser[] | null;
|
|
50
|
+
exportBounds?: {
|
|
51
|
+
truncatedCollections?: string[];
|
|
52
|
+
} | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* twin-github's `Resolved<T>` with one field added.
|
|
56
|
+
*
|
|
57
|
+
* github's resolvers always FAIL on a miss and twin-slack's always SKIP. Linear
|
|
58
|
+
* needs both from the same resolver, because a miss inside a truncated
|
|
59
|
+
* collection is evidence of a partial export while a miss in a complete one is
|
|
60
|
+
* evidence about the examinee. Carrying the disposition on the value is what
|
|
61
|
+
* stops every call site from re-deciding it — and re-deciding it wrongly is how
|
|
62
|
+
* a do-nothing agent scores 100% on task 26.
|
|
63
|
+
*/
|
|
64
|
+
export type Resolved<T> = {
|
|
65
|
+
found: T;
|
|
66
|
+
path: string;
|
|
67
|
+
} | {
|
|
68
|
+
missing: string;
|
|
69
|
+
skip: boolean;
|
|
70
|
+
searched?: string;
|
|
71
|
+
};
|
|
72
|
+
/** The exported collections a pointer can address (F-1197). Named because seven
|
|
73
|
+
* declarations reach for them. */
|
|
74
|
+
export declare const ISSUES_PATH: string;
|
|
75
|
+
export declare const COMMENTS_PATH: string;
|
|
76
|
+
export declare const LABELS_PATH: string;
|
|
77
|
+
export declare const WORKFLOW_STATES_PATH: string;
|
|
78
|
+
export declare const USERS_PATH: string;
|
|
79
|
+
/**
|
|
80
|
+
* A pointer at `key` on the row `base` addresses, falling back to the row when
|
|
81
|
+
* the export does not carry that key (F-1197).
|
|
82
|
+
*
|
|
83
|
+
* The fallback is the whole point and it is not defensive padding. An UNSET
|
|
84
|
+
* estimate and an ABSENT assignee are both real, common, and exactly the
|
|
85
|
+
* verdicts a reader wants to inspect — and a pointer at a key the row does not
|
|
86
|
+
* have resolves to nothing, which would strip the affordance from precisely
|
|
87
|
+
* those rows. Widening to the row keeps the citation honest (it is where the
|
|
88
|
+
* check looked) and resolvable (the row is there).
|
|
89
|
+
*/
|
|
90
|
+
export declare function fieldPath(base: string, row: object, key: string): string;
|
|
91
|
+
/** The one place an unresolved selector becomes an outcome.
|
|
92
|
+
*
|
|
93
|
+
* F-1197 — it also carries the citation, so the rule "a refusal names where it
|
|
94
|
+
* looked" is written once rather than at fourteen call sites. */
|
|
95
|
+
export declare function unresolved(r: {
|
|
96
|
+
missing: string;
|
|
97
|
+
skip: boolean;
|
|
98
|
+
searched?: string;
|
|
99
|
+
}): CheckOutcome;
|
|
100
|
+
export declare function isTruncated(state: LinearCheckState, collection: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* The issue an assertion is about, by exact title, scoped to one team.
|
|
103
|
+
*
|
|
104
|
+
* Exact rather than case-insensitive: the task names the title it seeded or
|
|
105
|
+
* asked for, and a case-folding match would let an examinee half-comply.
|
|
106
|
+
*/
|
|
107
|
+
export declare function resolveIssue(state: LinearCheckState, teamKey: string, title: string): Resolved<LinearCheckStateIssue>;
|
|
108
|
+
/** Trap 1: `stateId` → the team's own workflow-state row. */
|
|
109
|
+
export declare function resolveWorkflowStateName(state: LinearCheckState, issue: LinearCheckStateIssue): Resolved<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Trap 2: `labelIds` → catalog names, lowercased.
|
|
112
|
+
*
|
|
113
|
+
* Case-insensitive because the legacy rule's `eqi` was, and because a label an
|
|
114
|
+
* examinee creates is prose it retyped.
|
|
115
|
+
*/
|
|
116
|
+
export declare function resolveLabelNames(state: LinearCheckState, issue: LinearCheckStateIssue): Resolved<Set<string>>;
|
|
117
|
+
export declare function resolveComments(state: LinearCheckState, issue: LinearCheckStateIssue): Resolved<LinearCheckStateComment[]>;
|
|
118
|
+
/**
|
|
119
|
+
* Every spelling of a user the legacy `linear.issue-assignee` rule accepted —
|
|
120
|
+
* email, name, displayName — in that order, so a reason string names the most
|
|
121
|
+
* specific one first.
|
|
122
|
+
*/
|
|
123
|
+
export declare function resolveUserLabels(state: LinearCheckState, id: string | undefined): string[];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type { Check } from "./check-kind.js";
|
|
2
|
+
export type { LinearCheckState, LinearCheckStateComment, LinearCheckStateIssue, LinearCheckStateLabel, LinearCheckStateTeam, LinearCheckStateUser, LinearCheckStateWorkflowState, } from "./check-state.js";
|
|
3
|
+
export declare const LINEAR_CHECKS: readonly [import("./check-kind.js").Check<{
|
|
4
|
+
title: string;
|
|
5
|
+
team: string;
|
|
6
|
+
}>, import("./check-kind.js").Check<{
|
|
7
|
+
title: string;
|
|
8
|
+
team: string;
|
|
9
|
+
state: string;
|
|
10
|
+
}>, import("./check-kind.js").Check<{
|
|
11
|
+
title: string;
|
|
12
|
+
team: string;
|
|
13
|
+
label: string;
|
|
14
|
+
}>, import("./check-kind.js").Check<{
|
|
15
|
+
title: string;
|
|
16
|
+
team: string;
|
|
17
|
+
estimate: string;
|
|
18
|
+
}>, import("./check-kind.js").Check<{
|
|
19
|
+
title: string;
|
|
20
|
+
team: string;
|
|
21
|
+
user: string;
|
|
22
|
+
}>, import("./check-kind.js").Check<{
|
|
23
|
+
title: string;
|
|
24
|
+
team: string;
|
|
25
|
+
needle: string;
|
|
26
|
+
}>, import("./check-kind.js").Check<{
|
|
27
|
+
title: string;
|
|
28
|
+
team: string;
|
|
29
|
+
}>, import("./check-kind.js").Check<Record<string, never>>];
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type LinearStateSeed } from "./types.js";
|
|
3
|
+
export declare const linearSeedSchema: z.ZodObject<{
|
|
4
|
+
clock: z.ZodDefault<z.ZodString>;
|
|
5
|
+
defaultSid: z.ZodDefault<z.ZodString>;
|
|
6
|
+
baseUrl: z.ZodDefault<z.ZodString>;
|
|
7
|
+
strictScopes: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
organization: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
id: z.ZodOptional<z.ZodString>;
|
|
10
|
+
name: z.ZodOptional<z.ZodString>;
|
|
11
|
+
urlKey: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strict>>;
|
|
13
|
+
users: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
14
|
+
id: z.ZodOptional<z.ZodString>;
|
|
15
|
+
email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
16
|
+
name: z.ZodOptional<z.ZodString>;
|
|
17
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
18
|
+
avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
active: z.ZodDefault<z.ZodBoolean>;
|
|
20
|
+
admin: z.ZodDefault<z.ZodBoolean>;
|
|
21
|
+
app: z.ZodDefault<z.ZodBoolean>;
|
|
22
|
+
}, z.core.$strict>>>;
|
|
23
|
+
teams: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
24
|
+
id: z.ZodOptional<z.ZodString>;
|
|
25
|
+
key: z.ZodString;
|
|
26
|
+
name: z.ZodString;
|
|
27
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
28
|
+
private: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
states: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
30
|
+
id: z.ZodOptional<z.ZodString>;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
backlog: "backlog";
|
|
34
|
+
unstarted: "unstarted";
|
|
35
|
+
started: "started";
|
|
36
|
+
completed: "completed";
|
|
37
|
+
canceled: "canceled";
|
|
38
|
+
}>>;
|
|
39
|
+
position: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
}, z.core.$strict>>>;
|
|
41
|
+
}, z.core.$strict>>>;
|
|
42
|
+
labels: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
43
|
+
id: z.ZodOptional<z.ZodString>;
|
|
44
|
+
name: z.ZodString;
|
|
45
|
+
color: z.ZodOptional<z.ZodString>;
|
|
46
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
47
|
+
team: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$strict>>>;
|
|
49
|
+
projects: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
50
|
+
id: z.ZodOptional<z.ZodString>;
|
|
51
|
+
name: z.ZodString;
|
|
52
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
53
|
+
state: z.ZodDefault<z.ZodEnum<{
|
|
54
|
+
started: "started";
|
|
55
|
+
completed: "completed";
|
|
56
|
+
canceled: "canceled";
|
|
57
|
+
planned: "planned";
|
|
58
|
+
}>>;
|
|
59
|
+
team: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strict>>>;
|
|
61
|
+
cycles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
62
|
+
id: z.ZodOptional<z.ZodString>;
|
|
63
|
+
team: z.ZodString;
|
|
64
|
+
name: z.ZodString;
|
|
65
|
+
number: z.ZodOptional<z.ZodNumber>;
|
|
66
|
+
startsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
67
|
+
endsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
68
|
+
}, z.core.$strict>>>;
|
|
69
|
+
issues: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
70
|
+
id: z.ZodOptional<z.ZodString>;
|
|
71
|
+
team: z.ZodString;
|
|
72
|
+
title: z.ZodString;
|
|
73
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
74
|
+
priority: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
|
|
75
|
+
state: z.ZodOptional<z.ZodString>;
|
|
76
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
77
|
+
creator: z.ZodOptional<z.ZodString>;
|
|
78
|
+
delegate: z.ZodOptional<z.ZodString>;
|
|
79
|
+
project: z.ZodOptional<z.ZodString>;
|
|
80
|
+
cycle: z.ZodOptional<z.ZodString>;
|
|
81
|
+
parent: z.ZodOptional<z.ZodString>;
|
|
82
|
+
estimate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
83
|
+
labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
84
|
+
dueDate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
85
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
86
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}, z.core.$strict>>>;
|
|
88
|
+
comments: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
89
|
+
id: z.ZodOptional<z.ZodString>;
|
|
90
|
+
issue: z.ZodString;
|
|
91
|
+
body: z.ZodString;
|
|
92
|
+
parent: z.ZodOptional<z.ZodString>;
|
|
93
|
+
user: z.ZodOptional<z.ZodString>;
|
|
94
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strict>>>;
|
|
96
|
+
documents: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
97
|
+
id: z.ZodOptional<z.ZodString>;
|
|
98
|
+
title: z.ZodString;
|
|
99
|
+
content: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
100
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
101
|
+
project: z.ZodOptional<z.ZodString>;
|
|
102
|
+
team: z.ZodOptional<z.ZodString>;
|
|
103
|
+
issue: z.ZodOptional<z.ZodString>;
|
|
104
|
+
cycle: z.ZodOptional<z.ZodString>;
|
|
105
|
+
icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
106
|
+
color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
107
|
+
creator: z.ZodOptional<z.ZodString>;
|
|
108
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
109
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
110
|
+
}, z.core.$strict>>>;
|
|
111
|
+
oauthApps: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
112
|
+
id: z.ZodOptional<z.ZodString>;
|
|
113
|
+
clientId: z.ZodString;
|
|
114
|
+
clientSecret: z.ZodString;
|
|
115
|
+
name: z.ZodString;
|
|
116
|
+
redirectUris: z.ZodArray<z.ZodString>;
|
|
117
|
+
scopes: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>>;
|
|
118
|
+
actor: z.ZodDefault<z.ZodEnum<{
|
|
119
|
+
user: "user";
|
|
120
|
+
app: "app";
|
|
121
|
+
}>>;
|
|
122
|
+
assignable: z.ZodDefault<z.ZodBoolean>;
|
|
123
|
+
mentionable: z.ZodDefault<z.ZodBoolean>;
|
|
124
|
+
appUserId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
125
|
+
}, z.core.$strict>>>;
|
|
126
|
+
tokens: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
127
|
+
token: z.ZodString;
|
|
128
|
+
type: z.ZodDefault<z.ZodEnum<{
|
|
129
|
+
personal: "personal";
|
|
130
|
+
oauth_access: "oauth_access";
|
|
131
|
+
client_credentials: "client_credentials";
|
|
132
|
+
}>>;
|
|
133
|
+
user: z.ZodOptional<z.ZodString>;
|
|
134
|
+
app: z.ZodOptional<z.ZodString>;
|
|
135
|
+
scopes: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>>;
|
|
136
|
+
actor: z.ZodOptional<z.ZodEnum<{
|
|
137
|
+
user: "user";
|
|
138
|
+
app: "app";
|
|
139
|
+
}>>;
|
|
140
|
+
sid: z.ZodOptional<z.ZodString>;
|
|
141
|
+
expiresAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
142
|
+
}, z.core.$strict>>>;
|
|
143
|
+
webhooks: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
144
|
+
id: z.ZodOptional<z.ZodString>;
|
|
145
|
+
label: z.ZodOptional<z.ZodString>;
|
|
146
|
+
url: z.ZodString;
|
|
147
|
+
resourceTypes: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>>;
|
|
148
|
+
team: z.ZodOptional<z.ZodString>;
|
|
149
|
+
allPublicTeams: z.ZodOptional<z.ZodBoolean>;
|
|
150
|
+
secret: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
151
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
152
|
+
}, z.core.$strict>>>;
|
|
153
|
+
}, z.core.$strict>;
|
|
154
|
+
export type ParsedLinearStateSeed = z.output<typeof linearSeedSchema>;
|
|
155
|
+
export declare function parseSeed(input: unknown): ParsedLinearStateSeed;
|
|
156
|
+
/**
|
|
157
|
+
* `Record<string, string | undefined>` rather than `NodeJS.ProcessEnv`, which is
|
|
158
|
+
* structurally the same thing but an AMBIENT global. This signature is vendored
|
|
159
|
+
* into `@pome-sh/checks`'s published declarations, and an ambient reference there
|
|
160
|
+
* makes a consumer's `tsc` fail with TS2503 unless they happen to have
|
|
161
|
+
* `@types/node` installed — a dependency this package should not impose to
|
|
162
|
+
* describe a plain string map.
|
|
163
|
+
*/
|
|
164
|
+
export declare function loadSeedFromEnv(env?: Record<string, string | undefined>): ParsedLinearStateSeed;
|
|
165
|
+
/** Multi-issue agent world: ENG team, admin+dev, triage/progress/done issues. */
|
|
166
|
+
export declare function defaultSeedState(): LinearStateSeed;
|