@dudousxd/nestjs-agent-react 0.13.0 → 0.15.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.
- package/README.md +136 -2
- package/dist/genui-json-render.cjs +93 -0
- package/dist/genui-json-render.cjs.map +1 -0
- package/dist/genui-json-render.d.cts +34 -0
- package/dist/genui-json-render.d.ts +34 -0
- package/dist/genui-json-render.js +67 -0
- package/dist/genui-json-render.js.map +1 -0
- package/dist/genui.cjs +450 -0
- package/dist/genui.cjs.map +1 -0
- package/dist/genui.d.cts +62 -0
- package/dist/genui.d.ts +62 -0
- package/dist/genui.js +420 -0
- package/dist/genui.js.map +1 -0
- package/dist/index.cjs +970 -432
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +343 -609
- package/dist/index.d.ts +343 -609
- package/dist/index.js +931 -399
- package/dist/index.js.map +1 -1
- package/dist/markdown.d.cts +2 -2
- package/dist/markdown.d.ts +2 -2
- package/dist/model-gHqjNjLJ.d.cts +561 -0
- package/dist/model-gHqjNjLJ.d.ts +561 -0
- package/dist/types-DFD-soWU.d.cts +86 -0
- package/dist/types-DFD-soWU.d.ts +86 -0
- package/package.json +30 -3
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
/** The `ui` frame component a composed tree is pushed under (`@dudousxd/nestjs-agent-genui`'s `GENUI_TREE_COMPONENT`). */
|
|
4
|
+
declare const GENUI_TREE_COMPONENT = "genui:tree";
|
|
5
|
+
/** One pushed component, normalized from whatever carried it (a transcript block, a `data-ui` part, a stored entry). */
|
|
6
|
+
interface GenerativeUIItem {
|
|
7
|
+
id: string;
|
|
8
|
+
component: string;
|
|
9
|
+
props: Record<string, unknown>;
|
|
10
|
+
version: number | null;
|
|
11
|
+
toolCallId: string | null;
|
|
12
|
+
}
|
|
13
|
+
/** A node of a composed tree (`genui:tree` frames): `{ type, props, children? }`. */
|
|
14
|
+
interface GenerativeUIElement {
|
|
15
|
+
type: string;
|
|
16
|
+
props: Record<string, unknown>;
|
|
17
|
+
children?: GenerativeUIElement[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* An app's renderer for one component: it receives the component's props spread, plus `children`
|
|
21
|
+
* when it is a layout node in a tree. Any React component — the library never styles anything.
|
|
22
|
+
*/
|
|
23
|
+
type GenuiRenderer<P = any> = ComponentType<P & {
|
|
24
|
+
children?: ReactNode;
|
|
25
|
+
}>;
|
|
26
|
+
/** Component name → the app's renderer. */
|
|
27
|
+
type GenuiRegistry = Record<string, GenuiRenderer>;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve a component the registry does not have — typically a tenant's own component, fetched for
|
|
30
|
+
* the exact `version` a message was rendered with. Return `null`/`undefined` for "no such
|
|
31
|
+
* component". May be async; results are cached per resolver, name and version.
|
|
32
|
+
*/
|
|
33
|
+
type ResolveComponent = (name: string, version: number | null) => GenuiRenderer | null | undefined | Promise<GenuiRenderer | null | undefined>;
|
|
34
|
+
interface GenuiIssueLike {
|
|
35
|
+
path: (string | number)[];
|
|
36
|
+
message: string;
|
|
37
|
+
}
|
|
38
|
+
type ValidationLike = {
|
|
39
|
+
ok: true;
|
|
40
|
+
value: Record<string, unknown>;
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
issues: GenuiIssueLike[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* What the renderer needs from a catalog to validate props before drawing them. A
|
|
47
|
+
* `@dudousxd/nestjs-agent-genui` `Catalog` satisfies it; declared structurally so this subpath does
|
|
48
|
+
* not depend on that package.
|
|
49
|
+
*/
|
|
50
|
+
interface GenuiCatalogLike {
|
|
51
|
+
has(name: string): boolean;
|
|
52
|
+
validate(name: string, props: unknown): Promise<ValidationLike>;
|
|
53
|
+
validateSync?(name: string, props: unknown): ValidationLike | undefined;
|
|
54
|
+
}
|
|
55
|
+
interface GenerativeUIOptions {
|
|
56
|
+
registry: GenuiRegistry;
|
|
57
|
+
/** Validate props against it before rendering. Components the catalog does not know render unvalidated. */
|
|
58
|
+
catalog?: GenuiCatalogLike;
|
|
59
|
+
resolveComponent?: ResolveComponent;
|
|
60
|
+
}
|
|
61
|
+
/** Why an item did not render. */
|
|
62
|
+
type GenerativeUIProblem = {
|
|
63
|
+
reason: 'unknown';
|
|
64
|
+
item: GenerativeUIItem;
|
|
65
|
+
} | {
|
|
66
|
+
reason: 'invalid';
|
|
67
|
+
item: GenerativeUIItem;
|
|
68
|
+
issues: GenuiIssueLike[];
|
|
69
|
+
} | {
|
|
70
|
+
reason: 'error';
|
|
71
|
+
item: GenerativeUIItem;
|
|
72
|
+
error: unknown;
|
|
73
|
+
};
|
|
74
|
+
type GenerativeUIState = {
|
|
75
|
+
status: 'ready';
|
|
76
|
+
item: GenerativeUIItem;
|
|
77
|
+
Component: GenuiRenderer;
|
|
78
|
+
props: Record<string, unknown>;
|
|
79
|
+
} | {
|
|
80
|
+
status: 'loading';
|
|
81
|
+
item: GenerativeUIItem;
|
|
82
|
+
} | ({
|
|
83
|
+
status: 'problem';
|
|
84
|
+
} & GenerativeUIProblem);
|
|
85
|
+
|
|
86
|
+
export { type GenerativeUIOptions as G, type ResolveComponent as R, type GenerativeUIItem as a, type GenerativeUIProblem as b, type GenerativeUIElement as c, type GenerativeUIState as d, GENUI_TREE_COMPONENT as e, type GenuiCatalogLike as f, type GenuiIssueLike as g, type GenuiRegistry as h, type GenuiRenderer as i };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-agent-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/DavideCarvalho/nestjs-agent.git",
|
|
@@ -47,16 +47,37 @@
|
|
|
47
47
|
"types": "./dist/markdown.d.cts",
|
|
48
48
|
"default": "./dist/markdown.cjs"
|
|
49
49
|
}
|
|
50
|
+
},
|
|
51
|
+
"./genui": {
|
|
52
|
+
"import": {
|
|
53
|
+
"types": "./dist/genui.d.ts",
|
|
54
|
+
"default": "./dist/genui.js"
|
|
55
|
+
},
|
|
56
|
+
"require": {
|
|
57
|
+
"types": "./dist/genui.d.cts",
|
|
58
|
+
"default": "./dist/genui.cjs"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"./genui/json-render": {
|
|
62
|
+
"import": {
|
|
63
|
+
"types": "./dist/genui-json-render.d.ts",
|
|
64
|
+
"default": "./dist/genui-json-render.js"
|
|
65
|
+
},
|
|
66
|
+
"require": {
|
|
67
|
+
"types": "./dist/genui-json-render.d.cts",
|
|
68
|
+
"default": "./dist/genui-json-render.cjs"
|
|
69
|
+
}
|
|
50
70
|
}
|
|
51
71
|
},
|
|
52
72
|
"files": [
|
|
53
73
|
"dist"
|
|
54
74
|
],
|
|
55
75
|
"dependencies": {
|
|
56
|
-
"@dudousxd/nestjs-agent-core": "0.
|
|
76
|
+
"@dudousxd/nestjs-agent-core": "0.23.0"
|
|
57
77
|
},
|
|
58
78
|
"peerDependencies": {
|
|
59
79
|
"@ai-sdk/react": "^4.0.0",
|
|
80
|
+
"@json-render/react": ">=0.21.0 <1.0.0",
|
|
60
81
|
"@streamdown/code": "^1.1.1",
|
|
61
82
|
"@streamdown/math": "^1.0.2",
|
|
62
83
|
"@streamdown/mermaid": "^1.0.2",
|
|
@@ -73,6 +94,9 @@
|
|
|
73
94
|
"unist-util-visit": "^5.1.0"
|
|
74
95
|
},
|
|
75
96
|
"peerDependenciesMeta": {
|
|
97
|
+
"@json-render/react": {
|
|
98
|
+
"optional": true
|
|
99
|
+
},
|
|
76
100
|
"@streamdown/code": {
|
|
77
101
|
"optional": true
|
|
78
102
|
},
|
|
@@ -112,6 +136,8 @@
|
|
|
112
136
|
},
|
|
113
137
|
"devDependencies": {
|
|
114
138
|
"@ai-sdk/react": "4.0.17",
|
|
139
|
+
"@json-render/core": "0.21.0",
|
|
140
|
+
"@json-render/react": "0.21.0",
|
|
115
141
|
"@streamdown/code": "1.1.1",
|
|
116
142
|
"@streamdown/math": "1.0.2",
|
|
117
143
|
"@streamdown/mermaid": "1.0.2",
|
|
@@ -133,7 +159,8 @@
|
|
|
133
159
|
"tsup": "8.5.1",
|
|
134
160
|
"typescript": "5.9.3",
|
|
135
161
|
"unist-util-visit": "5.1.0",
|
|
136
|
-
"vitest": "2.1.9"
|
|
162
|
+
"vitest": "2.1.9",
|
|
163
|
+
"@dudousxd/nestjs-agent-genui": "0.2.0"
|
|
137
164
|
},
|
|
138
165
|
"scripts": {
|
|
139
166
|
"build": "tsup",
|