Skip to content

✨ 迁移为新 SDK 官方扩展仓,新增 Elasticsearch 扩展 - #4

Merged
CodFrm merged 12 commits into
mainfrom
feature/es-extension
Oct 2, 2026
Merged

CodFrm merged 12 commits into
mainfrom
feature/es-extension

Conversation

@CodFrm

@CodFrm CodFrm commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

把本仓迁成基于新扩展 SDK(github.com/opskat/opskat/pkg/extsdk)的官方扩展仓,并加入第一个官方扩展 Elasticsearch。宿主侧能力见 opskat/opskat#331(已合并);规格在 opskat 仓 docs/specs/2026-09-29-es-extension.md。

  • 🔥 仓库迁移:删除旧 ABI 的 sdk/go、examples/echo、extensions/oss;README / README_zh 与 Makefile 改写(make build EXT=<name> 产出可直接"从目录安装"或 opsctl ext dev 的 dist/)。
  • 👷 CI:PR 与 main 推送时逐扩展跑 Go 测试、WASM 构建、前端类型检查 / 测试 / 构建(make ci)。
  • ✨ Elasticsearch 资产类型(hostABI 2.2,minAppVersion 1.14.1,兼容 ES 7.10+ / 8.x / 9.x):地址 + 认证方式(无 / Basic / API Key / Bearer Token,宿主加密并注入,扩展不读明文),SSH 隧道 / 代理链 / TLS,字段级校验,测试连接(401/403 提示认证失败)。
  • ✨ 工具:request(任意请求,返回 {status, body},--body-file 支持文件 / stdin)与便捷工具 health / indices / mapping / search。路径含协议 / 主机、. / .. 段、?source=、不支持的方法在分类阶段直接拒绝(不弹审批)。
  • ✨ 策略面:动作 read / write / delete / admin,资源为索引(逗号、通配、_bulk / _msearch / _mget / _mtermvectors 请求体内的索引都计入),多资源逐个判定;权限组 只读(默认)/ 读写。SKILL.md 说明分类与规则写法。
  • ✨ 页面:侧栏集群头 + 索引列表(过滤、系统索引开关、健康 / 文档 / 大小);概览(状态、节点、分片、文档 / 存储、非 green 提示);索引标签(文档浏览:查询串 / DSL、排序、结果表、行详情、分页;Mapping / Settings JSON 树);控制台(Monaco 自定义语言、⌘Enter 执行光标处请求、关键字级自动提示、按资产保存恢复)。页面请求直接执行,跟随宿主主题与语言(en / zh-CN)。

验证

  • make ci 通过(Go 测试、WASM 构建、前端 tsc / vitest / build)。
  • opskat 侧套件与 e2e 通过;四轮 spec / 代码评审。
  • 真机运行时验证(隔离沙箱 + docker.internal 上的临时 ES 8.19(安全 + 自签证书)与 7.17,SSH 隧道,真实 LLM 的 AI 对话):首轮 55 项中 42 成立,不成立项经三轮修正后全部复验成立(认证选项与默认值、字段级校验、非法路径直接拒绝、7.17 隐藏点号索引、DSL 编辑框、多资产页面控制台不串、语言即时切换)。验证用容器与镜像均已删除。

未观察 / 已知遗留

  • 未观察:页面调用取消(页面没有取消入口);旧应用按 hostABI 拒绝加载(规则在宿主,未在旧版应用上实测);代理链连接(不在本轮范围)。
  • minAppVersion 目前宿主只校验格式、不做比较;实际阻止旧应用的是 hostABI 2.2。
  • 文档页 / 控制台在窄窗口下编辑区较窄;TLS 关闭但地址为 https 时测试连接要等到超时才失败(宿主拨号路径)。

- frontend/:Vite 库构建(hostExternals 映射 react / @opskat/ui / @opskat/host-ui 到宿主注入对象),
  Tailwind 仅 utilities、并入宿主 utilities 层并由 tooling/scope-css 限定到页面根节点,产物 dist/frontend/{index.js,style.css}
- 页面:集群头 + 索引过滤/系统索引开关;概览统计、节点表、非 green 提示;文档查询串/DSL、排序、
  结果表与行详情(宽并排/窄浮层)、分页 20/50/100 与结果窗口上限;骨架、空态、整页错误+重试;en/zh-CN
- 控制台标签为占位组件(components/console/ConsoleTab.tsx),供下一步替换
- main.go 注册 asset.connect 页面;Makefile 构建前端并入 dist;vitest 覆盖列推导、分页/结果窗口等纯逻辑
… read;CI 指定前端锁文件路径,README 补全 dist 内容与前端构建依赖
…与 indices、拒绝 ./.. 路径段、带脚本的 reindex 与 _data_stream API 段归为全部索引;控制台重挂载沿用最新文本
@CodFrm
CodFrm merged commit 492001e into main Oct 2, 2026
1 check passed
@CodFrm
CodFrm deleted the feature/es-extension branch October 2, 2026 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant