@inkeep/agents-core 0.79.1 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/auth/auth-schema.d.ts +227 -227
  2. package/dist/auth/auth-validation-schemas.d.ts +154 -154
  3. package/dist/auth/auth.js +1 -1
  4. package/dist/auth/permissions.d.ts +9 -9
  5. package/dist/data-access/manage/agents.d.ts +40 -40
  6. package/dist/data-access/manage/artifactComponents.d.ts +8 -8
  7. package/dist/data-access/manage/contextConfigs.d.ts +12 -12
  8. package/dist/data-access/manage/dataComponents.d.ts +2 -2
  9. package/dist/data-access/manage/functionTools.d.ts +10 -10
  10. package/dist/data-access/manage/skills.d.ts +10 -10
  11. package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +18 -18
  12. package/dist/data-access/manage/subAgentRelations.d.ts +24 -24
  13. package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +18 -18
  14. package/dist/data-access/manage/subAgents.d.ts +12 -12
  15. package/dist/data-access/manage/tools.d.ts +21 -21
  16. package/dist/data-access/manage/tools.js +33 -8
  17. package/dist/data-access/manage/triggers.d.ts +6 -6
  18. package/dist/data-access/runtime/apiKeys.d.ts +20 -20
  19. package/dist/data-access/runtime/apps.d.ts +19 -19
  20. package/dist/data-access/runtime/conversations.d.ts +24 -24
  21. package/dist/data-access/runtime/evalRuns.d.ts +5 -0
  22. package/dist/data-access/runtime/evalRuns.js +3 -0
  23. package/dist/data-access/runtime/events.d.ts +4 -4
  24. package/dist/data-access/runtime/feedback.d.ts +6 -6
  25. package/dist/data-access/runtime/feedback.js +2 -2
  26. package/dist/data-access/runtime/messages.d.ts +15 -15
  27. package/dist/data-access/runtime/scheduledTriggerUsers.d.ts +2 -2
  28. package/dist/data-access/runtime/tasks.d.ts +3 -3
  29. package/dist/db/manage/manage-schema.d.ts +510 -510
  30. package/dist/db/runtime/runtime-schema.d.ts +458 -458
  31. package/dist/utils/json-schema-walk.d.ts +50 -0
  32. package/dist/utils/json-schema-walk.js +202 -0
  33. package/dist/utils/mcp-client.js +14 -32
  34. package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
  35. package/dist/validation/schemas/skills.d.ts +19 -19
  36. package/dist/validation/schemas.d.ts +2415 -2414
  37. package/dist/validation/schemas.js +1 -0
  38. package/package.json +5 -1
