@kibadist/agentui-ai 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tool.d.ts CHANGED
@@ -11,34 +11,25 @@ export interface CreateUIEmitterToolOptions {
11
11
  /**
12
12
  * Creates an AI SDK tool for emitting UI events.
13
13
  *
14
- * The returned tool uses a Zod `discriminatedUnion` on `op` so the model
15
- * can only produce valid UI patch operations with your registered component types.
14
+ * Uses a flat object schema (not discriminatedUnion) so the JSON schema
15
+ * root is always `{ type: "object" }`, which is required by
16
+ * OpenAI-compatible providers like DeepSeek.
16
17
  */
17
18
  export declare function createUIEmitterTool(opts: CreateUIEmitterToolOptions): import("ai").Tool<{
18
- op: "ui.append";
19
- node: {
19
+ op: "ui.append" | "ui.replace" | "ui.remove" | "ui.toast" | "ui.navigate";
20
+ message?: string | undefined;
21
+ key?: string | undefined;
22
+ props?: Record<string, any> | undefined;
23
+ node?: {
20
24
  type: string;
21
25
  key: string;
22
26
  props: Record<string, any>;
23
27
  slot?: string | undefined;
24
- };
28
+ } | undefined;
25
29
  index?: number | undefined;
26
- } | {
27
- op: "ui.replace";
28
- key: string;
29
- props: Record<string, any>;
30
- replace?: boolean | undefined;
31
- } | {
32
- op: "ui.remove";
33
- key: string;
34
- } | {
35
- op: "ui.toast";
36
- message: string;
37
- level: "info" | "success" | "warning" | "error";
38
- } | {
39
- op: "ui.navigate";
40
- href: string;
41
30
  replace?: boolean | undefined;
31
+ level?: "info" | "success" | "warning" | "error" | undefined;
32
+ href?: string | undefined;
42
33
  }, {
43
34
  ok: boolean;
44
35
  eventId: `${string}-${string}-${string}-${string}-${string}`;
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,MAAM,WAAW,0BAA0B;IACzC,iDAAiD;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEnE"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,MAAM,WAAW,0BAA0B;IACzC,iDAAiD;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;GAwDnE"}
package/dist/tool.js CHANGED
@@ -5,49 +5,41 @@ export const UI_EMITTER_TOOL_NAME = "emit_ui_event";
5
5
  /**
6
6
  * Creates an AI SDK tool for emitting UI events.
7
7
  *
8
- * The returned tool uses a Zod `discriminatedUnion` on `op` so the model
9
- * can only produce valid UI patch operations with your registered component types.
8
+ * Uses a flat object schema (not discriminatedUnion) so the JSON schema
9
+ * root is always `{ type: "object" }`, which is required by
10
+ * OpenAI-compatible providers like DeepSeek.
10
11
  */
11
12
  export function createUIEmitterTool(opts) {
12
13
  const { allowedTypes, sessionId, onUIEvent } = opts;
13
14
  const typesEnum = z.enum(allowedTypes);
14
- const appendSchema = z.object({
15
- op: z.literal("ui.append"),
16
- node: z.object({
15
+ const inputSchema = z.object({
16
+ op: z.enum([
17
+ "ui.append",
18
+ "ui.replace",
19
+ "ui.remove",
20
+ "ui.toast",
21
+ "ui.navigate",
22
+ ]),
23
+ // ui.append fields
24
+ node: z
25
+ .object({
17
26
  key: z.string().min(1),
18
27
  type: typesEnum,
19
28
  props: z.record(z.string(), z.any()),
20
29
  slot: z.string().optional(),
21
- }),
30
+ })
31
+ .optional(),
22
32
  index: z.number().int().nonnegative().optional(),
23
- });
24
- const replaceSchema = z.object({
25
- op: z.literal("ui.replace"),
26
- key: z.string().min(1),
27
- props: z.record(z.string(), z.any()),
28
- replace: z.boolean().optional(),
29
- });
30
- const removeSchema = z.object({
31
- op: z.literal("ui.remove"),
32
- key: z.string().min(1),
33
- });
34
- const toastSchema = z.object({
35
- op: z.literal("ui.toast"),
36
- level: z.enum(["info", "success", "warning", "error"]),
37
- message: z.string().min(1),
38
- });
39
- const navigateSchema = z.object({
40
- op: z.literal("ui.navigate"),
41
- href: z.string().min(1),
33
+ // ui.replace / ui.remove fields
34
+ key: z.string().optional(),
35
+ props: z.record(z.string(), z.any()).optional(),
42
36
  replace: z.boolean().optional(),
37
+ // ui.toast fields
38
+ level: z.enum(["info", "success", "warning", "error"]).optional(),
39
+ message: z.string().optional(),
40
+ // ui.navigate fields
41
+ href: z.string().optional(),
43
42
  });
44
- const inputSchema = z.discriminatedUnion("op", [
45
- appendSchema,
46
- replaceSchema,
47
- removeSchema,
48
- toastSchema,
49
- navigateSchema,
50
- ]);
51
43
  return tool({
52
44
  description: "Emit a UI event to render, update, or remove a component on the user's screen. " +
53
45
  "Each call produces exactly one patch operation.",
package/dist/tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAWpD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgC;IAClE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEpD,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,YAAqC,CAAC,CAAC;IAEhE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;YACT,WAAW;YACX,YAAY;YACZ,WAAW;YACX,UAAU;YACV,aAAa;SACd,CAAC;QACF,mBAAmB;QACnB,IAAI,EAAE,CAAC;aACJ,MAAM,CAAC;YACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,CAAC;aACD,QAAQ,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QAChD,gCAAgC;QAChC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC/B,kBAAkB;QAClB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,qBAAqB;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;QACV,WAAW,EACT,iFAAiF;YACjF,iDAAiD;QACnD,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG;gBACZ,GAAG,IAAI;gBACP,CAAC,EAAE,CAAU;gBACb,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;gBACvB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,SAAS;aACV,CAAC;YAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kibadist/agentui-ai",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "AgentUI adapter for Vercel AI SDK — works with any provider (OpenAI, Anthropic, Google, etc.)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "dist"
27
27
  ],
28
28
  "dependencies": {
29
- "@kibadist/agentui-protocol": "0.1.5",
29
+ "@kibadist/agentui-protocol": "0.1.6",
30
30
  "@kibadist/agentui-validate": "0.1.6"
31
31
  },
32
32
  "peerDependencies": {