@harperfast/harper 5.2.0-alpha.4 → 5.2.0-alpha.6

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 (173) hide show
  1. package/agent/agent.ts +152 -10
  2. package/agent/bestPractices.ts +58 -0
  3. package/agent/mcpTools.ts +122 -0
  4. package/agent/operations.ts +10 -1
  5. package/agent/registryTools.ts +117 -0
  6. package/agent/session.ts +16 -7
  7. package/agent/tools/fsTools.ts +74 -27
  8. package/agent/tools/inspectorTool.ts +459 -0
  9. package/agent/toolset.ts +27 -7
  10. package/agent/types.ts +2 -0
  11. package/components/Application.ts +566 -85
  12. package/components/OptionsWatcher.ts +62 -2
  13. package/components/Scope.ts +31 -8
  14. package/components/componentLoader.ts +5 -1
  15. package/components/componentSecrets.ts +514 -55
  16. package/components/deploymentRecorder.ts +7 -6
  17. package/components/gitCredentialHelper.js +115 -0
  18. package/components/gitCredentialServer.ts +251 -0
  19. package/components/mcp/tools/application.ts +197 -23
  20. package/components/mcp/tools/operations.ts +1 -1
  21. package/components/mcp/tools/schemas/derive.ts +6 -2
  22. package/components/operations.js +21 -19
  23. package/components/operationsValidation.js +86 -21
  24. package/components/secretOperations.ts +110 -30
  25. package/config/harperConfigEnvVars.ts +90 -5
  26. package/config-root.schema.json +4 -0
  27. package/dist/agent/agent.d.ts +24 -3
  28. package/dist/agent/agent.js +172 -10
  29. package/dist/agent/agent.js.map +1 -1
  30. package/dist/agent/bestPractices.d.ts +24 -0
  31. package/dist/agent/bestPractices.js +60 -0
  32. package/dist/agent/bestPractices.js.map +1 -0
  33. package/dist/agent/mcpTools.d.ts +24 -0
  34. package/dist/agent/mcpTools.js +115 -0
  35. package/dist/agent/mcpTools.js.map +1 -0
  36. package/dist/agent/operations.js +10 -1
  37. package/dist/agent/operations.js.map +1 -1
  38. package/dist/agent/registryTools.d.ts +45 -0
  39. package/dist/agent/registryTools.js +113 -0
  40. package/dist/agent/registryTools.js.map +1 -0
  41. package/dist/agent/session.js +16 -7
  42. package/dist/agent/session.js.map +1 -1
  43. package/dist/agent/tools/fsTools.js +70 -28
  44. package/dist/agent/tools/fsTools.js.map +1 -1
  45. package/dist/agent/tools/inspectorTool.d.ts +40 -0
  46. package/dist/agent/tools/inspectorTool.js +428 -0
  47. package/dist/agent/tools/inspectorTool.js.map +1 -0
  48. package/dist/agent/toolset.d.ts +16 -6
  49. package/dist/agent/toolset.js +17 -7
  50. package/dist/agent/toolset.js.map +1 -1
  51. package/dist/agent/types.d.ts +2 -0
  52. package/dist/components/Application.d.ts +73 -18
  53. package/dist/components/Application.js +475 -64
  54. package/dist/components/Application.js.map +1 -1
  55. package/dist/components/OptionsWatcher.d.ts +1 -1
  56. package/dist/components/OptionsWatcher.js +65 -2
  57. package/dist/components/OptionsWatcher.js.map +1 -1
  58. package/dist/components/Scope.d.ts +8 -6
  59. package/dist/components/Scope.js +22 -6
  60. package/dist/components/Scope.js.map +1 -1
  61. package/dist/components/componentLoader.js +5 -1
  62. package/dist/components/componentLoader.js.map +1 -1
  63. package/dist/components/componentSecrets.d.ts +33 -7
  64. package/dist/components/componentSecrets.js +473 -59
  65. package/dist/components/componentSecrets.js.map +1 -1
  66. package/dist/components/deploymentRecorder.d.ts +2 -2
  67. package/dist/components/deploymentRecorder.js +1 -1
  68. package/dist/components/deploymentRecorder.js.map +1 -1
  69. package/dist/components/gitCredentialHelper.d.ts +1 -0
  70. package/dist/components/gitCredentialHelper.js +113 -0
  71. package/dist/components/gitCredentialHelper.js.map +1 -0
  72. package/dist/components/gitCredentialServer.d.ts +33 -0
  73. package/dist/components/gitCredentialServer.js +236 -0
  74. package/dist/components/gitCredentialServer.js.map +1 -0
  75. package/dist/components/mcp/tools/application.d.ts +19 -0
  76. package/dist/components/mcp/tools/application.js +180 -22
  77. package/dist/components/mcp/tools/application.js.map +1 -1
  78. package/dist/components/mcp/tools/operations.d.ts +13 -0
  79. package/dist/components/mcp/tools/operations.js +1 -0
  80. package/dist/components/mcp/tools/operations.js.map +1 -1
  81. package/dist/components/mcp/tools/schemas/derive.js +6 -2
  82. package/dist/components/mcp/tools/schemas/derive.js.map +1 -1
  83. package/dist/components/operations.js +23 -21
  84. package/dist/components/operations.js.map +1 -1
  85. package/dist/components/operationsValidation.js +84 -21
  86. package/dist/components/operationsValidation.js.map +1 -1
  87. package/dist/components/secretOperations.d.ts +33 -11
  88. package/dist/components/secretOperations.js +90 -26
  89. package/dist/components/secretOperations.js.map +1 -1
  90. package/dist/config/harperConfigEnvVars.d.ts +21 -0
  91. package/dist/config/harperConfigEnvVars.js +95 -5
  92. package/dist/config/harperConfigEnvVars.js.map +1 -1
  93. package/dist/index.d.ts +4 -0
  94. package/dist/index.js +14 -1
  95. package/dist/index.js.map +1 -1
  96. package/dist/resources/Resource.d.ts +19 -0
  97. package/dist/resources/Resource.js +93 -2
  98. package/dist/resources/Resource.js.map +1 -1
  99. package/dist/resources/Table.d.ts +9 -0
  100. package/dist/resources/Table.js +256 -50
  101. package/dist/resources/Table.js.map +1 -1
  102. package/dist/resources/analytics/read.js +28 -25
  103. package/dist/resources/analytics/read.js.map +1 -1
  104. package/dist/resources/defineResource.d.ts +180 -0
  105. package/dist/resources/defineResource.js +505 -0
  106. package/dist/resources/defineResource.js.map +1 -0
  107. package/dist/resources/defineTable.d.ts +221 -0
  108. package/dist/resources/defineTable.js +227 -0
  109. package/dist/resources/defineTable.js.map +1 -0
  110. package/dist/resources/jsonSchemaTypes.d.ts +2 -0
  111. package/dist/resources/jsonSchemaTypes.js +12 -4
  112. package/dist/resources/jsonSchemaTypes.js.map +1 -1
  113. package/dist/resources/openApi.js +69 -13
  114. package/dist/resources/openApi.js.map +1 -1
  115. package/dist/resources/search.js +6 -8
  116. package/dist/resources/search.js.map +1 -1
  117. package/dist/server/graphqlQuerying.js +4 -2
  118. package/dist/server/graphqlQuerying.js.map +1 -1
  119. package/dist/server/http.d.ts +12 -0
  120. package/dist/server/http.js +35 -15
  121. package/dist/server/http.js.map +1 -1
  122. package/dist/server/serverHelpers/serverUtilities.js +8 -5
  123. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  124. package/dist/server/serverHelpers/uwsServer.js +23 -0
  125. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  126. package/dist/utility/errors/hdbError.d.ts +21 -0
  127. package/dist/utility/errors/hdbError.js +23 -1
  128. package/dist/utility/errors/hdbError.js.map +1 -1
  129. package/dist/validation/configValidator.js +22 -6
  130. package/dist/validation/configValidator.js.map +1 -1
  131. package/index.ts +33 -0
  132. package/npm-shrinkwrap.json +9197 -15236
  133. package/package.json +5 -3
  134. package/resources/DESIGN.md +42 -15
  135. package/resources/Resource.ts +99 -2
  136. package/resources/Table.ts +275 -71
  137. package/resources/analytics/read.ts +30 -25
  138. package/resources/defineResource.ts +651 -0
  139. package/resources/defineTable.ts +407 -0
  140. package/resources/jsonSchemaTypes.ts +12 -4
  141. package/resources/openApi.ts +68 -16
  142. package/resources/search.ts +5 -8
  143. package/server/graphqlQuerying.ts +4 -2
  144. package/server/http.ts +40 -16
  145. package/server/serverHelpers/serverUtilities.ts +19 -6
  146. package/server/serverHelpers/uwsServer.ts +24 -0
  147. package/studio/web/assets/{Chat-D4FIaBu7.js → Chat-CTjtL8Z4.js} +2 -2
  148. package/studio/web/assets/{Chat-D4FIaBu7.js.map → Chat-CTjtL8Z4.js.map} +1 -1
  149. package/studio/web/assets/{FloatingChat-DGUC3L4r.js → FloatingChat-CafHR4Ur.js} +4 -4
  150. package/studio/web/assets/{FloatingChat-DGUC3L4r.js.map → FloatingChat-CafHR4Ur.js.map} +1 -1
  151. package/studio/web/assets/{applications-D8Am9ikM.js → applications-Buh_q0Vj.js} +2 -2
  152. package/studio/web/assets/{applications-D8Am9ikM.js.map → applications-Buh_q0Vj.js.map} +1 -1
  153. package/studio/web/assets/{index-HGL4WHdb.js → index-0hXeECkS.js} +6 -6
  154. package/studio/web/assets/{index-HGL4WHdb.js.map → index-0hXeECkS.js.map} +1 -1
  155. package/studio/web/assets/{index.lazy-Dk5j1AoQ.js → index.lazy-B00B7VBT.js} +4 -4
  156. package/studio/web/assets/{index.lazy-Dk5j1AoQ.js.map → index.lazy-B00B7VBT.js.map} +1 -1
  157. package/studio/web/assets/{profile-7bu_CF1f.js → profile-Cg2wwYPn.js} +2 -2
  158. package/studio/web/assets/{profile-7bu_CF1f.js.map → profile-Cg2wwYPn.js.map} +1 -1
  159. package/studio/web/assets/{setComponentFile-MfYm9F94.js → setComponentFile-DCaDIvyB.js} +2 -2
  160. package/studio/web/assets/{setComponentFile-MfYm9F94.js.map → setComponentFile-DCaDIvyB.js.map} +1 -1
  161. package/studio/web/assets/{setup-SKA4UhdE.js → setup-CAVcAQjK.js} +2 -2
  162. package/studio/web/assets/{setup-SKA4UhdE.js.map → setup-CAVcAQjK.js.map} +1 -1
  163. package/studio/web/assets/{status-DetVLUxR.js → status-BRXorNdD.js} +2 -2
  164. package/studio/web/assets/{status-DetVLUxR.js.map → status-BRXorNdD.js.map} +1 -1
  165. package/studio/web/assets/{swagger-ui-react-DLeYARY2.js → swagger-ui-react-Dy1D62vO.js} +2 -2
  166. package/studio/web/assets/{swagger-ui-react-DLeYARY2.js.map → swagger-ui-react-Dy1D62vO.js.map} +1 -1
  167. package/studio/web/assets/{tsMode-DGO-jIF7.js → tsMode-A8gbL74v.js} +2 -2
  168. package/studio/web/assets/{tsMode-DGO-jIF7.js.map → tsMode-A8gbL74v.js.map} +1 -1
  169. package/studio/web/assets/{useEntityRestURL-4M2i6bo4.js → useEntityRestURL-cDodrVcQ.js} +2 -2
  170. package/studio/web/assets/{useEntityRestURL-4M2i6bo4.js.map → useEntityRestURL-cDodrVcQ.js.map} +1 -1
  171. package/studio/web/index.html +1 -1
  172. package/utility/errors/hdbError.ts +32 -0
  173. package/validation/configValidator.ts +23 -6
