webagents 0.1.0__py3-none-any.whl

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 (94) hide show
  1. webagents/__init__.py +18 -0
  2. webagents/__main__.py +55 -0
  3. webagents/agents/__init__.py +13 -0
  4. webagents/agents/core/__init__.py +19 -0
  5. webagents/agents/core/base_agent.py +1834 -0
  6. webagents/agents/core/handoffs.py +293 -0
  7. webagents/agents/handoffs/__init__.py +0 -0
  8. webagents/agents/interfaces/__init__.py +0 -0
  9. webagents/agents/lifecycle/__init__.py +0 -0
  10. webagents/agents/skills/__init__.py +109 -0
  11. webagents/agents/skills/base.py +136 -0
  12. webagents/agents/skills/core/__init__.py +8 -0
  13. webagents/agents/skills/core/guardrails/__init__.py +0 -0
  14. webagents/agents/skills/core/llm/__init__.py +0 -0
  15. webagents/agents/skills/core/llm/anthropic/__init__.py +1 -0
  16. webagents/agents/skills/core/llm/litellm/__init__.py +10 -0
  17. webagents/agents/skills/core/llm/litellm/skill.py +538 -0
  18. webagents/agents/skills/core/llm/openai/__init__.py +1 -0
  19. webagents/agents/skills/core/llm/xai/__init__.py +1 -0
  20. webagents/agents/skills/core/mcp/README.md +375 -0
  21. webagents/agents/skills/core/mcp/__init__.py +15 -0
  22. webagents/agents/skills/core/mcp/skill.py +731 -0
  23. webagents/agents/skills/core/memory/__init__.py +11 -0
  24. webagents/agents/skills/core/memory/long_term_memory/__init__.py +10 -0
  25. webagents/agents/skills/core/memory/long_term_memory/memory_skill.py +639 -0
  26. webagents/agents/skills/core/memory/short_term_memory/__init__.py +9 -0
  27. webagents/agents/skills/core/memory/short_term_memory/skill.py +341 -0
  28. webagents/agents/skills/core/memory/vector_memory/skill.py +447 -0
  29. webagents/agents/skills/core/planning/__init__.py +9 -0
  30. webagents/agents/skills/core/planning/planner.py +343 -0
  31. webagents/agents/skills/ecosystem/__init__.py +0 -0
  32. webagents/agents/skills/ecosystem/crewai/__init__.py +1 -0
  33. webagents/agents/skills/ecosystem/database/__init__.py +1 -0
  34. webagents/agents/skills/ecosystem/filesystem/__init__.py +0 -0
  35. webagents/agents/skills/ecosystem/google/__init__.py +0 -0
  36. webagents/agents/skills/ecosystem/google/calendar/__init__.py +6 -0
  37. webagents/agents/skills/ecosystem/google/calendar/skill.py +306 -0
  38. webagents/agents/skills/ecosystem/n8n/__init__.py +0 -0
  39. webagents/agents/skills/ecosystem/openai_agents/__init__.py +0 -0
  40. webagents/agents/skills/ecosystem/web/__init__.py +0 -0
  41. webagents/agents/skills/ecosystem/zapier/__init__.py +0 -0
  42. webagents/agents/skills/robutler/__init__.py +11 -0
  43. webagents/agents/skills/robutler/auth/README.md +63 -0
  44. webagents/agents/skills/robutler/auth/__init__.py +17 -0
  45. webagents/agents/skills/robutler/auth/skill.py +354 -0
  46. webagents/agents/skills/robutler/crm/__init__.py +18 -0
  47. webagents/agents/skills/robutler/crm/skill.py +368 -0
  48. webagents/agents/skills/robutler/discovery/README.md +281 -0
  49. webagents/agents/skills/robutler/discovery/__init__.py +16 -0
  50. webagents/agents/skills/robutler/discovery/skill.py +230 -0
  51. webagents/agents/skills/robutler/kv/__init__.py +6 -0
  52. webagents/agents/skills/robutler/kv/skill.py +80 -0
  53. webagents/agents/skills/robutler/message_history/__init__.py +9 -0
  54. webagents/agents/skills/robutler/message_history/skill.py +270 -0
  55. webagents/agents/skills/robutler/messages/__init__.py +0 -0
  56. webagents/agents/skills/robutler/nli/__init__.py +13 -0
  57. webagents/agents/skills/robutler/nli/skill.py +687 -0
  58. webagents/agents/skills/robutler/notifications/__init__.py +5 -0
  59. webagents/agents/skills/robutler/notifications/skill.py +141 -0
  60. webagents/agents/skills/robutler/payments/__init__.py +41 -0
  61. webagents/agents/skills/robutler/payments/exceptions.py +255 -0
  62. webagents/agents/skills/robutler/payments/skill.py +610 -0
  63. webagents/agents/skills/robutler/storage/__init__.py +10 -0
  64. webagents/agents/skills/robutler/storage/files/__init__.py +9 -0
  65. webagents/agents/skills/robutler/storage/files/skill.py +445 -0
  66. webagents/agents/skills/robutler/storage/json/__init__.py +9 -0
  67. webagents/agents/skills/robutler/storage/json/skill.py +336 -0
  68. webagents/agents/skills/robutler/storage/kv/skill.py +88 -0
  69. webagents/agents/skills/robutler/storage.py +389 -0
  70. webagents/agents/tools/__init__.py +0 -0
  71. webagents/agents/tools/decorators.py +426 -0
  72. webagents/agents/tracing/__init__.py +0 -0
  73. webagents/agents/workflows/__init__.py +0 -0
  74. webagents/scripts/__init__.py +0 -0
  75. webagents/server/__init__.py +28 -0
  76. webagents/server/context/__init__.py +0 -0
  77. webagents/server/context/context_vars.py +121 -0
  78. webagents/server/core/__init__.py +0 -0
  79. webagents/server/core/app.py +843 -0
  80. webagents/server/core/middleware.py +69 -0
  81. webagents/server/core/models.py +98 -0
  82. webagents/server/core/monitoring.py +59 -0
  83. webagents/server/endpoints/__init__.py +0 -0
  84. webagents/server/interfaces/__init__.py +0 -0
  85. webagents/server/middleware.py +330 -0
  86. webagents/server/models.py +92 -0
  87. webagents/server/monitoring.py +659 -0
  88. webagents/utils/__init__.py +0 -0
  89. webagents/utils/logging.py +359 -0
  90. webagents-0.1.0.dist-info/METADATA +230 -0
  91. webagents-0.1.0.dist-info/RECORD +94 -0
  92. webagents-0.1.0.dist-info/WHEEL +4 -0
  93. webagents-0.1.0.dist-info/entry_points.txt +2 -0
  94. webagents-0.1.0.dist-info/licenses/LICENSE +20 -0
