aab-prompts 1.0.0__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.
- aab_prompts-1.0.0/PKG-INFO +18 -0
- aab_prompts-1.0.0/aab_prompts.egg-info/PKG-INFO +18 -0
- aab_prompts-1.0.0/aab_prompts.egg-info/SOURCES.txt +22 -0
- aab_prompts-1.0.0/aab_prompts.egg-info/dependency_links.txt +1 -0
- aab_prompts-1.0.0/aab_prompts.egg-info/top_level.txt +2 -0
- aab_prompts-1.0.0/aab_service.py +340 -0
- aab_prompts-1.0.0/prompts/__init__.py +0 -0
- aab_prompts-1.0.0/prompts/breadcrumbs.py +108 -0
- aab_prompts-1.0.0/prompts/constants.py +1467 -0
- aab_prompts-1.0.0/prompts/expressions.py +453 -0
- aab_prompts-1.0.0/prompts/menu_navigations.py +222 -0
- aab_prompts-1.0.0/prompts/objects_fields.py +303 -0
- aab_prompts-1.0.0/prompts/page_planner.py +138 -0
- aab_prompts-1.0.0/prompts/pages.py +202 -0
- aab_prompts-1.0.0/prompts/planner.py +548 -0
- aab_prompts-1.0.0/prompts/router.py +247 -0
- aab_prompts-1.0.0/prompts/solutions_applications.py +163 -0
- aab_prompts-1.0.0/prompts/view_filter_planner.py +55 -0
- aab_prompts-1.0.0/prompts/view_links_planner.py +35 -0
- aab_prompts-1.0.0/prompts/view_planner.py +89 -0
- aab_prompts-1.0.0/prompts/views.py +263 -0
- aab_prompts-1.0.0/pyproject.toml +28 -0
- aab_prompts-1.0.0/setup.cfg +4 -0
- aab_prompts-1.0.0/tests/test_prompts.py +685 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aab-prompts
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: AAB Prompts - Application Builder prompt management library
|
|
5
|
+
Author: AAB Prompts
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: prompts,aab,application-builder
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Requires-Python: >=3.8
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aab-prompts
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: AAB Prompts - Application Builder prompt management library
|
|
5
|
+
Author: AAB Prompts
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: prompts,aab,application-builder
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Requires-Python: >=3.8
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
aab_service.py
|
|
2
|
+
pyproject.toml
|
|
3
|
+
aab_prompts.egg-info/PKG-INFO
|
|
4
|
+
aab_prompts.egg-info/SOURCES.txt
|
|
5
|
+
aab_prompts.egg-info/dependency_links.txt
|
|
6
|
+
aab_prompts.egg-info/top_level.txt
|
|
7
|
+
prompts/__init__.py
|
|
8
|
+
prompts/breadcrumbs.py
|
|
9
|
+
prompts/constants.py
|
|
10
|
+
prompts/expressions.py
|
|
11
|
+
prompts/menu_navigations.py
|
|
12
|
+
prompts/objects_fields.py
|
|
13
|
+
prompts/page_planner.py
|
|
14
|
+
prompts/pages.py
|
|
15
|
+
prompts/planner.py
|
|
16
|
+
prompts/router.py
|
|
17
|
+
prompts/solutions_applications.py
|
|
18
|
+
prompts/view_filter_planner.py
|
|
19
|
+
prompts/view_links_planner.py
|
|
20
|
+
prompts/view_planner.py
|
|
21
|
+
prompts/views.py
|
|
22
|
+
tests/test_prompts.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
from prompts.breadcrumbs import BREADCRUMB_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
2
|
+
from prompts.expressions import (
|
|
3
|
+
EXPRESSION_REQUIREMENTS_TEMPLATE,
|
|
4
|
+
EXPRESSIONS_AGENT_PROMPT_TEMPLATE,
|
|
5
|
+
FIELDS_EXPRESSION_AGENT_PROMPT_TEMPLATE,
|
|
6
|
+
INITIAL_VALUE_EXAMPLES_TEMPLATE,
|
|
7
|
+
PAGE_DATA_BINDER_AGENT_PROMPT_TEMPLATE,
|
|
8
|
+
SHOW_IF_EXPRESSION_AGENT_PROMPT_TEMPLATE,
|
|
9
|
+
VIEW_FILTER_EXPRESSION_AGENT_PROMPT_TEMPLATE,
|
|
10
|
+
VIEWS_EXPRESSION_AGENT_PROMPT_TEMPLATE,
|
|
11
|
+
)
|
|
12
|
+
from prompts.menu_navigations import MENU_NAVIGATIONS_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
13
|
+
from prompts.objects_fields import OBJECTS_FIELDS_AGENT_SYSTEM_PROMPT_TEMPLATE, STANDARD_OBJECTS_DESCRIPTIONS_TEMPLATE, SYSTEM_OBJECTS_DESCRIPTIONS_TEMPLATE
|
|
14
|
+
from prompts.page_planner import PAGE_PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
15
|
+
from prompts.pages import PAGE_DATA_BINDER_TEMPLATE, PAGES_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
16
|
+
from prompts.planner import PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE, PLANNER_EXAMPLES_TEMPLATE
|
|
17
|
+
from prompts.router import ROUTER_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
18
|
+
from prompts.solutions_applications import SOLUTIONS_APPLICATIONS_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
19
|
+
from prompts.view_filter_planner import VIEW_FILTER_PLANNER_PROMPT_TEMPLATE
|
|
20
|
+
from prompts.view_links_planner import VIEW_LINKS_PLANNER_PROMPT_TEMPLATE
|
|
21
|
+
from prompts.view_planner import VIEWS_PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
22
|
+
from prompts.views import CALENDAR_VIEW_PROPERTIES_TEMPLATE, CARD_VIEW_PROPERTIES_TEMPLATE, COMMON_VIEW_PROPERTIES_TEMPLATE, CREATE_VIEW_PROPERTIES_TEMPLATE, DECK_VIEW_PROPERTIES_TEMPLATE, DETAIL_VIEW_PROPERTIES_TEMPLATE, LIST_VIEW_PROPERTIES_TEMPLATE, MAP_VIEW_PROPERTIES_TEMPLATE, VIEW_FILTERS_PROPERTIES_TEMPLATE, VIEW_LINKS_PROPERTIES_TEMPLATE, VIEW_TYPE_DETAILS_TEMPLATE, VIEWS_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class _BreadcrumbsHandler:
|
|
26
|
+
"""Handler for all breadcrumb-related prompts."""
|
|
27
|
+
|
|
28
|
+
def BREADCRUMB_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
29
|
+
return BREADCRUMB_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class _ExpressionsHandler:
|
|
33
|
+
"""Handler for all expression-related prompts."""
|
|
34
|
+
|
|
35
|
+
def __init__(self, core_expressions: dict) -> None:
|
|
36
|
+
self.core_expressions = core_expressions
|
|
37
|
+
|
|
38
|
+
def _generate_system_prompt(self, expressions: dict) -> str:
|
|
39
|
+
sections: list[str] = []
|
|
40
|
+
|
|
41
|
+
for key, value in expressions.items():
|
|
42
|
+
name = value.get("name", "")
|
|
43
|
+
description = value.get("description", "")
|
|
44
|
+
examples = value.get("examples", [])
|
|
45
|
+
return_type = value.get("returns", "")
|
|
46
|
+
aliases = value.get("aliases", [])
|
|
47
|
+
|
|
48
|
+
example_lines = (
|
|
49
|
+
"\n".join(
|
|
50
|
+
f"- {ex.get('syntax')} → {ex.get('returns')}" for ex in examples
|
|
51
|
+
)
|
|
52
|
+
or "None"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
alias_lines = (
|
|
56
|
+
"\n".join(f"- {alias}" for alias in aliases) if aliases else "None"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
sections.append(
|
|
60
|
+
f"""- ### {key}
|
|
61
|
+
|
|
62
|
+
Function Signature:
|
|
63
|
+
{name}
|
|
64
|
+
|
|
65
|
+
Description:
|
|
66
|
+
{description}
|
|
67
|
+
|
|
68
|
+
Return Type:
|
|
69
|
+
{return_type}
|
|
70
|
+
|
|
71
|
+
Aliases:
|
|
72
|
+
{alias_lines}
|
|
73
|
+
|
|
74
|
+
Examples:
|
|
75
|
+
{example_lines}
|
|
76
|
+
"""
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
return "\n".join(sections)
|
|
80
|
+
|
|
81
|
+
def CORE_EXPRESSIONS(self) -> str:
|
|
82
|
+
return f"""
|
|
83
|
+
## Built in Core Expressions
|
|
84
|
+
|
|
85
|
+
The following are the core expressions available in SnapApp:
|
|
86
|
+
|
|
87
|
+
{self._generate_system_prompt(self.core_expressions)}
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
def EXPRESSION_REQUIREMENTS(self) -> str:
|
|
91
|
+
return EXPRESSION_REQUIREMENTS_TEMPLATE
|
|
92
|
+
|
|
93
|
+
def EXPRESSIONS_AGENT_PROMPT(self) -> str:
|
|
94
|
+
return EXPRESSIONS_AGENT_PROMPT_TEMPLATE.format(
|
|
95
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
96
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
def SHOW_IF_EXPRESSION_AGENT_PROMPT(self) -> str:
|
|
100
|
+
return SHOW_IF_EXPRESSION_AGENT_PROMPT_TEMPLATE.format(
|
|
101
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
102
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
def INITIAL_VALUE_EXAMPLES(self) -> str:
|
|
106
|
+
return INITIAL_VALUE_EXAMPLES_TEMPLATE
|
|
107
|
+
|
|
108
|
+
def VIEW_FILTER_EXPRESSION_AGENT_PROMPT(self) -> str:
|
|
109
|
+
return VIEW_FILTER_EXPRESSION_AGENT_PROMPT_TEMPLATE.format(
|
|
110
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
111
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def FIELDS_EXPRESSION_AGENT_PROMPT(self) -> str:
|
|
115
|
+
return FIELDS_EXPRESSION_AGENT_PROMPT_TEMPLATE.format(
|
|
116
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
117
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
def VIEWS_EXPRESSION_AGENT_PROMPT(self) -> str:
|
|
121
|
+
return VIEWS_EXPRESSION_AGENT_PROMPT_TEMPLATE.format(
|
|
122
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
123
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
def PAGE_DATA_BINDER_AGENT_PROMPT(self) -> str:
|
|
127
|
+
return PAGE_DATA_BINDER_AGENT_PROMPT_TEMPLATE.format(
|
|
128
|
+
EXPRESSION_REQUIREMENTS=self.EXPRESSION_REQUIREMENTS(),
|
|
129
|
+
CORE_EXPRESSIONS=self.CORE_EXPRESSIONS(),
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
class _MenuNavigationsHandler:
|
|
133
|
+
"""Handler for all menu navigation-related prompts."""
|
|
134
|
+
|
|
135
|
+
def MENU_NAVIGATIONS_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
136
|
+
return MENU_NAVIGATIONS_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class _ObjectsFieldsHandler:
|
|
140
|
+
"""Handler for all object and field-related prompts."""
|
|
141
|
+
|
|
142
|
+
def __init__(self, restricted_objects_list: list[str]) -> None:
|
|
143
|
+
self.restricted_objects_list = restricted_objects_list
|
|
144
|
+
|
|
145
|
+
def STANDARD_OBJECTS_DESCRIPTIONS(self) -> str:
|
|
146
|
+
return STANDARD_OBJECTS_DESCRIPTIONS_TEMPLATE
|
|
147
|
+
|
|
148
|
+
def SYSTEM_OBJECTS_DESCRIPTIONS(self) -> str:
|
|
149
|
+
return SYSTEM_OBJECTS_DESCRIPTIONS_TEMPLATE
|
|
150
|
+
|
|
151
|
+
def OBJECTS_FIELDS_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
152
|
+
return OBJECTS_FIELDS_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
153
|
+
RESTRICTED_OBJECTS_LIST=", ".join(self.restricted_objects_list),
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class _PagePlannerHandler:
|
|
158
|
+
"""Handler for all page planner-related prompts."""
|
|
159
|
+
|
|
160
|
+
def PAGE_PLANNER_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
161
|
+
return PAGE_PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class _PagesHandler:
|
|
165
|
+
"""Handler for all page-related prompts."""
|
|
166
|
+
|
|
167
|
+
def PAGES_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
168
|
+
return PAGES_AGENT_SYSTEM_PROMPT_TEMPLATE
|
|
169
|
+
|
|
170
|
+
def PAGE_DATA_BINDER(self) -> str:
|
|
171
|
+
return PAGE_DATA_BINDER_TEMPLATE
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class _PlannerHandler:
|
|
175
|
+
"""Handler for all planner-related prompts."""
|
|
176
|
+
|
|
177
|
+
def __init__(self, restricted_objects_list: list[str], standard_objects_descriptions: str, system_objects_descriptions: str) -> None:
|
|
178
|
+
self.restricted_objects_list = restricted_objects_list
|
|
179
|
+
self.standard_objects_descriptions = standard_objects_descriptions
|
|
180
|
+
self.system_objects_descriptions = system_objects_descriptions
|
|
181
|
+
|
|
182
|
+
def PLANNER_EXAMPLES(self) -> str:
|
|
183
|
+
return '\n\n\n'.join(PLANNER_EXAMPLES_TEMPLATE)
|
|
184
|
+
|
|
185
|
+
def PLANNER_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
186
|
+
return PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
187
|
+
RESTRICTED_OBJECTS_LIST=", ".join(self.restricted_objects_list),
|
|
188
|
+
STANDARD_OBJECTS_DESCRIPTIONS=self.standard_objects_descriptions,
|
|
189
|
+
SYSTEM_OBJECTS_DESCRIPTIONS=self.system_objects_descriptions,
|
|
190
|
+
PLANNER_EXAMPLES=self.PLANNER_EXAMPLES(),
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class _RouterHandler:
|
|
195
|
+
"""Handler for all router-related prompts."""
|
|
196
|
+
|
|
197
|
+
def __init__(self, standard_objects_descriptions: str, system_objects_descriptions: str, planner_examples: list[str]) -> None:
|
|
198
|
+
self.standard_objects_descriptions = standard_objects_descriptions
|
|
199
|
+
self.system_objects_descriptions = system_objects_descriptions
|
|
200
|
+
self.planner_examples = planner_examples
|
|
201
|
+
|
|
202
|
+
def ROUTER_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
203
|
+
return ROUTER_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
204
|
+
STANDARD_OBJECTS_DESCRIPTIONS=self.standard_objects_descriptions,
|
|
205
|
+
SYSTEM_OBJECTS_DESCRIPTIONS=self.system_objects_descriptions,
|
|
206
|
+
PLANNER_EXAMPLES=self.planner_examples,
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class _SolutionsApplicationsHandler:
|
|
211
|
+
"""Handler for all solutions and applications-related prompts."""
|
|
212
|
+
|
|
213
|
+
def __init__(self, default_solution_id: str, default_application_id: str) -> None:
|
|
214
|
+
self.default_solution_id = default_solution_id
|
|
215
|
+
self.default_application_id = default_application_id
|
|
216
|
+
|
|
217
|
+
def SOLUTIONS_APPLICATIONS_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
218
|
+
return SOLUTIONS_APPLICATIONS_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
219
|
+
DEFAULT_SOLUTION_ID=self.default_solution_id,
|
|
220
|
+
DEFAULT_APPLICATION_ID=self.default_application_id,
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class _ViewsHandler:
|
|
225
|
+
"""Handler for all view-related prompts."""
|
|
226
|
+
|
|
227
|
+
def VIEW_TYPE_DETAILS(self) -> str:
|
|
228
|
+
return VIEW_TYPE_DETAILS_TEMPLATE
|
|
229
|
+
|
|
230
|
+
def COMMON_VIEW_PROPERTIES(self) -> str:
|
|
231
|
+
return COMMON_VIEW_PROPERTIES_TEMPLATE
|
|
232
|
+
|
|
233
|
+
def LIST_VIEW_PROPERTIES(self) -> str:
|
|
234
|
+
return LIST_VIEW_PROPERTIES_TEMPLATE
|
|
235
|
+
|
|
236
|
+
def CARD_VIEW_PROPERTIES(self) -> str:
|
|
237
|
+
return CARD_VIEW_PROPERTIES_TEMPLATE
|
|
238
|
+
|
|
239
|
+
def DETAIL_VIEW_PROPERTIES(self) -> str:
|
|
240
|
+
return DETAIL_VIEW_PROPERTIES_TEMPLATE
|
|
241
|
+
|
|
242
|
+
def CREATE_VIEW_PROPERTIES(self) -> str:
|
|
243
|
+
return CREATE_VIEW_PROPERTIES_TEMPLATE
|
|
244
|
+
|
|
245
|
+
def MAP_VIEW_PROPERTIES(self) -> str:
|
|
246
|
+
return MAP_VIEW_PROPERTIES_TEMPLATE
|
|
247
|
+
|
|
248
|
+
def CALENDAR_VIEW_PROPERTIES(self) -> str:
|
|
249
|
+
return CALENDAR_VIEW_PROPERTIES_TEMPLATE
|
|
250
|
+
|
|
251
|
+
def DECK_VIEW_PROPERTIES(self) -> str:
|
|
252
|
+
return DECK_VIEW_PROPERTIES_TEMPLATE
|
|
253
|
+
|
|
254
|
+
def VIEW_LINKS_PROPERTIES(self) -> str:
|
|
255
|
+
return VIEW_LINKS_PROPERTIES_TEMPLATE
|
|
256
|
+
|
|
257
|
+
def VIEW_FILTERS_PROPERTIES(self) -> str:
|
|
258
|
+
return VIEW_FILTERS_PROPERTIES_TEMPLATE
|
|
259
|
+
|
|
260
|
+
def VIEWS_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
261
|
+
return VIEWS_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
262
|
+
VIEW_TYPE_DETAILS=self.VIEW_TYPE_DETAILS(),
|
|
263
|
+
COMMON_VIEW_PROPERTIES=self.COMMON_VIEW_PROPERTIES(),
|
|
264
|
+
LIST_VIEW_PROPERTIES=self.LIST_VIEW_PROPERTIES(),
|
|
265
|
+
CARD_VIEW_PROPERTIES=self.CARD_VIEW_PROPERTIES(),
|
|
266
|
+
DETAIL_VIEW_PROPERTIES=self.DETAIL_VIEW_PROPERTIES(),
|
|
267
|
+
CREATE_VIEW_PROPERTIES=self.CREATE_VIEW_PROPERTIES(),
|
|
268
|
+
MAP_VIEW_PROPERTIES=self.MAP_VIEW_PROPERTIES(),
|
|
269
|
+
CALENDAR_VIEW_PROPERTIES=self.CALENDAR_VIEW_PROPERTIES(),
|
|
270
|
+
DECK_VIEW_PROPERTIES=self.DECK_VIEW_PROPERTIES(),
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
def VIEWS_PLANNER_AGENT_SYSTEM_PROMPT(self) -> str:
|
|
274
|
+
return VIEWS_PLANNER_AGENT_SYSTEM_PROMPT_TEMPLATE.format(
|
|
275
|
+
VIEW_TYPE_DETAILS=self.VIEW_TYPE_DETAILS(),
|
|
276
|
+
COMMON_VIEW_PROPERTIES=self.COMMON_VIEW_PROPERTIES(),
|
|
277
|
+
LIST_VIEW_PROPERTIES=self.LIST_VIEW_PROPERTIES(),
|
|
278
|
+
CARD_VIEW_PROPERTIES=self.CARD_VIEW_PROPERTIES(),
|
|
279
|
+
DETAIL_VIEW_PROPERTIES=self.DETAIL_VIEW_PROPERTIES(),
|
|
280
|
+
CREATE_VIEW_PROPERTIES=self.CREATE_VIEW_PROPERTIES(),
|
|
281
|
+
MAP_VIEW_PROPERTIES=self.MAP_VIEW_PROPERTIES(),
|
|
282
|
+
CALENDAR_VIEW_PROPERTIES=self.CALENDAR_VIEW_PROPERTIES(),
|
|
283
|
+
DECK_VIEW_PROPERTIES=self.DECK_VIEW_PROPERTIES(),
|
|
284
|
+
VIEW_LINKS_PROPERTIES=self.VIEW_LINKS_PROPERTIES(),
|
|
285
|
+
VIEW_FILTERS_PROPERTIES=self.VIEW_FILTERS_PROPERTIES(),
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
def VIEW_LINKS_PLANNER_PROMPT(self) -> str:
|
|
289
|
+
return VIEW_LINKS_PLANNER_PROMPT_TEMPLATE.format(
|
|
290
|
+
VIEW_LINKS_PROPERTIES=self.VIEW_LINKS_PROPERTIES(),
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def VIEW_FILTER_PLANNER_PROMPT(self) -> str:
|
|
295
|
+
return VIEW_FILTER_PLANNER_PROMPT_TEMPLATE.format(
|
|
296
|
+
VIEW_FILTERS_PROPERTIES=self.VIEW_FILTERS_PROPERTIES(),
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
class AABPrompts:
|
|
302
|
+
"""Main prompts class that coordinates all prompt handlers."""
|
|
303
|
+
|
|
304
|
+
def __init__(self, core_expressions: dict, restricted_objects_list: list[str], default_solution_id: str, default_application_id: str) -> None:
|
|
305
|
+
# Initialize handlers
|
|
306
|
+
self._objects_fields = _ObjectsFieldsHandler(restricted_objects_list)
|
|
307
|
+
self._planner = _PlannerHandler(
|
|
308
|
+
restricted_objects_list,
|
|
309
|
+
self._objects_fields.STANDARD_OBJECTS_DESCRIPTIONS(),
|
|
310
|
+
self._objects_fields.SYSTEM_OBJECTS_DESCRIPTIONS()
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
# Store all handlers in a list for easy iteration
|
|
314
|
+
self._handlers = [
|
|
315
|
+
_BreadcrumbsHandler(),
|
|
316
|
+
_ExpressionsHandler(core_expressions),
|
|
317
|
+
_MenuNavigationsHandler(),
|
|
318
|
+
self._objects_fields,
|
|
319
|
+
_PagePlannerHandler(),
|
|
320
|
+
_PagesHandler(),
|
|
321
|
+
self._planner,
|
|
322
|
+
_RouterHandler(
|
|
323
|
+
self._objects_fields.STANDARD_OBJECTS_DESCRIPTIONS(),
|
|
324
|
+
self._objects_fields.SYSTEM_OBJECTS_DESCRIPTIONS(),
|
|
325
|
+
self._planner.PLANNER_EXAMPLES()
|
|
326
|
+
),
|
|
327
|
+
_SolutionsApplicationsHandler(default_solution_id, default_application_id),
|
|
328
|
+
_ViewsHandler(),
|
|
329
|
+
]
|
|
330
|
+
|
|
331
|
+
def __getattr__(self, name: str):
|
|
332
|
+
"""Automatically delegate method calls to the appropriate handler."""
|
|
333
|
+
for handler in self._handlers:
|
|
334
|
+
if hasattr(handler, name):
|
|
335
|
+
return getattr(handler, name)
|
|
336
|
+
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
File without changes
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
BREADCRUMB_AGENT_SYSTEM_PROMPT_TEMPLATE = f"""
|
|
2
|
+
You are the SnapApp Breadcrumbs Specialist, an expert AI assistant dedicated
|
|
3
|
+
to helping users design, configure, and troubleshoot breadcrumb navigation
|
|
4
|
+
within the SnapApp platform. Your goal is to ensure users create hierarchical,
|
|
5
|
+
user-friendly navigation paths that strictly adhere to SnapApp's technical
|
|
6
|
+
specifications.
|
|
7
|
+
|
|
8
|
+
You possess deep knowledge of SnapApp's breadcrumb system based on the.
|
|
9
|
+
You understand that breadcrumbs are hierarchical links appearing at
|
|
10
|
+
the top of a page to show the path from the homepage to the current content.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
# What are Breadcrumbs in SnapApp?
|
|
14
|
+
|
|
15
|
+
Breadcrumbs provides users with hierarchical links that aid in navigating
|
|
16
|
+
and understanding the structure of a website or application.
|
|
17
|
+
It appears as a trail of links at the top of a page, showing the path from
|
|
18
|
+
the homepage to the current page or content. This navigation method helps users
|
|
19
|
+
easily trace their steps back through different levels of a website, enhancing
|
|
20
|
+
usability and reducing confusion, especially in complex or deep site structures.
|
|
21
|
+
It also provides context and orientation, allowing users to quickly grasp where
|
|
22
|
+
they are within the overall site hierarchy.
|
|
23
|
+
|
|
24
|
+
Eg: Docs / UX / Components / Breadcrumbs
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
# When to create Breadcrumbs?
|
|
30
|
+
Create Breadcrumbs when:
|
|
31
|
+
- The application has multiple levels of hierarchy or nested views.
|
|
32
|
+
- The user needs to navigate back to previous sections easily.
|
|
33
|
+
- The application contains detailed views that require context.
|
|
34
|
+
- The user experience benefits from clear navigation paths.
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
# NOTE
|
|
40
|
+
- Breadcrumbs can be nested to represent multiple levels of hierarchy.
|
|
41
|
+
- A *parent breadcrumb* will not have a `breadcrumb_id`, while *child breadcrumbs* will reference their parent via `breadcrumb_id`.
|
|
42
|
+
- You should always consider the logical structure of the application when creating breadcrumbs to ensure they accurately reflect the navigation path.
|
|
43
|
+
- You should always try to make breadcrumbs that are meaningful and useful for navigation, based on the user prompt and requirements.
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
# Rules for creating Breadcrumbs
|
|
49
|
+
There are some important rules to follow when creating Breadcrumbs:
|
|
50
|
+
|
|
51
|
+
## Configuring a Breadcrumb
|
|
52
|
+
- Choose a descriptive name for your breadcrumb, which will be displayed at the top of your view.
|
|
53
|
+
- Optionally, select any Font Awesome Icon that would go your with breadcrumb, or have it blank for a text-only format.
|
|
54
|
+
- Select the Application ID for which you are creating the breadcrumb.
|
|
55
|
+
|
|
56
|
+
## Parent Breadcrumb
|
|
57
|
+
- If you are creating the parent breadcrumb, don't put anything in the `breadcrumb_id` field.
|
|
58
|
+
- Ensure that the name of the breadcrumb accurately reflects the view or section it represents.
|
|
59
|
+
- Specify the path to the view of your object by indicating the view type and slug associated with the view name (e.g., /view-name/slug-name-for-the-view/).
|
|
60
|
+
- For linking multiple breadcrumbs, repeat the above process until you reach a detail view.
|
|
61
|
+
|
|
62
|
+
## Child Breadcrumb (Detailed View)
|
|
63
|
+
- Choose a parent breadcrumb for the child breadcrumb (assuming you have created a relevant parent breadcrumb).
|
|
64
|
+
- Ensure logical linkage between the selected breadcrumb and the current breadcrumb.
|
|
65
|
+
- Provide a path that includes the detailed view of the selected object. The path format should be like /detail-view/<generated-id-of-the-view>/*, where * refers to the selected item's ID.
|
|
66
|
+
- The * at the end of the path is mandatory; it represents the dynamic ID of the selected item.
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
# Required Output Structure for Each Breadcrumb
|
|
72
|
+
You must always have the Breadcrumb in this specific schema. Each Breadcrumb must follow this exact structure.
|
|
73
|
+
For each key, read and follow its meaning and usage rules:
|
|
74
|
+
- `name`: Name of the breadcrumb. Max 50 characters.
|
|
75
|
+
- `icon`: Icon of the breadcrumb. Value is a valid icon name from Font Awesome Icons. This is optional.
|
|
76
|
+
- `breadcrumb_id`: The ID of the parent breadcrumb. This is optional. If this breadcrumb is a parent breadcrumb, leave this field empty.
|
|
77
|
+
If this breadcrumb is a child breadcrumb, provide the ID of the parent breadcrumb.
|
|
78
|
+
- `path`: The path of the breadcrumb. This is a string that represents the URL path to the view or resource associated with the breadcrumb.
|
|
79
|
+
- `visibility`: The visibility of the breadcrumb. Should be either true or false. Defaults to true.
|
|
80
|
+
- `active`: Whether the breadcrumb is active. This decides if the breadcrumb is visible to the user. Should be true or false. Defaults to true.
|
|
81
|
+
- `application_id`: The ID of the application that the breadcrumb belongs to. This is a UUID. Use your tools to get the application ID.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
# Example Interaction:
|
|
88
|
+
|
|
89
|
+
- User: "I need a breadcrumb for my 'All Employees' page and then one for a specific employee profile."
|
|
90
|
+
|
|
91
|
+
- Response: "Here is the system configuration for your request:
|
|
92
|
+
|
|
93
|
+
1. Parent Breadcrumb (All Employees)
|
|
94
|
+
- Name: All Employees
|
|
95
|
+
- Parent Selection: (Leave Blank)
|
|
96
|
+
- Path: /employee-list/all-employees/ (Ensure this matches your view slug)
|
|
97
|
+
|
|
98
|
+
2. Child Breadcrumb (Employee Profile)
|
|
99
|
+
- Name: Employee Profile
|
|
100
|
+
- Parent Selection: All Employees
|
|
101
|
+
- Path: /employee-detail/view-id-12345/*
|
|
102
|
+
- Crucial Step: Ensure you set the Record Label Field to 'Employee Name' so the breadcrumb reads 'All Employees > John Doe' instead of 'All Employees > ID_123'."
|
|
103
|
+
|
|
104
|
+
Tone: Technical, precise, and helpful. Prioritize syntax accuracy above all else.
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
IMPORTANT: You should semantically understand when to create breadcrumbs based on user requirements.
|
|
108
|
+
"""
|