rosetta-cli 2.0.21__tar.gz → 3.0.1__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 (34) hide show
  1. {rosetta_cli-2.0.21/rosetta_cli.egg-info → rosetta_cli-3.0.1}/PKG-INFO +12 -12
  2. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/README.md +11 -11
  3. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/pyproject.toml +1 -1
  4. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/cli.py +4 -4
  5. rosetta_cli-3.0.1/rosetta_cli/commands/__init__.py +5 -0
  6. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/base_command.py +5 -5
  7. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/parse_command.py +19 -2
  8. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/publish_command.py +2 -2
  9. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/ragflow_client.py +6 -6
  10. rosetta_cli-2.0.21/rosetta_cli/ims_auth.py → rosetta_cli-3.0.1/rosetta_cli/rosetta_auth.py +4 -4
  11. rosetta_cli-2.0.21/rosetta_cli/ims_config.py → rosetta_cli-3.0.1/rosetta_cli/rosetta_config.py +16 -16
  12. rosetta_cli-2.0.21/rosetta_cli/ims_publisher.py → rosetta_cli-3.0.1/rosetta_cli/rosetta_publisher.py +1 -1
  13. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/services/__init__.py +1 -1
  14. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/services/auth_service.py +7 -7
  15. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/services/dataset_service.py +3 -3
  16. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/typing_utils.py +1 -1
  17. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1/rosetta_cli.egg-info}/PKG-INFO +12 -12
  18. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli.egg-info/SOURCES.txt +4 -4
  19. rosetta_cli-2.0.21/rosetta_cli/commands/__init__.py +0 -5
  20. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/MANIFEST.in +0 -0
  21. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/env.template +0 -0
  22. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/__init__.py +0 -0
  23. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/__main__.py +0 -0
  24. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/cleanup_command.py +0 -0
  25. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/list_command.py +0 -0
  26. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/commands/verify_command.py +0 -0
  27. /rosetta_cli-2.0.21/rosetta_cli/ims_utils.py → /rosetta_cli-3.0.1/rosetta_cli/rosetta_utils.py +0 -0
  28. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/services/document_data.py +0 -0
  29. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli/services/document_service.py +0 -0
  30. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli.egg-info/dependency_links.txt +0 -0
  31. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli.egg-info/entry_points.txt +0 -0
  32. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli.egg-info/requires.txt +0 -0
  33. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/rosetta_cli.egg-info/top_level.txt +0 -0
  34. {rosetta_cli-2.0.21 → rosetta_cli-3.0.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rosetta-cli
3
- Version: 2.0.21
3
+ Version: 3.0.1
4
4
  Summary: Rosetta CLI for publishing knowledge base content to RAGFlow
5
5
  Author-email: Rosetta Team <rosetta-support@griddynamics.com>
6
6
  License-Expression: Apache-2.0
@@ -65,8 +65,8 @@ src/rosetta-cli/
65
65
  │ ├── cli.py # CLI entry point
66
66
  │ ├── commands/ # Command implementations
67
67
  │ ├── services/ # Shared business logic
68
- │ ├── ims_config.py # Configuration management
69
- │ ├── ims_publisher.py # Publishing orchestration
68
+ │ ├── rosetta_config.py # Configuration management
69
+ │ ├── rosetta_publisher.py # Publishing orchestration
70
70
  │ └── ragflow_client.py # RAGFlow SDK wrapper
71
71
  ├── env.template # Environment configuration template
72
72
  ├── tests/ # CLI unit tests
@@ -329,29 +329,29 @@ client.verify_connection()
329
329
  client.get_system_health()
330
330
  ```
331
331
 
332
- #### IMSConfig (`ims_config.py`)
332
+ #### RosettaConfig (`rosetta_config.py`)
333
333
 
334
334
  Configuration management with smart .env discovery:
335
335
 
336
336
  ```python
337
- from rosetta_cli.ims_config import IMSConfig
337
+ from rosetta_cli.rosetta_config import RosettaConfig
338
338
 
339
339
  # Auto-discover .env (searches cwd, script dir, git root)
340
- config = IMSConfig.from_env()
340
+ config = RosettaConfig.from_env()
341
341
 
342
342
  # Use specific environment
343
- config = IMSConfig.from_env(environment="production")
343
+ config = RosettaConfig.from_env(environment="production")
344
344
 
345
345
  # Validate configuration
346
346
  config.validate()
347
347
  ```
348
348
 
349
- #### ContentPublisher (`ims_publisher.py`)
349
+ #### ContentPublisher (`rosetta_publisher.py`)
350
350
 
351
351
  Publishing logic with metadata extraction:
352
352
 
353
353
  ```python
354
- from rosetta_cli.ims_publisher import ContentPublisher
354
+ from rosetta_cli.rosetta_publisher import ContentPublisher
355
355
 
356
356
  publisher = ContentPublisher(client, config, workspace_root)
357
357
 
@@ -475,10 +475,10 @@ uvx rosetta-cli@latest publish ../../instructions --force
475
475
  ```python
476
476
  from pathlib import Path
477
477
  from rosetta_cli.ragflow_client import RAGFlowClient, DocumentMetadata
478
- from rosetta_cli.ims_config import IMSConfig
479
- from rosetta_cli.ims_publisher import ContentPublisher
478
+ from rosetta_cli.rosetta_config import RosettaConfig
479
+ from rosetta_cli.rosetta_publisher import ContentPublisher
480
480
 
481
- config = IMSConfig.from_env()
481
+ config = RosettaConfig.from_env()
482
482
  client = RAGFlowClient(
483
483
  api_key=config.api_key,
484
484
  base_url=config.base_url,
@@ -38,8 +38,8 @@ src/rosetta-cli/
38
38
  │ ├── cli.py # CLI entry point
39
39
  │ ├── commands/ # Command implementations
40
40
  │ ├── services/ # Shared business logic
41
- │ ├── ims_config.py # Configuration management
42
- │ ├── ims_publisher.py # Publishing orchestration
41
+ │ ├── rosetta_config.py # Configuration management
42
+ │ ├── rosetta_publisher.py # Publishing orchestration
43
43
  │ └── ragflow_client.py # RAGFlow SDK wrapper
44
44
  ├── env.template # Environment configuration template
45
45
  ├── tests/ # CLI unit tests
@@ -302,29 +302,29 @@ client.verify_connection()
302
302
  client.get_system_health()
303
303
  ```
304
304
 
305
- #### IMSConfig (`ims_config.py`)
305
+ #### RosettaConfig (`rosetta_config.py`)
306
306
 
307
307
  Configuration management with smart .env discovery:
308
308
 
309
309
  ```python
310
- from rosetta_cli.ims_config import IMSConfig
310
+ from rosetta_cli.rosetta_config import RosettaConfig
311
311
 
312
312
  # Auto-discover .env (searches cwd, script dir, git root)
313
- config = IMSConfig.from_env()
313
+ config = RosettaConfig.from_env()
314
314
 
315
315
  # Use specific environment
316
- config = IMSConfig.from_env(environment="production")
316
+ config = RosettaConfig.from_env(environment="production")
317
317
 
318
318
  # Validate configuration
319
319
  config.validate()
320
320
  ```
321
321
 
322
- #### ContentPublisher (`ims_publisher.py`)
322
+ #### ContentPublisher (`rosetta_publisher.py`)
323
323
 
324
324
  Publishing logic with metadata extraction:
325
325
 
326
326
  ```python
327
- from rosetta_cli.ims_publisher import ContentPublisher
327
+ from rosetta_cli.rosetta_publisher import ContentPublisher
328
328
 
329
329
  publisher = ContentPublisher(client, config, workspace_root)
330
330
 
@@ -448,10 +448,10 @@ uvx rosetta-cli@latest publish ../../instructions --force
448
448
  ```python
449
449
  from pathlib import Path
450
450
  from rosetta_cli.ragflow_client import RAGFlowClient, DocumentMetadata
451
- from rosetta_cli.ims_config import IMSConfig
452
- from rosetta_cli.ims_publisher import ContentPublisher
451
+ from rosetta_cli.rosetta_config import RosettaConfig
452
+ from rosetta_cli.rosetta_publisher import ContentPublisher
453
453
 
454
- config = IMSConfig.from_env()
454
+ config = RosettaConfig.from_env()
455
455
  client = RAGFlowClient(
456
456
  api_key=config.api_key,
457
457
  base_url=config.base_url,
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rosetta-cli"
7
- version = "2.0.21"
7
+ version = "3.0.1"
8
8
  description = "Rosetta CLI for publishing knowledge base content to RAGFlow"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -13,11 +13,11 @@ from .commands.list_command import ListCommand
13
13
  from .commands.parse_command import ParseCommand
14
14
  from .commands.publish_command import PublishCommand
15
15
  from .commands.verify_command import VerifyCommand
16
- from .ims_config import IMSConfig
16
+ from .rosetta_config import RosettaConfig
17
17
  from .ragflow_client import RAGFlowClient
18
18
  from .typing_utils import CommandArgs
19
19
 
20
- CommandClass: TypeAlias = Callable[[RAGFlowClient, IMSConfig], BaseCommand]
20
+ CommandClass: TypeAlias = Callable[[RAGFlowClient, RosettaConfig], BaseCommand]
21
21
 
22
22
 
23
23
  # Command registry mapping command names to their classes
@@ -35,7 +35,7 @@ def _print_version() -> None:
35
35
  print(f"Rosetta Version: {_CLI_VERSION}")
36
36
 
37
37
 
38
- def execute_command(command_name: str, args: CommandArgs, client: RAGFlowClient, config: IMSConfig) -> int:
38
+ def execute_command(command_name: str, args: CommandArgs, client: RAGFlowClient, config: RosettaConfig) -> int:
39
39
  """
40
40
  Execute a command by name using the command registry.
41
41
 
@@ -361,7 +361,7 @@ Frontmatter Metadata (publish flow):
361
361
 
362
362
  try:
363
363
  # Load configuration
364
- config = IMSConfig.from_env(env_file=args.env_file, environment=args.env)
364
+ config = RosettaConfig.from_env(env_file=args.env_file, environment=args.env)
365
365
 
366
366
  # Validate configuration
367
367
  config.validate()
@@ -0,0 +1,5 @@
1
+ """Rosetta Commands Package - Command pattern implementations for Rosetta CLI"""
2
+
3
+ from .base_command import BaseCommand
4
+
5
+ __all__ = ['BaseCommand']
@@ -1,32 +1,32 @@
1
1
  """
2
2
  Base Command Abstract Class
3
3
 
4
- Defines the interface and common functionality for all IMS CLI commands.
4
+ Defines the interface and common functionality for all Rosetta CLI commands.
5
5
  """
6
6
 
7
7
  import time
8
8
  from abc import ABC, abstractmethod
9
9
 
10
- from ..ims_config import IMSConfig
10
+ from ..rosetta_config import RosettaConfig
11
11
  from ..ragflow_client import RAGFlowClient
12
12
  from ..typing_utils import CommandArgs
13
13
 
14
14
 
15
15
  class BaseCommand(ABC):
16
16
  """
17
- Abstract base class for all IMS CLI commands.
17
+ Abstract base class for all Rosetta CLI commands.
18
18
 
19
19
  Provides common functionality for authentication, timing, and error handling.
20
20
  Each command must implement the execute() method.
21
21
  """
22
22
 
23
- def __init__(self, client: RAGFlowClient, config: IMSConfig):
23
+ def __init__(self, client: RAGFlowClient, config: RosettaConfig):
24
24
  """
25
25
  Initialize command with RAGFlow client and configuration.
26
26
 
27
27
  Args:
28
28
  client: RAGFlow client instance
29
- config: IMS configuration
29
+ config: Rosetta configuration
30
30
  """
31
31
  self.client = client
32
32
  self.config = config
@@ -115,6 +115,7 @@ class ParseCommand(BaseCommand):
115
115
  print(f"Found {len(documents)} document(s) (force mode - parsing all)\n")
116
116
 
117
117
  for document in documents:
118
+ status = self._count_parse_status(status_counts, document)
118
119
  doc_id = getattr(document, 'id', None)
119
120
  if doc_id:
120
121
  docs_to_parse.append({
@@ -122,7 +123,7 @@ class ParseCommand(BaseCommand):
122
123
  "name": getattr(document, 'name', 'Untitled'),
123
124
  "dataset_id": dataset.id,
124
125
  "folder": ".",
125
- "status": getattr(document, 'run', 'UNSTART')
126
+ "status": status
126
127
  })
127
128
  else:
128
129
  # Default mode: filter by status (need parsing)
@@ -131,10 +132,17 @@ class ParseCommand(BaseCommand):
131
132
  statuses=["FAIL", "UNSTART", "CANCEL"],
132
133
  limit=self.config.page_size
133
134
  )
135
+
136
+ # Tally skipped documents from the full list so the summary reflects
137
+ # what this run will not re-trigger.
138
+ all_documents = dataset.list_documents(page_size=self.config.page_size)
139
+ for document in all_documents:
140
+ self._count_parse_status(status_counts, document)
134
141
 
135
142
  print(f"Found {len(documents_needing_parse)} document(s) needing parsing\n")
136
143
 
137
144
  for document in documents_needing_parse:
145
+ status = self._count_parse_status(status_counts, document)
138
146
  doc_id = getattr(document, 'id', None)
139
147
  if doc_id:
140
148
  docs_to_parse.append({
@@ -142,10 +150,19 @@ class ParseCommand(BaseCommand):
142
150
  "name": getattr(document, 'name', 'Untitled'),
143
151
  "dataset_id": dataset.id,
144
152
  "folder": ".",
145
- "status": getattr(document, 'run', 'UNSTART')
153
+ "status": status
146
154
  })
147
155
 
148
156
  return docs_to_parse, status_counts
157
+
158
+ def _count_parse_status(self, status_counts: dict[str, int], document: object) -> str:
159
+ """Tally a document's parse status and return it."""
160
+ status = getattr(document, 'run', 'UNSTART')
161
+ if status == 'DONE':
162
+ status_counts['done'] += 1
163
+ elif status == 'RUNNING':
164
+ status_counts['running'] += 1
165
+ return status
149
166
 
150
167
  def _print_parse_status(self, docs_to_parse: list[JsonDict], status_counts: dict[str, int], args: CommandArgs) -> None:
151
168
  """Print parsing status."""
@@ -4,9 +4,9 @@ Publish Command - Upload knowledge base content to RAGFlow
4
4
 
5
5
  from pathlib import Path
6
6
 
7
- from ..ims_publisher import ContentPublisher
7
+ from ..rosetta_publisher import ContentPublisher
8
8
  from ..services.auth_service import AuthService
9
- from ..ims_utils import resolve_workspace_root
9
+ from ..rosetta_utils import resolve_workspace_root
10
10
 
11
11
  from .base_command import BaseCommand
12
12
  from ..typing_utils import CommandArgs
@@ -1,7 +1,7 @@
1
1
  """
2
- RAGFlow Client Wrapper for IMS Publishing
2
+ RAGFlow Client Wrapper for Rosetta Publishing
3
3
 
4
- This module provides a wrapper around the ragflow-sdk for IMS-specific operations.
4
+ This module provides a wrapper around the ragflow-sdk for Rosetta-specific operations.
5
5
 
6
6
  Key Features:
7
7
  - Dataset management with template resolution (aia-{release})
@@ -22,7 +22,7 @@ from typing import Any, Dict, List, Optional, cast
22
22
  from ragflow_sdk import RAGFlow
23
23
  from ragflow_sdk.modules.dataset import DataSet
24
24
  from ragflow_sdk.modules.document import Document
25
- from .ims_utils import retry_call
25
+ from .rosetta_utils import retry_call
26
26
  from .typing_utils import DatasetLike, DocumentLike, JsonDict
27
27
 
28
28
 
@@ -51,7 +51,7 @@ def _timed(label: str) -> _Timer:
51
51
 
52
52
  @dataclass
53
53
  class DocumentMetadata:
54
- """Metadata structure for IMS documents"""
54
+ """Metadata structure for Rosetta documents"""
55
55
  tags: list[str]
56
56
  domain: str
57
57
  release: str
@@ -90,7 +90,7 @@ class RAGFlowClient:
90
90
  Wrapper class for RAGFlow SDK operations.
91
91
 
92
92
  Provides high-level methods for dataset and document management
93
- with IMS-specific functionality like tag-in-title format and
93
+ with Rosetta-specific functionality like tag-in-title format and
94
94
  change detection.
95
95
 
96
96
  Usage:
@@ -572,7 +572,7 @@ class RAGFlowClient:
572
572
  # Ensure dataset exists (dry_run gates the underlying create_dataset call)
573
573
  dataset = self._ensure_dataset(
574
574
  resolved_name,
575
- f"IMS Knowledge - Release {metadata.release}" if metadata.release else "IMS Knowledge",
575
+ f"Rosetta Knowledge - Release {metadata.release}" if metadata.release else "Rosetta Knowledge",
576
576
  dry_run=dry_run,
577
577
  )
578
578
  if dataset is None:
@@ -1,5 +1,5 @@
1
1
  """
2
- IMS Authentication Module
2
+ Rosetta Authentication Module
3
3
 
4
4
  Handles API key verification and connection management for RAGFlow.
5
5
 
@@ -9,15 +9,15 @@ Features:
9
9
  - System health checks
10
10
  """
11
11
 
12
- from .ims_config import IMSConfig
12
+ from .rosetta_config import RosettaConfig
13
13
  from .ragflow_client import AuthenticationError, RAGFlowClient
14
14
  from .typing_utils import JsonDict
15
15
 
16
16
 
17
- class IMSAuthManager:
17
+ class RosettaAuthManager:
18
18
  """Manages RAGFlow API key authentication and connection verification."""
19
19
 
20
- def __init__(self, client: RAGFlowClient, config: IMSConfig):
20
+ def __init__(self, client: RAGFlowClient, config: RosettaConfig):
21
21
  """
22
22
  Initialize the authentication manager.
23
23
 
@@ -1,8 +1,8 @@
1
1
  """
2
- Configuration management for IMS Publishing
2
+ Configuration management for Rosetta Publishing
3
3
 
4
4
  Handles environment variables and configuration loading for RAGFlow-based
5
- IMS publishing tools.
5
+ Rosetta publishing tools.
6
6
  """
7
7
 
8
8
  import logging
@@ -75,9 +75,9 @@ def _first_subdomain(url: str) -> str | None:
75
75
 
76
76
 
77
77
  @dataclass
78
- class IMSConfig:
78
+ class RosettaConfig:
79
79
  """
80
- RAGFlow configuration for IMS publishing.
80
+ RAGFlow configuration for Rosetta publishing.
81
81
 
82
82
  Environment Variables:
83
83
  RAGFLOW_BASE_URL: RAGFlow instance URL (e.g., http://ragflow.local)
@@ -95,11 +95,11 @@ class IMSConfig:
95
95
  ENVIRONMENT: Environment name (default: "local")
96
96
 
97
97
  Examples:
98
- >>> config = IMSConfig.from_env(".env")
98
+ >>> config = RosettaConfig.from_env(".env")
99
99
  >>> print(config.base_url)
100
100
  http://ragflow.local
101
101
 
102
- >>> config = IMSConfig.from_env_vars()
102
+ >>> config = RosettaConfig.from_env_vars()
103
103
  >>> client = RAGFlowClient(config.api_key, config.base_url)
104
104
  """
105
105
 
@@ -119,7 +119,7 @@ class IMSConfig:
119
119
  cls,
120
120
  env_file: str | None = None,
121
121
  environment: str | None = None
122
- ) -> "IMSConfig":
122
+ ) -> "RosettaConfig":
123
123
  """
124
124
  Load configuration from .env file.
125
125
 
@@ -134,7 +134,7 @@ class IMSConfig:
134
134
  Looks for .env.<environment> or .env files.
135
135
 
136
136
  Returns:
137
- IMSConfig instance
137
+ RosettaConfig instance
138
138
 
139
139
  Raises:
140
140
  FileNotFoundError: If env file cannot be found or is not provided
@@ -142,14 +142,14 @@ class IMSConfig:
142
142
 
143
143
  Examples:
144
144
  # Explicit file path
145
- >>> config = IMSConfig.from_env("ragflow.env")
145
+ >>> config = RosettaConfig.from_env("ragflow.env")
146
146
 
147
147
  # Auto-discovery with environment
148
- >>> config = IMSConfig.from_env(environment="remote")
148
+ >>> config = RosettaConfig.from_env(environment="remote")
149
149
  # Searches for: .env.remote, then .env
150
150
 
151
151
  # Auto-discovery (looks for .env)
152
- >>> config = IMSConfig.from_env()
152
+ >>> config = RosettaConfig.from_env()
153
153
  """
