@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.
Files changed (66) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +88 -0
  3. package/dist/_types/sdk/check-discrimination.d.ts +7 -0
  4. package/dist/_types/sdk/check-state-path.d.ts +71 -0
  5. package/dist/_types/sdk/checks.d.ts +93 -0
  6. package/dist/_types/sdk/db.d.ts +44 -0
  7. package/dist/_types/sdk/failure-injection-rules.d.ts +32 -0
  8. package/dist/_types/twin-github/src/check-kind.d.ts +3 -0
  9. package/dist/_types/twin-github/src/check-state.d.ts +77 -0
  10. package/dist/_types/twin-github/src/checks.d.ts +50 -0
  11. package/dist/_types/twin-github/src/seed.d.ts +92 -0
  12. package/dist/_types/twin-github/src/types.d.ts +244 -0
  13. package/dist/_types/twin-gmail/src/check-kind.d.ts +3 -0
  14. package/dist/_types/twin-gmail/src/check-state.d.ts +138 -0
  15. package/dist/_types/twin-gmail/src/checks.d.ts +19 -0
  16. package/dist/_types/twin-gmail/src/faults.d.ts +21 -0
  17. package/dist/_types/twin-gmail/src/seed.d.ts +247 -0
  18. package/dist/_types/twin-gmail/src/types.d.ts +150 -0
  19. package/dist/_types/twin-linear/src/check-kind.d.ts +3 -0
  20. package/dist/_types/twin-linear/src/check-state.d.ts +123 -0
  21. package/dist/_types/twin-linear/src/checks.d.ts +29 -0
  22. package/dist/_types/twin-linear/src/seed.d.ts +166 -0
  23. package/dist/_types/twin-linear/src/types.d.ts +366 -0
  24. package/dist/_types/twin-slack/src/check-kind.d.ts +3 -0
  25. package/dist/_types/twin-slack/src/check-state.d.ts +107 -0
  26. package/dist/_types/twin-slack/src/checks.d.ts +14 -0
  27. package/dist/_types/twin-slack/src/seed.d.ts +62 -0
  28. package/dist/_types/twin-slack/src/types.d.ts +182 -0
  29. package/dist/_types/twin-stripe/src/check-kind.d.ts +3 -0
  30. package/dist/_types/twin-stripe/src/check-state.d.ts +107 -0
  31. package/dist/_types/twin-stripe/src/checks.d.ts +22 -0
  32. package/dist/_types/twin-stripe/src/seed.d.ts +213 -0
  33. package/dist/_types/twin-stripe/src/types.d.ts +252 -0
  34. package/dist/_types/wire/index.d.ts +23 -0
  35. package/dist/_types/wire/otel/event-schema.d.ts +424 -0
  36. package/dist/_types/wire/otel/index.d.ts +25 -0
  37. package/dist/_types/wire/otel/legacy-shim.d.ts +105 -0
  38. package/dist/_types/wire/otel/map-span.d.ts +64 -0
  39. package/dist/_types/wire/otel/nano.d.ts +26 -0
  40. package/dist/_types/wire/otel/project.d.ts +42 -0
  41. package/dist/_types/wire/otel/semconv.d.ts +57 -0
  42. package/dist/_types/wire/otel/span-event.d.ts +198 -0
  43. package/dist/_types/wire/recorder-events.d.ts +526 -0
  44. package/dist/_types/wire/redaction.d.ts +2 -0
  45. package/dist/chunk-4WXX5VPA.js +238 -0
  46. package/dist/chunk-5SJ4PVO5.js +981 -0
  47. package/dist/chunk-GYFGMULG.js +1138 -0
  48. package/dist/chunk-IVENH4KX.js +814 -0
  49. package/dist/chunk-NORTPYDQ.js +1015 -0
  50. package/dist/chunk-SJ6SVRAA.js +432 -0
  51. package/dist/chunk-ZXE6LAM3.js +1 -0
  52. package/dist/dsl.d.ts +11 -0
  53. package/dist/dsl.js +2 -0
  54. package/dist/github.d.ts +2 -0
  55. package/dist/github.js +2 -0
  56. package/dist/gmail.d.ts +2 -0
  57. package/dist/gmail.js +2 -0
  58. package/dist/index.d.ts +163 -0
  59. package/dist/index.js +24 -0
  60. package/dist/linear.d.ts +2 -0
  61. package/dist/linear.js +2 -0
  62. package/dist/slack.d.ts +2 -0
  63. package/dist/slack.js +2 -0
  64. package/dist/stripe.d.ts +2 -0
  65. package/dist/stripe.js +2 -0
  66. 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,3 @@
1
+ import type { CheckDefinition } from "../../sdk/checks.js";
2
+ import type { LinearCheckState } from "./check-state.js";
3
+ export type Check<TArgs extends Record<string, string>> = CheckDefinition<LinearCheckState, TArgs>;
@@ -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;