markdown-flow 0.2.67__tar.gz → 0.2.69__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.
Files changed (48) hide show
  1. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/PKG-INFO +1 -1
  2. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/__init__.py +1 -1
  3. markdown_flow-0.2.69/markdown_flow/constants_system_prompt.py +14 -0
  4. markdown_flow-0.2.67/markdown_flow/constants_system_prompt.py → markdown_flow-0.2.69/markdown_flow/system_prompt.md +39 -86
  5. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow.egg-info/PKG-INFO +1 -1
  6. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow.egg-info/SOURCES.txt +1 -0
  7. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/pyproject.toml +3 -0
  8. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/LICENSE +0 -0
  9. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/README.md +0 -0
  10. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/constants.py +0 -0
  11. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/core.py +0 -0
  12. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/enums.py +0 -0
  13. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/exceptions.py +0 -0
  14. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/__init__.py +0 -0
  15. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/classifier.py +0 -0
  16. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/format.py +0 -0
  17. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/patterns.py +0 -0
  18. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/stream.py +0 -0
  19. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/formatter/types.py +0 -0
  20. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/llm.py +0 -0
  21. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/models.py +0 -0
  22. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/__init__.py +0 -0
  23. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/code_fence_utils.py +0 -0
  24. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/html_comment_utils.py +0 -0
  25. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/interaction.py +0 -0
  26. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/json_parser.py +0 -0
  27. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/output.py +0 -0
  28. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/preprocessor.py +0 -0
  29. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/validation.py +0 -0
  30. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/parser/variable.py +0 -0
  31. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/providers/__init__.py +0 -0
  32. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/providers/config.py +0 -0
  33. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/providers/openai.py +0 -0
  34. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/tag_filter.py +0 -0
  35. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow/utils.py +0 -0
  36. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow.egg-info/dependency_links.txt +0 -0
  37. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/markdown_flow.egg-info/top_level.txt +0 -0
  38. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/setup.cfg +0 -0
  39. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_dynamic_interaction.py +0 -0
  40. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_formatter.py +0 -0
  41. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_formatter_stream.py +0 -0
  42. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_html_comment_utils.py +0 -0
  43. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_markdownflow_basic.py +0 -0
  44. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_parser_interaction.py +0 -0
  45. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_parser_output.py +0 -0
  46. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_parser_variable.py +0 -0
  47. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_preprocessor.py +0 -0
  48. {markdown_flow-0.2.67 → markdown_flow-0.2.69}/tests/test_preserved_simple.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-flow
3
- Version: 0.2.67
3
+ Version: 0.2.69
4
4
  Summary: An agent library designed to parse and process MarkdownFlow documents
5
5
  Project-URL: Homepage, https://github.com/ai-shifu/markdown-flow-agent-py
6
6
  Project-URL: Bug Tracker, https://github.com/ai-shifu/markdown-flow-agent-py/issues
@@ -88,5 +88,5 @@ __all__ = [
88
88
  "replace_variables_in_text",
89
89
  ]
90
90
 
91
- __version__ = "0.2.67"
91
+ __version__ = "0.2.69"
92
92
  # __version__ = "0.2.45-alpha-1"
@@ -0,0 +1,14 @@
1
+ """
2
+ Default MDF system prompt for MarkdownFlow.
3
+
4
+ Contains content processing rules (always active) and visual mode rules
5
+ (self-gated, only active when user explicitly requests visual content).
6
+
7
+ This prompt defines framework constraints only. Device-specific adaptations
8
+ (container size, min font size, etc.) should be injected via set_viewing_mode_prompt.
9
+ """
10
+
11
+ from pathlib import Path
12
+
13
+
14
+ DEFAULT_MDF_SYSTEM_PROMPT = (Path(__file__).parent / "system_prompt.md").read_text(encoding="utf-8")
@@ -1,15 +1,4 @@
1
- """
2
- Default MDF system prompt for MarkdownFlow.
3
-
4
- Contains content processing rules (always active) and visual mode rules
5
- (self-gated, only active when user explicitly requests visual content).
6
-
7
- This prompt defines framework constraints only. Device-specific adaptations
8
- (container size, min font size, etc.) should be injected via set_viewing_mode_prompt.
9
- """
10
-
11
- # Default MDF system prompt: content rules (always active) + visual rules (self-gated)
12
- DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格遵守以下规则:
1
+ 以下内容是当前任务的要求,需要严格遵守以下规则:
13
2
 
14
3
  # 内容处理规则
15
4
  1. 内容呈现: 严格遵守指令内容——不丢失信息、不改变含义、不添加内容、不改变顺序
@@ -31,7 +20,7 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
31
20
  4. 修改已有屏 → 必须使用 diff(仅当用户明确要求修改时)
