@copilotkit/react-core 1.54.1 → 1.55.0-next.8
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/CHANGELOG.md +127 -116
- package/dist/copilotkit-B3Mb1yVE.cjs +7975 -0
- package/dist/copilotkit-B3Mb1yVE.cjs.map +1 -0
- package/dist/copilotkit-DBzgOMby.d.cts +2182 -0
- package/dist/copilotkit-DBzgOMby.d.cts.map +1 -0
- package/dist/copilotkit-DNYSFuz5.mjs +7562 -0
- package/dist/copilotkit-DNYSFuz5.mjs.map +1 -0
- package/dist/copilotkit-Dy5w3qEV.d.mts +2182 -0
- package/dist/copilotkit-Dy5w3qEV.d.mts.map +1 -0
- package/dist/index.cjs +27 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -5
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +1941 -35
- package/dist/index.umd.js.map +1 -1
- package/dist/v2/index.cjs +77 -7
- package/dist/v2/index.css +1 -2
- package/dist/v2/index.d.cts +6 -4
- package/dist/v2/index.d.mts +6 -4
- package/dist/v2/index.mjs +7 -4
- package/dist/v2/index.umd.js +5725 -24
- package/dist/v2/index.umd.js.map +1 -1
- package/package.json +37 -9
- package/scripts/scope-preflight.mjs +101 -0
- package/src/components/CopilotListeners.tsx +2 -6
- package/src/components/copilot-provider/copilot-messages.tsx +1 -1
- package/src/components/copilot-provider/copilotkit-props.tsx +1 -1
- package/src/components/copilot-provider/copilotkit.tsx +4 -4
- package/src/context/copilot-messages-context.tsx +1 -1
- package/src/hooks/__tests__/use-coagent-config.test.ts +2 -2
- package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +2 -2
- package/src/hooks/__tests__/use-copilot-chat-internal-connect.test.tsx +3 -7
- package/src/hooks/__tests__/use-frontend-tool-available.test.tsx +1 -1
- package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +4 -4
- package/src/hooks/use-agent-nodename.ts +1 -1
- package/src/hooks/use-coagent-state-render-bridge.tsx +1 -4
- package/src/hooks/use-coagent.ts +1 -1
- package/src/hooks/use-configure-chat-suggestions.tsx +2 -2
- package/src/hooks/use-copilot-chat-suggestions.tsx +2 -2
- package/src/hooks/use-copilot-chat_internal.ts +2 -2
- package/src/hooks/use-copilot-readable.ts +1 -1
- package/src/hooks/use-frontend-tool.ts +2 -2
- package/src/hooks/use-human-in-the-loop.ts +2 -2
- package/src/hooks/use-langgraph-interrupt.ts +2 -5
- package/src/hooks/use-lazy-tool-renderer.tsx +1 -1
- package/src/hooks/use-render-tool-call.ts +1 -1
- package/src/lib/copilot-task.ts +1 -1
- package/src/setupTests.ts +18 -14
- package/src/v2/__tests__/A2UIMessageRenderer.test.tsx +176 -0
- package/src/v2/__tests__/globalSetup.ts +14 -0
- package/src/v2/__tests__/setup.ts +93 -0
- package/src/v2/__tests__/utils/test-helpers.tsx +470 -0
- package/src/v2/a2ui/A2UIMessageRenderer.tsx +206 -0
- package/src/v2/components/CopilotKitInspector.tsx +50 -0
- package/src/v2/components/MCPAppsActivityRenderer.tsx +785 -0
- package/src/v2/components/WildcardToolCallRender.tsx +86 -0
- package/src/v2/components/__tests__/license-warning-banner.test.tsx +46 -0
- package/src/v2/components/chat/CopilotChat.tsx +431 -0
- package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +375 -0
- package/src/v2/components/chat/CopilotChatAudioRecorder.tsx +350 -0
- package/src/v2/components/chat/CopilotChatInput.tsx +1302 -0
- package/src/v2/components/chat/CopilotChatMessageView.tsx +556 -0
- package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +252 -0
- package/src/v2/components/chat/CopilotChatSuggestionPill.tsx +59 -0
- package/src/v2/components/chat/CopilotChatSuggestionView.tsx +133 -0
- package/src/v2/components/chat/CopilotChatToggleButton.tsx +171 -0
- package/src/v2/components/chat/CopilotChatToolCallsView.tsx +40 -0
- package/src/v2/components/chat/CopilotChatUserMessage.tsx +388 -0
- package/src/v2/components/chat/CopilotChatView.tsx +598 -0
- package/src/v2/components/chat/CopilotModalHeader.tsx +129 -0
- package/src/v2/components/chat/CopilotPopup.tsx +81 -0
- package/src/v2/components/chat/CopilotPopupView.tsx +317 -0
- package/src/v2/components/chat/CopilotSidebar.tsx +76 -0
- package/src/v2/components/chat/CopilotSidebarView.tsx +255 -0
- package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +1113 -0
- package/src/v2/components/chat/__tests__/CopilotChat.onError.test.tsx +73 -0
- package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.tsx +432 -0
- package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.tsx +150 -0
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.tsx +624 -0
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +702 -0
- package/src/v2/components/chat/__tests__/CopilotChatCssClasses.test.tsx +107 -0
- package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.tsx +929 -0
- package/src/v2/components/chat/__tests__/CopilotChatInput.test.tsx +986 -0
- package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.tsx +1004 -0
- package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.tsx +169 -0
- package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.tsx +530 -0
- package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.tsx +782 -0
- package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.tsx +2413 -0
- package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.tsx +621 -0
- package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.tsx +853 -0
- package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.tsx +1050 -0
- package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.tsx +484 -0
- package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.tsx +612 -0
- package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.tsx +502 -0
- package/src/v2/components/chat/__tests__/MCPAppsActivityRenderer.e2e.test.tsx +1011 -0
- package/src/v2/components/chat/__tests__/setup.ts +1 -0
- package/src/v2/components/chat/index.ts +79 -0
- package/src/v2/components/index.ts +7 -0
- package/src/v2/components/license-warning-banner.tsx +198 -0
- package/src/v2/components/ui/button.tsx +123 -0
- package/src/v2/components/ui/dropdown-menu.tsx +258 -0
- package/src/v2/components/ui/tooltip.tsx +60 -0
- package/src/v2/hooks/__tests__/standard-schema-types.test.tsx +152 -0
- package/src/v2/hooks/__tests__/standard-schema.test.tsx +282 -0
- package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.tsx +132 -0
- package/src/v2/hooks/__tests__/use-agent-context.test.tsx +401 -0
- package/src/v2/hooks/__tests__/use-agent-error-state.test.tsx +44 -0
- package/src/v2/hooks/__tests__/use-agent-stability.test.tsx +205 -0
- package/src/v2/hooks/__tests__/use-agent.e2e.test.tsx +148 -0
- package/src/v2/hooks/__tests__/use-component.test.tsx +123 -0
- package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.tsx +696 -0
- package/src/v2/hooks/__tests__/use-default-render-tool.test.tsx +153 -0
- package/src/v2/hooks/__tests__/use-frontend-tool-available.test.tsx +167 -0
- package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.tsx +2129 -0
- package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.tsx +1261 -0
- package/src/v2/hooks/__tests__/use-interrupt.test.tsx +397 -0
- package/src/v2/hooks/__tests__/use-katex-styles.test.tsx +56 -0
- package/src/v2/hooks/__tests__/use-keyboard-height.test.tsx +192 -0
- package/src/v2/hooks/__tests__/use-render-tool.test.tsx +259 -0
- package/src/v2/hooks/__tests__/use-suggestions.e2e.test.tsx +524 -0
- package/src/v2/hooks/__tests__/use-threads.test.tsx +433 -0
- package/src/v2/hooks/__tests__/zod-regression.test.tsx +311 -0
- package/src/v2/hooks/index.ts +18 -0
- package/src/v2/hooks/use-agent-context.tsx +45 -0
- package/src/v2/hooks/use-agent.tsx +155 -0
- package/src/v2/hooks/use-component.tsx +89 -0
- package/src/v2/hooks/use-configure-suggestions.tsx +187 -0
- package/src/v2/hooks/use-default-render-tool.tsx +254 -0
- package/src/v2/hooks/use-frontend-tool.tsx +43 -0
- package/src/v2/hooks/use-human-in-the-loop.tsx +81 -0
- package/src/v2/hooks/use-interrupt.tsx +305 -0
- package/src/v2/hooks/use-keyboard-height.tsx +67 -0
- package/src/v2/hooks/use-render-activity-message.tsx +73 -0
- package/src/v2/hooks/use-render-custom-messages.tsx +93 -0
- package/src/v2/hooks/use-render-tool-call.tsx +175 -0
- package/src/v2/hooks/use-render-tool.tsx +181 -0
- package/src/v2/hooks/use-suggestions.tsx +91 -0
- package/src/v2/hooks/use-threads.tsx +256 -0
- package/src/v2/hooks/useKatexStyles.ts +27 -0
- package/src/v2/index.css +1 -1
- package/src/v2/index.ts +18 -2
- package/src/v2/lib/__tests__/completePartialMarkdown.test.ts +495 -0
- package/src/v2/lib/__tests__/renderSlot.test.tsx +588 -0
- package/src/v2/lib/react-core.ts +156 -0
- package/src/v2/lib/slots.tsx +143 -0
- package/src/v2/lib/transcription-client.ts +184 -0
- package/src/v2/lib/utils.ts +8 -0
- package/src/v2/providers/CopilotChatConfigurationProvider.tsx +162 -0
- package/src/v2/providers/CopilotKitProvider.tsx +600 -0
- package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.tsx +546 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.license.test.tsx +101 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.tsx +69 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.tsx +881 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx +740 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.test.tsx +642 -0
- package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.tsx +294 -0
- package/src/v2/providers/index.ts +14 -0
- package/src/v2/styles/globals.css +230 -0
- package/src/v2/types/__tests__/defineToolCallRenderer.test.tsx +525 -0
- package/src/v2/types/defineToolCallRenderer.ts +65 -0
- package/src/v2/types/frontend-tool.ts +8 -0
- package/src/v2/types/human-in-the-loop.ts +33 -0
- package/src/v2/types/index.ts +7 -0
- package/src/v2/types/interrupt.ts +15 -0
- package/src/v2/types/react-activity-message-renderer.ts +27 -0
- package/src/v2/types/react-custom-message-renderer.ts +17 -0
- package/src/v2/types/react-tool-call-renderer.ts +32 -0
- package/tsdown.config.ts +34 -10
- package/vitest.config.mjs +4 -3
- package/LICENSE +0 -21
- package/dist/copilotkit-BRPQ2sqS.d.cts +0 -670
- package/dist/copilotkit-BRPQ2sqS.d.cts.map +0 -1
- package/dist/copilotkit-C94ayZbs.cjs +0 -2161
- package/dist/copilotkit-C94ayZbs.cjs.map +0 -1
- package/dist/copilotkit-CwZMFmSK.d.mts +0 -670
- package/dist/copilotkit-CwZMFmSK.d.mts.map +0 -1
- package/dist/copilotkit-Yh_Ld_FX.mjs +0 -2031
- package/dist/copilotkit-Yh_Ld_FX.mjs.map +0 -1
- package/dist/v2/index.css.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Message } from "@ag-ui/core";
|
|
2
|
+
|
|
3
|
+
export type ReactCustomMessageRendererPosition = "before" | "after";
|
|
4
|
+
|
|
5
|
+
export interface ReactCustomMessageRenderer {
|
|
6
|
+
agentId?: string;
|
|
7
|
+
render: React.ComponentType<{
|
|
8
|
+
message: Message;
|
|
9
|
+
position: ReactCustomMessageRendererPosition;
|
|
10
|
+
runId: string;
|
|
11
|
+
messageIndex: number;
|
|
12
|
+
messageIndexInRun: number;
|
|
13
|
+
numberOfMessagesInRun: number;
|
|
14
|
+
agentId: string;
|
|
15
|
+
stateSnapshot: any;
|
|
16
|
+
}> | null;
|
|
17
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from "@copilotkit/shared";
|
|
2
|
+
import { ToolCallStatus } from "@copilotkit/core";
|
|
3
|
+
|
|
4
|
+
export interface ReactToolCallRenderer<T = unknown> {
|
|
5
|
+
name: string;
|
|
6
|
+
args: StandardSchemaV1<any, T>;
|
|
7
|
+
/**
|
|
8
|
+
* Optional agent ID to constrain this tool renderer to a specific agent.
|
|
9
|
+
* If specified, this renderer will only be used for the specified agent.
|
|
10
|
+
*/
|
|
11
|
+
agentId?: string;
|
|
12
|
+
render: React.ComponentType<
|
|
13
|
+
| {
|
|
14
|
+
name: string;
|
|
15
|
+
args: Partial<T>;
|
|
16
|
+
status: ToolCallStatus.InProgress;
|
|
17
|
+
result: undefined;
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
name: string;
|
|
21
|
+
args: T;
|
|
22
|
+
status: ToolCallStatus.Executing;
|
|
23
|
+
result: undefined;
|
|
24
|
+
}
|
|
25
|
+
| {
|
|
26
|
+
name: string;
|
|
27
|
+
args: T;
|
|
28
|
+
status: ToolCallStatus.Complete;
|
|
29
|
+
result: string;
|
|
30
|
+
}
|
|
31
|
+
>;
|
|
32
|
+
}
|
package/tsdown.config.ts
CHANGED
|
@@ -11,8 +11,12 @@ export default defineConfig([
|
|
|
11
11
|
external: [
|
|
12
12
|
"react",
|
|
13
13
|
"react-dom",
|
|
14
|
-
"@
|
|
15
|
-
"@
|
|
14
|
+
"@copilotkit/core",
|
|
15
|
+
"@copilotkit/shared",
|
|
16
|
+
"@copilotkit/web-inspector",
|
|
17
|
+
"@copilotkit/a2ui-renderer",
|
|
18
|
+
"rxjs",
|
|
19
|
+
/\.css$/,
|
|
16
20
|
],
|
|
17
21
|
exports: {
|
|
18
22
|
customExports: (exports) => ({
|
|
@@ -31,12 +35,14 @@ export default defineConfig([
|
|
|
31
35
|
external: [
|
|
32
36
|
"react",
|
|
33
37
|
"react-dom",
|
|
38
|
+
"@copilotkit/core",
|
|
34
39
|
"@copilotkit/shared",
|
|
35
40
|
"@copilotkit/runtime-client-gql",
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
41
|
+
"@copilotkit/web-inspector",
|
|
42
|
+
"@copilotkit/a2ui-renderer",
|
|
38
43
|
"@ag-ui/client",
|
|
39
44
|
"zod",
|
|
45
|
+
/\.css$/,
|
|
40
46
|
],
|
|
41
47
|
codeSplitting: false,
|
|
42
48
|
outputOptions(options) {
|
|
@@ -45,10 +51,11 @@ export default defineConfig([
|
|
|
45
51
|
react: "React",
|
|
46
52
|
"react-dom": "ReactDOM",
|
|
47
53
|
"react/jsx-runtime": "ReactJsxRuntime",
|
|
54
|
+
"@copilotkit/core": "CopilotKitCore",
|
|
48
55
|
"@copilotkit/shared": "CopilotKitShared",
|
|
49
56
|
"@copilotkit/runtime-client-gql": "CopilotKitRuntimeClientGQL",
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
57
|
+
"@copilotkit/web-inspector": "CopilotKitWebInspector",
|
|
58
|
+
"@copilotkit/a2ui-renderer": "CopilotKitA2UIRenderer",
|
|
52
59
|
"@ag-ui/client": "AgUIClient",
|
|
53
60
|
"react-markdown": "ReactMarkdown",
|
|
54
61
|
zod: "Zod",
|
|
@@ -66,12 +73,15 @@ export default defineConfig([
|
|
|
66
73
|
external: [
|
|
67
74
|
"react",
|
|
68
75
|
"react-dom",
|
|
76
|
+
"@copilotkit/core",
|
|
69
77
|
"@copilotkit/shared",
|
|
70
78
|
"@copilotkit/runtime-client-gql",
|
|
71
|
-
"@
|
|
72
|
-
"@
|
|
79
|
+
"@copilotkit/web-inspector",
|
|
80
|
+
"@copilotkit/a2ui-renderer",
|
|
73
81
|
"@ag-ui/client",
|
|
82
|
+
"@ag-ui/core",
|
|
74
83
|
"zod",
|
|
84
|
+
/\.css$/,
|
|
75
85
|
],
|
|
76
86
|
codeSplitting: false,
|
|
77
87
|
outputOptions(options) {
|
|
@@ -80,13 +90,27 @@ export default defineConfig([
|
|
|
80
90
|
react: "React",
|
|
81
91
|
"react-dom": "ReactDOM",
|
|
82
92
|
"react/jsx-runtime": "ReactJsxRuntime",
|
|
93
|
+
"@copilotkit/core": "CopilotKitCore",
|
|
83
94
|
"@copilotkit/shared": "CopilotKitShared",
|
|
84
95
|
"@copilotkit/runtime-client-gql": "CopilotKitRuntimeClientGQL",
|
|
85
|
-
"@
|
|
86
|
-
"@
|
|
96
|
+
"@copilotkit/web-inspector": "CopilotKitWebInspector",
|
|
97
|
+
"@copilotkit/a2ui-renderer": "CopilotKitA2UIRenderer",
|
|
87
98
|
"@ag-ui/client": "AgUIClient",
|
|
99
|
+
"@ag-ui/core": "AgUICore",
|
|
88
100
|
"react-markdown": "ReactMarkdown",
|
|
89
101
|
zod: "Zod",
|
|
102
|
+
"tailwind-merge": "tailwindMerge",
|
|
103
|
+
"lucide-react": "lucideReact",
|
|
104
|
+
"@radix-ui/react-slot": "RadixReactSlot",
|
|
105
|
+
"class-variance-authority": "classVarianceAuthority",
|
|
106
|
+
clsx: "clsx",
|
|
107
|
+
"@radix-ui/react-tooltip": "RadixReactTooltip",
|
|
108
|
+
"@radix-ui/react-dropdown-menu": "RadixReactDropdownMenu",
|
|
109
|
+
"katex/dist/katex.min.css": "katexCss",
|
|
110
|
+
streamdown: "streamdown",
|
|
111
|
+
"@lit-labs/react": "LitLabsReact",
|
|
112
|
+
"use-stick-to-bottom": "useStickToBottom",
|
|
113
|
+
"ts-deepmerge": "tsDeepmerge",
|
|
90
114
|
};
|
|
91
115
|
return options;
|
|
92
116
|
},
|
package/vitest.config.mjs
CHANGED
|
@@ -8,12 +8,13 @@ export default defineConfig({
|
|
|
8
8
|
"src/**/__tests__/**/*.{test,spec}.{ts,tsx}",
|
|
9
9
|
"src/**/*.{test,spec}.{ts,tsx}",
|
|
10
10
|
],
|
|
11
|
-
|
|
11
|
+
globalSetup: ["./src/v2/__tests__/globalSetup.ts"],
|
|
12
|
+
setupFiles: ["./src/setupTests.ts", "./src/v2/__tests__/setup.ts"],
|
|
12
13
|
reporters: [["default", { summary: false }]],
|
|
13
14
|
silent: true,
|
|
14
15
|
server: {
|
|
15
16
|
deps: {
|
|
16
|
-
inline: ["react-markdown", "streamdown", "@
|
|
17
|
+
inline: ["react-markdown", "streamdown", "@copilotkit"],
|
|
17
18
|
},
|
|
18
19
|
},
|
|
19
20
|
css: {
|
|
@@ -24,7 +25,7 @@ export default defineConfig({
|
|
|
24
25
|
},
|
|
25
26
|
resolve: {
|
|
26
27
|
alias: {
|
|
27
|
-
"@": new URL("./src", import.meta.url).pathname,
|
|
28
|
+
"@": new URL("./src/v2", import.meta.url).pathname,
|
|
28
29
|
},
|
|
29
30
|
},
|
|
30
31
|
});
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) Atai Barkai
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|