hyperpocket 0.4.4__py3-none-any.whl → 0.5.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 (34) hide show
  1. hyperpocket/auth/kraken/README.md +8 -0
  2. hyperpocket/auth/kraken/context.py +14 -0
  3. hyperpocket/auth/kraken/keypair_context.py +17 -0
  4. hyperpocket/auth/kraken/keypair_handler.py +97 -0
  5. hyperpocket/auth/kraken/keypair_schema.py +10 -0
  6. hyperpocket/auth/provider.py +1 -0
  7. hyperpocket/auth/valyu/token_handler.py +1 -2
  8. hyperpocket/builtin.py +3 -3
  9. hyperpocket/cli/__main__.py +0 -2
  10. hyperpocket/config/logger.py +2 -3
  11. hyperpocket/futures/futurestore.py +7 -2
  12. hyperpocket/pocket_auth.py +10 -8
  13. hyperpocket/pocket_main.py +251 -100
  14. hyperpocket/server/auth/kraken.py +58 -0
  15. hyperpocket/server/server.py +70 -239
  16. hyperpocket/session/in_memory.py +20 -26
  17. hyperpocket/tool/__init__.py +1 -2
  18. hyperpocket/tool/dock/dock.py +6 -25
  19. hyperpocket/tool/function/tool.py +1 -1
  20. hyperpocket/tool/tool.py +6 -35
  21. hyperpocket/tool_like.py +2 -3
  22. hyperpocket/util/git_parser.py +63 -0
  23. hyperpocket/util/json_schema_to_model.py +2 -2
  24. hyperpocket/util/short_hashing_str.py +5 -0
  25. {hyperpocket-0.4.4.dist-info → hyperpocket-0.5.0.dist-info}/METADATA +5 -5
  26. {hyperpocket-0.4.4.dist-info → hyperpocket-0.5.0.dist-info}/RECORD +29 -26
  27. hyperpocket/pocket_core.py +0 -283
  28. hyperpocket/repository/__init__.py +0 -4
  29. hyperpocket/repository/repository.py +0 -8
  30. hyperpocket/repository/tool_reference.py +0 -28
  31. hyperpocket/util/generate_slug.py +0 -4
  32. /hyperpocket/{tool/tests → auth/kraken}/__init__.py +0 -0
  33. {hyperpocket-0.4.4.dist-info → hyperpocket-0.5.0.dist-info}/WHEEL +0 -0
  34. {hyperpocket-0.4.4.dist-info → hyperpocket-0.5.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,5 @@
1
+ import hashlib
2
+
3
+
4
+ def short_hashing_str(text, length=10):
5
+ return hashlib.sha256(text.encode()).hexdigest()[:length]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperpocket
3
- Version: 0.4.4
3
+ Version: 0.5.0
4
4
  Summary: Building AI agent with hyperpocket tool in a flash
5
5
  Project-URL: Homepage, https://vessl-ai.github.io/hyperpocket
6
6
  Project-URL: Repository, https://github.com/vessl-ai/hyperpocket
@@ -103,7 +103,7 @@ from hyperpocket_langchain import PocketLangchain
103
103
  if __name__ == '__main__':
104
104
  pocket = PocketLangchain(
105
105
  tools=[
106
- "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
106
+ "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
107
107
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
108
108
  ],
109
109
  )
@@ -176,7 +176,7 @@ from hyperpocket_langchain import PocketLangchain
176
176
 
177
177
  pklc = PocketLangchain(
178
178
  tools=[
179
- "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
179
+ "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
180
180
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
181
181
  ]
182
182
  )
@@ -235,7 +235,7 @@ from hyperpocket_langgraph import PocketLanggraph
235
235
 
236
236
  pklg = PocketLanggraph(
237
237
  tools=[
238
- "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
238
+ "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
239
239
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
240
240
  ],
241
241
  )
@@ -272,7 +272,7 @@ from hyperpocket_llamaindex import PocketLlamaindex
272
272
  llm = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
273
273
  pocket = PocketLlamaindex(
274
274
  tools=[
275
- "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
275
+ "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
276
276
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
277
277
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/linear/get-issues",
278
278
  "https://github.com/vessl-ai/hyperpocket/tree/main/tools/google/get-calendar-events",
@@ -1,16 +1,15 @@
1
1
  hyperpocket/__init__.py,sha256=VVLbApRTiULqEVQp6lCNOcuXKx9V62O_7C9VNKBQ0G0,137
2
- hyperpocket/builtin.py,sha256=SOrVrNjoKadDMksfB1rt6pKreJFzHG2YGBsLGVsg72c,2385
2
+ hyperpocket/builtin.py,sha256=w7OLxf5RCKVpLma9HieSdw6Uky5701ae6g31VPvFoZk,2439
3
3
  hyperpocket/constants.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- hyperpocket/pocket_auth.py,sha256=VzpGpHOOQIiEgrk1sYg5DYa5WYV6gRQmFlm8Kb2C9V0,17611
5
- hyperpocket/pocket_core.py,sha256=WkY7Dp7KcJTORAFNuxDbZ5PDgicRANUtKkpZmI5gg6s,10021
6
- hyperpocket/pocket_main.py,sha256=XH0wlT1AafZDItgbYBkoo0dSb0z6Tcvl8AC9puXe8mg,10215
4
+ hyperpocket/pocket_auth.py,sha256=eRRTzJh3et65EDJnQHB_Kpmco4dgCR2KL8f-FnbuGX0,17819
5
+ hyperpocket/pocket_main.py,sha256=pCbJjT7r-kzYIxzh24jKcGwh-SOnbB9ID8kwDpB1HG4,16467
7
6
  hyperpocket/prompts.py,sha256=N1bCzCLZvGUVhH1Vn_cgeBPsdY3MdIU7ZGqVgexoj5E,472
8
- hyperpocket/tool_like.py,sha256=lUk9kUHPUmugqHCLbnWflKtZbCwtgcoYWtqGqUQtV38,187
7
+ hyperpocket/tool_like.py,sha256=Foa-iWTnVb54JEq20Becadbz-TSbYkZk6TxexSzaaRM,116
9
8
  hyperpocket/auth/README.md,sha256=zn4QqnFZCA_4X3x8Wb6lE3OP5otYxpByZaCiUkBvaNs,11562
10
9
  hyperpocket/auth/__init__.py,sha256=pO8M6SAuq0EPqi848_Iy650wqaLekx98e3RRnEAM_r0,607
11
10
  hyperpocket/auth/context.py,sha256=m-j2gDYUKBMsiakLHsu9thhM4dYyFiXP0Wp0S_iC0bU,1303
12
11
  hyperpocket/auth/handler.py,sha256=5cusl9ANEyG3gORVFjqh709txC0alw6eKtxgV6wjf6k,6683
13
- hyperpocket/auth/provider.py,sha256=ZKgDYiwI82cfKTcSvlLiYWV1DFwJJEldRj6ZACNmoeQ,2081
12
+ hyperpocket/auth/provider.py,sha256=qZGenhTsL8vqd9zmUMM52TVlmdNNOTsmLmCPmZshUNg,2103
14
13
  hyperpocket/auth/schema.py,sha256=pl4oRTNj8PdqQg6UVPWf8ei2uYQ4DtOmmD58cVFMYQw,537
15
14
  hyperpocket/auth/activeloop/README.md,sha256=xp8n0itbY9VNt8XEvCAE4Ealvj4uf_f1uSZyWG4Q5FE,172
16
15
  hyperpocket/auth/activeloop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -240,6 +239,12 @@ hyperpocket/auth/klaviyo/context.py,sha256=JLALnthzihgMZkAQhKpzf8X07iHt0Iz2lEYsD
240
239
  hyperpocket/auth/klaviyo/token_context.py,sha256=OwckVoIbJaNH65WmIgi7C03TCHR0eCInA20RYmNX9Vc,455
241
240
  hyperpocket/auth/klaviyo/token_handler.py,sha256=0IiLFRhMhAm2LAMSGhkOoIoSiBbx0b776YTfB9VlJpw,2938
242
241
  hyperpocket/auth/klaviyo/token_schema.py,sha256=-x9e36JdNkMmgjRkXzzmpDBdeLsA_yA1wS2svhqNqlI,276
242
+ hyperpocket/auth/kraken/README.md,sha256=QeSzmWSS86cXG1CmhAnGWLaVAeAo4ZpMWYwJ8OlCOMg,148
243
+ hyperpocket/auth/kraken/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
+ hyperpocket/auth/kraken/context.py,sha256=LNa6UjosOg880PmBinubg8pHqjQWFqJ5sKBklZrhD38,455
245
+ hyperpocket/auth/kraken/keypair_context.py,sha256=KyyJOlCE2wo3EIFFz5DGmHCPNb0tBOICvma9KrPyJHA,624
246
+ hyperpocket/auth/kraken/keypair_handler.py,sha256=JdYLFV-S9IcCHQuKa2xYLh7oYAmxO29GQrcUvvmik_c,3123
247
+ hyperpocket/auth/kraken/keypair_schema.py,sha256=xpZqmIg743Gf0OOfq9KNOg6Y-q5Yv67xOf9uBL7xq-0,242
243
248
  hyperpocket/auth/lever/README.md,sha256=00OuO_5cJ7RwZ4ZuWzYonSaQwnO4BYYycH3IvbBNgPM,166
244
249
  hyperpocket/auth/lever/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
250
  hyperpocket/auth/lever/context.py,sha256=rNqjJyM4AToXEKT9DDKMdux2xk5vhwy6B6Fg84YCPIg,425
@@ -426,7 +431,7 @@ hyperpocket/auth/valyu/README.md,sha256=QeSzmWSS86cXG1CmhAnGWLaVAeAo4ZpMWYwJ8OlC
426
431
  hyperpocket/auth/valyu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
427
432
  hyperpocket/auth/valyu/context.py,sha256=He1n_Yo9CNOoOG_2ESKEJi8F5OphLbMruxK20zgUDHA,427
428
433
  hyperpocket/auth/valyu/token_context.py,sha256=0FKxYQUu4Zvu2gywcNdvRIEto4k_Iff9qQt_hE3-gd4,437
429
- hyperpocket/auth/valyu/token_handler.py,sha256=s5KkRezfEEXjVa7qtAz8OvGh8-iVTWxy980zYeyNHkU,2933
434
+ hyperpocket/auth/valyu/token_handler.py,sha256=iDLEkB3dG5Ag8jm7xP7bkLL3wElfU6Xdyxjwr7P7YL8,2864
430
435
  hyperpocket/auth/valyu/token_schema.py,sha256=1yaf4fSREnTpvwmzKDrVh1oBxrwPSRnRPbKPOub-iPM,207
431
436
  hyperpocket/auth/wandb/README.md,sha256=Zsohbn6yELf8pfhBddDRm_iqs4NgQBZZhnC00yP5mVE,252
432
437
  hyperpocket/auth/wandb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -463,7 +468,7 @@ hyperpocket/auth/zoom/oauth2_context.py,sha256=f0vj1zeRzTnT-4cwe8SeEn2xz03NBy9W_
463
468
  hyperpocket/auth/zoom/oauth2_handler.py,sha256=dMoZjuSRSBaoYLzYkjxc0KZxm9CALLm9aaEVydLBW-0,5111
464
469
  hyperpocket/auth/zoom/oauth2_schema.py,sha256=OlwlEdigiqFX3-XdVp0mhrK7ZKWxVw0v1qNtfx3wN9c,469
465
470
  hyperpocket/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
466
- hyperpocket/cli/__main__.py,sha256=f9qvOb33F5edNjP_eyshT1F8SjofV3bwLFl8lAru_u8,813
471
+ hyperpocket/cli/__main__.py,sha256=sVGU32c27NCaqysM4TsOf6D-Tj7a3mDhUmm7CRajg_g,753
467
472
  hyperpocket/cli/auth_oauth2.py,sha256=FTsaIrJY9U1uDEtZL456zOWQKfcqzOPg33ikFhFFjyA,4899
468
473
  hyperpocket/cli/auth_token.py,sha256=YV1AK70Q_hNsm_xwHP5LTaUWI-omssnX8214JyD3m_w,4875
469
474
  hyperpocket/cli/eject.py,sha256=utzeL4t02ML-EIgpPUiFjCbycjRpvkP1905bLeZAT2Y,321
@@ -485,17 +490,14 @@ hyperpocket/cli/codegen/tool/tool_main_template.py,sha256=VKxt-DbQ97DYtUClRZJwt3
485
490
  hyperpocket/config/__init__.py,sha256=gYMHdExdPYScBB8mihSp1yJ9H-RJ8FdNz5mEFubFNAo,138
486
491
  hyperpocket/config/auth.py,sha256=OOVdaAfMva6b-Kz4iy5YpnIKjT5WgcQ17toFzHqoRPY,2173
487
492
  hyperpocket/config/git.py,sha256=CGbY7J1LyN4ccZr9CFGAQwwhjC9kvdU0On_nsAsZ1FQ,362
488
- hyperpocket/config/logger.py,sha256=T5LESHvQfl2q1F-7FjsVfrz9fWz6jxPo7u6Jml3CQjc,2804
493
+ hyperpocket/config/logger.py,sha256=RWPmuN6Rk4x3a4rendGkKLCowhs6LFlIV8rYNu2GoxM,2749
489
494
  hyperpocket/config/session.py,sha256=1ng1mARv4R_07SF5CkZWLgX9pNeXTcM0knCRw07Fpms,816
490
495
  hyperpocket/config/settings.py,sha256=aw3TiPepcmSOKsIXDFHBhhqD2Ubz-51xRbFHZ5qx8KY,2437
491
496
  hyperpocket/futures/__init__.py,sha256=IObmC6hKC_Rc3vwOzINUVJ1hU2MDB5BUfXuH0vlSjtE,136
492
- hyperpocket/futures/futurestore.py,sha256=TVbCPf4HLKc32ol7e-oZckXMPPBKBvmjKmQAM1xj0dI,1329
493
- hyperpocket/repository/__init__.py,sha256=ML7XfV1SgcEiOBgQpfqjsT8QEKJbGQG3sVRqi_iAxqA,168
494
- hyperpocket/repository/repository.py,sha256=KvgZnJW_TrBzaLWV0DxjReLklkni1oyLq856OyjJ__A,129
495
- hyperpocket/repository/tool_reference.py,sha256=Nuc2ckWuH_5K-p8S_0IuJiaJiPE6XWchA2XM71nOTjM,554
497
+ hyperpocket/futures/futurestore.py,sha256=9MZTmZJyezx_HEW71-Z7RUI_xqQ8J9YSDQJ7LYGofQI,1682
496
498
  hyperpocket/server/__init__.py,sha256=8laNl098-IkFkarqwOZs_gm6yG0q3NAObq4cCUxK_Tw,90
497
499
  hyperpocket/server/proxy.py,sha256=ItM1qfuUBs6QiPqIpErBWUZWdtsEf0twPJY5r2UUFBU,2042
498
- hyperpocket/server/server.py,sha256=_kRWyoBJPcInbJTU_64MTv5Dbjpm9_oksix2Ow_0_Ko,11332
500
+ hyperpocket/server/server.py,sha256=lrcuE_ph39taMDj9MgIpIsUuC6VYwUgAWROH1iPCgaQ,4816
499
501
  hyperpocket/server/auth/__init__.py,sha256=IMjz9PCzD7qh4QIf2g-gWIdkDeU36jt-9F55vaHvLoM,286
500
502
  hyperpocket/server/auth/activeloop.py,sha256=MHh43F0j6q0r-GcevwD41ewLXdaPHfhLT9bCLuL7puU,739
501
503
  hyperpocket/server/auth/adobe.py,sha256=HH6elxV3ELWUnTRlkQBBFSXMHAc0angRUfHHkZVA4Kg,437
@@ -533,6 +535,7 @@ hyperpocket/server/auth/heygen.py,sha256=dtHq_CkBkDFsj2QfebpLRuFIByVE9PXX3fe3z8P
533
535
  hyperpocket/server/auth/hubspot.py,sha256=6ApquQXemvjuFattNDALrz3932w20rFEOZaz_71bvBg,722
534
536
  hyperpocket/server/auth/jira.py,sha256=xYzQ7Ve-z90wvChoVF_7rWuez9vcjHXB3FdZEVshSXo,703
535
537
  hyperpocket/server/auth/klaviyo.py,sha256=5EShL4tD5JpeYh7lserpv_PFEC-fyn4QpKNNP8RUVJo,445
538
+ hyperpocket/server/auth/kraken.py,sha256=vhKhEI8NQiaMOBWbw1dROBBOCia91AYXYRozX8TyDds,2146
536
539
  hyperpocket/server/auth/lever.py,sha256=AJjd852iUgfbudd-ILknC7HykgaKBKlMWfEUIWZ81ok,437
537
540
  hyperpocket/server/auth/lever_sandbox.py,sha256=RrhBvEZUAfj26Nj7Ic5MQAauyMmhT9rE__tkMhmAT6Y,469
538
541
  hyperpocket/server/auth/linear.py,sha256=vUW4TEqdOYqAyx9YLJC4-dVldPTDuIPXRvoo-a89ai8,988
@@ -572,29 +575,29 @@ hyperpocket/server/auth/zinc.py,sha256=xgVV5lWP6YSEHTCmH0gipG5lh4Wvf716tHTnOvTTj
572
575
  hyperpocket/server/auth/zoom.py,sha256=kWp4MB4i9FKMA4ZYcj4g4_90Y1ZMEoAQTTjbb0rsMRs,703
573
576
  hyperpocket/session/README.md,sha256=Wmh-qWJQ-40vU9hP5jNxuM33i0STNfaIjOecba7H-oc,1968
574
577
  hyperpocket/session/__init__.py,sha256=ljqLlIMsrY9Hb8UOweaEvBM_Ku9IxBMMIXar6T7h5Lg,275
575
- hyperpocket/session/in_memory.py,sha256=sYFBIc0w4sxSj28j9pkdtn_Oga8a-lsi4YJRvSFA_Jc,3799
578
+ hyperpocket/session/in_memory.py,sha256=ku0jGKqXbqhuj68DYnjezmcJwOGJbgzNrsH2gKQTI_g,3433
576
579
  hyperpocket/session/interface.py,sha256=vQobJCzQe29uM6yXanRAysUhJvtfuUZ0qddMpeLn8NI,4964
577
580
  hyperpocket/session/redis.py,sha256=rbW2b0C6HUNp5HpTpr6sxDKZQCuPHu2ipCyn1TXjPgM,5444
578
581
  hyperpocket/tool/README.md,sha256=vbHvP3fnfihq-H481MiSZEVJNhVoUu0djENb9tiy78c,3026
579
- hyperpocket/tool/__init__.py,sha256=ZwGG7_MfTUigAdHxdR-s3NMFm_QdJDoKNeVrTmFsZSo,253
580
- hyperpocket/tool/tool.py,sha256=3ApLB7mpo_xCnpvQKE7KdxY7cHVweZ-iExJEkovyfbI,7029
582
+ hyperpocket/tool/__init__.py,sha256=so12foM0X4rR8OUy6kziXB2KswAlXKIfVLcMTca8XeM,221
583
+ hyperpocket/tool/tool.py,sha256=1SFfTsSA_YKhH08fX9kyZRWv3VUr63YJbF_t7P8SSsk,6096
581
584
  hyperpocket/tool/dock/__init__.py,sha256=gEFaYTgTIzzaAHW6Bl1CJL8RQlU23NK--bojLqPTLSc,63
582
- hyperpocket/tool/dock/dock.py,sha256=Uk3Lggmj_piGFiPVde2ZvRXOKncIYqjPaRQ3LD8DWT0,859
585
+ hyperpocket/tool/dock/dock.py,sha256=DfHS-2imgJg4VQ2R-cC-wp7r2Dl2n7ZF-GmpRRZdDKg,405
583
586
  hyperpocket/tool/function/README.md,sha256=6Y9a8FlFjEdbrVqF0NoQ1j34VoV8Zt6Pf9-xlLIHkTc,3676
584
587
  hyperpocket/tool/function/__init__.py,sha256=n0IYvfoyoFWv76iwK2kBC-X6468dl5XyYFl1mudYSe4,261
585
588
  hyperpocket/tool/function/annotation.py,sha256=qVBhjFUXY_MXysPN61FJuX4mgVZHuMJTtn0L5QCY4eg,1159
586
- hyperpocket/tool/function/tool.py,sha256=HwsTI__DapAoYxQMuy45ivD4Lxyd7_-MO0GHlqfuI5c,7466
587
- hyperpocket/tool/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
589
+ hyperpocket/tool/function/tool.py,sha256=c3K8iqL70LOyjmvNqmWlgY8vcjEiNqZ8Wd_ut0rS9Hs,7474
588
590
  hyperpocket/util/__init__.py,sha256=7vN8c7dy7nhGhjXtSUGAsc6GIlUnuBMvXSl1yW1M4js,35
589
591
  hyperpocket/util/extract_func_param_desc_from_docstring.py,sha256=eGDrbigmVg1zaud1q5l2WDZkYqzy56TRznNPouc8i_Y,4170
590
592
  hyperpocket/util/find_all_leaf_class_in_package.py,sha256=06n8R47BDPovxhCOnzu9GuEfeQzEbv-HdG-zfMu1gBw,533
591
593
  hyperpocket/util/find_all_subclass_in_package.py,sha256=TtEb41-nzCNhC9pgelTS6MMxLT_JNZkFPJe5z2H9yik,978
592
594
  hyperpocket/util/flatten_json_schema.py,sha256=iuNBEmMSKFtPi-uqo6fb3RWN0koHOAihWAAofWbd1U8,1671
593
595
  hyperpocket/util/function_to_model.py,sha256=TXUs-qPbzL8C9-qqpz4Ad4D9MOPP61n_p0iPU6SoBeM,2318
594
- hyperpocket/util/generate_slug.py,sha256=gwwf9gfTlqribrvybMQQj7VIHX5FspVoTm5-EYH-X74,150
595
596
  hyperpocket/util/get_objects_from_subpackage.py,sha256=4mR_S8eaJSdU68YfCkiXeIcXxb6q7LjFGsY_IHeNIZw,929
596
- hyperpocket/util/json_schema_to_model.py,sha256=BNTFYzBK-yZr2VkO6lAdZkXdZXfGSabzWa3DM6it4KI,3731
597
- hyperpocket-0.4.4.dist-info/METADATA,sha256=CItp4XP56pSM5F32k5YsOIuaWAjJHzWVORyCbnz5vLM,13074
598
- hyperpocket-0.4.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
599
- hyperpocket-0.4.4.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
600
- hyperpocket-0.4.4.dist-info/RECORD,,
597
+ hyperpocket/util/git_parser.py,sha256=y96nhgZXtRgA_u_0GTPo95PGkpG-n_oMIrkbckdxiR8,2496
598
+ hyperpocket/util/json_schema_to_model.py,sha256=nc5AmnqkrdeFLELu-7_O9sEAaUaD8_KGlvIMDRobt-4,3751
599
+ hyperpocket/util/short_hashing_str.py,sha256=ahLUT8iQr-MJVbDJXrSt0cXnnSEeJ8EU3A0PDn6e0gs,119
600
+ hyperpocket-0.5.0.dist-info/METADATA,sha256=I_K2Ka3J4ABp0Y6X8ZCNAoH8cqw6xvQBJzxeIgnd60U,13078
601
+ hyperpocket-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
602
+ hyperpocket-0.5.0.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
603
+ hyperpocket-0.5.0.dist-info/RECORD,,
@@ -1,283 +0,0 @@
1
- import asyncio
2
- from typing import Any, Callable, List, Optional, Union
3
-
4
- from hyperpocket.builtin import get_builtin_tools
5
- from hyperpocket.config import pocket_logger
6
- from hyperpocket.pocket_auth import PocketAuth
7
- from hyperpocket.tool import Tool
8
- from hyperpocket.tool.dock import Dock
9
- from hyperpocket.tool.function import from_func
10
- from hyperpocket.tool_like import ToolLike
11
-
12
-
13
- class PocketCore:
14
- auth: PocketAuth
15
- tools: dict[str, Tool]
16
- docks: list[Dock]
17
-
18
- @staticmethod
19
- def _default_dock() -> Dock:
20
- try:
21
- from hyperdock_container.dock import ContainerDock
22
- pocket_logger.info("hyperdock-container is loaded.")
23
- return ContainerDock()
24
- except ImportError:
25
- pocket_logger.warning("Failed to import hyperdock_container.")
26
-
27
- try:
28
- from hyperdock_wasm.dock import WasmDock
29
- pocket_logger.info("hyperdock-wasm is loaded.")
30
- return WasmDock()
31
- except ImportError:
32
- raise ImportError("No default dock available. To register a remote tool, you need to install either hyperdock_wasm or hyperdock_container.")
33
-
34
-
35
- def __init__(
36
- self,
37
- tools: list[ToolLike],
38
- auth: PocketAuth = None,
39
- ):
40
- if auth is None:
41
- auth = PocketAuth()
42
- self.auth = auth
43
-
44
- # filter strs out first and register the tools to default dock
45
- str_tool_likes = [tool for tool in tools if (isinstance(tool, str) or isinstance(tool, tuple))]
46
- function_tool_likes = [tool for tool in tools if (not isinstance(tool, str) and not isinstance(tool, Dock) and not isinstance(tool, tuple))]
47
- # especially, docks are maintained by core
48
- self.docks = [dock for dock in tools if isinstance(dock, Dock)]
49
-
50
- if len(str_tool_likes) > 0:
51
- default_dock = self._default_dock()
52
- for str_tool_like in str_tool_likes:
53
- default_dock.plug(req_like=str_tool_like)
54
- # append default dock
55
- self.docks.append(default_dock)
56
-
57
- self.tools = dict()
58
-
59
- # for each tool like, load the tool
60
- for tool_like in function_tool_likes:
61
- self._load_tool(tool_like)
62
-
63
- for dock in self.docks:
64
- tools = dock.tools()
65
- for tool in tools:
66
- self._load_tool(tool)
67
-
68
- pocket_logger.info(
69
- f"All Registered Tools Loaded successfully. total registered tools : {len(self.tools)}"
70
- )
71
-
72
- # load builtin tool
73
- builtin_tools = get_builtin_tools(self.auth)
74
- for tool in builtin_tools:
75
- self.tools[tool.name] = tool
76
- pocket_logger.info(
77
- f"All BuiltIn Tools Loaded successfully. total tools : {len(self.tools)}"
78
- )
79
-
80
- async def acall(
81
- self,
82
- tool_name: str,
83
- body: Any,
84
- thread_id: str = "default",
85
- profile: str = "default",
86
- *args,
87
- **kwargs,
88
- ) -> tuple[str, bool]:
89
- """
90
- Invoke tool asynchronously, not that different from `Pocket.invoke`
91
- But this method is called only in subprocess.
92
-
93
- This function performs the following steps:
94
- 1. `prepare_auth` : preparing the authentication process for the tool if necessary.
95
- 2. `authenticate` : performing authentication that needs to invoke tool.
96
- 3. `tool_call` : Executing tool actually with authentication information.
97
-
98
- Args:
99
- tool_name(str): tool name to invoke
100
- body(Any): tool arguments. should be json format
101
- thread_id(str): thread id
102
- profile(str): profile name
103
-
104
- Returns:
105
- tuple[str, bool]: tool result and state.
106
- """
107
- tool = self._tool_instance(tool_name)
108
- if tool.auth is not None:
109
- callback_info = self.prepare_auth(tool_name, thread_id, profile, **kwargs)
110
- if callback_info:
111
- return callback_info, True
112
- # 02. authenticate
113
- credentials = await self.authenticate(tool_name, thread_id, profile, **kwargs)
114
- # 03. call tool
115
- result = await self.tool_call(tool_name, body=body, envs=credentials, **kwargs)
116
- return result, False
117
-
118
- def prepare_auth(
119
- self,
120
- tool_name: Union[str, List[str]],
121
- thread_id: str = "default",
122
- profile: str = "default",
123
- **kwargs,
124
- ) -> Optional[str]:
125
- """
126
- Prepares the authentication process for the tool if necessary.
127
- Returns callback URL and whether the tool requires authentication.
128
-
129
- Args:
130
- tool_name(Union[str,List[str]]): tool name to invoke
131
- thread_id(str): thread id
132
- profile(str): profile name
133
-
134
- Returns:
135
- Optional[str]: callback URI if necessary
136
- """
137
-
138
- if isinstance(tool_name, str):
139
- tool_name = [tool_name]
140
-
141
- tools: List[Tool] = []
142
- for name in tool_name:
143
- tool = self._tool_instance(name)
144
- if tool.auth is not None:
145
- tools.append(tool)
146
-
147
- if len(tools) == 0:
148
- return None
149
-
150
- auth_handler_name = tools[0].auth.auth_handler
151
- auth_provider = tools[0].auth.auth_provider
152
- auth_scopes = set()
153
-
154
- for tool in tools:
155
- if tool.auth.auth_handler != auth_handler_name:
156
- pocket_logger.error(
157
- f"All Tools should have same auth handler. but it's different {tool.auth.auth_handler}, {auth_handler_name}"
158
- )
159
-
160
- return f"All Tools should have same auth handler. but it's different {tool.auth.auth_handler}, {auth_handler_name}"
161
- if tool.auth.auth_provider != auth_provider:
162
- pocket_logger.error(
163
- f"All Tools should have same auth provider. but it's different {tool.auth.auth_provider}, {auth_provider}"
164
- )
165
- return f"All Tools should have same auth provider. but it's different {tool.auth.auth_provider}, {auth_provider}"
166
-
167
- if tool.auth.scopes is not None:
168
- auth_scopes |= set(tool.auth.scopes)
169
-
170
- auth_req = self.auth.make_request(
171
- auth_handler_name=auth_handler_name,
172
- auth_provider=auth_provider,
173
- auth_scopes=list(auth_scopes),
174
- )
175
-
176
- return self.auth.prepare(
177
- auth_req=auth_req,
178
- auth_handler_name=auth_handler_name,
179
- auth_provider=auth_provider,
180
- thread_id=thread_id,
181
- profile=profile,
182
- **kwargs,
183
- )
184
-
185
- async def authenticate(
186
- self,
187
- tool_name: str,
188
- thread_id: str = "default",
189
- profile: str = "default",
190
- **kwargs,
191
- ) -> dict[str, str]:
192
- """
193
- Authenticates the handler included in the tool and returns credentials.
194
-
195
- Args:
196
- tool_name(str): tool name to invoke
197
- thread_id(str): thread id
198
- profile(str): profile name
199
-
200
- Returns:
201
- dict[str, str]: credentials
202
- """
203
- tool = self._tool_instance(tool_name)
204
- if tool.auth is None:
205
- return {}
206
- auth_req = self.auth.make_request(
207
- auth_handler_name=tool.auth.auth_handler,
208
- auth_provider=tool.auth.auth_provider,
209
- auth_scopes=tool.auth.scopes,
210
- )
211
- auth_ctx = await self.auth.authenticate_async(
212
- auth_req=auth_req,
213
- auth_handler_name=tool.auth.auth_handler,
214
- auth_provider=tool.auth.auth_provider,
215
- thread_id=thread_id,
216
- profile=profile,
217
- **kwargs,
218
- )
219
- return auth_ctx.to_dict()
220
-
221
- async def tool_call(self, tool_name: str, **kwargs) -> str:
222
- """
223
- Executing tool actually
224
-
225
- Args:
226
- tool_name(str): tool name to invoke
227
- kwargs(dict): keyword arguments. authentication information is passed through this.
228
-
229
- Returns:
230
- str: tool result
231
- """
232
- tool = self._tool_instance(tool_name)
233
- try:
234
- result = await asyncio.wait_for(tool.ainvoke(**kwargs), timeout=180)
235
- except asyncio.TimeoutError:
236
- pocket_logger.warning("Timeout tool call.")
237
- return "timeout tool call"
238
-
239
- if tool.postprocessings is not None:
240
- for postprocessing in tool.postprocessings:
241
- try:
242
- result = postprocessing(result)
243
- except Exception as e:
244
- exception_str = (
245
- f"Error in postprocessing `{postprocessing.__name__}`: {e}"
246
- )
247
- pocket_logger.error(exception_str)
248
- return exception_str
249
-
250
- return result
251
-
252
- def grouping_tool_by_auth_provider(self) -> dict[str, List[Tool]]:
253
- tool_by_provider = {}
254
- for tool_name, tool in self.tools.items():
255
- if tool.auth is None:
256
- continue
257
-
258
- auth_provider_name = tool.auth.auth_provider.name
259
- if tool_by_provider.get(auth_provider_name):
260
- tool_by_provider[auth_provider_name].append(tool)
261
- else:
262
- tool_by_provider[auth_provider_name] = [tool]
263
- return tool_by_provider
264
-
265
- def _tool_instance(self, tool_name: str) -> Tool:
266
- return self.tools[tool_name]
267
-
268
- def _load_tool(self, tool_like: ToolLike) -> Tool:
269
- pocket_logger.info(f"Loading Tool {tool_like}")
270
- if isinstance(tool_like, Tool):
271
- tool = tool_like
272
- elif isinstance(tool_like, Callable):
273
- tool = from_func(tool_like)
274
- else:
275
- raise ValueError(f"Invalid tool type: {type(tool_like)}")
276
-
277
- if tool.name in self.tools:
278
- pocket_logger.error(f"Duplicate tool name: {tool.name}.")
279
- raise ValueError(f"Duplicate tool name: {tool.name}")
280
- self.tools[tool.name] = tool
281
-
282
- pocket_logger.info(f"Complete Loading Tool {tool.name}")
283
- return tool
@@ -1,4 +0,0 @@
1
- from hyperpocket.repository.tool_reference import ToolReference
2
- from hyperpocket.repository.repository import eject, pull
3
-
4
- __all__ = ["ToolReference", "pull", "eject"]
@@ -1,8 +0,0 @@
1
- def pull(urllike: str, git_ref: str):
2
- # TODO
3
- pass
4
-
5
-
6
- def eject(url: str, ref: str, remote_path: str):
7
- # TODO
8
- pass
@@ -1,28 +0,0 @@
1
- import abc
2
- import pathlib
3
-
4
- from pydantic import BaseModel
5
-
6
-
7
- class ToolReference(BaseModel, abc.ABC):
8
- tool_source: str = None
9
-
10
- @abc.abstractmethod
11
- def __str__(self):
12
- raise NotImplementedError
13
-
14
- @abc.abstractmethod
15
- def key(self) -> str:
16
- raise NotImplementedError
17
-
18
- @abc.abstractmethod
19
- def sync(self, **kwargs):
20
- raise NotImplementedError
21
-
22
- def eject_to_path(self, dest_path: pathlib.Path, src_sub_path: str = None):
23
- ## local locks are already tracked by git
24
- raise NotImplementedError
25
-
26
-
27
-
28
-
@@ -1,4 +0,0 @@
1
- import string, random
2
-
3
- def generate_slug(length: int = 6) -> str:
4
- return ''.join(random.choices(string.ascii_lowercase + string.digits, k=length))
File without changes