@@ -0,0 +1,50 @@
1
+ //#region src/utils/json-schema-walk.d.ts
2
+ /**
3
+ * Generic, reusable JSON Schema walker.
4
+ *
5
+ * Turns a JSON Schema into a normalized, `$ref`-resolved, cycle-safe tree of nodes
6
+ * that callers can render or introspect without re-implementing ref resolution,
7
+ * nullability unwrapping, or recursion guards. Format-specific emitting (XML, etc.)
8
+ * is left to the caller.
9
+ *
10
+ * Handles the shapes Pydantic-style MCP tool schemas produce: `$ref`/`$defs`,
11
+ * nested objects, array `items`, `anyOf`/`oneOf` nullables (`anyOf [t, null]` and
12
+ * `type: [t, "null"]`), and `enum`/`const`.
13
+ */
14
+ interface NormalizedSchemaNode {
15
+ /** Property name (or `"item"` for an array element). */
16
+ name: string;
17
+ /** Resolved JSON Schema type (non-null branch of a nullable), defaults to `string`. */
18
+ type: string;
19
+ required: boolean;
20
+ nullable: boolean;
21
+ description?: string;
22
+ enumValues?: unknown[];
23
+ /** Present for object nodes. */
24
+ properties?: NormalizedSchemaNode[];
25
+ /** Present for array nodes. */
26
+ items?: NormalizedSchemaNode;
27
+ /** Present for multi-branch unions (`anyOf`/`oneOf` with more than one non-null branch). */
28
+ variants?: NormalizedSchemaNode[];
29
+ /** Set when a `$ref` cycle or the depth cap stopped the walk at this node. */
30
+ recursive?: boolean;
31
+ }
32
+ interface WalkJsonSchemaOptions {
33
+ /** Backstop against pathological/cyclic schemas. Defaults to 12. */
34
+ maxDepth?: number;
35
+ }
36
+ /**
37
+ * Normalize a schema's top-level `properties` into ref-resolved, cycle-safe nodes.
38
+ * `$defs`/`definitions` and `$ref: "#"` are resolved against the passed schema root.
39
+ */
40
+ declare function normalizeJsonSchemaProperties(schema: any, options?: WalkJsonSchemaOptions): NormalizedSchemaNode[];
41
+ /**
42
+ * Unwrap an AI SDK `jsonSchema()` wrapper (`{ jsonSchema, validate, _type }`) to the
43
+ * underlying JSON Schema. The MCP ingestion fallback wraps a raw schema this way; without
44
+ * unwrapping, downstream readers (provider tool def, prompt renderer, manage UI) see the
45
+ * wrapper's top-level keys instead of the real `properties`/`$defs`. A non-wrapper value
46
+ * (plain JSON Schema, or a Zod schema, which has no `jsonSchema` property) passes through.
47
+ */
48
+ declare function unwrapJsonSchemaWrapper<T>(value: T): T | Record<string, unknown>;
49
+ //#endregion
50
+ export { NormalizedSchemaNode, WalkJsonSchemaOptions, normalizeJsonSchemaProperties, unwrapJsonSchemaWrapper };
@@ -0,0 +1,202 @@
1
+ //#region src/utils/json-schema-walk.ts
2
+ const DEFAULT_MAX_DEPTH = 12;
3
+ function resolveRef(node, ctx) {
4
+ if (node && typeof node === "object" && typeof node.$ref === "string") {
5
+ const ref = node.$ref;
6
+ if (ref === "#") return {
7
+ node: ctx.root ?? node,
8
+ refName: "#"
9
+ };
10
+ const refName = ref.split("/").pop();
11
+ const resolved = ctx.defs[refName];
12
+ return resolved ? {
13
+ node: resolved,
14
+ refName
15
+ } : {
16
+ node,
17
+ refName
18
+ };
19
+ }
20
+ return { node };
21
+ }
22
+ function unwrapNullable(node) {
23
+ if (!node || typeof node !== "object") return {
24
+ inner: node,
25
+ nullable: false
26
+ };
27
+ if (Array.isArray(node.type) && node.type.includes("null")) {
28
+ const nonNull = node.type.filter((t) => t !== "null");
29
+ return {
30
+ inner: {
31
+ ...node,
32
+ type: nonNull.length === 1 ? nonNull[0] : nonNull
33
+ },
34
+ nullable: true
35
+ };
36
+ }
37
+ const variants = node.anyOf ?? node.oneOf;
38
+ if (Array.isArray(variants)) {
39
+ const nonNull = variants.filter((v) => v?.type !== "null");
40
+ const hasNull = variants.some((v) => v?.type === "null");
41
+ if (hasNull && nonNull.length === 1) return {
42
+ inner: nonNull[0],
43
+ nullable: true
44
+ };
45
+ if (!hasNull && nonNull.length === 1) return {
46
+ inner: nonNull[0],
47
+ nullable: false
48
+ };
49
+ if (hasNull) {
50
+ const key = node.anyOf ? "anyOf" : "oneOf";
51
+ return {
52
+ inner: {
53
+ ...node,
54
+ [key]: nonNull
55
+ },
56
+ nullable: true
57
+ };
58
+ }
59
+ }
60
+ return {
61
+ inner: node,
62
+ nullable: false
63
+ };
64
+ }
65
+ /**
66
+ * Flatten an `allOf` composition into a single node by merging the (deref'd) branches'
67
+ * properties, required, type, description, and enum. Pydantic v2 emits this shape when it
68
+ * combines a `$ref` with extra constraints (e.g. `{ allOf: [{ $ref }], description }`).
69
+ */
70
+ function mergeAllOf(node, ctx) {
71
+ if (!node || typeof node !== "object" || !Array.isArray(node.allOf)) return node;
72
+ const merged = { ...node };
73
+ merged.allOf = void 0;
74
+ merged.properties = { ...node.properties ?? {} };
75
+ const required = new Set(Array.isArray(node.required) ? node.required : []);
76
+ const stack = [...node.allOf];
77
+ const visited = /* @__PURE__ */ new Set();
78
+ while (stack.length > 0) {
79
+ const { node: branch, refName } = resolveRef(stack.pop(), ctx);
80
+ if (refName) {
81
+ if (visited.has(refName)) continue;
82
+ visited.add(refName);
83
+ }
84
+ if (!branch || typeof branch !== "object") continue;
85
+ if (Array.isArray(branch.allOf)) stack.push(...branch.allOf);
86
+ if (branch.properties && typeof branch.properties === "object") Object.assign(merged.properties, branch.properties);
87
+ if (Array.isArray(branch.required)) for (const r of branch.required) required.add(r);
88
+ if (!merged.type && typeof branch.type === "string") merged.type = branch.type;
89
+ if (!merged.description && typeof branch.description === "string") merged.description = branch.description;
90
+ if (!merged.enum && Array.isArray(branch.enum)) merged.enum = branch.enum;
91
+ }
92
+ if (Object.keys(merged.properties).length === 0) merged.properties = void 0;
93
+ if (required.size > 0) merged.required = [...required];
94
+ if (!merged.type && merged.properties) merged.type = "object";
95
+ return merged;
96
+ }
97
+ function nodeType(node) {
98
+ if (!node) return "string";
99
+ if (typeof node.type === "string") return node.type;
100
+ if (Array.isArray(node.type)) return node.type.filter((t) => t !== "null")[0] || "string";
101
+ if (Array.isArray(node.anyOf) || Array.isArray(node.oneOf)) return "union";
102
+ if (Array.isArray(node.enum)) return typeof node.enum[0] === "number" ? "number" : "string";
103
+ return "string";
104
+ }
105
+ function enumValues(node) {
106
+ if (Array.isArray(node?.enum)) return node.enum;
107
+ if (node?.const !== void 0) return [node.const];
108
+ }
109
+ function walkNode(name, rawNode, required, ctx) {
110
+ const { node: derefed, refName: outerRef } = resolveRef(rawNode, ctx);
111
+ const { inner: unwrapped, nullable } = unwrapNullable(derefed);
112
+ const { node: reResolved, refName: innerRef } = resolveRef(unwrapped, ctx);
113
+ const inner = mergeAllOf(reResolved, ctx);
114
+ const refName = outerRef ?? innerRef;
115
+ const descRaw = inner?.description ?? rawNode?.description;
116
+ const description = typeof descRaw === "string" ? descRaw.trim() || void 0 : void 0;
117
+ const type = nodeType(inner);
118
+ const base = {
119
+ name,
120
+ type,
121
+ required,
122
+ nullable,
123
+ description
124
+ };
125
+ if ((refName ? ctx.seen.has(refName) : false) || ctx.depth >= ctx.maxDepth) return {
126
+ ...base,
127
+ recursive: true
128
+ };
129
+ const childCtx = refName ? {
130
+ ...ctx,
131
+ depth: ctx.depth + 1,
132
+ seen: new Set([...ctx.seen, refName])
133
+ } : {
134
+ ...ctx,
135
+ depth: ctx.depth + 1
136
+ };
137
+ if (inner?.properties && typeof inner.properties === "object") {
138
+ const entries = Object.entries(inner.properties);
139
+ if (entries.length > 0) {
140
+ const childRequired = Array.isArray(inner.required) ? inner.required : [];
141
+ const properties = entries.map(([k, v]) => walkNode(k, v, childRequired.includes(k), childCtx));
142
+ return {
143
+ ...base,
144
+ type: "object",
145
+ properties
146
+ };
147
+ }
148
+ }
149
+ if (type === "array" && inner?.items && typeof inner.items === "object") return {
150
+ ...base,
151
+ type: "array",
152
+ items: walkNode("item", inner.items, false, childCtx)
153
+ };
154
+ const branches = inner?.anyOf ?? inner?.oneOf;
155
+ if (Array.isArray(branches) && branches.length > 1) {
156
+ const variants = branches.map((branch, i) => walkNode(`variant${i}`, branch, false, childCtx));
157
+ return {
158
+ ...base,
159
+ type: "union",
160
+ variants
161
+ };
162
+ }
163
+ const ev = enumValues(inner);
164
+ return ev ? {
165
+ ...base,
166
+ enumValues: ev
167
+ } : base;
168
+ }
169
+ /**
170
+ * Normalize a schema's top-level `properties` into ref-resolved, cycle-safe nodes.
171
+ * `$defs`/`definitions` and `$ref: "#"` are resolved against the passed schema root.
172
+ */
173
+ function normalizeJsonSchemaProperties(schema, options = {}) {
174
+ if (!schema || typeof schema !== "object") return [];
175
+ const properties = schema.properties ?? {};
176
+ const required = Array.isArray(schema.required) ? schema.required : [];
177
+ const ctx = {
178
+ defs: schema.$defs ?? schema.definitions ?? {},
179
+ root: schema,
180
+ depth: 0,
181
+ maxDepth: options.maxDepth ?? DEFAULT_MAX_DEPTH,
182
+ seen: /* @__PURE__ */ new Set()
183
+ };
184
+ return Object.entries(properties).map(([name, node]) => walkNode(name, node, required.includes(name), ctx));
185
+ }
186
+ /**
187
+ * Unwrap an AI SDK `jsonSchema()` wrapper (`{ jsonSchema, validate, _type }`) to the
188
+ * underlying JSON Schema. The MCP ingestion fallback wraps a raw schema this way; without
189
+ * unwrapping, downstream readers (provider tool def, prompt renderer, manage UI) see the
190
+ * wrapper's top-level keys instead of the real `properties`/`$defs`. A non-wrapper value
191
+ * (plain JSON Schema, or a Zod schema, which has no `jsonSchema` property) passes through.
192
+ */
193
+ function unwrapJsonSchemaWrapper(value) {
194
+ if (value && typeof value === "object") {
195
+ const inner = value.jsonSchema;
196
+ if (inner && typeof inner === "object") return inner;
197
+ }
198
+ return value;
199
+ }
200
+
201
+ //#endregion
202
+ export { normalizeJsonSchemaProperties, unwrapJsonSchemaWrapper };
@@ -1,4 +1,5 @@
1
1
  import { MCPTransportType } from "../types/utility.js";
2
+ import { getLogger } from "./logger.js";
2
3
  import { MCP_TOOL_CONNECTION_TIMEOUT_MS, MCP_TOOL_INITIAL_RECONNECTION_DELAY_MS, MCP_TOOL_MAX_RECONNECTION_DELAY_MS, MCP_TOOL_MAX_RETRIES, MCP_TOOL_RECONNECTION_DELAY_GROWTH_FACTOR } from "../constants/execution-limits-shared/index.js";
3
4
  import { z } from "@hono/zod-openapi";
4
5
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
@@ -6,11 +7,12 @@ import { CallToolResultSchema } from "@modelcontextprotocol/sdk/types.js";
6
7
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
7
8
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
8
9
  import { DEFAULT_REQUEST_TIMEOUT_MSEC } from "@modelcontextprotocol/sdk/shared/protocol.js";
9
- import { tool } from "ai";
10
+ import { jsonSchema, tool } from "ai";
10
11
  import { asyncExitHook } from "exit-hook";
11
12
  import { match } from "ts-pattern";
12
13
 
13
14
  //#region src/utils/mcp-client.ts
15
+ const logger = getLogger("mcp-client");
14
16
  const activeMcpClients = /* @__PURE__ */ new Set();
15
17
  let exitHookRegistered = false;
