cvx-kit 0.1.6 → 0.1.8

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 (116) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +63 -38
  3. package/dist/agent-tools.d.mts +2 -1
  4. package/dist/agent-tools.mjs +1 -1
  5. package/dist/agent-tools.mjs.map +1 -1
  6. package/dist/components/approvals/audit.mjs +1 -1
  7. package/dist/components/foundation/client.d.mts +16 -7
  8. package/dist/components/foundation/client.mjs +1 -1
  9. package/dist/components/foundation/client.mjs.map +1 -1
  10. package/dist/components/foundation/modules/command/command.d.mts +50 -10
  11. package/dist/components/foundation/modules/command/command.mjs +1 -1
  12. package/dist/components/foundation/modules/command/command.mjs.map +1 -1
  13. package/dist/components/foundation/modules/command/lifecycle.d.mts +81 -0
  14. package/dist/components/foundation/modules/command/lifecycle.mjs +2 -0
  15. package/dist/components/foundation/modules/command/lifecycle.mjs.map +1 -0
  16. package/dist/components/foundation/modules/observability/observability.d.mts +8 -0
  17. package/dist/components/foundation/modules/observability/observability.mjs +1 -1
  18. package/dist/components/foundation/modules/observability/observability.mjs.map +1 -1
  19. package/dist/components/foundation/operation.d.mts +6 -6
  20. package/dist/components/foundation/operation.mjs.map +1 -1
  21. package/dist/contracts.d.mts +4 -0
  22. package/dist/contracts.mjs +1 -0
  23. package/dist/crud.d.mts +2 -2
  24. package/dist/crud.mjs.map +1 -1
  25. package/dist/effect.d.mts +12 -0
  26. package/dist/effect.mjs +1 -0
  27. package/dist/errors.d.mts +2 -1
  28. package/dist/errors.mjs +1 -1
  29. package/dist/errors.mjs.map +1 -1
  30. package/dist/idempotency.d.mts +2 -0
  31. package/dist/idempotency.mjs +1 -0
  32. package/dist/modules/contracts/contract.d.mts +70 -0
  33. package/dist/modules/contracts/contract.mjs +2 -0
  34. package/dist/modules/contracts/contract.mjs.map +1 -0
  35. package/dist/modules/contracts/convex.d.mts +22 -0
  36. package/dist/modules/contracts/convex.mjs +2 -0
  37. package/dist/modules/contracts/convex.mjs.map +1 -0
  38. package/dist/modules/contracts/errors.d.mts +44 -0
  39. package/dist/modules/contracts/errors.mjs +2 -0
  40. package/dist/modules/contracts/errors.mjs.map +1 -0
  41. package/dist/modules/contracts/exposure.d.mts +105 -0
  42. package/dist/modules/contracts/exposure.mjs +2 -0
  43. package/dist/modules/contracts/exposure.mjs.map +1 -0
  44. package/dist/modules/contracts/idempotency.d.mts +87 -0
  45. package/dist/modules/contracts/idempotency.mjs +2 -0
  46. package/dist/modules/contracts/idempotency.mjs.map +1 -0
  47. package/dist/modules/contracts/standard.d.mts +16 -0
  48. package/dist/modules/contracts/standard.mjs +2 -0
  49. package/dist/modules/contracts/standard.mjs.map +1 -0
  50. package/dist/modules/contracts/workflow.d.mts +167 -0
  51. package/dist/modules/contracts/workflow.mjs +2 -0
  52. package/dist/modules/contracts/workflow.mjs.map +1 -0
  53. package/dist/modules/effect/agent-tools.d.mts +2 -0
  54. package/dist/modules/effect/agent-tools.mjs +1 -0
  55. package/dist/modules/effect/api-runtime.d.mts +38 -0
  56. package/dist/modules/effect/api-runtime.mjs +2 -0
  57. package/dist/modules/effect/api-runtime.mjs.map +1 -0
  58. package/dist/modules/effect/api-zod.d.mts +35 -0
  59. package/dist/modules/effect/api-zod.mjs +2 -0
  60. package/dist/modules/effect/api-zod.mjs.map +1 -0
  61. package/dist/modules/effect/api.d.mts +21 -0
  62. package/dist/modules/effect/api.mjs +2 -0
  63. package/dist/modules/effect/api.mjs.map +1 -0
  64. package/dist/modules/effect/client.d.mts +11 -0
  65. package/dist/modules/effect/client.mjs +1 -0
  66. package/dist/modules/effect/command.d.mts +63 -0
  67. package/dist/modules/effect/command.mjs +2 -0
  68. package/dist/modules/effect/command.mjs.map +1 -0
  69. package/dist/modules/effect/crud.d.mts +785 -0
  70. package/dist/modules/effect/crud.mjs +2 -0
  71. package/dist/modules/effect/crud.mjs.map +1 -0
  72. package/dist/modules/effect/errors.d.mts +8 -0
  73. package/dist/modules/effect/errors.mjs +2 -0
  74. package/dist/modules/effect/errors.mjs.map +1 -0
  75. package/dist/modules/effect/foundation.d.mts +21 -0
  76. package/dist/modules/effect/foundation.mjs +2 -0
  77. package/dist/modules/effect/foundation.mjs.map +1 -0
  78. package/dist/modules/effect/idempotency.d.mts +31 -0
  79. package/dist/modules/effect/idempotency.mjs +2 -0
  80. package/dist/modules/effect/idempotency.mjs.map +1 -0
  81. package/dist/modules/effect/normalize.d.mts +10 -0
  82. package/dist/modules/effect/normalize.mjs +2 -0
  83. package/dist/modules/effect/normalize.mjs.map +1 -0
  84. package/dist/modules/effect/operation.d.mts +141 -0
  85. package/dist/modules/effect/operation.mjs +2 -0
  86. package/dist/modules/effect/operation.mjs.map +1 -0
  87. package/dist/modules/effect/query.d.mts +69 -0
  88. package/dist/modules/effect/query.mjs +2 -0
  89. package/dist/modules/effect/query.mjs.map +1 -0
  90. package/dist/modules/effect/schema.d.mts +33 -0
  91. package/dist/modules/effect/schema.mjs +2 -0
  92. package/dist/modules/effect/schema.mjs.map +1 -0
  93. package/dist/modules/effect/workflow.d.mts +77 -0
  94. package/dist/modules/effect/workflow.mjs +2 -0
  95. package/dist/modules/effect/workflow.mjs.map +1 -0
  96. package/dist/node_modules/@standard-schema/spec/dist/index.d.mts +79 -0
  97. package/dist/workflow.d.mts +2 -0
  98. package/dist/workflow.mjs +1 -0
  99. package/docs/architecture.md +3 -3
  100. package/docs/auth.md +71 -0
  101. package/docs/command-context.md +150 -0
  102. package/docs/commands-legacy.md +511 -0
  103. package/docs/commands.md +143 -363
  104. package/docs/conventions.md +15 -5
  105. package/docs/crud.md +4 -0
  106. package/docs/domain-operations.md +615 -0
  107. package/docs/effect.md +395 -0
  108. package/docs/llms.md +69 -45
  109. package/docs/migration.md +1 -1
  110. package/docs/upgrading.md +9 -0
  111. package/package.json +33 -1
  112. package/scripts/convex-smoke-env.mjs +33 -0
  113. package/scripts/smoke-packed-components.mjs +9 -2
  114. package/scripts/smoke-packed-effect.mjs +439 -0
  115. package/scripts/test-packed-effect.mjs +460 -0
  116. package/scripts/test-packed-ids.mjs +1 -0
