nao-core 0.0.25__tar.gz → 0.0.26__tar.gz

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 (69) hide show
  1. {nao_core-0.0.25 → nao_core-0.0.26}/PKG-INFO +1 -1
  2. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/__init__.py +1 -1
  3. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/nao-chat-server +0 -0
  4. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/chat.py +7 -0
  5. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/init.py +34 -1
  6. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/__init__.py +2 -0
  7. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/base.py +2 -0
  8. nao_core-0.0.26/nao_core/config/slack/__init__.py +12 -0
  9. {nao_core-0.0.25 → nao_core-0.0.26}/pyproject.toml +1 -1
  10. {nao_core-0.0.25 → nao_core-0.0.26}/.gitignore +0 -0
  11. {nao_core-0.0.25 → nao_core-0.0.26}/LICENSE +0 -0
  12. {nao_core-0.0.25 → nao_core-0.0.26}/README.md +0 -0
  13. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/.nao-secret +0 -0
  14. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/fastapi/main.py +0 -0
  15. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/0000_user_auth_and_chat_tables.sql +0 -0
  16. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/0001_message_feedback.sql +0 -0
  17. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/0002_chat_message_stop_reason_and_error_message.sql +0 -0
  18. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/0003_handle_slack_with_thread.sql +0 -0
  19. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/meta/0000_snapshot.json +0 -0
  20. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/meta/0001_snapshot.json +0 -0
  21. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/meta/0002_snapshot.json +0 -0
  22. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/meta/0003_snapshot.json +0 -0
  23. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-postgres/meta/_journal.json +0 -0
  24. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/0000_user_auth_and_chat_tables.sql +0 -0
  25. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/0001_message_feedback.sql +0 -0
  26. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/0002_chat_message_stop_reason_and_error_message.sql +0 -0
  27. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/0003_handle_slack_with_thread.sql +0 -0
  28. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/meta/0000_snapshot.json +0 -0
  29. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/meta/0001_snapshot.json +0 -0
  30. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/meta/0002_snapshot.json +0 -0
  31. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/meta/0003_snapshot.json +0 -0
  32. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/migrations-sqlite/meta/_journal.json +0 -0
  33. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/_chat-layout-BTlqRUE5.js +0 -0
  34. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/_chat-layout.index-DOARokp1.js +0 -0
  35. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/agentProvider-C6dGIy-H.js +0 -0
  36. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/button-By_1dzVx.js +0 -0
  37. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/code-block-F6WJLWQG-EQr6mTlQ.js +0 -0
  38. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/folder-DnRS5rg3.js +0 -0
  39. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/index-CElAN2SH.css +0 -0
  40. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/index-ZTHASguQ.js +0 -0
  41. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/input-CUQA5tsi.js +0 -0
  42. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/login-BUQDum3t.js +0 -0
  43. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/mermaid-FSSLJTFX-Dc6ZvCPw.js +0 -0
  44. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/sidebar-bgEk7Xg8.js +0 -0
  45. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/signinForm-CGAhnAkv.js +0 -0
  46. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/signup-D2n11La3.js +0 -0
  47. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/user-CYl8Tly2.js +0 -0
  48. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/assets/utils-DzJYey0s.js +0 -0
  49. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/favicon.ico +0 -0
  50. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/github-icon.svg +0 -0
  51. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/google-icon.svg +0 -0
  52. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/index.html +0 -0
  53. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/nao-logo-greyscale.svg +0 -0
  54. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/public/nao-square-logo.png +0 -0
  55. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/bin/rg +0 -0
  56. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/__init__.py +0 -0
  57. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/debug.py +0 -0
  58. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/sync/__init__.py +0 -0
  59. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/sync/accessors.py +0 -0
  60. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/sync/databases.py +0 -0
  61. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/sync/registry.py +0 -0
  62. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/commands/sync/repositories.py +0 -0
  63. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/databases/__init__.py +0 -0
  64. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/databases/base.py +0 -0
  65. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/databases/bigquery.py +0 -0
  66. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/llm/__init__.py +0 -0
  67. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/repos/__init__.py +0 -0
  68. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/config/repos/base.py +0 -0
  69. {nao_core-0.0.25 → nao_core-0.0.26}/nao_core/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nao-core
3
- Version: 0.0.25
3
+ Version: 0.0.26
4
4
  Summary: nao Core is your analytics context builder with the best chat interface.
5
5
  Project-URL: Homepage, https://getnao.io
6
6
  Project-URL: Repository, https://github.com/naolabs/chat
@@ -1,2 +1,2 @@
1
1
  # nao Core CLI package
2
- __version__ = "0.0.25"
2
+ __version__ = "0.0.26"
@@ -150,6 +150,13 @@ def chat():
150
150
  env[env_var_name] = config.llm.api_key
151
151
  console.print(f"[bold green]✓[/bold green] Set {env_var_name} from config")
152
152
 
