76 Commits

Author SHA1 Message Date
e5eeb85259 feat(ui): 开发产线页标题'智能助手/通用AI对话能力'改'开发产线'(用户2026-09-18要求①,删副标题,i18n三件套) 2026-09-18 16:13:30 +08:00
b826c3a75e refactor(secrets): 六入口重复secret配置清零(统一化)——AgentIO钥匙改宿主级默认(bricks.app.secret_defaults/window.__SECRET_DEFAULTS),shell一处设置全站生效;修此前逐.ui复制粘贴漏配bidding/opportunity/platform三入口无钥匙 2026-09-18 15:37:20 +08:00
3abdfbd7ff fix(secrets): get端点返回改{total,rows}分页契约(裸list Tabular不渲染,实测fetch有数据但表格空)——对齐sqlPaging同构 2026-09-18 14:49:15 +08:00
219350a48a fix(secrets): 弹窗/按钮改bricks已验模式(Button用binds非script键,内容包VBox带padding,取值resultValue,Message提示)——首版弹窗布局崩+按钮无响应实锤修复 2026-09-18 14:42:42 +08:00
004e65a8f8 feat(secrets): 我的凭据管理页(2026-09-18用户要求补UI缺口)——secrets/目录:index.ui(Tabular列表元数据+行内启停/改标签备注+删除+审计表)+new_secret_popup.dspy(新增弹窗,值经UiPassword掩码仅POST传输)+get/update/delete/audit四端点;值永不进列表与编辑对话框;权限走/pipeline_core/**通配已覆盖 2026-09-18 14:36:24 +08:00
8487cae5cd fix(theme): 硬编码暗色字体色改var(--ink-N)主题变量(1文件)——暗色主题下深色文字不可见治理2026-09-17 2026-09-18 14:04:22 +08:00
a243a16941 feat(secret): 敏感信息库前端接入——AgentIO钥匙图标+选择窗数据源(2026-09-17)
- agent_config.py: GENERAL_TOOLS += 6 个 ToolDefinition(category=secret,
  required 显式声明防 native FC 把可选参数标必填逼 LLM 编值)。
- wwwroot/api/secret_options.dspy: AgentIO 选择窗数据源。身份取自 get_user()/
  get_userorgid(),**不接受前端传 user_id/org_id**(否则改参数即可枚举他人凭据名称);
  双保险剔除 encrypted_value/fingerprint;未登录返 success:false(区分没登录与没数据)。
  RBAC 已被 rp.json 的 /pipeline_core/**(logined) 覆盖,无需额外注册。
- 3 个 .ui 的 AgentIO options 注入 secret_dataurl/secret_format/secret_title/
  secret_tip(共4处,含 agent/index.ui 动态建 tab 的 script 字符串)。
  未传 secret_dataurl 时钥匙图标不渲染 → 其他宿主应用零影响。

bricks 侧配套(UiText.insertAtCursor / AgentInput 弹窗 / AgentIO 透传)在 bricks 仓库。
2026-09-17 15:45:17 +08:00
a26aaa2bdb docs(bidding-skills): 分析拆解机制化说明——analyst技能char_range分段硬规则(只读本区间禁全量重读);bid-orchestration技能说明机制层自动拆解与create_sub_tasks分工 2026-09-15 17:47:27 +08:00
3a3e38d15a fix(core): agent_project_popup的GET/POST op撞名——GET op=switch(列表)误入POST分支报'缺少project_id';POST动作改op=do_switch,前端点选脚本同步 2026-09-11 18:33:42 +08:00
166e282d26 feat(core): 会话「📁 项目」统一入口——agent_project_popup.dspy(menu/new/switch/create四op);新建=输项目名→create_project能力函数(alloc目录+审计)→start激活+初始迭代→会话进入;切换=本产线+本人创建列表点选→归属校验→双写session+全局指针→会话进入;agent_menus硬编码项目按钮(所有专业产线通用);无项目提示升级为'选择或新建'带直达按钮(agent_menu_open/workspace_popup同口径);menu_open透传session_id/pipeline_id给内嵌页修多tab串项目;模型配置三件套升级会话级解析get_session_project_id 2026-09-11 18:29:17 +08:00
b399663863 feat(agent): 五级作用域工具解析+patch_file+原生视觉上传构造
1. tool_sources.py(新): global/org/pipeline/role/project 五级工具作用域解析
   - 策略表 pipeline_tool_policies allow/deny(配套 models+CRUD json)
   - capability 两层语义: 映射手册(all/概念技能,含global层) + 声明注入
     (仅org/pipeline/role/project/user层)——防 generic 会话经 global 概念
     技能拿到~70个产线工具,击穿七层隔离(单测 29/29 含此回归)
   - role 白名单是过滤器非添加器,且作用于 base+capability 全集
2. agent_config: GENERAL_TOOLS 加 patch_file(定点替换,唯一性校验);
   write_file 描述引导改文件优先用 patch_file
3. upload_tools: is_image + build_image_parts(OpenAI多模态data URL,
   8MB/张+4张/条上限,超限显式告知不静默丢)
4. agent_chat/agent_chat_generic: 图片分流不进文本上下文,
   image_paths 传 gateway
5. load_path: 策略管理页注册
2026-09-10 18:36:06 +08:00
4b2fd4cd7a feat(ownership): 三张跨产线表归属迁入——sd_projects/sd_project_role_models/pipeline_deliverables models+CRUD json+15个api dspy+手写角色模型页自pipeline-sdlc迁入(第2轮迁归属)
- models: 3张表JSON迁入(sd_projects全产线项目容器/pipeline_deliverables被bidding+service+core写681行实证/sd_project_role_models被pipeline-service三处消费)——分层倒置修复:core的agent_config.py裸查sd_projects/pipeline_deliverables,低层查高层表
- json: sd_project_list.json/pipeline_deliverables_list.json迁入,subtables迭代/仓库页改绝对路径/pipeline-sdlc/**(跨模块相对路径会解析到core不存在的目录)
- api: 15个CRUD页面依赖的dspy迁入(get_project_options等,entire_url('../api/')相对解析跟页面走);get_module_dbname('pipeline_sdlc')→pipeline_core(app层一律返pipeline,行为不变仅语义归位)
- init/data.json: 4组字典随表迁(sd_project_status/sd_project_type/deliverable_type/review_status)——normalize幂等键{parentid}_{k}不变,import_init重跑无副作用
- .gitignore: 补wwwroot/sd_projects/+wwwroot/pipeline_deliverables/(xls2ui生成目录,build.sh第7步清单已含pipeline_core,重生成不脏工作树)
2026-09-10 12:33:30 +08:00
5ad85f1b60 feat(mobile): 手机端「更多」产线入口+功能按钮收缩(2026-09-08用户要求:给会话留最大空间)——my_pipelines.dspy 加 fmt=more 返回 MobileSheet 项[{name,label,icon,desc,url}],url 直达 mobile_agent.ui?pipeline_id=X&embed=1 单产线会话页(已购即出现在底部「更多」,无需改 index.ui);mobile_agent.ui 加 embed 分支(隐藏 ChipBar 胶囊条+门禁遮罩,锁定产线,AgentIO 自带 pipeline_id/session_id=m_<pid>,会话区最大化,服务端 agent_chat 硬门禁兜底);agent_menus.dspy 按 _is_mobile 端形态分流(桌面一排 Button 原样不变,手机收缩为单个「⋯ 功能」Button→MobileSheet 竖排,项 popup:true 点击走 agent_menu_open/workspace_popup 的 PopupWindow 自开链路,与桌面完全一致) 2026-09-08 19:33:59 +08:00
2cfbc55dc3 feat(mobile): 未购产线门禁——mobile_agent.ui加遮罩引导层(尚未购买任何产线→去商城/用通用助手,遮罩desktop_hidden+select有产线即hide)+agent_chat.dspy服务端订阅门禁(未购/过期拒绝对话,平台角色豁免,DB异常fail-open)+my_pipelines加mode=full+agent_menus通用模式工作空间按钮+agent_generic工作空间改_generic锁专属目录(2026-09-08用户三条要求) 2026-09-08 16:01:13 +08:00
c7b766e1c1 feat(mobile): 手机端产线工作界面——mobile_agent.ui(ChipBar已购产线胶囊+AgentIO全屏,mobile_opts压margin)+my_pipelines.dspy(客户按product_subscription未到期×pipelines published过滤,平台角色看全部,get_user_roles失败降级按客户安全侧)(2026-09-07手机端适配:只有购买过的产线可见) 2026-09-08 14:28:37 +08:00
94c78dea1b feat(core): 会话agent模型下拉传capabilities=chat——只列对话能力t2t/i2t/m2t(2026-09-06用户定夺) 2026-09-06 19:48:50 +08:00
e03e1fa213 fix(agent-chat): 确认框显示工具名+参数摘要——旧实现只读command字段致apply类工具显示空命令被迫盲确认 2026-09-05 21:25:49 +08:00
523ddf451d fix(isolation): 通用会话剔除shell类工具+上传落专属目录
- load_agent_config generic 时剔除 category=shell(run_command 无法圈禁在工作目录内,
  拿到即可遍历整个工作空间枚举各产线项目——第6层泄漏的 schema 层防线)
- upload_tools.resolve_upload_dir 加 generic 参数:通用会话上传落 _general/{uid}
  专属目录,与 AgentExecutor 文件根一致
- agent_chat_generic.dspy: 上传解析传 generic=True
2026-09-05 15:21:51 +08:00
d0ff880848 fix(agent): 完毕行样式改平铺color(bricks嵌套style无效铁律) 2026-09-05 11:07:16 +08:00
95824fb732 feat(agent): 对话应答结束后追加完毕行(Text otext+i18n,词条见pipeline-app/i18n/*/i18n.json) 2026-09-05 10:59:02 +08:00
0d5c5ea00f refactor(llm): 模型选择收敛到模型治理模块——agent_model_options改薄壳委托;旧llm CRUD(json/models/wwwroot/llm+init.py函数)删除;agent_config缺省模型名清空(交机构策略);llm_v1端点委托统一推理引擎 2026-09-04 17:05:00 +08:00
d05571cc96 fix: list_messages/模型下拉产线隔离缺口
- list_messages原无过滤返回全表→按user+session+pipeline过滤(跨产线/跨用户泄漏)
- agent_model_options接收pipeline_id并传给get_session_project_id,防跨产线项目劫持模型选中态
2026-09-02 19:05:33 +08:00
567e4cc0cc refactor: agent_platform入口页迁至pipeline-platform模块(技能库保留在core) 2026-09-02 15:26:54 +08:00
a06e7c6e22 feat(agent_platform): 平台内部助手入口页+内部agent技能库
- agent_platform/index.ui: pipeline_id=platform_general会话入口
- skills: platform-architecture(平台架构地图) + model-auto-config(文档→配置工作流)
2026-09-02 15:07:24 +08:00
20250b326b feat(项目管理): GENERAL_TOOLS 5个项目管理工具定义(终止/删除类需确认)+停止词拦截放行项目指令+project技能安全规范
- agent_config: project_info/list_my_projects/pause/resume/delete_project 定义,后三者标requires_confirmation
- agent_chat.dspy: 停止词拦截排除含项目词指令(否则'终止项目'到不了agent)
- project SKILL.md: 会话agent项目管理安全铁律(代码层校验人类owner)
2026-09-01 11:51:49 +08:00
f2a17cc9d4 fix(session): 默认tab session_id按产线分离(default_sdlc_general) 2026-08-31 22:03:56 +08:00
ymq
e598665b8e fix(upload): 上传截断显式告知+generic补文件处理 2026-08-31 21:22:41 +08:00
c4f37f61db fix(isolation): 开发产线入口声明pipeline_id=sdlc_general——根治残留投标项目劫持通用入口 2026-08-31 19:16:12 +08:00
5955232ed5 fix(menu): require_project判断从渲染时移到点击时——切项目后菜单按钮不再永远报无项目
- agent_menus: 删除渲染时固化的报错脚本绑定,require_project/session_id/pipeline_id
  作为参数传给 agent_menu_open,点击时实时校验