@@ -138,45 +138,48 @@ async function* coalesceResults(results, window) {
138
138
  }
139
139
  async function get(metric, opts) {
140
140
  const { getAttributes, startTime, endTime, additionalConditions, log: logName } = opts ?? {};
141
- const conditions = [{ attribute: 'metric', comparator: 'equals', value: metric }];
141
+ // A two-sided time window bounds the primary-key (`id` = [time, nodeId]) range on both ends. When we
142
+ // have one, lead with it and pin execution order (below) so it drives the scan. `Table.search`
143
+ // otherwise reorders conditions by estimated cost, but the planner estimates a primary-key `between`
144
+ // as a flat 10% of the table (search.ts BETWEEN_ESTIMATE) rather than from the actual range width —
145
+ // so on a large `hdb_analytics` table a narrow window looks costlier than `metric equals`, iteration
146
+ // is driven off the metric index, and the metric's entire history is decoded instead of the window
147
+ // (#1796). The proper long-term fix is a range-width-aware cost estimate in search.ts.
148
+ const boundedWindow = startTime != null && endTime != null;
149
+ const conditions = [];
150
+ if (boundedWindow) {
151
+ conditions.push({ attribute: 'id', comparator: 'between', value: [startTime, endTime] });
152
+ }
153
+ conditions.push({ attribute: 'metric', comparator: 'equals', value: metric });
142
154
  if (logName !== undefined) {
143
155
  conditions.push({ attribute: 'log', comparator: 'equals', value: logName });
144
156
  }
145
157
  if (additionalConditions) {
146
158
  conditions.push(...additionalConditions.map(conformCondition));
147
159
  }
160
+ // An open-ended range (only start or only end) can span the whole table, so we append it and leave
161
+ // ordering to the planner rather than forcing an unbounded range to drive — which could scan the
162
+ // full table for a selective metric.
163
+ if (!boundedWindow) {
164
+ if (startTime != null) {
165
+ conditions.push({ attribute: 'id', comparator: 'greater_than_equal', value: startTime });
166
+ }
167
+ if (endTime != null) {
168
+ conditions.push({ attribute: 'id', comparator: 'less_than', value: endTime });
169
+ }
170
+ }
148
171
  const select = getAttributes ?? [];
149
- // ensure we're always selecting id
172
+ // ensure we're always selecting id (an empty select array already selects everything, including id)
150
173
  if (!isSelected(select, 'id')) {
151
174
  select.push('id');
152
175
  }
153
- if (startTime && endTime) {
154
- conditions.push({
155
- attribute: 'id',
156
- comparator: 'between',
157
- value: [startTime, endTime],
158
- });
159
- }
160
- else {
161
- if (startTime) {
162
- conditions.push({
163
- attribute: 'id',
164
- comparator: 'greater_than_equal',
165
- value: startTime,
166
- });
167
- }
168
- if (endTime) {
169
- conditions.push({
170
- attribute: 'id',
171
- comparator: 'less_than',
172
- value: endTime,
173
- });
174
- }
175
- }
176
176
  // `snapshot: false` lets these (potentially long-running) analytics scans read against the
177
177
  // latest committed data without holding a consistent read snapshot open, so they stay easier
178
178
  // on the rest of the system (a pinned snapshot would block compaction for the scan's duration).
179
179
  const request = { conditions, allowConditionsOnDynamicAttributes: true, snapshot: false };
180
+ if (boundedWindow) {
181
+ request.enforceExecutionOrder = true;
182
+ }
180
183
  if (select.length > 0) {
181
184
  request['select'] = select;
182
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../resources/analytics/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../resources/analytics/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * The per-method request contract: `defineResource(contract, impl)` (primary, function form) and
3
+ * `Resource.withSchema(contract)` (class form).
4
+ *
5
+ * A resource declares a contract as runtime VALUES — `{ path, record?, get?/post?/put?/patch?/delete?:
6
+ * { query?, body?, response? } }` — and TypeScript DERIVES the handler types from it (the same
7
+ * value-first bargain `--conditions=typestrip` forces, and that `defineTable` already lives).
8
+ *
9
+ * This is a SUBSET, not a fork. A handler
10
+ * receives the SAME `RequestTarget` it receives today, structurally NARROWED: `target.id` is a string
11
+ * when the path declares `:id`, `target.get('expand')` is typed by the declared query schema, and the
12
+ * built-in filter/sort/limit grammar stays reachable. The enforced resource is assignable wherever the
13
+ * untyped resource shape goes — it still registers and serves like a plain one.
14
+ *
15
+ * The narrowed types are JUSTIFIED by runtime enforcement: each declared verb is wrapped to
16
+ * validate/coerce `query`/`body` before dispatch and returns a structured 400 (`ValidationError`) on
17
+ * failure, so by the time a handler runs the narrowed types are true. Same bargain the DOM makes; same
18
+ * role `Table.validate` plays for tables.
19
+ *
20
+ * ONE vocabulary. The built-in `t`/`schemaOf` builders reduce to `JsonSchemaFragment`
21
+ * (`resources/jsonSchemaTypes.ts`) — the identical IR `defineTable`/GraphQL fields reduce to via
22
+ * `attributeToFragment` — so a single declaration feeds validation, OpenAPI, and MCP. A `defineTable`
23
+ * projection slots straight in: `schemaOf<(typeof Track)['$insert']>({ table: Track, projection:
24
+ * 'insert' })` derives both the compile-time type (from the projection) and the runtime fragment (from
25
+ * the table's attributes).
26
+ */
27
+ import type { JsonSchemaFragment } from './jsonSchemaTypes.ts';
28
+ import { type AttributeLike } from './jsonSchemaTypes.ts';
29
+ export interface Schema<T> {
30
+ /** phantom — the TS type this schema validates to; never present at runtime. */
31
+ readonly _type?: T;
32
+ /** mark this schema optional within its containing object/query (the property may be absent). */
33
+ readonly optional: Schema<T | undefined>;
34
+ /** allow an explicit `null` value. Non-nullable is the default — a bare `t.string` rejects `null`. */
35
+ readonly nullable: Schema<T | null>;
36
+ }
37
+ type TypeOf<S> = S extends Schema<infer T> ? T : never;
38
+ type OptionalKeys<P> = {
39
+ [K in keyof P]-?: undefined extends TypeOf<P[K]> ? K : never;
40
+ }[keyof P];
41
+ type RequiredKeys<P> = Exclude<keyof P, OptionalKeys<P>>;
42
+ /** The object type of a `t.object(props)` — fields whose schema includes `undefined` become optional. */
43
+ type ObjectType<P> = {
44
+ [K in RequiredKeys<P>]: TypeOf<P[K]>;
45
+ } & {
46
+ [K in OptionalKeys<P>]?: TypeOf<P[K]>;
47
+ };
48
+ /**
49
+ * The zero-dependency built-in schema vocabulary for query params and bodies. Every builder reduces to
50
+ * a `JsonSchemaFragment`, so a contract's declarations feed validation + OpenAPI + MCP from one source.
51
+ */
52
+ export declare const t: {
53
+ string: Schema<string>;
54
+ number: Schema<number>;
55
+ integer: Schema<number>;
56
+ boolean: Schema<boolean>;
57
+ /** ISO-8601 timestamp; validates as a string, coerced to `Date` in bodies. */
58
+ date: Schema<Date>;
59
+ enum: <const E extends readonly string[]>(values: E) => Schema<E[number]>;
60
+ array: <T>(item: Schema<T>) => Schema<T[]>;
61
+ object: <P extends Record<string, Schema<any>>>(props: P) => Schema<ObjectType<P>>;
62
+ };
63
+ export type Projection = 'record' | 'insert' | 'upsert' | 'patch' | 'query';
64
+ /** Minimal runtime shape of a table handle (`defineTable(...)` / `tables.Foo`) needed to project a fragment. */
65
+ interface TableLike {
66
+ attributes?: AttributeLike[];
67
+ primaryKey?: string;
68
+ }
69
+ export type SchemaSource = JsonSchemaFragment | TableLike | {
70
+ table: TableLike;
71
+ projection?: Projection;
72
+ };
73
+ /** Type-only schema for an existing TS type — an interface, or a `defineTable` projection like `(typeof Track)['$insert']`. */
74
+ export declare function schemaOf<T>(source?: SchemaSource): Schema<T>;
75
+ /**
76
+ * Project a table handle's attributes into a JSON-Schema object fragment for the given projection.
77
+ * Reuses the shared `attributeToFragment` per field (NOT a parallel translator) and applies the same
78
+ * inclusion/required rules as `defineTable`'s type projections and the MCP `derive` schemas:
79
+ * • record — all scalar fields, readonly; server-managed/PK/required fields marked required
80
+ * • insert — writable fields, PK optional, server-managed excluded
81
+ * • upsert — writable fields, PK required
82
+ * • patch — writable non-PK fields, all optional
83
+ * • query — indexed fields only, all optional
84
+ * Relationship and computed attributes are excluded (they aren't client-writable and their fragment
85
+ * type is the related table name, not a JSON type).
86
+ */
87
+ export declare function projectTableFragment(table: TableLike, projection: Projection): JsonSchemaFragment;
88
+ export interface VerbSchemas {
89
+ readonly query?: Record<string, Schema<any>>;
90
+ readonly body?: Schema<any>;
91
+ readonly response?: Schema<any>;
92
+ }
93
+ export interface Contract {
94
+ readonly path: string;
95
+ /** Optional human description, surfaced on OpenAPI/MCP. */
96
+ readonly description?: string;
97
+ /** The resource's record type; defaults `get`'s response and `put`'s body when not overridden. */
98
+ readonly record?: Schema<any>;
99
+ readonly get?: VerbSchemas;
100
+ readonly post?: VerbSchemas;
101
+ readonly put?: VerbSchemas;
102
+ readonly patch?: VerbSchemas;
103
+ readonly delete?: VerbSchemas;
104
+ }
105
+ export type VerbName = 'get' | 'post' | 'put' | 'patch' | 'delete';
106
+ type MaybePromise<T> = T | Promise<T>;
107
+ /** Template-literal parse of the declared path (matches the runtime, which Object.assigns matched segments). */
108
+ export type PathParams<S extends string> = S extends `${string}:${infer P}/${infer Rest}` ? {
109
+ [K in P]: string;
110
+ } & PathParams<`/${Rest}`> : S extends `${string}:${infer P}` ? {
111
+ [K in P]: string;
112
+ } : S extends `${string}*${infer W}` ? {
113
+ [K in W extends '' ? 'wildcard' : W]: string;
114
+ } : {};
115
+ type InferSchema<S> = S extends Schema<infer T> ? T : never;
116
+ type RecordOf<C> = C extends {
117
+ record: Schema<infer R>;
118
+ } ? R : unknown;
119
+ type QueryOf<VS> = VS extends {
120
+ query: infer Q;
121
+ } ? {
122
+ [K in keyof Q]: InferSchema<Q[K]>;
123
+ } : {};
124
+ type ResponseOf<VS, R> = VS extends {
125
+ response: Schema<infer T>;
126
+ } ? T : R;
127
+ type BodyOf<VS, V, R> = VS extends {
128
+ body: Schema<infer T>;
129
+ } ? T : V extends 'put' ? R : unknown;
130
+ /** `RequestTarget.get` overloaded for declared query params; anything else falls back to `string | null`. */
131
+ export interface TypedSearchParams<Q> {
132
+ get<K extends keyof Q & string>(name: K): Q[K];
133
+ get(name: string): string | null;
134
+ }
135
+ /** The built-in query grammar that stays reachable on the narrowed target (a subset of RequestTarget). */
136
+ interface QueryGrammar {
137
+ conditions?: unknown[];
138
+ sort?: unknown;
139
+ select?: unknown;
140
+ limit?: number;
141
+ offset?: number;
142
+ }
143
+ /** The SAME RequestTarget, narrowed: path params intersected on, `.get` typed by the query schema. */
144
+ export type TypedTarget<P extends string, Q> = QueryGrammar & PathParams<P> & TypedSearchParams<Q>;
145
+ type HandlerFor<C extends Contract, V extends keyof C & VerbName, R> = V extends 'get' ? (target: TypedTarget<C['path'], QueryOf<C[V]>>) => MaybePromise<ResponseOf<C[V], R>> : V extends 'delete' ? (target: TypedTarget<C['path'], QueryOf<C[V]>>) => MaybePromise<ResponseOf<C[V], R>> : (target: TypedTarget<C['path'], QueryOf<C[V]>>, data: BodyOf<C[V], V, R>) => MaybePromise<ResponseOf<C[V], R>>;
146
+ /** Every verb the contract declares is REQUIRED of the impl; a misspelled/missing verb is an error. */
147
+ export type ImplFor<C extends Contract> = {
148
+ [V in keyof C & VerbName]: HandlerFor<C, V, RecordOf<C>>;
149
+ };
150
+ /** Per-verb input schemas landed on `static inputSchemas` for OpenAPI/MCP to read. */
151
+ export interface VerbInputSchema {
152
+ query?: JsonSchemaFragment;
153
+ body?: JsonSchemaFragment;
154
+ }
155
+ /** The instance-side verb handlers a `withSchema` base class declares, so a subclass's overrides narrow. */
156
+ type SchemaHandlers<C extends Contract> = {
157
+ [V in keyof C & VerbName]?: HandlerFor<C, V, RecordOf<C>>;
158
+ };
159
+ /** The class returned by `Resource.withSchema(contract)`: extend it and implement the declared verbs. */
160
+ export type SchemaClass<Base, C extends Contract> = Base & {
161
+ new (...args: any[]): SchemaHandlers<C>;
162
+ readonly path: C['path'];
163
+ readonly requestContract: C;
164
+ };
165
+ /**
166
+ * Build a Resource subclass carrying `contract` — its static verb entries validate before dispatch and
167
+ * its static metadata slots (`path`, `requestContract`, `inputSchemas`, `outputSchemas`, `properties`)
168
+ * feed OpenAPI/MCP. Wired as `Resource.withSchema` (see `Resource.ts`).
169
+ */
170
+ export declare function makeSchemaClass<Base extends new (...args: any[]) => any, C extends Contract>(BaseClass: Base, contract: C): SchemaClass<Base, C>;
171
+ /**
172
+ * Function-form twin of `withSchema`: wrap an object literal of verb handlers with the contract. Every
173
+ * declared verb is required of `impl` (a missing/misspelled verb is a type error) and undeclared extras
174
+ * on an inline literal are rejected. Returns a plain resource object (drop-in wherever the untyped shape
175
+ * goes) whose verbs validate/coerce before running the handler.
176
+ */
177
+ export declare function defineResource<const C extends Contract>(contract: C, impl: ImplFor<C>): ImplFor<C> & {
178
+ path: C['path'];
179
+ };
180
+ export {};