diff --git a/CLAUDE.md b/CLAUDE.md index 3082e35..7800ce1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -40,13 +40,13 @@ Five packages under `packages/*`, split along a strict seam so that adding a new **Call resolution favors a missing edge over a wrong one.** Order: import-resolved-to-an-indexed-file wins; else a workspace-unique name wins; else no edge is emitted and the site is recorded as unresolved. A wrong `callers` result sends the model to edit the wrong file; a missing one just falls back to text search. -**The on-disk format is an external contract, not ours to change freely.** `sqlite`/`tree-sitter` read and write schema v4 at `/.codegraph/codegraph.db`, the same path/format as the `@colbymchenry/codegraph` CLI. Compatibility here is deliberate — don't add fields or change the schema without checking that CLI-built graphs still load and vice versa. +**The on-disk format is an external contract, not ours to change freely.** `tree-sitter` writes schema v4 and `sqlite` reads both v4 and v8 at `/.codegraph/codegraph.db`, the same path/format as the `@colbymchenry/codegraph` CLI — the CLI ≥1.5 stamps v8, whose `nodes`/`edges`/`files`/`nodes_fts` keep every column the store reads (its reshaped `unresolved_refs`, `project_metadata`, and `name_segment_vocab` are unread by any store query). Compatibility here is deliberate — don't add fields or change the schema without checking that CLI-built graphs still load and vice versa. **A `DefinitionRule.kind` is not always fixed per rule.** For a grammar where one node type conflates several seam kinds by an inspectable value or keyword rather than a distinct node type per kind — Zig's `variable_declaration` (struct/enum/constant/variable, by the value's shape), Kotlin's `class_declaration` (class/interface/enum, by a bare keyword), Swift's `class_declaration`/`property_declaration` (struct/class/enum; field/constant/variable) — `LANGUAGE_TABLE` carries a placeholder `kind`, and `extractFile` (`extract.ts`) computes the real one per node instead, keyed on `spec.language === '…' && node.type === '…'`. Also worth knowing before adding a new grammar: some bundled `tree-sitter-wasms` grammars bind zero fields at all (verified via `Language.fieldCount`/`fieldNameForId`, not guessed) — Kotlin is one — which forces name/callee resolution onto positional child access and a language-guarded bypass of `callFunctionField` in `extractFile`'s call-handling branch (see `kotlinDeclaredName`/`kotlinCallee`); always check `fieldCount` for a new grammar before assuming `childForFieldName` will work at all. -**Every package (except `bundle`) ships an `invariant.ts` companion**, exported at the `/invariant` subpath. It's a Cordis plugin (`name`, `inject: ['invariants']`, `apply(ctx)`) that registers a package-owned runtime invariant with `ctx.invariants` when that optional service is present in the host. Follow the existing shape (see any `packages/*/src/invariant.ts`) when adding one for a new package: `PACKAGE_NAME` constant, an `InvariantInstaller`, `apply` returning the registration's disposer. +**No package ships an `invariant.ts` companion.** Upstream v0.1.2-rc.1 tightened the invariant rule (AGENTS.md): publish `./invariant` only when independent observations can diverge; empty installers and service-presence checks are invalid. All four packages' former companions were empty installers, so the `./invariant` subpath exports, `src/invariant.ts` files, and `@deepseek-ai/dsh-invariants` peer/dev deps were removed in the rc.1 adaptation. Don't reintroduce one without a real divergent observation. -**Tests resolve to live `src/`, never to built `lib/`.** `tsconfig.base.json`'s `paths` map (e.g. `dsh-plugin-codegraph-service` → `./packages/service/src`) is read by `vite-tsconfig-paths` in `vitest.config.ts` and takes priority over each package's `exports`. This exists so a test never accidentally loads a second copy of a module singleton through a stale `lib/` build — don't add `include`/`files` to `tsconfig.base.json`, it would narrow that match-all facade and break resolution for other packages' tests. +**Tests resolve to live `src/`, never to built `lib/`.** `tsconfig.base.json`'s `paths` map (e.g. `@huanlin/dsh-plugin-codegraph-service` → `./packages/service/src`) is read by `vite-tsconfig-paths` in `vitest.config.ts` and takes priority over each package's `exports`. This exists so a test never accidentally loads a second copy of a module singleton through a stale `lib/` build — don't add `include`/`files` to `tsconfig.base.json`, it would narrow that match-all facade and break resolution for other packages' tests. **Provider tests spin up a real `@deepseek-ai/cordis` `Context`** rather than mocking the service (see `packages/service/tests/codegraph.spec.ts`): `new Context()`, `await ctx.plugin(Codegraph)`, then register stub stores/indexers and assert on `ctx.codegraph`. diff --git a/LICENSE b/LICENSE index 1b8befe..647053c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ MIT License Copyright (c) 2026 CC ZHAO +Copyright (c) 2026 HuanLinOTO (fork: dsh 0.1.2 track adaptation, renamed npm scope) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 3567590..1a610e5 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,21 @@ English | [中文](README.zh.md) -[![dshfind](https://dshfind.com/api/badge/CC19990113/dsh-plugin-codegraph?lang=zh)](https://dshfind.com/zh/plugins/CC19990113/dsh-plugin-codegraph?ref=badge) +

+ dsh-plugin-codegraph card +

Structural code intelligence for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`). Gives the agent two tools — `codegraph` and `codegraph_index` — so it can ask **where is this declared**, **who calls it**, **what breaks if I change it**, and **how does one symbol reach another**, answered from a pre-built index instead of from text search. ```sh -dsh plugin --profile add dsh-plugin-codegraph +dsh plugin --profile add @huanlin/dsh-plugin-codegraph ``` + +> **Fork notice:** This is the actively maintained fork of [CC19990113/dsh-plugin-codegraph](https://github.com/CC19990113/dsh-plugin-codegraph) (upstream inactive since v0.1.6, 2026-08). This fork tracks the DSH `0.1.2-rc.1` line and publishes under the `@huanlin` npm scope. + ## Why An agent editing code asks structural questions before it touches anything. The tools it usually has answer them badly or not at all: @@ -81,7 +86,7 @@ That last rule is deliberate. The model acts on `callers` output, so a confident ## Install ```sh -dsh plugin --profile add dsh-plugin-codegraph +dsh plugin --profile add @huanlin/dsh-plugin-codegraph ``` That one command is the whole install: it fetches the package and reconciles the profile's manifest for you, appending `dsh-plugin-codegraph` to `dsh.profile.bundles`. There is no JSON to edit by hand. Afterwards, `$DSH_HOME/profiles//package.json` — `$DSH_HOME` defaults to `~/.dsh` — reads like this, shown here so you can check it rather than write it: @@ -145,7 +150,7 @@ Built on [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) and ## Feedback -Questions or need support? Open an [issue](https://github.com/CC19990113/dsh-plugin-codegraph/issues). +Questions or need support? Open an [issue](https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues). ## License diff --git a/README.zh.md b/README.zh.md index 1b8a8d3..da7186f 100644 --- a/README.zh.md +++ b/README.zh.md @@ -2,16 +2,21 @@ [English](README.md) | 中文 -[![dshfind](https://dshfind.com/api/badge/CC19990113/dsh-plugin-codegraph?lang=zh)](https://dshfind.com/zh/plugins/CC19990113/dsh-plugin-codegraph?ref=badge) +

+ dsh-plugin-codegraph card +