16
18
  function ensureExitHook() {
@@ -141,37 +143,17 @@ var McpClient = class {
141
143
  const tools = await this.selectTools();
142
144
  const results = {};
143
145
  for (const def of tools) try {
144
- const createZodSchema = (inputSchema) => {
145
- if (!inputSchema || !inputSchema.properties) return z.object({});
146
- const zodProperties = {};
147
- for (const [key, prop] of Object.entries(inputSchema.properties)) {
148
- const propDef = prop;
149
- let zodType;
150
- switch (propDef.type) {
151
- case "string":
152
- zodType = z.string();
153
- break;
154
- case "number":
155
- zodType = z.number();
156
- break;
157
- case "boolean":
158
- zodType = z.boolean();
159
- break;
160
- case "array":
161
- zodType = z.array(z.any());
162
- break;
163
- case "object":
164
- zodType = createZodSchema(propDef);
165
- break;
166
- default: zodType = z.any();
167
- }
168
- if (propDef.description) zodType = zodType.describe(propDef.description);
169
- if (!inputSchema.required?.includes(key)) zodType = zodType.optional();
170
- zodProperties[key] = zodType;
171
- }
172
- return z.object(zodProperties);
173
- };
174
- const schema = createZodSchema(def.inputSchema);
146
+ let schema;
147
+ try {
148
+ schema = z.fromJSONSchema(def.inputSchema);
149
+ } catch (conversionError) {
150
+ logger.warn({
151
+ server: this.name,
152
+ tool: def.name,
153
+ error: conversionError instanceof Error ? conversionError.message : String(conversionError)
154
+ }, "z.fromJSONSchema failed; passing raw JSON Schema through");
155
+ schema = jsonSchema(def.inputSchema ?? {});
156
+ }
175
157
  const createdTool = tool({
176
158
  id: `${this.name}.${def.name}`,
177
159
  description: def.description || "",
@@ -1,10 +1,10 @@
1
1
  import { z } from "@hono/zod-openapi";
2
- import * as drizzle_zod403 from "drizzle-zod";
2
+ import * as drizzle_zod0 from "drizzle-zod";
3
3
  import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
4
4
 
5
5
  //#region src/validation/drizzle-schema-helpers.d.ts
6
- declare function createSelectSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod403.BuildSchema<"select", T["_"]["columns"], drizzle_zod403.BuildRefine<T["_"]["columns"], undefined>, undefined>;
7
- declare function createInsertSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod403.BuildSchema<"insert", T["_"]["columns"], drizzle_zod403.BuildRefine<Pick<T["_"]["columns"], keyof T["$inferInsert"]>, undefined>, undefined>;
6
+ declare function createSelectSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod0.BuildSchema<"select", T["_"]["columns"], drizzle_zod0.BuildRefine<T["_"]["columns"], undefined>, undefined>;
7
+ declare function createInsertSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod0.BuildSchema<"insert", T["_"]["columns"], drizzle_zod0.BuildRefine<Pick<T["_"]["columns"], keyof T["$inferInsert"]>, undefined>, undefined>;
8
8
  declare const createSelectSchema: typeof createSelectSchemaWithModifiers;
9
9
  declare const createInsertSchema: typeof createInsertSchemaWithModifiers;
10
10
  /**
@@ -352,12 +352,12 @@ declare const SkillUpdateSchema: z.ZodObject<{
352
352
  }, z.core.$strip>;
353
353
  declare const SkillApiSelectSchema: z.ZodObject<{
354
354
  id: z.ZodString;
355
- name: z.ZodString;
356
355
  createdAt: z.ZodString;
357
- updatedAt: z.ZodString;
356
+ name: z.ZodString;
358
357
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
359
358
  description: z.ZodString;
360
359
  content: z.ZodString;
360
+ updatedAt: z.ZodString;
361
361
  }, z.core.$strip>;
362
362
  declare const SkillApiInsertSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
363
363
  files: z.ZodArray<z.ZodObject<{
@@ -411,8 +411,8 @@ declare const SkillApiUpdateSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
411
411
  declare const SkillFileApiSelectSchema: z.ZodObject<{
412
412
  id: z.ZodString;
413
413
  createdAt: z.ZodString;
414
- updatedAt: z.ZodString;
415
414
  content: z.ZodString;
415
+ updatedAt: z.ZodString;
416
416
  skillId: z.ZodString;
417
417
  filePath: z.ZodString;
418
418
  }, z.core.$strip>;
@@ -425,17 +425,17 @@ declare const SkillFileApiUpdateSchema: z.ZodObject<{
425
425
  }, z.core.$strip>;
426
426
  declare const SkillWithFilesApiSelectSchema: z.ZodObject<{
427
427
  id: z.ZodString;
428
- name: z.ZodString;
429
428
  createdAt: z.ZodString;
430
- updatedAt: z.ZodString;
429
+ name: z.ZodString;
431
430
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
432
431
  description: z.ZodString;
433
432
  content: z.ZodString;
433
+ updatedAt: z.ZodString;
434
434
  files: z.ZodArray<z.ZodObject<{
435
435
  id: z.ZodString;
436
436
  createdAt: z.ZodString;
437
- updatedAt: z.ZodString;
438
437
  content: z.ZodString;
438
+ updatedAt: z.ZodString;
439
439
  skillId: z.ZodString;
440
440
  filePath: z.ZodString;
441
441
  }, z.core.$strip>>;
@@ -488,8 +488,8 @@ declare const SubAgentSkillUpdateSchema: z.ZodObject<{
488
488
  declare const SubAgentSkillApiSelectSchema: z.ZodObject<{
489
489
  id: z.ZodString;
490
490
  createdAt: z.ZodString;
491
- updatedAt: z.ZodString;
492
491
  subAgentId: z.ZodString;
492
+ updatedAt: z.ZodString;
493
493
  skillId: z.ZodString;
494
494
  index: z.ZodInt;
495
495
  alwaysLoaded: z.ZodBoolean;
@@ -507,20 +507,20 @@ declare const SubAgentSkillApiInsertSchema: z.ZodObject<{
507
507
  declare const SubAgentSkillApiUpdateSchema: z.ZodObject<{
508
508
  id: z.ZodOptional<z.ZodOptional<z.ZodString>>;
509
509
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodOptional<z.ZodString>>>;
510
- updatedAt: z.ZodOptional<z.ZodOptional<z.ZodOptional<z.ZodString>>>;
511
510
  subAgentId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
511
+ updatedAt: z.ZodOptional<z.ZodOptional<z.ZodOptional<z.ZodString>>>;
512
512
  skillId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
513
513
  index: z.ZodOptional<z.ZodOptional<z.ZodInt>>;
514
514
  alwaysLoaded: z.ZodOptional<z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodBoolean>>>>;
515
515
  }, z.core.$strip>;
516
516
  declare const SubAgentSkillWithIndexSchema: z.ZodObject<{
517
517
  id: z.ZodString;
518
- name: z.ZodString;
519
518
  createdAt: z.ZodString;
520
- updatedAt: z.ZodString;
519
+ name: z.ZodString;
521
520
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
522
521
  description: z.ZodString;
523
522
  content: z.ZodString;
523
+ updatedAt: z.ZodString;
524
524
  subAgentSkillId: z.ZodString;
525
525
  subAgentId: z.ZodString;
526
526
  index: z.ZodInt;
@@ -530,8 +530,8 @@ declare const SkillFileResponse: z.ZodObject<{
530
530
  data: z.ZodObject<{
531
531
  id: z.ZodString;
532
532
  createdAt: z.ZodString;
533
- updatedAt: z.ZodString;
534
533
  content: z.ZodString;
534
+ updatedAt: z.ZodString;
535
535
  skillId: z.ZodString;
536
536
  filePath: z.ZodString;
537
537
  }, z.core.$strip>;
@@ -539,17 +539,17 @@ declare const SkillFileResponse: z.ZodObject<{
539
539
  declare const SkillWithFilesResponse: z.ZodObject<{
540
540
  data: z.ZodObject<{
541
541
  id: z.ZodString;
542
- name: z.ZodString;
543
542
  createdAt: z.ZodString;
544
- updatedAt: z.ZodString;
543
+ name: z.ZodString;
545
544
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
546
545
  description: z.ZodString;
547
546
  content: z.ZodString;
547
+ updatedAt: z.ZodString;
548
548
  files: z.ZodArray<z.ZodObject<{
549
549
  id: z.ZodString;
550
550
  createdAt: z.ZodString;
551
- updatedAt: z.ZodString;
552
551
  content: z.ZodString;
552
+ updatedAt: z.ZodString;
553
553
  skillId: z.ZodString;
554
554
  filePath: z.ZodString;
555
555
  }, z.core.$strip>>;
@@ -558,12 +558,12 @@ declare const SkillWithFilesResponse: z.ZodObject<{
558
558
  declare const SkillListResponse: z.ZodObject<{
559
559
  data: z.ZodArray<z.ZodObject<{
560
560
  id: z.ZodString;
561
- name: z.ZodString;
562
561
  createdAt: z.ZodString;
563
- updatedAt: z.ZodString;
562
+ name: z.ZodString;
564
563
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
565
564
  description: z.ZodString;
566
565
  content: z.ZodString;
566
+ updatedAt: z.ZodString;
567
567
  }, z.core.$strip>>;
568
568
  pagination: z.ZodObject<{
569
569
  page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -577,8 +577,8 @@ declare const SubAgentSkillResponse: z.ZodObject<{
577
577
  data: z.ZodObject<{
578
578
  id: z.ZodString;
579
579
  createdAt: z.ZodString;
580
- updatedAt: z.ZodString;
581
580
  subAgentId: z.ZodString;
581
+ updatedAt: z.ZodString;
582
582
  skillId: z.ZodString;
583
583
  index: z.ZodInt;
584
584
  alwaysLoaded: z.ZodBoolean;
@@ -587,12 +587,12 @@ declare const SubAgentSkillResponse: z.ZodObject<{
587
587
  declare const SubAgentSkillWithIndexArrayResponse: z.ZodObject<{
588
588
  data: z.ZodArray<z.ZodObject<{
589
589
  id: z.ZodString;
590
- name: z.ZodString;
591
590
  createdAt: z.ZodString;
592
- updatedAt: z.ZodString;
591
+ name: z.ZodString;
593
592
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
594
593
  description: z.ZodString;
595
594
  content: z.ZodString;
595
+ updatedAt: z.ZodString;
596
596
  subAgentSkillId: z.ZodString;
597
597
  subAgentId: z.ZodString;
598
598
  index: z.ZodInt;