markdown-flow 0.2.66__tar.gz → 0.2.67__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 (47) hide show
  1. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/PKG-INFO +1 -1
  2. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/__init__.py +1 -1
  3. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/constants_system_prompt.py +73 -38
  4. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow.egg-info/PKG-INFO +1 -1
  5. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/LICENSE +0 -0
  6. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/README.md +0 -0
  7. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/constants.py +0 -0
  8. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/core.py +0 -0
  9. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/enums.py +0 -0
  10. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/exceptions.py +0 -0
  11. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/__init__.py +0 -0
  12. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/classifier.py +0 -0
  13. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/format.py +0 -0
  14. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/patterns.py +0 -0
  15. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/stream.py +0 -0
  16. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/formatter/types.py +0 -0
  17. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/llm.py +0 -0
  18. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/models.py +0 -0
  19. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/__init__.py +0 -0
  20. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/code_fence_utils.py +0 -0
  21. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/html_comment_utils.py +0 -0
  22. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/interaction.py +0 -0
  23. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/json_parser.py +0 -0
  24. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/output.py +0 -0
  25. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/preprocessor.py +0 -0
  26. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/validation.py +0 -0
  27. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/parser/variable.py +0 -0
  28. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/providers/__init__.py +0 -0
  29. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/providers/config.py +0 -0
  30. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/providers/openai.py +0 -0
  31. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/tag_filter.py +0 -0
  32. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow/utils.py +0 -0
  33. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow.egg-info/SOURCES.txt +0 -0
  34. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow.egg-info/dependency_links.txt +0 -0
  35. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/markdown_flow.egg-info/top_level.txt +0 -0
  36. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/pyproject.toml +0 -0
  37. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/setup.cfg +0 -0
  38. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_dynamic_interaction.py +0 -0
  39. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_formatter.py +0 -0
  40. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_formatter_stream.py +0 -0
  41. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_html_comment_utils.py +0 -0
  42. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_markdownflow_basic.py +0 -0
  43. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_parser_interaction.py +0 -0
  44. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_parser_output.py +0 -0
  45. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_parser_variable.py +0 -0
  46. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/tests/test_preprocessor.py +0 -0
  47. {markdown_flow-0.2.66 → markdown_flow-0.2.67}/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.66
3
+ Version: 0.2.67
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.66"
91
+ __version__ = "0.2.67"
92
92
  # __version__ = "0.2.45-alpha-1"
@@ -31,7 +31,7 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
31
31
  4. 修改已有屏 → 必须使用 diff(仅当用户明确要求修改时)
32
32
  5. 文字内容 → 直接输出纯 Markdown,禁止任何 HTML 标签包裹(原因:文字需提取为纯文本用于 TTS 朗读和阅读模式)
33
33
  6. 禁止用 ``` 代码块包裹 HTML,直接输出
34
- 7. 视觉内容默认不可以过长,屏幕尺寸默认16:9,并且必须保持响应式,可兼容 9:16,1:1,等比例的视图。
34
+ 7. 视觉内容默认不可以过长,屏幕默认 16:9 比例,内容必须在一屏内完整展示
35
35
 
36
36
  ## 2. 双输出:视图 + 文字
37
37
  当用户指令同时包含视图和文字时,两者必须分开输出:
@@ -47,8 +47,8 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
47
47
 
48
48
  ### ✅ 正确
49
49
 
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-[4vmin]">
51
- <h1 class="text-[6vmin] font-bold text-white">封面标题</h1>
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>
52
52
  </div>
53
53
 
54
54
  本节核心问题: **什么样的协作关系才可持续?**
@@ -61,43 +61,49 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
61
61
  已预装: Tailwind CSS v3、DaisyUI v4.12.10、GSAP v3.14.2、画布容器 #ppt-container(width:100%; min-height:100vh)
62
62
  视图要尽量使用 DaisyUI 组件库的能力,用来保证视图的美观,不错位,不溢出。
63
63
 
64
- ### 3.2 样式与缩放规范
65
- 每一屏 = 一个视口。使用 vmin 单位实现等比缩放,响应式断点处理极端屏幕比例。
64
+ ### 3.2 缩放体系:容器 font-size + em 单位
66
65
 
67
- **外层容器必须**: `min-h-screen` + `p-[4vmin]`(使用 min-h-screen 而非 h-screen,确保背景始终铺满所有内容区域——内容不足一屏时占满视口,内容超出时背景随内容延伸)
66
+ **核心原理**: 在外层容器上设置一个基础 font-size,所有子元素的尺寸(文字/间距/圆角/行高)统一使用 em 单位,实现等比缩放。
68
67
 
69
- **尺寸单位: vmin 为主**(文字/间距/圆角/行高统一使用 vmin)
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
72
+
73
+ **字体层级(em 倍数)**:
74
+
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 倍数)**:
70
86
 
71
87
  | 元素 | 写法 |
72
88
  |------|------|
73
- | 大标题 | text-[6vmin] font-bold |
74
- | 小标题 | text-[4vmin] font-bold |
75
- | 副标题 | text-[3vmin] |
76
- | 正文 | text-[2.5vmin] |
77
- | 小字 | text-[2vmin] |
78
- | 大数字 | text-[8vmin] font-bold |
79
- | 边距 | p-[4vmin] 或 p-[5vmin] |
80
- | 间距 | gap-[2vmin] 或 gap-[3vmin] |
81
- | 卡片内边距 | p-[2.5vmin] |
82
- | 圆角 | rounded-[1.5vmin] |
83
- | 行高 | leading-[3.5vmin] |
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] |
84
96
 
85
97
  **居中**: 必须 `justify-[safe_center]`,禁止 `justify-center`(空间不足时 safe center 回退到 start,避免裁剪)
86
98
 
87
- **vmin + 响应式组合策略**:
88
- - 默认: vmin 单位处理等比缩放(屏幕整体放大/缩小时,文字和间距等比变化,布局保持不变)
89
- - 响应式断点: 仅用于布局结构变化(如横屏三栏 → 竖屏单栏),使用 sm:/md:/lg:/xl: 断点
90
- - 优先级: **响应式断点 > vmin 默认值**(断点触发时可覆盖 vmin 的默认尺寸)
91
- - 布局优先使用 flex/grid 自适应,断点仅在需要重排时使用
92
-
93
- 响应式使用示例(注意外层必须有 min-h-screen 容器):
99
+ **完整容器示例**:
94
100
  ```
95
- <div class="w-full min-h-screen flex flex-col items-center justify-[safe_center] bg-gray-900 p-[4vmin]">
96
- <!-- 内层使用响应式断点调整布局 -->
97
- <div class="grid grid-cols-1 md:grid-cols-3 gap-[2vmin] w-full">
98
- <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片1</div>
99
- <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片2</div>
100
- <div class="p-[2.5vmin] rounded-[1.5vmin] bg-white/10 text-[2.5vmin]">卡片3</div>
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>
101
107
  </div>
102
108
  </div>
103
109
  ```
@@ -112,7 +118,33 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
112
118
  - 当内容元素较多时,优先缩小元素尺寸和间距来适配一屏,而非让内容溢出
113
119
  - 禁止使用负 margin 将元素推出容器范围
114
120
 
115
- ### 3.3 SVG 与文字布局规范
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 与文字布局规范
116
148
  **核心原则:文字用 HTML,图形用 SVG**
117
149
  - 所有包含文字的布局(卡片、列表、流程说明、要点展示等)必须使用 HTML + Tailwind ,或者 DaisyUI自身的组件实现,禁止用 SVG `<text>` 排版文字内容(SVG text 固定坐标不换行,中文长文本必然溢出)
118
150
  - SVG 仅用于纯图形元素:图标、箭头、连接线、装饰图形、数据图表的图形部分
@@ -128,10 +160,10 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
128
160
 
129
161
  **正确示例**(流程图 = HTML 卡片布局 + SVG 箭头):
130
162
  ```
131
- <div class="flex items-center gap-[2vmin]">
132
- <div class="bg-blue-100 rounded-[1.5vmin] p-[2.5vmin] text-center text-[2.5vmin]">组织效率 > 个体效率</div>
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>
133
165
  <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>
134
- <div class="bg-blue-100 rounded-[1.5vmin] p-[2.5vmin] text-center text-[2.5vmin]">个体让渡主权</div>
166
+ <div class="bg-blue-100 rounded-[0.75em] p-[1.5em] text-center text-[1em]">个体让渡主权</div>
135
167
  </div>
136
168
  ```
137
169
 
@@ -140,8 +172,8 @@ DEFAULT_MDF_SYSTEM_PROMPT = """以下内容是当前任务的要求,需要严格
140
172
  ### 4.1 创建新屏
141
173
  **触发**: 输出 HTML 块级元素(div/section/h1 等) → 清空容器,创建新一屏
142
174
 
143
- <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]">
144
- <h1 class="text-[6vmin] font-bold text-white">完整的 PPT 内容</h1>
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>
145
177
  </div>
146
178
 
147
179
  每个 HTML 块级元素都会翻页并清空上一屏。
@@ -195,6 +227,9 @@ gsap.to("#element", { duration: 2, rotation: 360, repeat: -1 });
195
227
  - ❌ 非全屏元素追加: 输出 `<div>` 后再输出 `<p>` — 第二个元素会触发翻页! 所有视图内容放在一个 HTML 块中。
196
228
  - ❌ 禁止手动操作 #ppt-container: 禁止 `document.getElementById('ppt-container').innerHTML = ...`。前端框架自动管理。
197
229
  - ❌ 禁止 setTimeout: 已改为流式渲染,无需 setTimeout 控制时序。
230
+ - ❌ 禁止使用响应式断点(sm:/md:/lg:/xl:):所有缩放通过 em 单位 + 容器 font-size 自动处理。
231
+ - ❌ 禁止使用 vmin/vmax 单位:统一使用 em 单位。
232
+ - ❌ 禁止在子元素上重新设置 font-size 的绝对值(px/rem):会破坏 em 缩放链。如需调整大小,使用 em 倍数。
198
233
 
199
234
  ## 6. 速查表
200
- **核心记忆**: HTML 块级元素 = 翻页; Script/Style = 追加(翻页时清理); Diff = 仅用户明确要求修改; 文字 = 纯 Markdown; 容器 = min-h-screen + vmin 单位; 响应式断点仅用于布局重排"""
235
+ **核心记忆**: HTML 块级元素 = 翻页; Script/Style = 追加(翻页时清理); Diff = 仅用户明确要求修改; 文字 = 纯 Markdown; 容器 = min-h-screen + font-size: clamp(14px, calc(100vw/64), 22px) + em 单位; 所有尺寸用 em"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-flow
3
- Version: 0.2.66
3
+ Version: 0.2.67
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
File without changes
File without changes
File without changes