Add workflows.

This commit is contained in:
Shang Chieh Tseng
2025-05-27 18:58:56 +08:00
parent 0106527b19
commit 710bc25775
4 changed files with 1229 additions and 0 deletions

143
dify/BugBlitz.yml Normal file
View File

@@ -0,0 +1,143 @@
app:
description: ''
icon: 🐛
icon_background: '#FFEAD5'
mode: completion
name: BugBlitz
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/ollama:0.0.6@7d66a960a68cafdcdf5589fdf5d01a995533f956853c69c54eddcf797006fa37
kind: app
model_config:
agent_mode:
enabled: false
max_iteration: 5
strategy: react
tools: []
annotation_reply:
enabled: false
chat_prompt_config: {}
completion_prompt_config: {}
dataset_configs:
datasets:
datasets:
- dataset:
enabled: true
id: 452a673c-ebd1-44fd-be64-fcd0ece799f0
metadata_filtering_mode: automatic
metadata_model_config:
completion_params:
temperature: 0.7
mode: chat
name: gemma3:12b
provider: langgenius/ollama/ollama
reranking_enable: true
reranking_mode: weighted_score
reranking_model:
reranking_model_name: ''
reranking_provider_name: ''
retrieval_model: multiple
top_k: 4
weights:
keyword_setting:
keyword_weight: 0.3
vector_setting:
embedding_model_name: nomic-embed-text
embedding_provider_name: langgenius/ollama/ollama
vector_weight: 0.7
dataset_query_variable: description
external_data_tools: []
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
- .MP4
- .MOV
- .MPEG
- .MPGA
allowed_file_types: []
allowed_file_upload_methods:
- remote_url
- local_file
enabled: false
image:
detail: high
enabled: false
number_limits: 3
transfer_methods:
- remote_url
- local_file
number_limits: 3
model:
completion_params:
num_ctx: 4096
stop: []
mode: chat
name: gemma3:12b
provider: langgenius/ollama/ollama
more_like_this:
enabled: false
opening_statement: null
pre_prompt: 'Here is my request: 
Create a bug report in Jira format with easy words. 
Here is the problem: 
{{title}}
Here is the description: 
{{description}}
Here is the note:
{{note}}
'
prompt_type: simple
retriever_resource:
enabled: true
sensitive_word_avoidance:
configs: []
enabled: false
type: ''
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
user_input_form:
- text-input:
default: ''
label: 'Write Problem/Title Here:'
max_length: 128
required: false
variable: title
- paragraph:
default: ''
label: 'Description:'
max_length: 4096
required: true
variable: description
- paragraph:
default: ''
label: 'Note:'
max_length: 2048
required: false
variable: note
version: 0.3.0

370
dify/ER2Summary.yml Normal file
View File

@@ -0,0 +1,370 @@
app:
description: ''
icon: japanese_ogre
icon_background: '#FFEAD5'
mode: workflow
name: ER2Summary
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/jira:0.0.1@6e48c77165a5bf21ad2a7fa2c73599468acc528706bc5dcbdd5e44d57e01c50b
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/ollama:0.0.6@7d66a960a68cafdcdf5589fdf5d01a995533f956853c69c54eddcf797006fa37
kind: app
version: 0.3.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1747817616323-source-1747883690530-target
source: '1747817616323'
sourceHandle: source
target: '1747883690530'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: code
id: 1747883690530-source-1747819131717-target
source: '1747883690530'
sourceHandle: source
target: '1747819131717'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: llm
id: 1747819131717-source-1747895800944-target
source: '1747819131717'
sourceHandle: source
target: '1747895800944'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: end
id: 1747905952533-source-1747817691653-target
source: '1747905952533'
sourceHandle: source
target: '1747817691653'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: llm
targetType: code
id: 1747895800944-source-1747905952533-target
source: '1747895800944'
sourceHandle: source
target: '1747905952533'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: Start
type: start
variables:
- label: Key
max_length: 48
options: []
required: true
type: text-input
variable: key
height: 90
id: '1747817616323'
position:
x: -122
y: -10
positionAbsolute:
x: -122
y: -10
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
outputs:
- value_selector:
- '1747905952533'
- result
variable: result
selected: false
title: End
type: end
height: 90
id: '1747817691653'
position:
x: 501.22702660966024
y: 79.53306314182922
positionAbsolute:
x: 501.22702660966024
y: 79.53306314182922
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "import re\n\n\ndef atlassian_to_markdown(text: str) -> str:\n \"\
\"\"\n Converts Atlassian wiki-style markup to standard Markdown.\n \
\ \"\"\"\n\n # Normalize line breaks\n text = text.replace('\\\\\
n', '\\n').replace('\\r\\n', '\\n')\n\n # Bold text: +*text*+ → **text**\n\
\ text = re.sub(r'\\+\\*(.+?)\\*\\+', r'**\\1**', text)\n\n # Headings:\
\ h1. → #, h2. → ##, etc.\n text = re.sub(r'^h([1-6])\\.\\s+', lambda\
\ m: '#' *\n int(m.group(1)) + ' ', text, flags=re.MULTILINE)\n\
\n # Blockquotes: > lines\n text = re.sub(r'^\\s*>', '>', text, flags=re.MULTILINE)\n\
\n # Image conversion: !URL|params! → ![](URL)\n text = re.sub(r'!([^\\\
|!]+)\\|[^!]*!', r'![](\\1)', text)\n\n # Escaped dividers to markdown\
\ horizontal rules\n text = re.sub(r'\\\\[-]+', '---', text)\n\n #\
\ Remove extra Unicode whitespace characters (e.g., non-breaking spaces)\n\
\ # note: the space before \\t is a non-breaking space\n text = re.sub(r'[ \\\
t]+', ' ', text)\n\n # Collapse multiple blank lines to a maximum of\
\ 2\n text = re.sub(r'\\n{3,}', '\\n\\n', text)\n\n # Strip trailing\
\ spaces\n text = '\\n'.join(line.rstrip() for line in text.splitlines())\n\
\n return text.strip()\n\n\ndef format_comments_display(comments: list)\
\ -> str:\n \"\"\"\n Format a list of comments to simple markdown\
\ with display name and converted body.\n \"\"\"\n output = []\n \
\ for comment in comments:\n name = comment.get(\"author\", {}).get(\"\
displayName\", \"Unknown Author\")\n body_raw = comment.get(\"body\"\
, \"\")\n body_md = atlassian_to_markdown(body_raw)\n output.append(f\"\
### {name}\\n\\n{body_md}\\n\")\n return \"\\n---\\n\".join(output)\n\
\n\ndef main(jira_response: list) -> dict:\n \"\"\"Formats JSON data\
\ into a Jira-style ticket string (simplified format).\"\"\"\n issue\
\ = jira_response[0][\"issue\"]\n jira_ticket = issue[\"key\"]\n root_cause\
\ = atlassian_to_markdown(issue[\"fields\"][\"customfield_10205\"])\n \
\ description = atlassian_to_markdown(issue[\"fields\"][\"description\"\
])\n comments = format_comments_display(issue[\"fields\"][\"comment\"\
][\"comments\"])\n summary = issue[\"fields\"][\"summary\"]\n ticket\
\ = f\"\"\"\n## Jira Ticket\n{jira_ticket}\n\n## Title\n{summary}\n\n##\
\ Root Cause\n{root_cause}\n\n## Description\n{description}\n\n## Comment\n\
{comments}\n\"\"\"\n\n return {\n \"result\": ticket\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: Format Jira response
type: code
variables:
- value_selector:
- '1747883690530'
- json
variable: jira_response
height: 54
id: '1747819131717'
position:
x: -11.190539821206812
y: 171.25540547079942
positionAbsolute:
x: -11.190539821206812
y: 171.25540547079942
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
is_team_authorization: true
output_schema: null
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: The Key of the Jira issue to retrieve details for (e.g., 'PROJ-123').
ja_JP: The Key of the Jira issue to retrieve details for (e.g., 'PROJ-123').
pt_BR: O ID ou a chave da issue a ser recuperada.
zh_Hans: 要获取详情的 Jira 问题的 Key (例如 'PROJ-123')。
label:
en_US: Issue Key
ja_JP: Issue Key
pt_BR: ID ou Chave da Issue
zh_Hans: 问题 Key
llm_description: The unique key (e.g., 'PROJ-123') for the Jira issue for
which details are requested. This field is mandatory.
max: null
min: null
name: issue_key
options: []
placeholder: null
precision: null
required: true
scope: null
template: null
type: string
params:
issue_key: ''
provider_id: langgenius/jira/jira
provider_name: langgenius/jira/jira
provider_type: builtin
selected: false
title: Get Jira Issue Details
tool_configurations: {}
tool_description: Retrieves details for a specific Jira issue.
tool_label: Get Jira Issue Details
tool_name: get_issue
tool_parameters:
issue_key:
type: mixed
value: '{{#1747817616323.key#}}'
type: tool
height: 54
id: '1747883690530'
position:
x: -64.33288254138103
y: 98.39009010462206
positionAbsolute:
x: -64.33288254138103
y: 98.39009010462206
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
num_ctx: 8192
temperature: 0
mode: chat
name: gemma3:12b
provider: langgenius/ollama/ollama
prompt_template:
- id: 779cc54c-a30d-4bab-9e59-402591b89081
role: system
text: Summary a customer issue. Response summary only, no opening words.
- id: e02c0dbc-6515-4667-8b6a-870455d2f15c
role: user
text: 'Customer issue: {{#1747819131717.result#}}'
selected: true
title: SUMMARY CUSTOMER ISSUE
type: llm
variables: []
vision:
enabled: false
height: 90
id: '1747895800944'
position:
x: 53.64684795127846
y: 243.68108125546502
positionAbsolute:
x: 53.64684795127846
y: 243.68108125546502
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "\ndef main(summary: str, customer_issue: str) -> dict:\n output\
\ = f\"\"\"\n# Summary\n{summary}\n\n# Customer Issue\n{customer_issue}\n\
\"\"\"\n return {\n \"result\": output\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: Format output
type: code
variables:
- value_selector:
- '1747895800944'
- text
variable: summary
- value_selector:
- '1747819131717'
- result
variable: customer_issue
height: 54
id: '1747905952533'
position:
x: 427.66710480323854
y: -10
positionAbsolute:
x: 427.66710480323854
y: -10
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
viewport:
x: 232.8226952008705
y: 256.5781340693524
zoom: 1.0111520808513048

346
dify/HLD2Summary.yml Normal file
View File

@@ -0,0 +1,346 @@
app:
description: ''
icon: 🧙
icon_background: '#FFEAD5'
mode: workflow
name: HLD2Summary
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/ollama:0.0.6@7d66a960a68cafdcdf5589fdf5d01a995533f956853c69c54eddcf797006fa37
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/confluence:0.0.1@dc070d3c98c38288e19ea8baadbbc94b55aed731d8a3bf045eeb771d475c9d7d
kind: app
version: 0.3.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: llm
id: 1747819131717-source-1747895800944-target
source: '1747819131717'
sourceHandle: source
target: '1747895800944'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: end
id: 1747905952533-source-1747817691653-target
source: '1747905952533'
sourceHandle: source
target: '1747817691653'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: llm
targetType: code
id: 1747895800944-source-1747905952533-target
source: '1747895800944'
sourceHandle: source
target: '1747905952533'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1747817616323-source-1748333434335-target
source: '1747817616323'
sourceHandle: source
target: '1748333434335'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: code
id: 1748333434335-source-1747819131717-target
source: '1748333434335'
sourceHandle: source
target: '1747819131717'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: Start
type: start
variables:
- label: Page
max_length: 48
options: []
required: true
type: text-input
variable: page_id
height: 90
id: '1747817616323'
position:
x: -121.99999999999997
y: -10.988970916380921
positionAbsolute:
x: -121.99999999999997
y: -10.988970916380921
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
outputs:
- value_selector:
- '1747905952533'
- result
variable: result
selected: false
title: End
type: end
height: 90
id: '1747817691653'
position:
x: 517.050561271755
y: 196.23163127477906
positionAbsolute:
x: 517.050561271755
y: 196.23163127477906
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "import html2text\n\ndef html_to_markdown(html_data: str) -> str:\n\
\ \"\"\"Convert HTML string to Markdown format.\"\"\"\n converter\
\ = html2text.HTML2Text()\n converter.ignore_links = False # Set to\
\ True to remove hyperlinks\n markdown = converter.handle(html_data)\n\
\ return markdown\n\ndef main(response: list) -> dict:\n \"\"\"Formats\
\ JSON data into a Jira-style ticket string (simplified format).\"\"\"\n\
\ content = response[0]\n title = content[\"title\"]\n body = html_to_markdown(content[\"\
body\"][\"storage\"][\"value\"])\n page = f\"\"\"\n* {title}\n\n{body}\n\
\"\"\"\n\n return {\n \"result\": page\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: Format Jira Response
type: code
variables:
- value_selector:
- '1748333434335'
- json
variable: response
height: 54
id: '1747819131717'
position:
x: 68.91610440564858
y: 196.23163127477906
positionAbsolute:
x: 68.91610440564858
y: 196.23163127477906
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
num_ctx: 8192
temperature: 0
mode: chat
name: gemma3:12b
provider: langgenius/ollama/ollama
prompt_template:
- id: 779cc54c-a30d-4bab-9e59-402591b89081
role: system
text: Summary a design document. Response summary only, no opening words.
- id: e02c0dbc-6515-4667-8b6a-870455d2f15c
role: user
text: 'Customer issue: {{#1747819131717.result#}}'
selected: true
title: Summary Design Document
type: llm
variables: []
vision:
enabled: false
height: 90
id: '1747895800944'
position:
x: 344.40429736727214
y: -18.39621158548165
positionAbsolute:
x: 344.40429736727214
y: -18.39621158548165
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "\ndef main(wiki_page: str, summary: str) -> dict:\n data = f\"\"\
\"\n# Summary\n{summary}\n\n# Wiki Page\n{wiki_page}\n\"\"\"\n return\
\ {\n \"result\": data\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: Format output
type: code
variables:
- value_selector:
- '1747819131717'
- result
variable: wiki_page
- value_selector:
- '1747895800944'
- text
variable: summary
height: 54
id: '1747905952533'
position:
x: 436.5678430506666
y: 107.98931176551164
positionAbsolute:
x: 436.5678430506666
y: 107.98931176551164
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
is_team_authorization: true
output_schema: null
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: The unique ID of the Confluence page to retrieve.
ja_JP: The unique ID of the Confluence page to retrieve.
pt_BR: The unique ID of the Confluence page to retrieve.
zh_Hans: 要检索的 Confluence 页面的唯一 ID。
label:
en_US: Page ID
ja_JP: Page ID
pt_BR: Page ID
zh_Hans: 页面 ID
llm_description: The unique identifier for the Confluence page you want
to fetch.
max: null
min: null
name: page_id
options: []
placeholder: null
precision: null
required: true
scope: null
template: null
type: string
params:
page_id: ''
provider_id: langgenius/confluence/confluence
provider_name: langgenius/confluence/confluence
provider_type: builtin
selected: false
title: Get the content of a Confluence page
tool_configurations: {}
tool_description: Retrieves details of a specific Confluence page by its ID.
tool_label: Get the content of a Confluence page
tool_name: get_page
tool_parameters:
page_id:
type: mixed
value: '{{#1747817616323.page_id#}}'
type: tool
height: 54
id: '1748333434335'
position:
x: -2.9375613632340674
y: 107.98931176551164
positionAbsolute:
x: -2.9375613632340674
y: 107.98931176551164
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
viewport:
x: 153.928130482148
y: 147.90923715287454
zoom: 1.0111520808513048

