Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions .github/workflows/dsh-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@ name: DSH compatibility

on:
pull_request:
paths:
- package.json
- pnpm-lock.yaml
- cordis.patch.yml
- .github/workflows/dsh-compatibility.yml
schedule:
- cron: '43 2 * * *'
workflow_dispatch:
Expand All @@ -15,9 +10,19 @@ permissions:
contents: read

jobs:
latest-release:
name: Latest published DSH
published-releases:
name: ${{ matrix.dsh.label }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
dsh:
- label: DSH 0.1.0-rc.8
package: '@deepseek-ai/dsh@0.1.0-rc.8'
- label: DSH latest tag
package: '@deepseek-ai/dsh@latest'
- label: DSH next tag
package: '@deepseek-ai/dsh@next'
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
Expand All @@ -31,19 +36,21 @@ jobs:
- run: pnpm run check
- name: Install the packed bundle into a clean profile
shell: bash
env:
DSH_PACKAGE: ${{ matrix.dsh.package }}
run: |
set -euo pipefail
release_dir=$(mktemp -d)
dsh_home=$(mktemp -d)
pnpm pack --pack-destination "$release_dir"
tarball=$(find "$release_dir" -maxdepth 1 -name '*.tgz' -print -quit)
test -n "$tarball"
DSH_HOME="$dsh_home" pnpm dlx @deepseek-ai/dsh@latest plugin --profile headless add "$tarball"
DSH_HOME="$dsh_home" pnpm dlx "$DSH_PACKAGE" plugin --profile headless add "$tarball"
profile_modules="$dsh_home/profiles/headless/node_modules"
test ! -e "$profile_modules/@deepseek-ai/cordis"
test ! -e "$profile_modules/@deepseek-ai/dsh-llm"
test ! -e "$profile_modules/@deepseek-ai/dsh-tools"
test ! -e "$profile_modules/@deepseek-ai/schemastery"
DSH_HOME="$dsh_home" pnpm dlx @deepseek-ai/dsh@latest --profile headless --dump-config > "$release_dir/config.yml"
DSH_HOME="$dsh_home" pnpm dlx "$DSH_PACKAGE" --profile headless --dump-config > "$release_dir/config.yml"
grep -F 'name: dsh-code-intel' "$release_dir/config.yml"
DSH_HOME="$dsh_home" pnpm dlx @deepseek-ai/dsh@latest --profile headless --help > "$release_dir/help.txt"
DSH_HOME="$dsh_home" pnpm dlx "$DSH_PACKAGE" --profile headless --help > "$release_dir/help.txt"
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

Symbol-aware code outline, persistent workspace indexing, and explicit lexical or embedding-assisted search for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).

The installable v0.1.2 release targets DSH 0.1.0-rc.6. This project currently distributes prebuilt packages through GitHub Releases and is not published on npm.
The v0.1.3 release is tested with DSH 0.1.0-rc.8 and 0.1.1-rc.1 while retaining the rc.6-compatible peer range. Prebuilt packages are distributed through GitHub Releases; npm publication is prepared but not yet live.

[简体中文](./README.zh-CN.md)

Expand Down Expand Up @@ -39,18 +39,24 @@ Lexical mode scores exact query matches, query tokens, symbol names, and paths.

Credentials are references, not secret values in YAML. The plugin resolves the reference through `ctx.credentials` for each indexing or query operation and never stores the credential.

## Permissions and data

- Code Intel reads supported source files through the mounted DSH filesystem service, watches the resolved local workspace, and writes a rebuildable SQLite index under `.dsh/code-index/` by default.
- Lexical mode makes no network requests. Hybrid mode sends extracted code chunks and queries to the explicitly configured OpenAI-compatible embedding endpoint and resolves only the named credential reference.
- The index can contain source-derived snippets and optional vectors. The plugin sends no telemetry and does not register custom durable session events; deleting the index directory removes its persisted data.

## Install

The package currently targets DSH `0.1.0-rc.6` plugin APIs and Node.js `^22.19 || >=24`.
The package supports DSH `>=0.1.0-rc.6 <0.2.0` plugin APIs and Node.js `^22.19 || >=24`.

```sh
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.2/dsh-code-intel-0.1.2.tgz
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.3/dsh-code-intel-0.1.3.tgz
```

The release tarball is prebuilt and needs no build allowance. A pinned source install is also supported:

```sh
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.2
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.3
```

The source install runs this package's `prepare` build. pnpm 10 and later reject it until the profile allowlists the exact package key printed by the failed command; apply that instruction and rerun the same `dsh plugin add` command. Replace `web` with `headless` to install into the one-shot agent profile.
Expand Down Expand Up @@ -96,9 +102,9 @@ Hybrid mode uses a complete OpenAI-compatible embeddings URL:

Tests use real temporary workspaces and SQLite databases. They cover all parser families, background indexing, lexical retrieval, direct outline, `fs/observed` refresh, hybrid ranking, credential absence, vector persistence, cache replacement, and invalid configuration.