154
154
  # Determine which file to load
155
155
  env_path: Path
@@ -180,7 +180,7 @@ class IMSConfig:
180
180
  return cls.from_env_vars(environment=environment)
181
181
 
182
182
  @classmethod
183
- def from_env_vars(cls, environment: str | None = None) -> "IMSConfig":
183
+ def from_env_vars(cls, environment: str | None = None) -> "RosettaConfig":
184
184
  """
185
185
  Load configuration from environment variables.
186
186
 
@@ -192,7 +192,7 @@ class IMSConfig:
192
192
  "local" when unset.
193
193
 
194
194
  Returns:
195
- IMSConfig instance
195
+ RosettaConfig instance
196
196
 
197
197
  Raises:
198
198
  ValueError: If RAGFLOW_API_KEY is missing
@@ -200,7 +200,7 @@ class IMSConfig:
200
200
  Examples:
201
201
  >>> os.environ["RAGFLOW_BASE_URL"] = "http://ragflow.local"
202
202
  >>> os.environ["RAGFLOW_API_KEY"] = "ragflow-xxx"
203
- >>> config = IMSConfig.from_env_vars()
203
+ >>> config = RosettaConfig.from_env_vars()
204
204
  """
205
205
  base_url = os.getenv("RAGFLOW_BASE_URL", "http://ragflow.local")
206
206
  api_key = os.getenv("RAGFLOW_API_KEY", "")
@@ -280,7 +280,7 @@ class IMSConfig:
280
280
  env_file: Path to .env file to create/update
281
281
 
282
282
  Examples:
283
- >>> config = IMSConfig(...)
283
+ >>> config = RosettaConfig(...)
284
284
  >>> config.save_credentials("ragflow.env")
285
285
  """
286
286
  env_path = Path(env_file)
@@ -323,7 +323,7 @@ class IMSConfig:
323
323
  """String representation (masks API key)"""
324
324
  masked_key = f"{self.api_key[:10]}..." if len(self.api_key) > 10 else "***"
325
325
  return (
326
- f"IMSConfig(\n"
326
+ f"RosettaConfig(\n"
327
327
  f" base_url={self.base_url}\n"
328
328
  f" api_key={masked_key}\n"
329
329
  f" dataset_default={self.dataset_default}\n"
@@ -1,5 +1,5 @@
1
1
  """
2
- IMS Publisher Module
2
+ Rosetta Publisher Module
3
3
 
4
4
  Reads knowledge base content files and publishes them to RAGFlow with automatic metadata extraction
5
5
  from folder structure.
@@ -1,4 +1,4 @@
1
- """IMS Services Package - Service layer for common operations"""
1
+ """Rosetta Services Package - Service layer for common operations"""
2
2
 
3
3
  from .document_data import DocumentData
4
4
  from .document_service import DocumentService
@@ -8,25 +8,25 @@ Eliminates code duplication across commands.
8
8
  import time
9
9
  from typing import Any, Dict, Optional
10
10
 
11
- from ..ims_auth import IMSAuthManager
12
- from ..ims_config import IMSConfig
11
+ from ..rosetta_auth import RosettaAuthManager
12
+ from ..rosetta_config import RosettaConfig
13
13
  from ..ragflow_client import RAGFlowClient
14
14
 
15
15
 
16
16
  class AuthService:
17
17
  """Service for handling authentication operations"""
18
18
 
19
- def __init__(self, client: RAGFlowClient, config: IMSConfig):
19
+ def __init__(self, client: RAGFlowClient, config: RosettaConfig):
20
20
  """
21
21
  Initialize AuthService.
22
22
 
23
23
  Args:
24
24
  client: RAGFlow client instance
25
- config: IMS configuration
25
+ config: Rosetta configuration
26
26
  """
27
27
  self.client = client
28
28
  self.config = config
29
- self.auth_manager = IMSAuthManager(client, config)
29
+ self.auth_manager = RosettaAuthManager(client, config)
30
30
 
31
31
  def verify_api_key(self) -> tuple[bool, float]:
32
32
  """
@@ -74,13 +74,13 @@ class AuthService:
74
74
  return success
75
75
 
76
76
  @staticmethod
77
- def verify_or_exit(client: RAGFlowClient, config: IMSConfig) -> None:
77
+ def verify_or_exit(client: RAGFlowClient, config: RosettaConfig) -> None:
78
78
  """
79
79
  Verify API key and exit if verification fails.
80
80
 
81
81
  Args:
82
82
  client: RAGFlow client instance
83
- config: IMS configuration
83
+ config: Rosetta configuration
84
84
 
85
85
  Raises:
86
86
  SystemExit: If verification fails
@@ -7,20 +7,20 @@ Eliminates code duplication across commands.
7
7
 
8
8
  from typing import List, Optional
9
9
 
10
- from ..ims_config import IMSConfig
10
+ from ..rosetta_config import RosettaConfig
11
11
  from ..ragflow_client import RAGFlowClient
12
12
 
13
13
 
14
14
  class DatasetService:
15
15
  """Service for handling dataset operations"""
16
16
 
17
- def __init__(self, client: RAGFlowClient, config: IMSConfig):
17
+ def __init__(self, client: RAGFlowClient, config: RosettaConfig):
18
18
  """
19
19
  Initialize DatasetService.
20
20
 
21
21
  Args:
22
22
  client: RAGFlow client instance
23
- config: IMS configuration
23
+ config: Rosetta configuration
24
24
  """
25
25
  self.client = client
26
26
  self.config = config
@@ -1,4 +1,4 @@
1
- """Shared typing helpers for IMS CLI tools."""
1
+ """Shared typing helpers for Rosetta CLI tools."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rosetta-cli
3
- Version: 2.0.21
3
+ Version: 3.0.1
4
4
  Summary: Rosetta CLI for publishing knowledge base content to RAGFlow
5
5
  Author-email: Rosetta Team <rosetta-support@griddynamics.com>
6
6
  License-Expression: Apache-2.0
@@ -65,8 +65,8 @@ src/rosetta-cli/
65
65
  │ ├── cli.py # CLI entry point
66
66
  │ ├── commands/ # Command implementations
67
67
  │ ├── services/ # Shared business logic
68
- │ ├── ims_config.py # Configuration management
69
- │ ├── ims_publisher.py # Publishing orchestration
68
+ │ ├── rosetta_config.py # Configuration management
69
+ │ ├── rosetta_publisher.py # Publishing orchestration
70
70
  │ └── ragflow_client.py # RAGFlow SDK wrapper
71
71
  ├── env.template # Environment configuration template
72
72
  ├── tests/ # CLI unit tests
@@ -329,29 +329,29 @@ client.verify_connection()
329
329
  client.get_system_health()
330
330
  ```
331
331
 
332
- #### IMSConfig (`ims_config.py`)
332
+ #### RosettaConfig (`rosetta_config.py`)
333
333
 
334
334
  Configuration management with smart .env discovery:
335
335
 
336
336
  ```python
337
- from rosetta_cli.ims_config import IMSConfig
337
+ from rosetta_cli.rosetta_config import RosettaConfig
338
338
 
339
339
  # Auto-discover .env (searches cwd, script dir, git root)
340
- config = IMSConfig.from_env()
340
+ config = RosettaConfig.from_env()
341
341
 
342
342
  # Use specific environment
343
- config = IMSConfig.from_env(environment="production")
343
+ config = RosettaConfig.from_env(environment="production")
344
344
 
345
345
  # Validate configuration
346
346
  config.validate()
347
347
  ```
348
348
 
349
- #### ContentPublisher (`ims_publisher.py`)
349
+ #### ContentPublisher (`rosetta_publisher.py`)
350
350
 
351
351
  Publishing logic with metadata extraction:
352
352
 
353
353
  ```python
354
- from rosetta_cli.ims_publisher import ContentPublisher
354
+ from rosetta_cli.rosetta_publisher import ContentPublisher
355
355
 
356
356
  publisher = ContentPublisher(client, config, workspace_root)
357
357
 
@@ -475,10 +475,10 @@ uvx rosetta-cli@latest publish ../../instructions --force
475
475
  ```python
476
476
  from pathlib import Path
477
477
  from rosetta_cli.ragflow_client import RAGFlowClient, DocumentMetadata
478
- from rosetta_cli.ims_config import IMSConfig
479
- from rosetta_cli.ims_publisher import ContentPublisher
478
+ from rosetta_cli.rosetta_config import RosettaConfig
479
+ from rosetta_cli.rosetta_publisher import ContentPublisher
480
480
 
481
- config = IMSConfig.from_env()
481
+ config = RosettaConfig.from_env()
482
482
  client = RAGFlowClient(
483
483
  api_key=config.api_key,
484
484
  base_url=config.base_url,
@@ -5,11 +5,11 @@ pyproject.toml
5
5
  rosetta_cli/__init__.py
6
6
  rosetta_cli/__main__.py
7
7
  rosetta_cli/cli.py
8
- rosetta_cli/ims_auth.py
9
- rosetta_cli/ims_config.py
10
- rosetta_cli/ims_publisher.py
11
- rosetta_cli/ims_utils.py
12
8
  rosetta_cli/ragflow_client.py
9
+ rosetta_cli/rosetta_auth.py
10
+ rosetta_cli/rosetta_config.py
11
+ rosetta_cli/rosetta_publisher.py
12
+ rosetta_cli/rosetta_utils.py
13
13
  rosetta_cli/typing_utils.py
14
14
  rosetta_cli.egg-info/PKG-INFO
15
15
  rosetta_cli.egg-info/SOURCES.txt
@@ -1,5 +0,0 @@
1
- """IMS Commands Package - Command pattern implementations for IMS CLI"""
2
-
3
- from .base_command import BaseCommand
4
-
5
- __all__ = ['BaseCommand']
File without changes
File without changes
File without changes