370
dify/Jira2Summary.yml Normal file
View File

@@ -0,0 +1,370 @@
app:
description: ''
icon: 🐛
icon_background: '#FFE4E8'
mode: workflow
name: Jira2Summary
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/jira:0.0.1@6e48c77165a5bf21ad2a7fa2c73599468acc528706bc5dcbdd5e44d57e01c50b
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/ollama:0.0.6@7d66a960a68cafdcdf5589fdf5d01a995533f956853c69c54eddcf797006fa37
kind: app
version: 0.3.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1747817616323-source-1747883690530-target
source: '1747817616323'
sourceHandle: source
target: '1747883690530'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: code
id: 1747883690530-source-1747819131717-target
source: '1747883690530'
sourceHandle: source
target: '1747819131717'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: llm
id: 1747819131717-source-1747895800944-target
source: '1747819131717'
sourceHandle: source
target: '1747895800944'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 1747895800944-source-1748315215726-target
source: '1747895800944'
sourceHandle: source
target: '1748315215726'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: end
id: 1748315215726-source-1747817691653-target
source: '1748315215726'
sourceHandle: source
target: '1747817691653'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: Start
type: start
variables:
- label: Key
max_length: 48
options: []
required: true
type: text-input
variable: key
height: 89
id: '1747817616323'
position:
x: -122
y: -10
positionAbsolute:
x: -122
y: -10
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 243
- data:
desc: ''
outputs:
- value_selector:
- '1748315215726'
- result
variable: result
selected: false
title: End
type: end
height: 89
id: '1747817691653'
position:
x: 442.58237102178646
y: 64.41148294948663
positionAbsolute:
x: 442.58237102178646
y: 64.41148294948663
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 243
- data:
code: "import re\n\n\ndef atlassian_to_markdown(text: str) -> str:\n \"\
\"\"\n Converts Atlassian wiki-style markup to standard Markdown.\n \
\ \"\"\"\n\n # Normalize line breaks\n text = text.replace('\\\\\
n', '\\n').replace('\\r\\n', '\\n')\n\n # Bold text: +*text*+ → **text**\n\
\ text = re.sub(r'\\+\\*(.+?)\\*\\+', r'**\\1**', text)\n\n # Headings:\
\ h1. → #, h2. → ##, etc.\n text = re.sub(r'^h([1-6])\\.\\s+', lambda\
\ m: '#' *\n int(m.group(1)) + ' ', text, flags=re.MULTILINE)\n\
\n # Blockquotes: > lines\n text = re.sub(r'^\\s*>', '>', text, flags=re.MULTILINE)\n\
\n # Image conversion: !URL|params! → ![](URL)\n text = re.sub(r'!([^\\\
|!]+)\\|[^!]*!', r'![](\\1)', text)\n\n # Escaped dividers to markdown\
\ horizontal rules\n text = re.sub(r'\\\\[-]+', '---', text)\n\n #\
\ Remove extra Unicode whitespace characters (e.g., non-breaking spaces)\n\
\ # note: the space before \\t is a non-breaking space\n text = re.sub(r'[ \\\
t]+', ' ', text)\n\n # Collapse multiple blank lines to a maximum of\
\ 2\n text = re.sub(r'\\n{3,}', '\\n\\n', text)\n\n # Strip trailing\
\ spaces\n text = '\\n'.join(line.rstrip() for line in text.splitlines())\n\
\n return text.strip()\n\n\ndef format_comments_display(comments: list)\
\ -> str:\n \"\"\"\n Format a list of comments to simple markdown\
\ with display name and converted body.\n \"\"\"\n output = []\n \
\ for comment in comments:\n name = comment.get(\"author\", {}).get(\"\
displayName\", \"Unknown Author\")\n body_raw = comment.get(\"body\"\
, \"\")\n body_md = atlassian_to_markdown(body_raw)\n output.append(f\"\
### {name}\\n\\n{body_md}\\n\")\n return \"\\n---\\n\".join(output)\n\
\n\ndef main(jira_response: list) -> dict:\n \"\"\"Formats JSON data\
\ into a Jira-style ticket string (simplified format).\"\"\"\n issue\
\ = jira_response[0][\"issue\"]\n jira_ticket = issue[\"key\"]\n description\
\ = atlassian_to_markdown(issue[\"fields\"][\"description\"])\n comments\
\ = format_comments_display(issue[\"fields\"][\"comment\"][\"comments\"\
])\n summary = issue[\"fields\"][\"summary\"]\n ticket = f\"\"\"\n\
## Jira Ticket\n{jira_ticket}\n\n## Title\n{summary}\n\n## Description\n\
{description}\n\n## Comment\n{comments}\n\"\"\"\n\n return {\n \
\ \"result\": ticket\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: FORMAT RAW DATA
type: code
variables:
- value_selector:
- '1747883690530'
- json
variable: jira_response
height: 53
id: '1747819131717'
position:
x: -11.190539821206812
y: 171.25540547079942
positionAbsolute:
x: -11.190539821206812
y: 171.25540547079942
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 243
- data:
desc: ''
is_team_authorization: true
output_schema: null
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: The Key of the Jira issue to retrieve details for (e.g., 'PROJ-123').
ja_JP: The Key of the Jira issue to retrieve details for (e.g., 'PROJ-123').
pt_BR: O ID ou a chave da issue a ser recuperada.
zh_Hans: 要获取详情的 Jira 问题的 Key (例如 'PROJ-123')。
label:
en_US: Issue Key
ja_JP: Issue Key
pt_BR: ID ou Chave da Issue
zh_Hans: 问题 Key
llm_description: The unique key (e.g., 'PROJ-123') for the Jira issue for
which details are requested. This field is mandatory.
max: null
min: null
name: issue_key
options: []
placeholder: null
precision: null
required: true
scope: null
template: null
type: string
params:
issue_key: ''
provider_id: langgenius/jira/jira
provider_name: langgenius/jira/jira
provider_type: builtin
selected: false
title: Get Jira Issue Details
tool_configurations: {}
tool_description: Retrieves details for a specific Jira issue.
tool_label: Get Jira Issue Details
tool_name: get_issue
tool_parameters:
issue_key:
type: mixed
value: '{{#1747817616323.key#}}'
type: tool
height: 53
id: '1747883690530'
position:
x: -64.33288254138103
y: 98.39009010462206
positionAbsolute:
x: -64.33288254138103
y: 98.39009010462206
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 243
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
num_ctx: 8192
temperature: 0
mode: chat
name: gemma3:12b
provider: langgenius/ollama/ollama
prompt_template:
- id: 779cc54c-a30d-4bab-9e59-402591b89081
role: system
text: Summary a customer issue. Response summary only, no opening words.
- id: e02c0dbc-6515-4667-8b6a-870455d2f15c
role: user
text: 'Customer issue: {{#1747819131717.result#}}'
selected: false
title: SUMMARY CUSTOMER ISSUE
type: llm
variables: []
vision:
enabled: false
height: 89
id: '1747895800944'
position:
x: 53.64684795127846
y: 243.68108125546502
positionAbsolute:
x: 53.64684795127846
y: 243.68108125546502
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 243
- data:
code: "\ndef main(issue: str, summary: str) -> dict:\n report = f\"\"\"\
\n# Summary\n{summary}\n\n# Issue\n{issue}\n\"\"\"\n return {\n \
\ \"result\": report,\n }\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: Format Result
type: code
variables:
- value_selector:
- '1747819131717'
- result
variable: issue
- value_selector:
- '1747895800944'
- text
variable: summary
height: 53
id: '1748315215726'
position:
x: 367.8279410310432
y: -10
positionAbsolute:
x: 367.8279410310432
y: -10
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 243
viewport:
x: 421.03690934437714
y: 191.19077918077414
zoom: 0.9944701686732147