blue-assistant 4.9.1__py3-none-any.whl → 4.17.1__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.
@@ -7,7 +7,7 @@ function blue_assistant_chat() {
7
7
  local do_upload=$(abcli_option_int "$options" upload $(abcli_not $do_dryrun))
8
8
 
9
9
  local chat_options=$2
10
- local interactive=$(abcli_option_int "$options" interact 1)
10
+ local interactive=$(abcli_option_int "$chat_options" interact 1)
11
11
 
12
12
  local object_name=$(abcli_clarify_object $3 chat-$(abcli_string_timestamp))
13
13
  [[ "$do_download" == 1 ]] &&
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} An AI Assistant."
6
6
 
7
- VERSION = "4.9.1"
7
+ VERSION = "4.17.1"
8
8
 
9
9
  REPO_NAME = "blue-assistant"
10
10
 
@@ -0,0 +1,79 @@
1
+ from blue_objects.metadata import post_to_object, get_from_object
2
+ from blue_options.terminal.functions import hr
3
+
4
+ from blue_assistant import ICON
5
+ from blue_assistant.logger import logger
6
+
7
+
8
+ class ChatContext:
9
+ def __init__(
10
+ self,
11
+ object_name: str,
12
+ load_history: bool = True,
13
+ ):
14
+ self.ended: bool = False
15
+
16
+ self.object_name = object_name
17
+
18
+ self.history = (
19
+ get_from_object(
20
+ self.object_name,
21
+ "history",
22
+ [],
23
+ )
24
+ if load_history
25
+ else []
26
+ )
27
+
28
+ def chat(
29
+ self,
30
+ interactive: bool = True,
31
+ verbose: bool = False,
32
+ ) -> bool:
33
+ logger.info('Type in "help" for help.')
34
+
35
+ while True:
36
+ prompt = input(f"{ICON} > ") if interactive else ""
37
+
38
+ if not self.process_prompt(prompt):
39
+ return False
40
+
41
+ if self.ended or not interactive:
42
+ break
43
+
44
+ print(hr(width=21))
45
+
46
+ return True
47
+
48
+ def process_prompt(self, prompt: str) -> bool:
49
+ if prompt in ["help", "?", ""]:
50
+ return self.show_help()
51
+
52
+ if prompt in ["quit", "exit", "q"]:
53
+ self.ended = True
54
+ return True
55
+
56
+ logger.info(f"🪄 {prompt}")
57
+
58
+ self.history.append(
59
+ {
60
+ "prompt": prompt,
61
+ }
62
+ )
63
+
64
+ return True
65
+
66
+ def save(self) -> bool:
67
+ return post_to_object(
68
+ self.object_name,
69
+ "history",
70
+ self.history,
71
+ )
72
+
73
+ def show_help(self) -> bool:
74
+ for command, description in {
75
+ "help": "show this help.",
76
+ "quit": "quit the chat.",
77
+ }.items():
78
+ logger.info(f"{command}: {description}")
79
+ return True
@@ -1,6 +1,7 @@
1
1
  from blueness import module
2
2
 
3
3
  from blue_assistant import NAME
4
+ from blue_assistant.chat.context import ChatContext
4
5
  from blue_assistant.logger import logger
5
6
 
6
7
 
@@ -11,6 +12,7 @@ def chat(
11
12
  object_name: str,
12
13
  interactive: bool = True,
13
14
  verbose: bool = False,
15
+ load_history: bool = True,
14
16
  ) -> bool:
15
17
  logger.info(
16
18
  "{}.chat -{}> {}".format(
@@ -20,6 +22,15 @@ def chat(
20
22
  )
21
23
  )
22
24
 
23
- logger.info("🪄")
25
+ context = ChatContext(
26
+ object_name,
27
+ load_history=load_history,
28
+ )
29
+
30
+ if not context.chat(
31
+ interactive=interactive,
32
+ verbose=verbose,
33
+ ):
34
+ return False
24
35
 
25
- return True
36
+ return context.save()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: blue_assistant
3
- Version: 4.9.1
3
+ Version: 4.17.1
4
4
  Summary: 🌀 An AI Assistant.
5
5
  Home-page: https://github.com/kamangir/blue-assistant
6
6
  Author: Arash Abadpour (Kamangir)
@@ -62,4 +62,4 @@ graph LR
62
62
 
63
63
  [![pylint](https://github.com/kamangir/blue-assistant/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/blue-assistant/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/blue-assistant/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/blue-assistant.svg)](https://pypi.org/project/blue-assistant/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/blue-assistant)](https://pypistats.org/packages/blue-assistant)
64
64
 
65
- built by 🌀 [`blue_options-4.205.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`blue_assistant-4.9.1`](https://github.com/kamangir/blue-assistant).
65
+ built by 🌀 [`blue_options-4.207.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`blue_assistant-4.17.1`](https://github.com/kamangir/blue-assistant).
@@ -1,5 +1,5 @@
1
1
  blue_assistant/README.py,sha256=q6EWCy7zojQESGDF-2xEoXS1Bl0wRJTe2jw_1QM_WYw,600
2
- blue_assistant/__init__.py,sha256=9LsmeDG8swE0pYICUhzxci43g_rP3ypSMITxMD2fNE0,309
2
+ blue_assistant/__init__.py,sha256=pcxl_W4PLmlpRZX3KNDCS1DC2tCbbMrbau0-2R9x2BY,310
3
3
  blue_assistant/__main__.py,sha256=URtal70XZc0--3FDTYWcLtnGOqBYjMX9gt-L1k8hDXI,361
4
4
  blue_assistant/config.env,sha256=89ao50sGXYWiU-NMV_fUVXAXdTHKKfWV03BY3_p6EOE,25
5
5
  blue_assistant/env.py,sha256=Luc_ws9lWcgE6u-wjgBL-1WwsL7-kBpiN6bhO5MO96M,177
@@ -13,20 +13,21 @@ blue_assistant/.abcli/actions.sh,sha256=vW1hNMuhjghvqib0775kDzDwqGnqPo3mqLTUkPCd
13
13
  blue_assistant/.abcli/alias.sh,sha256=MCJzXaDnX1QMllWsZJJkDePBYt1nY9ZWa3o4msfGD28,57
14
14
  blue_assistant/.abcli/blue_assistant.sh,sha256=plLTQQerVmfb_SNlOkv0MEaQCF7YdsOHzCq0M3FWT4c,239
15
15
  blue_assistant/.abcli/browse.sh,sha256=qZ_RK_WnsjmF-hfWKiMEOnnv22QtZh9HQ0VFJUbP6aI,294
16
- blue_assistant/.abcli/chat.sh,sha256=1lrDwRrBjR_uhDc7_zeuhxjqgucaZMrrUaqw-o166bs,823
16
+ blue_assistant/.abcli/chat.sh,sha256=8jMqlOm1Pdg-KSb1YSSC2tbW3-1fGwRGpZ6aDITvL2U,828
17
17
  blue_assistant/.abcli/tests/README.sh,sha256=Qs0YUxVB1OZZ70Nqw2kT1LKXeUnC5-XfQRMfqb8Cbwg,152
18
18
  blue_assistant/.abcli/tests/chat.sh,sha256=ptW6aLBp1xB7G4RligZOMnTDtpmdE0LxlkqC236TpCo,272
19
19
  blue_assistant/.abcli/tests/help.sh,sha256=n2FZO78a93YeKSqqZfJoqYDBMHQRWQp2l96zEvl2Ui0,653
20
20
  blue_assistant/.abcli/tests/version.sh,sha256=oR2rvYR8zi-0VDPIdPJsmsmWwYaamT8dmNTqUh3-8Gw,154
21
21
  blue_assistant/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  blue_assistant/chat/__main__.py,sha256=n9fvhhcTHjg33EHvHdFnc2kf8X1yhmOJUahDFs82bW0,870
23
- blue_assistant/chat/functions.py,sha256=QHjrEoYbO95olWrRyOh9njuUwAwYy5NM5VzVNpZF4fM,444
23
+ blue_assistant/chat/context.py,sha256=AjBkw0FK6CtEyFskDsAdyXvNYGs_4v-sFW6257ftA6o,1812
24
+ blue_assistant/chat/functions.py,sha256=dzDuTxslopJogU8PqPiMLqeD490kWG-NvZUaOuROoWo,714
24
25
  blue_assistant/help/__init__.py,sha256=ajz1GSNU9xYVrFEDSz6Xwg7amWQ_yvW75tQa1ZvRIWc,3
25
26
  blue_assistant/help/__main__.py,sha256=cVejR7OpoWPg0qLbm-PZf5TuJS27x49jzfiyCLyzEns,241
26
27
  blue_assistant/help/chat.py,sha256=fkcT14htkjEt7EOpgvHuUPzj7d8jQDxdgN2ZcU0lVEg,534
27
28
  blue_assistant/help/functions.py,sha256=e1S3oxVKSkLThMMyAsPotaovVFHQbiMN4yRWVZP6TB0,663
28
- blue_assistant-4.9.1.dist-info/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
29
- blue_assistant-4.9.1.dist-info/METADATA,sha256=IH3jq05dUAsaFIByH3z5q56tyqRKx5Dsphx4OoU5s6s,2261
30
- blue_assistant-4.9.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
- blue_assistant-4.9.1.dist-info/top_level.txt,sha256=ud0BkBbdOVze13bNqHuhZj1rwCztaBtDf5ChEYzASOs,15
32
- blue_assistant-4.9.1.dist-info/RECORD,,
29
+ blue_assistant-4.17.1.dist-info/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
30
+ blue_assistant-4.17.1.dist-info/METADATA,sha256=GpHzia7hgY2DWZ0zE5uUfGNq9QoRkrK6ZC6HTW0P7Qk,2263
31
+ blue_assistant-4.17.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
32
+ blue_assistant-4.17.1.dist-info/top_level.txt,sha256=ud0BkBbdOVze13bNqHuhZj1rwCztaBtDf5ChEYzASOs,15
33
+ blue_assistant-4.17.1.dist-info/RECORD,,