x-print-designer 0.4.104 → 0.4.107
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/dist/{JsBarcode-BGOzLNfb.js → JsBarcode-4Cq0ZQ5x.js} +1 -1
- package/dist/{JsBarcode-DcXy0ukX.js → JsBarcode-DiBjch0L.js} +1 -1
- package/dist/ai-manifest.d.ts +26 -0
- package/dist/ai-manifest.es.js +20 -0
- package/dist/ai-manifest.json +74 -0
- package/dist/{browser-YrayV49p.js → browser-BQ_xso-Q.js} +1 -1
- package/dist/{browser-CH2H6Y_n.js → browser-_93pwVT5.js} +1 -1
- package/dist/{dom-to-image-more.min-DQIpQoCm.js → dom-to-image-more.min-mTodPTaq.js} +1 -1
- package/dist/{index-D4gnkPzX.js → index-B_F1urvC.js} +325 -79
- package/dist/{index-Cf16UQPi.js → index-PVfJDN22.js} +1 -1
- package/dist/{index.es-BLgVifYt.js → index.es-1924nT0w.js} +1 -1
- package/dist/{jspdf.es.min-IBrMr796.js → jspdf.es.min-9kpkkp6i.js} +1 -1
- package/dist/{jszip.min-BsAM0p3J.js → jszip.min-CTgkSMiJ.js} +1 -1
- package/dist/print-designer.css +1 -1
- package/dist/print-designer.es.js +1 -1
- package/dist/print-designer.umd.js +31 -31
- package/dist/{vue-T3RKjxtI.js → vue-Ba2JQQ_E.js} +23 -6
- package/dist/vue.es.js +1 -1
- package/dist/web-component.d.ts +36 -0
- package/package.json +6 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `x-print-designer/ai-manifest` 子路径的发布类型(构建链经 copy-ai-manifest.mjs 落
|
|
3
|
+
* dist/ai-manifest.d.ts)。与 src/ai-manifest.ts 手工保持同步——导出面变更时两处一起改,
|
|
4
|
+
* src/__tests__/ai-manifest.test.ts 守关键符号存在。
|
|
5
|
+
*
|
|
6
|
+
* 特意写成自包含(不 import JSON、不依赖消费者 tsconfig 开 resolveJsonModule):
|
|
7
|
+
* 宿主 vue-tsc 只吃这份声明即可完成类型解析。
|
|
8
|
+
*/
|
|
9
|
+
export interface DesignerAiToolInfo {
|
|
10
|
+
/** 工具名——LLM manifest 与 Java 目录的契约名(宿主 designerTools.ts / 网关目录同名注册) */
|
|
11
|
+
name: string
|
|
12
|
+
/** 展示名(Java 目录 displayName / 工具卡标题口径) */
|
|
13
|
+
displayName: string
|
|
14
|
+
/** 模型可见描述——原文真源,宿主面板声明与 Java 登记文档都从这里取 */
|
|
15
|
+
description: string
|
|
16
|
+
/** 执行面归属:plugin=执行体全在插件 / hybrid=插件与宿主各有实质逻辑 / host=执行体在宿主 */
|
|
17
|
+
implementedBy: 'plugin' | 'hybrid' | 'host'
|
|
18
|
+
/** 风险级别(advisory 元数据) */
|
|
19
|
+
level: 'READ_ONLY' | 'CANVAS_WRITE' | 'STRUCTURE_WRITE'
|
|
20
|
+
/** 能力齐备所需的插件最低版本;缺省 = 随 AI 桥 0.4.99 基线可用 */
|
|
21
|
+
since?: string
|
|
22
|
+
}
|
|
23
|
+
export declare const DESIGNER_AI_TOOLS: DesignerAiToolInfo[]
|
|
24
|
+
export declare const DESIGNER_AI_MANIFEST_FORMAT: number
|
|
25
|
+
export declare function getDesignerAiTool(name: string): DesignerAiToolInfo | undefined
|
|
26
|
+
export declare function designerAiManifestVersion(): string
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const manifestFormat = 1;
|
|
2
|
+
const tools = [{ "name": "read_designer_state", "displayName": "读取设计器画布", "implementedBy": "hybrid", "level": "READ_ONLY", "since": "0.4.99", "description": "读取当前模板设计器/报告设计器画布结构:返回页面/元素统计摘要(summary)+ 元素级清单(elements:每个元素的 id/类型/内容/样式关键字段,apply_designer_edits 用 elementId 直接定位修改)。默认【不】返回完整 templateJson(体积大易截断);仅当需要整体重构(apply_designer_template)时才传 includeJson:true 获取完整模板 JSON" }, { "name": "apply_designer_template", "displayName": "整包重写模板画布", "implementedBy": "hybrid", "level": "CANVAS_WRITE", "since": "0.4.99", "description": "把「修改后的完整模板设计 JSON」(x-print-designer 规范:pages 数组 + canvasSize 等)写入当前设计器画布并保存到后端(模板模式存模板管理,报告模式存报告记录)。仅用于【新增/删除页面、整体重构布局、空画布从0创建】——新增/删除/复制单个或少量元素优先用 edit_designer_structure(元素级、无需重传 JSON、快得多),小修改用 apply_designer_edits;禁止为加一个元素而整包重写。保存后画布即时更新。templateJson 为必填参数,必须传基于 read_designer_state 结果修改后的整份 JSON,禁止省略或只传修改说明。空画布从0创建时:先在回复里用一句话向用户预告方案(页数/区块构成/主色调)再调用本工具——预告即可,无需等待确认" }, { "name": "apply_designer_edits", "displayName": "修改画布元素", "implementedBy": "hybrid", "level": "CANVAS_WRITE", "since": "0.4.99", "description": '按操作指令修改当前设计器画布中的元素(元素级修改【首选】:无需重传完整模板 JSON;【只】能改已有元素的样式/文本/字段,不能新增或删除元素)。edits 为操作数组,每项支持三种定位方式(任选其一):1) elementId 精确 id(优先,来自 read_designer_state 的 elements 清单);2) matchContent 按内容包含匹配(如 { matchContent: "巡检报告" },唯一命中才应用);3) matchType + matchContent 组合(按类型+内容定位)。其余字段:style 为要覆盖的样式字段(如 { fontWeight: "bold" } 加粗、{ fontSize: 24 } 字号,只传要改的字段,其余保留),content 为替换的文本内容,fields 为任意顶层字段覆盖(id/type 不可改)。命令在画布内增量执行:执行后自动保存到后端,目标元素自动选中并滚动定位,用户可 Ctrl+Z 一次性撤销本批改动;返回逐命令回执(applied/reason)与 changes 改动清单。新增/删除/复制元素或层级/组合调整用 edit_designer_structure(元素级结构通道,同样无需重传 JSON);新增/删除【页面】或整页重构布局时才改用 apply_designer_template 传完整 JSON' }, { "name": "check_designer_layout", "displayName": "体检设计器布局", "implementedBy": "hybrid", "level": "READ_ONLY", "description": "对当前设计器画布做渲染后布局实测体检:在浏览器里实际渲染画布并逐元素测量,返回结构化问题清单(内容溢出声明盒/元素实际重叠/越出页底/横向出界/大片空白,含 elementIds 与修复建议)。比 read_designer_state 的 JSON 推算准——文本换行行数、视觉重叠只有渲染后才存在。宿主支持时同时返回绑定体检(bindingIssues:绑定缺失/空值/空数组/越界,含健康分与修复提示)——绑定问题改绑定键而不是改版式。使用时机:①apply 类工具回执带 layoutIssues 修复后复检;②用户要求检查排版/布局/数据绑定是否有问题时;③大面积调整版式或从0创建后主动质检。传 reveal:true 时还会在画布上滚动定位并高亮 error 级问题元素(用户看得见问题在哪)。不在设计器页面时返回 active:false" }, { "name": "undo_designer_edit", "displayName": "撤销/重做画布改动", "implementedBy": "plugin", "level": "CANVAS_WRITE", "description": "撤销或恢复设计器画布的最近一次改动(与用户按 Ctrl+Z / Ctrl+Y 同语义)。apply_designer_edits 整批改动只压一条撤销快照,一次 undo 即撤掉整批 AI 改动。用户说「撤销/退回刚才的修改」→ action=undo(缺省);「恢复/重做刚才撤销的」→ action=redo。注意:AI 改动后用户又手动编辑过的,undo 会先撤手动那步(历史栈共通);apply_designer_template 整包写入会清空撤销栈,其前的历史不可撤" }, { "name": "edit_designer_structure", "displayName": "编辑画布结构", "implementedBy": "plugin", "level": "STRUCTURE_WRITE", "since": "0.4.105", "description": "在当前设计器画布上做元素级结构变更(新增/删除/复制/层级/组合),与 apply_designer_edits(改已有元素属性)、apply_designer_template(整包重写)互补。actions 为操作数组逐条执行:add 按元素库同款默认形状创建(type 可用 text/image/table/customTable/longtext/date/pageNumber/barcode/qrcode/datacard/chart/signature 等;x/y 缺省画布居中;content 设初始文本;variable 设绑定路径);delete/duplicate/layer/group/ungroup 按 elementIds 定位(来自 read_designer_state)。删除是破坏性操作,执行前先向用户确认。layer 的 mode:front=置顶/back=置底/forward=上移一层/backward=下移一层。group 要求同页至少 2 个未锁定元素" }, { "name": "manage_designer_pages", "displayName": "管理画布页面", "implementedBy": "plugin", "level": "STRUCTURE_WRITE", "since": "0.4.105", "description": "管理当前设计器画布的页面:add(空白页)/ addLoop(循环页——数据行自动展开为多页,dataSource 为 @开头列表路径如 @missionData.missionList,仅模板模式)/ setLoop(改某页循环数据源)/ remove(删页,至少保留一页)/ copy(整页复制)/ move(页排序)。页下标从 0 起。用户说「加一页」「把这两页调换顺序」「给这页配循环数据」「复制第一页」时用本工具" }, { "name": "set_designer_data", "displayName": "注入画布示例数据", "implementedBy": "plugin", "level": "CANVAS_WRITE", "description": "把示例数据注入当前设计器画布(channel=testData,画布绑定与预览立即生效,导出前会被运行时真实数据替换)。两种场景:①用户提供了一份数据(贴在对话里/上传的 JSON)——原样注入;②数据优先铁律要求模板列/卡片来自示例数据——用户没给时用本工具注入你构造的模拟数据(形状对齐 read_designer_state 的 testDataKeys 语义),替代旧流程(只能靠 apply_designer_template 携带 testData 整包重写)。注入后画布会重新物化并自动分页" }, { "name": "get_designer_json_spec", "displayName": "获取模板JSON规范", "implementedBy": "host", "level": "READ_ONLY", "description": "获取 x-print-designer 模板 JSON 生成规范:硬性规则(顶层结构/坐标单位/id 唯一/变量绑定)+ 全部元素类型的最小字段说明 + 一份完整可运行的最小示例模板(含品牌页眉横带与页脚落款)。【空画布从0创建模板】或需要整体构造模板 JSON(apply_designer_template)前必须先调用本工具;元素级小修改(apply_designer_edits)不需要。返回的 spec.brand 段携带当前组织真实 logo URL 与组织名——页眉 logo/落款必须用它。**设计风格**:缺省返回企业蓝(现代文档风);styleVariants 段列出全部可选风格(藏青权威/清新青绿/暖橙亲和/传统公文)——用户表达风格偏好(如「要正式点」「清新一点」「公文风」)时带 style 参数重调,spec 的 layout 与范本会整体换成对应主题色;首次生成建议在方案预告里顺带告知用户可换风格" }];
|
|
3
|
+
const manifestJson = {
|
|
4
|
+
manifestFormat,
|
|
5
|
+
tools
|
|
6
|
+
};
|
|
7
|
+
const DESIGNER_AI_TOOLS = manifestJson.tools;
|
|
8
|
+
const DESIGNER_AI_MANIFEST_FORMAT = manifestJson.manifestFormat;
|
|
9
|
+
function getDesignerAiTool(name) {
|
|
10
|
+
return DESIGNER_AI_TOOLS.find((tool) => tool.name === name);
|
|
11
|
+
}
|
|
12
|
+
function designerAiManifestVersion() {
|
|
13
|
+
return typeof __XPD_VERSION__ === "string" ? __XPD_VERSION__ : "";
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
DESIGNER_AI_MANIFEST_FORMAT,
|
|
17
|
+
DESIGNER_AI_TOOLS,
|
|
18
|
+
designerAiManifestVersion,
|
|
19
|
+
getDesignerAiTool
|
|
20
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifestFormat": 1,
|
|
3
|
+
"$comment": "设计器 AI 工具自描述清单(单一真源)。消费方:宿主 core-ai designerTools.ts(LLM 面板描述)、Java 托管通道登记(core-ai/docs/backend-ai-tools-registration-*.md 经 sync 脚本生成)。改描述只改这里,跑 sync 脚本同步文档;工具执行编排留在宿主,本清单只管「声明」层。",
|
|
4
|
+
"tools": [
|
|
5
|
+
{
|
|
6
|
+
"name": "read_designer_state",
|
|
7
|
+
"displayName": "读取设计器画布",
|
|
8
|
+
"implementedBy": "hybrid",
|
|
9
|
+
"level": "READ_ONLY",
|
|
10
|
+
"since": "0.4.99",
|
|
11
|
+
"description": "读取当前模板设计器/报告设计器画布结构:返回页面/元素统计摘要(summary)+ 元素级清单(elements:每个元素的 id/类型/内容/样式关键字段,apply_designer_edits 用 elementId 直接定位修改)。默认【不】返回完整 templateJson(体积大易截断);仅当需要整体重构(apply_designer_template)时才传 includeJson:true 获取完整模板 JSON"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "apply_designer_template",
|
|
15
|
+
"displayName": "整包重写模板画布",
|
|
16
|
+
"implementedBy": "hybrid",
|
|
17
|
+
"level": "CANVAS_WRITE",
|
|
18
|
+
"since": "0.4.99",
|
|
19
|
+
"description": "把「修改后的完整模板设计 JSON」(x-print-designer 规范:pages 数组 + canvasSize 等)写入当前设计器画布并保存到后端(模板模式存模板管理,报告模式存报告记录)。仅用于【新增/删除页面、整体重构布局、空画布从0创建】——新增/删除/复制单个或少量元素优先用 edit_designer_structure(元素级、无需重传 JSON、快得多),小修改用 apply_designer_edits;禁止为加一个元素而整包重写。保存后画布即时更新。templateJson 为必填参数,必须传基于 read_designer_state 结果修改后的整份 JSON,禁止省略或只传修改说明。空画布从0创建时:先在回复里用一句话向用户预告方案(页数/区块构成/主色调)再调用本工具——预告即可,无需等待确认"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "apply_designer_edits",
|
|
23
|
+
"displayName": "修改画布元素",
|
|
24
|
+
"implementedBy": "hybrid",
|
|
25
|
+
"level": "CANVAS_WRITE",
|
|
26
|
+
"since": "0.4.99",
|
|
27
|
+
"description": "按操作指令修改当前设计器画布中的元素(元素级修改【首选】:无需重传完整模板 JSON;【只】能改已有元素的样式/文本/字段,不能新增或删除元素)。edits 为操作数组,每项支持三种定位方式(任选其一):1) elementId 精确 id(优先,来自 read_designer_state 的 elements 清单);2) matchContent 按内容包含匹配(如 { matchContent: \"巡检报告\" },唯一命中才应用);3) matchType + matchContent 组合(按类型+内容定位)。其余字段:style 为要覆盖的样式字段(如 { fontWeight: \"bold\" } 加粗、{ fontSize: 24 } 字号,只传要改的字段,其余保留),content 为替换的文本内容,fields 为任意顶层字段覆盖(id/type 不可改)。命令在画布内增量执行:执行后自动保存到后端,目标元素自动选中并滚动定位,用户可 Ctrl+Z 一次性撤销本批改动;返回逐命令回执(applied/reason)与 changes 改动清单。新增/删除/复制元素或层级/组合调整用 edit_designer_structure(元素级结构通道,同样无需重传 JSON);新增/删除【页面】或整页重构布局时才改用 apply_designer_template 传完整 JSON"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "check_designer_layout",
|
|
31
|
+
"displayName": "体检设计器布局",
|
|
32
|
+
"implementedBy": "hybrid",
|
|
33
|
+
"level": "READ_ONLY",
|
|
34
|
+
"description": "对当前设计器画布做渲染后布局实测体检:在浏览器里实际渲染画布并逐元素测量,返回结构化问题清单(内容溢出声明盒/元素实际重叠/越出页底/横向出界/大片空白,含 elementIds 与修复建议)。比 read_designer_state 的 JSON 推算准——文本换行行数、视觉重叠只有渲染后才存在。宿主支持时同时返回绑定体检(bindingIssues:绑定缺失/空值/空数组/越界,含健康分与修复提示)——绑定问题改绑定键而不是改版式。使用时机:①apply 类工具回执带 layoutIssues 修复后复检;②用户要求检查排版/布局/数据绑定是否有问题时;③大面积调整版式或从0创建后主动质检。传 reveal:true 时还会在画布上滚动定位并高亮 error 级问题元素(用户看得见问题在哪)。不在设计器页面时返回 active:false"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "undo_designer_edit",
|
|
38
|
+
"displayName": "撤销/重做画布改动",
|
|
39
|
+
"implementedBy": "plugin",
|
|
40
|
+
"level": "CANVAS_WRITE",
|
|
41
|
+
"description": "撤销或恢复设计器画布的最近一次改动(与用户按 Ctrl+Z / Ctrl+Y 同语义)。apply_designer_edits 整批改动只压一条撤销快照,一次 undo 即撤掉整批 AI 改动。用户说「撤销/退回刚才的修改」→ action=undo(缺省);「恢复/重做刚才撤销的」→ action=redo。注意:AI 改动后用户又手动编辑过的,undo 会先撤手动那步(历史栈共通);apply_designer_template 整包写入会清空撤销栈,其前的历史不可撤"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "edit_designer_structure",
|
|
45
|
+
"displayName": "编辑画布结构",
|
|
46
|
+
"implementedBy": "plugin",
|
|
47
|
+
"level": "STRUCTURE_WRITE",
|
|
48
|
+
"since": "0.4.105",
|
|
49
|
+
"description": "在当前设计器画布上做元素级结构变更(新增/删除/复制/层级/组合),与 apply_designer_edits(改已有元素属性)、apply_designer_template(整包重写)互补。actions 为操作数组逐条执行:add 按元素库同款默认形状创建(type 可用 text/image/table/customTable/longtext/date/pageNumber/barcode/qrcode/datacard/chart/signature 等;x/y 缺省画布居中;content 设初始文本;variable 设绑定路径);delete/duplicate/layer/group/ungroup 按 elementIds 定位(来自 read_designer_state)。删除是破坏性操作,执行前先向用户确认。layer 的 mode:front=置顶/back=置底/forward=上移一层/backward=下移一层。group 要求同页至少 2 个未锁定元素"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "manage_designer_pages",
|
|
53
|
+
"displayName": "管理画布页面",
|
|
54
|
+
"implementedBy": "plugin",
|
|
55
|
+
"level": "STRUCTURE_WRITE",
|
|
56
|
+
"since": "0.4.105",
|
|
57
|
+
"description": "管理当前设计器画布的页面:add(空白页)/ addLoop(循环页——数据行自动展开为多页,dataSource 为 @开头列表路径如 @missionData.missionList,仅模板模式)/ setLoop(改某页循环数据源)/ remove(删页,至少保留一页)/ copy(整页复制)/ move(页排序)。页下标从 0 起。用户说「加一页」「把这两页调换顺序」「给这页配循环数据」「复制第一页」时用本工具"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "set_designer_data",
|
|
61
|
+
"displayName": "注入画布示例数据",
|
|
62
|
+
"implementedBy": "plugin",
|
|
63
|
+
"level": "CANVAS_WRITE",
|
|
64
|
+
"description": "把示例数据注入当前设计器画布(channel=testData,画布绑定与预览立即生效,导出前会被运行时真实数据替换)。两种场景:①用户提供了一份数据(贴在对话里/上传的 JSON)——原样注入;②数据优先铁律要求模板列/卡片来自示例数据——用户没给时用本工具注入你构造的模拟数据(形状对齐 read_designer_state 的 testDataKeys 语义),替代旧流程(只能靠 apply_designer_template 携带 testData 整包重写)。注入后画布会重新物化并自动分页"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "get_designer_json_spec",
|
|
68
|
+
"displayName": "获取模板JSON规范",
|
|
69
|
+
"implementedBy": "host",
|
|
70
|
+
"level": "READ_ONLY",
|
|
71
|
+
"description": "获取 x-print-designer 模板 JSON 生成规范:硬性规则(顶层结构/坐标单位/id 唯一/变量绑定)+ 全部元素类型的最小字段说明 + 一份完整可运行的最小示例模板(含品牌页眉横带与页脚落款)。【空画布从0创建模板】或需要整体构造模板 JSON(apply_designer_template)前必须先调用本工具;元素级小修改(apply_designer_edits)不需要。返回的 spec.brand 段携带当前组织真实 logo URL 与组织名——页眉 logo/落款必须用它。**设计风格**:缺省返回企业蓝(现代文档风);styleVariants 段列出全部可选风格(藏青权威/清新青绿/暖橙亲和/传统公文)——用户表达风格偏好(如「要正式点」「清新一点」「公文风」)时带 style 参数重调,spec 的 layout 与范本会整体换成对应主题色;首次生成建议在方案预告里顺带告知用户可换风格"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|