sfdx-hardis 5.40.0 → 5.41.0
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.
- package/CHANGELOG.md +5 -0
- package/lib/commands/hardis/doc/override-prompts.d.ts +11 -0
- package/lib/commands/hardis/doc/override-prompts.js +164 -0
- package/lib/commands/hardis/doc/override-prompts.js.map +1 -0
- package/lib/common/aiProvider/promptTemplates/PROMPT_COMPLETE_OBJECT_ATTRIBUTES_MD.js +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_APEX.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_APEX.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_APPROVAL_PROCESS.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_APPROVAL_PROCESS.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ASSIGNMENT_RULES.js +4 -11
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ASSIGNMENT_RULES.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_AUTORESPONSE_RULES.js +6 -12
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_AUTORESPONSE_RULES.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ESCALATION_RULES.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ESCALATION_RULES.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_FLOW.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_FLOW.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_FLOW_DIFF.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_FLOW_DIFF.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_LWC.js +3 -7
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_LWC.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_OBJECT.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_OBJECT.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PACKAGE.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PACKAGE.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PAGE.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PAGE.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET_GROUP.js +4 -10
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET_GROUP.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PROFILE.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PROFILE.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ROLES.js +3 -8
- package/lib/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ROLES.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/PROMPT_SOLVE_DEPLOYMENT_ERROR.js +3 -9
- package/lib/common/aiProvider/promptTemplates/PROMPT_SOLVE_DEPLOYMENT_ERROR.js.map +1 -1
- package/lib/common/aiProvider/promptTemplates/VARIABLE_ADDITIONAL_INSTRUCTIONS.d.ts +3 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_ADDITIONAL_INSTRUCTIONS.js +11 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_ADDITIONAL_INSTRUCTIONS.js.map +1 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_FORMATTING_REQUIREMENTS.d.ts +3 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_FORMATTING_REQUIREMENTS.js +13 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_FORMATTING_REQUIREMENTS.js.map +1 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.d.ts +3 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.js +8 -0
- package/lib/common/aiProvider/promptTemplates/VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.js.map +1 -0
- package/lib/common/aiProvider/promptTemplates/variablesIndex.d.ts +3 -0
- package/lib/common/aiProvider/promptTemplates/variablesIndex.js +9 -0
- package/lib/common/aiProvider/promptTemplates/variablesIndex.js.map +1 -0
- package/lib/common/aiProvider/promptTemplates.js +43 -2
- package/lib/common/aiProvider/promptTemplates.js.map +1 -1
- package/oclif.manifest.json +621 -542
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ const template = {
|
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
14
|
text: {
|
|
15
|
-
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce Lightning Page "{{PAGE_NAME}}" in plain English, providing a detailed explanation suitable for a business user.
|
|
15
|
+
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce Lightning Page "{{PAGE_NAME}}" in plain English, providing a detailed explanation suitable for a business user. {{VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC}}
|
|
16
16
|
|
|
17
17
|
### Instructions:
|
|
18
18
|
|
|
@@ -20,19 +20,14 @@ const template = {
|
|
|
20
20
|
- Begin by summarizing the role of the lightning page.
|
|
21
21
|
- List the key tabs, sections, views, related lists and actions described in the lightning page.
|
|
22
22
|
|
|
23
|
-
2.
|
|
24
|
-
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
25
|
-
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
26
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
27
|
-
- Never truncate any information in the response.
|
|
28
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
23
|
+
2. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
29
24
|
|
|
30
25
|
### Reference Data:
|
|
31
26
|
|
|
32
27
|
- The metadata XML for Lightning page "{{PAGE_NAME}}" is:
|
|
33
28
|
{{PAGE_XML}}
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
36
31
|
`,
|
|
37
32
|
},
|
|
38
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_DESCRIBE_PAGE.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PAGE.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,wDAAwD;YACrE,OAAO,EAAE,qBAAqB;SAC/B;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,0CAA0C;YACvD,OAAO,EAAE,4BAA4B;SACtC;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"PROMPT_DESCRIBE_PAGE.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PAGE.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,wDAAwD;YACrE,OAAO,EAAE,qBAAqB;SAC/B;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,0CAA0C;YACvD,OAAO,EAAE,4BAA4B;SACtC;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;;;CAgBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -10,9 +10,8 @@ const template = {
|
|
|
10
10
|
description: "The XML metadata for the Salesforce Permission Set.",
|
|
11
11
|
example: "<PermissionSet>...</PermissionSet>"
|
|
12
12
|
}
|
|
13
|
-
],
|
|
14
|
-
|
|
15
|
-
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce PermissionSet "{{PERMISSIONSET_NAME}}" in plain English, providing a detailed explanation suitable for a business user. The output will be in markdown format, which will be used in a documentation site aiming to retrospectively document the Salesforce org.
|
|
13
|
+
], text: {
|
|
14
|
+
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce PermissionSet "{{PERMISSIONSET_NAME}}" in plain English, providing a detailed explanation suitable for a business user. {{VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC}}
|
|
16
15
|
|
|
17
16
|
### Instructions:
|
|
18
17
|
|
|
@@ -23,19 +22,14 @@ const template = {
|
|
|
23
22
|
- Ignore Apex classes and Custom Fields
|
|
24
23
|
- Ignore blocks who has access or visibility set to "false"
|
|
25
24
|
|
|
26
|
-
2.
|
|
27
|
-
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
28
|
-
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
29
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
30
|
-
- Never truncate any information in the response.
|
|
31
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
25
|
+
2. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
32
26
|
|
|
33
27
|
### Reference Data:
|
|
34
28
|
|
|
35
29
|
- The metadata XML for Salesforce Permission Set "{{PERMISSIONSET_NAME}}" is:
|
|
36
30
|
{{PERMISSIONSET_XML}}
|
|
37
31
|
|
|
38
|
-
|
|
32
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
39
33
|
`,
|
|
40
34
|
},
|
|
41
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_DESCRIBE_PERMISSION_SET.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,wDAAwD;YACrE,OAAO,EAAE,oBAAoB;SAC9B;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,oCAAoC;SAC9C;KACF
|
|
1
|
+
{"version":3,"file":"PROMPT_DESCRIBE_PERMISSION_SET.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,wDAAwD;YACrE,OAAO,EAAE,oBAAoB;SAC9B;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,oCAAoC;SAC9C;KACF,EAAE,IAAI,EAAE;QACP,IAAI,EAAE;;;;;;;;;;;;;;;;;;;CAmBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -10,9 +10,8 @@ const template = {
|
|
|
10
10
|
description: "The XML metadata for the Salesforce Permission Set Group.",
|
|
11
11
|
example: "<PermissionSetGroup>...</PermissionSetGroup>"
|
|
12
12
|
}
|
|
13
|
-
],
|
|
14
|
-
|
|
15
|
-
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce PermissionSetGroup "{{PERMISSIONSETGROUP_NAME}}" in plain English, providing a detailed explanation suitable for a business user. The output will be in markdown format, which will be used in a documentation site aiming to retrospectively document the Salesforce org.
|
|
13
|
+
], text: {
|
|
14
|
+
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce PermissionSetGroup "{{PERMISSIONSETGROUP_NAME}}" in plain English, providing a detailed explanation suitable for a business user. {{VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC}}
|
|
16
15
|
|
|
17
16
|
### Instructions:
|
|
18
17
|
|
|
@@ -20,19 +19,14 @@ const template = {
|
|
|
20
19
|
- Begin by summarizing the role of the Salesforce PermissionSetGroup that you can guess according to the content of the XML. Try to guess the role of users assigned to this permission set group according to the name, description and related Permission Sets
|
|
21
20
|
- List the key features of the Permission Set.
|
|
22
21
|
|
|
23
|
-
2.
|
|
24
|
-
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
25
|
-
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
26
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
27
|
-
- Never truncate any information in the response.
|
|
28
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
22
|
+
2. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
29
23
|
|
|
30
24
|
### Reference Data:
|
|
31
25
|
|
|
32
26
|
- The metadata XML for Salesforce Permission Set Group "{{PERMISSIONSETGROUP_NAME}}" is:
|
|
33
27
|
{{PERMISSIONSETGROUP_XML}}
|
|
34
28
|
|
|
35
|
-
|
|
29
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
36
30
|
`,
|
|
37
31
|
},
|
|
38
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_DESCRIBE_PERMISSION_SET_GROUP.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET_GROUP.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,kBAAkB;SAC5B;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,8CAA8C;SACxD;KACF
|
|
1
|
+
{"version":3,"file":"PROMPT_DESCRIBE_PERMISSION_SET_GROUP.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PERMISSION_SET_GROUP.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,kBAAkB;SAC5B;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,8CAA8C;SACxD;KACF,EAAE,IAAI,EAAE;QACP,IAAI,EAAE;;;;;;;;;;;;;;;;CAgBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -12,7 +12,7 @@ const template = {
|
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
14
|
text: {
|
|
15
|
-
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce Profile "{{PROFILE_NAME}}" in plain English, providing a detailed explanation suitable for a business user.
|
|
15
|
+
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the content and behavior of the Salesforce Profile "{{PROFILE_NAME}}" in plain English, providing a detailed explanation suitable for a business user. {{VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC}}
|
|
16
16
|
|
|
17
17
|
### Instructions:
|
|
18
18
|
|
|
@@ -23,19 +23,14 @@ const template = {
|
|
|
23
23
|
- Ignore Apex classes and Custom Fields
|
|
24
24
|
- Ignore blocks who has access or visibility set to "false"
|
|
25
25
|
|
|
26
|
-
2.
|
|
27
|
-
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
28
|
-
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
29
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
30
|
-
- Never truncate any information in the response.
|
|
31
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
26
|
+
2. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
32
27
|
|
|
33
28
|
### Reference Data:
|
|
34
29
|
|
|
35
30
|
- The metadata XML for Salesforce Profile "{{PROFILE_NAME}}" is:
|
|
36
31
|
{{PROFILE_XML}}
|
|
37
32
|
|
|
38
|
-
|
|
33
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
39
34
|
`,
|
|
40
35
|
},
|
|
41
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_DESCRIBE_PROFILE.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PROFILE.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,iDAAiD;YAC9D,OAAO,EAAE,gBAAgB;SAC1B;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,wBAAwB;SAClC;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"PROMPT_DESCRIBE_PROFILE.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_PROFILE.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,iDAAiD;YAC9D,OAAO,EAAE,gBAAgB;SAC1B;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,wBAAwB;SAClC;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;CAmBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -8,7 +8,7 @@ const template = {
|
|
|
8
8
|
},
|
|
9
9
|
],
|
|
10
10
|
text: {
|
|
11
|
-
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the business organization of the company.
|
|
11
|
+
"en": `You are a skilled business analyst working on a Salesforce project. Your goal is to summarize the business organization of the company. {{VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC}}
|
|
12
12
|
|
|
13
13
|
### Instructions:
|
|
14
14
|
|
|
@@ -18,19 +18,14 @@ const template = {
|
|
|
18
18
|
- Summarize the roles in a way that is clear and understandable for business stakeholders.
|
|
19
19
|
- Ensure the summary is concise yet comprehensive, highlighting the most important aspects of the role hierarchy.
|
|
20
20
|
|
|
21
|
-
2.
|
|
22
|
-
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
23
|
-
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
24
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
25
|
-
- Never truncate any information in the response.
|
|
26
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
21
|
+
2. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
27
22
|
|
|
28
23
|
### Reference Data:
|
|
29
24
|
|
|
30
25
|
- The description of all role hierarchies is:
|
|
31
26
|
{{ROLES_DESCRIPTION}}
|
|
32
27
|
|
|
33
|
-
|
|
28
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
34
29
|
`,
|
|
35
30
|
},
|
|
36
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_DESCRIBE_ROLES.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ROLES.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,+QAA+Q;YACxR,aAAa,EAAE,MAAM;SACtB;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"PROMPT_DESCRIBE_ROLES.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_DESCRIBE_ROLES.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,+QAA+Q;YACxR,aAAa,EAAE,MAAM;SACtB;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;;;;;CAkBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -5,8 +5,7 @@ const template = {
|
|
|
5
5
|
description: "The Salesforce deployment error message to analyze and solve.",
|
|
6
6
|
example: "Cannot deploy component: missing field 'X' on object 'Y'"
|
|
7
7
|
}
|
|
8
|
-
],
|
|
9
|
-
text: {
|
|
8
|
+
], text: {
|
|
10
9
|
"en": `You are a Salesforce release manager using Salesforce CLI commands to perform deployments. Your goal is to help solve the following Salesforce deployment error in a clear, actionable way for a technical user.
|
|
11
10
|
|
|
12
11
|
### Instructions:
|
|
@@ -20,19 +19,14 @@ const template = {
|
|
|
20
19
|
- If applicable, include the correct sfdx source format or XML example.
|
|
21
20
|
- Do not include instructions on how to retrieve or deploy the changes with Salesforce CLI.
|
|
22
21
|
|
|
23
|
-
3.
|
|
24
|
-
- Use markdown formatting suitable for embedding in a level 2 header (##).
|
|
25
|
-
- Add new lines before starting bullet lists so mkdocs-material displays them correctly, including for sub-bullets.
|
|
26
|
-
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
27
|
-
- Never truncate any information in the response.
|
|
28
|
-
- Provide a concise summary before detailed sections for quick understanding.
|
|
22
|
+
3. {{VARIABLE_FORMATTING_REQUIREMENTS}}
|
|
29
23
|
|
|
30
24
|
### Reference Data:
|
|
31
25
|
|
|
32
26
|
- The deployment error returned by Salesforce CLI is:
|
|
33
27
|
{{ERROR}}
|
|
34
28
|
|
|
35
|
-
|
|
29
|
+
{{VARIABLE_ADDITIONAL_INSTRUCTIONS}}
|
|
36
30
|
`,
|
|
37
31
|
},
|
|
38
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROMPT_SOLVE_DEPLOYMENT_ERROR.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_SOLVE_DEPLOYMENT_ERROR.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+DAA+D;YAC5E,OAAO,EAAE,0DAA0D;SACpE;KACF
|
|
1
|
+
{"version":3,"file":"PROMPT_SOLVE_DEPLOYMENT_ERROR.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/PROMPT_SOLVE_DEPLOYMENT_ERROR.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+DAA+D;YAC5E,OAAO,EAAE,0DAA0D;SACpE;KACF,EAAE,IAAI,EAAE;QACP,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBT;KACE;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const template = {
|
|
2
|
+
variables: [],
|
|
3
|
+
text: {
|
|
4
|
+
"en": `### Additional Instructions
|
|
5
|
+
|
|
6
|
+
- Caution: Redact any sensitive information (tokens, passwords, API keys, etc.) and replace with \`[HIDDEN_SENSITIVE_INFOS]\`.
|
|
7
|
+
- Be as thorough as possible, and make your response clear, complete, and business-friendly.`
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
export default template;
|
|
11
|
+
//# sourceMappingURL=VARIABLE_ADDITIONAL_INSTRUCTIONS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VARIABLE_ADDITIONAL_INSTRUCTIONS.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/VARIABLE_ADDITIONAL_INSTRUCTIONS.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,IAAI,EAAE;;;6FAGmF;KAC1F;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const template = {
|
|
2
|
+
variables: [],
|
|
3
|
+
text: {
|
|
4
|
+
"en": `**Formatting Requirements**:
|
|
5
|
+
- Use markdown formatting suitable for embedding in a level 2 header (\`##\`).
|
|
6
|
+
- Add new lines before starting bullet lists so mkdocs-material renders them correctly, including nested lists.
|
|
7
|
+
- Add new lines after a header title so mkdocs-material can display the content correctly.
|
|
8
|
+
- Never truncate any information in the response.
|
|
9
|
+
- Provide a concise summary before detailed sections for quick understanding.`
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default template;
|
|
13
|
+
//# sourceMappingURL=VARIABLE_FORMATTING_REQUIREMENTS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VARIABLE_FORMATTING_REQUIREMENTS.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/VARIABLE_FORMATTING_REQUIREMENTS.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;kFAKwE;KAC/E;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const template = {
|
|
2
|
+
variables: [],
|
|
3
|
+
text: {
|
|
4
|
+
"en": `The output will be in markdown format, which will be used in a documentation site aiming to retrospectively document the Salesforce org.`
|
|
5
|
+
},
|
|
6
|
+
};
|
|
7
|
+
export default template;
|
|
8
|
+
//# sourceMappingURL=VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAA6B;IACzC,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,IAAI,EAAE,0IAA0I;KACjJ;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC from "./VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC.js";
|
|
2
|
+
import VARIABLE_FORMATTING_REQUIREMENTS from "./VARIABLE_FORMATTING_REQUIREMENTS.js";
|
|
3
|
+
import VARIABLE_ADDITIONAL_INSTRUCTIONS from "./VARIABLE_ADDITIONAL_INSTRUCTIONS.js";
|
|
4
|
+
export const PROMPT_VARIABLES = {
|
|
5
|
+
VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC,
|
|
6
|
+
VARIABLE_FORMATTING_REQUIREMENTS,
|
|
7
|
+
VARIABLE_ADDITIONAL_INSTRUCTIONS,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=variablesIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variablesIndex.js","sourceRoot":"","sources":["../../../../src/common/aiProvider/promptTemplates/variablesIndex.ts"],"names":[],"mappings":"AAEA,OAAO,mCAAmC,MAAM,0CAA0C,CAAC;AAC3F,OAAO,gCAAgC,MAAM,uCAAuC,CAAC;AACrF,OAAO,gCAAgC,MAAM,uCAAuC,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAA6C;IACxE,mCAAmC;IACnC,gCAAgC;IAChC,gCAAgC;CACjC,CAAC"}
|
|
@@ -2,10 +2,15 @@ import { UtilsAi } from "./utils.js";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs-extra";
|
|
4
4
|
import { PROMPT_TEMPLATES as IMPORTED_PROMPT_TEMPLATES } from "./promptTemplates/index.js";
|
|
5
|
+
import { PROMPT_VARIABLES } from "./promptTemplates/variablesIndex.js";
|
|
5
6
|
import { uxLog } from "../utils/index.js";
|
|
6
|
-
// Loads a template, allowing override from local
|
|
7
|
+
// Loads a template, allowing override from local file, with caching
|
|
8
|
+
const promptTemplateCache = {};
|
|
7
9
|
function getPromptTemplate(template) {
|
|
8
|
-
|
|
10
|
+
if (promptTemplateCache[template]) {
|
|
11
|
+
return promptTemplateCache[template];
|
|
12
|
+
}
|
|
13
|
+
const templateData = { ...IMPORTED_PROMPT_TEMPLATES[template] };
|
|
9
14
|
if (!templateData) {
|
|
10
15
|
throw new Error(`Unknown prompt template: ${template}`);
|
|
11
16
|
}
|
|
@@ -24,8 +29,38 @@ function getPromptTemplate(template) {
|
|
|
24
29
|
uxLog(this, `Error loading local template for ${template}: ${e.message}`);
|
|
25
30
|
}
|
|
26
31
|
}
|
|
32
|
+
promptTemplateCache[template] = templateData;
|
|
27
33
|
return templateData;
|
|
28
34
|
}
|
|
35
|
+
// Loads a prompt variable, allowing override from local file, with caching
|
|
36
|
+
const promptVariableCache = {};
|
|
37
|
+
function getPromptVariable(variable) {
|
|
38
|
+
if (promptVariableCache[variable]) {
|
|
39
|
+
return promptVariableCache[variable];
|
|
40
|
+
}
|
|
41
|
+
const variableData = PROMPT_VARIABLES[variable];
|
|
42
|
+
if (!variableData) {
|
|
43
|
+
throw new Error(`Unknown prompt variable: ${variable}`);
|
|
44
|
+
}
|
|
45
|
+
// Check for local override (Text file)
|
|
46
|
+
const localPath = path.resolve(process.cwd(), "config", "prompt-templates", `${variable}.txt`);
|
|
47
|
+
if (fs.existsSync(localPath)) {
|
|
48
|
+
try {
|
|
49
|
+
const localVariable = fs.readFileSync(localPath, "utf-8");
|
|
50
|
+
uxLog(this, `Loaded local prompt variable for ${variable} from ${localPath}`);
|
|
51
|
+
promptVariableCache[variable] = localVariable;
|
|
52
|
+
return localVariable;
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
// fallback to default if error
|
|
56
|
+
uxLog(this, `Error loading local variable for ${variable}: ${e.message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const promptsLanguage = UtilsAi.getPromptsLanguage();
|
|
60
|
+
const value = variableData.text?.[promptsLanguage] || variableData.text?.["en"] || "";
|
|
61
|
+
promptVariableCache[variable] = value;
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
29
64
|
export function buildPromptFromTemplate(template, variables) {
|
|
30
65
|
const templateData = getPromptTemplate(template);
|
|
31
66
|
const missingVariables = templateData.variables.filter((variable) => !variables[variable.name]);
|
|
@@ -40,6 +75,12 @@ export function buildPromptFromTemplate(template, variables) {
|
|
|
40
75
|
}
|
|
41
76
|
const promptsLanguage = UtilsAi.getPromptsLanguage();
|
|
42
77
|
let prompt = process.env?.[template] || templateData.text?.[promptsLanguage] || (templateData.text?.["en"] + `\n\nIMPORTANT: Please reply in the language corresponding to ISO code "${promptsLanguage}" (for example, in french for "fr", in english for "en", in german for "de", etc.)`);
|
|
78
|
+
// Replace prompt variables first (format: {{VARIABLE_NAME}})
|
|
79
|
+
for (const variableName of Object.keys(PROMPT_VARIABLES)) {
|
|
80
|
+
const variableContent = getPromptVariable(variableName);
|
|
81
|
+
prompt = prompt.replaceAll(`{{${variableName}}}`, variableContent);
|
|
82
|
+
}
|
|
83
|
+
// Then replace user variables
|
|
43
84
|
for (const variable in variables) {
|
|
44
85
|
prompt = prompt.replaceAll(`{{${variable}}}`, variables[variable]);
|
|
45
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptTemplates.js","sourceRoot":"","sources":["../../../src/common/aiProvider/promptTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAqB1C,
|
|
1
|
+
{"version":3,"file":"promptTemplates.js","sourceRoot":"","sources":["../../../src/common/aiProvider/promptTemplates.ts"],"names":[],"mappings":"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"}
|