- agent_menu_open: 点击时实时查会话项目(含产线隔离),无项目才提示切换
- 根治:页面加载时未切项目→按钮写死报错脚本→切了项目仍报「请先在会话中切换项目」
2026-08-31 18:38:55 +08:00
776e583be2 fix(upload): 会话上传文件复制进项目根目录+prompt告知路径——根治agent找不到上传文件 2026-08-31 17:54:27 +08:00
9926042c9b fix(workspace): 通用会话工作空间按钮补传产线参数(产线隔离) 2026-08-31 16:54:09 +08:00
ymq
c848bda300 fix(generic): agent_chat_generic 透传前端模型选择 model_id 2026-08-30 15:07:35 +08:00
337a4c6f90 fix(model-select): 下拉值改llm.id显示llm.name——同名不同供应商不再合并 2026-08-30 09:49:38 +08:00
032fd853ee fix: agent_menus产线隔离——跨产线项目不劫持本产线菜单; 工作空间按钮带产线参数 2026-08-29 15:00:21 +08:00
34a13ebf37 refactor(pipeline_core): 移除产线管理三功能(产线定义/产线步骤/发布记录)死库存
- 证据: pipeline_steps、pipeline_versions 表恒为0行, 三功能上线后从未使用
- 产线定义已收敛为代码能力包(PipelineAbility)+pipelines表元数据,
  页面无法定义新能力(每种能力需先写代码注册handler), 在线开发属伪命题
