tapps-agents 3.5.38__py3-none-any.whl → 3.5.39__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.
@@ -22,6 +22,8 @@ from pathlib import Path
22
22
  from typing import Literal, TypedDict
23
23
 
24
24
  from tapps_agents.core.llm_behavior import EnforcementConfig
25
+ from tapps_agents.workflow.intent_detector import IntentDetector, WorkflowType
26
+ from tapps_agents.workflow.message_formatter import MessageConfig, MessageFormatter
25
27
 
26
28
  logger = logging.getLogger(__name__)
27
29
 
@@ -140,6 +142,14 @@ class WorkflowEnforcer:
140
142
  # Load config from file
141
143
  self.config = self._load_config(config_path)
142
144
 
145
+ # Initialize intent detector and message formatter (ENH-001-S2, S3)
146
+ self._intent_detector = IntentDetector()
147
+ self._message_formatter = MessageFormatter(MessageConfig(
148
+ use_emoji=True,
149
+ show_benefits=self.config.suggest_workflows,
150
+ show_override=True,
151
+ ))
152
+
143
153
  logger.info(
144
154
  f"WorkflowEnforcer initialized with mode={self.config.mode}, "
145
155
  f"confidence_threshold={self.config.confidence_threshold}"
@@ -322,55 +332,58 @@ class WorkflowEnforcer:
322
332
  - allow: Empty message
323
333
 
324
334
  Note:
325
- Story 1 uses basic message templates.
326
- Story 3 will add MessageFormatter for rich, context-aware messages.
335
+ Uses MessageFormatter (ENH-001-S3) for rich, context-aware messages.
336
+ Uses IntentDetector (ENH-001-S2) for workflow detection and confidence.
327
337
  """
328
338
  # Determine should_block flag
329
339
  should_block = action == "block" and self.config.block_direct_edits
330
340
 
331
- # Generate message based on action
341
+ # Detect intent and get confidence (ENH-001-S2 integration)
342
+ detection_result = self._intent_detector.detect_workflow(
343
+ user_intent=user_intent,
344
+ file_path=file_path if file_path.exists() else None,
345
+ )
346
+ workflow = detection_result.workflow_type
347
+ confidence = detection_result.confidence
348
+
349
+ # Generate message using MessageFormatter (ENH-001-S3 integration)
332
350
  if action == "block":
333
351
  if self.config.suggest_workflows:
334
- message = (
335
- f"⚠️ Direct file edit blocked: {file_path}\n\n"
336
- f"TappsCodingAgents workflows provide:\n"
337
- f" • Automatic testing (80%+ coverage)\n"
338
- f" • Quality gates (75+ score required)\n"
339
- f" • Comprehensive documentation\n"
340
- f" • Early bug detection\n\n"
341
- f"Suggested workflow:\n"
342
- f" @simple-mode *build \"{user_intent or 'Implement feature'}\"\n\n"
343
- f"To bypass enforcement, use: --skip-enforcement flag"
352
+ message = self._message_formatter.format_blocking_message(
353
+ workflow=workflow,
354
+ user_intent=user_intent,
355
+ file_path=file_path,
356
+ confidence=confidence,
344
357
  )
345
358
  else:
346
359
  message = (
347
- f"⚠️ Direct file edit blocked: {file_path}\n"
360
+ f"Direct file edit blocked: {file_path}\n"
348
361
  f"Use --skip-enforcement flag to bypass."
349
362
  )
350
363
  elif action == "warn":
351
364
  if self.config.suggest_workflows:
352
- message = (
353
- f"💡 Consider using a workflow for: {file_path}\n"
354
- f"Suggested: @simple-mode *build \"{user_intent or 'Implement feature'}\"\n"
355
- f"(Proceeding with direct edit...)"
365
+ message = self._message_formatter.format_warning_message(
366
+ workflow=workflow,
367
+ user_intent=user_intent,
368
+ confidence=confidence,
356
369
  )
357
370
  else:
358
- message = f"💡 Consider using a workflow for: {file_path}"
371
+ message = f"Consider using a workflow for: {file_path}"
359
372
  else: # allow
360
- message = ""
373
+ message = self._message_formatter.format_allow_message()
361
374
 
362
- # Create decision
375
+ # Create decision with actual confidence from intent detection
363
376
  decision: EnforcementDecision = {
364
377
  "action": action,
365
378
  "message": message,
366
379
  "should_block": should_block,
367
- "confidence": 0.0, # Story 1: No intent detection yet
380
+ "confidence": confidence,
368
381
  }
369
382
 
370
383
  # Log decision
371
384
  logger.debug(
372
385
  f"Enforcement decision: action={action}, should_block={should_block}, "
373
- f"file_path={file_path}, user_intent={user_intent[:100]}"
386
+ f"file_path={file_path}, workflow={workflow.value}, confidence={confidence:.1f}%"
374
387
  )
375
388
 
376
389
  return decision
@@ -0,0 +1,187 @@
1
+ """
2
+ Message Formatter - ENH-001-S3
3
+
4
+ Formats enforcement messages for the Workflow Enforcement System.
5
+ Provides rich, context-aware messages for blocking and warning modes
6
+ with support for CLI and IDE output formats.
7
+
8
+ Design Principles:
9
+ - Separation of Concerns: Message formatting separate from enforcement logic
10
+ - Configurable: Emoji support, output format selection
11
+ - Context-Aware: Messages tailored to detected workflow type
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import logging
17
+ from dataclasses import dataclass
18
+ from enum import Enum
19
+ from pathlib import Path
20
+ from typing import Literal
21
+
22
+ from tapps_agents.workflow.intent_detector import WorkflowType
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+
27
+ class OutputFormat(str, Enum):
28
+ """Output format for messages."""
29
+
30
+ CLI = "cli"
31
+ IDE = "ide"
32
+
33
+
34
+ @dataclass
35
+ class MessageConfig:
36
+ """Configuration for message formatting."""
37
+
38
+ use_emoji: bool = True
39
+ output_format: OutputFormat = OutputFormat.CLI
40
+ show_benefits: bool = True
41
+ show_override: bool = True
42
+
43
+
44
+ # Workflow-specific benefits
45
+ WORKFLOW_BENEFITS: dict[WorkflowType, list[str]] = {
46
+ WorkflowType.BUILD: [
47
+ "Automatic testing (80%+ coverage)",
48
+ "Quality gates (75+ score required)",
49
+ "Comprehensive documentation",
50
+ "Early bug detection",
51
+ ],
52
+ WorkflowType.FIX: [
53
+ "Root cause analysis",
54
+ "Regression test generation",
55
+ "Fix verification",
56
+ "Related issue detection",
57
+ ],
58
+ WorkflowType.REFACTOR: [
59
+ "Behavior preservation tests",
60
+ "Code quality improvement",
61
+ "Technical debt reduction",
62
+ "Safe incremental changes",
63
+ ],
64
+ WorkflowType.REVIEW: [
65
+ "Security vulnerability detection",
66
+ "Code quality scoring",
67
+ "Best practice suggestions",
68
+ "Maintainability analysis",
69
+ ],
70
+ }
71
+
72
+
73
+ class MessageFormatter:
74
+ """
75
+ Formats enforcement messages for workflow enforcement system.
76
+
77
+ Provides rich, context-aware messages for blocking and warning modes
78
+ with configurable emoji support and output format selection.
79
+ """
80
+
81
+ def __init__(self, config: MessageConfig | None = None) -> None:
82
+ """Initialize formatter with optional configuration."""
83
+ self.config = config or MessageConfig()
84
+
85
+ def format_blocking_message(
86
+ self,
87
+ workflow: WorkflowType,
88
+ user_intent: str,
89
+ file_path: Path,
90
+ confidence: float,
91
+ ) -> str:
92
+ """
93
+ Format blocking mode message with benefits and override instructions.
94
+
95
+ Args:
96
+ workflow: Detected workflow type
97
+ user_intent: User's intent description
98
+ file_path: Path to file being edited
99
+ confidence: Detection confidence (0-100)
100
+
101
+ Returns:
102
+ Formatted blocking message
103
+ """
104
+ emoji = self._get_emoji("block") if self.config.use_emoji else ""
105
+ intent_display = user_intent or "Implement feature"
106
+
107
+ lines = [
108
+ f"{emoji}Direct file edit blocked: {file_path}".strip(),
109
+ "",
110
+ f"Detected intent: {workflow.value} (confidence: {confidence:.0f}%)",
111
+ "",
112
+ ]
113
+
114
+ if self.config.show_benefits:
115
+ lines.append("TappsCodingAgents workflows provide:")
116
+ for benefit in self._get_workflow_benefits(workflow):
117
+ bullet = " * " if self.config.output_format == OutputFormat.IDE else " - "
118
+ lines.append(f"{bullet}{benefit}")
119
+ lines.append("")
120
+
121
+ lines.append("Suggested workflow:")
122
+ lines.append(f' @simple-mode {workflow.value} "{intent_display}"')
123
+ lines.append("")
124
+
125
+ if self.config.show_override:
126
+ lines.extend(self._get_override_instructions())
127
+
128
+ return "\n".join(lines)
129
+
130
+ def format_warning_message(
131
+ self,
132
+ workflow: WorkflowType,
133
+ user_intent: str,
134
+ confidence: float,
135
+ ) -> str:
136
+ """
137
+ Format warning mode message (lighter suggestion).
138
+
139
+ Args:
140
+ workflow: Detected workflow type
141
+ user_intent: User's intent description
142
+ confidence: Detection confidence (0-100)
143
+
144
+ Returns:
145
+ Formatted warning message
146
+ """
147
+ emoji = self._get_emoji("warn") if self.config.use_emoji else ""
148
+ intent_display = user_intent or "Implement feature"
149
+
150
+ lines = [
151
+ f"{emoji}Consider using a workflow (confidence: {confidence:.0f}%)".strip(),
152
+ f'Suggested: @simple-mode {workflow.value} "{intent_display}"',
153
+ "(Proceeding with direct edit...)",
154
+ ]
155
+
156
+ return "\n".join(lines)
157
+
158
+ def format_allow_message(self) -> str:
159
+ """Format allow message (empty for silent mode)."""
160
+ return ""
161
+
162
+ def _get_emoji(self, action: Literal["block", "warn", "allow"]) -> str:
163
+ """Get emoji for action type."""
164
+ emojis = {
165
+ "block": "\u26a0\ufe0f ", # Warning sign
166
+ "warn": "\U0001f4a1 ", # Light bulb
167
+ "allow": "\u2705 ", # Check mark
168
+ }
169
+ return emojis.get(action, "")
170
+
171
+ def _get_workflow_benefits(self, workflow: WorkflowType) -> list[str]:
172
+ """Get benefits list for workflow type."""
173
+ return WORKFLOW_BENEFITS.get(workflow, WORKFLOW_BENEFITS[WorkflowType.BUILD])
174
+
175
+ def _get_override_instructions(self) -> list[str]:
176
+ """Get override instructions based on output format."""
177
+ if self.config.output_format == OutputFormat.IDE:
178
+ return [
179
+ "To bypass enforcement:",
180
+ " * Use --skip-enforcement flag",
181
+ " * Or set enforcement.mode: silent in config",
182
+ ]
183
+ return [
184
+ "To bypass enforcement:",
185
+ " - Use --skip-enforcement flag",
186
+ " - Or set enforcement.mode: silent in .tapps-agents/config.yaml",
187
+ ]
@@ -313,7 +313,13 @@ class CursorRulesGenerator:
313
313
  try:
314
314
  content = self.generate()
315
315
  except ValueError as e:
316
- logger.error(f"Failed to generate rules: {e}")
316
+ msg = str(e)
317
+ if "No workflow YAML files found" in msg:
318
+ logger.warning(
319
+ "Could not generate workflow-presets.mdc (no YAML found). %s", msg
320
+ )
321
+ else:
322
+ logger.error(f"Failed to generate rules: {e}")
317
323
  raise
318
324
 
319
325
  if not content or not content.strip():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tapps-agents
3
- Version: 3.5.38
3
+ Version: 3.5.39
4
4
  Summary: A specification framework for defining, configuring, and orchestrating coding agents
5
5
  Author: Tapps
6
6
  Maintainer: Tapps
@@ -57,7 +57,7 @@ Dynamic: license-file
57
57
  [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
58
58
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
59
59
  [![Status](https://img.shields.io/badge/status-production--ready-brightgreen.svg)](README.md)
60
- [![Version](https://img.shields.io/badge/version-3.5.38-blue.svg)](CHANGELOG.md)
60
+ [![Version](https://img.shields.io/badge/version-3.5.39-blue.svg)](CHANGELOG.md)
61
61
 
62
62
  **A specification framework for defining, configuring, and orchestrating coding agents.**
63
63
 
@@ -118,7 +118,7 @@ If you're using **Cursor IDE**, get started quickly:
118
118
  # Install from PyPI (clean install, framework code only)
119
119
  pip install tapps-agents
120
120
  # or specific version:
121
- pip install tapps-agents==3.5.38
121
+ pip install tapps-agents==3.5.39
122
122
  ```
123
123
  **Windows:** If `tapps-agents` is not found after install (user Scripts often not on PATH), use a project venv or run `python -m tapps_agents.cli` instead. See [Troubleshooting CLI installation](docs/TROUBLESHOOTING_CLI_INSTALLATION.md).
124
124
 
@@ -280,7 +280,7 @@ See [Demo Plan](docs/DEMO_PLAN.md) for complete demo scenarios and instructions.
280
280
 
281
281
  ## Current Status
282
282
 
283
- **Version** 3.5.38 · **Production ready** · All 7 Cursor AI integration phases complete · YAML-first architecture (Epics 6–10) · 14 workflow agents + Simple Mode · 16 built-in experts.
283
+ **Version** 3.5.39 · **Production ready** · All 7 Cursor AI integration phases complete · YAML-first architecture (Epics 6–10) · 14 workflow agents + Simple Mode · 16 built-in experts.
284
284
 
285
285
  📋 [Changelog](CHANGELOG.md) · [Cursor AI Integration Plan](docs/CURSOR_AI_INTEGRATION_PLAN_2025.md) · [YAML Workflow Design](docs/YAML_WORKFLOW_ARCHITECTURE_DESIGN.md)
286
286
 
@@ -626,7 +626,7 @@ See [Release Guide](docs/operations/RELEASE_GUIDE.md) for complete release proce
626
626
  ## Status
627
627
 
628
628
  **Phase**: ✅ **All 7 Phases Complete - Cursor AI Integration Plan 2025**
629
- **Version**: 3.5.38
629
+ **Version**: 3.5.39
630
630
  **Last Updated**: January 2026
631
631
  **Cursor AI Integration**: ✅ Complete (Phases 1-7)
632
632
  **Dependencies**: ✅ Updated to latest 2025 stable versions (pytest 9.x, ruff 0.14.8, mypy 1.19.0, etc.)
@@ -1,4 +1,4 @@
1
- tapps_agents/__init__.py,sha256=YmVXk9p_SY6cGo7E0ZNdsiqJQYX1PJevcKTpDcf9sgg,1180
1
+ tapps_agents/__init__.py,sha256=yWcjkPNc5-XPh4DJLLTqZCPIBESe5hMk_o1X3bwJHJQ,1180
2
2
  tapps_agents/agents/__init__.py,sha256=w0Aj0bEdmIoPY1OcVTK0KFRSkYeAk-66CM2zmGTLjW0,698
3
3
  tapps_agents/agents/analyst/SKILL.md,sha256=zojp4LafqC0ZPv49kVQ1_UuOazL9QPa5Dxxp-TFtfKs,2056
4
4
  tapps_agents/agents/analyst/__init__.py,sha256=zLFkB6j1PkcpeaOk8Vnx76oYzVYyUqdULWj-pOyfLZY,135
@@ -7,6 +7,8 @@ tapps_agents/agents/architect/SKILL.md,sha256=y9o76lpcTX_u4nK7ikDdDk9PsECTwXwbe3
7
7
  tapps_agents/agents/architect/__init__.py,sha256=IXPiHqbjYScQTOnXAY8xPJ7ErPhgeeXQy8G_B5Gcf9E,135
8
8
  tapps_agents/agents/architect/agent.py,sha256=Y3H1PEnxYSLRtSayUA-_ZNnGA5HFiCL1wym_Sfg84e4,42507
9
9
  tapps_agents/agents/architect/pattern_detector.py,sha256=TmgSmGsY6rGip8YV5et0HcXcjmzWawOZBZZwWeDb9_g,2972
10
+ tapps_agents/agents/cleanup/__init__.py,sha256=1YoZ2SpX6fOun5F0RAEMMyCUeUXxgcdDXpm_L1qx1O4,131
11
+ tapps_agents/agents/cleanup/agent.py,sha256=OzrRyjaKDiuiC_ryJQpUnc9gcPcDg6qY8scSZbnWnno,17178
10
12
  tapps_agents/agents/debugger/SKILL.md,sha256=HANB65WPx26WFtGoMntbBcd3OcWm_7CP4XtGi0xSa98,2162
11
13
  tapps_agents/agents/debugger/__init__.py,sha256=SY-6_cbvKpFSN3E3FJ0de_Tfj8VA2b95T_s39LMDkZU,130
12
14
  tapps_agents/agents/debugger/agent.py,sha256=hTxNoAjcHVv7sIQhDJHm3uDkJzk6oy1aYfxxbToiXJM,11900
@@ -23,7 +25,7 @@ tapps_agents/agents/documenter/doc_validator.py,sha256=3nTEujC5-JQQaeK-e8qWpHOM6
23
25
  tapps_agents/agents/documenter/framework_doc_updater.py,sha256=LhxhY5aDP_6yGsWUWkuK43jPDCOPdQ446k7x-C3YA_k,18438
24
26
  tapps_agents/agents/enhancer/SKILL.md,sha256=HG_AYw8UYCcGj1vcXpXX0KGNkV7G0nRBD8ASzgVU8Hw,5661
25
27
  tapps_agents/agents/enhancer/__init__.py,sha256=BT1vH1rkV2tsry9eBtI3U0EXEMWZB3ptGSTECKlcOcY,122
26
- tapps_agents/agents/enhancer/agent.py,sha256=2mi2oU8pvihZzBHmH9scn1QpBORJddbRlpZR-k9AQ3I,119086
28
+ tapps_agents/agents/enhancer/agent.py,sha256=LdmVhXhnum_JSWGb6mhvCGlHTg8LTy4RO5XsFuQwYZM,121804
27
29
  tapps_agents/agents/evaluator/__init__.py,sha256=gGBp4fg8o33yQppF-G8139mOH3VrhFumVslMaecyOOs,151
28
30
  tapps_agents/agents/evaluator/agent.py,sha256=djcsFQ5XM8FKgDU0OZdXj4VOxt2d9Uj90HSR0PgdFiQ,16092
29
31
  tapps_agents/agents/evaluator/priority_evaluator.py,sha256=Wa9FobcOqPzbMVgVEPgkFrWDq6LItAF8Fe-j9WHgYw8,22948
@@ -113,7 +115,7 @@ tapps_agents/cli/base.py,sha256=1XoAc2v6zh0kZoDuf-2vPEQlUVGzWoFZZT8cxgblklw,1738
113
115
  tapps_agents/cli/command_classifier.py,sha256=PesY18-Trn53OBktVPWmq6ddxAkz1EJ4mkYyEy9rpf8,2430
114
116
  tapps_agents/cli/feedback.py,sha256=bhq37Iqocu9DLa-XOoZIH2K8nHCOzKdzeoFnQKC2D0M,36652
115
117
  tapps_agents/cli/formatters.py,sha256=6O7CmMj3CA9KAVoNvUrX2nbswIqBnfmEexi4pCHUTDI,23207
116
- tapps_agents/cli/main.py,sha256=Vl5aOTAeksCUH1xMV_NG76CFw4QEEmkGv6JBWU-q2M8,23099
118
+ tapps_agents/cli/main.py,sha256=1iYKDQJYTSu7hkFtLL_X9ts2IQUUwRTJ4ba2zBmneuw,23970
117
119
  tapps_agents/cli/network_detection.py,sha256=ZoSEqO2ro_HGQqGC6utBDKJypQlsihzXv9C_gZte-6A,3811
118
120
  tapps_agents/cli/output_compactor.py,sha256=x5tkcIIFVnrKmtdo7PE0R-C84LWr4Agd2ulO1xclhRI,8979
119
121
  tapps_agents/cli/progress_heartbeat.py,sha256=3CvT5El-9KbaImPdTp-IKPrUsRGw-2j1zi1PNWaGwIk,8549
@@ -121,6 +123,7 @@ tapps_agents/cli/streaming_progress.py,sha256=bp9rQShwjGdGtyfcL4mzQY-n14qZyhYONY
121
123
  tapps_agents/cli/commands/__init__.py,sha256=uQOwkQLQqkjWydOGg5ggNLCnnwnIU9wvnAvXt1PSeog,35
122
124
  tapps_agents/cli/commands/analyst.py,sha256=Vot2o3E1DrcoFD5BjeqvFHVMP9WbWu6JJ3Ld82lW2m0,8668
123
125
  tapps_agents/cli/commands/architect.py,sha256=CYUC4FrB236EnQe0ZIqeq7VlrIDUfO91NQrcfOZfVnI,4464
126
+ tapps_agents/cli/commands/cleanup_agent.py,sha256=3EEPq4dg-HwiLrah0Fq7I0RXniIAUACXbbu10R2j5YA,3358
124
127
  tapps_agents/cli/commands/common.py,sha256=ZNujv1n1uJKIVVbKNx_Lrvhevf0E6KRK-hfO59BCBh8,3363
125
128
  tapps_agents/cli/commands/debugger.py,sha256=PXuQkVPgNO55VAif2JjclT6mfqkuylS98KlWBHj6Ds8,3394
126
129
  tapps_agents/cli/commands/designer.py,sha256=OlfS1LDlLMdesXhWckTilJPALRJySB402ss3uy1_2r4,4969
@@ -146,6 +149,7 @@ tapps_agents/cli/help/static_help.py,sha256=0hFiOgLqBT-vM0yHoeY_Ea5JOg_anc_5_rPR
146
149
  tapps_agents/cli/parsers/__init__.py,sha256=mtP0vrFd1P7i4V3N1B1wXKxM7ajCVLqNBul4998I5SI,35
147
150
  tapps_agents/cli/parsers/analyst.py,sha256=6Cp2BMFAqgR9p_I8gOJ-IorgFETiE9uqJ3xvuyhZzhM,10319
148
151
  tapps_agents/cli/parsers/architect.py,sha256=Catv0P3esfD7oN3E9bisfZ4w9ddqSwzd-faunX5r-Gs,9071
152
+ tapps_agents/cli/parsers/cleanup_agent.py,sha256=AVTzWEw23E_t2xm-74k4EgDDmr8ycLQeP703NdD90tw,7617
149
153
  tapps_agents/cli/parsers/debugger.py,sha256=6GXsHh2iohUQTNvrMkQZRodI4LO5NZihJm7ICrRaG0E,6320
150
154
  tapps_agents/cli/parsers/designer.py,sha256=UptPvtGVRRcr1-5hJJAO7yE1ren0rXJ0Mfa2pKTAyUY,9780
151
155
  tapps_agents/cli/parsers/documenter.py,sha256=AYLdo1zYyA20xLlRU397i00oGa7p3nhjlQ2-bcNA6UI,6329
@@ -225,7 +229,7 @@ tapps_agents/core/cleanup_tool.py,sha256=Kj7xyfX8zXEWBEgKEAPdRI-qPCTtrwgHgwsemIm
225
229
  tapps_agents/core/code_generator.py,sha256=Ma-5NWZnr4PcfFvZEFFUtn6hDzv7zAOVaZrTwmRiOrU,9881
226
230
  tapps_agents/core/code_validator.py,sha256=SoP_zUBTzWEhfSuFNjawk_R6ytcgjJ8VClfCSILLKFE,8953
227
231
  tapps_agents/core/command_registry.py,sha256=Re07pBBjwtilp9kaXn5Qxdjp01liT5pj1S7KUsXwQIg,10192
228
- tapps_agents/core/config.py,sha256=Q0IK9fjq9MOrVC-UHnI91_Rm4xJhqLyF9y8nauu8nDQ,54898
232
+ tapps_agents/core/config.py,sha256=Wk2Mn37--ctxx9PLQyKyP2bO9uGEodyUJMnoCK-gpN0,57913
229
233
  tapps_agents/core/context_manager.py,sha256=UCftn4UnGt6xf_LErC8Ty5fWP2u6mcyv5tqvoLvfK5s,8184
230
234
  tapps_agents/core/cursor_feedback_monitor.py,sha256=p0Ow-wktUyK745MKQwt9E7rWoelV9WacQ5HWk3iRQGM,5073
231
235
  tapps_agents/core/cursor_verification.py,sha256=kLMshs5E0-W-13rwT3TnNQ-YIjmW6v7AHI6kkiaBc7M,9905
@@ -256,7 +260,7 @@ tapps_agents/core/feedback_analyzer.py,sha256=BZbqS53fVbaPdeRjw1Yw286mJrsY88yDYq
256
260
  tapps_agents/core/feedback_collector.py,sha256=ynpkMWeOFyhuFC6goOdT29QRwd4kiVWgfd5ny9Mmczc,6218
257
261
  tapps_agents/core/git_operations.py,sha256=rzqNTAj_XhnTtegxjXXZNpGeocL5LNM5DUWFNUp1les,14272
258
262
  tapps_agents/core/hardware_profiler.py,sha256=OMram3JZkvdqRNSHvIAweHNuX_1Oy86jDCUldsVm8yw,4312
259
- tapps_agents/core/init_project.py,sha256=JrkBCOrhJaSNVermE9C6eX_fap-dK_yGHgReVLzS6QQ,115917
263
+ tapps_agents/core/init_project.py,sha256=CDFdPzQp31dNAFZjV6qxnK5t19ug5XIyAPRuAjKkGXQ,116138
260
264
  tapps_agents/core/instructions.py,sha256=eMleDK9k5NFTQT3Aj_DgsiWt5Gj4GQjSq83bJUgiVhU,13044
261
265
  tapps_agents/core/io_guardrails.py,sha256=X178WGZP1Ut8UU1Ox08pXBhfTHtN_etum5WgRjvLUrk,2206
262
266
  tapps_agents/core/issue_manifest.py,sha256=NqwReBKfNp1ChiYvFkbVvD7_w47-RrssPIZo6NenFrc,10020
@@ -610,7 +614,7 @@ tapps_agents/simple_mode/orchestrators/deliverable_checklist.py,sha256=IMtxpzv1U
610
614
  tapps_agents/simple_mode/orchestrators/enhance_orchestrator.py,sha256=xmcicWcUPMwDHOfm-nS_6rV62-10dPZf8etj_eNGCYg,2112
611
615
  tapps_agents/simple_mode/orchestrators/epic_orchestrator.py,sha256=6rJ-g5R0GtsFaM90fCAhP26Ag3EKe71Cd1P-yUT0NHQ,4340
612
616
  tapps_agents/simple_mode/orchestrators/explore_orchestrator.py,sha256=MWkGaQ1kMj5H1B5ryHZUssMjXWI3Di11U_aUgrPJldA,6764
613
- tapps_agents/simple_mode/orchestrators/fix_orchestrator.py,sha256=SsEM0LOcvJSgKluS28BcRErLkvurXvf10geKv8GCINQ,32776
617
+ tapps_agents/simple_mode/orchestrators/fix_orchestrator.py,sha256=JTMV42pU4d0v8yAY5xDQfe271tNEJAeZrHaJ-aw-SrY,33525
614
618
  tapps_agents/simple_mode/orchestrators/plan_analysis_orchestrator.py,sha256=aR0qMtJ6jlUx1T5dhVn-_sYg9YPN0Wl7044kD7jYF40,7266
615
619
  tapps_agents/simple_mode/orchestrators/pr_orchestrator.py,sha256=1KPEBdAE2M163rwp367qRkrTGlRM1A53qIZmfM1kR5g,8603
616
620
  tapps_agents/simple_mode/orchestrators/refactor_orchestrator.py,sha256=bOEj9m67HqHqa2oLY4YEP5wKdN8Knk1rsds5XXGAcdk,8157
@@ -659,7 +663,7 @@ tapps_agents/workflow/detector.py,sha256=bvOrTPT2TS08e6sA05szm22oyipLpJx5oKc6Ca_
659
663
  tapps_agents/workflow/direct_execution_fallback.py,sha256=KOOgbAE_iXRtcRGP4BmvKeu9Mb40VJXB4sgDScZGGfU,10822
660
664
  tapps_agents/workflow/docs_artifact.py,sha256=7NNlLEfFkvjIvxLhZAIdpdieC5oPsZElTPflFzA-S_k,5702
661
665
  tapps_agents/workflow/durable_state.py,sha256=qGjVp5FXSQsKuLtBBWlwwyo9CbKKjU1OwS1jBmDMjJY,24882
662
- tapps_agents/workflow/enforcer.py,sha256=YTJnJuHfiyYQ_m6pt1ZagYeYN1jB7KA_NKzgUfI2kqY,14652
666
+ tapps_agents/workflow/enforcer.py,sha256=2FAUd1_utDbOM2F3YRoM4F2u7M-bzHLMCDDS-mdy-xo,15208
663
667
  tapps_agents/workflow/enhancement_artifact.py,sha256=wHdmIJT6i7KO39rTibO5ehVIMbMmya63AyyRqqLTCGM,4830
664
668
  tapps_agents/workflow/error_recovery.py,sha256=E4yW9W4rmCmXawnogi6IwjNyxsy6uAdohoqLZgsiNOM,29493
665
669
  tapps_agents/workflow/event_bus.py,sha256=gl0aiK35xMJOUhISV6n_1SJTDxarrZIyflfcRVX-fkM,5870
@@ -679,6 +683,7 @@ tapps_agents/workflow/intent_detector.py,sha256=6JZVk0s2bfFKRO3UNkjfxV7t6PzvirMr
679
683
  tapps_agents/workflow/logging_helper.py,sha256=x38gDL_ZdlQMnSoIb8aPSVc2hgCj8cgMSzua8o0Rplc,8982
680
684
  tapps_agents/workflow/manifest.py,sha256=D5v3E-fBoD0dEK5BNDj_VmVdJmUoT7rCQrJQSygeWRg,20341
681
685
  tapps_agents/workflow/marker_writer.py,sha256=2uaP86Fwm_QUPjqRCUdJcNlrHEAD6P7PRJBGpqUhxMo,8325
686
+ tapps_agents/workflow/message_formatter.py,sha256=md_Dwxb5AVM7iVgQOc5uJvovierOCfpt_Q7BQLaZHJE,6058
682
687
  tapps_agents/workflow/messaging.py,sha256=fzVDP7vvQXjJG3AGTS1mp1GiBPaK_NzkPNlxCWxfJ6A,11547
683
688
  tapps_agents/workflow/metadata_models.py,sha256=xsigrFQgIgFzLJn7qwCa242w49iEv-QwIrFGkGzL0Zg,2954
684
689
  tapps_agents/workflow/metrics_enhancements.py,sha256=6u5EnXCJTyLbi5BcouKamW2Pzutmzjv-Fy-ZGCHVgxk,25800
@@ -708,7 +713,7 @@ tapps_agents/workflow/recommender.py,sha256=i4i_qKxYvADBVuXil53WmJp-bRNCwTjh2S_l
708
713
  tapps_agents/workflow/remediation_loop.py,sha256=DoLsfE5ncxuBXvieYaCFAYbFx1grdkNuxPxzWXY_wb0,5522
709
714
  tapps_agents/workflow/result_aggregator.py,sha256=R-ZDVT0XPfqJP4Qyt8Y12MpG3U9419YONxWADm6_IS4,11208
710
715
  tapps_agents/workflow/review_artifact.py,sha256=eU8udcTP4aFYXEYxFXsp-Z3YmPBwK981GSNe2Sd2LUY,6786
711
- tapps_agents/workflow/rules_generator.py,sha256=qSQnMIJG8JiIIlMBvLV0DZLToZRyKvUUdRfQfpjFen4,13459
716
+ tapps_agents/workflow/rules_generator.py,sha256=lJLNRLJsbZD5Ml_-O1gcFBNjryC--6F0kH59lLs2sBs,13703
712
717
  tapps_agents/workflow/schema_validator.py,sha256=RLQLg1JEYjjIaY5vZWMLwNXJm-dsPMadPYMqdzaN-lw,18870
713
718
  tapps_agents/workflow/session_handoff.py,sha256=mPQPxVAgyjdgok0RZvasR147jFRciV2vAHZ4DBwNFk8,5546
714
719
  tapps_agents/workflow/skill_invoker.py,sha256=BH8y9FNOvXfPwMQCH-QekdgysdQwi3-YgBbNf0x3gf4,24270
@@ -743,9 +748,9 @@ tapps_agents/workflow/agent_handlers/planner_handler.py,sha256=9oVSsA6Lso5NncYPS
743
748
  tapps_agents/workflow/agent_handlers/registry.py,sha256=aYMU59da4SBgDgqMy4Basu1yL8CvDvdi929n6XM50ro,3613
744
749
  tapps_agents/workflow/agent_handlers/reviewer_handler.py,sha256=D4spVUk4l9mJsSsDIKC88EL-2k43YObNz5v439EtDRc,4285
745
750
  tapps_agents/workflow/agent_handlers/tester_handler.py,sha256=e44Eqn1CIpcqYqCrjaTK748yb4k7PlzGdK9zSne-SfY,2249
746
- tapps_agents-3.5.38.dist-info/licenses/LICENSE,sha256=xwT0RCg0KluJ63lZcgkSOiYkpEIEXYlIGqRtkGGsPe0,1085
747
- tapps_agents-3.5.38.dist-info/METADATA,sha256=Q0OB03ULZCRnOJoiH86g5ffGXX_J6_zPPHtNbQ-e-KM,40611
748
- tapps_agents-3.5.38.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
749
- tapps_agents-3.5.38.dist-info/entry_points.txt,sha256=b8WhZxYg2xA-ocElPeY0LDSqRCOgzw6PuEksZD6BB2E,55
750
- tapps_agents-3.5.38.dist-info/top_level.txt,sha256=AR0UfcM1nJhQ413h8j1ObAGsUrbfys55D-qKUBGzYtk,13
751
- tapps_agents-3.5.38.dist-info/RECORD,,
751
+ tapps_agents-3.5.39.dist-info/licenses/LICENSE,sha256=xwT0RCg0KluJ63lZcgkSOiYkpEIEXYlIGqRtkGGsPe0,1085
752
+ tapps_agents-3.5.39.dist-info/METADATA,sha256=2kTgXhK4_tyeEGAnmgN5Mq7KMgLDfwEhb7udmUwYrNU,40611
753
+ tapps_agents-3.5.39.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
754
+ tapps_agents-3.5.39.dist-info/entry_points.txt,sha256=b8WhZxYg2xA-ocElPeY0LDSqRCOgzw6PuEksZD6BB2E,55
755
+ tapps_agents-3.5.39.dist-info/top_level.txt,sha256=AR0UfcM1nJhQ413h8j1ObAGsUrbfys55D-qKUBGzYtk,13
756
+ tapps_agents-3.5.39.dist-info/RECORD,,