@@ -0,0 +1,785 @@
1
+ import { ContractSchema, LegacyParser, StandardSchema } from "../contracts/contract.mjs";
2
+ import { Observability } from "../../components/foundation/modules/observability/observability.mjs";
3
+ import { CallbackError, CallbackRequirements, CheckedEffectDefinition, EffectMiddlewareInput, EffectOperationArgument, EffectOperationError, EffectOperationRequirements, EffectOperationResult, EffectValue, UnwrappedDefaultError, UnwrappedDefaultRequirements } from "./operation.mjs";
4
+ import { EffectFoundation, EffectFoundationOptions } from "./foundation.mjs";
5
+ import { PaginationOptions, PaginationResult } from "convex/server";
6
+ import { z } from "zod";
7
+ import { GenericId } from "convex/values";
8
+ import { Effect } from "effect";
9
+ //#region src/modules/effect/crud.d.ts
10
+ /** Table masks and branded IDs come from the same kit-owned table boundary. */
11
+ type EffectCrudTable = {
12
+ tableName: string;
13
+ commandInput: z.ZodObject<Record<string, z.ZodType>>;
14
+ storage: z.ZodObject<Record<string, z.ZodType>>;
15
+ publicDto: z.ZodObject<Record<string, z.ZodType>>;
16
+ tools: {
17
+ id: z.ZodObject<{
18
+ id: z.ZodType<GenericId<string>, string>;
19
+ }>;
20
+ update: z.ZodObject<{
21
+ id: z.ZodType<GenericId<string>, string>;
22
+ data: z.ZodObject<Record<string, z.ZodType>>;
23
+ }>;
24
+ };
25
+ };
26
+ type Input<Table extends EffectCrudTable> = z.output<Table['commandInput']>;
27
+ type Storage<Table extends EffectCrudTable> = z.input<Table['storage']>;
28
+ type Id<Table extends EffectCrudTable> = GenericId<Table['tableName']>;
29
+ type Update<Table extends EffectCrudTable> = z.output<Table['tools']['update']>;
30
+ type IdInput<Table extends EffectCrudTable> = z.output<Table['tools']['id']>;
31
+ type IdContext<Table extends EffectCrudTable> = {
32
+ db: {
33
+ normalizeId: (table: Table['tableName'], id: string) => Id<Table> | null;
34
+ };
35
+ };
36
+ /** Compare decoded command fields with storage input, allowing server-only fields. */
37
+ type StorageCompatible<Decoded, Stored> = [Exclude<keyof Decoded, keyof Stored>] extends [never] ? [Decoded] extends [Pick<Partial<Stored>, Extract<keyof Decoded, keyof Stored>>] ? true : false : false;
38
+ type StorageOverrides<Table extends EffectCrudTable> = (StorageCompatible<Input<Table>, Storage<Table>> extends true ? unknown : {
39
+ overrides: {
40
+ create: Function;
41
+ };
42
+ }) & (StorageCompatible<Update<Table>['data'], Storage<Table>> extends true ? unknown : {
43
+ overrides: {
44
+ update: Function;
45
+ };
46
+ });
47
+ type Supported<Value> = Value | PromiseLike<Value> | Effect.Effect<Value, unknown, unknown>;
48
+ type EffectCrudPage<Row> = PaginationResult<Row>;
49
+ type EffectCrudPagination = { [Key in keyof PaginationOptions]: PaginationOptions[Key]; } & {
50
+ id?: number;
51
+ };
52
+ /** Trusted repositories receive domain context, never authority from caller arguments. */
53
+ type EffectCrudRepository<Context, Table extends EffectCrudTable, Insert, Patch> = {
54
+ insert: (context: Context, values: Storage<Table>) => Insert;
55
+ patch: (context: Context, id: Id<Table>, values: Partial<Storage<Table>>) => Patch;
56
+ };
57
+ type EffectCrudContext<Table extends EffectCrudTable> = {
58
+ db: {
59
+ insert: (table: Table['tableName'], values: Storage<Table>) => Promise<Id<Table>>;
60
+ patch: (id: Id<Table>, values: Partial<Storage<Table>>) => Promise<void>;
61
+ };
62
+ };
63
+ type CallbackHost<Callback> = [Exclude<Callback, undefined>] extends [never] ? unknown : Exclude<Callback, undefined> extends ((...args: infer Arguments) => unknown) ? Arguments extends [] ? unknown : Arguments[0] : unknown;
64
+ type PermissionPolicy<Dependencies> = 'checkPermission' extends keyof Dependencies ? Dependencies['checkPermission'] : never;
65
+ type CallbackReturned<Callback> = Callback extends ((...args: never[]) => infer Returned) ? Returned : never;
66
+ type QueryCallbackHost<Callback> = Callback extends ((host: infer Host, input: never) => unknown) ? Host : never;
67
+ type QueryPolicyHost<Dependencies> = [QueryCallbackHost<PermissionPolicy<Dependencies>>] extends [never] ? unknown : QueryCallbackHost<PermissionPolicy<Dependencies>>;
68
+ type PolicyHost<Options extends EffectFoundationOptions> = CallbackHost<Options['writeAudit']> & QueryPolicyHost<Options & {
69
+ observability: EffectFoundation<Options>['observability'];
70
+ }>;
71
+ /** Keep registry indexing inside a named, constrained declaration boundary. */
72
+ type CrudExecutor<Host, Operations extends Readonly<Record<string, {
73
+ input: ContractSchema;
74
+ result: ContractSchema;
75
+ }>>, Callbacks, Guard> = {
76
+ exec<Key extends Extract<keyof Operations, string>>(operation: Key, input: EffectOperationArgument<Operations[Key]>, host: Host): Effect.Effect<EffectOperationResult<Operations[Key]>, EffectOperationError<Operations[Key]> | CallbackError<Callbacks> | UnwrappedDefaultError<Operations[Key], Guard>, EffectOperationRequirements<Operations[Key]> | CallbackRequirements<Callbacks> | UnwrappedDefaultRequirements<Operations[Key], Guard>>;
77
+ };
78
+ type EffectCrudConfig<Options extends EffectFoundationOptions, Host, ContextReturned, Table extends EffectCrudTable, Actor, Enrich, Insert, Patch, Get, List, Project, Policy, CreateGuard, UpdateGuard, ArchiveGuard, GetGuard, ListGuard, CreateOverride, UpdateOverride, ArchiveOverride, CheckId = never> = {
79
+ foundation: EffectFoundation<Options>;
80
+ table: Table;
81
+ context: (host: Host) => ContextReturned;
82
+ aggregateType: string;
83
+ classification?: string;
84
+ /** Trusted table-membership check, not an existence lookup or a string-brand parser. */
85
+ checkId?: (context: EffectValue<ContextReturned>, id: string) => CheckId;
86
+ actor: (context: EffectValue<ContextReturned>) => Actor;
87
+ enrich?: (context: EffectValue<ContextReturned>, input: Input<Table>) => Enrich;
88
+ repository?: EffectCrudRepository<EffectValue<ContextReturned>, Table, Insert, Patch>;
89
+ policy?: {
90
+ guard?: (context: EffectValue<ContextReturned>) => Policy;
91
+ permissions?: Partial<Record<'create' | 'update' | 'archive' | 'get' | 'list', string>>;
92
+ };
93
+ guards?: {
94
+ create?: (context: EffectValue<ContextReturned>, input: Input<Table>) => CreateGuard;
95
+ update?: (context: EffectValue<ContextReturned>, input: Update<Table>) => UpdateGuard;
96
+ archive?: (context: EffectValue<ContextReturned>, input: IdInput<Table>) => ArchiveGuard;
97
+ get?: (context: EffectValue<ContextReturned>, input: IdInput<Table>) => GetGuard;
98
+ list?: (context: EffectValue<ContextReturned>, input: EffectCrudPagination) => ListGuard;
99
+ };
100
+ overrides?: {
101
+ create?: (input: Input<Table>, context: EffectValue<ContextReturned>) => CreateOverride;
102
+ update?: (input: Update<Table>, context: EffectValue<ContextReturned>) => UpdateOverride;
103
+ archive?: (input: IdInput<Table>, context: EffectValue<ContextReturned>) => ArchiveOverride;
104
+ };
105
+ read: {
106
+ /** Maximum initial page target; reactive ranges may return more rows. */
107
+ maxPageSize: number;
108
+ /**
109
+ * Server-owned indexed pagination row budget; defaults to maxPageSize. Search ignores it.
110
+ * Native reactive ranges may exceed this budget; consumers must honor split metadata.
111
+ */
112
+ maximumRowsRead?: number;
113
+ /** Return raw, undecoded public-schema input; the query result lifecycle decodes it once. */
114
+ project: (row: Storage<Table>) => Project;
115
+ get: (context: EffectValue<ContextReturned>, id: Id<Table>) => Get;
116
+ /** Trusted adapters forward the supplied read budget to supported native pagination. */
117
+ list: (context: EffectValue<ContextReturned>, input: EffectCrudPagination) => List;
118
+ };
119
+ } & (EffectValue<ContextReturned> extends EffectCrudContext<Table> ? unknown : {
120
+ repository: EffectCrudRepository<EffectValue<ContextReturned>, Table, Insert, Patch>;
121
+ }) & (EffectValue<ContextReturned> extends IdContext<Table> ? unknown : {
122
+ checkId: (context: EffectValue<ContextReturned>, id: string) => CheckId;
123
+ }) & StorageOverrides<Table>;
124
+ /** Generate operations through the Foundation's bound helpers; no runner or policy lives here. */
125
+ declare function createEffectCrud<const Options extends EffectFoundationOptions, Host extends PolicyHost<Options>, ContextReturned, const Table extends EffectCrudTable, Actor extends Supported<string>, Enrich extends Supported<Partial<Storage<Table>>> = never, Insert extends Supported<Id<Table>> = never, Patch extends Supported<void> = never, Get extends Supported<Storage<Table> | null> = never, List extends Supported<EffectCrudPage<Storage<Table>>> = never, Project extends Supported<z.input<Table['publicDto']>> = never, Policy extends Supported<void> = never, CreateGuard extends Supported<void> = never, UpdateGuard extends Supported<void> = never, ArchiveGuard extends Supported<void> = never, GetGuard extends Supported<void> = never, ListGuard extends Supported<void> = never, CreateOverride extends Supported<{
126
+ id: Id<Table>;
127
+ }> = never, UpdateOverride extends Supported<{
128
+ ok: true;
129
+ }> = never, ArchiveOverride extends Supported<{
130
+ ok: true;
131
+ }> = never, CheckId extends Supported<boolean> = never, const Configuration extends object = object>(config: Configuration & ProtectedOverrides<Configuration> & EffectCrudConfig<Options, Host, ContextReturned, Table, Actor, Enrich, Insert, Patch, Get, List, Project, Policy, CreateGuard, UpdateGuard, ArchiveGuard, GetGuard, ListGuard, CreateOverride, UpdateOverride, ArchiveOverride, CheckId>): {
132
+ commands: CrudExecutor<Host, NamedOperation<`${Table["tableName"]}.create`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
133
+ input: StandardSchema<z.input<Table["commandInput"]>, z.infer<Table["commandInput"]>> & LegacyParser<z.infer<Table["commandInput"]>>;
134
+ result: StandardSchema<{
135
+ id: string;
136
+ }, {
137
+ id: Id<Table>;
138
+ }> & LegacyParser<{
139
+ id: Id<Table>;
140
+ }>;
141
+ handler: (input: z.infer<Table["commandInput"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Chosen<CreateOverride, Effect.Effect<{
142
+ id: EffectValue<Insert> | Id<Table>;
143
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>;
144
+ classification?: string;
145
+ permission?: string;
146
+ metadata?: Record<never, never> | undefined;
147
+ aggregates?: readonly string[] | undefined;
148
+ replayResult?: undefined;
149
+ wire?: {
150
+ schema: ContractSchema;
151
+ project: (value: {
152
+ id: Id<Table>;
153
+ }) => unknown;
154
+ } | undefined;
155
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["commandInput"]>) => CreateGuard) | undefined;
156
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["commandInput"]>) => never) | undefined;
157
+ audit?: ((resolution: {
158
+ command: z.infer<Table["commandInput"]>;
159
+ result: {
160
+ id: Id<Table>;
161
+ };
162
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
163
+ operation: `${Table["tableName"]}.create`;
164
+ actorId: string;
165
+ aggregate: {
166
+ type: string;
167
+ id: string;
168
+ };
169
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
170
+ } & {
171
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["commandInput"]>, {
172
+ id: string;
173
+ }, Record<never, never>, CallbackError<CreateGuard> | CallbackError<Policy> | CallbackError<Chosen<CreateOverride, Effect.Effect<{
174
+ id: EffectValue<Insert> | Id<Table>;
175
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>>, CallbackRequirements<CreateGuard> | CallbackRequirements<Policy> | CallbackRequirements<Chosen<CreateOverride, Effect.Effect<{
176
+ id: EffectValue<Insert> | Id<Table>;
177
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>>>) => never) | undefined;
178
+ } & {
179
+ classification: string;
180
+ audit: (resolution: {
181
+ command: z.infer<Table["commandInput"]>;
182
+ result: {
183
+ id: Id<Table>;
184
+ };
185
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
186
+ operation: `${Table["tableName"]}.create`;
187
+ actorId: string;
188
+ aggregate: {
189
+ type: string;
190
+ id: string;
191
+ };
192
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
193
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.update`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
194
+ input: StandardSchema<z.input<Table["tools"]["update"]>, z.infer<Table["tools"]["update"]>> & LegacyParser<z.infer<Table["tools"]["update"]>>;
195
+ result: z.ZodObject<{
196
+ ok: z.ZodLiteral<true>;
197
+ }, z.core.$strict>;
198
+ handler: (input: z.infer<Table["tools"]["update"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
199
+ ok: true;
200
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>, CallbackError<CheckId> | CallbackError<Chosen<UpdateOverride, Effect.Effect<{
201
+ ok: true;
202
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>, CallbackRequirements<CheckId> | CallbackRequirements<Chosen<UpdateOverride, Effect.Effect<{
203
+ ok: true;
204
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>;
205
+ classification?: string;
206
+ permission?: string;
207
+ metadata?: Record<never, never> | undefined;
208
+ aggregates?: readonly string[] | undefined;
209
+ replayResult?: undefined;
210
+ wire?: {
211
+ schema: ContractSchema;
212
+ project: (value: {
213
+ ok: true;
214
+ }) => unknown;
215
+ } | undefined;
216
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["update"]>) => UpdateGuard) | undefined;
217
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["update"]>) => never) | undefined;
218
+ audit?: ((resolution: {
219
+ command: z.infer<Table["tools"]["update"]>;
220
+ result: {
221
+ ok: true;
222
+ };
223
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
224
+ operation: `${Table["tableName"]}.update`;
225
+ actorId: string;
226
+ aggregate: {
227
+ type: string;
228
+ id: string;
229
+ };
230
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
231
+ } & {
232
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["update"]>, {
233
+ ok: true;
234
+ }, Record<never, never>, CallbackError<CheckId> | CallbackError<Policy> | CallbackError<UpdateGuard> | CallbackError<Chosen<UpdateOverride, Effect.Effect<{
235
+ ok: true;
236
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>> | CallbackError<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
237
+ ok: true;
238
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>, CallbackRequirements<CheckId> | CallbackRequirements<Policy> | CallbackRequirements<UpdateGuard> | CallbackRequirements<Chosen<UpdateOverride, Effect.Effect<{
239
+ ok: true;
240
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>> | CallbackRequirements<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
241
+ ok: true;
242
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>>) => never) | undefined;
243
+ } & {
244
+ classification: string;
245
+ audit: (resolution: {
246
+ command: z.infer<Table["tools"]["update"]>;
247
+ result: {
248
+ ok: true;
249
+ };
250
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
251
+ operation: `${Table["tableName"]}.update`;
252
+ actorId: string;
253
+ aggregate: {
254
+ type: string;
255
+ id: string;
256
+ };
257
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
258
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.archive`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
259
+ input: StandardSchema<z.input<Table["tools"]["id"]>, z.infer<Table["tools"]["id"]>> & LegacyParser<z.infer<Table["tools"]["id"]>>;
260
+ result: z.ZodObject<{
261
+ ok: z.ZodLiteral<true>;
262
+ }, z.core.$strict>;
263
+ handler: (input: z.infer<Table["tools"]["id"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
264
+ ok: true;
265
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>, CallbackError<CheckId> | CallbackError<Chosen<ArchiveOverride, Effect.Effect<{
266
+ ok: true;
267
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>, CallbackRequirements<CheckId> | CallbackRequirements<Chosen<ArchiveOverride, Effect.Effect<{
268
+ ok: true;
269
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>;
270
+ classification?: string;
271
+ permission?: string;
272
+ metadata?: Record<never, never> | undefined;
273
+ aggregates?: readonly string[] | undefined;
274
+ replayResult?: undefined;
275
+ wire?: {
276
+ schema: ContractSchema;
277
+ project: (value: {
278
+ ok: true;
279
+ }) => unknown;
280
+ } | undefined;
281
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["id"]>) => ArchiveGuard) | undefined;
282
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["id"]>) => never) | undefined;
283
+ audit?: ((resolution: {
284
+ command: z.infer<Table["tools"]["id"]>;
285
+ result: {
286
+ ok: true;
287
+ };
288
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
289
+ operation: `${Table["tableName"]}.archive`;
290
+ actorId: string;
291
+ aggregate: {
292
+ type: string;
293
+ id: string;
294
+ };
295
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
296
+ } & {
297
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["id"]>, {
298
+ ok: true;
299
+ }, Record<never, never>, CallbackError<ArchiveGuard> | CallbackError<CheckId> | CallbackError<Policy> | CallbackError<Chosen<ArchiveOverride, Effect.Effect<{
300
+ ok: true;
301
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>> | CallbackError<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
302
+ ok: true;
303
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>, CallbackRequirements<ArchiveGuard> | CallbackRequirements<CheckId> | CallbackRequirements<Policy> | CallbackRequirements<Chosen<ArchiveOverride, Effect.Effect<{
304
+ ok: true;
305
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>> | CallbackRequirements<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
306
+ ok: true;
307
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>>) => never) | undefined;
308
+ } & {
309
+ classification: string;
310
+ audit: (resolution: {
311
+ command: z.infer<Table["tools"]["id"]>;
312
+ result: {
313
+ ok: true;
314
+ };
315
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
316
+ operation: `${Table["tableName"]}.archive`;
317
+ actorId: string;
318
+ aggregate: {
319
+ type: string;
320
+ id: string;
321
+ };
322
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
323
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>>, ((host: Host) => ContextReturned) | Options[keyof Options], Policy>;
324
+ queries: CrudExecutor<Host, NamedOperation<`${Table["tableName"]}.get`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
325
+ input: StandardSchema<z.input<Table["tools"]["id"]>, z.infer<Table["tools"]["id"]>> & LegacyParser<z.infer<Table["tools"]["id"]>>;
326
+ result: StandardSchema<z.input<Table["publicDto"]> | null, z.output<Table["publicDto"]> | null> & LegacyParser<z.output<Table["publicDto"]> | null>;
327
+ handler: (input: z.infer<Table["tools"]["id"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<z.core.input<Table["publicDto"]> | null, CallbackError<CheckId> | CallbackError<Get> | CallbackError<Project>, CallbackRequirements<CheckId> | CallbackRequirements<Get> | CallbackRequirements<Project>>;
328
+ classification?: string;
329
+ permission?: string;
330
+ metadata?: Record<never, never> | undefined;
331
+ aggregates?: readonly string[] | undefined;
332
+ replayResult?: undefined;
333
+ wire?: {
334
+ schema: ContractSchema;
335
+ project: (value: z.infer<Table["publicDto"]> | null) => unknown;
336
+ } | undefined;
337
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["id"]>) => GetGuard) | undefined;
338
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["id"]>) => never) | undefined;
339
+ audit?: ((resolution: {
340
+ command: z.infer<Table["tools"]["id"]>;
341
+ result: z.infer<Table["publicDto"]> | null;
342
+ }, context: EffectValue<ContextReturned>) => never) | undefined;
343
+ } & {
344
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["id"]>, z.core.input<Table["publicDto"]> | null, Record<never, never>, CallbackError<CheckId> | CallbackError<Get> | CallbackError<GetGuard> | CallbackError<Policy> | CallbackError<Project> | CallbackError<z.core.input<Table["publicDto"]>>, CallbackRequirements<CheckId> | CallbackRequirements<Get> | CallbackRequirements<GetGuard> | CallbackRequirements<Policy> | CallbackRequirements<Project> | CallbackRequirements<z.core.input<Table["publicDto"]>>>) => never) | undefined;
345
+ } & {
346
+ prepare?: never;
347
+ audit?: never;
348
+ aggregates?: never;
349
+ replayResult?: never;
350
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.list`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
351
+ input: z.ZodObject<{
352
+ numItems: z.ZodNumber;
353
+ cursor: z.ZodNullable<z.ZodString>;
354
+ endCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
355
+ id: z.ZodOptional<z.ZodNumber>;
356
+ maximumRowsRead: z.ZodOptional<z.ZodNumber>;
357
+ maximumBytesRead: z.ZodOptional<z.ZodNumber>;
358
+ }, z.core.$strict>;
359
+ result: z.ZodObject<{
360
+ page: z.ZodArray<Table["publicDto"]>;
361
+ isDone: z.ZodBoolean;
362
+ continueCursor: z.ZodString;
363
+ splitCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
364
+ pageStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
365
+ SplitRecommended: "SplitRecommended";
366
+ SplitRequired: "SplitRequired";
367
+ }>>>;
368
+ }, z.core.$strip>;
369
+ handler: (input: {
370
+ numItems: number;
371
+ cursor: string | null;
372
+ endCursor?: string | null | undefined;
373
+ id?: number | undefined;
374
+ maximumRowsRead?: number | undefined;
375
+ maximumBytesRead?: number | undefined;
376
+ }, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<{
377
+ isDone: boolean;
378
+ continueCursor: import("convex/server").Cursor;
379
+ splitCursor?: import("convex/server").Cursor | null;
380
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null;
381
+ page: z.input<Table["publicDto"]>[];
382
+ }, CallbackError<List> | CallbackError<Project>, CallbackRequirements<List> | CallbackRequirements<Project>>;
383
+ classification?: string;
384
+ permission?: string;
385
+ metadata?: Record<never, never> | undefined;
386
+ aggregates?: readonly string[] | undefined;
387
+ replayResult?: undefined;
388
+ wire?: {
389
+ schema: ContractSchema;
390
+ project: (value: {
391
+ page: z.infer<Table["publicDto"]>[];
392
+ isDone: boolean;
393
+ continueCursor: string;
394
+ splitCursor?: string | null | undefined;
395
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
396
+ }) => unknown;
397
+ } | undefined;
398
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: {
399
+ numItems: number;
400
+ cursor: string | null;
401
+ endCursor?: string | null | undefined;
402
+ id?: number | undefined;
403
+ maximumRowsRead?: number | undefined;
404
+ maximumBytesRead?: number | undefined;
405
+ }) => ListGuard) | undefined;
406
+ prepare?: ((context: EffectValue<ContextReturned>, input: {
407
+ numItems: number;
408
+ cursor: string | null;
409
+ endCursor?: string | null | undefined;
410
+ id?: number | undefined;
411
+ maximumRowsRead?: number | undefined;
412
+ maximumBytesRead?: number | undefined;
413
+ }) => never) | undefined;
414
+ audit?: ((resolution: {
415
+ command: {
416
+ numItems: number;
417
+ cursor: string | null;
418
+ endCursor?: string | null | undefined;
419
+ id?: number | undefined;
420
+ maximumRowsRead?: number | undefined;
421
+ maximumBytesRead?: number | undefined;
422
+ };
423
+ result: {
424
+ page: z.infer<Table["publicDto"]>[];
425
+ isDone: boolean;
426
+ continueCursor: string;
427
+ splitCursor?: string | null | undefined;
428
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
429
+ };
430
+ }, context: EffectValue<ContextReturned>) => never) | undefined;
431
+ } & {
432
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, {
433
+ numItems: number;
434
+ cursor: string | null;
435
+ endCursor?: string | null | undefined;
436
+ id?: number | undefined;
437
+ maximumRowsRead?: number | undefined;
438
+ maximumBytesRead?: number | undefined;
439
+ }, {
440
+ page: z.core.input<Table["publicDto"]>[];
441
+ isDone: boolean;
442
+ continueCursor: string;
443
+ splitCursor?: string | null | undefined;
444
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
445
+ }, Record<never, never>, CallbackError<List> | CallbackError<ListGuard> | CallbackError<Policy> | CallbackError<Project>, CallbackRequirements<List> | CallbackRequirements<ListGuard> | CallbackRequirements<Policy> | CallbackRequirements<Project>>) => never) | undefined;
446
+ } & {
447
+ prepare?: never;
448
+ audit?: never;
449
+ aggregates?: never;
450
+ replayResult?: never;
451
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>>, ContextReturned | CallbackReturned<PermissionPolicy<Options & {
452
+ observability: Observability;
453
+ }>>, Policy>;
454
+ operations: NamedOperation<`${Table["tableName"]}.create`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
455
+ input: StandardSchema<z.input<Table["commandInput"]>, z.infer<Table["commandInput"]>> & LegacyParser<z.infer<Table["commandInput"]>>;
456
+ result: StandardSchema<{
457
+ id: string;
458
+ }, {
459
+ id: Id<Table>;
460
+ }> & LegacyParser<{
461
+ id: Id<Table>;
462
+ }>;
463
+ handler: (input: z.infer<Table["commandInput"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Chosen<CreateOverride, Effect.Effect<{
464
+ id: EffectValue<Insert> | Id<Table>;
465
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>;
466
+ classification?: string;
467
+ permission?: string;
468
+ metadata?: Record<never, never> | undefined;
469
+ aggregates?: readonly string[] | undefined;
470
+ replayResult?: undefined;
471
+ wire?: {
472
+ schema: ContractSchema;
473
+ project: (value: {
474
+ id: Id<Table>;
475
+ }) => unknown;
476
+ } | undefined;
477
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["commandInput"]>) => CreateGuard) | undefined;
478
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["commandInput"]>) => never) | undefined;
479
+ audit?: ((resolution: {
480
+ command: z.infer<Table["commandInput"]>;
481
+ result: {
482
+ id: Id<Table>;
483
+ };
484
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
485
+ operation: `${Table["tableName"]}.create`;
486
+ actorId: string;
487
+ aggregate: {
488
+ type: string;
489
+ id: string;
490
+ };
491
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
492
+ } & {
493
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["commandInput"]>, {
494
+ id: string;
495
+ }, Record<never, never>, CallbackError<CreateGuard> | CallbackError<Policy> | CallbackError<Chosen<CreateOverride, Effect.Effect<{
496
+ id: EffectValue<Insert> | Id<Table>;
497
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>>, CallbackRequirements<CreateGuard> | CallbackRequirements<Policy> | CallbackRequirements<Chosen<CreateOverride, Effect.Effect<{
498
+ id: EffectValue<Insert> | Id<Table>;
499
+ }, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E : never, [Effect.Effect<EffectValue<Insert>, CallbackError<Insert>, CallbackRequirements<Insert>> | Effect.Effect<Partial<z.core.input<Table["storage"]>> | undefined, CallbackError<Enrich>, CallbackRequirements<Enrich>> | Effect.Effect<Id<Table>, never, never>] extends [Effect.Effect<infer _A_1, infer _E, infer R>] ? R : never>, RequiredOverride<Configuration, "create">>>>) => never) | undefined;
500
+ } & {
501
+ classification: string;
502
+ audit: (resolution: {
503
+ command: z.infer<Table["commandInput"]>;
504
+ result: {
505
+ id: Id<Table>;
506
+ };
507
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
508
+ operation: `${Table["tableName"]}.create`;
509
+ actorId: string;
510
+ aggregate: {
511
+ type: string;
512
+ id: string;
513
+ };
514
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
515
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.update`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
516
+ input: StandardSchema<z.input<Table["tools"]["update"]>, z.infer<Table["tools"]["update"]>> & LegacyParser<z.infer<Table["tools"]["update"]>>;
517
+ result: z.ZodObject<{
518
+ ok: z.ZodLiteral<true>;
519
+ }, z.core.$strict>;
520
+ handler: (input: z.infer<Table["tools"]["update"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
521
+ ok: true;
522
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>, CallbackError<CheckId> | CallbackError<Chosen<UpdateOverride, Effect.Effect<{
523
+ ok: true;
524
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>, CallbackRequirements<CheckId> | CallbackRequirements<Chosen<UpdateOverride, Effect.Effect<{
525
+ ok: true;
526
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>;
527
+ classification?: string;
528
+ permission?: string;
529
+ metadata?: Record<never, never> | undefined;
530
+ aggregates?: readonly string[] | undefined;
531
+ replayResult?: undefined;
532
+ wire?: {
533
+ schema: ContractSchema;
534
+ project: (value: {
535
+ ok: true;
536
+ }) => unknown;
537
+ } | undefined;
538
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["update"]>) => UpdateGuard) | undefined;
539
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["update"]>) => never) | undefined;
540
+ audit?: ((resolution: {
541
+ command: z.infer<Table["tools"]["update"]>;
542
+ result: {
543
+ ok: true;
544
+ };
545
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
546
+ operation: `${Table["tableName"]}.update`;
547
+ actorId: string;
548
+ aggregate: {
549
+ type: string;
550
+ id: string;
551
+ };
552
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
553
+ } & {
554
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["update"]>, {
555
+ ok: true;
556
+ }, Record<never, never>, CallbackError<CheckId> | CallbackError<Policy> | CallbackError<UpdateGuard> | CallbackError<Chosen<UpdateOverride, Effect.Effect<{
557
+ ok: true;
558
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>> | CallbackError<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
559
+ ok: true;
560
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>, CallbackRequirements<CheckId> | CallbackRequirements<Policy> | CallbackRequirements<UpdateGuard> | CallbackRequirements<Chosen<UpdateOverride, Effect.Effect<{
561
+ ok: true;
562
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>> | CallbackRequirements<EffectValue<Chosen<UpdateOverride, Effect.Effect<{
563
+ ok: true;
564
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "update">>>>>) => never) | undefined;
565
+ } & {
566
+ classification: string;
567
+ audit: (resolution: {
568
+ command: z.infer<Table["tools"]["update"]>;
569
+ result: {
570
+ ok: true;
571
+ };
572
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
573
+ operation: `${Table["tableName"]}.update`;
574
+ actorId: string;
575
+ aggregate: {
576
+ type: string;
577
+ id: string;
578
+ };
579
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
580
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.archive`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
581
+ input: StandardSchema<z.input<Table["tools"]["id"]>, z.infer<Table["tools"]["id"]>> & LegacyParser<z.infer<Table["tools"]["id"]>>;
582
+ result: z.ZodObject<{
583
+ ok: z.ZodLiteral<true>;
584
+ }, z.core.$strict>;
585
+ handler: (input: z.infer<Table["tools"]["id"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
586
+ ok: true;
587
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>, CallbackError<CheckId> | CallbackError<Chosen<ArchiveOverride, Effect.Effect<{
588
+ ok: true;
589
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>, CallbackRequirements<CheckId> | CallbackRequirements<Chosen<ArchiveOverride, Effect.Effect<{
590
+ ok: true;
591
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>;
592
+ classification?: string;
593
+ permission?: string;
594
+ metadata?: Record<never, never> | undefined;
595
+ aggregates?: readonly string[] | undefined;
596
+ replayResult?: undefined;
597
+ wire?: {
598
+ schema: ContractSchema;
599
+ project: (value: {
600
+ ok: true;
601
+ }) => unknown;
602
+ } | undefined;
603
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["id"]>) => ArchiveGuard) | undefined;
604
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["id"]>) => never) | undefined;
605
+ audit?: ((resolution: {
606
+ command: z.infer<Table["tools"]["id"]>;
607
+ result: {
608
+ ok: true;
609
+ };
610
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
611
+ operation: `${Table["tableName"]}.archive`;
612
+ actorId: string;
613
+ aggregate: {
614
+ type: string;
615
+ id: string;
616
+ };
617
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>) | undefined;
618
+ } & {
619
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["id"]>, {
620
+ ok: true;
621
+ }, Record<never, never>, CallbackError<ArchiveGuard> | CallbackError<CheckId> | CallbackError<Policy> | CallbackError<Chosen<ArchiveOverride, Effect.Effect<{
622
+ ok: true;
623
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>> | CallbackError<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
624
+ ok: true;
625
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>, CallbackRequirements<ArchiveGuard> | CallbackRequirements<CheckId> | CallbackRequirements<Policy> | CallbackRequirements<Chosen<ArchiveOverride, Effect.Effect<{
626
+ ok: true;
627
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>> | CallbackRequirements<EffectValue<Chosen<ArchiveOverride, Effect.Effect<{
628
+ ok: true;
629
+ }, CallbackError<Patch>, CallbackRequirements<Patch>>, RequiredOverride<Configuration, "archive">>>>>) => never) | undefined;
630
+ } & {
631
+ classification: string;
632
+ audit: (resolution: {
633
+ command: z.infer<Table["tools"]["id"]>;
634
+ result: {
635
+ ok: true;
636
+ };
637
+ }, context: EffectValue<ContextReturned>) => Effect.Effect<{
638
+ operation: `${Table["tableName"]}.archive`;
639
+ actorId: string;
640
+ aggregate: {
641
+ type: string;
642
+ id: string;
643
+ };
644
+ }, CallbackError<Actor>, CallbackRequirements<Actor>>;
645
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>>;
646
+ queryOperations: NamedOperation<`${Table["tableName"]}.get`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
647
+ input: StandardSchema<z.input<Table["tools"]["id"]>, z.infer<Table["tools"]["id"]>> & LegacyParser<z.infer<Table["tools"]["id"]>>;
648
+ result: StandardSchema<z.input<Table["publicDto"]> | null, z.output<Table["publicDto"]> | null> & LegacyParser<z.output<Table["publicDto"]> | null>;
649
+ handler: (input: z.infer<Table["tools"]["id"]>, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<z.core.input<Table["publicDto"]> | null, CallbackError<CheckId> | CallbackError<Get> | CallbackError<Project>, CallbackRequirements<CheckId> | CallbackRequirements<Get> | CallbackRequirements<Project>>;
650
+ classification?: string;
651
+ permission?: string;
652
+ metadata?: Record<never, never> | undefined;
653
+ aggregates?: readonly string[] | undefined;
654
+ replayResult?: undefined;
655
+ wire?: {
656
+ schema: ContractSchema;
657
+ project: (value: z.infer<Table["publicDto"]> | null) => unknown;
658
+ } | undefined;
659
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: z.infer<Table["tools"]["id"]>) => GetGuard) | undefined;
660
+ prepare?: ((context: EffectValue<ContextReturned>, input: z.infer<Table["tools"]["id"]>) => never) | undefined;
661
+ audit?: ((resolution: {
662
+ command: z.infer<Table["tools"]["id"]>;
663
+ result: z.infer<Table["publicDto"]> | null;
664
+ }, context: EffectValue<ContextReturned>) => never) | undefined;
665
+ } & {
666
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, z.infer<Table["tools"]["id"]>, z.core.input<Table["publicDto"]> | null, Record<never, never>, CallbackError<CheckId> | CallbackError<Get> | CallbackError<GetGuard> | CallbackError<Policy> | CallbackError<Project> | CallbackError<z.core.input<Table["publicDto"]>>, CallbackRequirements<CheckId> | CallbackRequirements<Get> | CallbackRequirements<GetGuard> | CallbackRequirements<Policy> | CallbackRequirements<Project> | CallbackRequirements<z.core.input<Table["publicDto"]>>>) => never) | undefined;
667
+ } & {
668
+ prepare?: never;
669
+ audit?: never;
670
+ aggregates?: never;
671
+ replayResult?: never;
672
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>> & NamedOperation<`${Table["tableName"]}.list`, CheckedEffectDefinition<EffectValue<ContextReturned>, object & {
673
+ input: z.ZodObject<{
674
+ numItems: z.ZodNumber;
675
+ cursor: z.ZodNullable<z.ZodString>;
676
+ endCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
677
+ id: z.ZodOptional<z.ZodNumber>;
678
+ maximumRowsRead: z.ZodOptional<z.ZodNumber>;
679
+ maximumBytesRead: z.ZodOptional<z.ZodNumber>;
680
+ }, z.core.$strict>;
681
+ result: z.ZodObject<{
682
+ page: z.ZodArray<Table["publicDto"]>;
683
+ isDone: z.ZodBoolean;
684
+ continueCursor: z.ZodString;
685
+ splitCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
686
+ pageStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
687
+ SplitRecommended: "SplitRecommended";
688
+ SplitRequired: "SplitRequired";
689
+ }>>>;
690
+ }, z.core.$strip>;
691
+ handler: (input: {
692
+ numItems: number;
693
+ cursor: string | null;
694
+ endCursor?: string | null | undefined;
695
+ id?: number | undefined;
696
+ maximumRowsRead?: number | undefined;
697
+ maximumBytesRead?: number | undefined;
698
+ }, context: EffectValue<ContextReturned> & Record<never, never>) => Effect.Effect<{
699
+ isDone: boolean;
700
+ continueCursor: import("convex/server").Cursor;
701
+ splitCursor?: import("convex/server").Cursor | null;
702
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null;
703
+ page: z.input<Table["publicDto"]>[];
704
+ }, CallbackError<List> | CallbackError<Project>, CallbackRequirements<List> | CallbackRequirements<Project>>;
705
+ classification?: string;
706
+ permission?: string;
707
+ metadata?: Record<never, never> | undefined;
708
+ aggregates?: readonly string[] | undefined;
709
+ replayResult?: undefined;
710
+ wire?: {
711
+ schema: ContractSchema;
712
+ project: (value: {
713
+ page: z.infer<Table["publicDto"]>[];
714
+ isDone: boolean;
715
+ continueCursor: string;
716
+ splitCursor?: string | null | undefined;
717
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
718
+ }) => unknown;
719
+ } | undefined;
720
+ guard?: ((context: EffectValue<ContextReturned> & Record<never, never>, input: {
721
+ numItems: number;
722
+ cursor: string | null;
723
+ endCursor?: string | null | undefined;
724
+ id?: number | undefined;
725
+ maximumRowsRead?: number | undefined;
726
+ maximumBytesRead?: number | undefined;
727
+ }) => ListGuard) | undefined;
728
+ prepare?: ((context: EffectValue<ContextReturned>, input: {
729
+ numItems: number;
730
+ cursor: string | null;
731
+ endCursor?: string | null | undefined;
732
+ id?: number | undefined;
733
+ maximumRowsRead?: number | undefined;
734
+ maximumBytesRead?: number | undefined;
735
+ }) => never) | undefined;
736
+ audit?: ((resolution: {
737
+ command: {
738
+ numItems: number;
739
+ cursor: string | null;
740
+ endCursor?: string | null | undefined;
741
+ id?: number | undefined;
742
+ maximumRowsRead?: number | undefined;
743
+ maximumBytesRead?: number | undefined;
744
+ };
745
+ result: {
746
+ page: z.infer<Table["publicDto"]>[];
747
+ isDone: boolean;
748
+ continueCursor: string;
749
+ splitCursor?: string | null | undefined;
750
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
751
+ };
752
+ }, context: EffectValue<ContextReturned>) => never) | undefined;
753
+ } & {
754
+ middleware?: ((input: EffectMiddlewareInput<EffectValue<ContextReturned>, {
755
+ numItems: number;
756
+ cursor: string | null;
757
+ endCursor?: string | null | undefined;
758
+ id?: number | undefined;
759
+ maximumRowsRead?: number | undefined;
760
+ maximumBytesRead?: number | undefined;
761
+ }, {
762
+ page: z.core.input<Table["publicDto"]>[];
763
+ isDone: boolean;
764
+ continueCursor: string;
765
+ splitCursor?: string | null | undefined;
766
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null | undefined;
767
+ }, Record<never, never>, CallbackError<List> | CallbackError<ListGuard> | CallbackError<Policy> | CallbackError<Project>, CallbackRequirements<List> | CallbackRequirements<ListGuard> | CallbackRequirements<Policy> | CallbackRequirements<Project>>) => never) | undefined;
768
+ } & {
769
+ prepare?: never;
770
+ audit?: never;
771
+ aggregates?: never;
772
+ replayResult?: never;
773
+ }, CallbackError<Policy>, CallbackRequirements<Policy>>>;
774
+ };
775
+ type NamedOperation<Name extends string, Definition> = { [Key in Name]: Definition; };
776
+ type ProtectedOverrides<Configuration> = 'overrides' extends keyof Configuration ? {
777
+ overrides?: { [Key in Exclude<keyof NonNullable<Configuration['overrides']>, 'create' | 'update' | 'archive'>]: never; };
778
+ } : unknown;
779
+ type RequiredOverride<Configuration, Key extends string> = Configuration extends {
780
+ overrides: { [K in Key]: Function; };
781
+ } ? true : false;
782
+ type Chosen<Override, Default, Required extends boolean> = Required extends true ? Override : [Override] extends [never] ? Default : Override | Default;
783
+ //#endregion
784
+ export { EffectCrudConfig, EffectCrudContext, EffectCrudPage, EffectCrudPagination, EffectCrudRepository, EffectCrudTable, createEffectCrud };
785
+ //# sourceMappingURL=crud.d.mts.map