- 删除: wwwroot 下 pipelines/pipeline_steps/pipeline_versions/pipeline_editor
  页面目录与配套 API dspy、json/models CRUD 定义、init.py 死函数、
  load_path.py 权限注册
- 保留: pipelines 表(agent 运行时读 name/default_model)、executor 引擎、
  agent/llm/skill_proposals 等模块主体
2026-08-28 16:34:02 +08:00
1c4b158a3f feat(agent): 会话模型选择持久化——agent_chat 传 model_id、下拉按项目模型选中
- agent_chat.dspy: 提取前端 model_id 传给 gateway.run_message(校验+持久化到项目)
- agent_model_options.dspy: selected 标记=当前项目已设模型(按 session_id 解析,
  无项目回退个人全局)——下拉每次打开都恢复项目当前模型,不回退首项
- agent/index.ui: 模型下拉带 session_id(多 tab 各自项目,下拉解析对的项目)
2026-08-28 12:26:18 +08:00
b5c7dd3f44 fix(agent_menus): 项目解析收敛到 get_session_project_id(含悬空引用防护)
不再手写 session→项目解析(与解析层语义漂移是「会话有项目、入口说没有」的根因之一)
2026-08-27 17:44:38 +08:00
ymq
f5689defa8 feat(agent): 会话入口支持 pipeline_id 传参(默认产线) 2026-08-27 13:12:45 +08:00
717651f4ab fix(llm-proxy): get_userorgid 是 async,补 await(否则 coroutine str 化超长 DataError 1406) 2026-08-25 14:13:45 +08:00
7c57550277 feat(llm-proxy): OpenAI 兼容代理端点 + token 签发/吊销/列表 dspy 2026-08-25 14:11:42 +08:00
7842d2570f feat(agent): 工作空间控件按会话传递session_id
- agent_menus.dspy 按 session 解析项目 + 工作空间按钮URL拼 session_id
- index.ui 默认tab/新建会话 tab 的 agent_menus urlwidget 带 session_id
2026-08-24 16:40:49 +08:00
023b2c6145 feat: 技能 publish 落点按 org_id 分流——组织自有规范落 org scope
机构技能层架构配套:技能提议 publish 时按提案 org_id 决定落点——
org_id='0'(ocai/平台)写 global(所有组织缺省共享);org_id≠'0' 写
skills/orgs/{org_id}/(组织自有开发规范,经 get_merged 的 org 缺省继承
+ 组织覆盖机制,该组织项目角色可见且覆盖 ocai 同名)。
2026-08-23 21:43:04 +08:00
349752b473 feat(agent): 产线功能菜单按 require_project 标记,无会话当前项目时点击报错 2026-08-22 18:55:00 +08:00
b9998ed00d refactor(skill): 单一技能树——七级 scope 全在全局 skills/ 下,去掉 ensure_org_skills 复制副本
- skill_loader: 加 project_common scope(projects/ 项目通用,不分 project_id) + project 私有改挂 orgs/{org_id}/{project_id}/,SCOPE_PRIORITY 七级
- skill_pack: ensure_org_skills 去复制逻辑改薄封装返回 get_skills_base(),删 _sync_tree/get_org_skills_dir dead code
- skill_pack.dspy/skill_proposals.dspy: base_dir 改全局 skills/,删同步所有机构循环
2026-08-21 19:18:45 +08:00
127474de6f fix: 会话空间 AgentIO 加 margin(0 24px 24px 24px),聊天输入区不再贴边 2026-08-20 23:25:21 +08:00
37b7afffd9 feat: 智能助手功能菜单(工作空间/项目/Bug/测试用例/迭代)从 TabPanel 上方移入会话 content 内,与会话项目保持一致 2026-08-20 22:01:15 +08:00
03745f38e9 feat(agent): 开发产线多会话 TabPanel + 新建会话按钮 2026-08-20 17:39:34 +08:00
ad2459b073 feat: agent 会话危险命令确认提示新增「全部确认」选项 2026-08-19 14:09:27 +08:00
5a5cd38635 chore: gitignore xls2ui CRUD 产物(llm/pipeline_steps/pipeline_versions/pipelines) + build/egg-info,停止跟踪构建产物 2026-08-18 14:46:15 +08:00
65f547c400 fix: agent_chat 传 base_url 给 gateway(/task 弹窗 url 完整化) 2026-08-18 12:53:56 +08:00