给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`dsh`)加上结构化代码检索能力。 装上之后,agent 多出两个工具:`codegraph` 和 `codegraph_index`。它能直接问"这个函数在哪定义的""谁调用了它""改了它会影响哪些地方""从 A 怎么走到 B",答案来自预先建好的符号索引,检索方法上比grep更快 消耗更小。 ```sh -dsh plugin --profile add dsh-plugin-codegraph +dsh plugin --profile add @huanlin/dsh-plugin-codegraph ``` + +> **Fork 说明**:本仓库是 [CC19990113/dsh-plugin-codegraph](https://github.com/CC19990113/dsh-plugin-codegraph) 的活跃维护 fork(上游自 2026-08 的 v0.1.6 后停更),跟进 DSH `0.1.2-rc.1`,npm 包发布在 `@huanlin` scope 下。 + ## 解决什么问题 Agent 改代码之前,总要先搞清楚代码之间的关系。但它手上的工具在这件事上都不好使: @@ -81,7 +86,7 @@ codegraph查一次就能全部答上来。本插件把两半都带齐了:一半 ## 安装 ```sh -dsh plugin --profile add dsh-plugin-codegraph +dsh plugin --profile add @huanlin/dsh-plugin-codegraph ``` 就这一条命令,装完就完事:它会拉包,还会自动 reconcile profile 的 manifest,把 `dsh-plugin-codegraph` 追加进 `dsh.profile.bundles`。不用手动改任何 JSON。跑完之后,`$DSH_HOME/profiles//package.json`(`$DSH_HOME` 默认是 `~/.dsh`)长这样——这里给出来是让你核对,不是让你去写: @@ -145,7 +150,7 @@ dsh plugin --profile add dsh-plugin-codegraph ## 反馈 -有问题或者需要支持,欢迎在 [Issues](https://github.com/CC19990113/dsh-plugin-codegraph/issues) 提出。 +有问题或者需要支持,欢迎在 [Issues](https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues) 提出。 ## 许可 diff --git a/docs/plans/2026-08-30-dsh-0.1.2-alpha2-migration.md b/docs/plans/2026-08-30-dsh-0.1.2-alpha2-migration.md new file mode 100644 index 0000000..5029f6b --- /dev/null +++ b/docs/plans/2026-08-30-dsh-0.1.2-alpha2-migration.md @@ -0,0 +1,139 @@ +# dsh-plugin-codegraph (monorepo: root + packages/bundle + tool + service + sqlite + tree-sitter) · dsh 0.1.2-alpha.1 → alpha.2 迁移指南 + +> 生成日期:2026-08-30。上游差异基线:tag `dsh-v0.1.2-alpha.1` (cd5ef81481) → `dsh-v0.1.2-alpha.2` (0a53fb55be)。 +> 本指南全部基于只读证据(插件源码 + `git -C D:/Projects/deepseek-harness/dsh show/diff/grep` 对 alpha2 源码的自查),未对 dsh/ 与本仓库做任何写操作。 + +## 结论 + +**⚠️ 需适配(一个小而硬的破坏点,改 3 行 import + 2 个 package.json 后即可升级)。** + +一句话理由:本插件是纯 host 侧 Cordis 插件(无任何 client/UI 代码),alpha.2 的全部 client 侧大改(connectionGeneration→hostInfo 注入契约、connection 恢复重构、ui-* 包变更)对本插件一律不适用;真正命中的只有一处 —— **上游把 `assertNever` 从 `@deepseek-ai/dsh-llm` 搬到了新包 `@deepseek-ai/dsh-util-values`**,本插件 tool/sqlite 两个子包的已发布 `lib/` 里有对它的运行时 ESM 具名导入,在 alpha.2 宿主下会**直接加载失败**(`SyntaxError: The requested module '@deepseek-ai/dsh-llm' does not provide an export named 'assertNever'`),必须改源码重新构建发布。 + +## 插件现状 + +### 版本与发布形态 + +| 项 | 值 | 证据 | +|---|---|---| +| 插件版本 | 5 个子包均 `0.1.6`(root `dsh-plugin-codegraph-root@0.1.0` private) | `package.json:2-3`;`packages/*/package.json` | +| 发布形态 | npm registry 分发(**非** `link:`、**非** `github:`):profile 依赖 `"dsh-plugin-codegraph": "^0.1.6"`,profile 内已装 0.1.6 及 4 个子包 | `C:/Users/Administrator/.dsh/profiles/web/package.json:27`;`profiles/web/node_modules/dsh-plugin-codegraph{,-service}/` 实测 | +| 发布通道 | 仓库自带 `.github/workflows/publish.yml`:GitHub release published / workflow_dispatch → typecheck → test → build → `pnpm -r publish --access public`(provenance) | `publish.yml:3-50` | +| `dsh.bundle.patch` | root 与 bundle 两处声明,均指向 `packages/bundle/cordis.patch.yml` | `package.json:10-14`、`packages/bundle/package.json:39-43` | +| files | bundle 仅 `cordis.patch.yml`;其余子包 `lib/**/*.js` + `lib/**/*.d.ts`(预构建 lib 入库,lib 在 `.gitignore` 但发布走 CI 重建) | `packages/bundle/package.json:32-34`;`.gitignore:2` | + +### cordis.patch.yml 注册面(`packages/bundle/cordis.patch.yml`) + +4 行 insert:`codegraph`(service)、`codegraph-sqlite`(store provider)、`codegraph-tree-sitter`(indexer provider)、`codegraph-tool`(consumer)。用户可用 `id` 在 profile 层 retune 配置(`languages`/`maxLimit`/`indexTimeoutMs` 等)。 + +### 用到的 dsh API 清单(全部为 host 侧,按 import 实测) + +| 子包 | import 的 `@deepseek-ai/*` | 实际使用的 API | +|---|---|---| +| service | `cordis`、`dsh-llm`、`dsh-brand`(type)、`dsh-invariants`(type) | `Context`/`Service`;`HarnessError`(`CodegraphError extends HarnessError`,`src/index.ts:80`);`Branded`;`ctx.invariants.register`(companion) | +| sqlite | `cordis`、`schemastery`、`dsh-llm`、`dsh-invariants`(dev) | `assertNever`(**来自 dsh-llm**,`src/index.ts:27`);`ctx.codegraph` 注册 store | +| tool | `cordis`、`schemastery`、`dsh-tools`、`dsh-fs`(type 增广)、`dsh-system-prompt`(type 增广)、`dsh-llm`、`dsh-timeout`、`dsh-invariants`(type) | `defineTool`/`ToolExecution`/`InferArgs`/`InferValue`;`ctx.tools.register` + `presentCall` + `output.render`;`ctx.systemPrompt.section({name, order:111, text})`(`src/index.ts:184`);`ctx.fs.resolve/readText`(`src/source.ts:56-57`);`assertNever`(`src/index.ts:27`、`src/render.ts:10`);`MAX_TIMER_DELAY_MS`(`src/index.ts:28`);`exec.agent?.session.header.cwd`(`src/index.ts:140`) | +| tree-sitter | `cordis`、`schemastery`、`dsh-invariants`(type) | 仅注册 indexer;文件读写/监听全部用 `node:fs`(`fs.watch`/`stat`/`rename`),不经过 dsh 面 | +| 测试(devDeps 固定 rc.6) | `dsh-session`、`dsh-agent`、`dsh-system-prompt`、`dsh-tools`、`dsh-fs-local`、`cordis-plugin-loader/include` | `SESSION_FORMAT_VERSION`/`Session`/`SessionId`、`AgentRegistry`(default)/`Inbox`/`Agent`、`LocalFileSystem` | + +- **不消费 session 事件**:src 全树仅 `tree-sitter/src/watcher.ts:60` 一处 `watcher.on('error')`(node fs.watch),无任何 `ctx.session` / 事件监听。 +- **无 client/UI 代码**:全部 import 清单中没有任何 `dsh-client-*` / `ui-*` 包;bundle 的 `files` 只有 `cordis.patch.yml`,无 client bundle。 +- **无 `link:`/overrides 指向 `~/.dsh/source/current`**:root 与 5 个子包 `package.json` 均无 overrides;devDeps 全部用 npm 已发布的 `0.1.0-rc.6` 精确版本(`pnpm-lock.yaml:25-27`)。运行时的 `@deepseek-ai/dsh-*` 具名导入由 dsh 宿主的模块加载器解析到运行中源码树(profile `node_modules/@deepseek-ai/` 下只有 `cosmokit`/`schemastery`/`dsh-client-*`,没有 `dsh-llm`/`dsh-tools` 等 —— 实测目录列表)。 + +## 影响对照表 + +| alpha1→alpha2 变更(上游摘要) | 是否影响本插件 | 证据(文件:行 / git 只读命令输出摘录) | +|---|---|---| +| **`assertNever` 从 `dsh-llm` 移除,迁入新包 `dsh-util-values`**("make shared primitives duplicate-install safe") | **❌ 影响(唯一硬破坏)**:tool 与 sqlite 的已发布 `lib/` 含 `import { assertNever } from '@deepseek-ai/dsh-llm'`,alpha.2 下 ESM 具名导入缺失败,两插件加载即崩 | alpha.2 `packages/llm/llm/src/never.ts` **整个文件被删除**;`packages/llm/llm/src/index.ts` 移除 `export * from './never.ts'`;新包 `packages/util/values/src/index.ts:12` `export function assertNever(...)`(`@deepseek-ai/dsh-util-values@0.1.2-alpha.2`)。本侧:`packages/tool/src/index.ts:27`、`packages/tool/src/render.ts:10`、`packages/sqlite/src/index.ts:27`;已装产物实证:`profiles/web/node_modules/dsh-plugin-codegraph-tool/lib/index.js` 与 `dsh-plugin-codegraph-sqlite/lib/index.js` 均含该 import 行 | +| 新增 4 包(deque / util-time / util-values / client-ui-schedule);包零删除零改名 | ✅ 不影响(util-values 反而是修复落点;其余 3 包为 client/数据结构向) | alpha.2 `git ls-tree dsh-v0.1.2-alpha.2 -- packages/` 无删除;`packages/util/values/package.json` 存在 | +| vendor:cordis 4.0.1→4.0.2、schemastery 3.18.1→3.18.2(patch) | ✅ 不影响:peer `@deepseek-ai/cordis >=4.0.1` 仍满足;`@deepseek-ai/schemastery ^3.18.1` 仍满足;`Context`/`Service`/`z.number().max().default()` 契约未变 | 实测:`vendor/cordis/package.json` version 4.0.1→4.0.2;`vendor/schemastery/package.json` 3.18.1→3.18.2 | +| client 注入契约 `connectionGeneration`→`hostInfo`(ui-tool/ui-workspace) | ✅ 不适用:插件无任何 client/UI 代码 | 本仓库 src 全部 `@deepseek-ai/*` import 清单(见上节)无 `dsh-client-*` | +| client/connection 恢复逻辑重构(18 文件)、ui-chat/ui-conversation 等大改 | ✅ 不适用(同上) | 同上 | +| session 事件 envelope 增加 `ignorable: true`;事件全部保留 | ✅ 不影响:插件不消费 session 事件 | `rg "\.(on|once)\(|ctx.session" packages/*/src` 仅命中 `watcher.ts:60`(fs.watch) | +| session folds→projections 大迁移(api/session-controller 45 文件) | ✅ 不影响:插件只 import `dsh-session` **公开 API**(`Session`/`SessionId`/`SESSION_FORMAT_VERSION`,且仅测试用),alpha.2 全部仍在 | alpha.2 `packages/core/session/src/index.ts:423` `export class Session`;`src/types.ts:17,24` `SessionId`;`src/types.ts:51` `SESSION_FORMAT_VERSION = 0`(值未变);`src/index.ts:23` `export * from './types.ts'` | +| gateway/Remote 失败词汇收敛、`TypertRemoteFailure`→`RemoteError` | ✅ 不影响:插件不 import `dsh-typert-protocol`;所用 `HarnessError` 在 alpha.2 原样保留 | alpha.2 `packages/llm/llm/src/error.ts:13` `export class HarnessError extends Error`(error.ts 不在本次 diff 文件清单中) | +| dsh-tools 内部重构(JsonValue/snapshotJsonValue 改从 util-values 取;section order 改 `getSectionOrder()`) | ✅ 不影响:`defineTool`(alpha.2 `schema.ts:545`)、`ToolExecution`(alpha.2 `index.ts:372`,含 `agent?`/`signal`)、`InferArgs`/`InferValue`(`schema.ts:175,172`)、`presentCall`(`schema.ts:528`) 全部签名未变 | `git diff dsh-v0.1.2-alpha.1 dsh-v0.1.2-alpha.2 -- packages/core/tools/src` 仅 import 来源与 order 解析方式变化 | +| system-prompt:`FIRST_PARTY_SECTION_ORDER`/`PERSONA_ORDER` 导出移除,改 `getSectionOrder(name)` | ✅ 不影响:插件用**数字 order 111** 注册 section,未用任何被移除的导出;`ctx.systemPrompt.section(section: PromptSection)` 签名未变 | alpha.2 `packages/core/system-prompt/src/index.ts:432` `section(section: PromptSection): () => void`;`:13-15` ctx 增广 `systemPrompt: SystemPrompt`;被移除导出不在本插件 import 清单 | +| `dsh-fs`:仅版本号变化;`util/atomic-write` 重试、stat 只探父目录(Windows 修复) | ✅ 不影响:`resolve(path,{cwd,signal})`/`readText(target,signal)` 签名原样(`packages/fs/fs/src/index.ts:116,189`);atomic-write 本插件不使用(tree-sitter 写库用 `node:fs` 的 rm+rename,`schema.ts:64-66`) | `git diff --stat ... -- packages/fs/fs` 仅 package.json 1 行 | +| `dsh-timeout`/`dsh-invariants`/`dsh-brand`:仅版本号 / 纯内部重构 | ✅ 不影响:`MAX_TIMER_DELAY_MS = 2_147_483_647`(alpha.2 `util/timeout/src/index.ts:25`);`InvariantInstaller`/`register(packageName, installer)` 原样(`runtime-diagnostics/invariants/src/index.ts:32,136`);`Branded` 保留且新增 `brandString`(纯增量) | 对应 git diff stat 均 ≤1 个 src 文件且为内部调整 | +| vendor/loader 1.0.2→1.0.3(node 24.9 内部 loader 分类修复) | ✅ 不影响(环境级修复):仅 `internal.ts` 的 Node 内部 loader 版本判定改为按 API 形态分类,无插件面契约变化 | `git diff ... -- vendor/loader/src/internal.ts`(分类逻辑重写,`ModuleLoader.fromInternal()`) | +| settings-controller / workspace-controller / ui-settings-* 变更 | ✅ 不适用:插件无 settings-controller 依赖;配置只经 schemastery schema 由 cordis patch 注入 | 插件 import 清单无相关包 | +| 依赖策略收紧(client peer 收敛、verify-package-dependencies 脚本) | ✅ 不影响:本插件自己声明 peer(见下节评估),不受 client 包 peer 收敛影响 | — | +| prerelease npm 发布走独立 dist-tag(不占 latest) | ⚠️ 注意(运维项):devDeps 若升到 `0.1.2-alpha.2` 需显式指定精确版本,`^0.1.0-rc.6` 类范围不会自动解析到 alpha | 上游摘要;`pnpm-lock.yaml` 现锁定 `0.1.0-rc.6` | + +### peerDependencies 与 alpha.2 的匹配性评估 + +- `@deepseek-ai/cordis: >=4.0.1`:alpha.2 实为 4.0.2,**满足** ✅。 +- 各 `@deepseek-ai/dsh-*: >=0.1.0-rc.6`:按 npm/node-semver 的 prerelease 规则,`0.1.2-alpha.2`(tuple 0.1.2)**并不严格满足** `>=0.1.0-rc.6`(prerelease 版本只与同 `[major,minor,patch]` 元组的比较子匹配)。**实际运行不受影响**——这些 peer 只是声明性元数据,运行时由宿主模块加载器按运行中源码树解析(profile `node_modules/@deepseek-ai/` 里根本没有这些包)。建议**借本次升级把 peer 下限对齐到实测支持的版本**(如 `>=0.1.2-alpha.2`),并在 README 标注「已针对 dsh 0.1.2-alpha.2 验证」;不强制。 +- **必须新增**:`@deepseek-ai/dsh-util-values`(tool、sqlite 的 peer + devDep),见迁移步骤。 +- devDeps 的 `0.1.0-rc.6` 固定版本:本地 `pnpm test`/`typecheck` 不受 dsh 升级影响,可继续使用;如需对 alpha.2 类型做编译期验证,可另行升到 `0.1.2-alpha.2`(精确版本可用,dist-tag 独立),属可选优化。 + +## 迁移步骤 + +> 改动范围:仅 `packages/tool`(2 个源文件 + package.json)、`packages/sqlite`(1 个源文件 + package.json);service/tree-sitter/bundle **源码无需改动**。全程不需要触碰 `dsh/`。 + +### 1. 源码修改(唯一必改项:assertNever 搬家) + +1. `packages/tool/src/index.ts:27` + `import { assertNever } from '@deepseek-ai/dsh-llm'` → `import { assertNever } from '@deepseek-ai/dsh-util-values'` +2. `packages/tool/src/render.ts:10` 同上替换。 +3. `packages/sqlite/src/index.ts:27` 同上替换。 +4. `packages/tool/package.json`:`peerDependencies` 与 `devDependencies` 各加 `"@deepseek-ai/dsh-util-values": ">=0.1.2-alpha.2"`(devDep 用精确 `"0.1.2-alpha.2"`,与现有 rc.6 风格一致);`dsh-llm` 的 peer/devDep **保留**(`HarnessError` 仍在用)。 +5. `packages/sqlite/package.json`:同上处理。 +6. (可选,建议)借机把 5 个包版本从 `0.1.6` 升到 `0.1.7`,并在 README「Known limits」或包描述标注已验证的 dsh 版本。 +7. `packages/tool/package.json` 顺带评估:`peerDependencies` 的 `@deepseek-ai/dsh-*` 下限是否从 `>=0.1.0-rc.6` 提到 `>=0.1.2-alpha.2`(见上节匹配性评估;非必须)。 + +### 2. 本地验证(不发布先验证) + +```powershell +Push-Location D:/Projects/deepseek-harness/dsh-plugin-codegraph +pnpm install # 拉入 dsh-util-values@0.1.2-alpha.2 devDep(alpha 走独立 dist-tag,精确版本可装) +pnpm run typecheck # tsc -b,验证新 import 与其余 API 全部编译通过 +pnpm test # vitest 全量(仍跑 devDeps rc.6;不属 dsh 升级回归面) +pnpm run build # 重建 4 个子包 lib/ +Pop-Location +``` + +注意:`pnpm install/build/test` 本次分析会话中被禁止,上述命令需在正常开发会话由人类/后续会话执行。类型对齐验证可临时把 tool/sqlite 的 devDeps 指到 `0.1.2-alpha.2` 跑一次 typecheck(确认 `@deepseek-ai/dsh-util-values` 导入可解析),验证后可回退 pin——是否常驻 alpha 版本由维护者定(待人工确认)。 + +### 3. profile 端接入 + +- **当前 profile 是 npm registry 引用(`^0.1.6`),不是 `link:`** —— 模板里「重建 lib/ 即可见」的捷径**不适用**于现状,必须走发布或临时改 link。 +- **首选(发布路线,与本仓库 CI 一致)**:提交改动 → 打 GitHub release(或 workflow_dispatch)触发 `publish.yml` → `pnpm -r publish` 发布 0.1.7 → `dsh plugin --profile web update dsh-plugin-codegraph`(registry 引用属「情况 B」,update 即重装)。 +- **临时本地验证(可选)**:把 profile 依赖改为 `link:D:/Projects/deepseek-harness/dsh-plugin-codegraph/packages/bundle`。⚠️ 待人工确认:bundle 的 4 个依赖是 `workspace:^`,`link:` 指向 monorepo 内部包时 pnpm 能否把 workspace 成员一并链入 profile node_modules 未实测;若失败,回退到发布路线。link 模式下重建 `lib/` 即对 profile 可见,无需重装。 +- 对外发布遵循仓库现有 `publish.yml`(GitHub release 驱动);若未来迁到 `huanlinoto` 账号 / `@huanlin` scope,按 AGENTS.md 的发布 SOP 执行(本仓库现归属 CC19990113,流程不变)。 + +### 4. 无需改动的项(明说) + +- `packages/service`:`HarnessError` 未动、`cordis`/`dsh-brand`/`dsh-invariants` 契约未动 → **无需改动**。 +- `packages/tree-sitter`:不 import 任何被改 API;`fs.watch`/`node:sqlite` 自持 → **无需改动**。 +- `packages/bundle` + `cordis.patch.yml`:4 行 insert 的 id/name 机制在 alpha.2 未变(loader 仅 node 24.9 内部判定修复)→ **无需改动**。 +- 系统提示词注册(数字 order)、工具 schema、`presentCall`/`output.render`、`ctx.fs` 读取、`MAX_TIMER_DELAY_MS` 校验、`exec.agent?.session.header.cwd` 根解析 —— alpha.2 全部原样 → **无需改动**。 +- 磁盘格式 `.codegraph/codegraph.db` schema v4:与上游无关,外部契约不变 → **无需改动**。 + +## 升级后验证清单 + +前置:按 DSH 源码 SOP 完成宿主升级(`~/.dsh/source/current` pull + `pnpm install` + `pnpm run build`),**重启 `dsh web` 进程,浏览器 `Ctrl+Shift+R` 硬刷新**。当前运行版本实测为 `0.1.2-alpha.1`,升级后应显示 `0.1.2-alpha.2`。 + +1. **插件加载**:人类在终端跑 `dsh --profile web --dump-default-config`,输出应含 `# == dsh-plugin-codegraph` 分组,且 `codegraph` / `codegraph-sqlite` / `codegraph-tree-sitter` / `codegraph-tool` 四行齐全;WebUI 不弹 "Failed to load plugins"。若出现 `does not provide an export named 'assertNever'` → 说明 profile 里还是旧 0.1.6 产物(未发布/未 update)。 +2. **工具可用**:新开会话,让模型调用 `codegraph`,`operation: "status"` + 本会话工作区路径 → 无索引时应返回 `indexed: false`(不报错);对一个 `.codegraph/codegraph.db` 为**异版本**(如实测中 D:/Projects/deepseek-harness 根存在 v8 库)的工作区,`status`/查询会**响亮报错**(`CODEGRAPH_MALFORMED_INDEX`/`UNSUPPORTED_FORMAT` 一族)——这是既有设计,属预期。 +3. **建索引回路**:对小仓库调 `codegraph_index` → 返回 `files_indexed/symbol_count/edge_count/languages`;随后 `codegraph search <符号>`、`callers <符号>` 各来一次,确认 `ctx.codegraph`→store→`ctx.fs`(alpha.2 `resolve/readText` 已实证未变)链路通。 +4. **系统提示词**:新会话中确认模型收到 codegraph 使用指引(`tool:codegraph`,order 111)——可通过让模型回答「何时该用 codegraph 而非 grep」间接验证。 +5. **配置 retune**:在 profile `cordis.patch.yml` 给 `codegraph-tool` 加 `maxLimit: 50` 重启,确认生效(patch 行寻址机制未受升级影响)。 +6. **watch 回路(Windows)**:对已索引工作区改一个被索引文件,约 2s debounce 后 `status` 的 `stale_file_count` 归零(tree-sitter watcher 为 node 原生实现,不依赖 dsh 面)。 +7. **回归关注点**:本插件旧产物在 alpha.2 下的唯一失败模式就是第 1 步的 ESM 具名导入错误;除此以外,alpha.2 的 client/session/gateway 改动没有任何可触及本插件的路径(对照表已逐项排除)。 + +### 待人工确认清单 + +- `link:` 指向 `packages/bundle`(monorepo 内部包、`workspace:^` 依赖)在 profile 端能否正确链接(见迁移步骤 3)——未实测,发布路线不受影响。 +- devDeps 是否随升级 pin 到 `0.1.2-alpha.2`(需在 profile 之外验证 npm alpha dist-tag 拉取),还是维持 rc.6。 + +## 勘误(2026-08-31 适配执行时补录) + +> 以下为实际执行 install/typecheck/test 时发现、原指南结论不足或需修正之处。均已按实测修复。 + +1. **devDeps 必须升到 `0.1.2-alpha.2`(原「可选」结论不成立)**:rc.6 的 `@deepseek-ai/dsh-llm` **没有 `ToolCallId` 值导出**(旧名 `CallId`),而 `packages/tool/tests/{tool-codegraph,live-tool,loader-composition}.spec.ts` 在 alpha.1 适配提交(2635049)中已改为 `import { ToolCallId } from '@deepseek-ai/dsh-llm'` —— 干净的 rc.6 安装下这 3 个套件**从那时起就注定运行时失败**(此前本机靠残留的 alpha 版 node_modules 掩盖)。已把 root + tool/sqlite/service/tree-sitter 全部 devDeps 的 `0.1.0-rc.6` 精确 pin 升到 `0.1.2-alpha.2`(npm alpha dist-tag 实测可拉取)。 +2. **pnpm v11.7 会剪掉 peer-only 包**:`autoInstallPeers: false` 下,rc.6/alpha2 的 `@deepseek-ai/dsh-*` 全是 peer 声明,v11 重装后 `dsh-scope`/`dsh-brand`/`dsh-typert-protocol` 等不落盘 → 测试运行时 `Cannot find package '@deepseek-ai/dsh-scope'`(3 个套件整包加载失败)。提交版 lockfile 是由会物化 peer 的旧 pnpm 生成的。修复:`pnpm-workspace.yaml` `autoInstallPeers: true`(恢复 lockfile 原行为),install 后 535 用例可全部加载。 +3. **`allowBuilds: koffi: set this to true or false` 占位行导致 install exit 1**:改为 `koffi: true`(与 `onlyBuiltDependencies: [koffi]` 及 CLAUDE.md「koffi 是唯一允许的原生构建」一致;koffi 无 importer 依赖,属锁文件遗留项,构建脚本放行无副作用)。 +4. **CI 发版路线被所有权阻断(原「首选」路线本机不可行)**:npm 包 `dsh-plugin-codegraph` 归属 `cczhao990113`(`npm owner ls` 实测),HuanLinOTO fork 无 publish workflow、upstream(cc19990113)无 push 权限(`gh api .permissions.push=false`)。**未执行** `dsh plugin --profile web update`。临时接入:把本机构建的 0.1.7 `lib/` 同步进 profile 的 5 个已装包(`~/.dsh/profiles/web/node_modules/dsh-plugin-codegraph*/lib/`)并把其 package.json version 字段同步为 0.1.7 —— profile 依赖声明仍为 `^0.1.6`(semver 匹配 0.1.7)。⚠️ 后续若跑 `dsh plugin update dsh-plugin-codegraph` 会用 registry 上的旧 0.1.6 **覆盖回断点版本**;正式发版需人类决策(走 cczhao 账号 / 上游 CI / 迁移到 `@huanlin` scope)。 +5. **5 个子包版本已 bump `0.1.6` → `0.1.7`**(原「可选建议」已落实,发版就绪)。 +6. **Windows 测试基线**:535 用例 523 过 / 11 失败 / 1 skip。11 个失败全部为 Windows 平台假设(store.spec 2 个 EBUSY 文件锁、watcher.spec 4 个「on Linux」专属、git-hooks 1 个 exec 位、worktree 3 个 git-dir 路径、index.spec 1 个连接失效依赖文件替换),非 alpha2 回归,按约束不改上游测试,记录为已知非回归。 diff --git a/package.json b/package.json index 0ae4712..2a02a58 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "devDependencies": { "@deepseek-ai/cordis-plugin-include": "^1.0.6", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-agent": "0.1.0-rc.6", - "@deepseek-ai/dsh-fs-local": "0.1.0-rc.6", - "@deepseek-ai/dsh-session": "0.1.0-rc.6", + "@deepseek-ai/dsh-agent": "0.1.2-rc.1", + "@deepseek-ai/dsh-fs-local": "0.1.2-rc.1", + "@deepseek-ai/dsh-session": "0.1.2-rc.1", "@types/node": "^22.10.0", "@vitest/coverage-v8": "^4.1.8", "typescript": "^5.9.0", diff --git a/packages/bundle/cordis.patch.yml b/packages/bundle/cordis.patch.yml index c0f1ee6..aa747e6 100644 --- a/packages/bundle/cordis.patch.yml +++ b/packages/bundle/cordis.patch.yml @@ -1,4 +1,4 @@ -# The dsh-plugin-codegraph bundle patch: mounts the whole code-graph capability +# The @huanlin/dsh-plugin-codegraph bundle patch: mounts the whole code-graph capability # as ONE layer over an existing dsh profile. # # Row order carries no load semantics — activation is service-availability @@ -11,20 +11,20 @@ # Service Definition: publishes ctx.codegraph, the store/indexer registries, # and the eight normalized graph queries. Carries no store of its own. - id: codegraph - name: 'dsh-plugin-codegraph-service' + name: '@huanlin/dsh-plugin-codegraph-service' # Service Provider (read): serves queries from .codegraph/codegraph.db. # Claims a project root only when that file already exists. - id: codegraph-sqlite - name: 'dsh-plugin-codegraph-sqlite' + name: '@huanlin/dsh-plugin-codegraph-sqlite' # Service Provider (write): builds that same schema-v4 file with # web-tree-sitter. Registers ONLY an indexer, never a store, so the seam's # one-claimant-per-root rule stays intact. - id: codegraph-tree-sitter - name: 'dsh-plugin-codegraph-tree-sitter' + name: '@huanlin/dsh-plugin-codegraph-tree-sitter' # Consumer: the model-facing `codegraph` and `codegraph_index` tools plus # their system-prompt section. - id: codegraph-tool - name: 'dsh-plugin-codegraph-tool' + name: '@huanlin/dsh-plugin-codegraph-tool' diff --git a/packages/bundle/package.json b/packages/bundle/package.json index 84b75b4..519efe9 100644 --- a/packages/bundle/package.json +++ b/packages/bundle/package.json @@ -1,6 +1,6 @@ { - "name": "dsh-plugin-codegraph", - "version": "0.1.6", + "name": "@huanlin/dsh-plugin-codegraph", + "version": "0.1.8", "description": "Structural code intelligence for DeepSeek Harness — gives the agent codegraph and codegraph_index tools to find where a symbol is declared, what calls it, what a change reaches, and how one symbol reaches another, from a tree-sitter index it builds itself", "keywords": [ "dsh", @@ -23,18 +23,17 @@ "author": "CC ZHAO", "repository": { "type": "git", - "url": "git+https://github.com/CC19990113/dsh-plugin-codegraph.git", + "url": "git+https://github.com/HuanLinOTO/dsh-plugin-codegraph.git", "directory": "packages/bundle" }, - "homepage": "https://github.com/CC19990113/dsh-plugin-codegraph#readme", - "bugs": "https://github.com/CC19990113/dsh-plugin-codegraph/issues", + "homepage": "https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme", + "bugs": "https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues", "type": "module", "files": [ "cordis.patch.yml" ], "publishConfig": { - "access": "public", - "provenance": true + "access": "public" }, "dsh": { "bundle": { @@ -42,9 +41,9 @@ } }, "dependencies": { - "dsh-plugin-codegraph-service": "workspace:^", - "dsh-plugin-codegraph-sqlite": "workspace:^", - "dsh-plugin-codegraph-tool": "workspace:^", - "dsh-plugin-codegraph-tree-sitter": "workspace:^" + "@huanlin/dsh-plugin-codegraph-service": "workspace:^", + "@huanlin/dsh-plugin-codegraph-sqlite": "workspace:^", + "@huanlin/dsh-plugin-codegraph-tool": "workspace:^", + "@huanlin/dsh-plugin-codegraph-tree-sitter": "workspace:^" } } diff --git a/packages/service/README.md b/packages/service/README.md index 91e8a43..b21e6ef 100644 --- a/packages/service/README.md +++ b/packages/service/README.md @@ -1,4 +1,4 @@ -# dsh-plugin-codegraph-service +# @huanlin/dsh-plugin-codegraph-service Service Definition for the code-graph capability seam: publishes `ctx.codegraph`, the store and indexer provider registries, and the eight normalized structural queries. Carries no store, no indexer, and no filesystem access of its own. diff --git a/packages/service/package.json b/packages/service/package.json index 738b94f..b5da649 100644 --- a/packages/service/package.json +++ b/packages/service/package.json @@ -1,6 +1,6 @@ { - "name": "dsh-plugin-codegraph-service", - "version": "0.1.6", + "name": "@huanlin/dsh-plugin-codegraph-service", + "version": "0.1.8", "description": "Service Definition for the DeepSeek Harness code-graph capability seam (ctx.codegraph): a graph-store and graph-indexer provider registry with per-query, order-independent selection over eight normalized structural queries", "keywords": [ "dsh", @@ -18,11 +18,11 @@ "author": "CC ZHAO", "repository": { "type": "git", - "url": "git+https://github.com/CC19990113/dsh-plugin-codegraph.git", + "url": "git+https://github.com/HuanLinOTO/dsh-plugin-codegraph.git", "directory": "packages/service" }, - "homepage": "https://github.com/CC19990113/dsh-plugin-codegraph#readme", - "bugs": "https://github.com/CC19990113/dsh-plugin-codegraph/issues", + "homepage": "https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme", + "bugs": "https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues", "type": "module", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -31,10 +31,6 @@ "types": "./lib/index.d.ts", "default": "./lib/index.js" }, - "./invariant": { - "types": "./lib/invariant.d.ts", - "default": "./lib/invariant.js" - }, "./package.json": "./package.json" }, "files": [ @@ -42,19 +38,16 @@ "lib/**/*.d.ts" ], "publishConfig": { - "access": "public", - "provenance": true + "access": "public" }, "peerDependencies": { "@deepseek-ai/cordis": ">=4.0.1", "@deepseek-ai/dsh-brand": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-invariants": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6" + "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1" }, "devDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "0.1.0-rc.6", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.6", - "@deepseek-ai/dsh-llm": "0.1.0-rc.6" + "@deepseek-ai/dsh-brand": "0.1.2-rc.1", + "@deepseek-ai/dsh-llm": "0.1.2-rc.1" } } diff --git a/packages/service/src/brand.ts b/packages/service/src/brand.ts index 1b99f2a..3cf9691 100644 --- a/packages/service/src/brand.ts +++ b/packages/service/src/brand.ts @@ -4,7 +4,7 @@ * reserves on `ctx.codegraph`; and {@link CodegraphIndexerId}, the identity an indexer provider * reserves. The `Branded` primitive lives in `@deepseek-ai/dsh-brand`; keeping each type with its * factory here lets `index.ts` re-export all three under one name. - * @module dsh-plugin-codegraph-service/brand + * @module @huanlin/dsh-plugin-codegraph-service/brand */ import type { Branded } from '@deepseek-ai/dsh-brand' diff --git a/packages/service/src/index.ts b/packages/service/src/index.ts index 8450589..27c3d38 100644 --- a/packages/service/src/index.ts +++ b/packages/service/src/index.ts @@ -16,7 +16,7 @@ * never called from {@link CodegraphService.query}: indexing is a caller-initiated, potentially * multi-minute operation, and `query` stays read-only so a store never hides a build behind a call the * model expects to return quickly. - * @module dsh-plugin-codegraph-service + * @module @huanlin/dsh-plugin-codegraph-service */ import { Context, Service } from '@deepseek-ai/cordis' diff --git a/packages/service/src/invariant.ts b/packages/service/src/invariant.ts deleted file mode 100644 index a796151..0000000 --- a/packages/service/src/invariant.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Package-owned invariant companion for `dsh-plugin-codegraph-service`. - * @module dsh-plugin-codegraph-service/invariant - */ - -/* jscpd:ignore-start */ -import type { Context } from '@deepseek-ai/cordis' -import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-service' - -/** Cordis companion plugin name. */ -export const name = 'codegraph-invariant' -/** Service required before the companion can reserve package ownership. */ -export const inject = ['invariants'] - -/** - * No runtime invariant: store reservations are private state resolved per query, and the seam emits - * no lifecycle event and exposes no enumerable snapshot to compare an owned relation against. - */ -const install: InvariantInstaller = () => {} - -/** - * Register this package's invariant companion. - * @param ctx - Cordis context carrying the invariant service. - * @returns the installed registration's disposer after setup succeeds. - */ -export const apply = (ctx: Context): Promise<() => void> => - Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install)) -/* jscpd:ignore-end */ diff --git a/packages/service/src/types.ts b/packages/service/src/types.ts index 4c97656..111409d 100644 --- a/packages/service/src/types.ts +++ b/packages/service/src/types.ts @@ -10,7 +10,7 @@ * an independently versioned indexer: a record whose kind this build does not know must still reach * the model as data, not fail the query. `NODE_KINDS`, `EDGE_KINDS`, and `LANGUAGES` document the * values that format defines today. - * @module dsh-plugin-codegraph-service/types + * @module @huanlin/dsh-plugin-codegraph-service/types */ import type { CodegraphIndexerId, CodegraphNodeId, CodegraphStoreId } from './brand.ts' diff --git a/packages/service/tests/invariant.spec.ts b/packages/service/tests/invariant.spec.ts deleted file mode 100644 index ea13f27..0000000 --- a/packages/service/tests/invariant.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import { Context } from '@deepseek-ai/cordis' -import { InvariantRegistry } from '@deepseek-ai/dsh-invariants' -import { apply, inject, name } from '../src/invariant.ts' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-service' - -async function seam(): Promise { - const ctx = new Context() - await ctx.plugin(InvariantRegistry) - return ctx -} - -describe('service invariant companion', () => { - it('names itself and declares its invariants dependency', () => { - expect(name).toBe('codegraph-invariant') - expect(inject).toEqual(['invariants']) - }) - - it('registers the package invariant and hands back a working disposer', async () => { - const ctx = await seam() - const registerSpy = vi.spyOn(ctx.invariants, 'register') - - const dispose = await apply(ctx) - - expect(registerSpy).toHaveBeenCalledWith(PACKAGE_NAME, expect.any(Function)) - expect(dispose).toBeTypeOf('function') - await dispose() - }) -}) diff --git a/packages/sqlite/README.md b/packages/sqlite/README.md index cd7ccf7..40fa92c 100644 --- a/packages/sqlite/README.md +++ b/packages/sqlite/README.md @@ -1,6 +1,6 @@ -# dsh-plugin-codegraph-sqlite +# @huanlin/dsh-plugin-codegraph-sqlite -Read-only SQLite store for the code-graph seam. Serves structural queries from the schema-v4 graph at `.codegraph/codegraph.db` — the same on-disk format the `codegraph` CLI writes — opening it read-only and gating on its recorded format version. +Read-only SQLite store for the code-graph seam. Serves structural queries from the graph at `.codegraph/codegraph.db` — the same on-disk format the `codegraph` CLI writes — opening it read-only and gating on its recorded format version. Reads schema v4 (what `@huanlin/dsh-plugin-codegraph-tree-sitter` builds) and schema v8 (what the `codegraph` CLI ≥1.5 writes); the queries touch only the tables both versions share. Part of **[dsh-plugin-codegraph](https://github.com/CC19990113/dsh-plugin-codegraph)** — structural code intelligence for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). diff --git a/packages/sqlite/package.json b/packages/sqlite/package.json index f411380..18328be 100644 --- a/packages/sqlite/package.json +++ b/packages/sqlite/package.json @@ -1,6 +1,6 @@ { - "name": "dsh-plugin-codegraph-sqlite", - "version": "0.1.6", + "name": "@huanlin/dsh-plugin-codegraph-sqlite", + "version": "0.1.8", "description": "Read-only SQLite store for the DeepSeek Harness code-graph seam — serves structural queries from the schema-v4 graph at .codegraph/codegraph.db, the same on-disk format the codegraph CLI writes", "keywords": [ "dsh", @@ -18,11 +18,11 @@ "author": "CC ZHAO", "repository": { "type": "git", - "url": "git+https://github.com/CC19990113/dsh-plugin-codegraph.git", + "url": "git+https://github.com/HuanLinOTO/dsh-plugin-codegraph.git", "directory": "packages/sqlite" }, - "homepage": "https://github.com/CC19990113/dsh-plugin-codegraph#readme", - "bugs": "https://github.com/CC19990113/dsh-plugin-codegraph/issues", + "homepage": "https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme", + "bugs": "https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues", "type": "module", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -31,10 +31,6 @@ "types": "./lib/index.d.ts", "default": "./lib/index.js" }, - "./invariant": { - "types": "./lib/invariant.d.ts", - "default": "./lib/invariant.js" - }, "./package.json": "./package.json" }, "files": [ @@ -42,21 +38,20 @@ "lib/**/*.d.ts" ], "publishConfig": { - "access": "public", - "provenance": true + "access": "public" }, "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", - "dsh-plugin-codegraph-service": "workspace:^" + "@huanlin/dsh-plugin-codegraph-service": "workspace:^" }, "peerDependencies": { "@deepseek-ai/cordis": ">=4.0.1", - "@deepseek-ai/dsh-invariants": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6" + "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1", + "@deepseek-ai/dsh-util-values": ">=0.1.2-rc.1" }, "devDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.6", - "@deepseek-ai/dsh-llm": "0.1.0-rc.6" + "@deepseek-ai/dsh-llm": "0.1.2-rc.1", + "@deepseek-ai/dsh-util-values": "0.1.2-rc.1" } } diff --git a/packages/sqlite/src/database.ts b/packages/sqlite/src/database.ts index c2203a5..03b4479 100644 --- a/packages/sqlite/src/database.ts +++ b/packages/sqlite/src/database.ts @@ -6,13 +6,13 @@ * Databases open READ-ONLY. The external indexer may be writing through its own daemon while the * harness reads, so this store never takes a write lock, never recovers a journal, and never repairs * an index it does not own. - * @module dsh-plugin-codegraph-sqlite/database + * @module @huanlin/dsh-plugin-codegraph-sqlite/database */ import { DatabaseSync } from 'node:sqlite' import { statSync } from 'node:fs' import { join } from 'node:path' -import { CodegraphError } from 'dsh-plugin-codegraph-service' +import { CodegraphError } from '@huanlin/dsh-plugin-codegraph-service' /** * Where the external indexer keeps a project's graph, relative to the project root. Fixed by that @@ -22,11 +22,17 @@ import { CodegraphError } from 'dsh-plugin-codegraph-service' export const DATABASE_RELATIVE_PATH = '.codegraph/codegraph.db' /** - * The single on-disk format version this store reads. The format is an external specification, so - * support is a fixed fact rather than a deployment choice; a database at any other version fails - * loud instead of being read through assumptions that no longer hold. + * The on-disk format versions this store reads. The format is an external specification, so support + * is a fixed fact rather than a deployment choice; a database at any other version fails loud + * instead of being read through assumptions that no longer hold. + * + * Two writers share this file, one per version: `@huanlin/dsh-plugin-codegraph-tree-sitter` builds schema v4, + * and the `@colbymchenry/codegraph` CLI (≥1.5, whose daemon may own the same index) stamps schema + * v8 — its `nodes`/`edges`/`files`/`nodes_fts` tables keep every column the store reads and only add + * ones the store never touches (`unresolved_refs` is reshaped, `project_metadata` and + * `name_segment_vocab` are new, and no store query reads any of the three). */ -export const SUPPORTED_FORMAT_VERSION = 4 +export const SUPPORTED_FORMAT_VERSIONS: readonly number[] = [4, 8] /** * The absolute path of a project root's graph database. @@ -108,10 +114,10 @@ export function openGraph(projectRoot: string): DatabaseSync { db.close() throw error } - if (version !== SUPPORTED_FORMAT_VERSION) { + if (!SUPPORTED_FORMAT_VERSIONS.includes(version)) { db.close() throw new CodegraphError( - `the code graph at "${path}" is format version ${version}; this store reads version ${SUPPORTED_FORMAT_VERSION}`, + `the code graph at "${path}" is format version ${version}; this store reads version ${SUPPORTED_FORMAT_VERSIONS.join(' or ')}`, 'CODEGRAPH_UNSUPPORTED_FORMAT', ) } diff --git a/packages/sqlite/src/index.ts b/packages/sqlite/src/index.ts index b4c96ab..450079f 100644 --- a/packages/sqlite/src/index.ts +++ b/packages/sqlite/src/index.ts @@ -11,20 +11,20 @@ * * Namespace plugin (named exports, no default export). Lifecycle is effect-scoped: disposal * unregisters from `ctx.codegraph` first, then closes every open connection. - * @module dsh-plugin-codegraph-sqlite + * @module @huanlin/dsh-plugin-codegraph-sqlite */ import { access } from 'node:fs/promises' import type { Context } from '@deepseek-ai/cordis' import z from '@deepseek-ai/schemastery' -import { CodegraphStoreId } from 'dsh-plugin-codegraph-service' +import { CodegraphStoreId } from '@huanlin/dsh-plugin-codegraph-service' import type { CodegraphRequest, CodegraphResultFor, CodegraphStoreProvider, -} from 'dsh-plugin-codegraph-service' -import type {} from 'dsh-plugin-codegraph-service' -import { assertNever } from '@deepseek-ai/dsh-llm' +} from '@huanlin/dsh-plugin-codegraph-service' +import type {} from '@huanlin/dsh-plugin-codegraph-service' +import { assertNever } from '@deepseek-ai/dsh-util-values' import { GraphPool, databasePath } from './database.ts' import { files, impact, node, relations, search, status, trace } from './queries.ts' import { walkImpact, walkTrace } from './traverse.ts' @@ -32,7 +32,7 @@ import { walkImpact, walkTrace } from './traverse.ts' export { DATABASE_RELATIVE_PATH, GraphPool, - SUPPORTED_FORMAT_VERSION, + SUPPORTED_FORMAT_VERSIONS, databasePath, openGraph, } from './database.ts' diff --git a/packages/sqlite/src/invariant.ts b/packages/sqlite/src/invariant.ts deleted file mode 100644 index 71e9bd7..0000000 --- a/packages/sqlite/src/invariant.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Package-owned invariant companion for `dsh-plugin-codegraph-sqlite`. - * @module dsh-plugin-codegraph-sqlite/invariant - */ - -/* jscpd:ignore-start */ -import type { Context } from '@deepseek-ai/cordis' -import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-sqlite' - -/** Cordis companion plugin name. */ -export const name = 'codegraph-sqlite-invariant' -/** Service required before the companion can reserve package ownership. */ -export const inject = ['invariants'] - -/** - * No runtime invariant: the store owns no mutable harness data and emits no event. Its connection - * pool is private, and the graph it reads is a file another tool writes, so there is no owned - * relation between two harness-visible values to compare. - */ -const install: InvariantInstaller = () => {} - -/** - * Register this package's invariant companion. - * @param ctx - Cordis context carrying the invariant service. - * @returns the installed registration's disposer after setup succeeds. - */ -export const apply = (ctx: Context): Promise<() => void> => - Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install)) -/* jscpd:ignore-end */ diff --git a/packages/sqlite/src/queries.ts b/packages/sqlite/src/queries.ts index 1cdcd30..40bad8b 100644 --- a/packages/sqlite/src/queries.ts +++ b/packages/sqlite/src/queries.ts @@ -2,13 +2,13 @@ * The eight seam operations against one open graph database. Every function here is synchronous: * `node:sqlite` is a synchronous binding, so a query either completes within one turn or throws, * and the store's async surface exists for the seam's contract rather than for I/O interleaving. - * @module dsh-plugin-codegraph-sqlite/queries + * @module @huanlin/dsh-plugin-codegraph-sqlite/queries */ import { statSync } from 'node:fs' import { join } from 'node:path' import type { DatabaseSync } from 'node:sqlite' -import { CodegraphError } from 'dsh-plugin-codegraph-service' +import { CodegraphError } from '@huanlin/dsh-plugin-codegraph-service' import type { CodegraphCalleesRequest, CodegraphCallersRequest, @@ -29,8 +29,7 @@ import type { CodegraphTraceHop, CodegraphTraceRequest, CodegraphTraceResult, -} from 'dsh-plugin-codegraph-service' -import { SUPPORTED_FORMAT_VERSION } from './database.ts' +} from '@huanlin/dsh-plugin-codegraph-service' import type { ImpactWalk, TraceWalk } from './traverse.ts' import { toEdge, toFile, toNode } from './rows.ts' import type { NodeRow } from './rows.ts' @@ -379,7 +378,10 @@ export function status(db: DatabaseSync, projectRoot: string, maxStalenessChecks nodeCount: scalar(db, 'SELECT count(*) AS c FROM nodes'), edgeCount: scalar(db, 'SELECT count(*) AS c FROM edges'), languages, - formatVersion: SUPPORTED_FORMAT_VERSION, + // The version actually recorded on disk, not the store's support ceiling: two writers stamp + // different supported versions (tree-sitter writes v4, the CLI writes v8), so echoing the + // database's own row is the honest answer. + formatVersion: scalar(db, 'SELECT MAX(version) AS version FROM schema_versions'), indexedAt: indexedAt === 0 ? null : indexedAt, staleFileCount, staleFileCountTruncated, diff --git a/packages/sqlite/src/rows.ts b/packages/sqlite/src/rows.ts index 80d9b90..fc643bf 100644 --- a/packages/sqlite/src/rows.ts +++ b/packages/sqlite/src/rows.ts @@ -3,11 +3,11 @@ * from a file an independently versioned indexer wrote, so each field is checked before it becomes a * typed record; a row that violates the format fails loud as `CODEGRAPH_MALFORMED_INDEX` rather than * reaching a consumer as a plausible-looking wrong value. - * @module dsh-plugin-codegraph-sqlite/rows + * @module @huanlin/dsh-plugin-codegraph-sqlite/rows */ -import { CodegraphError, CodegraphNodeId } from 'dsh-plugin-codegraph-service' -import type { CodegraphEdge, CodegraphFile, CodegraphNode } from 'dsh-plugin-codegraph-service' +import { CodegraphError, CodegraphNodeId } from '@huanlin/dsh-plugin-codegraph-service' +import type { CodegraphEdge, CodegraphFile, CodegraphNode } from '@huanlin/dsh-plugin-codegraph-service' /** One `nodes` row as `node:sqlite` returns it, before validation. */ export type NodeRow = Record diff --git a/packages/sqlite/src/sql.ts b/packages/sqlite/src/sql.ts index 141a642..b8d2010 100644 --- a/packages/sqlite/src/sql.ts +++ b/packages/sqlite/src/sql.ts @@ -6,7 +6,7 @@ * Ranking is expressed in SQL rather than in TypeScript so ordering and truncation happen in the * same statement: a `LIMIT` must keep the most relevant matches, which it can only do if the * database already knows the order. - * @module dsh-plugin-codegraph-sqlite/sql + * @module @huanlin/dsh-plugin-codegraph-sqlite/sql */ /** Every `nodes` column {@link toNode} reads, aliased `n`. */ diff --git a/packages/sqlite/src/traverse.ts b/packages/sqlite/src/traverse.ts index b55dc5f..92d3d42 100644 --- a/packages/sqlite/src/traverse.ts +++ b/packages/sqlite/src/traverse.ts @@ -9,7 +9,7 @@ */ import type { DatabaseSync } from 'node:sqlite' -import type { CodegraphNodeId } from 'dsh-plugin-codegraph-service' +import type { CodegraphNodeId } from '@huanlin/dsh-plugin-codegraph-service' /** * The relationships that carry dependency for `impact`. `contains` is deliberately absent: a diff --git a/packages/sqlite/tests/invariant.spec.ts b/packages/sqlite/tests/invariant.spec.ts deleted file mode 100644 index eda7447..0000000 --- a/packages/sqlite/tests/invariant.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import { Context } from '@deepseek-ai/cordis' -import { InvariantRegistry } from '@deepseek-ai/dsh-invariants' -import { apply, inject, name } from '../src/invariant.ts' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-sqlite' - -async function seam(): Promise { - const ctx = new Context() - await ctx.plugin(InvariantRegistry) - return ctx -} - -describe('sqlite invariant companion', () => { - it('names itself and declares its invariants dependency', () => { - expect(name).toBe('codegraph-sqlite-invariant') - expect(inject).toEqual(['invariants']) - }) - - it('registers the package invariant and hands back a working disposer', async () => { - const ctx = await seam() - const registerSpy = vi.spyOn(ctx.invariants, 'register') - - const dispose = await apply(ctx) - - expect(registerSpy).toHaveBeenCalledWith(PACKAGE_NAME, expect.any(Function)) - expect(dispose).toBeTypeOf('function') - await dispose() - }) -}) diff --git a/packages/sqlite/tests/store.spec.ts b/packages/sqlite/tests/store.spec.ts index 05435fc..aef75a4 100644 --- a/packages/sqlite/tests/store.spec.ts +++ b/packages/sqlite/tests/store.spec.ts @@ -3,8 +3,8 @@ import { join } from 'node:path' import { DatabaseSync } from 'node:sqlite' import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' -import Codegraph, { CodegraphNodeId } from 'dsh-plugin-codegraph-service' -import type { CodegraphError } from 'dsh-plugin-codegraph-service' +import Codegraph, { CodegraphNodeId } from '@huanlin/dsh-plugin-codegraph-service' +import type { CodegraphError } from '@huanlin/dsh-plugin-codegraph-service' import * as CodegraphSqlite from '../src/index.ts' import { DATABASE_RELATIVE_PATH, GraphPool, databasePath, openGraph } from '../src/database.ts' import { toEdge, toFile, toNode } from '../src/rows.ts' @@ -73,6 +73,20 @@ describe('graph database', () => { ) }) + it('serves a schema-v8 database the codegraph CLI wrote', async () => { + // The CLI (≥1.5) stamps v8: same nodes/edges/files/fts shape the store reads, plus columns and + // tables (unresolved_refs reshaped, project_metadata, name_segment_vocab) no store query touches. + // The fixture's stand-in keeps the shared tables and stamps v8, which is exactly the surface the + // store's SQL reaches. + const root = await project({ ...SEED, formatVersion: 8 }) + const db = openGraph(root) + const summary = status(db, root, 100) + expect(summary.formatVersion).toBe(8) + expect(search(db, { operation: 'search', ...AT(root), query: 'helper', limit: 5 }).nodes.length) + .toBeGreaterThan(0) + db.close() + }) + it('refuses a graph that records no version at all', async () => { const root = await project({}) const db = new DatabaseSync(databasePath(root)) diff --git a/packages/sqlite/tsconfig.json b/packages/sqlite/tsconfig.json index 829278e..f6c9908 100644 --- a/packages/sqlite/tsconfig.json +++ b/packages/sqlite/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { // The base's cross-package `paths` map (source-to-source, for vitest's // module-singleton resolution) is intentionally cleared here: `tsc -b` - // must resolve `dsh-plugin-codegraph-service` through the normal + // must resolve `@huanlin/dsh-plugin-codegraph-service` through the normal // node_modules/project-reference route (its built `lib/*.d.ts`), or this // composite project would pull the other package's `src/*.ts` into its // own program and violate `rootDir`. diff --git a/packages/tool/README.md b/packages/tool/README.md index 6ed8e39..0512c5a 100644 --- a/packages/tool/README.md +++ b/packages/tool/README.md @@ -1,4 +1,4 @@ -# dsh-plugin-codegraph-tool +# @huanlin/dsh-plugin-codegraph-tool The model-facing tools: a read-only `codegraph` tool with ten structural query operations, plus a `codegraph_index` tool that builds or refreshes the index on its own, much larger timeout budget. diff --git a/packages/tool/package.json b/packages/tool/package.json index f224674..debd221 100644 --- a/packages/tool/package.json +++ b/packages/tool/package.json @@ -1,6 +1,6 @@ { - "name": "dsh-plugin-codegraph-tool", - "version": "0.1.6", + "name": "@huanlin/dsh-plugin-codegraph-tool", + "version": "0.1.8", "description": "Model-facing codegraph tools for DeepSeek Harness — a read-only codegraph tool with ten structural query operations plus a codegraph_index tool that builds or refreshes the index on its own timeout budget", "keywords": [ "dsh", @@ -20,11 +20,11 @@ "author": "CC ZHAO", "repository": { "type": "git", - "url": "git+https://github.com/CC19990113/dsh-plugin-codegraph.git", + "url": "git+https://github.com/HuanLinOTO/dsh-plugin-codegraph.git", "directory": "packages/tool" }, - "homepage": "https://github.com/CC19990113/dsh-plugin-codegraph#readme", - "bugs": "https://github.com/CC19990113/dsh-plugin-codegraph/issues", + "homepage": "https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme", + "bugs": "https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues", "type": "module", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -33,10 +33,6 @@ "types": "./lib/index.d.ts", "default": "./lib/index.js" }, - "./invariant": { - "types": "./lib/invariant.d.ts", - "default": "./lib/invariant.js" - }, "./package.json": "./package.json" }, "files": [ @@ -44,31 +40,30 @@ "lib/**/*.d.ts" ], "publishConfig": { - "access": "public", - "provenance": true + "access": "public" }, "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", - "dsh-plugin-codegraph-service": "workspace:^" + "@huanlin/dsh-plugin-codegraph-service": "workspace:^" }, "peerDependencies": { "@deepseek-ai/cordis": ">=4.0.1", - "@deepseek-ai/dsh-fs": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-invariants": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-system-prompt": ">=0.1.0-rc.6", + "@deepseek-ai/dsh-fs": ">=0.1.2-rc.1", + "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1", + "@deepseek-ai/dsh-system-prompt": ">=0.1.2-rc.1", "@deepseek-ai/dsh-timeout": ">=0.1.0-rc.6", - "@deepseek-ai/dsh-tools": ">=0.1.0-rc.6" + "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1", + "@deepseek-ai/dsh-util-values": ">=0.1.2-rc.1" }, "devDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "0.1.0-rc.6", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.6", - "@deepseek-ai/dsh-llm": "0.1.0-rc.6", - "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.6", - "@deepseek-ai/dsh-timeout": "0.1.0-rc.6", - "@deepseek-ai/dsh-tools": "0.1.0-rc.6", - "dsh-plugin-codegraph-sqlite": "workspace:^", - "dsh-plugin-codegraph-tree-sitter": "workspace:^" + "@deepseek-ai/dsh-fs": "0.1.2-rc.1", + "@deepseek-ai/dsh-llm": "0.1.2-rc.1", + "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1", + "@deepseek-ai/dsh-timeout": "0.1.2-rc.1", + "@deepseek-ai/dsh-tools": "0.1.2-rc.1", + "@deepseek-ai/dsh-util-values": "0.1.2-rc.1", + "@huanlin/dsh-plugin-codegraph-sqlite": "workspace:^", + "@huanlin/dsh-plugin-codegraph-tree-sitter": "workspace:^" } } diff --git a/packages/tool/src/compose.ts b/packages/tool/src/compose.ts index 9df0063..f1b415f 100644 --- a/packages/tool/src/compose.ts +++ b/packages/tool/src/compose.ts @@ -2,10 +2,10 @@ * The two operations that are not seam queries. `explore` and `context` compose the graph primitives * with `ctx.fs` reads, which is why they live in the consumer: a graph store returns positions and * cannot reach a remote workspace's bytes, so aggregation belongs to the role that holds both. - * @module dsh-plugin-codegraph-tool/compose + * @module @huanlin/dsh-plugin-codegraph-tool/compose */ -import type { CodegraphNode, CodegraphRelation } from 'dsh-plugin-codegraph-service' +import type { CodegraphNode, CodegraphRelation } from '@huanlin/dsh-plugin-codegraph-service' /** Words a task description contributes no search signal through. */ const STOPWORDS = new Set([ diff --git a/packages/tool/src/index.ts b/packages/tool/src/index.ts index 582c2ab..1587644 100644 --- a/packages/tool/src/index.ts +++ b/packages/tool/src/index.ts @@ -13,18 +13,18 @@ * `systemPrompt`, and import no store. * * Namespace plugin (named exports, no default export). - * @module dsh-plugin-codegraph-tool + * @module @huanlin/dsh-plugin-codegraph-tool */ import type { Context } from '@deepseek-ai/cordis' import z from '@deepseek-ai/schemastery' import { defineTool } from '@deepseek-ai/dsh-tools' import type { ToolExecution } from '@deepseek-ai/dsh-tools' -import { CodegraphError } from 'dsh-plugin-codegraph-service' -import type { CodegraphNode, CodegraphRelation } from 'dsh-plugin-codegraph-service' +import { CodegraphError } from '@huanlin/dsh-plugin-codegraph-service' +import type { CodegraphNode, CodegraphRelation } from '@huanlin/dsh-plugin-codegraph-service' import type {} from '@deepseek-ai/dsh-fs' import type {} from '@deepseek-ai/dsh-system-prompt' -import { assertNever } from '@deepseek-ai/dsh-llm' +import { assertNever } from '@deepseek-ai/dsh-util-values' import { MAX_TIMER_DELAY_MS } from '@deepseek-ai/dsh-timeout' import { declarationsOnly, groupByFile, mergeByHits, mergeRelations, taskTerms } from './compose.ts' import type { FileGroup } from './compose.ts' diff --git a/packages/tool/src/invariant.ts b/packages/tool/src/invariant.ts deleted file mode 100644 index 51fa862..0000000 --- a/packages/tool/src/invariant.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Package-owned invariant companion for `dsh-plugin-codegraph-tool`. - * @module dsh-plugin-codegraph-tool/invariant - */ - -/* jscpd:ignore-start */ -import type { Context } from '@deepseek-ai/cordis' -import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-tool' - -/** Cordis companion plugin name. */ -export const name = 'tool-codegraph-invariant' -/** Service required before the companion can reserve package ownership. */ -export const inject = ['invariants'] - -/** - * No runtime invariant: this stateless adapter contributes one tool and prompt section, while graph - * query results and source retrieval remain owned by the codegraph and filesystem seams it composes. - */ -const install: InvariantInstaller = () => {} - -/** - * Register this package's invariant companion. - * @param ctx - Cordis context carrying the invariant service. - * @returns the installed registration's disposer after setup succeeds. - */ -export const apply = (ctx: Context): Promise<() => void> => - Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install)) -/* jscpd:ignore-end */ diff --git a/packages/tool/src/projection.ts b/packages/tool/src/projection.ts index 31e12ff..0f48e73 100644 --- a/packages/tool/src/projection.ts +++ b/packages/tool/src/projection.ts @@ -3,7 +3,7 @@ * describes a graph while the model's describes code: `filePath`/`startLine` become `path`/`line`, * an edge's kind becomes `via`, and the fields a model cannot act on — opaque node ids, index * timestamps, provenance — are dropped rather than spent as tokens. - * @module dsh-plugin-codegraph-tool/projection + * @module @huanlin/dsh-plugin-codegraph-tool/projection */ import type { @@ -11,7 +11,7 @@ import type { CodegraphNode, CodegraphRelation, CodegraphTraceHop, -} from 'dsh-plugin-codegraph-service' +} from '@huanlin/dsh-plugin-codegraph-service' /** Caps applied while projecting, so one enormous doc comment cannot dominate a result. */ export interface ProjectionLimits { diff --git a/packages/tool/src/render.ts b/packages/tool/src/render.ts index bec17a7..dc6dd4b 100644 --- a/packages/tool/src/render.ts +++ b/packages/tool/src/render.ts @@ -4,10 +4,10 @@ * Every line leads with `path:line` so a location can be acted on directly, and a truncated answer * always says so — a capped list that reads as complete is worse than a short one, because the model * concludes it has seen everything. - * @module dsh-plugin-codegraph-tool/render + * @module @huanlin/dsh-plugin-codegraph-tool/render */ -import { assertNever } from '@deepseek-ai/dsh-llm' +import { assertNever } from '@deepseek-ai/dsh-util-values' import type { CodegraphToolValue } from './schema.ts' /** A symbol as one scannable line. */ diff --git a/packages/tool/src/schema.ts b/packages/tool/src/schema.ts index 79a2981..729b2fe 100644 --- a/packages/tool/src/schema.ts +++ b/packages/tool/src/schema.ts @@ -6,7 +6,7 @@ * optional, so a Code Mode program that switches on `operation` gets exactly the fields that * operation produces and nothing it must test for. Members are built from shared field groups * because ten hand-written copies of a symbol projection would drift apart. - * @module dsh-plugin-codegraph-tool/schema + * @module @huanlin/dsh-plugin-codegraph-tool/schema */ import type { InferArgs, InferValue } from '@deepseek-ai/dsh-tools' diff --git a/packages/tool/src/source.ts b/packages/tool/src/source.ts index a2e9931..d8e81f4 100644 --- a/packages/tool/src/source.ts +++ b/packages/tool/src/source.ts @@ -7,7 +7,7 @@ * A read that fails is not an error here. The graph names a file the index recorded, which may since * have been renamed or deleted; the honest answer is the symbols with `code: null`, not a failed * query. - * @module dsh-plugin-codegraph-tool/source + * @module @huanlin/dsh-plugin-codegraph-tool/source */ import type { Context } from '@deepseek-ai/cordis' diff --git a/packages/tool/tests/invariant.spec.ts b/packages/tool/tests/invariant.spec.ts deleted file mode 100644 index cfd06e0..0000000 --- a/packages/tool/tests/invariant.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import { Context } from '@deepseek-ai/cordis' -import { InvariantRegistry } from '@deepseek-ai/dsh-invariants' -import { apply, inject, name } from '../src/invariant.ts' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-tool' - -async function seam(): Promise { - const ctx = new Context() - await ctx.plugin(InvariantRegistry) - return ctx -} - -describe('tool invariant companion', () => { - it('names itself and declares its invariants dependency', () => { - expect(name).toBe('tool-codegraph-invariant') - expect(inject).toEqual(['invariants']) - }) - - it('registers the package invariant and hands back a working disposer', async () => { - const ctx = await seam() - const registerSpy = vi.spyOn(ctx.invariants, 'register') - - const dispose = await apply(ctx) - - expect(registerSpy).toHaveBeenCalledWith(PACKAGE_NAME, expect.any(Function)) - expect(dispose).toBeTypeOf('function') - await dispose() - }) -}) diff --git a/packages/tool/tests/live-tool.spec.ts b/packages/tool/tests/live-tool.spec.ts index 897be24..fdc8b5a 100644 --- a/packages/tool/tests/live-tool.spec.ts +++ b/packages/tool/tests/live-tool.spec.ts @@ -10,16 +10,16 @@ import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' import Loader from '@deepseek-ai/cordis-plugin-loader' import Include from '@deepseek-ai/cordis-plugin-include' -import { CallId } from '@deepseek-ai/dsh-llm' +import { ToolCallId } from '@deepseek-ai/dsh-llm' import { SESSION_FORMAT_VERSION, Session, SessionId } from '@deepseek-ai/dsh-session' import AgentRegistry, { Inbox } from '@deepseek-ai/dsh-agent' import type { Agent } from '@deepseek-ai/dsh-agent' import SystemPrompt from '@deepseek-ai/dsh-system-prompt' import ToolRuntime from '@deepseek-ai/dsh-tools' -import Codegraph from 'dsh-plugin-codegraph-service' +import Codegraph from '@huanlin/dsh-plugin-codegraph-service' import * as FsLocal from '@deepseek-ai/dsh-fs-local' -import * as CodegraphSqlite from 'dsh-plugin-codegraph-sqlite' -import * as ToolCodegraph from 'dsh-plugin-codegraph-tool' +import * as CodegraphSqlite from '@huanlin/dsh-plugin-codegraph-sqlite' +import * as ToolCodegraph from '@huanlin/dsh-plugin-codegraph-tool' // Opt-in: point DSH_CODEGRAPH_LIVE_ROOT at a workspace the external codegraph CLI has indexed. const WORKSPACE = process.env['DSH_CODEGRAPH_LIVE_ROOT'] ?? '' @@ -46,9 +46,9 @@ describe.skipIf(!present)('tool-codegraph against a live external index', () => "- name: '@deepseek-ai/dsh-fs-local'", ' config:', ` cwd: ${JSON.stringify(WORKSPACE)}`, - "- name: 'dsh-plugin-codegraph-service'", - "- name: 'dsh-plugin-codegraph-sqlite'", - "- name: 'dsh-plugin-codegraph-tool'", + "- name: '@huanlin/dsh-plugin-codegraph-service'", + "- name: '@huanlin/dsh-plugin-codegraph-sqlite'", + "- name: '@huanlin/dsh-plugin-codegraph-tool'", '', ].join('\n')) @@ -62,9 +62,9 @@ describe.skipIf(!present)('tool-codegraph against a live external index', () => ['@deepseek-ai/dsh-system-prompt', SystemPrompt], ['@deepseek-ai/dsh-tools', ToolRuntime], ['@deepseek-ai/dsh-fs-local', FsLocal], - ['dsh-plugin-codegraph-service', Codegraph], - ['dsh-plugin-codegraph-sqlite', CodegraphSqlite], - ['dsh-plugin-codegraph-tool', ToolCodegraph], + ['@huanlin/dsh-plugin-codegraph-service', Codegraph], + ['@huanlin/dsh-plugin-codegraph-sqlite', CodegraphSqlite], + ['@huanlin/dsh-plugin-codegraph-tool', ToolCodegraph], ]) ctx.loader.internal = { version: 'v2', @@ -78,7 +78,7 @@ describe.skipIf(!present)('tool-codegraph against a live external index', () => const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-live') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd: WORKSPACE }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd: WORKSPACE, isSeeded: false }) const owner: Agent = { id, options: {}, @@ -112,7 +112,7 @@ describe.skipIf(!present)('tool-codegraph against a live external index', () => for (const [index, args] of calls.entries()) { const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(`live-${index}`), + callId: ToolCallId(`live-${index}`), name: 'codegraph', arguments: args, agent: owner, diff --git a/packages/tool/tests/loader-composition.spec.ts b/packages/tool/tests/loader-composition.spec.ts index c886608..35e66c7 100644 --- a/packages/tool/tests/loader-composition.spec.ts +++ b/packages/tool/tests/loader-composition.spec.ts @@ -8,17 +8,17 @@ import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' import Loader from '@deepseek-ai/cordis-plugin-loader' import Include from '@deepseek-ai/cordis-plugin-include' -import { CallId } from '@deepseek-ai/dsh-llm' +import { ToolCallId } from '@deepseek-ai/dsh-llm' import { SESSION_FORMAT_VERSION, Session, SessionId } from '@deepseek-ai/dsh-session' import AgentRegistry, { Inbox } from '@deepseek-ai/dsh-agent' import type { Agent } from '@deepseek-ai/dsh-agent' import SystemPrompt from '@deepseek-ai/dsh-system-prompt' import ToolRuntime from '@deepseek-ai/dsh-tools' -import Codegraph from 'dsh-plugin-codegraph-service' +import Codegraph from '@huanlin/dsh-plugin-codegraph-service' import * as FsLocal from '@deepseek-ai/dsh-fs-local' -import * as CodegraphSqlite from 'dsh-plugin-codegraph-sqlite' -import * as CodegraphTreeSitter from 'dsh-plugin-codegraph-tree-sitter' -import * as ToolCodegraph from 'dsh-plugin-codegraph-tool' +import * as CodegraphSqlite from '@huanlin/dsh-plugin-codegraph-sqlite' +import * as CodegraphTreeSitter from '@huanlin/dsh-plugin-codegraph-tree-sitter' +import * as ToolCodegraph from '@huanlin/dsh-plugin-codegraph-tool' import { seedProject } from '../../sqlite/tests/fixture.ts' import { writeFile } from 'node:fs/promises' import { join } from 'node:path' @@ -63,7 +63,7 @@ const SEED = { function agent(ctx: Context, cwd: string): Agent { const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-loader-agent') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd, isSeeded: false }) const value: Agent = { id, options: {}, @@ -102,9 +102,9 @@ async function boot(projectRoot: string, toolConfigLines: readonly string[] = [] "- name: '@deepseek-ai/dsh-fs-local'", ' config:', ` cwd: ${JSON.stringify(projectRoot)}`, - "- name: 'dsh-plugin-codegraph-service'", - "- name: 'dsh-plugin-codegraph-sqlite'", - "- name: 'dsh-plugin-codegraph-tool'", + "- name: '@huanlin/dsh-plugin-codegraph-service'", + "- name: '@huanlin/dsh-plugin-codegraph-sqlite'", + "- name: '@huanlin/dsh-plugin-codegraph-tool'", ...toolConfigLines.length > 0 ? [' config:', ...toolConfigLines] : [], '', ].join('\n')) @@ -119,9 +119,9 @@ async function boot(projectRoot: string, toolConfigLines: readonly string[] = [] ['@deepseek-ai/dsh-system-prompt', SystemPrompt], ['@deepseek-ai/dsh-tools', ToolRuntime], ['@deepseek-ai/dsh-fs-local', FsLocal], - ['dsh-plugin-codegraph-service', Codegraph], - ['dsh-plugin-codegraph-sqlite', CodegraphSqlite], - ['dsh-plugin-codegraph-tool', ToolCodegraph], + ['@huanlin/dsh-plugin-codegraph-service', Codegraph], + ['@huanlin/dsh-plugin-codegraph-sqlite', CodegraphSqlite], + ['@huanlin/dsh-plugin-codegraph-tool', ToolCodegraph], ]) ctx.loader.internal = { version: 'v2', @@ -138,7 +138,7 @@ async function boot(projectRoot: string, toolConfigLines: readonly string[] = [] async function call(ctx: Context, owner: Agent, args: Record, id = 'call') { return ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(id), + callId: ToolCallId(id), name: 'codegraph', arguments: args, agent: owner, @@ -252,12 +252,12 @@ async function bootWithIndexer(projectRoot: string): Promise { "- name: '@deepseek-ai/dsh-fs-local'", ' config:', ` cwd: ${JSON.stringify(projectRoot)}`, - "- name: 'dsh-plugin-codegraph-service'", - "- name: 'dsh-plugin-codegraph-sqlite'", - "- name: 'dsh-plugin-codegraph-tree-sitter'", + "- name: '@huanlin/dsh-plugin-codegraph-service'", + "- name: '@huanlin/dsh-plugin-codegraph-sqlite'", + "- name: '@huanlin/dsh-plugin-codegraph-tree-sitter'", ' config:', ' watch: false', // this test exercises Loader composition, not live watching - "- name: 'dsh-plugin-codegraph-tool'", + "- name: '@huanlin/dsh-plugin-codegraph-tool'", '', ].join('\n')) @@ -271,10 +271,10 @@ async function bootWithIndexer(projectRoot: string): Promise { ['@deepseek-ai/dsh-system-prompt', SystemPrompt], ['@deepseek-ai/dsh-tools', ToolRuntime], ['@deepseek-ai/dsh-fs-local', FsLocal], - ['dsh-plugin-codegraph-service', Codegraph], - ['dsh-plugin-codegraph-sqlite', CodegraphSqlite], - ['dsh-plugin-codegraph-tree-sitter', CodegraphTreeSitter], - ['dsh-plugin-codegraph-tool', ToolCodegraph], + ['@huanlin/dsh-plugin-codegraph-service', Codegraph], + ['@huanlin/dsh-plugin-codegraph-sqlite', CodegraphSqlite], + ['@huanlin/dsh-plugin-codegraph-tree-sitter', CodegraphTreeSitter], + ['@huanlin/dsh-plugin-codegraph-tool', ToolCodegraph], ]) ctx.loader.internal = { version: 'v2', @@ -309,7 +309,7 @@ describe('codegraph_index real Loader composition through cordis.yml', () => { const indexResult = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId('index'), + callId: ToolCallId('index'), name: 'codegraph_index', arguments: {}, agent: owner, diff --git a/packages/tool/tests/tool-codegraph.spec.ts b/packages/tool/tests/tool-codegraph.spec.ts index 814ea7f..99967d2 100644 --- a/packages/tool/tests/tool-codegraph.spec.ts +++ b/packages/tool/tests/tool-codegraph.spec.ts @@ -3,15 +3,15 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' -import { CallId } from '@deepseek-ai/dsh-llm' +import { ToolCallId } from '@deepseek-ai/dsh-llm' import { SESSION_FORMAT_VERSION, Session, SessionId } from '@deepseek-ai/dsh-session' import AgentRegistry, { Inbox } from '@deepseek-ai/dsh-agent' import type { Agent } from '@deepseek-ai/dsh-agent' import SystemPrompt from '@deepseek-ai/dsh-system-prompt' import ToolRuntime from '@deepseek-ai/dsh-tools' import LocalFileSystem from '@deepseek-ai/dsh-fs-local' -import Codegraph, { CodegraphIndexerId, CodegraphNodeId, CodegraphStoreId } from 'dsh-plugin-codegraph-service' -import type { CodegraphIndexReport, CodegraphNode, CodegraphRequest, CodegraphStoreProvider } from 'dsh-plugin-codegraph-service' +import Codegraph, { CodegraphIndexerId, CodegraphNodeId, CodegraphStoreId } from '@huanlin/dsh-plugin-codegraph-service' +import type { CodegraphIndexReport, CodegraphNode, CodegraphRequest, CodegraphStoreProvider } from '@huanlin/dsh-plugin-codegraph-service' import * as ToolCodegraph from '../src/index.ts' import { callTitle, projectRoot } from '../src/index.ts' import { declarationsOnly, groupByFile, mergeByHits, mergeRelations, taskTerms } from '../src/compose.ts' @@ -459,7 +459,7 @@ describe('the tool plugin', () => { function agent(ctx: Context, cwd: string): Agent { const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-unit') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd, isSeeded: false }) const value: Agent = { id, options: {}, session, inbox: new Inbox(session, { inserted: () => {}, discarded: () => {}, claimed: () => {} }), @@ -475,7 +475,7 @@ describe('the tool plugin', () => { async function call(ctx: Context, owner: Agent, args: Record, id = 'unit') { return ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(id), + callId: ToolCallId(id), name: 'codegraph', arguments: args, agent: owner, @@ -485,7 +485,7 @@ describe('the tool plugin', () => { async function callIndex(ctx: Context, owner: Agent | undefined, args: Record, id = 'index') { return ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(id), + callId: ToolCallId(id), name: 'codegraph_index', arguments: args, ...owner === undefined ? {} : { agent: owner }, @@ -622,7 +622,7 @@ describe('the tool plugin', () => { const ctx = await mount(root) const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId('no-agent'), + callId: ToolCallId('no-agent'), name: 'codegraph', arguments: { operation: 'status' }, }) @@ -655,7 +655,7 @@ describe('status against a root no store claims', () => { function owner(ctx: Context, cwd: string): Agent { const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-unindexed') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd, isSeeded: false }) const value: Agent = { id, options: {}, session, inbox: new Inbox(session, { inserted: () => {}, discarded: () => {}, claimed: () => {} }), @@ -673,7 +673,7 @@ describe('status against a root no store claims', () => { const ctx = await mountWithoutStore(root) const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId('unindexed-status'), + callId: ToolCallId('unindexed-status'), name: 'codegraph', arguments: { operation: 'status' }, agent: owner(ctx, root), @@ -736,7 +736,7 @@ describe('answers a store returns when nothing resolves', () => { function owner(ctx: Context, cwd: string): Agent { const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-empty') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd, isSeeded: false }) const value: Agent = { id, options: {}, session, inbox: new Inbox(session, { inserted: () => {}, discarded: () => {}, claimed: () => {} }), @@ -760,7 +760,7 @@ describe('answers a store returns when nothing resolves', () => { const ctx = await mountEmpty(root) const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(`empty-${label}`), + callId: ToolCallId(`empty-${label}`), name: 'codegraph', arguments: args, agent: owner(ctx, root), @@ -775,7 +775,7 @@ describe('answers a store returns when nothing resolves', () => { for (const args of [{ operation: 'search', query: 'gone' }, { operation: 'files' }]) { const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId(`bare-${args.operation}`), + callId: ToolCallId(`bare-${args.operation}`), name: 'codegraph', arguments: args, agent: agentValue, @@ -789,7 +789,7 @@ describe('answers a store returns when nothing resolves', () => { const ctx = await mountEmpty(root) const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId('explore-missing'), + callId: ToolCallId('explore-missing'), name: 'codegraph', arguments: { operation: 'explore', query: 'gone' }, agent: owner(ctx, root), @@ -828,7 +828,7 @@ describe('the last shapes a trace answer can take', () => { await ctx.plugin(ToolCodegraph) const scope = ctx.plugin(() => {}) const id = SessionId('codegraph-no-origin') - const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd: root }) + const session = Session.create(id, [], { version: SESSION_FORMAT_VERSION, id, createdAt: 0, cwd: root, isSeeded: false }) const value: Agent = { id, options: {}, session, inbox: new Inbox(session, { inserted: () => {}, discarded: () => {}, claimed: () => {} }), @@ -840,7 +840,7 @@ describe('the last shapes a trace answer can take', () => { ctx.agents.register(value) const result = await ctx.tools.execute({ signal: new AbortController().signal, - callId: CallId('trace-no-origin'), + callId: ToolCallId('trace-no-origin'), name: 'codegraph', arguments: { operation: 'trace', from: 'gone', to: 'main' }, agent: value, diff --git a/packages/tree-sitter/README.md b/packages/tree-sitter/README.md index 089077e..f7aba2f 100644 --- a/packages/tree-sitter/README.md +++ b/packages/tree-sitter/README.md @@ -1,16 +1,16 @@ -# dsh-plugin-codegraph-tree-sitter +# @huanlin/dsh-plugin-codegraph-tree-sitter Self-built code-graph indexer. Parses TypeScript, TSX, JavaScript, JSX, Python, Go, Java, C, C++, C#, PHP, Rust, Ruby, Zig, Kotlin, Swift, Dart, and Scala with `web-tree-sitter` and writes schema version 4 to `.codegraph/codegraph.db`, so a workspace needs no external indexer. Registers only an indexer, never a store. -Part of **[dsh-plugin-codegraph](https://github.com/CC19990113/dsh-plugin-codegraph)** — structural code intelligence for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). +Part of **[dsh-plugin-codegraph](https://github.com/HuanLinOTO/dsh-plugin-codegraph)** — structural code intelligence for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). Most users should install the bundle instead, which mounts this package and its siblings in one layer: ```sh -dsh plugin --profile add dsh-plugin-codegraph +dsh plugin --profile add @huanlin/dsh-plugin-codegraph ``` -See the [project README](https://github.com/CC19990113/dsh-plugin-codegraph#readme) for setup, configuration, and the full tool reference. +See the [project README](https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme) for setup, configuration, and the full tool reference. ## License diff --git a/packages/tree-sitter/package.json b/packages/tree-sitter/package.json index 568fcb9..e1a11ee 100644 --- a/packages/tree-sitter/package.json +++ b/packages/tree-sitter/package.json @@ -1,6 +1,6 @@ { - "name": "dsh-plugin-codegraph-tree-sitter", - "version": "0.1.6", + "name": "@huanlin/dsh-plugin-codegraph-tree-sitter", + "version": "0.1.8", "description": "Self-built code-graph indexer for DeepSeek Harness — parses a workspace with web-tree-sitter and writes schema version 4 to .codegraph/codegraph.db, the same on-disk format the codegraph CLI writes, so no external indexer is required", "keywords": [ "dsh", @@ -20,11 +20,11 @@ "author": "CC ZHAO", "repository": { "type": "git", - "url": "git+https://github.com/CC19990113/dsh-plugin-codegraph.git", + "url": "git+https://github.com/HuanLinOTO/dsh-plugin-codegraph.git", "directory": "packages/tree-sitter" }, - "homepage": "https://github.com/CC19990113/dsh-plugin-codegraph#readme", - "bugs": "https://github.com/CC19990113/dsh-plugin-codegraph/issues", + "homepage": "https://github.com/HuanLinOTO/dsh-plugin-codegraph#readme", + "bugs": "https://github.com/HuanLinOTO/dsh-plugin-codegraph/issues", "type": "module", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -33,10 +33,6 @@ "types": "./lib/index.d.ts", "default": "./lib/index.js" }, - "./invariant": { - "types": "./lib/invariant.d.ts", - "default": "./lib/invariant.js" - }, "./package.json": "./package.json" }, "files": [ @@ -44,21 +40,18 @@ "lib/**/*.d.ts" ], "publishConfig": { - "access": "public", - "provenance": true + "access": "public" }, "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", - "dsh-plugin-codegraph-service": "workspace:^", + "@huanlin/dsh-plugin-codegraph-service": "workspace:^", "tree-sitter-wasms": "^0.1.13", "web-tree-sitter": "^0.25.10" }, "peerDependencies": { - "@deepseek-ai/cordis": ">=4.0.1", - "@deepseek-ai/dsh-invariants": ">=0.1.0-rc.6" + "@deepseek-ai/cordis": ">=4.0.1" }, "devDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.6" + "@deepseek-ai/cordis": "^4.0.1" } } diff --git a/packages/tree-sitter/src/extract.ts b/packages/tree-sitter/src/extract.ts index 4495bbf..1600063 100644 --- a/packages/tree-sitter/src/extract.ts +++ b/packages/tree-sitter/src/extract.ts @@ -5,7 +5,7 @@ * The caller of a call node is the nearest enclosing definition, or the file itself when the call sits * at module top level — the on-disk format records it that way, and a third of the call edges in a * real workspace are of exactly this shape. - * @module dsh-plugin-codegraph-tree-sitter/extract + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/extract */ import type { Node as SyntaxNode, Tree } from 'web-tree-sitter' diff --git a/packages/tree-sitter/src/git-hooks.ts b/packages/tree-sitter/src/git-hooks.ts index 5336ec5..536f781 100644 --- a/packages/tree-sitter/src/git-hooks.ts +++ b/packages/tree-sitter/src/git-hooks.ts @@ -12,7 +12,7 @@ * Resolving *which* `hooksDir` to use — including the "worktrees share one hooks directory" case — is * the caller's job, composed from {@link detectWorktree} in `worktree.ts`; this module only ever * touches the one directory path it is given. - * @module dsh-plugin-codegraph-tree-sitter/git-hooks + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/git-hooks */ import { chmod, mkdir, readFile, writeFile } from 'node:fs/promises' diff --git a/packages/tree-sitter/src/gitignore.ts b/packages/tree-sitter/src/gitignore.ts index acf5066..58368ac 100644 --- a/packages/tree-sitter/src/gitignore.ts +++ b/packages/tree-sitter/src/gitignore.ts @@ -21,7 +21,7 @@ * - character classes (`[abc]`), `?`, and backslash escapes * - git's rule that a negation cannot resurrect a path inside an already-excluded directory: here, * a negation re-includes whatever it matches regardless of ancestor exclusions. - * @module dsh-plugin-codegraph-tree-sitter/gitignore + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/gitignore */ import { readFile } from 'node:fs/promises' diff --git a/packages/tree-sitter/src/grammar.ts b/packages/tree-sitter/src/grammar.ts index 77a5468..e37c629 100644 --- a/packages/tree-sitter/src/grammar.ts +++ b/packages/tree-sitter/src/grammar.ts @@ -7,7 +7,7 @@ * targets loads its full grammar set eagerly and must run its bundled Node with `--liftoff-only` to * survive V8 running out of WASM code space. This harness cannot pass that flag to the Node process * that runs it, so it must never load a grammar the workspace does not use. - * @module dsh-plugin-codegraph-tree-sitter/grammar + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/grammar */ import { createRequire } from 'node:module' diff --git a/packages/tree-sitter/src/index.ts b/packages/tree-sitter/src/index.ts index ba4de9e..88e6bd5 100644 --- a/packages/tree-sitter/src/index.ts +++ b/packages/tree-sitter/src/index.ts @@ -1,7 +1,7 @@ /** * Self-built code-graph indexer for `ctx.codegraph`. Parses a workspace with `web-tree-sitter` and * `tree-sitter-wasms` and writes schema version 4 to `/.codegraph/codegraph.db` — the - * same path and format `dsh-plugin-codegraph-sqlite` reads and the external `codegraph` CLI + * same path and format `@huanlin/dsh-plugin-codegraph-sqlite` reads and the external `codegraph` CLI * writes, so a workspace this package indexes becomes queryable through the existing store with no * second graph format to disagree with the first. * @@ -13,15 +13,15 @@ * Namespace plugin (named exports, no default export). Grammars load lazily, one per language, on * first sight of a matching file, and stay cached for the process — never eagerly for every grammar * this package ships with. - * @module dsh-plugin-codegraph-tree-sitter + * @module @huanlin/dsh-plugin-codegraph-tree-sitter */ import { stat } from 'node:fs/promises' import { join } from 'node:path' import type { Context } from '@deepseek-ai/cordis' import z from '@deepseek-ai/schemastery' -import { CodegraphIndexerId } from 'dsh-plugin-codegraph-service' -import type { CodegraphIndexer, CodegraphIndexReport } from 'dsh-plugin-codegraph-service' +import { CodegraphIndexerId } from '@huanlin/dsh-plugin-codegraph-service' +import type { CodegraphIndexer, CodegraphIndexReport } from '@huanlin/dsh-plugin-codegraph-service' import { LANGUAGE_TABLE } from './languages.ts' import { walkAndExtract } from './walk.ts' import { resolveWorkspace } from './resolve.ts' diff --git a/packages/tree-sitter/src/invariant.ts b/packages/tree-sitter/src/invariant.ts deleted file mode 100644 index 6a9ca48..0000000 --- a/packages/tree-sitter/src/invariant.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Package-owned invariant companion for `dsh-plugin-codegraph-tree-sitter`. - * @module dsh-plugin-codegraph-tree-sitter/invariant - */ - -/* jscpd:ignore-start */ -import type { Context } from '@deepseek-ai/cordis' -import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-tree-sitter' - -/** Cordis companion plugin name. */ -export const name = 'codegraph-tree-sitter-invariant' -/** Service required before the companion can reserve package ownership. */ -export const inject = ['invariants'] - -/** - * No runtime invariant: an indexing run is a one-shot, caller-awaited operation, and the optional file - * watcher this package can start keeps its per-root state (`Watcher` instances, debounce timers, - * pending-path sets) private to the plugin's own closure — never registered on `ctx` or exposed to - * another plugin. There is no cross-plugin relation here for an invariant to describe, only - * process-local bookkeeping the plugin's own `ctx.effect` cleanup already tears down on unload. - */ -const install: InvariantInstaller = () => {} - -/** - * Register this package's invariant companion. - * @param ctx - Cordis context carrying the invariant service. - * @returns the installed registration's disposer after setup succeeds. - */ -export const apply = (ctx: Context): Promise<() => void> => - Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install)) -/* jscpd:ignore-end */ diff --git a/packages/tree-sitter/src/languages.ts b/packages/tree-sitter/src/languages.ts index 3131a32..eb19949 100644 --- a/packages/tree-sitter/src/languages.ts +++ b/packages/tree-sitter/src/languages.ts @@ -6,14 +6,14 @@ * depend on — not every declaration shape a language can produce — because the alternative is porting * the reference indexer's language-specific resolution, which the proposal this package implements * defers until the core proves itself against real workspaces. - * @module dsh-plugin-codegraph-tree-sitter/languages + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/languages */ /** One tree-sitter node type that introduces a declaration, mapped to the seam's `NODE_KINDS`. */ export interface DefinitionRule { /** The tree-sitter node type this rule matches, e.g. `function_declaration`. */ readonly nodeType: string - /** The seam node kind to record, e.g. `function`. See `NODE_KINDS` in `dsh-plugin-codegraph-service`. */ + /** The seam node kind to record, e.g. `function`. See `NODE_KINDS` in `@huanlin/dsh-plugin-codegraph-service`. */ readonly kind: string /** The field holding the declared name; `childForFieldName(nameField)` must be an identifier. */ readonly nameField: string @@ -167,7 +167,7 @@ export interface ImportRule { /** One language grammar this package can load and extract from. */ export interface LanguageSpec { - /** The seam's language label. See `LANGUAGES` in `dsh-plugin-codegraph-service`. */ + /** The seam's language label. See `LANGUAGES` in `@huanlin/dsh-plugin-codegraph-service`. */ readonly language: string /** File extensions routed to this grammar, each including the leading dot. */ readonly extensions: readonly string[] diff --git a/packages/tree-sitter/src/resolve.ts b/packages/tree-sitter/src/resolve.ts index e14dd30..2211794 100644 --- a/packages/tree-sitter/src/resolve.ts +++ b/packages/tree-sitter/src/resolve.ts @@ -14,7 +14,7 @@ * imports (a known external origin the specifier just didn't resolve) — both real code that was never a * candidate for a workspace edge, as against a bare, undeclared name, which is the actual gap this * resolver's conservative rule leaves behind. - * @module dsh-plugin-codegraph-tree-sitter/resolve + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/resolve */ import { posix } from 'node:path' diff --git a/packages/tree-sitter/src/schema.ts b/packages/tree-sitter/src/schema.ts index eeb74b3..8df1930 100644 --- a/packages/tree-sitter/src/schema.ts +++ b/packages/tree-sitter/src/schema.ts @@ -1,5 +1,5 @@ /** - * Schema-v4 database writer: create the on-disk tables `dsh-plugin-codegraph-sqlite` reads — + * Schema-v4 database writer: create the on-disk tables `@huanlin/dsh-plugin-codegraph-sqlite` reads — * verbatim in structure, so the store and the external `codegraph` CLI stay able to open what this * package writes — and insert one indexing run's resolved graph. * @@ -8,7 +8,7 @@ * reader opening `databasePath` at any point either sees the complete previous graph or the complete * new one — never a window where the file exists with a fresh, empty schema and no rows yet, which a * naive "delete then recreate" leaves open between `CREATE TABLE` and the first `COMMIT`. - * @module dsh-plugin-codegraph-tree-sitter/schema + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/schema */ import { mkdir, rename, rm } from 'node:fs/promises' diff --git a/packages/tree-sitter/src/walk.ts b/packages/tree-sitter/src/walk.ts index b2fbece..7a575c9 100644 --- a/packages/tree-sitter/src/walk.ts +++ b/packages/tree-sitter/src/walk.ts @@ -6,7 +6,7 @@ * (not wildcard globs — the default set needs none), and every bound (`maxFileBytes`, `maxFiles`) is * a config field the deployment can retune rather than a constant, per the same-name entries this * package's `Config` exposes. - * @module dsh-plugin-codegraph-tree-sitter/walk + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/walk */ import { createHash } from 'node:crypto' diff --git a/packages/tree-sitter/src/watch-policy.ts b/packages/tree-sitter/src/watch-policy.ts index c4fe9ea..5fd85c2 100644 --- a/packages/tree-sitter/src/watch-policy.ts +++ b/packages/tree-sitter/src/watch-policy.ts @@ -6,7 +6,7 @@ * than not watching at all (the caller believes the index stays fresh and never falls back to a * manual `codegraph_index`). This module decides, from injected environment/platform/proc-version * probes only, whether to override the user's own `watch: true` for that one case. - * @module dsh-plugin-codegraph-tree-sitter/watch-policy + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/watch-policy */ import { readFileSync } from 'node:fs' diff --git a/packages/tree-sitter/src/watcher.ts b/packages/tree-sitter/src/watcher.ts index 8d57d23..0c76324 100644 --- a/packages/tree-sitter/src/watcher.ts +++ b/packages/tree-sitter/src/watcher.ts @@ -21,7 +21,7 @@ * directory delete or a `mkdir` immediately followed by writes inside it never needs special-casing: * the parent directory's own create event is enough to schedule a rebuild that discovers (or removes) * everything under the path from scratch, watched or not. - * @module dsh-plugin-codegraph-tree-sitter/watcher + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/watcher */ import { readdir, stat } from 'node:fs/promises' diff --git a/packages/tree-sitter/src/worktree.ts b/packages/tree-sitter/src/worktree.ts index d8f76d7..2fb160a 100644 --- a/packages/tree-sitter/src/worktree.ts +++ b/packages/tree-sitter/src/worktree.ts @@ -9,7 +9,7 @@ * never looks outside the `projectRoot` it was given. If a caller ever *does* end up pointed at the * wrong root, the bug is almost certainly in how the host resolves a session's working directory, not * in this package — this module exists to make that distinction diagnosable, not to route around it. - * @module dsh-plugin-codegraph-tree-sitter/worktree + * @module @huanlin/dsh-plugin-codegraph-tree-sitter/worktree */ import { execFileSync } from 'node:child_process' diff --git a/packages/tree-sitter/tests/index.spec.ts b/packages/tree-sitter/tests/index.spec.ts index 5819dba..334cb74 100644 --- a/packages/tree-sitter/tests/index.spec.ts +++ b/packages/tree-sitter/tests/index.spec.ts @@ -1,7 +1,7 @@ import { DatabaseSync } from 'node:sqlite' import { describe, expect, it, vi } from 'vitest' import { Context } from '@deepseek-ai/cordis' -import Codegraph, { CodegraphError } from 'dsh-plugin-codegraph-service' +import Codegraph, { CodegraphError } from '@huanlin/dsh-plugin-codegraph-service' import * as CodegraphTreeSitter from '../src/index.ts' import { DATABASE_RELATIVE_PATH, DEFAULT_INDEXER_ID } from '../src/index.ts' import { writeProject } from './fixture.ts' @@ -63,7 +63,7 @@ describe('codegraph-tree-sitter plugin', () => { expect(report.nodeCount).toBeGreaterThan(0) expect(report.edgeCount).toBeGreaterThan(0) - const CodegraphSqlite = await import('dsh-plugin-codegraph-sqlite') + const CodegraphSqlite = await import('@huanlin/dsh-plugin-codegraph-sqlite') await ctx.plugin(CodegraphSqlite) await expect(ctx.codegraph.available(root)).resolves.toBe(true) const status = await ctx.codegraph.query({ operation: 'status', projectRoot: root }) @@ -88,7 +88,7 @@ describe('codegraph-tree-sitter plugin', () => { const root = await writeProject({ 'a.ts': 'export function first() {}\n' }) const ctx = await seam() await ctx.codegraph.index(root) - const CodegraphSqlite = await import('dsh-plugin-codegraph-sqlite') + const CodegraphSqlite = await import('@huanlin/dsh-plugin-codegraph-sqlite') await ctx.plugin(CodegraphSqlite) // Open (and cache) a store connection against the first graph before anything changes on disk. const before = await ctx.codegraph.query({ operation: 'search', projectRoot: root, query: 'first', limit: 10 }) @@ -106,7 +106,7 @@ describe('codegraph-tree-sitter plugin', () => { }) it('exposes the on-disk path this package writes, matching the store\'s own constant', async () => { - const { DATABASE_RELATIVE_PATH: storePath } = await import('dsh-plugin-codegraph-sqlite') + const { DATABASE_RELATIVE_PATH: storePath } = await import('@huanlin/dsh-plugin-codegraph-sqlite') expect(DATABASE_RELATIVE_PATH).toBe(storePath) }) diff --git a/packages/tree-sitter/tests/invariant.spec.ts b/packages/tree-sitter/tests/invariant.spec.ts deleted file mode 100644 index 000d990..0000000 --- a/packages/tree-sitter/tests/invariant.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import { Context } from '@deepseek-ai/cordis' -import { InvariantRegistry } from '@deepseek-ai/dsh-invariants' -import { apply, inject, name } from '../src/invariant.ts' - -const PACKAGE_NAME = 'dsh-plugin-codegraph-tree-sitter' - -async function seam(): Promise { - const ctx = new Context() - await ctx.plugin(InvariantRegistry) - return ctx -} - -describe('tree-sitter invariant companion', () => { - it('names itself and declares its invariants dependency', () => { - expect(name).toBe('codegraph-tree-sitter-invariant') - expect(inject).toEqual(['invariants']) - }) - - it('registers the package invariant and hands back a working disposer', async () => { - const ctx = await seam() - const registerSpy = vi.spyOn(ctx.invariants, 'register') - - const dispose = await apply(ctx) - - expect(registerSpy).toHaveBeenCalledWith(PACKAGE_NAME, expect.any(Function)) - expect(dispose).toBeTypeOf('function') - await dispose() - }) -}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b9ff56..7bd6de9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,14 +15,14 @@ importers: specifier: ^1.0.2 version: 1.0.2(@deepseek-ai/cordis@4.0.1) '@deepseek-ai/dsh-agent': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(b0514d7a320728b6d8f5a31eb3960e10) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f) '@deepseek-ai/dsh-fs-local': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-fs@0.1.0-rc.6(6889042eed4b1d3d73c9a7bc6cc8e4e3))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))))) '@deepseek-ai/dsh-session': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) '@types/node': specifier: ^22.10.0 version: 22.20.1 @@ -41,16 +41,16 @@ importers: packages/bundle: dependencies: - dsh-plugin-codegraph-service: + '@huanlin/dsh-plugin-codegraph-service': specifier: workspace:^ version: link:../service - dsh-plugin-codegraph-sqlite: + '@huanlin/dsh-plugin-codegraph-sqlite': specifier: workspace:^ version: link:../sqlite - dsh-plugin-codegraph-tool: + '@huanlin/dsh-plugin-codegraph-tool': specifier: workspace:^ version: link:../tool - dsh-plugin-codegraph-tree-sitter: + '@huanlin/dsh-plugin-codegraph-tree-sitter': specifier: workspace:^ version: link:../tree-sitter @@ -60,40 +60,37 @@ importers: specifier: ^4.0.1 version: 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) '@deepseek-ai/dsh-brand': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) '@deepseek-ai/dsh-llm': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) packages/sqlite: dependencies: '@deepseek-ai/schemastery': specifier: ^3.18.1 version: 3.18.1 - dsh-plugin-codegraph-service: + '@huanlin/dsh-plugin-codegraph-service': specifier: workspace:^ version: link:../service devDependencies: '@deepseek-ai/cordis': specifier: ^4.0.1 version: 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) '@deepseek-ai/dsh-llm': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-util-values': + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) packages/tool: dependencies: '@deepseek-ai/schemastery': specifier: ^3.18.1 version: 3.18.1 - dsh-plugin-codegraph-service: + '@huanlin/dsh-plugin-codegraph-service': specifier: workspace:^ version: link:../service devDependencies: @@ -101,27 +98,27 @@ importers: specifier: ^4.0.1 version: 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) '@deepseek-ai/dsh-fs': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(6889042eed4b1d3d73c9a7bc6cc8e4e3) - '@deepseek-ai/dsh-invariants': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))) '@deepseek-ai/dsh-llm': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) '@deepseek-ai/dsh-system-prompt': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) '@deepseek-ai/dsh-timeout': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) '@deepseek-ai/dsh-tools': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(f8724372086ccc1457fc84e7becee2e0) - dsh-plugin-codegraph-sqlite: + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(8d439b6fd88e6dd40183c5330683b6d8) + '@deepseek-ai/dsh-util-values': + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@huanlin/dsh-plugin-codegraph-sqlite': specifier: workspace:^ version: link:../sqlite - dsh-plugin-codegraph-tree-sitter: + '@huanlin/dsh-plugin-codegraph-tree-sitter': specifier: workspace:^ version: link:../tree-sitter @@ -130,7 +127,7 @@ importers: '@deepseek-ai/schemastery': specifier: ^3.18.1 version: 3.18.1 - dsh-plugin-codegraph-service: + '@huanlin/dsh-plugin-codegraph-service': specifier: workspace:^ version: link:../service tree-sitter-wasms: @@ -143,9 +140,6 @@ importers: '@deepseek-ai/cordis': specifier: ^4.0.1 version: 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': - specifier: 0.1.0-rc.6 - version: 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) packages: @@ -200,138 +194,143 @@ packages: '@deepseek-ai/cosmokit@1.8.2': resolution: {integrity: sha512-muBOKtSrUKU5m/xpq8ZXWL6hQ/jgd4PhU2PqH97bcxIiLEJfNwZOGQEx4t/aS/GgxRAR+ra9pMHPMtTHU4sqqA==} - '@deepseek-ai/dsh-agent@0.1.0-rc.6': - resolution: {integrity: sha512-vtqq2pWTrzn0dKfj5kREZRpP82AwtGjGx9V1lYnKvF+Uc/a8zyWbSvjDE7V1d3YQAQJzs2cWO31hURWDekDXIA==} + '@deepseek-ai/cosmokit@1.8.3': + resolution: {integrity: sha512-qBo+ronVM6Eu2WNVJXi8JcMiqZ19T9BRIpV+5qJUFPXjGH/Z0QKcQMC/IZJ7L394YTOtJgcovbk9qP0w2GsBXQ==} + + '@deepseek-ai/dsh-agent@0.1.2-rc.1': + resolution: {integrity: sha512-lfaqN34vUCWvbn1kJVHrhfJ6Dvt1HDHCm33ZCpmKkl07/5q6FxWqVv6rOdVX5QnM/9xz/uYiN0nQwUtBg4+Skg==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-scope': ^0.1.0-rc.6 - '@deepseek-ai/dsh-session': ^0.1.0-rc.6 - '@deepseek-ai/dsh-system-prompt': ^0.1.0-rc.6 - '@deepseek-ai/dsh-typert-protocol': ^0.1.0-rc.6 - - '@deepseek-ai/dsh-attachment@0.1.0-rc.6': - resolution: {integrity: sha512-3P6N17NQ8jqSQGzeCs+svCIqArU8oq0YmgEAo+axN9aVuUDferWU4DLRSX59UGpmyldX4LQn81toA+c+DqMcHg==} + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-brand@0.1.2-rc.1': + resolution: {integrity: sha512-y2RHIag3kzLdY8kTBuSUSTsKzWPscJrysNObXTiNM7stXLpa3jXpshsB1caqGzNx50vYcmHeN1gFVECgx3NZHg==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-brand': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-brand@0.1.0-rc.6': - resolution: {integrity: sha512-E8j9Nby24qP4rfrdcfc7bpt1CHpGT3tYmycOJJkEOH4ptIdT1m2ro9nmnSd5CWYukTr64A77vjm2WGqHRI92UA==} + '@deepseek-ai/dsh-code-runtime@0.1.0-rc.8': + resolution: {integrity: sha512-6ZKyEE7dHH1UkKe5b0lg18Byww/7ocZyrNMVjAoUWEWp5i96Brf9Eavu9q3zepBMDMZJErCfV0pyt7KDhBJSig==} peerDependencies: '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/dsh-invariants': ^0.1.0-rc.8 - '@deepseek-ai/dsh-code-runtime@0.1.0-rc.6': - resolution: {integrity: sha512-aw8D4IOeMo11A3uxQeE4LFoW3bvaQnVkGFqqtS+lsINDARrOCJHXLUgecoKpys+Lc5erZZ4UQDnymJmL4OCcKA==} + '@deepseek-ai/dsh-fs-local@0.1.2-rc.1': + resolution: {integrity: sha512-tFHHKtD11tIk3FpkWF0vBKdX05zKbwqXQW9LhreA5hErCKEsulUsQLamf+kF1D8fuKqa8Yb+yWQIfYS93cy39w==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 - '@deepseek-ai/dsh-fs-local@0.1.0-rc.6': - resolution: {integrity: sha512-zP0OW474s7tvzEVQnBBTGL6Jrv/YyQXt4nswIbc3Aqr9JyHSfhZ/5IJoipZqfYXLS3ISWMhrF2npRg8L1NGsIQ==} + '@deepseek-ai/dsh-fs@0.1.2-rc.1': + resolution: {integrity: sha512-BSIB2j8WvATQ1mf7wUIpHPftDwbzz246qp6aUpLGSzBWGmLBdX3O1oDhyNV1YhgPmDQlwovac2odcAb62tuDdw==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-fs': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-invariants@0.1.2-alpha.2': + resolution: {integrity: sha512-1ewUeCzUHbaqhtW5rG1/eujIXXzy2VhwvMa16RpcTuJp5qcU1NtAf/+COkmvI7qtkyNY61vWg1Ez5qL9hKIUpQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-fs@0.1.0-rc.6': - resolution: {integrity: sha512-OTkwb4QsZgmjtA/8ZEPh1FapmrBr3N989/G4Wmo1JkAvKbMxkYty6LxjckOawTTz7GJTfUoZCrw9uopDfIMMNw==} + '@deepseek-ai/dsh-llm@0.1.2-rc.1': + resolution: {integrity: sha512-7VYsha5AXsVLnsAwYJffWXz9bwUbElw8i5N8tlTSdai9Bupk3sMbsotzPf8ZbsuGAxQYErahMwQwgGEu4qZO6g==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-brand': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-sandbox': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-invariants@0.1.0-rc.6': - resolution: {integrity: sha512-WfEfOi99a4cpOugRAHTBSTnesLieu3ist1q9PXDXFBHX++K1rAl9+sB7YrdnbB8LH0UOY532gS9xJUYU6w0SLw==} + '@deepseek-ai/dsh-sandbox@0.1.0-rc.8': + resolution: {integrity: sha512-dJpy5p/KjKkHG9AnMKU4+/ilj/4DCglsq3kof/jhIwtsZJCix07TEXP9vV8LCv4fU8af7cK3antXw4eVMqkwuQ==} peerDependencies: '@deepseek-ai/cordis': ^4.0.1 + '@deepseek-ai/dsh-invariants': ^0.1.0-rc.8 + '@deepseek-ai/dsh-llm': ^0.1.0-rc.8 + '@deepseek-ai/dsh-session': ^0.1.0-rc.8 - '@deepseek-ai/dsh-llm@0.1.0-rc.6': - resolution: {integrity: sha512-kuFGC8bHlzGTwlRxQhXjf3CYWl8M4NzH+EYIkrW8rri4iMc9W53xrdvkil5No/DUlMm8g1u7GdeiWYFy0TMvtA==} + '@deepseek-ai/dsh-scope@0.1.0-rc.8': + resolution: {integrity: sha512-/o+PxkVV2zUy9lYlMFr4TWSb+ESW4DE+fI891yIbsLzOJdFgfbmmLpGrlWgnz8/unIGJZxjeXdwyppV04Z277Q==} peerDependencies: '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-attachment': ^0.1.0-rc.6 - '@deepseek-ai/dsh-brand': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-timeout': ^0.1.0-rc.6 + '@deepseek-ai/dsh-invariants': ^0.1.0-rc.8 - '@deepseek-ai/dsh-sandbox@0.1.0-rc.6': - resolution: {integrity: sha512-SLZjuivQQKHTx4H7xlsjraEGGMIEA8BYOwvlm/9uZBrBrlttMU+d8Ne6QYpDcOwIEubL8mvrWRg8j3rtY3lVyA==} + '@deepseek-ai/dsh-session-projection@0.1.2-alpha.2': + resolution: {integrity: sha512-E5NYRAOQwiYYu56WSHTlnI2MkyqznA4ePlOdOQvpF97a7ZG2BkRfflwvQ5NHIPv8FABemoSCGMiI3/0GSfqvBg==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-session': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-alpha.2 + '@deepseek-ai/dsh-session': ^0.1.2-alpha.2 - '@deepseek-ai/dsh-scope@0.1.0-rc.6': - resolution: {integrity: sha512-UlDLV4syLoJinNg9imhXrSAHrdaTa5Ff8gg46rzjFJGPUOhAk3DZff0hryT5OhrBi0A5Tj92qVpg2pRVvxnUzQ==} + '@deepseek-ai/dsh-session@0.1.2-rc.1': + resolution: {integrity: sha512-jRGNPTbQcvIx1F2MVmmkoiHLgpC3Btqo1wkl/3JDLlOWRVWKOuaC+5fQiMrFPOYfno6YiX/c2UvmA0td8qB92w==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 - '@deepseek-ai/dsh-session@0.1.0-rc.6': - resolution: {integrity: sha512-8tu8I6VWC7050GAUXWhcEWQw4pakALQc8TlhKr52m7Y4+kIKeNt3FBgP86PaGPBtpK0p5zUPRQNkFpzZbBdxyw==} + '@deepseek-ai/dsh-system-prompt@0.1.2-rc.1': + resolution: {integrity: sha512-7W93PZKIk4CHvjZGgLIxrrEKpk+6t8nQXje1vKR5vG73dfXH0t1MJ5WWH/fngadYc7c6KzM84ihQ66tJqJqyNQ==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-brand': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-scope': ^0.1.0-rc.6 - '@deepseek-ai/dsh-typert-protocol': ^0.1.0-rc.6 - - '@deepseek-ai/dsh-system-prompt@0.1.0-rc.6': - resolution: {integrity: sha512-E7g+XChh4q4/wX++v56z1pV4SA1Rtz42xkznLPPi9FlXrrzJxwHMOUzBZ9Rz3Y1kLhQ++HJG3ZatmNx3rjFilg==} + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-timeout@0.1.2-rc.1': + resolution: {integrity: sha512-llz11yxWeJB8suKCa6hRLjNBWVaPn3Fbd0XoBS0bkZLhPFzO1mDorx/XMca2GhI7XF9A86CURQcDt+aGjjvqJA==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-scope': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-timeout@0.1.0-rc.6': - resolution: {integrity: sha512-CUean0fAnfsJVszFEip7PsU/S26W+JfDFfsza2dCtlw8n6xlkbHA9Gjxdk2aTwqDGCgXEPkRW7mYkdJ0n6FR7w==} + '@deepseek-ai/dsh-tools@0.1.2-rc.1': + resolution: {integrity: sha512-W9kUio00s7WbM8kEwniyd4hfb3CeUxVczsjXbOcKtakfiTywNLeyRWkpx2fvwRAH2rBfg3qCgczVfS0DOw1csg==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-code-runtime': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1': + resolution: {integrity: sha512-vBWD0NpriPd96ltbWaAw+iKeWFIEjiAcCWYtmqEcV1Ms+FaV02usjjm7LCmhSQhMZpBSBc7EZUX0spGlpjI1bA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-tools@0.1.0-rc.6': - resolution: {integrity: sha512-Tu08EPK3JyK0iNjH4FGzu/1uADynNSS6SmwOLdfytUN0YNqwNuKFSt2OJUg19famNlTgy992DcHfDu0T+gLXFg==} + '@deepseek-ai/dsh-user-approval@0.1.0-rc.8': + resolution: {integrity: sha512-6SFCxp7dgNFEyzQIcs5i9C+5djgXsAeV0iKmZUCLlcIeVM1chcCMHyGcoXlw8yyB14qFMrMs+TPvhvpu2WWxAw==} peerDependencies: '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-agent': ^0.1.0-rc.6 - '@deepseek-ai/dsh-code-runtime': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-scope': ^0.1.0-rc.6 - '@deepseek-ai/dsh-session': ^0.1.0-rc.6 - '@deepseek-ai/dsh-system-prompt': ^0.1.0-rc.6 - '@deepseek-ai/dsh-user-approval': ^0.1.0-rc.6 - - '@deepseek-ai/dsh-typert-protocol@0.1.0-rc.6': - resolution: {integrity: sha512-weWzN8r01YCkoDCAM7BsKw2YhRrD4zL8N2SAZu9hovYtXSq8xHXsP4Zh8RLYIlYcuotjyff/6hic+0TJPd14YA==} + '@deepseek-ai/dsh-agent': ^0.1.0-rc.8 + '@deepseek-ai/dsh-brand': ^0.1.0-rc.8 + '@deepseek-ai/dsh-invariants': ^0.1.0-rc.8 + '@deepseek-ai/dsh-llm': ^0.1.0-rc.8 + '@deepseek-ai/dsh-scope': ^0.1.0-rc.8 + '@deepseek-ai/dsh-session': ^0.1.0-rc.8 + '@deepseek-ai/dsh-system-prompt': ^0.1.0-rc.8 + + '@deepseek-ai/dsh-util-crypto@0.1.2-rc.1': + resolution: {integrity: sha512-gE8FznQ1hkknw9QMrHNSlm3UEyRYuj3MLVvlJ6NyH1kmOsdjnbrVbSs+Pn72k2oIV4Fiyu3Umg0sLznUEcsiXw==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 - '@deepseek-ai/dsh-user-approval@0.1.0-rc.6': - resolution: {integrity: sha512-9rnkSDGOpu2XUeGwbPeTzVUTFWTND1PMPM5L/ZQPptV5yyZlQiNxM2rCC6OdL+ZVerwxEqrRhZIQn/KVtQfKag==} + '@deepseek-ai/dsh-util-values@0.1.2-rc.1': + resolution: {integrity: sha512-FQdgoK+KYVR0pBQb9fTsajvGb3gzUxEzJQEYnFOt+Qdwc4nkxJOPwJJdIvXuqvZaQ33DaOoqpnpcr2p5HpLu4g==} peerDependencies: - '@deepseek-ai/cordis': ^4.0.1 - '@deepseek-ai/dsh-agent': ^0.1.0-rc.6 - '@deepseek-ai/dsh-brand': ^0.1.0-rc.6 - '@deepseek-ai/dsh-invariants': ^0.1.0-rc.6 - '@deepseek-ai/dsh-llm': ^0.1.0-rc.6 - '@deepseek-ai/dsh-scope': ^0.1.0-rc.6 - '@deepseek-ai/dsh-session': ^0.1.0-rc.6 - '@deepseek-ai/dsh-system-prompt': ^0.1.0-rc.6 + '@deepseek-ai/cordis': ^4.0.2 '@deepseek-ai/schemastery@3.18.1': resolution: {integrity: sha512-Qn0FCSwCQnpnj6SB31I6i2sIKgKWnkbJM8O0EU91Gv2UsYVvtZTl6IA0sCwk2e2MZf5S8w5hpq9QkeVvK9qwxg==} + '@deepseek-ai/schemastery@3.18.2': + resolution: {integrity: sha512-njDtZsznjYxok7KLLlHOPyuv2efdWVbSflAHgztSfbMsg+CVraEoRe2DjOCgClYv3ZCSm7WXoaUkbB/+RY7tWQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -813,6 +812,7 @@ packages: tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} + deprecated: unmaintained hasBin: true peerDependencies: typescript: ^5.0.0 @@ -933,6 +933,9 @@ packages: engines: {node: '>=8'} hasBin: true + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + snapshots: '@babel/helper-string-parser@7.29.7': {} @@ -964,7 +967,7 @@ snapshots: '@deepseek-ai/cordis@4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2)': dependencies: - '@deepseek-ai/cosmokit': 1.8.2 + '@deepseek-ai/cosmokit': 1.8.3 '@standard-schema/spec': 1.1.0 optionalDependencies: '@deepseek-ai/cordis-plugin-include': 1.0.6(@deepseek-ai/cordis-plugin-loader@1.0.2)(@deepseek-ai/cordis@4.0.1) @@ -972,131 +975,147 @@ snapshots: '@deepseek-ai/cosmokit@1.8.2': {} - '@deepseek-ai/dsh-agent@0.1.0-rc.6(b0514d7a320728b6d8f5a31eb3960e10)': + '@deepseek-ai/cosmokit@1.8.3': {} + + '@deepseek-ai/dsh-agent@0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-session': 0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6) - '@deepseek-ai/dsh-system-prompt': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-typert-protocol': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - - '@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-scope': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/dsh-session-projection': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + + '@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-code-runtime@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-code-runtime@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-fs-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))) + '@deepseek-ai/schemastery': 3.18.2 + koffi: 3.1.5 - '@deepseek-ai/dsh-fs-local@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-fs@0.1.0-rc.6(6889042eed4b1d3d73c9a7bc6cc8e4e3))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-fs': 0.1.0-rc.6(6889042eed4b1d3d73c9a7bc6cc8e4e3) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/schemastery': 3.18.1 - koffi: 3.1.5 + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-sandbox': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))) - '@deepseek-ai/dsh-fs@0.1.0-rc.6(6889042eed4b1d3d73c9a7bc6cc8e4e3)': + '@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-sandbox': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-session@0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6)) + '@deepseek-ai/schemastery': 3.18.2 - '@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)': + '@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/schemastery': 3.18.1 + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-util-crypto': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-sandbox@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))': + dependencies: + '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))': + '@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-attachment': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-timeout': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/schemastery': 3.18.1 + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-sandbox@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-session@0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6))': + '@deepseek-ai/dsh-session-projection@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-session': 0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + zod: 4.5.4 - '@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-scope': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-session@0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6)': + '@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-typert-protocol': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-scope': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/schemastery': 3.18.2 - '@deepseek-ai/dsh-system-prompt@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))': + '@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/schemastery': 3.18.1 - '@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-tools@0.1.2-rc.1(8d439b6fd88e6dd40183c5330683b6d8)': + dependencies: + '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-code-runtime': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-scope': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/dsh-user-approval': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-agent@0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-tools@0.1.0-rc.6(f8724372086ccc1457fc84e7becee2e0)': + '@deepseek-ai/dsh-user-approval@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-agent@0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))))': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-agent': 0.1.0-rc.6(b0514d7a320728b6d8f5a31eb3960e10) - '@deepseek-ai/dsh-code-runtime': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-session': 0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6) - '@deepseek-ai/dsh-system-prompt': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-user-approval': 0.1.0-rc.6(dbdaba06c174c5e30e3a58edf3cc27a9) - '@deepseek-ai/schemastery': 3.18.1 - - '@deepseek-ai/dsh-typert-protocol@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))': + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(7509b9b8290b0b3321e85585ea1cc71f) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-invariants': 0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1) + '@deepseek-ai/dsh-scope': 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.2-alpha.2(@deepseek-ai/cordis@4.0.1))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-util-crypto@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-user-approval@0.1.0-rc.6(dbdaba06c174c5e30e3a58edf3cc27a9)': + '@deepseek-ai/dsh-util-values@0.1.2-rc.1(@deepseek-ai/cordis@4.0.1)': dependencies: '@deepseek-ai/cordis': 4.0.1(@deepseek-ai/cordis-plugin-include@1.0.6)(@deepseek-ai/cordis-plugin-loader@1.0.2) - '@deepseek-ai/dsh-agent': 0.1.0-rc.6(b0514d7a320728b6d8f5a31eb3960e10) - '@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1) - '@deepseek-ai/dsh-llm': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)) - '@deepseek-ai/dsh-session': 0.1.0-rc.6(6fd26f59436a18b115f326d6060415e6) - '@deepseek-ai/dsh-system-prompt': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-llm@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-attachment@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-timeout@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))))(@deepseek-ai/dsh-scope@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))) - '@deepseek-ai/schemastery': 3.18.1 '@deepseek-ai/schemastery@3.18.1': dependencies: '@deepseek-ai/cosmokit': 1.8.2 '@standard-schema/spec': 1.1.0 + '@deepseek-ai/schemastery@3.18.2': + dependencies: + '@deepseek-ai/cosmokit': 1.8.3 + '@standard-schema/spec': 1.1.0 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.4.14': {} @@ -1539,3 +1558,5 @@ snapshots: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + + zod@4.5.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9ca2c71..268954a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,36 @@ packages: - 'packages/*' +autoInstallPeers: true allowBuilds: koffi: true onlyBuiltDependencies: - koffi +minimumReleaseAgeExclude: + - '@deepseek-ai/dsh-util-values@0.1.2-alpha.2' + - '@deepseek-ai/cosmokit@1.8.3' + - '@deepseek-ai/dsh-agent@0.1.2-alpha.2' + - '@deepseek-ai/dsh-brand@0.1.2-alpha.2' + - '@deepseek-ai/dsh-fs-local@0.1.2-alpha.2' + - '@deepseek-ai/dsh-fs@0.1.2-alpha.2' + - '@deepseek-ai/dsh-invariants@0.1.2-alpha.2' + - '@deepseek-ai/dsh-llm@0.1.2-alpha.2' + - '@deepseek-ai/dsh-session-projection@0.1.2-alpha.2' + - '@deepseek-ai/dsh-session@0.1.2-alpha.2' + - '@deepseek-ai/dsh-system-prompt@0.1.2-alpha.2' + - '@deepseek-ai/dsh-timeout@0.1.2-alpha.2' + - '@deepseek-ai/dsh-tools@0.1.2-alpha.2' + - '@deepseek-ai/dsh-typert-protocol@0.1.2-alpha.2' + - '@deepseek-ai/dsh-util-crypto@0.1.2-alpha.2' + - '@deepseek-ai/schemastery@3.18.2' + - '@deepseek-ai/dsh-agent@0.1.2-rc.1' + - '@deepseek-ai/dsh-brand@0.1.2-rc.1' + - '@deepseek-ai/dsh-fs-local@0.1.2-rc.1' + - '@deepseek-ai/dsh-fs@0.1.2-rc.1' + - '@deepseek-ai/dsh-llm@0.1.2-rc.1' + - '@deepseek-ai/dsh-session@0.1.2-rc.1' + - '@deepseek-ai/dsh-system-prompt@0.1.2-rc.1' + - '@deepseek-ai/dsh-timeout@0.1.2-rc.1' + - '@deepseek-ai/dsh-tools@0.1.2-rc.1' + - '@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1' + - '@deepseek-ai/dsh-util-crypto@0.1.2-rc.1' + - '@deepseek-ai/dsh-util-values@0.1.2-rc.1' diff --git a/tsconfig.base.json b/tsconfig.base.json index db65705..bfa0837 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -31,14 +31,10 @@ // Source-to-source resolution across this workspace, so a test never loads // a second copy of a module singleton through built `lib/`. "paths": { - "dsh-plugin-codegraph-service": ["./packages/service/src"], - "dsh-plugin-codegraph-service/invariant": ["./packages/service/src/invariant.ts"], - "dsh-plugin-codegraph-sqlite": ["./packages/sqlite/src"], - "dsh-plugin-codegraph-sqlite/invariant": ["./packages/sqlite/src/invariant.ts"], - "dsh-plugin-codegraph-tree-sitter": ["./packages/tree-sitter/src"], - "dsh-plugin-codegraph-tree-sitter/invariant": ["./packages/tree-sitter/src/invariant.ts"], - "dsh-plugin-codegraph-tool": ["./packages/tool/src"], - "dsh-plugin-codegraph-tool/invariant": ["./packages/tool/src/invariant.ts"] + "@huanlin/dsh-plugin-codegraph-service": ["./packages/service/src"], + "@huanlin/dsh-plugin-codegraph-sqlite": ["./packages/sqlite/src"], + "@huanlin/dsh-plugin-codegraph-tree-sitter": ["./packages/tree-sitter/src"], + "@huanlin/dsh-plugin-codegraph-tool": ["./packages/tool/src"] } } }