@tenphi/akno-protocol 0.1.0 → 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retain.d.ts","sourceRoot":"","sources":["../../src/ops/retain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
1
+ import { z } from 'zod';
2
+ import { ResultEnvelope } from "../common.js";
3
+ const RetainRef = z.string().min(1).max(300);
4
+ export const RetainSourceRole = z.enum(['user', 'assistant', 'external', 'unknown']);
5
+ export const RetainSourceSpan = z.object({
6
+ quote: z.string().min(1).max(1200),
7
+ item_id: z.string().min(1).max(200).optional(),
8
+ });
9
+ export const RetainEvidenceRef = z.union([
10
+ z.object({ fact_id: RetainRef }),
11
+ z.object({ page_slug: RetainRef, line_hash: RetainRef }),
12
+ z.object({ document_id: RetainRef, passage_id: RetainRef }),
13
+ z.object({ journal_event_id: RetainRef }),
14
+ ]);
15
+ export const RetainedTime = z
16
+ .object({
17
+ start: z.string().min(1).max(100).optional(),
18
+ until: z.string().min(1).max(100).optional(),
19
+ precision: z.enum(['instant', 'day', 'month', 'year', 'unknown']),
20
+ relation: z.enum(['occurred', 'valid', 'scheduled', 'due']),
21
+ status: z.enum(['actual', 'scheduled', 'planned', 'tentative']),
22
+ timezone: z.string().min(1).max(100).optional(),
23
+ mentioned_at: z.string().datetime({ offset: true }).optional(),
24
+ recurrence: z
25
+ .object({
26
+ frequency: z.enum(['daily', 'weekly', 'monthly', 'yearly']),
27
+ interval: z.number().int().positive().max(100).optional(),
28
+ weekdays: z
29
+ .array(z.enum(['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']))
30
+ .max(7)
31
+ .optional(),
32
+ until: z.string().min(1).max(100).optional(),
33
+ })
34
+ .optional(),
35
+ })
36
+ .superRefine((value, ctx) => {
37
+ if (value.precision !== 'unknown' && value.start === undefined && value.until === undefined) {
38
+ ctx.addIssue({ code: 'custom', message: 'retained time needs start or until' });
39
+ }
40
+ for (const [name, boundary] of [
41
+ ['start', value.start],
42
+ ['until', value.until],
43
+ ]) {
44
+ if (boundary !== undefined && !validTemporalBoundary(boundary, value.precision)) {
45
+ ctx.addIssue({
46
+ code: 'custom',
47
+ path: [name],
48
+ message: `${name} does not match ${value.precision} precision`,
49
+ });
50
+ }
51
+ }
52
+ const allowedStatus = {
53
+ occurred: ['actual'],
54
+ valid: ['actual', 'tentative'],
55
+ scheduled: ['scheduled', 'planned', 'tentative'],
56
+ due: ['scheduled', 'planned', 'tentative'],
57
+ }[value.relation];
58
+ if (!allowedStatus.includes(value.status)) {
59
+ ctx.addIssue({
60
+ code: 'custom',
61
+ path: ['status'],
62
+ message: `${value.status} is not valid for ${value.relation}`,
63
+ });
64
+ }
65
+ if (value.start && value.until && temporalBoundaryAfter(value.start, value.until, value.precision)) {
66
+ ctx.addIssue({ code: 'custom', path: ['until'], message: 'temporal interval is reversed' });
67
+ }
68
+ if (value.recurrence) {
69
+ if (!value.start) {
70
+ ctx.addIssue({
71
+ code: 'custom',
72
+ path: ['recurrence'],
73
+ message: 'recurrence requires an anchored start',
74
+ });
75
+ }
76
+ if (value.recurrence.weekdays && value.recurrence.frequency !== 'weekly') {
77
+ ctx.addIssue({
78
+ code: 'custom',
79
+ path: ['recurrence', 'weekdays'],
80
+ message: 'weekdays are valid only for weekly recurrence',
81
+ });
82
+ }
83
+ if (value.recurrence.until && !validTemporalBoundary(value.recurrence.until, value.precision)) {
84
+ ctx.addIssue({
85
+ code: 'custom',
86
+ path: ['recurrence', 'until'],
87
+ message: `recurrence until does not match ${value.precision} precision`,
88
+ });
89
+ }
90
+ }
91
+ });
92
+ function validTemporalBoundary(value, precision) {
93
+ if (precision === 'unknown')
94
+ return value.length <= 100;
95
+ if (precision === 'instant')
96
+ return z.string().datetime({ offset: true }).safeParse(value).success;
97
+ if (precision === 'year')
98
+ return /^\d{4}$/.test(value);
99
+ if (precision === 'month') {
100
+ const match = /^(\d{4})-(\d{2})$/.exec(value);
101
+ return Boolean(match && Number(match[2]) >= 1 && Number(match[2]) <= 12);
102
+ }
103
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
104
+ if (!match)
105
+ return false;
106
+ const year = Number(match[1]);
107
+ const month = Number(match[2]);
108
+ const day = Number(match[3]);
109
+ const date = new Date(Date.UTC(year, month - 1, day));
110
+ return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
111
+ }
112
+ function temporalBoundaryAfter(left, right, precision) {
113
+ if (precision === 'unknown')
114
+ return false;
115
+ if (precision === 'instant')
116
+ return Date.parse(left) > Date.parse(right);
117
+ return left > right;
118
+ }
119
+ export const RetainedRelation = z.object({
120
+ type: z.enum(['corrects', 'supersedes', 'contradicts', 'fulfills', 'answers', 'caused_by']),
121
+ target: z.union([
122
+ z.object({ candidate_id: RetainRef }),
123
+ z.object({ memory_id: RetainRef }),
124
+ z.object({ fact_id: RetainRef }),
125
+ ]),
126
+ support: z.array(RetainSourceSpan).min(1).max(8),
127
+ });
128
+ export const ProvidedRetainCandidate = z
129
+ .object({
130
+ candidate_id: z.string().min(1).max(200),
131
+ kind: z.enum(['claim', 'decision', 'preference', 'plan', 'event', 'question']),
132
+ text: z.string().min(1).max(800),
133
+ subject: z.string().min(1).max(200),
134
+ subject_ref: z.object({ entity_id: RetainRef }).optional(),
135
+ attribution: z.object({
136
+ source_role: RetainSourceRole,
137
+ source_speaker: z.string().min(1).max(200).optional(),
138
+ chain: z
139
+ .array(z.object({
140
+ speaker: z.string().min(1).max(200),
141
+ role: RetainSourceRole.optional(),
142
+ }))
143
+ .max(3)
144
+ .optional(),
145
+ }),
146
+ discourse: z.object({
147
+ commitment: z.enum(['asserted', 'tentative', 'hypothetical', 'counterfactual', 'none']),
148
+ disposition: z.enum([
149
+ 'active',
150
+ 'proposed',
151
+ 'accepted',
152
+ 'rejected',
153
+ 'resolved',
154
+ 'cancelled',
155
+ 'completed',
156
+ 'superseded',
157
+ ]),
158
+ }),
159
+ epistemic: z.object({
160
+ basis: z.enum(['self_attested', 'source_report', 'cited_evidence']),
161
+ evidence: z.array(RetainEvidenceRef).max(8).optional(),
162
+ }),
163
+ polarity: z.enum(['affirmed', 'negated']).optional(),
164
+ support: z.array(RetainSourceSpan).min(1).max(8),
165
+ discourse_frame: z.array(RetainSourceSpan).min(1).max(16),
166
+ relations: z.array(RetainedRelation).max(8).optional(),
167
+ time: RetainedTime.optional(),
168
+ destination: z.object({ slug: z.string().min(1), section: z.string().min(1).max(100).optional() }),
169
+ })
170
+ .superRefine((candidate, ctx) => {
171
+ const allowed = {
172
+ claim: ['active', 'superseded'],
173
+ preference: ['active', 'superseded'],
174
+ decision: ['accepted', 'rejected', 'superseded'],
175
+ plan: ['proposed', 'accepted', 'cancelled', 'completed', 'superseded'],
176
+ event: ['active', 'cancelled', 'superseded'],
177
+ question: ['active', 'resolved'],
178
+ };
179
+ if (!allowed[candidate.kind].includes(candidate.discourse.disposition)) {
180
+ ctx.addIssue({
181
+ code: 'custom',
182
+ path: ['discourse', 'disposition'],
183
+ message: `${candidate.discourse.disposition} is not valid for ${candidate.kind}`,
184
+ });
185
+ }
186
+ if (candidate.kind === 'question' && candidate.discourse.commitment !== 'none') {
187
+ ctx.addIssue({
188
+ code: 'custom',
189
+ path: ['discourse', 'commitment'],
190
+ message: 'a question requires commitment none',
191
+ });
192
+ }
193
+ if (candidate.epistemic.basis === 'cited_evidence' && !candidate.epistemic.evidence?.length) {
194
+ ctx.addIssue({
195
+ code: 'custom',
196
+ path: ['epistemic', 'evidence'],
197
+ message: 'cited_evidence requires at least one durable evidence reference',
198
+ });
199
+ }
200
+ if (candidate.epistemic.basis === 'self_attested' && candidate.attribution.source_role !== 'user') {
201
+ ctx.addIssue({
202
+ code: 'custom',
203
+ path: ['epistemic', 'basis'],
204
+ message: 'self_attested is limited to the user source role',
205
+ });
206
+ }
207
+ });
208
+ export const RetainSourceItem = z.object({
209
+ item_id: z.string().min(1).max(200),
210
+ text: z.string().min(1).max(100_000),
211
+ role: z.enum(['user', 'assistant', 'external', 'system']).optional(),
212
+ speaker: z.string().min(1).max(200).optional(),
213
+ mentioned_at: z.string().datetime({ offset: true }).optional(),
214
+ });
215
+ const RetainSourceIdentity = {
216
+ source_id: z.string().min(1).max(300),
217
+ revision: z.string().min(1).max(200),
218
+ };
219
+ export const RetainUpsertSource = z
220
+ .object({
221
+ ...RetainSourceIdentity,
222
+ source_group: z.string().min(1).max(300).optional(),
223
+ source_kind: z.enum(['conversation', 'email', 'article', 'document', 'note', 'other']).optional(),
224
+ mentioned_at: z.string().datetime({ offset: true }).optional(),
225
+ timezone: z.string().min(1).max(100).optional(),
226
+ locator: z.string().min(1).max(1000).optional(),
227
+ input: z.union([
228
+ z.object({ text: z.string().min(1).max(500_000) }),
229
+ z.object({ items: z.array(RetainSourceItem).min(1).max(500) }),
230
+ ]),
231
+ retention: z.object({
232
+ mode: z.literal('provided'),
233
+ placement: z.literal('exact'),
234
+ candidates: z.array(ProvidedRetainCandidate).min(1).max(50),
235
+ }),
236
+ })
237
+ .superRefine((source, ctx) => {
238
+ const candidateIds = source.retention.candidates.map((candidate) => candidate.candidate_id);
239
+ if (new Set(candidateIds).size !== candidateIds.length) {
240
+ ctx.addIssue({
241
+ code: 'custom',
242
+ path: ['retention', 'candidates'],
243
+ message: 'candidate ids must be unique within one source revision',
244
+ });
245
+ }
246
+ if ('items' in source.input) {
247
+ const itemIds = source.input.items.map((item) => item.item_id);
248
+ if (new Set(itemIds).size !== itemIds.length) {
249
+ ctx.addIssue({
250
+ code: 'custom',
251
+ path: ['input', 'items'],
252
+ message: 'source item ids must be unique within one source revision',
253
+ });
254
+ }
255
+ }
256
+ });
257
+ export const RetainRetraction = z.object({
258
+ ...RetainSourceIdentity,
259
+ retention: z.object({
260
+ mode: z.literal('retract'),
261
+ target_revision: z.string().min(1).max(200),
262
+ candidate_ids: z.array(z.string().min(1).max(200)).min(1).max(50).optional(),
263
+ reason: z.enum(['source_corrected', 'source_deleted', 'user_request']),
264
+ }),
265
+ });
266
+ export const RetainInput = z.object({
267
+ sources: z
268
+ .array(z.union([RetainUpsertSource, RetainRetraction]))
269
+ .min(1)
270
+ .max(20),
271
+ dry_run: z.boolean().optional(),
272
+ });
273
+ export const RetainCandidateResult = z.object({
274
+ candidate_id: z.string(),
275
+ outcome: z.enum(['written', 'duplicate', 'support_added', 'retracted', 'held', 'not_found']),
276
+ memory_id: z.string().optional(),
277
+ slug: z.string().optional(),
278
+ reason: z.string().optional(),
279
+ });
280
+ export const RetainSourceResult = z.object({
281
+ source_id: z.string(),
282
+ revision: z.string(),
283
+ outcome: z.enum(['ok', 'replayed', 'noop', 'held', 'revision_conflict']),
284
+ change_id: z.string().optional(),
285
+ candidates: z.array(RetainCandidateResult),
286
+ note: z.string().optional(),
287
+ });
288
+ export const RetainOutput = ResultEnvelope.extend({
289
+ outcome: z.enum(['ok', 'partial', 'noop']),
290
+ sources: z.array(RetainSourceResult),
291
+ });
292
+ //# sourceMappingURL=retain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retain.js","sourceRoot":"","sources":["../../src/ops/retain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAGrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC3D,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;CAC1C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACzD,QAAQ,EAAE,CAAC;aACR,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aACzD,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5F,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI;QAC7B,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;KACd,EAAE,CAAC;QACX,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,GAAG,IAAI,mBAAmB,KAAK,CAAC,SAAS,YAAY;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC9B,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;QAChD,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;KAC3C,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,qBAAqB,KAAK,CAAC,QAAQ,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACnG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,OAAO,EAAE,uCAAuC;aACjD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzE,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;gBAChC,OAAO,EAAE,+CAA+C;aACzD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9F,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;gBAC7B,OAAO,EAAE,mCAAmC,KAAK,CAAC,SAAS,YAAY;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,SAAS,qBAAqB,CAC5B,KAAa,EACb,SAA2D;IAE3D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;IACxD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IACnG,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC;AACzG,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,KAAa,EACb,SAA2D;IAE3D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzE,OAAO,IAAI,GAAG,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;QACd,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;KACjC,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,gBAAgB;QAC7B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACrD,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACnC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;SAClC,CAAC,CACH;aACA,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;KACd,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvF,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC;YAClB,QAAQ;YACR,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,WAAW;YACX,WAAW;YACX,YAAY;SACb,CAAC;KACH,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACnE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACzD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;CACnG,CAAC;KACD,WAAW,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAuF;QAClG,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/B,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;QACpC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC;QACtE,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC;QAC5C,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;KACjC,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;YAClC,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,qBAAqB,SAAS,CAAC,IAAI,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC/E,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;YACjC,OAAO,EAAE,qCAAqC;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5F,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;YAC/B,OAAO,EAAE,iEAAiE;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,KAAK,eAAe,IAAI,SAAS,CAAC,WAAW,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QAClG,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;YAC5B,OAAO,EAAE,kDAAkD;SAC5D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/D,CAAC,CAAC;AAGH,MAAM,oBAAoB,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC5B,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,GAAG,oBAAoB;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;QACb,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;KAC/D,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5D,CAAC;CACH,CAAC;KACD,WAAW,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5F,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACvD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;YACjC,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACxB,OAAO,EAAE,2DAA2D;aACrE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,oBAAoB;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC5E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;KACvE,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACtD,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACrC,CAAC,CAAC"}
@@ -2250,6 +2250,8 @@ export declare const OPS: {
2250
2250
  readonly remember: OpDefinition<z.ZodObject<{
2251
2251
  text: z.ZodString;
2252
2252
  source: z.ZodOptional<z.ZodString>;
2253
+ mentioned_at: z.ZodOptional<z.ZodString>;
2254
+ timezone: z.ZodOptional<z.ZodString>;
2253
2255
  mission: z.ZodOptional<z.ZodString>;
2254
2256
  dry_run: z.ZodOptional<z.ZodBoolean>;
2255
2257
  }, z.core.$strip>, z.ZodObject<{
@@ -2349,6 +2351,273 @@ export declare const OPS: {
2349
2351
  written: z.ZodBoolean;
2350
2352
  }, z.core.$strip>>>;
2351
2353
  }, z.core.$strip>>;
2354
+ readonly retain: OpDefinition<z.ZodObject<{
2355
+ sources: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
2356
+ source_group: z.ZodOptional<z.ZodString>;
2357
+ source_kind: z.ZodOptional<z.ZodEnum<{
2358
+ document: "document";
2359
+ other: "other";
2360
+ note: "note";
2361
+ conversation: "conversation";
2362
+ email: "email";
2363
+ article: "article";
2364
+ }>>;
2365
+ mentioned_at: z.ZodOptional<z.ZodString>;
2366
+ timezone: z.ZodOptional<z.ZodString>;
2367
+ locator: z.ZodOptional<z.ZodString>;
2368
+ input: z.ZodUnion<readonly [z.ZodObject<{
2369
+ text: z.ZodString;
2370
+ }, z.core.$strip>, z.ZodObject<{
2371
+ items: z.ZodArray<z.ZodObject<{
2372
+ item_id: z.ZodString;
2373
+ text: z.ZodString;
2374
+ role: z.ZodOptional<z.ZodEnum<{
2375
+ user: "user";
2376
+ assistant: "assistant";
2377
+ external: "external";
2378
+ system: "system";
2379
+ }>>;
2380
+ speaker: z.ZodOptional<z.ZodString>;
2381
+ mentioned_at: z.ZodOptional<z.ZodString>;
2382
+ }, z.core.$strip>>;
2383
+ }, z.core.$strip>]>;
2384
+ retention: z.ZodObject<{
2385
+ mode: z.ZodLiteral<"provided">;
2386
+ placement: z.ZodLiteral<"exact">;
2387
+ candidates: z.ZodArray<z.ZodObject<{
2388
+ candidate_id: z.ZodString;
2389
+ kind: z.ZodEnum<{
2390
+ question: "question";
2391
+ claim: "claim";
2392
+ event: "event";
2393
+ plan: "plan";
2394
+ decision: "decision";
2395
+ preference: "preference";
2396
+ }>;
2397
+ text: z.ZodString;
2398
+ subject: z.ZodString;
2399
+ subject_ref: z.ZodOptional<z.ZodObject<{
2400
+ entity_id: z.ZodString;
2401
+ }, z.core.$strip>>;
2402
+ attribution: z.ZodObject<{
2403
+ source_role: z.ZodEnum<{
2404
+ unknown: "unknown";
2405
+ user: "user";
2406
+ assistant: "assistant";
2407
+ external: "external";
2408
+ }>;
2409
+ source_speaker: z.ZodOptional<z.ZodString>;
2410
+ chain: z.ZodOptional<z.ZodArray<z.ZodObject<{
2411
+ speaker: z.ZodString;
2412
+ role: z.ZodOptional<z.ZodEnum<{
2413
+ unknown: "unknown";
2414
+ user: "user";
2415
+ assistant: "assistant";
2416
+ external: "external";
2417
+ }>>;
2418
+ }, z.core.$strip>>>;
2419
+ }, z.core.$strip>;
2420
+ discourse: z.ZodObject<{
2421
+ commitment: z.ZodEnum<{
2422
+ none: "none";
2423
+ tentative: "tentative";
2424
+ asserted: "asserted";
2425
+ hypothetical: "hypothetical";
2426
+ counterfactual: "counterfactual";
2427
+ }>;
2428
+ disposition: z.ZodEnum<{
2429
+ superseded: "superseded";
2430
+ rejected: "rejected";
2431
+ completed: "completed";
2432
+ proposed: "proposed";
2433
+ active: "active";
2434
+ accepted: "accepted";
2435
+ resolved: "resolved";
2436
+ cancelled: "cancelled";
2437
+ }>;
2438
+ }, z.core.$strip>;
2439
+ epistemic: z.ZodObject<{
2440
+ basis: z.ZodEnum<{
2441
+ self_attested: "self_attested";
2442
+ source_report: "source_report";
2443
+ cited_evidence: "cited_evidence";
2444
+ }>;
2445
+ evidence: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
2446
+ fact_id: z.ZodString;
2447
+ }, z.core.$strip>, z.ZodObject<{
2448
+ page_slug: z.ZodString;
2449
+ line_hash: z.ZodString;
2450
+ }, z.core.$strip>, z.ZodObject<{
2451
+ document_id: z.ZodString;
2452
+ passage_id: z.ZodString;
2453
+ }, z.core.$strip>, z.ZodObject<{
2454
+ journal_event_id: z.ZodString;
2455
+ }, z.core.$strip>]>>>;
2456
+ }, z.core.$strip>;
2457
+ polarity: z.ZodOptional<z.ZodEnum<{
2458
+ affirmed: "affirmed";
2459
+ negated: "negated";
2460
+ }>>;
2461
+ support: z.ZodArray<z.ZodObject<{
2462
+ quote: z.ZodString;
2463
+ item_id: z.ZodOptional<z.ZodString>;
2464
+ }, z.core.$strip>>;
2465
+ discourse_frame: z.ZodArray<z.ZodObject<{
2466
+ quote: z.ZodString;
2467
+ item_id: z.ZodOptional<z.ZodString>;
2468
+ }, z.core.$strip>>;
2469
+ relations: z.ZodOptional<z.ZodArray<z.ZodObject<{
2470
+ type: z.ZodEnum<{
2471
+ corrects: "corrects";
2472
+ supersedes: "supersedes";
2473
+ contradicts: "contradicts";
2474
+ fulfills: "fulfills";
2475
+ answers: "answers";
2476
+ caused_by: "caused_by";
2477
+ }>;
2478
+ target: z.ZodUnion<readonly [z.ZodObject<{
2479
+ candidate_id: z.ZodString;
2480
+ }, z.core.$strip>, z.ZodObject<{
2481
+ memory_id: z.ZodString;
2482
+ }, z.core.$strip>, z.ZodObject<{
2483
+ fact_id: z.ZodString;
2484
+ }, z.core.$strip>]>;
2485
+ support: z.ZodArray<z.ZodObject<{
2486
+ quote: z.ZodString;
2487
+ item_id: z.ZodOptional<z.ZodString>;
2488
+ }, z.core.$strip>>;
2489
+ }, z.core.$strip>>>;
2490
+ time: z.ZodOptional<z.ZodObject<{
2491
+ start: z.ZodOptional<z.ZodString>;
2492
+ until: z.ZodOptional<z.ZodString>;
2493
+ precision: z.ZodEnum<{
2494
+ unknown: "unknown";
2495
+ instant: "instant";
2496
+ day: "day";
2497
+ month: "month";
2498
+ year: "year";
2499
+ }>;
2500
+ relation: z.ZodEnum<{
2501
+ occurred: "occurred";
2502
+ valid: "valid";
2503
+ scheduled: "scheduled";
2504
+ due: "due";
2505
+ }>;
2506
+ status: z.ZodEnum<{
2507
+ planned: "planned";
2508
+ scheduled: "scheduled";
2509
+ actual: "actual";
2510
+ tentative: "tentative";
2511
+ }>;
2512
+ timezone: z.ZodOptional<z.ZodString>;
2513
+ mentioned_at: z.ZodOptional<z.ZodString>;
2514
+ recurrence: z.ZodOptional<z.ZodObject<{
2515
+ frequency: z.ZodEnum<{
2516
+ daily: "daily";
2517
+ weekly: "weekly";
2518
+ monthly: "monthly";
2519
+ yearly: "yearly";
2520
+ }>;
2521
+ interval: z.ZodOptional<z.ZodNumber>;
2522
+ weekdays: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2523
+ mo: "mo";
2524
+ tu: "tu";
2525
+ we: "we";
2526
+ th: "th";
2527
+ fr: "fr";
2528
+ sa: "sa";
2529
+ su: "su";
2530
+ }>>>;
2531
+ until: z.ZodOptional<z.ZodString>;
2532
+ }, z.core.$strip>>;
2533
+ }, z.core.$strip>>;
2534
+ destination: z.ZodObject<{
2535
+ slug: z.ZodString;
2536
+ section: z.ZodOptional<z.ZodString>;
2537
+ }, z.core.$strip>;
2538
+ }, z.core.$strip>>;
2539
+ }, z.core.$strip>;
2540
+ source_id: z.ZodString;
2541
+ revision: z.ZodString;
2542
+ }, z.core.$strip>, z.ZodObject<{
2543
+ retention: z.ZodObject<{
2544
+ mode: z.ZodLiteral<"retract">;
2545
+ target_revision: z.ZodString;
2546
+ candidate_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
2547
+ reason: z.ZodEnum<{
2548
+ source_corrected: "source_corrected";
2549
+ source_deleted: "source_deleted";
2550
+ user_request: "user_request";
2551
+ }>;
2552
+ }, z.core.$strip>;
2553
+ source_id: z.ZodString;
2554
+ revision: z.ZodString;
2555
+ }, z.core.$strip>]>>;
2556
+ dry_run: z.ZodOptional<z.ZodBoolean>;
2557
+ }, z.core.$strip>, z.ZodObject<{
2558
+ status: z.ZodEnum<{
2559
+ ok: "ok";
2560
+ empty: "empty";
2561
+ degraded: "degraded";
2562
+ unavailable: "unavailable";
2563
+ }>;
2564
+ degraded: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2565
+ no_embedding_model: "no_embedding_model";
2566
+ no_reranker: "no_reranker";
2567
+ no_derive_model: "no_derive_model";
2568
+ no_expansion_model: "no_expansion_model";
2569
+ embedding_failed: "embedding_failed";
2570
+ rerank_failed: "rerank_failed";
2571
+ derive_failed: "derive_failed";
2572
+ expansion_failed: "expansion_failed";
2573
+ no_vector_index: "no_vector_index";
2574
+ partial_index: "partial_index";
2575
+ no_document_text: "no_document_text";
2576
+ document_source_missing: "document_source_missing";
2577
+ no_graph_index: "no_graph_index";
2578
+ no_entity_index: "no_entity_index";
2579
+ entity_resolution_failed: "entity_resolution_failed";
2580
+ partial_graph_index: "partial_graph_index";
2581
+ graph_traversal_limited: "graph_traversal_limited";
2582
+ no_answer_model: "no_answer_model";
2583
+ answer_failed: "answer_failed";
2584
+ answer_verification_failed: "answer_verification_failed";
2585
+ answer_truncated: "answer_truncated";
2586
+ }>>>;
2587
+ note: z.ZodOptional<z.ZodString>;
2588
+ outcome: z.ZodEnum<{
2589
+ ok: "ok";
2590
+ partial: "partial";
2591
+ noop: "noop";
2592
+ }>;
2593
+ sources: z.ZodArray<z.ZodObject<{
2594
+ source_id: z.ZodString;
2595
+ revision: z.ZodString;
2596
+ outcome: z.ZodEnum<{
2597
+ ok: "ok";
2598
+ noop: "noop";
2599
+ held: "held";
2600
+ replayed: "replayed";
2601
+ revision_conflict: "revision_conflict";
2602
+ }>;
2603
+ change_id: z.ZodOptional<z.ZodString>;
2604
+ candidates: z.ZodArray<z.ZodObject<{
2605
+ candidate_id: z.ZodString;
2606
+ outcome: z.ZodEnum<{
2607
+ not_found: "not_found";
2608
+ written: "written";
2609
+ duplicate: "duplicate";
2610
+ support_added: "support_added";
2611
+ retracted: "retracted";
2612
+ held: "held";
2613
+ }>;
2614
+ memory_id: z.ZodOptional<z.ZodString>;
2615
+ slug: z.ZodOptional<z.ZodString>;
2616
+ reason: z.ZodOptional<z.ZodString>;
2617
+ }, z.core.$strip>>;
2618
+ note: z.ZodOptional<z.ZodString>;
2619
+ }, z.core.$strip>>;
2620
+ }, z.core.$strip>>;
2352
2621
  readonly forget: OpDefinition<z.ZodObject<{
2353
2622
  fact: z.ZodOptional<z.ZodString>;
2354
2623
  slug: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyB7B;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;IACV,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLN,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,GAAG,CAAC;AAEtC,eAAO,MAAM,QAAQ,EAAuB,MAAM,EAAE,CAAC;AAErD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE7E,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG;KACnB,CAAC,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0B7B;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;IACV,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMN,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,GAAG,CAAC;AAEtC,eAAO,MAAM,QAAQ,EAAuB,MAAM,EAAE,CAAC;AAErD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE7E,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG;KACnB,CAAC,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD"}
package/dist/registry.js CHANGED
@@ -8,6 +8,7 @@ import { GraphInput, GraphOutput } from "./ops/graph.js";
8
8
  import { WriteInput, WriteOutput } from "./ops/write.js";
9
9
  import { FolderInput, FolderOutput } from "./ops/folder.js";
10
10
  import { AdoptInput, AdoptOutput, ForgetInput, ForgetOutput, IngestInput, IngestOutput, MoveInput, MoveOutput, RememberInput, RememberOutput, UndoInput, UndoOutput, } from "./ops/mutate.js";
11
+ import { RetainInput, RetainOutput } from "./ops/retain.js";
11
12
  function op(def) {
12
13
  return def;
13
14
  }
@@ -134,6 +135,18 @@ export const OPS = {
134
135
  'fallback page is used only after ordinary routing and page creation fail, and never grants itself write ' +
135
136
  'permission.',
136
137
  }),
138
+ retain: op({
139
+ name: 'retain',
140
+ kind: 'write',
141
+ input: RetainInput,
142
+ output: RetainOutput,
143
+ implemented: true,
144
+ description: 'Replay-safe retention for identified external source revisions. The first shipped mode accepts ' +
145
+ 'caller-provided candidates with exact source spans and exact destinations, preserving discourse, ' +
146
+ 'attribution, epistemic basis, relations, and typed time. Replaying an identical source revision is ' +
147
+ 'a no-op; changing its bytes or interpretation is a typed revision conflict. Explicit retraction removes ' +
148
+ 'only support owned by the addressed source revision.',
149
+ }),
137
150
  forget: op({
138
151
  name: 'forget',
139
152
  kind: 'write',