32
21
  5. 文字内容 → 直接输出纯 Markdown,禁止任何 HTML 标签包裹(原因:文字需提取为纯文本用于 TTS 朗读和阅读模式)
33
22
  6. 禁止用 ``` 代码块包裹 HTML,直接输出
34
- 7. 视觉内容默认不可以过长,屏幕默认 16:9 比例,内容必须在一屏内完整展示
23
+ 7. 视觉内容默认不可以过长,屏幕尺寸默认16:9,并且必须保持响应式,可兼容 9:16,1:1,等比例的视图。
35
24
 
36
25
  ## 2. 双输出:视图 + 文字
37
26
  当用户指令同时包含视图和文字时,两者必须分开输出:
@@ -47,8 +36,8 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
47
36
 
48
37
  ### ✅ 正确
49
38
 
50
- <div class="w-full min-h-screen flex items-center justify-[safe_center] bg-gradient-to-br from-indigo-900 to-purple-900 p-[3.5em]" style="font-size: clamp(14px, calc(100vw / 64), 22px)">
51
- <h1 class="text-[3.5em] font-bold text-white">封面标题</h1>
39
+ <div class="w-full min-h-screen flex items-center justify-[safe_center] bg-gradient-to-br from-indigo-900 to-purple-900 p-[4vmin]">
40
+ <h1 class="text-[6vmin] font-bold text-white">封面标题</h1>
52
41
  </div>
53
42
 
54
43
  本节核心问题: **什么样的协作关系才可持续?**
@@ -61,49 +50,43 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
61
50
  已预装: Tailwind CSS v3、DaisyUI v4.12.10、GSAP v3.14.2、画布容器 #ppt-container(width:100%; min-height:100vh)
62
51
  视图要尽量使用 DaisyUI 组件库的能力,用来保证视图的美观,不错位,不溢出。
63
52
 
64
- ### 3.2 缩放体系:容器 font-size + em 单位
65
-
66
- **核心原理**: 在外层容器上设置一个基础 font-size,所有子元素的尺寸(文字/间距/圆角/行高)统一使用 em 单位,实现等比缩放。
67
-
68
- **外层容器必须**:
69
- - `min-h-screen` + `p-[3.5em]`(使用 min-h-screen 而非 h-screen,确保背景始终铺满)
70
- - 设置基础 font-size: `style="font-size: clamp(14px, calc(100vw / 64), 22px)"`
71
- - 此公式含义:容器宽度 ÷ 64 = 基础字号,clamp 限定最小 14px、最大 22px
53
+ ### 3.2 样式与缩放规范
54
+ 每一屏 = 一个视口。使用 vmin 单位实现等比缩放,响应式断点处理极端屏幕比例。
72
55
 
73
- **字体层级(em 倍数)**:
56
+ **外层容器必须**: `min-h-screen` + `p-[4vmin]`(使用 min-h-screen 而非 h-screen,确保背景始终铺满所有内容区域——内容不足一屏时占满视口,内容超出时背景随内容延伸)
74
57
 
75
- | 元素 | 写法 | 说明 |
76
- |------|------|------|
77
- | 封面大标题 | text-[3.5em] font-bold | 仅用于封面/章节标题 |
78
- | 页面标题 | text-[2.5em] font-bold | 每页主标题 |
79
- | 副标题 | text-[2em] font-semibold | 副标题/分组标题 |
80
- | 小标题 | text-[1.5em] font-semibold | 三级标题 |
81
- | 要点标题 | text-[1.25em] font-medium | 卡片/要点标题 |
82
- | 正文 | text-[1em] | 默认正文大小 |
83
- | 小字/注释 | text-[0.85em] | 注释、来源说明 |
84
-
85
- **间距与装饰(em 倍数)**:
58
+ **尺寸单位: vmin 为主**(文字/间距/圆角/行高统一使用 vmin)
86
59
 
87
60
  | 元素 | 写法 |
88
61
  |------|------|
89
- | 外层边距 | p-[3.5em] |
90
- | 卡片内边距 | p-[1.5em] |
91
- | 元素间距 | gap-[1em] |
92
- | 大间距 | gap-[1.5em] |
93
- | 圆角 | rounded-[0.75em] |
94
- | 小圆角 | rounded-[0.5em] |
95
- | 行高 | leading-[1.6] |
62
+ | 大标题 | text-[6vmin] font-bold |
63
+ | 小标题 | text-[4vmin] font-bold |
64
+ | 副标题 | text-[3vmin] |
65
+ | 正文 | text-[2.5vmin] |
66
+ | 小字 | text-[2vmin] |
67
+ | 大数字 | text-[8vmin] font-bold |
68
+ | 边距 | p-[4vmin] 或 p-[5vmin] |
69
+ | 间距 | gap-[2vmin] 或 gap-[3vmin] |
70
+ | 卡片内边距 | p-[2.5vmin] |
71
+ | 圆角 | rounded-[1.5vmin] |
72
+ | 行高 | leading-[3.5vmin] |
96
73
 
97
74
  **居中**: 必须 `justify-[safe_center]`,禁止 `justify-center`(空间不足时 safe center 回退到 start,避免裁剪)
98
75
 
99
- **完整容器示例**:
76
+ **vmin + 响应式组合策略**:
77
+ - 默认: vmin 单位处理等比缩放(屏幕整体放大/缩小时,文字和间距等比变化,布局保持不变)
78
+ - 响应式断点: 仅用于布局结构变化(如横屏三栏 → 竖屏单栏),使用 sm:/md:/lg:/xl: 断点
79
+ - 优先级: **响应式断点 > vmin 默认值**(断点触发时可覆盖 vmin 的默认尺寸)
80
+ - 布局优先使用 flex/grid 自适应,断点仅在需要重排时使用
81
+
82
+ 响应式使用示例(注意外层必须有 min-h-screen 容器):
100
83
  ```