153
+ # Set Slack config if available
154
+ if config and config.slack:
155
+ env["SLACK_BOT_TOKEN"] = config.slack.bot_token
156
+ env["SLACK_SIGNING_SECRET"] = config.slack.signing_secret
157
+ env["SLACK_POST_MESSAGE_URL"] = config.slack.post_message_url
158
+ console.print("[bold green]✓[/bold green] Set Slack environment variables from config")
159
+
153
160
  env["NAO_PROJECT_FOLDER"] = str(Path.cwd())
154
161
  env["FASTAPI_URL"] = f"http://localhost:{FASTAPI_PORT}"
155
162
 
@@ -7,7 +7,7 @@ from rich.console import Console
7
7
  from rich.panel import Panel
8
8
  from rich.prompt import Confirm, Prompt
9
9
 
10
- from nao_core.config import AnyDatabaseConfig, BigQueryConfig, DatabaseType, LLMConfig, LLMProvider, NaoConfig
10
+ from nao_core.config import AnyDatabaseConfig, BigQueryConfig, DatabaseType, LLMConfig, LLMProvider, NaoConfig, SlackConfig
11
11
  from nao_core.config.repos import RepoConfig
12
12
 
13
13
  console = Console()
@@ -185,6 +185,38 @@ def setup_llm() -> LLMConfig | None:
185
185
  return llm_config
186
186
 
187
187
 
188
+ def setup_slack() -> SlackConfig | None:
189
+ """Setup the Slack configuration."""
190
+ slack_config = None
191
+ should_setup = Confirm.ask("\n[bold]Set up Slack integration?[/bold]", default=False)
192
+
193
+ if should_setup:
194
+ console.print("\n[bold cyan]Slack Configuration[/bold cyan]\n")
195
+
196
+ bot_token = Prompt.ask(
197
+ "[bold]Enter your Slack bot token[/bold]",
198
+ password=True,
199
+ )
200
+
201
+ if not bot_token:
202
+ raise InitError("Slack bot token cannot be empty.")
203
+
204
+ signing_secret = Prompt.ask(
205
+ "[bold]Enter your Slack signing secret[/bold]",
206
+ password=True,
207
+ )
208
+
209
+ if not signing_secret:
210
+ raise InitError("Slack signing secret cannot be empty.")
211
+
212
+ slack_config = SlackConfig(
213
+ bot_token=bot_token,
214
+ signing_secret=signing_secret,
215
+ )
216
+
217
+ return slack_config
218
+
219
+
188
220
  def create_empty_structure(project_path: Path) -> tuple[list[str], list[str]]:
189
221
  """Create project folder structure to guide users.
190
222
 
@@ -240,6 +272,7 @@ def init(
240
272
  databases=setup_databases(),
241
273
  repos=setup_repos(),
242
274
  llm=setup_llm(),
275
+ slack=setup_slack(),
243
276
  )
244
277
  config.save(project_path)
245
278
 
@@ -1,6 +1,7 @@
1
1
  from .base import NaoConfig
2
2
  from .databases import AccessorType, AnyDatabaseConfig, BigQueryConfig, DatabaseType
3
3
  from .llm import LLMConfig, LLMProvider
4
+ from .slack import SlackConfig
4
5
 
5
6
  __all__ = [
6
7
  "NaoConfig",
@@ -10,4 +11,5 @@ __all__ = [
10
11
  "DatabaseType",
11
12
  "LLMConfig",
12
13
  "LLMProvider",
14
+ "SlackConfig",
13
15
  ]
@@ -7,6 +7,7 @@ from pydantic import BaseModel, Field, model_validator
7
7
  from .databases import AnyDatabaseConfig, parse_database_config
8
8
  from .llm import LLMConfig
9
9
  from .repos import RepoConfig
10
+ from .slack import SlackConfig
10
11
 
11
12
 
12
13
  class NaoConfig(BaseModel):
@@ -16,6 +17,7 @@ class NaoConfig(BaseModel):
16
17
  databases: list[AnyDatabaseConfig] = Field(default_factory=list, description="The databases to use")
17
18
  repos: list[RepoConfig] = Field(default_factory=list, description="The repositories to use")
18
19
  llm: LLMConfig | None = Field(default=None, description="The LLM configuration")
20
+ slack: SlackConfig | None = Field(default=None, description="The Slack configuration")
19
21
 
20
22
  @model_validator(mode="before")
21
23
  @classmethod
@@ -0,0 +1,12 @@
1
+ from pydantic import BaseModel, Field
2
+
3
+
4
+ class SlackConfig(BaseModel):
5
+ """Slack configuration."""
6
+
7
+ bot_token: str = Field(description="The bot token to use")
8
+ signing_secret: str = Field(description="The signing secret for verifying requests")
9
+ post_message_url: str = Field(
10
+ default="https://slack.com/api/chat.postMessage",
11
+ description="The Slack API URL for posting messages",
12
+ )
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nao-core"
3
- version = "0.0.25"
3
+ version = "0.0.26"
4
4
  description = "nao Core is your analytics context builder with the best chat interface."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes