fabricatio 0.2.6.dev8__cp312-cp312-manylinux_2_34_x86_64.whl → 0.2.7.dev0__cp312-cp312-manylinux_2_34_x86_64.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.
@@ -24,10 +24,10 @@ class ExtractArticleEssence(Action):
24
24
  output_key: str = "article_essence"
25
25
  """The key of the output data."""
26
26
 
27
- async def _execute[P: PathLike | str](
27
+ async def _execute(
28
28
  self,
29
29
  task_input: Task,
30
- reader: Callable[[P], str] = lambda p: Path(p).read_text(encoding="utf-8"),
30
+ reader: Callable[[str], str] = lambda p: Path(p).read_text(encoding="utf-8"),
31
31
  **_,
32
32
  ) -> Optional[List[ArticleEssence]]:
33
33
  if not task_input.dependencies:
@@ -118,7 +118,7 @@ class CorrectOutline(Action):
118
118
  article_proposal: ArticleProposal,
119
119
 
120
120
  **_,
121
- ) -> Optional[str]:
121
+ ) -> ArticleOutline:
122
122
  ret = None
123
123
  while await confirm("Do you want to correct the outline?").ask_async():
124
124
  rprint(article_outline.finalized_dump())
@@ -126,3 +126,6 @@ class CorrectOutline(Action):
126
126
  ...
127
127
  ret = await self.correct_obj(article_outline, article_proposal.display(), topic=topic)
128
128
  return ret or article_outline
129
+
130
+
131
+
fabricatio/actions/rag.py CHANGED
@@ -6,6 +6,8 @@ from fabricatio.capabilities.rag import RAG
6
6
  from fabricatio.journal import logger
7
7
  from fabricatio.models.action import Action
8
8
  from fabricatio.models.generic import PrepareVectorization
9
+ from fabricatio.models.task import Task
10
+ from questionary import text
9
11
 
10
12
 
11
13
  class InjectToDB(Action, RAG):
@@ -14,13 +16,58 @@ class InjectToDB(Action, RAG):
14
16
  output_key: str = "collection_name"
15
17
 
16
18
  async def _execute[T: PrepareVectorization](
17
- self, to_inject: Optional[T] | List[Optional[T]], collection_name: Optional[str] = "my_collection", **_
19
+ self, to_inject: Optional[T] | List[Optional[T]], collection_name: str = "my_collection",override_inject:bool=False, **_
18
20
  ) -> Optional[str]:
19
21
  if not isinstance(to_inject, list):
20
22
  to_inject = [to_inject]
21
23
  logger.info(f"Injecting {len(to_inject)} items into the collection '{collection_name}'")
24
+ if override_inject:
25
+ self.check_client().client.drop_collection(collection_name)
22
26
  await self.view(collection_name, create=True).consume_string(
23
- [t.prepare_vectorization(self.embedding_max_sequence_length) for t in to_inject if isinstance(t,PrepareVectorization)],
27
+ [
28
+ t.prepare_vectorization(self.embedding_max_sequence_length)
29
+ for t in to_inject
30
+ if isinstance(t, PrepareVectorization)
31
+ ],
24
32
  )
25
33
 
26
34
  return collection_name
35
+
36
+
37
+ class RAGTalk(Action, RAG):
38
+ """RAG-enabled conversational action that processes user questions based on a given task.
39
+
40
+ This action establishes an interactive conversation loop where it retrieves context-relevant
41
+ information to answer user queries according to the assigned task briefing.
42
+
43
+ Notes:
44
+ task_input: Task briefing that guides how to respond to user questions
45
+ collection_name: Name of the vector collection to use for retrieval (default: "my_collection")
46
+
47
+ Returns:
48
+ Number of conversation turns completed before termination
49
+ """
50
+
51
+ output_key: str = "task_output"
52
+
53
+ async def _execute(self, task_input: Task[str], **kwargs) -> int:
54
+ collection_name = kwargs.get("collection_name", "my_collection")
55
+ counter = 0
56
+
57
+ self.view(collection_name, create=True)
58
+
59
+ try:
60
+ while True:
61
+ user_say = await text("User: ").ask_async()
62
+ if user_say is None:
63
+ break
64
+ gpt_say = await self.aask_retrieved(
65
+ user_say,
66
+ user_say,
67
+ extra_system_message=f"You have to answer to user obeying task assigned to you:\n{task_input.briefing}",
68
+ )
69
+ print(f"GPT: {gpt_say}") # noqa: T201
70
+ counter += 1
71
+ except KeyboardInterrupt:
72
+ logger.info(f"executed talk action {counter} times")
73
+ return counter
@@ -55,7 +55,7 @@ class Correct(Review):
55
55
  if supervisor_check:
56
56
  await review_res.supervisor_check()
57
57
  if "default" in kwargs:
58
- cast(ReviewKwargs[None], kwargs)["default"] = None
58
+ cast('ReviewKwargs[None]', kwargs)["default"] = None
59
59
  return await self.propose(
60
60
  obj.__class__,
61
61
  TEMPLATE_MANAGER.render_template(
@@ -89,7 +89,7 @@ class Correct(Review):
89
89
  await review_res.supervisor_check()
90
90
 
91
91
  if "default" in kwargs:
92
- cast(ReviewKwargs[None], kwargs)["default"] = None
92
+ cast('ReviewKwargs[None]', kwargs)["default"] = None
93
93
  return await self.ageneric_string(
94
94
  TEMPLATE_MANAGER.render_template(
95
95
  configs.templates.correct_template, {"content": input_text, "review": review_res.display()}
@@ -275,7 +275,7 @@ class RAG(EmbeddingUsage):
275
275
  if isinstance(query, str):
276
276
  query = [query]
277
277
  return cast(
278
- List[str],
278
+ 'List[str]',
279
279
  await self.afetch_document(
280
280
  vecs=(await self.vectorize(query)),
281
281
  desired_fields="text",
@@ -121,7 +121,7 @@ class ReviewResult[T](ProposedAble, Display):
121
121
  ReviewResult[K]: The current instance with updated reference type.
122
122
  """
123
123
  self._ref = ref # pyright: ignore [reportAttributeAccessIssue]
124
- return cast(ReviewResult[K], self)
124
+ return cast("ReviewResult[K]", self)
125
125
 
126
126
  def deref(self) -> T:
127
127
  """Retrieve the referenced object that was reviewed.
@@ -200,7 +200,7 @@ class Review(GiveRating, Propose):
200
200
  ReviewResult[Task[T]]: A review result containing identified problems and proposed solutions,
201
201
  with a reference to the original task.
202
202
  """
203
- return cast(ReviewResult[Task[T]], await self.review_obj(task, **kwargs))
203
+ return cast('ReviewResult[Task[T]]', await self.review_obj(task, **kwargs))
204
204
 
205
205
  async def review_string(
206
206
  self,
@@ -23,7 +23,7 @@ class ProposeTask(WithBriefing, Propose):
23
23
  self,
24
24
  prompt: str,
25
25
  **kwargs: Unpack[ValidateKwargs[Task[T]]],
26
- ) -> Task[T]:
26
+ ) -> Optional[Task[T]]:
27
27
  """Asynchronously proposes a task based on a given prompt and parameters.
28
28
 
29
29
  Parameters:
@@ -37,7 +37,7 @@ class ProposeTask(WithBriefing, Propose):
37
37
  logger.error(err := f"{self.name}: Prompt must be provided.")
38
38
  raise ValueError(err)
39
39
 
40
- return await self.propose(Task, prompt, **self.prepend(cast(Dict[str, Any], kwargs)))
40
+ return await self.propose(Task, prompt, **self.prepend(cast('Dict[str, Any]', kwargs)))
41
41
 
42
42
 
43
43
  class HandleTask(WithBriefing, ToolBoxUsage):
@@ -81,7 +81,7 @@ class HandleTask(WithBriefing, ToolBoxUsage):
81
81
  return await self.aask_validate(
82
82
  question=q,
83
83
  validator=_validator,
84
- **self.prepend(cast(Dict[str, Any], kwargs)),
84
+ **self.prepend(cast('Dict[str, Any]', kwargs)),
85
85
  )
86
86
 
87
87
  async def handle_fine_grind(
@@ -48,7 +48,7 @@ class Action(HandleTask, ProposeTask, Correct):
48
48
  self.description = self.description or self.__class__.__doc__ or ""
49
49
 
50
50
  @abstractmethod
51
- async def _execute(self, **cxt) -> Any:
51
+ async def _execute(self,*_, **cxt) -> Any: # noqa: ANN002
52
52
  """Execute the action logic with the provided context arguments.
53
53
 
54
54
  This method must be implemented by subclasses to define the actual behavior.
@@ -3,11 +3,12 @@
3
3
  from typing import List, Self
4
4
 
5
5
  from fabricatio.models.generic import Base, Display, FinalizedDumpAble, PrepareVectorization, ProposedAble
6
- from pydantic import Field
7
-
8
6
 
9
7
  # <editor-fold desc="ArticleEssence">
10
- class Equation(Base):
8
+ from pydantic import BaseModel, Field
9
+
10
+
11
+ class Equation(BaseModel):
11
12
  """Mathematical formalism specification for research contributions.
12
13
 
13
14
  Encodes equations with dual representation: semantic meaning and typeset-ready notation.
@@ -15,93 +16,123 @@ class Equation(Base):
15
16
 
16
17
  description: str
17
18
  """Equation significance structured in three elements:
18
- 1. Physical/conceptual meaning
19
- 2. Role in technical workflow
20
- 3. Relationship to paper's core contribution
21
- Example: 'Defines constrained search space dimensionality reduction. Used in architecture optimization phase (Section 3.2). Enables 40% parameter reduction.'"""
19
+ 1. Physical/conceptual meaning of the equation.
20
+ 2. Role in technical workflow (e.g., derivation, optimization, or analysis).
21
+ 3. Relationship to the paper's core contribution (e.g., theoretical foundation, empirical validation).
22
+ Example: "Defines constrained search space dimensionality reduction. Used in architecture optimization phase (Section 3.2). Enables 40% parameter reduction."
23
+ """
22
24
 
23
25
  latex_code: str
24
26
  """LaTeX representation following academic typesetting standards:
25
- - Must use equation environment
26
- - Multiline equations aligned at '='
27
- - Unit annotations where applicable
28
- Example: r'\begin{equation} \\mathcal{L}_{NAS} = \alpha \\|\theta\\|_2 + \beta H(p) \\end{equation}'"""
27
+ - Must use equation environment (e.g., `equation`, `align`).
28
+ - Multiline equations must align at '=' using `&`.
29
+ - Include unit annotations where applicable.
30
+ Example: "\\begin{equation} \\mathcal{L}_{NAS} = \\alpha \\|\\theta\\|_2 + \\beta H(p) \\end{equation}"
31
+ """
29
32
 
30
33
 
31
- class Figure(Base):
34
+ class Figure(BaseModel):
32
35
  """Visual component specification for technical communication.
33
36
 
34
- Combines graphical assets with structured academic captioning.
37
+ Combines graphical assets with structured academic captioning.Extracted from the article provided
35
38
  """
36
39
 
37
40
  description: str
38
41
  """Figure interpretation guide containing:
39
- 1. Key visual elements mapping
40
- 2. Data representation methodology
41
- 3. Connection to research findings
42
- Example: 'Architecture search space topology (left) vs. convergence curves (right). Demonstrates NAS efficiency gains through constrained search.'"""
42
+ 1. Key visual elements mapping (e.g., axes, legends, annotations).
43
+ 2. Data representation methodology (e.g., visualization type, statistical measures).
44
+ 3. Connection to research findings (e.g., supports hypothesis, demonstrates performance).
45
+ Example: "Architecture search space topology (left) vs. convergence curves (right). Demonstrates NAS efficiency gains through constrained search."
46
+ """
43
47
 
44
48
  figure_caption: str
45
49
  """Complete caption following Nature-style guidelines:
46
- 1. Brief overview statement (首句总结)
47
- 2. Technical detail layer
48
- 3. Result implication
49
- Example: 'Figure 3: Differentiable NAS framework. (a) Search space topology with constrained dimensions. (b) Training convergence across language pairs. Dashed lines indicate baseline methods.'"""
50
+ 1. Brief overview statement (首句总结).
51
+ 2. Technical detail layer (e.g., data sources, experimental conditions).
52
+ 3. Result implication (e.g., key insights, implications for future work).
53
+ Example: "Figure 3: Differentiable NAS framework. (a) Search space topology with constrained dimensions. (b) Training convergence across language pairs. Dashed lines indicate baseline methods."
54
+ """
55
+
56
+ figure_serial_number: int
57
+ """The Image serial number extracted from the Markdown article provided, the path usually in the form of `![](images/1.jpg)`, in this case the serial number is `1`"""
58
+
50
59
 
51
- figure_path: str
52
- """Filesystem path to high-resolution vector graphic (PDF/EPS/SVG).
53
- Strict validation requirements:
54
- - Absolute path under /assets/figures/
55
- - Naming convention: fig[chapter]-[section]_[description].pdf
56
- Example: '/assets/figures/fig3-2_nas_convergence.pdf'"""
60
+ class Algorithm(BaseModel):
61
+ """Algorithm specification for research contributions."""
57
62
 
63
+ title: str
64
+ """Algorithm title with technical focus descriptor (e.g., 'Gradient Descent Optimization').
58
65
 
59
- class Highlightings(Base):
66
+ Tip: Do not attempt to translate the original element titles when generating JSON.
67
+ """
68
+
69
+ description: str
70
+ """Algorithm description with technical focus descriptor:
71
+ - Includes input/output specifications.
72
+ - Describes key steps and their purpose.
73
+ - Explains its role in the research workflow.
74
+ Example: "Proposed algorithm for neural architecture search. Inputs include search space constraints and training data. Outputs optimized architecture."
75
+ """
76
+
77
+
78
+ class Table(BaseModel):
79
+ """Table specification for research contributions."""
80
+
81
+ title: str
82
+ """Table title with technical focus descriptor (e.g., 'Comparison of Model Performance Metrics').
83
+
84
+ Tip: Do not attempt to translate the original element titles when generating JSON.
85
+ """
86
+
87
+ description: str
88
+ """Table description with technical focus descriptor:
89
+ - Includes data source and structure.
90
+ - Explains key columns/rows and their significance.
91
+ - Connects to research findings or hypotheses.
92
+ Example: "Performance metrics for different architectures. Columns represent accuracy, F1-score, and inference time. Highlights efficiency gains of proposed method."
93
+ """
94
+
95
+
96
+ class Highlightings(BaseModel):
60
97
  """Technical showcase aggregator for research artifacts.
61
98
 
62
99
  Curates core scientific components with machine-parseable annotations.
63
100
  """
64
101
 
65
- highlighted_equations: List[Equation] = Field(default_factory=list)
66
- """3-5 pivotal equations representing theoretical contributions.
67
- Each must:
68
- - Use $$ wrapping for display math
69
- - Contain at least one novel operator/symbol
70
- - Reference in Methods/Results sections
71
- Example: Equation describing proposed loss function"""
72
-
73
- highlighted_algorithms: List[str] = Field(default_factory=list)
74
- """Algorithm pseudocode following ACM style:
75
- 1. Numbered steps with bold keywords
76
- 2. Complexity analysis subsection
77
- 3. Novel components marked with ※
78
- Example:
79
- 'Algorithm 1: Constrained NAS
80
- 1. Initialize search space with §3.1 constraints ※
81
- 2. While not converged:
82
- a. Compute gradient ▽θ
83
- b. Update architecture parameters...'"""
102
+ highlighted_equations: List[Equation]
103
+ """3-5 pivotal equations representing theoretical contributions:
104
+ - Each equation must be wrapped in $$ for display math.
105
+ - Contain at least one novel operator/symbol.
106
+ - Be referenced in Methods/Results sections.
107
+ Example: Equation describing proposed loss function.
108
+ """
84
109
 
85
- highlighted_figures: List[Figure] = Field(default_factory=list)
110
+ highlighted_algorithms: List[Algorithm]
111
+ """1-2 key algorithms demonstrating methodological contributions:
112
+ - Include pseudocode or step-by-step descriptions.
113
+ - Highlight innovation in computational approach.
114
+ Example: Algorithm for constrained search space exploration.
115
+
116
+ Tip: Do not attempt to translate the original element titles when generating JSON.
117
+ """
118
+
119
+ highlighted_figures: List[Figure]
86
120
  """4-6 key figures demonstrating:
87
- 1. Framework overview (1 required)
88
- 2. Quantitative results (2-3 required)
89
- 3. Ablation studies (1 optional)
90
- Each must appear in Results/Discussion chapters."""
91
-
92
- highlighted_tables: List[str] = Field(default_factory=list)
93
- """Critical data presentations using booktabs format:
94
- - Minimum 3 comparison baselines
95
- - Statistical significance markers (*/†/‡)
96
- - Standard deviation in parentheses
97
- Example:
98
- \begin{tabular}{lcc}
99
- \toprule
100
- Method & BLEU & Δ Params \\
101
- \\midrule
102
- Ours & 32.4 & -41\\%† \\
103
- \bottomrule
104
- \\end{tabular}"""
121
+ 1. Framework overview (1 required).
122
+ 2. Quantitative results (2-3 required).
123
+ 3. Ablation studies (1 optional).
124
+ Each must appear in Results/Discussion chapters.
125
+ Example: Figure showing architecture topology and convergence curves.
126
+ """
127
+
128
+ highlighted_tables: List[Table]
129
+ """2-3 key tables summarizing:
130
+ - Comparative analysis of methods.
131
+ - Empirical results supporting claims.
132
+ Example: Table comparing model performance across datasets.
133
+
134
+ Tip: Do not attempt to translate the original element titles when generating JSON.
135
+ """
105
136
 
106
137
 
107
138
  class ArticleEssence(ProposedAble, Display, PrepareVectorization):
@@ -109,6 +140,7 @@ class ArticleEssence(ProposedAble, Display, PrepareVectorization):
109
140
 
110
141
  Encodes research artifacts with dual human-machine interpretability.
111
142
  """
143
+
112
144
  title: str = Field(...)
113
145
  """Exact title of the original article without any modification.
114
146
  Must be preserved precisely from the source material without:
@@ -116,7 +148,7 @@ class ArticleEssence(ProposedAble, Display, PrepareVectorization):
116
148
  - Paraphrasing
117
149
  - Adding/removing words
118
150
  - Altering style or formatting
119
- Example: The exact published title as it appears in the original document"""
151
+ """
120
152
 
121
153
  authors: List[str]
122
154
  """Original author names exactly as they appear in the source document. No translation or paraphrasing.
@@ -129,7 +161,7 @@ class ArticleEssence(ProposedAble, Display, PrepareVectorization):
129
161
  publication_year: int
130
162
  """Publication timestamp in ISO 8601 (YYYY format)."""
131
163
 
132
- highlightings: Highlightings = Field(default_factory=Highlightings)
164
+ highlightings: Highlightings
133
165
  """Technical highlight reel containing:
134
166
  - Core equations (Theory)
135
167
  - Key algorithms (Implementation)
@@ -137,9 +169,7 @@ class ArticleEssence(ProposedAble, Display, PrepareVectorization):
137
169
  - Benchmark tables (Evaluation)"""
138
170
 
139
171
  domain: List[str]
140
- """Primary research domains from ACM CCS 2023 taxonomy.
141
- Exactly 2-3 categories required.
142
- Example: ['Computing methodologies → Machine learning']"""
172
+ """Domain tags for research focus."""
143
173
 
144
174
  abstract: str = Field(...)
145
175
  """Three-paragraph structured abstract:
fabricatio/models/tool.py CHANGED
@@ -136,7 +136,9 @@ class ToolExecutor(BaseModel):
136
136
 
137
137
  def inject_tools[M: ModuleType](self, module: Optional[M] = None) -> M:
138
138
  """Inject the tools into the provided module or default."""
139
- module = module or cast(M, module_from_spec(spec=ModuleSpec(name=configs.toolbox.tool_module_name, loader=None)))
139
+ module = module or cast(
140
+ "M", module_from_spec(spec=ModuleSpec(name=configs.toolbox.tool_module_name, loader=None))
141
+ )
140
142
  for tool in self.candidates:
141
143
  logger.debug(f"Injecting tool: {tool.name}")
142
144
  setattr(module, tool.name, tool.invoke)
@@ -144,7 +146,9 @@ class ToolExecutor(BaseModel):
144
146
 
145
147
  def inject_data[M: ModuleType](self, module: Optional[M] = None) -> M:
146
148
  """Inject the data into the provided module or default."""
147
- module = module or cast(M,module_from_spec(spec=ModuleSpec(name=configs.toolbox.data_module_name, loader=None)))
149
+ module = module or cast(
150
+ 'M', module_from_spec(spec=ModuleSpec(name=configs.toolbox.data_module_name, loader=None))
151
+ )
148
152
  for key, value in self.data.items():
149
153
  logger.debug(f"Injecting data: {key}")
150
154
  setattr(module, key, value)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.2.6.dev8
3
+ Version: 0.2.7.dev0
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -1,18 +1,18 @@
1
- fabricatio-0.2.6.dev8.dist-info/METADATA,sha256=GTgXD_uf_Sq2d3rQqEDNMSgnoEWI17uRXZqmUF53Ff4,13693
2
- fabricatio-0.2.6.dev8.dist-info/WHEEL,sha256=7FgAcpQES0h1xhfN9Ugve9FTUilU6sRAr1WJ5ph2cuw,108
3
- fabricatio-0.2.6.dev8.dist-info/licenses/LICENSE,sha256=yDZaTLnOi03bi3Dk6f5IjhLUc5old2yOsihHWU0z-i0,1067
1
+ fabricatio-0.2.7.dev0.dist-info/METADATA,sha256=kbyPqlXHruO4h4035HRgwNcVuz2otPQAkunm_zj-MKc,13693
2
+ fabricatio-0.2.7.dev0.dist-info/WHEEL,sha256=7FgAcpQES0h1xhfN9Ugve9FTUilU6sRAr1WJ5ph2cuw,108
3
+ fabricatio-0.2.7.dev0.dist-info/licenses/LICENSE,sha256=yDZaTLnOi03bi3Dk6f5IjhLUc5old2yOsihHWU0z-i0,1067
4
4
  fabricatio/decorators.py,sha256=cJHsxxbnMhc4SzPl4454CPLuDP3H0qbTrzV_U2rLPrs,6372
5
5
  fabricatio/core.py,sha256=MaEKZ6DDmbdScAY-7F1gwGA6fr7ADX6Mz5rNVi2msFA,6277
6
6
  fabricatio/models/generic.py,sha256=WxT4KBGGZTpqGPSPVwD5mkmhYBjxggZ7n-HKi-Hed4M,13619
7
- fabricatio/models/tool.py,sha256=ATwbOyvOTzrfAKcbOmCqdG3je4-T5jrM6FIw4cDPRDY,6863
7
+ fabricatio/models/tool.py,sha256=ifivEnYiEUtjeRxQkX8vjfyzn1m1acgfrsABbQqCsGs,6912
8
8
  fabricatio/models/role.py,sha256=UgIfGdfIBu4cOug8Nm1a04JCEwjXR_MDZUQhumwMptk,2710
9
- fabricatio/models/extra.py,sha256=e6sWvmBG-U_ErxwITJ1wQGE3xsSuC18xnpxlU9gMY6M,25659
9
+ fabricatio/models/extra.py,sha256=uVVe5Xjv0sg0-HRaM4pCN3iwVZ8CwjdkjrKpp3QVYhc,27091
10
10
  fabricatio/models/kwargs_types.py,sha256=rqhCG2QLj4iyZ5WnLU4IT0xPdzFWvgsz9g6qau3bD1E,4839
11
11
  fabricatio/models/utils.py,sha256=E1Jz7oodbn09OkBspSpzCgKkv0AiuxyQElqCgHF7bVY,5718
12
12
  fabricatio/models/usages.py,sha256=ALB9V0Gfli2T9LDZ_gdvdChXwj6ieDeuK6Qye6NPXgE,30368
13
13
  fabricatio/models/events.py,sha256=UvOc6V3vfjKuvh7irDezJ8EGpsNo5yzLdq4xQexVonw,4063
14
14
  fabricatio/models/task.py,sha256=-EnzpEyM6Z687gF1lPcmA2szEUw6dFpu3lOtseaz95o,10193
15
- fabricatio/models/action.py,sha256=E8PELqsP9ZRwI7xQyXe5wqIPTGQsMk0sHKSnsic0S40,8359
15
+ fabricatio/models/action.py,sha256=Afm3f1eE_KthDcAIVunVa2R6sysvdxxBjPIj5WvfO08,8378
16
16
  fabricatio/toolboxes/fs.py,sha256=OQMdeokYxSNVrCZJAweJ0cYiK4k2QuEiNdIbS5IHIV8,705
17
17
  fabricatio/toolboxes/__init__.py,sha256=dYm_Gd8XolSU_h4wnkA09dlaLDK146eeFz0CUgPZ8_c,380
18
18
  fabricatio/toolboxes/arithmetic.py,sha256=sSTPkKI6-mb278DwQKFO9jKyzc9kCx45xNH7V6bGBpE,1307
@@ -24,19 +24,19 @@ fabricatio/config.py,sha256=n5jU6j0SS8x3crJomwF8_6FI-UPGzEDsxL_zkxSZSkk,16352
24
24
  fabricatio/journal.py,sha256=Op0wC-JlZumnAc_aDmYM4ljnSNLoKEEMfcIRbCF69ow,455
25
25
  fabricatio/__init__.py,sha256=6EjK4SxbnvFxdO9ftkXD9rxSuoPEIITNzUkuMO9s3yU,1092
26
26
  fabricatio/actions/output.py,sha256=wNyLNxjqBlms0hyxap8XUPgN53izipJrCOtpX6aluFQ,626
27
- fabricatio/actions/rag.py,sha256=z1XJ8ZC1oJtVJvpUia8hSb0wnAA1uE61pRDt6QAzC3Y,980
28
- fabricatio/actions/article.py,sha256=m3ejPgLX7WXcg-CfqRjQmanc5qSvCsT_u02wW9Jb23w,4435
27
+ fabricatio/actions/rag.py,sha256=Tsjn9IkO8OlKlhBBnk7J6qh9st61jzD6SUYClGhYs7I,2686
28
+ fabricatio/actions/article.py,sha256=f1r6LDiqGvotZzQOqFBYBQcm0zR7ElQzC6kurgrSuMM,4422
29
29
  fabricatio/_rust_instances.py,sha256=bQmlhUCcxTmRgvw1SfzYzNNpgW_UCjmkYw5f-VPAyg8,304
30
30
  fabricatio/workflows/articles.py,sha256=oHNV5kNKEcOKP55FA7I1SlxQRlk6N26cpem_QYu05g0,1021
31
31
  fabricatio/workflows/rag.py,sha256=uOZXprD479fUhLA6sYvEM8RWcVcUZXXtP0xRbTMPdHE,509
32
32
  fabricatio/parser.py,sha256=OV6bIAfLJ-GfaKoTeIOqS3X3GqCgyvzSJsgYMO3ogj4,6100
33
- fabricatio/capabilities/correct.py,sha256=BiLEAk6e1KbwUMhTexmDfgtlPUct_bG0igDK7CwHqao,5107
34
- fabricatio/capabilities/rag.py,sha256=FxhbHuEaeZudCSgqJD2S-hVZZAMG1Dro8dmLlRnXnEk,16075
33
+ fabricatio/capabilities/correct.py,sha256=Nk1lppraLNDtA5qh-u82D_dUNUwKUqS4YsEbtNXioHo,5111
34
+ fabricatio/capabilities/rag.py,sha256=s7GbIG-i7uuJL1SerGr4tgonjl6s1k2HWWO5XyQsar8,16077
35
35
  fabricatio/capabilities/rating.py,sha256=ZQrKKmmIgnN4zgNnG_GmWa5Nyxpk03JYW32RJ4R5vvQ,14067
36
- fabricatio/capabilities/review.py,sha256=TX7av4b2N7MRDHMowsIZfiujXRRNxjUMNHtCFVA1UTM,10824
36
+ fabricatio/capabilities/review.py,sha256=jX4VluU6pEefqT933AfkZdejxxABzLQrEkKMBm3vHA8,10828
37
37
  fabricatio/capabilities/propose.py,sha256=4QvONVVUp1rs34Te2Rjams6NioEt6FhEAxDWiveQnSg,1544
38
- fabricatio/capabilities/task.py,sha256=llFFKh8MAaTjsp8DtAGD_UUONROfFNxorh6NLys973U,4496
38
+ fabricatio/capabilities/task.py,sha256=Y57GAsEuFZUxNuxEqOaZxeYOzQBAqvG_9kPbuPt7sLI,4510
39
39
  fabricatio/_rust.pyi,sha256=1TvnaXK_QKM8Et05LkZ_vOGR4WISVd9X8lU6OTwFFaU,3376
40
40
  fabricatio/_rust.cpython-312-x86_64-linux-gnu.so,sha256=t1COw3bM_BmYYizdCwuFx_fq0PnhFPZO-zLJTJDkC40,1910320
41
- fabricatio-0.2.6.dev8.data/scripts/tdown,sha256=Y3fBi2TPyjMz2tt8bXf8yB263OBAHob40owbzNsJZvM,4578912
42
- fabricatio-0.2.6.dev8.dist-info/RECORD,,
41
+ fabricatio-0.2.7.dev0.data/scripts/tdown,sha256=Y3fBi2TPyjMz2tt8bXf8yB263OBAHob40owbzNsJZvM,4578912
42
+ fabricatio-0.2.7.dev0.dist-info/RECORD,,