@ilana-ai/react 0.0.1
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/context.d.ts +25 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +32 -0
- package/dist/context.js.map +1 -0
- package/dist/hooks.d.ts +47 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +118 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ilana React Context
|
|
3
|
+
*/
|
|
4
|
+
import { type ReactNode } from 'react';
|
|
5
|
+
import { IlanaClient } from '@ilana-ai/sdk';
|
|
6
|
+
import type { IlanaConfig } from './types.js';
|
|
7
|
+
interface IlanaContextValue {
|
|
8
|
+
client: IlanaClient;
|
|
9
|
+
config: IlanaConfig;
|
|
10
|
+
}
|
|
11
|
+
export interface IlanaProviderProps {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
config: IlanaConfig;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Provider component that makes Ilana client available to all children
|
|
17
|
+
*/
|
|
18
|
+
export declare function IlanaProvider({ children, config }: IlanaProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
/**
|
|
20
|
+
* Hook to access the Ilana context
|
|
21
|
+
* @throws Error if used outside IlanaProvider
|
|
22
|
+
*/
|
|
23
|
+
export declare function useIlanaContext(): IlanaContextValue;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,UAAU,iBAAiB;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAUrE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Ilana React Context
|
|
4
|
+
*/
|
|
5
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
6
|
+
import { IlanaClient } from '@ilana-ai/sdk';
|
|
7
|
+
const IlanaContext = createContext(null);
|
|
8
|
+
/**
|
|
9
|
+
* Provider component that makes Ilana client available to all children
|
|
10
|
+
*/
|
|
11
|
+
export function IlanaProvider({ children, config }) {
|
|
12
|
+
const value = useMemo(() => {
|
|
13
|
+
const client = new IlanaClient({
|
|
14
|
+
runtimeUrl: config.runtimeUrl,
|
|
15
|
+
token: config.token,
|
|
16
|
+
});
|
|
17
|
+
return { client, config };
|
|
18
|
+
}, [config.runtimeUrl, config.token, config.botId]);
|
|
19
|
+
return _jsx(IlanaContext.Provider, { value: value, children: children });
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Hook to access the Ilana context
|
|
23
|
+
* @throws Error if used outside IlanaProvider
|
|
24
|
+
*/
|
|
25
|
+
export function useIlanaContext() {
|
|
26
|
+
const context = useContext(IlanaContext);
|
|
27
|
+
if (!context) {
|
|
28
|
+
throw new Error('useIlanaContext must be used within an IlanaProvider');
|
|
29
|
+
}
|
|
30
|
+
return context;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAOnE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAsB;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ilana React Hooks
|
|
3
|
+
*/
|
|
4
|
+
import type { UseQueryOptions, UseQueryResult } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hook for executing queries against the Ilana Runtime API
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* function SearchBox() {
|
|
11
|
+
* const { query, isLoading, data, error } = useQuery();
|
|
12
|
+
*
|
|
13
|
+
* const handleSearch = async (searchTerm: string) => {
|
|
14
|
+
* await query(searchTerm);
|
|
15
|
+
* };
|
|
16
|
+
*
|
|
17
|
+
* return (
|
|
18
|
+
* <div>
|
|
19
|
+
* <input onKeyDown={(e) => e.key === 'Enter' && handleSearch(e.target.value)} />
|
|
20
|
+
* {isLoading && <span>Searching...</span>}
|
|
21
|
+
* {data && <div>{data.response}</div>}
|
|
22
|
+
* {error && <div>Error: {error.message}</div>}
|
|
23
|
+
* </div>
|
|
24
|
+
* );
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function useQuery(options?: UseQueryOptions): UseQueryResult;
|
|
29
|
+
/**
|
|
30
|
+
* Hook for one-shot queries (no conversation tracking)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* function QuickSearch() {
|
|
35
|
+
* const { search, isLoading, data } = useSearch();
|
|
36
|
+
*
|
|
37
|
+
* return (
|
|
38
|
+
* <input
|
|
39
|
+
* placeholder="Search..."
|
|
40
|
+
* onKeyDown={(e) => e.key === 'Enter' && search(e.target.value)}
|
|
41
|
+
* />
|
|
42
|
+
* );
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function useSearch(options?: UseQueryOptions): UseQueryResult;
|
|
47
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAc,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,cAAc,CA6CtE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,eAAoB,GAAG,cAAc,CAwCvE"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ilana React Hooks
|
|
3
|
+
*/
|
|
4
|
+
import { useState, useCallback, useRef } from 'react';
|
|
5
|
+
import { useIlanaContext } from './context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Hook for executing queries against the Ilana Runtime API
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* function SearchBox() {
|
|
12
|
+
* const { query, isLoading, data, error } = useQuery();
|
|
13
|
+
*
|
|
14
|
+
* const handleSearch = async (searchTerm: string) => {
|
|
15
|
+
* await query(searchTerm);
|
|
16
|
+
* };
|
|
17
|
+
*
|
|
18
|
+
* return (
|
|
19
|
+
* <div>
|
|
20
|
+
* <input onKeyDown={(e) => e.key === 'Enter' && handleSearch(e.target.value)} />
|
|
21
|
+
* {isLoading && <span>Searching...</span>}
|
|
22
|
+
* {data && <div>{data.response}</div>}
|
|
23
|
+
* {error && <div>Error: {error.message}</div>}
|
|
24
|
+
* </div>
|
|
25
|
+
* );
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function useQuery(options = {}) {
|
|
30
|
+
const { client, config } = useIlanaContext();
|
|
31
|
+
const [state, setState] = useState({
|
|
32
|
+
isLoading: false,
|
|
33
|
+
data: null,
|
|
34
|
+
error: null,
|
|
35
|
+
});
|
|
36
|
+
// Track conversation ID for multi-turn interactions
|
|
37
|
+
const conversationIdRef = useRef(null);
|
|
38
|
+
const query = useCallback(async (input) => {
|
|
39
|
+
setState((prev) => ({ ...prev, isLoading: true, error: null }));
|
|
40
|
+
const result = await client.query({
|
|
41
|
+
botId: config.botId,
|
|
42
|
+
input,
|
|
43
|
+
conversationId: conversationIdRef.current ?? undefined,
|
|
44
|
+
});
|
|
45
|
+
if (result.ok) {
|
|
46
|
+
conversationIdRef.current = result.data.conversationId;
|
|
47
|
+
setState({ isLoading: false, data: result.data, error: null });
|
|
48
|
+
options.onSuccess?.(result.data);
|
|
49
|
+
return result.data;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
setState({ isLoading: false, data: null, error: result.error });
|
|
53
|
+
options.onError?.(result.error);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}, [client, config.botId, options]);
|
|
57
|
+
const reset = useCallback(() => {
|
|
58
|
+
conversationIdRef.current = null;
|
|
59
|
+
setState({ isLoading: false, data: null, error: null });
|
|
60
|
+
}, []);
|
|
61
|
+
return {
|
|
62
|
+
...state,
|
|
63
|
+
query,
|
|
64
|
+
reset,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hook for one-shot queries (no conversation tracking)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```tsx
|
|
72
|
+
* function QuickSearch() {
|
|
73
|
+
* const { search, isLoading, data } = useSearch();
|
|
74
|
+
*
|
|
75
|
+
* return (
|
|
76
|
+
* <input
|
|
77
|
+
* placeholder="Search..."
|
|
78
|
+
* onKeyDown={(e) => e.key === 'Enter' && search(e.target.value)}
|
|
79
|
+
* />
|
|
80
|
+
* );
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export function useSearch(options = {}) {
|
|
85
|
+
const { client, config } = useIlanaContext();
|
|
86
|
+
const [state, setState] = useState({
|
|
87
|
+
isLoading: false,
|
|
88
|
+
data: null,
|
|
89
|
+
error: null,
|
|
90
|
+
});
|
|
91
|
+
const query = useCallback(async (input) => {
|
|
92
|
+
setState((prev) => ({ ...prev, isLoading: true, error: null }));
|
|
93
|
+
// Always start fresh - no conversation tracking
|
|
94
|
+
const result = await client.query({
|
|
95
|
+
botId: config.botId,
|
|
96
|
+
input,
|
|
97
|
+
});
|
|
98
|
+
if (result.ok) {
|
|
99
|
+
setState({ isLoading: false, data: result.data, error: null });
|
|
100
|
+
options.onSuccess?.(result.data);
|
|
101
|
+
return result.data;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
setState({ isLoading: false, data: null, error: result.error });
|
|
105
|
+
options.onError?.(result.error);
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}, [client, config.botId, options]);
|
|
109
|
+
const reset = useCallback(() => {
|
|
110
|
+
setState({ isLoading: false, data: null, error: null });
|
|
111
|
+
}, []);
|
|
112
|
+
return {
|
|
113
|
+
...state,
|
|
114
|
+
query,
|
|
115
|
+
reset,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ilana/react
|
|
3
|
+
* React SDK for the Ilana Runtime API
|
|
4
|
+
*/
|
|
5
|
+
export { IlanaProvider, useIlanaContext } from './context.js';
|
|
6
|
+
export type { IlanaProviderProps } from './context.js';
|
|
7
|
+
export { useQuery, useSearch } from './hooks.js';
|
|
8
|
+
export type { IlanaConfig, QueryState, UseQueryOptions, UseQueryResult, QueryInput, QueryOutput, IlanaError, } from './types.js';
|
|
9
|
+
export { IlanaClient, IlanaSDKError } from '@ilana-ai/sdk';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGjD,YAAY,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ilana/react
|
|
3
|
+
* React SDK for the Ilana Runtime API
|
|
4
|
+
*/
|
|
5
|
+
// Context and Provider
|
|
6
|
+
export { IlanaProvider, useIlanaContext } from './context.js';
|
|
7
|
+
// Hooks
|
|
8
|
+
export { useQuery, useSearch } from './hooks.js';
|
|
9
|
+
// Re-export core SDK for convenience
|
|
10
|
+
export { IlanaClient, IlanaSDKError } from '@ilana-ai/sdk';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG9D,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAajD,qCAAqC;AACrC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React SDK Types
|
|
3
|
+
*/
|
|
4
|
+
import type { QueryInput, QueryOutput, IlanaError } from '@ilana-ai/sdk';
|
|
5
|
+
export interface IlanaConfig {
|
|
6
|
+
/** Runtime API URL */
|
|
7
|
+
runtimeUrl: string;
|
|
8
|
+
/** Embed token for authentication */
|
|
9
|
+
token: string;
|
|
10
|
+
/** Bot ID to query */
|
|
11
|
+
botId: string;
|
|
12
|
+
}
|
|
13
|
+
export interface QueryState {
|
|
14
|
+
/** Whether a query is in progress */
|
|
15
|
+
isLoading: boolean;
|
|
16
|
+
/** The last successful response */
|
|
17
|
+
data: QueryOutput | null;
|
|
18
|
+
/** The last error */
|
|
19
|
+
error: IlanaError | null;
|
|
20
|
+
}
|
|
21
|
+
export interface UseQueryOptions {
|
|
22
|
+
/** Called when query succeeds */
|
|
23
|
+
onSuccess?: (data: QueryOutput) => void;
|
|
24
|
+
/** Called when query fails */
|
|
25
|
+
onError?: (error: IlanaError) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface UseQueryResult extends QueryState {
|
|
28
|
+
/** Execute a query */
|
|
29
|
+
query: (input: string) => Promise<QueryOutput | null>;
|
|
30
|
+
/** Reset state */
|
|
31
|
+
reset: () => void;
|
|
32
|
+
}
|
|
33
|
+
export type { QueryInput, QueryOutput, IlanaError };
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,qBAAqB;IACrB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,sBAAsB;IACtB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACtD,kBAAkB;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ilana-ai/react",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Ilana AI React SDK - React hooks and components for the Ilana Runtime API",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"check-types": "tsc --noEmit",
|
|
21
|
+
"clean": "rm -rf dist"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@ilana-ai/sdk": "workspace:*"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/react": "^18.3.0",
|
|
28
|
+
"typescript": "5.9.2"
|
|
29
|
+
},
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"react": "^18.0.0 || ^19.0.0"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"ilana",
|
|
35
|
+
"ai",
|
|
36
|
+
"sdk",
|
|
37
|
+
"react",
|
|
38
|
+
"hooks",
|
|
39
|
+
"governance"
|
|
40
|
+
],
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
}
|
|
45
|
+
}
|