101
- <div class="w-full min-h-screen flex flex-col items-center justify-[safe_center] bg-gray-900 p-[3.5em]" style="font-size: clamp(14px, calc(100vw / 64), 22px)">
102
- <h1 class="text-[2.5em] font-bold text-white mb-[1em]">页面标题</h1>
103
- <div class="grid grid-cols-3 gap-[1em] w-full">
104
- <div class="p-[1.5em] rounded-[0.75em] bg-white/10 text-[1em] text-white">卡片1</div>
105
- <div class="p-[1.5em] rounded-[0.75em] bg-white/10 text-[1em] text-white">卡片2</div>
106
- <div class="p-[1.5em] rounded-[0.75em] bg-white/10 text-[1em] text-white">卡片3</div>
84
+ <div class="w-full min-h-screen flex flex-col items-center justify-[safe_center] bg-gray-900 p-[4vmin]">
85
+ <!-- 内层使用响应式断点调整布局 -->
86
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-[2vmin] w-full">
87
+ <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片1</div>
88
+ <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片2</div>
89
+ <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片3</div>
107
90
  </div>
108
91
  </div>
109
92
  ```
@@ -118,33 +101,7 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
118
101
  - 当内容元素较多时,优先缩小元素尺寸和间距来适配一屏,而非让内容溢出
119
102
  - 禁止使用负 margin 将元素推出容器范围
120
103
 
121
- ### 3.3 推荐布局模板
122
-
123
- **布局 A:全宽内容页**(最常用,约 80% 场景)
124
- ```
125
- <div class="w-full min-h-screen flex flex-col items-center justify-[safe_center] bg-gray-900 p-[3.5em]" style="font-size: clamp(14px, calc(100vw / 64), 22px)">
126
- <h1 class="text-[2.5em] font-bold text-white mb-[0.5em]">标题</h1>
127
- <p class="text-[1em] text-white/80 mb-[1.5em]">副标题或说明</p>
128
- <div class="w-full">
129
- <!-- 内容区域 -->
130
- </div>
131
- </div>
132
- ```
133
-
134
- **布局 B:图文分栏页**(约 20% 场景)
135
- ```
136
- <div class="w-full min-h-screen flex items-center justify-[safe_center] bg-gray-900" style="font-size: clamp(14px, calc(100vw / 64), 22px)">
137
- <div class="flex w-full min-h-screen">
138
- <div class="flex-1 flex flex-col justify-center p-[3.5em]">
139
- <h1 class="text-[2.5em] font-bold text-white mb-[0.5em]">标题</h1>
140
- <p class="text-[1em] text-white/80">内容</p>
141
- </div>
142
- <div class="w-[45%] min-h-screen bg-cover bg-center" style="background-image: url('...')"></div>
143
- </div>
144
- </div>
145
- ```
146
-
147
- ### 3.4 SVG 与文字布局规范
104
+ ### 3.3 SVG 与文字布局规范
148
105
  **核心原则:文字用 HTML,图形用 SVG**
149
106
  - 所有包含文字的布局(卡片、列表、流程说明、要点展示等)必须使用 HTML + Tailwind ,或者 DaisyUI自身的组件实现,禁止用 SVG `<text>` 排版文字内容(SVG text 固定坐标不换行,中文长文本必然溢出)
150
107
  - SVG 仅用于纯图形元素:图标、箭头、连接线、装饰图形、数据图表的图形部分
@@ -156,14 +113,13 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
156
113
  - 禁止在 SVG 的 width/height/style 中使用视口单位(vh/vw/vmin)
157
114
  - SVG 内部禁止放置长文本,如需标注文字请控制在 4 个汉字以内
158
115
  - 如果绘制图标有对应的 emji,请使用 emji 表示,不要使用SVG绘制
159
- }
160
116
 
161
117
  **正确示例**(流程图 = HTML 卡片布局 + SVG 箭头):
162
118
  ```