@@ -0,0 +1,94 @@
1
+ webagents/__init__.py,sha256=N4dAwBpmq88YlPYFlBM2yQ0V_B7_uLxzhLzwGDb6Dew,374
2
+ webagents/__main__.py,sha256=5e1gYVYHzbADPIMYsoZRyBg-gRtdvFi8ykBsZYXFrqU,1346
3
+ webagents/agents/__init__.py,sha256=xh0Q3JyTN71ByorxVz_o_4lSrmVicA6LxNsuA7aF7W8,245
4
+ webagents/agents/core/__init__.py,sha256=WL5kMK1NuAWfKLTJQ0le68k4tRTOrOcf485bKRHBPiw,542
5
+ webagents/agents/core/base_agent.py,sha256=0DgHqdey-tqmv0JTHMzICBdzVuensUQkMSL23sx0Gog,93823
6
+ webagents/agents/core/handoffs.py,sha256=vfojIHoy_IKHU5sxs2PY8hZFyBLlYdlujQFXnqzvK9c,11076
7
+ webagents/agents/handoffs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ webagents/agents/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ webagents/agents/lifecycle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ webagents/agents/skills/__init__.py,sha256=qGawdVNp1AtF09-vAVR2s77SwQCTnZIaIGskDv5e81g,3211
11
+ webagents/agents/skills/base.py,sha256=s_wdhmqDGVCSXJiahwuUdKWeXIpdPfe_e8NL67oKbsc,5099
12
+ webagents/agents/skills/core/__init__.py,sha256=xT_-sPnLbxTUqjvg0toVCqQyB6OP-An_vBprdv_t0xA,258
13
+ webagents/agents/skills/core/guardrails/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ webagents/agents/skills/core/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ webagents/agents/skills/core/llm/anthropic/__init__.py,sha256=NkitGyW7aAdDPKsIeZaU979us3yg84Hej1L_Ogtw-f8,68
16
+ webagents/agents/skills/core/llm/litellm/__init__.py,sha256=DaUZozXF_x7LWfH_Blrn7rpF7Y7k91VRnRKoh_2JbqI,272
17
+ webagents/agents/skills/core/llm/litellm/skill.py,sha256=tNQ61DmvpmfwB6fU0cJlzb0OicV6jB1wPJHUdiU80zc,22267
18
+ webagents/agents/skills/core/llm/openai/__init__.py,sha256=eHvy20Z-geoVAZu8MstRiPXsEXZLJcBq3GtSZSLeOXo,65
19
+ webagents/agents/skills/core/llm/xai/__init__.py,sha256=HPcn0Ki-Di0kIzV5bvb-Vt-8vGW-ufBmHI9ZBeIdlA8,62
20
+ webagents/agents/skills/core/mcp/README.md,sha256=niQJlntyF6WbaxsUuJVYHFYJ93nV6u4F_QQ_TJZIAP8,14950
21
+ webagents/agents/skills/core/mcp/__init__.py,sha256=0dBqPqObN8kREXP28fX-ANxxyf6NFol_n95TgxTYkjU,366
22
+ webagents/agents/skills/core/mcp/skill.py,sha256=CrsamhExnEwDJRlHT57PItTWSajWqM-uGLhJxoE_zqU,30254
23
+ webagents/agents/skills/core/memory/__init__.py,sha256=EH3YM_WQ9GZcgJnbxfB5UaKZj6VU3a9k8pD-GcLnExI,328
24
+ webagents/agents/skills/core/memory/long_term_memory/__init__.py,sha256=Bk4DChm7NDLizK0yS-NBWTA7FWSc_SSVYI80F_BJ6MU,258
25
+ webagents/agents/skills/core/memory/long_term_memory/memory_skill.py,sha256=Swc2eQUKRheH88J-AVoP7zj8pqMxYrXtSsAbILBHVdM,24069
26
+ webagents/agents/skills/core/memory/short_term_memory/__init__.py,sha256=TH5ijPbZau6oUTjgj5R1YqSw5x_kqWJhzJlaoGVeymc,217
27
+ webagents/agents/skills/core/memory/short_term_memory/skill.py,sha256=rif35KGClq6tC_Tf5Y0GDND_jEyGZc9GVtm8Mhugyog,12791
28
+ webagents/agents/skills/core/memory/vector_memory/skill.py,sha256=VJwwmlO1daPBeUD0YSumEX9Xeb2o525eL8ZT1i5l2Zo,20001
29
+ webagents/agents/skills/core/planning/__init__.py,sha256=VjFRykXTRe9F0oHukmCFcbDuXg_bQU8XIcI8VEA69Y4,223
30
+ webagents/agents/skills/core/planning/planner.py,sha256=EFBH9vrYcYaWgXSlC0c8nUP9eGj6b_RyZ4dHbNjFVXU,13900
31
+ webagents/agents/skills/ecosystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ webagents/agents/skills/ecosystem/crewai/__init__.py,sha256=MfHsOOPpXVUWcXyiip2_svHF8YxrJ60cH28TM8ef__Q,30
33
+ webagents/agents/skills/ecosystem/database/__init__.py,sha256=x2y6F1FCplEmLaUXKztNDtNg_o1Y61ttiH1EiSrqCJ0,32
34
+ webagents/agents/skills/ecosystem/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ webagents/agents/skills/ecosystem/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ webagents/agents/skills/ecosystem/google/calendar/__init__.py,sha256=s_e6EPc07c-iO06BUYaVyat1arGkNBLt29BKHubL6-0,77
37
+ webagents/agents/skills/ecosystem/google/calendar/skill.py,sha256=hWFICppmWbHvecRLNz8NJJyT1GiQj_oR-ioxDDzQ_ig,15623
38
+ webagents/agents/skills/ecosystem/n8n/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ webagents/agents/skills/ecosystem/openai_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ webagents/agents/skills/ecosystem/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ webagents/agents/skills/ecosystem/zapier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ webagents/agents/skills/robutler/__init__.py,sha256=r3pYQje2t1T6ooLa45JXPgVOnTJPDvtrFV3i1i-fDTA,166
43
+ webagents/agents/skills/robutler/storage.py,sha256=qUTeGUYoW46TshYlLKTORoUIRT3fmzoatNE4gCGB6hU,14690
44
+ webagents/agents/skills/robutler/auth/README.md,sha256=mRcuGF3ty3WyoMCwR0pxYnOWNOKyM7h5MW67-9Y3V4M,2556
45
+ webagents/agents/skills/robutler/auth/__init__.py,sha256=OFcHOoGHoPrfRw4xJfbBPIooZ9GAwTbdHFXzhMH8ams,452
46
+ webagents/agents/skills/robutler/auth/skill.py,sha256=_LsWWmpiqZKWQ3G_KORAl-kjsw4GR4oYvhQ-TBWccWQ,14831
47
+ webagents/agents/skills/robutler/crm/__init__.py,sha256=rd43zSRWB14p-oj-Apj83PiwhIwXip1jWTikFdhcf-Y,337
48
+ webagents/agents/skills/robutler/crm/skill.py,sha256=9NmyZxmMvv5L8Fo4BVgTSkViQGGhXiJu--GbueEEZ0Q,12953
49
+ webagents/agents/skills/robutler/discovery/README.md,sha256=WNP7Rd1Gt_SOiEMi29JemcVRNWKlO8rqKxh_QpCr9u8,9191
50
+ webagents/agents/skills/robutler/discovery/__init__.py,sha256=VJYay8yjA1d42HVJDD1GjoZBZD5bEkQovy0jz3GZHbM,319
51
+ webagents/agents/skills/robutler/discovery/skill.py,sha256=MS3vTKoy8_MxilmkFWUT6LyQBuxtxKCZWeoWkZdDjvU,9321
52
+ webagents/agents/skills/robutler/kv/__init__.py,sha256=sbaE6gr_OksCWIhJE0kFMpFErAHUnW_7coW8HiKePM8,53
53
+ webagents/agents/skills/robutler/kv/skill.py,sha256=ftZulx4gQD9lQVstCTj7ZjsWML2XcZ6PU-2lSGpePHU,3364
54
+ webagents/agents/skills/robutler/message_history/__init__.py,sha256=15EdlGC6jbcj5ba_kr9U93B1x4U_wG4VeWkY5WW36ZI,215
55
+ webagents/agents/skills/robutler/message_history/skill.py,sha256=RlDY9JGVGChhdy1dtdKU8-REj8WeWS8Ql6BOBX0c6-0,11178
56
+ webagents/agents/skills/robutler/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ webagents/agents/skills/robutler/nli/__init__.py,sha256=MrwX21Q5sRlaShckZ56Xt4Xi655wPOdBnJEPZ9ZLm3Q,310
58
+ webagents/agents/skills/robutler/nli/skill.py,sha256=AxagO3clC1PEb3kKopHq0-sGe7MKlYa8_w-lxZqW8bQ,30604
59
+ webagents/agents/skills/robutler/notifications/__init__.py,sha256=N5ZWC0YkDRpKsIlazlVdYLBDMvhFg3s1ZIOzpi75EJg,74
60
+ webagents/agents/skills/robutler/notifications/skill.py,sha256=uJpAoCWh0XR475tPhETEePhu0RzvDSxz9cDH2SC7-qQ,5576
61
+ webagents/agents/skills/robutler/payments/__init__.py,sha256=cPe_qLG0nHRxfd5-stleNIFpGktH9_nvpIbjdDJTRCk,1112
62
+ webagents/agents/skills/robutler/payments/exceptions.py,sha256=92mP-sWdU3bgiPpqGsGN8Z0pWif7coBT5ifDhuEtgM0,9697
63
+ webagents/agents/skills/robutler/payments/skill.py,sha256=t3m1pysHBxGauA5xh9oPOGDxW4t8n3XsE2Pj2rL_1r8,27880
64
+ webagents/agents/skills/robutler/storage/__init__.py,sha256=A3FW8rqu5cMJatys-58Y9qyGFllN1t-XkBDOs_pzCHg,227
65
+ webagents/agents/skills/robutler/storage/files/__init__.py,sha256=fUM9VH98PQFgA9d32ok_cIGP4QnszLDm2cqWzXJkqGk,202
66
+ webagents/agents/skills/robutler/storage/files/skill.py,sha256=7HVZMJPfMNjES3AGJbcU-oaqh2ukdRMDFinZcmkFQ2o,19303
67
+ webagents/agents/skills/robutler/storage/json/__init__.py,sha256=Sg6k7ZY032a5SnWUPsW9t2TnK4WFtWsU8TjI3VDLNQo,189
68
+ webagents/agents/skills/robutler/storage/json/skill.py,sha256=9X_ZHZs6HkGLmBhniFyd6zlav3xchtIbF51A-7otcwg,12423
69
+ webagents/agents/skills/robutler/storage/kv/skill.py,sha256=npihRPzf8nDK30Kl9rkzi-tpDKUvgqPVfzX8PsjN8TQ,3347
70
+ webagents/agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ webagents/agents/tools/decorators.py,sha256=CjVqPPQif7jrAm8MWvvcSYfNA4hSeb0BpzJXL-ush-c,17163
72
+ webagents/agents/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ webagents/agents/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ webagents/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ webagents/server/__init__.py,sha256=GGDg1QqMjG0vLElBS1GggsWIyVe-wtMNyUi5FnNXTUI,609
76
+ webagents/server/middleware.py,sha256=kbneMSTKcdn9rlawMM0r3ngo6MAOG_iKXXRrpj7drbM,12068
77
+ webagents/server/models.py,sha256=Q7MsOa2aaZuwgrJZ2rXJ3p8Byv021DuKQ53AEw5twT4,4802
78
+ webagents/server/monitoring.py,sha256=IA98D_mFellWSA94ytgnMKOUEUSEOoXmSHD9mUB87z4,20461
79
+ webagents/server/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ webagents/server/context/context_vars.py,sha256=grtkAFK_rI9rWcxIpFoLwhOKfIgisfMr29_cGK7Zowo,3615
81
+ webagents/server/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ webagents/server/core/app.py,sha256=TuXAAYosbcTlTNUOA5wBo3dPCT02v9mHkFJJST5Qq9Q,38468
83
+ webagents/server/core/middleware.py,sha256=t3sBbLdjhtLx-MJiNRfmCS0Os63ghCpBsgeVH70KfnA,2228
84
+ webagents/server/core/models.py,sha256=kVIil3ocUvqmUOF-tH0P_GySrFciV2buFXQpprkQz8k,4675
85
+ webagents/server/core/monitoring.py,sha256=aYIj-Pv_5-KWlSOMfQR3nnaROGE04W9tZ1osQhf9sAA,1525
86
+ webagents/server/endpoints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ webagents/server/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ webagents/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ webagents/utils/logging.py,sha256=SOfNh9FDjrqFI8SoTBe-Hqp7nzagyQU9LDWGZt9GpQ8,14079
90
+ webagents-0.1.0.dist-info/METADATA,sha256=rR5Vl_TMsMK1t0Ib056YchyKUoPZ37W6Z6sRcBepAEo,9091
91
+ webagents-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
92
+ webagents-0.1.0.dist-info/entry_points.txt,sha256=bITAYBK8-H8EQUrDctEeEKuer4jAp3lfxKfvH5TT1eM,54
93
+ webagents-0.1.0.dist-info/licenses/LICENSE,sha256=q_-MstZzVvShVsmUTYc9G-PWmUM2j28kHhPrRCxu92w,1064
94
+ webagents-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ webagents = webagents.__main__:main
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Robutler
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 all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.