@peasant-labs/schema 0.29.1 → 0.31.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/dist/collective-status.d.ts +1 -0
- package/dist/collective-status.js +35 -0
- package/dist/collective-validation.d.ts +19 -0
- package/dist/collective-validation.js +252 -0
- package/dist/contribution-attempt.d.ts +7 -0
- package/dist/contribution-attempt.js +47 -0
- package/dist/fixtures/session-graph.d.ts +15 -15
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/internal/generated/collective-compatibility.gen.d.ts +116 -0
- package/dist/internal/generated/collective-compatibility.gen.js +79 -0
- package/dist/internal/generated/contract/zod.gen.d.ts +4422 -1537
- package/dist/internal/generated/contract/zod.gen.js +534 -136
- package/dist/internal/generated/enums.gen.d.ts +229 -75
- package/dist/internal/generated/enums.gen.js +219 -49
- package/dist/internal/generated/local-api.d.ts +650 -8
- package/dist/internal/generated/public-contract.gen.d.ts +2 -2
- package/dist/internal/generated/public-contract.gen.js +1 -1
- package/dist/internal/generated/session-graph-fixtures.gen.d.ts +15 -15
- package/dist/internal/generated/session-graph-fixtures.gen.js +16 -16
- package/dist/internal/generated/versions.gen.d.ts +3 -3
- package/dist/internal/generated/versions.gen.js +3 -3
- package/dist/internal/generated/village-api.d.ts +2539 -468
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function collectiveFetchHTTPStatus(value: unknown): number;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { zCollectiveFetchReport } from "./internal/generated/contract/zod.gen.js";
|
|
2
|
+
// Keep the public raw boundary above the generated parser, not inside its
|
|
3
|
+
// refinement module: Zod -> pure semantics, public status -> complete Zod.
|
|
4
|
+
// No partial parallel validator or runtime import cycle is needed.
|
|
5
|
+
export function collectiveFetchHTTPStatus(value) {
|
|
6
|
+
try {
|
|
7
|
+
const parsed = zCollectiveFetchReport.safeParse(value);
|
|
8
|
+
if (!parsed.success)
|
|
9
|
+
return 500;
|
|
10
|
+
const report = parsed.data;
|
|
11
|
+
if (report.outcome === "complete")
|
|
12
|
+
return 200;
|
|
13
|
+
const issues = [...report.issues];
|
|
14
|
+
let cancelled = false;
|
|
15
|
+
for (const domain of report.domains) {
|
|
16
|
+
cancelled ||= domain.state === "cancelled";
|
|
17
|
+
if (domain.issue != null)
|
|
18
|
+
issues.push(domain.issue);
|
|
19
|
+
for (const source of domain.sourceOutcomes)
|
|
20
|
+
if (source.issue != null)
|
|
21
|
+
issues.push(source.issue);
|
|
22
|
+
for (const scope of domain.associations?.scopes ?? []) {
|
|
23
|
+
cancelled ||= scope.state === "cancelled";
|
|
24
|
+
if (scope.issue != null)
|
|
25
|
+
issues.push(scope.issue);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const ranks = { persistence: 5, auth: 4, deadline: 3, remote: 2, contract: 2, superseded: 1 };
|
|
29
|
+
const rank = issues.reduce((highest, issue) => Math.max(highest, ranks[issue.code]), cancelled ? 3 : 0);
|
|
30
|
+
return [500, 409, 502, 504, 401, 500][rank] ?? 500;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return 500;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CollectiveObservationScope, LocalContributionEvidenceKind } from "./internal/generated/contract/zod.gen.js";
|
|
2
|
+
export interface ContributionTraversalIdentity {
|
|
3
|
+
scope: CollectiveObservationScope;
|
|
4
|
+
incarnation: string;
|
|
5
|
+
kind: LocalContributionEvidenceKind;
|
|
6
|
+
generation: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LocalContributionHistoryQuery {
|
|
9
|
+
kind: LocalContributionEvidenceKind;
|
|
10
|
+
collectiveId?: string;
|
|
11
|
+
page: number;
|
|
12
|
+
limit: number;
|
|
13
|
+
revision?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function validateContributionHistoryQuery(query: LocalContributionHistoryQuery, current: string): number;
|
|
16
|
+
export declare function normalizeCollectiveObservationScope(raw: string, userId: string): CollectiveObservationScope;
|
|
17
|
+
export declare function encodeContributionTraversalRevision(value: ContributionTraversalIdentity): string;
|
|
18
|
+
export declare function parseContributionTraversalRevision(token: string): ContributionTraversalIdentity;
|
|
19
|
+
export declare function collectiveContractIssue(name: string, value: unknown): string | undefined;
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
export function validateContributionHistoryQuery(query, current) {
|
|
2
|
+
if (!kinds.includes(query.kind) || !Number.isSafeInteger(query.page) || query.page < 1 || !Number.isSafeInteger(query.limit) || query.limit < 1 || query.limit > 200 || (query.collectiveId !== undefined && !uuid.test(query.collectiveId)))
|
|
3
|
+
return 400;
|
|
4
|
+
if (query.revision === undefined)
|
|
5
|
+
return query.page > 1 ? 400 : 200;
|
|
6
|
+
try {
|
|
7
|
+
parseContributionTraversalRevision(query.revision);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return 400;
|
|
11
|
+
}
|
|
12
|
+
return query.revision === current ? 200 : 409;
|
|
13
|
+
}
|
|
14
|
+
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
15
|
+
const kinds = ["remote-attempts", "receipts", "operation-diagnostics"];
|
|
16
|
+
const decimal = (v) => /^(0|[1-9][0-9]{0,19})$/.test(v) && BigInt(v) <= 18446744073709551615n;
|
|
17
|
+
const utc = (v) => v == null || (!/^0001-01-01T00:00:00(?:\.0+)?Z$/.test(v) && v.endsWith("Z"));
|
|
18
|
+
function invalid(reason) { return new TypeError(`Collective observation contract validation failed during metadata processing: ${reason}; retain prior evidence and correct the request or fetch validated metadata before retrying.`); }
|
|
19
|
+
export function normalizeCollectiveObservationScope(raw, userId) {
|
|
20
|
+
if (/[^\x21-\x7e]/.test(raw))
|
|
21
|
+
throw invalid("scope URL requires printable ASCII and explicit ASCII IDNA host spelling");
|
|
22
|
+
if (new TextEncoder().encode(raw).length > 1024 || !uuid.test(userId) || raw.includes("\\") || raw.trim() !== raw)
|
|
23
|
+
throw invalid("scope URL or account identity is invalid");
|
|
24
|
+
const parts = /^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)([^?#]*)(?:\?[^#]*)?(?:#.*)?$/.exec(raw);
|
|
25
|
+
if (parts === null || /[\t\r\n]/.test(raw))
|
|
26
|
+
throw invalid("scope requires the supported absolute URL grammar");
|
|
27
|
+
const authority = parts[2].slice(parts[2].lastIndexOf("@") + 1), rawPath = parts[3];
|
|
28
|
+
if (authority.endsWith(":") || rawPath.includes("//") || !/^[A-Za-z0-9/._~!$&'()*+,;=:@-]*$/.test(rawPath))
|
|
29
|
+
throw invalid("scope explicit port or unescaped base path is invalid");
|
|
30
|
+
const hostPort = /^(\[[0-9A-Fa-f:.]+\]|[^:]+)(?::([0-9]+))?$/.exec(authority);
|
|
31
|
+
if (hostPort === null)
|
|
32
|
+
throw invalid("scope host/port grammar is invalid");
|
|
33
|
+
const rawHost = hostPort[1].toLowerCase(), port = hostPort[2];
|
|
34
|
+
if (port !== undefined && (port.length > 5 || Number(port) < 1 || Number(port) > 65535))
|
|
35
|
+
throw invalid("scope port is outside 1..65535 or exceeds five digits");
|
|
36
|
+
if (!rawHost.startsWith("[")) {
|
|
37
|
+
const name = rawHost.replace(/\.$/, ""), labels = name.split(".");
|
|
38
|
+
if (name.length === 0 || name.length > 253)
|
|
39
|
+
throw invalid("scope DNS name is invalid");
|
|
40
|
+
if (/^(?:[0-9]+|0x[0-9a-f]*)$/.test(labels.at(-1))) {
|
|
41
|
+
if (labels.length !== 4 || rawHost !== name || labels.some(label => !/^(0|[1-9][0-9]*)$/.test(label) || Number(label) > 255))
|
|
42
|
+
throw invalid("ambiguous numeric IPv4 spelling is unsupported; use four decimal components");
|
|
43
|
+
}
|
|
44
|
+
else if (labels.some(label => label.length > 63 || !/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(label)))
|
|
45
|
+
throw invalid("scope requires ASCII DNS labels");
|
|
46
|
+
}
|
|
47
|
+
const scheme = parts[1].toLowerCase();
|
|
48
|
+
if (scheme !== "http" && scheme !== "https")
|
|
49
|
+
throw invalid("scope protocol is unsupported");
|
|
50
|
+
let host = rawHost;
|
|
51
|
+
if (rawHost.startsWith("[")) {
|
|
52
|
+
try {
|
|
53
|
+
host = new URL(scheme + "://" + authority).hostname;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw invalid("scope IPv6 literal is invalid");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
let normalizedPort = port === undefined ? "" : String(Number(port));
|
|
60
|
+
if ((scheme === "https" && normalizedPort === "443") || (scheme === "http" && normalizedPort === "80"))
|
|
61
|
+
normalizedPort = "";
|
|
62
|
+
const segments = [];
|
|
63
|
+
for (const segment of rawPath.split("/")) {
|
|
64
|
+
if (segment === "..")
|
|
65
|
+
segments.pop();
|
|
66
|
+
else if (segment !== "" && segment !== ".")
|
|
67
|
+
segments.push(segment);
|
|
68
|
+
}
|
|
69
|
+
return { villageUrl: scheme + "://" + host + (normalizedPort === "" ? "" : ":" + normalizedPort) + (segments.length === 0 ? "" : "/" + segments.join("/")), userId };
|
|
70
|
+
}
|
|
71
|
+
function scopeValid(scope) { try {
|
|
72
|
+
const v = normalizeCollectiveObservationScope(scope.villageUrl, scope.userId);
|
|
73
|
+
return v.villageUrl === scope.villageUrl && v.userId === scope.userId;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
} }
|
|
78
|
+
export function encodeContributionTraversalRevision(value) {
|
|
79
|
+
if (!scopeValid(value.scope) || !uuid.test(value.incarnation) || !kinds.includes(value.kind) || !decimal(value.generation))
|
|
80
|
+
throw invalid("traversal identity fields are invalid");
|
|
81
|
+
const json = JSON.stringify(["1", value.scope.villageUrl, value.scope.userId, value.incarnation, value.kind, value.generation]);
|
|
82
|
+
const token = btoa(String.fromCharCode(...new TextEncoder().encode(json))).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
|
|
83
|
+
if (token.length > 4096)
|
|
84
|
+
throw invalid("traversal token exceeds its byte bound");
|
|
85
|
+
return token;
|
|
86
|
+
}
|
|
87
|
+
export function parseContributionTraversalRevision(token) {
|
|
88
|
+
if (token.length === 0 || token.length > 4096 || !/^[A-Za-z0-9_-]+$/.test(token))
|
|
89
|
+
throw invalid("traversal token is missing or not bounded base64url");
|
|
90
|
+
let fields;
|
|
91
|
+
try {
|
|
92
|
+
fields = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(Uint8Array.from(atob(token.replaceAll("-", "+").replaceAll("_", "/")), c => c.charCodeAt(0))));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
throw invalid("traversal token framing is invalid");
|
|
96
|
+
}
|
|
97
|
+
if (!Array.isArray(fields) || fields.length !== 6 || fields.some(v => typeof v !== "string") || fields[0] !== "1")
|
|
98
|
+
throw invalid("traversal token version or field framing is invalid");
|
|
99
|
+
const value = { scope: { villageUrl: fields[1], userId: fields[2] }, incarnation: fields[3], kind: fields[4], generation: fields[5] };
|
|
100
|
+
if (encodeContributionTraversalRevision(value) !== token)
|
|
101
|
+
throw invalid("traversal token is not canonical");
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
// Called only after the generated Zod shape parser succeeds. This function
|
|
105
|
+
// supplies cross-field semantics; it does not replace generated wire parsing.
|
|
106
|
+
export function collectiveContractIssue(name, value) {
|
|
107
|
+
if (name === "VillageContributedCollectivesResponse") {
|
|
108
|
+
const v = value;
|
|
109
|
+
if (new Set(v.collectives.map(c => c.id)).size !== v.collectives.length)
|
|
110
|
+
return "contribution discovery repeats a collective identity";
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (name === "VillageOrganizationCollectivesResponse") {
|
|
114
|
+
const v = value;
|
|
115
|
+
if (new Set(v.collectives.map(c => c.id)).size !== v.collectives.length)
|
|
116
|
+
return "organization projection repeats a collective identity";
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (name === "CollectiveObservationScope")
|
|
120
|
+
return scopeValid(value) ? undefined : "scope is not normalized";
|
|
121
|
+
if (name === "ContributionTraversalRevision") {
|
|
122
|
+
try {
|
|
123
|
+
parseContributionTraversalRevision(value);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return "traversal token is malformed";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (name === "OperationIssue") {
|
|
131
|
+
const v = value;
|
|
132
|
+
if (!v.message.trim() || !v.retry.trim() || new TextEncoder().encode(v.message).length > 2048 || new TextEncoder().encode(v.retry).length > 2048)
|
|
133
|
+
return "issue needs bounded actionable message/retry";
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (name === "PullAssociationMetadataResult") {
|
|
137
|
+
const v = value, needsTime = v.state !== "unknown", needsWarning = v.state === "stale" || v.state === "unknown";
|
|
138
|
+
if ((v.observedAt != null) !== needsTime || !utc(v.observedAt) || (v.warning != null) !== needsWarning || (v.warning != null && v.warning.operation !== "pull"))
|
|
139
|
+
return "metadata state/time/warning pairing is invalid";
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (name === "LocalConfirmedContributionReceipt") {
|
|
143
|
+
const v = value;
|
|
144
|
+
if (new TextEncoder().encode(v.receiptId).length > 256 || (v.sourceReceiptId != null && new TextEncoder().encode(v.sourceReceiptId).length > 256))
|
|
145
|
+
return "receipt identities exceed their encoded byte bounds";
|
|
146
|
+
if (!utc(v.confirmedAt) || (v.sourceReceiptId != null && v.sourceReceiptId === "") || (v.operation === "publish" ? v.outcome !== "published" : v.operation !== "share" || v.outcome !== "submitted"))
|
|
147
|
+
return "receipt must confirm its actual publish/share effect and optional known target";
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (name === "LocalOperationDiagnostic") {
|
|
151
|
+
const v = value;
|
|
152
|
+
if (!utc(v.attemptedAt) || v.operation !== v.issue.operation)
|
|
153
|
+
return "diagnostic time/issue operation mismatch";
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (name === "CollectiveObservation") {
|
|
157
|
+
const v = value;
|
|
158
|
+
if (!utc(v.observedAt) || new Set(v.reasons).size !== v.reasons.length)
|
|
159
|
+
return "observation requires UTC time and unique reasons";
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (name === "CollectiveFetchDomainSummary") {
|
|
163
|
+
const v = value;
|
|
164
|
+
if (![v.lastAttemptAt, v.lastCompletedAt].every(utc) || (v.lastInstalledRevision != null && !decimal(v.lastInstalledRevision)))
|
|
165
|
+
return "summary dates/revision are invalid";
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (name === "CollectiveFetchDomainResult")
|
|
169
|
+
return domainIssue(value);
|
|
170
|
+
if (name === "CollectiveFetchReport") {
|
|
171
|
+
const v = value;
|
|
172
|
+
if (!decimal(v.cacheRevision) || new Set(v.domains.map(d => d.domain)).size !== 3)
|
|
173
|
+
return "report requires all independent domains and decimal revision";
|
|
174
|
+
const requested = v.domains.filter(d => d.requested), complete = requested.filter(d => d.state === "complete").length;
|
|
175
|
+
const progress = requested.some(d => d.state === "complete" || d.commit !== "retained");
|
|
176
|
+
const outcome = requested.length > 0 && complete === requested.length ? "complete" : progress ? "partial" : "failed";
|
|
177
|
+
if (v.outcome !== outcome || (outcome === "complete" && v.issues.length !== 0))
|
|
178
|
+
return "overall outcome disagrees with independently completed effects";
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (name === "CollectiveObservationResponse") {
|
|
182
|
+
const v = value;
|
|
183
|
+
if (!decimal(v.cacheRevision) || new Set(v.collectives.map(c => c.id)).size !== v.collectives.length || (v.fetch.latestReport != null && (v.fetch.latestReport.scope.villageUrl !== v.scope.villageUrl || v.fetch.latestReport.scope.userId !== v.scope.userId)))
|
|
184
|
+
return "catalog revision/identity or latest report scope mismatch";
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (name === "CollectiveFetchSummary") {
|
|
188
|
+
const v = value;
|
|
189
|
+
if (!utc(v.lastCompletedFetchAt) || !utc(v.lastAttemptAt))
|
|
190
|
+
return "fetch summary dates must be UTC observations";
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (name === "LocalContributionHistoryResponse") {
|
|
194
|
+
const v = value;
|
|
195
|
+
let identity;
|
|
196
|
+
try {
|
|
197
|
+
identity = parseContributionTraversalRevision(v.traversalRevision);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return "history token is malformed";
|
|
201
|
+
}
|
|
202
|
+
if (identity.scope.villageUrl !== v.scope.villageUrl || identity.scope.userId !== v.scope.userId || identity.kind !== v.kind)
|
|
203
|
+
return "history token scope/kind mismatch";
|
|
204
|
+
const rows = v.kind === "remote-attempts" ? v.remoteAttempts : v.kind === "receipts" ? v.receipts : v.operationDiagnostics;
|
|
205
|
+
if (rows.length > v.limit || rows.length > v.total)
|
|
206
|
+
return "history rows exceed page limit or filtered total";
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function domainIssue(v) {
|
|
211
|
+
if (v.requested === (v.state === "not_requested") || ![v.startedAt, v.lastAttemptAt, v.completedAt, v.lastCompletedAt].every(utc) || (v.lastInstalledRevision != null && !decimal(v.lastInstalledRevision)))
|
|
212
|
+
return "domain requested/state, dates or revision mismatch";
|
|
213
|
+
if (v.state === "complete") {
|
|
214
|
+
if (v.completedAt == null || v.lastCompletedAt == null || v.lastInstalledRevision == null || v.commit === "retained" || v.issue != null)
|
|
215
|
+
return "complete domain needs installed completion evidence";
|
|
216
|
+
}
|
|
217
|
+
else if (v.completedAt != null || (v.domain !== "associations" && v.commit !== "retained") || (v.state !== "not_requested" && v.issue == null))
|
|
218
|
+
return "incomplete domain must retain its previous complete dataset with an issue";
|
|
219
|
+
for (const s of v.sourceOutcomes)
|
|
220
|
+
if ((v.state === "complete" && !s.complete) || !utc(s.observedAt) || (s.outcome === "failed") === s.complete || (s.complete && s.observedAt == null) || ((s.outcome === "failed") !== (s.issue != null)))
|
|
221
|
+
return "source completeness/time/issue mismatch";
|
|
222
|
+
if (v.domain !== "associations" && v.associations != null)
|
|
223
|
+
return "association scopes belong only to associations";
|
|
224
|
+
if (v.domain === "associations" && v.requested && v.associations == null)
|
|
225
|
+
return "requested associations require scoped results";
|
|
226
|
+
if (!v.requested && (v.commit !== "retained" || v.issue != null || v.sourceOutcomes.length !== 0 || v.associations != null))
|
|
227
|
+
return "not-requested domain cannot claim effects/issues";
|
|
228
|
+
if (v.associations != null) {
|
|
229
|
+
const a = v.associations;
|
|
230
|
+
if (a.scopes.length !== a.requested || a.completed + a.failed !== a.requested || new Set(a.scopes.map(s => s.transcriptId)).size !== a.scopes.length)
|
|
231
|
+
return "association counts or identities disagree";
|
|
232
|
+
let n = 0;
|
|
233
|
+
for (const s of a.scopes) {
|
|
234
|
+
if (s.state === "not_requested" || !utc(s.observedAt) || !utc(s.completedAt))
|
|
235
|
+
return "association state/date invalid";
|
|
236
|
+
if (s.state === "complete") {
|
|
237
|
+
n++;
|
|
238
|
+
if (s.completedAt == null || s.observedAt == null || s.commit === "retained" || s.issue != null)
|
|
239
|
+
return "completed association set needs actual committed observation";
|
|
240
|
+
}
|
|
241
|
+
else if (s.issue == null || s.commit !== "retained" || s.completedAt != null)
|
|
242
|
+
return "incomplete association set must retain prior evidence";
|
|
243
|
+
}
|
|
244
|
+
if (n !== a.completed || (v.state === "complete" && a.failed !== 0))
|
|
245
|
+
return "association completion count disagrees";
|
|
246
|
+
const commit = a.scopes.some(s => s.commit === "updated") ? "updated" : n > 0 ? "unchanged" : "retained";
|
|
247
|
+
if (commit === "updated" && v.commit !== "updated")
|
|
248
|
+
return "updated association scope requires updated aggregate effect";
|
|
249
|
+
if (v.state !== "complete" && v.commit !== commit)
|
|
250
|
+
return "partial association domain lost actual committed effects";
|
|
251
|
+
}
|
|
252
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type LocalRemoteContributionAttempt, type VillageShareEventActor, type VillageShareStatus } from "./internal/generated/contract/zod.gen.js";
|
|
2
|
+
export type VillageContributionAttemptReconciliation = "inserted" | "unchanged" | "updated" | "superseded";
|
|
3
|
+
export declare function villageContributionAttemptActor(status: VillageShareStatus): VillageShareEventActor;
|
|
4
|
+
export declare function reconcileVillageContributionAttempt(saved: LocalRemoteContributionAttempt | undefined, incoming: LocalRemoteContributionAttempt): {
|
|
5
|
+
attempt: LocalRemoteContributionAttempt;
|
|
6
|
+
disposition: VillageContributionAttemptReconciliation;
|
|
7
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { zLocalRemoteContributionAttempt, } from "./internal/generated/contract/zod.gen.js";
|
|
2
|
+
// Capacity is not a moderator UUID or proof of a manual decision.
|
|
3
|
+
export function villageContributionAttemptActor(status) {
|
|
4
|
+
switch (status) {
|
|
5
|
+
case "pending": return "";
|
|
6
|
+
case "approved":
|
|
7
|
+
case "rejected": return "moderator";
|
|
8
|
+
case "retracted": return "owner";
|
|
9
|
+
case "revoked": return "collective";
|
|
10
|
+
default: throw conflict("status is outside the share-attempt menu");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Select the verified storage scope before calling, and reconcile under the
|
|
14
|
+
// write transaction against latest evidence. Different ordinals are distinct
|
|
15
|
+
// rows; pass undefined saved evidence for a previously unseen identity.
|
|
16
|
+
export function reconcileVillageContributionAttempt(saved, incoming) {
|
|
17
|
+
const next = zLocalRemoteContributionAttempt.parse(incoming);
|
|
18
|
+
if (saved === undefined)
|
|
19
|
+
return { attempt: next, disposition: "inserted" };
|
|
20
|
+
const old = zLocalRemoteContributionAttempt.parse(saved);
|
|
21
|
+
if (old.collectiveId !== next.collectiveId || old.transcriptId !== next.transcriptId || old.attempt.event_num !== next.attempt.event_num) {
|
|
22
|
+
throw conflict("the incoming attempt has a different collective, transcript, or ordinal identity");
|
|
23
|
+
}
|
|
24
|
+
if (!equalTime(old.attempt.recorded_at, next.attempt.recorded_at))
|
|
25
|
+
throw conflict("recorded_at changed for an existing attempt identity");
|
|
26
|
+
if (old.attempt.status === next.attempt.status && old.attempt.decided_by_actor === next.attempt.decided_by_actor && equalTime(old.attempt.decided_at, next.attempt.decided_at)) {
|
|
27
|
+
return { attempt: old, disposition: "unchanged" };
|
|
28
|
+
}
|
|
29
|
+
if (old.attempt.status === "pending") {
|
|
30
|
+
if (next.attempt.decided_at === null)
|
|
31
|
+
throw conflict("an in-place pending decision requires a newly recorded decided_at");
|
|
32
|
+
next.firstSeenAt = old.firstSeenAt;
|
|
33
|
+
return { attempt: next, disposition: "updated" };
|
|
34
|
+
}
|
|
35
|
+
if (next.attempt.status === "pending")
|
|
36
|
+
return { attempt: old, disposition: "superseded" };
|
|
37
|
+
throw conflict("terminal status or decision evidence changed for an existing attempt identity");
|
|
38
|
+
}
|
|
39
|
+
// Do not use Date.parse: millisecond rounding would erase terminal timestamp
|
|
40
|
+
// conflicts present in the Go nanosecond contract. Zod has validated UTC form.
|
|
41
|
+
function equalTime(left, right) {
|
|
42
|
+
const canonical = (value) => value === null ? null : value.replace(/\.([0-9]*?)0+Z$/, (_match, fraction) => fraction === "" ? "Z" : `.${fraction}Z`);
|
|
43
|
+
return canonical(left) === canonical(right);
|
|
44
|
+
}
|
|
45
|
+
function conflict(reason) {
|
|
46
|
+
return new TypeError(`Collective contribution attempt reconciliation failed at @peasant-labs/schema during history validation: ${reason}; retain prior evidence without installing this observation and fetch validated owner history before retrying.`);
|
|
47
|
+
}
|
|
@@ -2078,7 +2078,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
2078
2078
|
};
|
|
2079
2079
|
readonly authoritative_required_names: readonly ["authoritative-entry-label", "authoritative-entry-navigation", "authoritative-entry-explanation"];
|
|
2080
2080
|
readonly typescriptConstraints: {
|
|
2081
|
-
readonly countCarriers: readonly ["AuthoritativeSessionStats", "LocalSyncSummary", "SessionStats", "SessionSummary", "SessionDetailPayload", "SessionDetailReadPayload", "VillageContributableTranscript", "
|
|
2081
|
+
readonly countCarriers: readonly ["AuthoritativeSessionStats", "LocalSyncSummary", "SessionStats", "SessionSummary", "SessionDetailPayload", "SessionDetailReadPayload", "VillageContributableTranscript", "VillageCollectiveTranscript", "VillagePendingShare", "VillageTranscript", "VillageUserCollectiveShare"];
|
|
2082
2082
|
readonly strictObjects: {
|
|
2083
2083
|
readonly PublicSourceAnchor: {
|
|
2084
2084
|
readonly kind: "general_source_session";
|
|
@@ -4692,7 +4692,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4692
4692
|
readonly description: "eleven released base fields do not fabricate unavailable prompts settings";
|
|
4693
4693
|
};
|
|
4694
4694
|
readonly input: {
|
|
4695
|
-
readonly schema: "
|
|
4695
|
+
readonly schema: "VillageCollectiveDetailRecord";
|
|
4696
4696
|
readonly payload: {
|
|
4697
4697
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4698
4698
|
readonly name: "collective";
|
|
@@ -4721,7 +4721,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4721
4721
|
readonly description: "explicit false is a supplied fact and must remain present";
|
|
4722
4722
|
};
|
|
4723
4723
|
readonly input: {
|
|
4724
|
-
readonly schema: "
|
|
4724
|
+
readonly schema: "VillageCollectiveDetailRecord";
|
|
4725
4725
|
readonly payload: {
|
|
4726
4726
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4727
4727
|
readonly name: "collective";
|
|
@@ -4752,7 +4752,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4752
4752
|
readonly description: "source-backed true setting remains present";
|
|
4753
4753
|
};
|
|
4754
4754
|
readonly input: {
|
|
4755
|
-
readonly schema: "
|
|
4755
|
+
readonly schema: "VillageCollectiveDetailRecord";
|
|
4756
4756
|
readonly payload: {
|
|
4757
4757
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4758
4758
|
readonly name: "collective";
|
|
@@ -4783,7 +4783,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4783
4783
|
readonly description: "optional present mode still uses the closed menu";
|
|
4784
4784
|
};
|
|
4785
4785
|
readonly input: {
|
|
4786
|
-
readonly schema: "
|
|
4786
|
+
readonly schema: "VillageCollectiveDetailRecord";
|
|
4787
4787
|
readonly payload: {
|
|
4788
4788
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4789
4789
|
readonly name: "collective";
|
|
@@ -4813,7 +4813,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4813
4813
|
readonly description: "independent canonical prompts contract remains required, not weakened by read compatibility";
|
|
4814
4814
|
};
|
|
4815
4815
|
readonly input: {
|
|
4816
|
-
readonly schema: "
|
|
4816
|
+
readonly schema: "VillageCollective";
|
|
4817
4817
|
readonly payload: {
|
|
4818
4818
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4819
4819
|
readonly name: "collective";
|
|
@@ -4842,7 +4842,7 @@ export declare function sessionGraphFixtures(): {
|
|
|
4842
4842
|
readonly description: "canonical group still accepts its supplied prompts configuration";
|
|
4843
4843
|
};
|
|
4844
4844
|
readonly input: {
|
|
4845
|
-
readonly schema: "
|
|
4845
|
+
readonly schema: "VillageCollective";
|
|
4846
4846
|
readonly payload: {
|
|
4847
4847
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
4848
4848
|
readonly name: "collective";
|
|
@@ -5223,8 +5223,8 @@ export declare function sessionGraphFixtures(): {
|
|
|
5223
5223
|
readonly description: "omitted-view GET detail preserves the eleven group fields without invented prompts settings";
|
|
5224
5224
|
};
|
|
5225
5225
|
readonly input: {
|
|
5226
|
-
readonly schema: "
|
|
5227
|
-
readonly route: "/api/v1/
|
|
5226
|
+
readonly schema: "VillageCollectiveDetailResponse";
|
|
5227
|
+
readonly route: "/api/v1/collectives/{id}";
|
|
5228
5228
|
readonly payload: {
|
|
5229
5229
|
readonly group: {
|
|
5230
5230
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
@@ -5269,8 +5269,8 @@ export declare function sessionGraphFixtures(): {
|
|
|
5269
5269
|
readonly description: "grouped GET detail preserves identical base group values and omitted settings";
|
|
5270
5270
|
};
|
|
5271
5271
|
readonly input: {
|
|
5272
|
-
readonly schema: "
|
|
5273
|
-
readonly route: "/api/v1/
|
|
5272
|
+
readonly schema: "VillageGroupedCollectiveDetailResponse";
|
|
5273
|
+
readonly route: "/api/v1/collectives/{id}";
|
|
5274
5274
|
readonly payload: {
|
|
5275
5275
|
readonly group: {
|
|
5276
5276
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
@@ -5322,8 +5322,8 @@ export declare function sessionGraphFixtures(): {
|
|
|
5322
5322
|
readonly description: "flat GET detail retains source-backed false and informational mode";
|
|
5323
5323
|
};
|
|
5324
5324
|
readonly input: {
|
|
5325
|
-
readonly schema: "
|
|
5326
|
-
readonly route: "/api/v1/
|
|
5325
|
+
readonly schema: "VillageCollectiveDetailResponse";
|
|
5326
|
+
readonly route: "/api/v1/collectives/{id}";
|
|
5327
5327
|
readonly payload: {
|
|
5328
5328
|
readonly group: {
|
|
5329
5329
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
|
@@ -5370,8 +5370,8 @@ export declare function sessionGraphFixtures(): {
|
|
|
5370
5370
|
readonly description: "grouped GET detail retains the same explicit false settings as flat reads";
|
|
5371
5371
|
};
|
|
5372
5372
|
readonly input: {
|
|
5373
|
-
readonly schema: "
|
|
5374
|
-
readonly route: "/api/v1/
|
|
5373
|
+
readonly schema: "VillageGroupedCollectiveDetailResponse";
|
|
5374
|
+
readonly route: "/api/v1/collectives/{id}";
|
|
5375
5375
|
readonly payload: {
|
|
5376
5376
|
readonly group: {
|
|
5377
5377
|
readonly id: "123e4567-e89b-12d3-a456-426614174001";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export * from "./internal/generated/public-contract.gen.js";
|
|
2
2
|
export * from "./internal/generated/enums.gen.js";
|
|
3
|
+
export * from "./internal/generated/collective-compatibility.gen.js";
|
|
3
4
|
export * from "./internal/generated/redaction-categories.gen.js";
|
|
4
5
|
export * from "./internal/generated/content-capabilities.gen.js";
|
|
5
6
|
export * from "./internal/generated/versions.gen.js";
|
|
7
|
+
export { reconcileVillageContributionAttempt, villageContributionAttemptActor, type VillageContributionAttemptReconciliation } from "./contribution-attempt.js";
|
|
8
|
+
export { normalizeCollectiveObservationScope, encodeContributionTraversalRevision, parseContributionTraversalRevision, validateContributionHistoryQuery, type ContributionTraversalIdentity, type LocalContributionHistoryQuery } from "./collective-validation.js";
|
|
9
|
+
export { collectiveFetchHTTPStatus } from "./collective-status.js";
|
|
6
10
|
import { type ProjectHash } from "./internal/generated/contract/zod.gen.js";
|
|
7
11
|
export declare function isProjectHash(value: unknown): value is ProjectHash;
|
|
8
12
|
export declare function validateProjectHash(value: unknown): asserts value is ProjectHash;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export * from "./internal/generated/public-contract.gen.js";
|
|
2
2
|
export * from "./internal/generated/enums.gen.js";
|
|
3
|
+
export * from "./internal/generated/collective-compatibility.gen.js";
|
|
3
4
|
export * from "./internal/generated/redaction-categories.gen.js";
|
|
4
5
|
export * from "./internal/generated/content-capabilities.gen.js";
|
|
5
6
|
export * from "./internal/generated/versions.gen.js";
|
|
7
|
+
export { reconcileVillageContributionAttempt, villageContributionAttemptActor } from "./contribution-attempt.js";
|
|
8
|
+
export { normalizeCollectiveObservationScope, encodeContributionTraversalRevision, parseContributionTraversalRevision, validateContributionHistoryQuery } from "./collective-validation.js";
|
|
9
|
+
export { collectiveFetchHTTPStatus } from "./collective-status.js";
|
|
6
10
|
import { requiredContentCapabilities, KnownContentCapability } from "./internal/generated/content-capabilities.gen.js";
|
|
7
11
|
import { zNativeMetadataRecord, zTurnDetail, zProjectHash, zServerMessage, zSessionDetailPayload, zSessionDetailReadPayload, zTranscriptContent } from "./internal/generated/contract/zod.gen.js";
|
|
8
12
|
import { maxNativeMetadataStringBytes } from "./internal/generated/metadata-limits.gen.js";
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/** @deprecated Use zVillageAssignableCollectiveRole; retained for the complete alias release window. */
|
|
2
|
+
export { zVillageAssignableCollectiveRole as zVillageAssignableGroupRole } from "./contract/zod.gen.js";
|
|
3
|
+
/** @deprecated Use VillageAssignableCollectiveRole; retained for the complete alias release window. */
|
|
4
|
+
export { VillageAssignableCollectiveRole as VillageAssignableGroupRole } from "./enums.gen.js";
|
|
5
|
+
/** @deprecated Use AllVillageAssignableCollectiveRoles; retained for the complete alias release window. */
|
|
6
|
+
export { AllVillageAssignableCollectiveRoles as AllVillageAssignableGroupRoles } from "./enums.gen.js";
|
|
7
|
+
/** @deprecated Use isVillageAssignableCollectiveRole; retained for the complete alias release window. */
|
|
8
|
+
export { isVillageAssignableCollectiveRole as isVillageAssignableGroupRole } from "./enums.gen.js";
|
|
9
|
+
/** @deprecated Use zVillageCreateCollectiveRequest; retained for the complete alias release window. */
|
|
10
|
+
export { zVillageCreateCollectiveRequest as zVillageCreateGroupRequest } from "./contract/zod.gen.js";
|
|
11
|
+
/** @deprecated Use VillageCreateCollectiveRequest; retained for the complete alias release window. */
|
|
12
|
+
export type { VillageCreateCollectiveRequest as VillageCreateGroupRequest } from "./contract/zod.gen.js";
|
|
13
|
+
/** @deprecated Use zVillageCollective; retained for the complete alias release window. */
|
|
14
|
+
export { zVillageCollective as zVillageGroup } from "./contract/zod.gen.js";
|
|
15
|
+
/** @deprecated Use VillageCollective; retained for the complete alias release window. */
|
|
16
|
+
export type { VillageCollective as VillageGroup } from "./contract/zod.gen.js";
|
|
17
|
+
/** @deprecated Use zVillageCollectiveAcceptanceMode; retained for the complete alias release window. */
|
|
18
|
+
export { zVillageCollectiveAcceptanceMode as zVillageGroupAcceptanceMode } from "./contract/zod.gen.js";
|
|
19
|
+
/** @deprecated Use VillageCollectiveAcceptanceMode; retained for the complete alias release window. */
|
|
20
|
+
export { VillageCollectiveAcceptanceMode as VillageGroupAcceptanceMode } from "./enums.gen.js";
|
|
21
|
+
/** @deprecated Use AllVillageCollectiveAcceptanceModes; retained for the complete alias release window. */
|
|
22
|
+
export { AllVillageCollectiveAcceptanceModes as AllVillageGroupAcceptanceModes } from "./enums.gen.js";
|
|
23
|
+
/** @deprecated Use isVillageCollectiveAcceptanceMode; retained for the complete alias release window. */
|
|
24
|
+
export { isVillageCollectiveAcceptanceMode as isVillageGroupAcceptanceMode } from "./enums.gen.js";
|
|
25
|
+
/** @deprecated Use zVillageCollectiveContributor; retained for the complete alias release window. */
|
|
26
|
+
export { zVillageCollectiveContributor as zVillageGroupContributor } from "./contract/zod.gen.js";
|
|
27
|
+
/** @deprecated Use VillageCollectiveContributor; retained for the complete alias release window. */
|
|
28
|
+
export type { VillageCollectiveContributor as VillageGroupContributor } from "./contract/zod.gen.js";
|
|
29
|
+
/** @deprecated Use zVillageCollectiveDataAccess; retained for the complete alias release window. */
|
|
30
|
+
export { zVillageCollectiveDataAccess as zVillageGroupDataAccess } from "./contract/zod.gen.js";
|
|
31
|
+
/** @deprecated Use VillageCollectiveDataAccess; retained for the complete alias release window. */
|
|
32
|
+
export { VillageCollectiveDataAccess as VillageGroupDataAccess } from "./enums.gen.js";
|
|
33
|
+
/** @deprecated Use AllVillageCollectiveDataAccessPolicies; retained for the complete alias release window. */
|
|
34
|
+
export { AllVillageCollectiveDataAccessPolicies as AllVillageGroupDataAccessPolicies } from "./enums.gen.js";
|
|
35
|
+
/** @deprecated Use isVillageCollectiveDataAccess; retained for the complete alias release window. */
|
|
36
|
+
export { isVillageCollectiveDataAccess as isVillageGroupDataAccess } from "./enums.gen.js";
|
|
37
|
+
/** @deprecated Use zVillageCollectiveDetailRecord; retained for the complete alias release window. */
|
|
38
|
+
export { zVillageCollectiveDetailRecord as zVillageGroupDetailRecord } from "./contract/zod.gen.js";
|
|
39
|
+
/** @deprecated Use VillageCollectiveDetailRecord; retained for the complete alias release window. */
|
|
40
|
+
export type { VillageCollectiveDetailRecord as VillageGroupDetailRecord } from "./contract/zod.gen.js";
|
|
41
|
+
/** @deprecated Use zVillageCollectiveDetailResponse; retained for the complete alias release window. */
|
|
42
|
+
export { zVillageCollectiveDetailResponse as zVillageGroupDetailResponse } from "./contract/zod.gen.js";
|
|
43
|
+
/** @deprecated Use VillageCollectiveDetailResponse; retained for the complete alias release window. */
|
|
44
|
+
export type { VillageCollectiveDetailResponse as VillageGroupDetailResponse } from "./contract/zod.gen.js";
|
|
45
|
+
/** @deprecated Use zVillageGroupedCollectiveDetailResponse; retained for the complete alias release window. */
|
|
46
|
+
export { zVillageGroupedCollectiveDetailResponse as zVillageGroupedGroupDetailResponse } from "./contract/zod.gen.js";
|
|
47
|
+
/** @deprecated Use VillageGroupedCollectiveDetailResponse; retained for the complete alias release window. */
|
|
48
|
+
export type { VillageGroupedCollectiveDetailResponse as VillageGroupedGroupDetailResponse } from "./contract/zod.gen.js";
|
|
49
|
+
/** @deprecated Use zVillageCollectiveMember; retained for the complete alias release window. */
|
|
50
|
+
export { zVillageCollectiveMember as zVillageGroupMember } from "./contract/zod.gen.js";
|
|
51
|
+
/** @deprecated Use VillageCollectiveMember; retained for the complete alias release window. */
|
|
52
|
+
export type { VillageCollectiveMember as VillageGroupMember } from "./contract/zod.gen.js";
|
|
53
|
+
/** @deprecated Use zVillageCollectiveMemberRoleRequest; retained for the complete alias release window. */
|
|
54
|
+
export { zVillageCollectiveMemberRoleRequest as zVillageGroupMemberRoleRequest } from "./contract/zod.gen.js";
|
|
55
|
+
/** @deprecated Use VillageCollectiveMemberRoleRequest; retained for the complete alias release window. */
|
|
56
|
+
export type { VillageCollectiveMemberRoleRequest as VillageGroupMemberRoleRequest } from "./contract/zod.gen.js";
|
|
57
|
+
/** @deprecated Use zVillageCollectiveMemberUsernameRequest; retained for the complete alias release window. */
|
|
58
|
+
export { zVillageCollectiveMemberUsernameRequest as zVillageGroupMemberUsernameRequest } from "./contract/zod.gen.js";
|
|
59
|
+
/** @deprecated Use VillageCollectiveMemberUsernameRequest; retained for the complete alias release window. */
|
|
60
|
+
export type { VillageCollectiveMemberUsernameRequest as VillageGroupMemberUsernameRequest } from "./contract/zod.gen.js";
|
|
61
|
+
/** @deprecated Use zVillageCollectiveModelBreakdown; retained for the complete alias release window. */
|
|
62
|
+
export { zVillageCollectiveModelBreakdown as zVillageGroupModelBreakdown } from "./contract/zod.gen.js";
|
|
63
|
+
/** @deprecated Use VillageCollectiveModelBreakdown; retained for the complete alias release window. */
|
|
64
|
+
export type { VillageCollectiveModelBreakdown as VillageGroupModelBreakdown } from "./contract/zod.gen.js";
|
|
65
|
+
/** @deprecated Use zVillageCollectiveRole; retained for the complete alias release window. */
|
|
66
|
+
export { zVillageCollectiveRole as zVillageGroupRole } from "./contract/zod.gen.js";
|
|
67
|
+
/** @deprecated Use VillageCollectiveRole; retained for the complete alias release window. */
|
|
68
|
+
export { VillageCollectiveRole as VillageGroupRole } from "./enums.gen.js";
|
|
69
|
+
/** @deprecated Use AllVillageCollectiveRoles; retained for the complete alias release window. */
|
|
70
|
+
export { AllVillageCollectiveRoles as AllVillageGroupRoles } from "./enums.gen.js";
|
|
71
|
+
/** @deprecated Use isVillageCollectiveRole; retained for the complete alias release window. */
|
|
72
|
+
export { isVillageCollectiveRole as isVillageGroupRole } from "./enums.gen.js";
|
|
73
|
+
/** @deprecated Use zVillageCollectiveStatusRoleResponse; retained for the complete alias release window. */
|
|
74
|
+
export { zVillageCollectiveStatusRoleResponse as zVillageGroupStatusRoleResponse } from "./contract/zod.gen.js";
|
|
75
|
+
/** @deprecated Use VillageCollectiveStatusRoleResponse; retained for the complete alias release window. */
|
|
76
|
+
export type { VillageCollectiveStatusRoleResponse as VillageGroupStatusRoleResponse } from "./contract/zod.gen.js";
|
|
77
|
+
/** @deprecated Use zVillageCollectiveTranscript; retained for the complete alias release window. */
|
|
78
|
+
export { zVillageCollectiveTranscript as zVillageGroupTranscript } from "./contract/zod.gen.js";
|
|
79
|
+
/** @deprecated Use VillageCollectiveTranscript; retained for the complete alias release window. */
|
|
80
|
+
export type { VillageCollectiveTranscript as VillageGroupTranscript } from "./contract/zod.gen.js";
|
|
81
|
+
/** @deprecated Use zVillageCollectiveTranscriptStats; retained for the complete alias release window. */
|
|
82
|
+
export { zVillageCollectiveTranscriptStats as zVillageGroupTranscriptStats } from "./contract/zod.gen.js";
|
|
83
|
+
/** @deprecated Use VillageCollectiveTranscriptStats; retained for the complete alias release window. */
|
|
84
|
+
export type { VillageCollectiveTranscriptStats as VillageGroupTranscriptStats } from "./contract/zod.gen.js";
|
|
85
|
+
/** @deprecated Use zVillageCollectiveViewerRole; retained for the complete alias release window. */
|
|
86
|
+
export { zVillageCollectiveViewerRole as zVillageGroupViewerRole } from "./contract/zod.gen.js";
|
|
87
|
+
/** @deprecated Use VillageCollectiveViewerRole; retained for the complete alias release window. */
|
|
88
|
+
export { VillageCollectiveViewerRole as VillageGroupViewerRole } from "./enums.gen.js";
|
|
89
|
+
/** @deprecated Use AllVillageCollectiveViewerRoles; retained for the complete alias release window. */
|
|
90
|
+
export { AllVillageCollectiveViewerRoles as AllVillageGroupViewerRoles } from "./enums.gen.js";
|
|
91
|
+
/** @deprecated Use isVillageCollectiveViewerRole; retained for the complete alias release window. */
|
|
92
|
+
export { isVillageCollectiveViewerRole as isVillageGroupViewerRole } from "./enums.gen.js";
|
|
93
|
+
/** @deprecated Use zVillagePublicCollective; retained for the complete alias release window. */
|
|
94
|
+
export { zVillagePublicCollective as zVillagePublicGroup } from "./contract/zod.gen.js";
|
|
95
|
+
/** @deprecated Use VillagePublicCollective; retained for the complete alias release window. */
|
|
96
|
+
export type { VillagePublicCollective as VillagePublicGroup } from "./contract/zod.gen.js";
|
|
97
|
+
/** @deprecated Use zVillageRemoveCollectiveMemberResponse; retained for the complete alias release window. */
|
|
98
|
+
export { zVillageRemoveCollectiveMemberResponse as zVillageRemoveGroupMemberResponse } from "./contract/zod.gen.js";
|
|
99
|
+
/** @deprecated Use VillageRemoveCollectiveMemberResponse; retained for the complete alias release window. */
|
|
100
|
+
export type { VillageRemoveCollectiveMemberResponse as VillageRemoveGroupMemberResponse } from "./contract/zod.gen.js";
|
|
101
|
+
/** @deprecated Use zVillageUpdateCollectiveRequest; retained for the complete alias release window. */
|
|
102
|
+
export { zVillageUpdateCollectiveRequest as zVillageUpdateGroupRequest } from "./contract/zod.gen.js";
|
|
103
|
+
/** @deprecated Use VillageUpdateCollectiveRequest; retained for the complete alias release window. */
|
|
104
|
+
export type { VillageUpdateCollectiveRequest as VillageUpdateGroupRequest } from "./contract/zod.gen.js";
|
|
105
|
+
/** @deprecated Use zVillageUserCollective; retained for the complete alias release window. */
|
|
106
|
+
export { zVillageUserCollective as zVillageUserGroup } from "./contract/zod.gen.js";
|
|
107
|
+
/** @deprecated Use VillageUserCollective; retained for the complete alias release window. */
|
|
108
|
+
export type { VillageUserCollective as VillageUserGroup } from "./contract/zod.gen.js";
|
|
109
|
+
/** @deprecated Use zVillageUserCollectiveShare; retained for the complete alias release window. */
|
|
110
|
+
export { zVillageUserCollectiveShare as zVillageUserGroupShare } from "./contract/zod.gen.js";
|
|
111
|
+
/** @deprecated Use VillageUserCollectiveShare; retained for the complete alias release window. */
|
|
112
|
+
export type { VillageUserCollectiveShare as VillageUserGroupShare } from "./contract/zod.gen.js";
|
|
113
|
+
/** @deprecated Use zVillageVisibleCollective; retained for the complete alias release window. */
|
|
114
|
+
export { zVillageVisibleCollective as zVillageVisibleGroup } from "./contract/zod.gen.js";
|
|
115
|
+
/** @deprecated Use VillageVisibleCollective; retained for the complete alias release window. */
|
|
116
|
+
export type { VillageVisibleCollective as VillageVisibleGroup } from "./contract/zod.gen.js";
|