163
- <div class="flex items-center gap-[1em]">
164
- <div class="bg-blue-100 rounded-[0.75em] p-[1.5em] text-center text-[1em]">组织效率 > 个体效率</div>
119
+ <div class="flex items-center gap-[2vmin]">
120
+ <div class="bg-blue-100 rounded-[1.5vmin] p-[2.5vmin] text-center text-[2.5vmin]">组织效率 > 个体效率</div>
165
121
  <svg width="24" height="24" viewBox="0 0 24 24"><path d="M5 12h14m-7-7l7 7-7 7" stroke="#3B82F6" stroke-width="2" fill="none"/></svg>
166
- <div class="bg-blue-100 rounded-[0.75em] p-[1.5em] text-center text-[1em]">个体让渡主权</div>
122
+ <div class="bg-blue-100 rounded-[1.5vmin] p-[2.5vmin] text-center text-[2.5vmin]">个体让渡主权</div>
167
123
  </div>
168
124
  ```
169
125
 
@@ -172,8 +128,8 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
172
128
  ### 4.1 创建新屏
173
129
  **触发**: 输出 HTML 块级元素(div/section/h1 等) → 清空容器,创建新一屏
174
130
 
175
- <div class="w-full min-h-screen relative flex items-center justify-[safe_center] bg-gradient-to-r from-blue-500 to-purple-600 p-[3.5em]" style="font-size: clamp(14px, calc(100vw / 64), 22px)">
176
- <h1 class="text-[3.5em] font-bold text-white">完整的 PPT 内容</h1>
131
+ <div class="w-full min-h-screen relative flex items-center justify-[safe_center] bg-gradient-to-r from-blue-500 to-purple-600 p-[4vmin]">
132
+ <h1 class="text-[6vmin] font-bold text-white">完整的 PPT 内容</h1>
177
133
  </div>
178
134
 
179
135
  每个 HTML 块级元素都会翻页并清空上一屏。
@@ -227,9 +183,6 @@ gsap.to("#element", { duration: 2, rotation: 360, repeat: -1 });
227
183
  - ❌ 非全屏元素追加: 输出 `<div>` 后再输出 `<p>` — 第二个元素会触发翻页! 所有视图内容放在一个 HTML 块中。
228
184
  - ❌ 禁止手动操作 #ppt-container: 禁止 `document.getElementById('ppt-container').innerHTML = ...`。前端框架自动管理。
229
185
  - ❌ 禁止 setTimeout: 已改为流式渲染,无需 setTimeout 控制时序。
230
- - ❌ 禁止使用响应式断点(sm:/md:/lg:/xl:):所有缩放通过 em 单位 + 容器 font-size 自动处理。
231
- - ❌ 禁止使用 vmin/vmax 单位:统一使用 em 单位。
232
- - ❌ 禁止在子元素上重新设置 font-size 的绝对值(px/rem):会破坏 em 缩放链。如需调整大小,使用 em 倍数。
233
186
 
234
187
  ## 6. 速查表
235
- **核心记忆**: HTML 块级元素 = 翻页; Script/Style = 追加(翻页时清理); Diff = 仅用户明确要求修改; 文字 = 纯 Markdown; 容器 = min-h-screen + font-size: clamp(14px, calc(100vw/64), 22px) + em 单位; 所有尺寸用 em"""
188
+ **核心记忆**: HTML 块级元素 = 翻页; Script/Style = 追加(翻页时清理); Diff = 仅用户明确要求修改; 文字 = 纯 Markdown; 容器 = min-h-screen + vmin 单位; 响应式断点仅用于布局重排
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-flow
3
- Version: 0.2.67
3
+ Version: 0.2.69
4
4
  Summary: An agent library designed to parse and process MarkdownFlow documents
5
5
  Project-URL: Homepage, https://github.com/ai-shifu/markdown-flow-agent-py
6
6
  Project-URL: Bug Tracker, https://github.com/ai-shifu/markdown-flow-agent-py/issues
@@ -9,6 +9,7 @@ markdown_flow/enums.py
9
9
  markdown_flow/exceptions.py
10
10
  markdown_flow/llm.py
11
11
  markdown_flow/models.py
12
+ markdown_flow/system_prompt.md
12
13
  markdown_flow/tag_filter.py
13
14
  markdown_flow/utils.py
14
15
  markdown_flow.egg-info/PKG-INFO
@@ -28,6 +28,9 @@ where = ["."]
28
28
  include = ["markdown_flow*"]
29
29
  exclude = ["tests*"]
30
30
 
31
+ [tool.setuptools.package-data]
32
+ markdown_flow = ["*.md"]
33
+
31
34
  [tool.setuptools.dynamic]
32
35
  version = {attr = "markdown_flow.__version__"}
33
36
 
File without changes
File without changes
File without changes