- The v0.1.2 tarball installs directly from its HTTPS release URL into a clean DSH profile.
- The v0.1.3 tarball installs directly from its HTTPS release URL into clean DSH 0.1.0-rc.8 and 0.1.1-rc.1 profiles.
- The packed bundle and pinned GitHub source install both appear in `dsh --dump-config`.
- CI covers Node 22.19 and Node 24; a scheduled workflow repeats the real install against `@deepseek-ai/dsh@latest`.
- CI covers Node 22.19 and Node 24; a compatibility matrix repeats the real install against DSH 0.1.0-rc.8 plus the `latest` and `next` npm tags.
- Bugs and compatibility reports are tracked in [GitHub Issues](https://github.com/lonelymoon87/dsh-code-intel/issues).

## License
Expand Down
18 changes: 12 additions & 6 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的符号级代码大纲、持久工作区索引,以及明确区分词法与 embedding 的代码检索插件。

可安装的 v0.1.2 面向 DSH 0.1.0-rc.6。本项目当前通过 GitHub Release 分发预构建包,尚未发布 npm
v0.1.3 已针对 DSH 0.1.0-rc.8 与 0.1.1-rc.1 验证,同时保留兼容 rc.6 的 peer 范围。项目继续通过 GitHub Release 分发预构建包,npm 发布已经准备完成但尚未上线

[English](./README.md)

Expand Down Expand Up @@ -39,18 +39,24 @@ Node 22 仍把内置 SQLite 模块标记为 experimental。索引缓存可丢弃

YAML 中只保存 credential reference,不保存秘密值。插件会在每次索引或查询操作中通过 `ctx.credentials` 解析,并且不会持久化 credential。

## 权限与数据

- Code Intel 通过 DSH filesystem service 读取受支持的源码文件,监听解析后的本地工作区,并默认在 `.dsh/code-index/` 下写入可重建的 SQLite 索引。
- 词法模式不发起网络请求。混合模式会把提取的代码块与查询发送到显式配置的 OpenAI-compatible embedding endpoint,并且只解析指定的 credential reference。
- 索引可能包含从源码派生的片段和可选向量。插件不发送遥测,也不注册自定义持久会话事件;删除索引目录即可清除其持久数据。

## 安装

当前代码面向 DSH `0.1.0-rc.6` 插件 API,要求 Node.js `^22.19 || >=24`。
当前代码支持 DSH `>=0.1.0-rc.6 <0.2.0` 插件 API,要求 Node.js `^22.19 || >=24`。

```sh
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.2/dsh-code-intel-0.1.2.tgz
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.3/dsh-code-intel-0.1.3.tgz
```

Release tarball 已预构建,不需要构建权限。也可以固定版本从源码安装。

```sh
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.2
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.3
```

源码安装会运行本包的 `prepare` 构建。pnpm 10 及以上版本默认拒绝执行,第一次安装失败时请按 DSH 输出的提示,将准确的包键加入 profile 的构建白名单,然后重新执行同一条命令。需要装进一次性 Agent profile 时,把命令中的 `web` 换成 `headless`。
Expand Down Expand Up @@ -96,9 +102,9 @@ dsh plugin --profile web remove dsh-code-intel

测试使用真实临时工作区和 SQLite,覆盖所有 parser、后台索引、词法检索、文件大纲、`fs/observed` 更新、混合排序、凭据缺失、向量持久化、缓存替换和非法配置。

- v0.1.2 tarball 已从 HTTPS Release URL 直接安装进全新 DSH profile;
- v0.1.3 tarball 已从 HTTPS Release URL 直接安装进全新的 DSH 0.1.0-rc.8 与 0.1.1-rc.1 profile;
- pack 产物与固定版本 GitHub 源码安装均通过 `dsh --dump-config` 检查;
- CI 覆盖 Node 22.19 与 Node 24,定时任务会用 `@deepseek-ai/dsh@latest` 重跑真实安装
- CI 覆盖 Node 22.19 与 Node 24,兼容矩阵会分别使用 DSH 0.1.0-rc.8、npm `latest` 与 `next` 标签重跑真实安装
- bug 与兼容性问题统一进入 [GitHub Issues](https://github.com/lonelymoon87/dsh-code-intel/issues)。

## 许可证
Expand Down
15 changes: 9 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
{
"name": "dsh-code-intel",
"version": "0.1.2",
"version": "0.1.3",
"description": "Symbol-aware code outline and hybrid code search for DeepSeek Harness.",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
Expand Down Expand Up @@ -67,11 +70,11 @@
},
"devDependencies": {
"@deepseek-ai/cordis": "4.0.1",
"@deepseek-ai/dsh-credentials": "0.1.0-rc.6",
"@deepseek-ai/dsh-fs": "0.1.0-rc.6",
"@deepseek-ai/dsh-jobs": "0.1.0-rc.6",
"@deepseek-ai/dsh-system-prompt": "0.1.0-rc.6",
"@deepseek-ai/dsh-tools": "0.1.0-rc.6",
"@deepseek-ai/dsh-credentials": "0.1.1-rc.1",
"@deepseek-ai/dsh-fs": "0.1.1-rc.1",
"@deepseek-ai/dsh-jobs": "0.1.1-rc.1",
"@deepseek-ai/dsh-system-prompt": "0.1.1-rc.1",
"@deepseek-ai/dsh-tools": "0.1.1-rc.1",
Comment on lines +73 to +77

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the tested 0.1.1 prerelease in the peer ranges

When the host provides the newly tested DSH 0.1.1-rc.1 packages, these dependencies do not satisfy the unchanged >=0.1.0-rc.6 <0.2.0 peer ranges on lines 64–68: under standard semver prerelease rules, a prerelease with the 0.1.1 tuple is excluded when the range only names a 0.1.0 prerelease. The published package therefore reports incompatible peers, causing strict peer installs to reject this supported configuration and lenient installs to warn or potentially resolve unwanted copies; explicitly include the 0.1.1 prerelease line in each affected peer range.

Useful? React with 👍 / 👎.

"@deepseek-ai/schemastery": "3.18.1-rc.4",
"@types/node": "^24.0.0",
"@vitest/coverage-v8": "^4.1.8",
Expand Down
Loading
Loading