dsh-plugin-dbgraph-service 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assert.d.ts +18 -0
- package/lib/assert.js +21 -0
- package/lib/brand.d.ts +36 -0
- package/lib/brand.js +35 -0
- package/lib/index.d.ts +256 -0
- package/lib/index.js +530 -0
- package/lib/invariant.d.ts +16 -0
- package/lib/invariant.js +22 -0
- package/lib/schema.d.ts +150 -0
- package/lib/schema.js +152 -0
- package/lib/tokenize.d.ts +45 -0
- package/lib/tokenize.js +205 -0
- package/lib/types.d.ts +598 -0
- package/lib/types.js +30 -0
- package/lib/zh-aliases.d.ts +72 -0
- package/lib/zh-aliases.js +246 -0
- package/package.json +62 -3
- package/README.md +0 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place Chinese (and looser English) vocabulary is mapped onto database column meaning.
|
|
3
|
+
*
|
|
4
|
+
* This is a table, not a model call: no API key, no latency, and a word that is not in it simply
|
|
5
|
+
* produces nothing. The same table crosses into the native index writer as JSON, so the vocabulary
|
|
6
|
+
* exists exactly once — adding a group never means editing Rust.
|
|
7
|
+
*
|
|
8
|
+
* Two consumers:
|
|
9
|
+
*
|
|
10
|
+
* - the **writer**, which expands each column's name and comment into `terms` rows using these words,
|
|
11
|
+
* - the **resolver**, which looks a user's word up in the same table to learn what columns it could
|
|
12
|
+
* mean (`密码` → `password`, `passwd`, `pwd`, `secret`, `credential`).
|
|
13
|
+
*
|
|
14
|
+
* Chosen breadth, not precision: a group with a slightly wrong word costs one extra candidate in a
|
|
15
|
+
* ranked list, while a missing group costs the whole query. The resolver's confidence gate — not this
|
|
16
|
+
* table — is what keeps a loose match from becoming an answer.
|
|
17
|
+
* @module dsh-plugin-dbgraph-service/zh-aliases
|
|
18
|
+
*/
|
|
19
|
+
import type { AliasGroup } from './types.ts';
|
|
20
|
+
/**
|
|
21
|
+
* Words that mean the same thing, across Chinese UI vocabulary and the English it was translated
|
|
22
|
+
* from. Order within `words` carries no meaning; the resolver scores by match kind, not position.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ZH_ALIASES: readonly AliasGroup[];
|
|
25
|
+
/**
|
|
26
|
+
* Column-name fragments long enough to match as substrings without redacting an unrelated word. A
|
|
27
|
+
* match masks the value as `[REDACTED]` and names the column in the result's `redacted` list.
|
|
28
|
+
*
|
|
29
|
+
* The reason this exists is not opinion: without it, one careless question puts a password hash — or
|
|
30
|
+
* a password — into the transcript, and this harness persists transcripts (and indexes them).
|
|
31
|
+
* `sensitiveColumns: 'show'` turns masking off for a connection that genuinely needs it.
|
|
32
|
+
*
|
|
33
|
+
* `secret` is deliberately absent: as a substring it redacts `secretary`, and SQL columns named
|
|
34
|
+
* `secretary` are real. It lives in {@link SENSITIVE_COLUMN_TOKENS} instead, where it matches whole
|
|
35
|
+
* tokens (`secret`, `secrets`, `client_secret`) and not `secretary`.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SENSITIVE_COLUMN_PATTERNS: readonly string[];
|
|
38
|
+
/**
|
|
39
|
+
* Short ASCII words that are sensitive only as a whole identifier token, matched with an optional
|
|
40
|
+
* trailing `s`.
|
|
41
|
+
*
|
|
42
|
+
* `pass` as a substring would redact `passenger` and `bypass`; as a token it covers `user_pass`,
|
|
43
|
+
* `pass_hash` and `PassCode` — the spellings the alias table already treats as "password", and
|
|
44
|
+
* therefore the ones a `find` can return. The trailing-`s` rule is what makes `secrets` match while
|
|
45
|
+
* keeping `secretary` and `passage` out: those are different tokens, not plural forms.
|
|
46
|
+
*
|
|
47
|
+
* `userpass` (the concatenated spelling) is a token of its own because `pass` is not: no separator
|
|
48
|
+
* splits it, and SQL columns are routinely named `userpass` by older frameworks.
|
|
49
|
+
*/
|
|
50
|
+
export declare const SENSITIVE_COLUMN_TOKENS: readonly string[];
|
|
51
|
+
/**
|
|
52
|
+
* Chinese words that mark a column as sensitive. CJK has no separators, so these match as substrings
|
|
53
|
+
* of the folded name — the same rule the alias table uses for `密码` inside `登录密码`.
|
|
54
|
+
*/
|
|
55
|
+
export declare const SENSITIVE_CJK_WORDS: readonly string[];
|
|
56
|
+
/**
|
|
57
|
+
* Whether a column name looks sensitive. Three rules, each for a different shape:
|
|
58
|
+
*
|
|
59
|
+
* - a Chinese word matches as a substring;
|
|
60
|
+
* - a long ASCII fragment (`password`, `idcard`) matches as a substring too — a false positive on
|
|
61
|
+
* `password_reset_count` is cheaper than a missed `user_password`;
|
|
62
|
+
* - a short ambiguous word (`pass`, `secret`) matches only as a whole identifier token, with an
|
|
63
|
+
* optional trailing `s`. So `passenger`, `bypass`, `compass` and `secretary` are not redacted,
|
|
64
|
+
* while `user_pass`, `pass_hash`, `client_secret` and `secrets` are. The `s` matters because a
|
|
65
|
+
* column named `secrets` is a plural of the same thing, whereas `secretary` merely shares a prefix.
|
|
66
|
+
*
|
|
67
|
+
* @param name - column name.
|
|
68
|
+
* @param extra - additional patterns from configuration, matched with the substring rule.
|
|
69
|
+
* @returns true when the column should be masked.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isSensitiveColumn(name: string, extra?: readonly string[]): boolean;
|
|
72
|
+
//# sourceMappingURL=zh-aliases.d.ts.map
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place Chinese (and looser English) vocabulary is mapped onto database column meaning.
|
|
3
|
+
*
|
|
4
|
+
* This is a table, not a model call: no API key, no latency, and a word that is not in it simply
|
|
5
|
+
* produces nothing. The same table crosses into the native index writer as JSON, so the vocabulary
|
|
6
|
+
* exists exactly once — adding a group never means editing Rust.
|
|
7
|
+
*
|
|
8
|
+
* Two consumers:
|
|
9
|
+
*
|
|
10
|
+
* - the **writer**, which expands each column's name and comment into `terms` rows using these words,
|
|
11
|
+
* - the **resolver**, which looks a user's word up in the same table to learn what columns it could
|
|
12
|
+
* mean (`密码` → `password`, `passwd`, `pwd`, `secret`, `credential`).
|
|
13
|
+
*
|
|
14
|
+
* Chosen breadth, not precision: a group with a slightly wrong word costs one extra candidate in a
|
|
15
|
+
* ranked list, while a missing group costs the whole query. The resolver's confidence gate — not this
|
|
16
|
+
* table — is what keeps a loose match from becoming an answer.
|
|
17
|
+
* @module dsh-plugin-dbgraph-service/zh-aliases
|
|
18
|
+
*/
|
|
19
|
+
import { tokenizeForSearch } from "./tokenize.js";
|
|
20
|
+
/**
|
|
21
|
+
* Words that mean the same thing, across Chinese UI vocabulary and the English it was translated
|
|
22
|
+
* from. Order within `words` carries no meaning; the resolver scores by match kind, not position.
|
|
23
|
+
*/
|
|
24
|
+
export const ZH_ALIASES = [
|
|
25
|
+
{
|
|
26
|
+
meaning: 'user',
|
|
27
|
+
words: ['用户', '用户表', '会员', '账号', '帐号', '账户', '使用者', '人员', 'user', 'users', 'member', 'account', 'customer', 'client'],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
meaning: 'password',
|
|
31
|
+
words: ['密码', '口令', '登录密码', '登录口令', '密钥', 'password', 'passwd', 'pwd', 'secret', 'credential', 'pass'],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
meaning: 'name',
|
|
35
|
+
words: ['姓名', '名字', '用户名', '昵称', '真实姓名', '全名', '名称', 'name', 'realname', 'real_name', 'nickname', 'nick', 'fullname', 'full_name', 'username', 'user_name'],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
meaning: 'phone',
|
|
39
|
+
words: ['手机', '手机号', '手机号码', '电话', '电话号码', '联系方式', 'mobile', 'phone', 'phone_number', 'tel', 'telephone', 'contact'],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
meaning: 'email',
|
|
43
|
+
words: ['邮箱', '电子邮箱', '电子邮件', '邮件', 'email', 'mail', 'e_mail'],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
meaning: 'idcard',
|
|
47
|
+
words: ['身份证', '身份证号', '证件', '证件号', '证件号码', 'idcard', 'id_card', 'identity', 'identity_card', 'card_no'],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
meaning: 'gender',
|
|
51
|
+
words: ['性别', 'gender', 'sex'],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
meaning: 'age',
|
|
55
|
+
words: ['年龄', '岁数', 'age'],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
meaning: 'birthday',
|
|
59
|
+
words: ['生日', '出生日期', '出生年月', 'birthday', 'birth', 'birth_date', 'dob'],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
meaning: 'address',
|
|
63
|
+
words: ['地址', '住址', '收货地址', '详细地址', 'address', 'addr', 'location', 'street'],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
meaning: 'avatar',
|
|
67
|
+
words: ['头像', '照片', '图片', 'avatar', 'photo', 'picture', 'icon', 'image', 'thumb'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
meaning: 'status',
|
|
71
|
+
words: ['状态', '是否', '启用', '禁用', 'status', 'state', 'flag', 'enabled', 'disabled', 'active'],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
meaning: 'amount',
|
|
75
|
+
words: ['金额', '价格', '单价', '总价', '费用', '花费', '付款', 'amount', 'price', 'total', 'money', 'fee', 'cost', 'pay', 'payment', 'salary'],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
meaning: 'order',
|
|
79
|
+
words: ['订单', '交易', '下单', 'order', 'orders', 'trade', 'deal', 'transaction', 'purchase'],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
meaning: 'product',
|
|
83
|
+
words: ['商品', '产品', '货物', '货品', 'product', 'goods', 'item', 'sku', 'commodity', 'spu'],
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
meaning: 'created',
|
|
87
|
+
words: ['创建', '创建时间', '添加时间', '下单时间', 'created', 'create', 'created_at', 'createdat', 'gmt_create', 'insert', 'inserted'],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
meaning: 'updated',
|
|
91
|
+
words: ['更新', '更新时间', '修改时间', '变更时间', 'updated', 'update', 'updated_at', 'updatedat', 'gmt_modified', 'modified', 'modify'],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
meaning: 'deleted',
|
|
95
|
+
words: ['删除', '是否删除', '已删除', 'deleted', 'delete', 'is_delete', 'isdel', 'removed', 'trashed'],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
meaning: 'remark',
|
|
99
|
+
words: ['备注', '说明', '描述', '详情', 'remark', 'note', 'memo', 'comment', 'description', 'desc', 'detail'],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
meaning: 'title',
|
|
103
|
+
words: ['标题', '题目', '主题', 'title', 'subject', 'heading', 'caption'],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
meaning: 'code',
|
|
107
|
+
words: ['编号', '编码', '代码', '序列号', 'code', 'no', 'number', 'sn', 'uuid', 'serial', 'key'],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
meaning: 'count',
|
|
111
|
+
words: ['数量', '次数', '个数', '总量', 'count', 'num', 'qty', 'quantity', 'amount_count'],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
meaning: 'type',
|
|
115
|
+
words: ['类型', '种类', '类别', '分类', 'type', 'category', 'kind', 'class', 'sort'],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
meaning: 'level',
|
|
119
|
+
words: ['等级', '级别', '层级', 'level', 'grade', 'rank', 'tier', 'priority'],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
meaning: 'score',
|
|
123
|
+
words: ['分数', '得分', '评分', 'score', 'rating', 'points', 'grade_score'],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
meaning: 'permission',
|
|
127
|
+
words: ['权限', '角色', '职权', 'role', 'roles', 'permission', 'authority', 'admin', 'privilege'],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
meaning: 'department',
|
|
131
|
+
words: ['部门', '组织', '单位', 'department', 'dept', 'org', 'organization', 'team', 'group', 'company'],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
meaning: 'ip',
|
|
135
|
+
words: ['ip', 'ip地址', 'ip_addr', 'ip_address', 'client_ip', 'remote_addr'],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
meaning: 'device',
|
|
139
|
+
words: ['设备', '机型', '设备号', 'device', 'device_id', 'imei', 'oaid', 'idfa', 'android_id'],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
meaning: 'login',
|
|
143
|
+
words: ['登录', '登陆', '最后登录', 'login', 'logon', 'signin', 'last_login', 'lastlogin'],
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
/**
|
|
147
|
+
* Column-name fragments long enough to match as substrings without redacting an unrelated word. A
|
|
148
|
+
* match masks the value as `[REDACTED]` and names the column in the result's `redacted` list.
|
|
149
|
+
*
|
|
150
|
+
* The reason this exists is not opinion: without it, one careless question puts a password hash — or
|
|
151
|
+
* a password — into the transcript, and this harness persists transcripts (and indexes them).
|
|
152
|
+
* `sensitiveColumns: 'show'` turns masking off for a connection that genuinely needs it.
|
|
153
|
+
*
|
|
154
|
+
* `secret` is deliberately absent: as a substring it redacts `secretary`, and SQL columns named
|
|
155
|
+
* `secretary` are real. It lives in {@link SENSITIVE_COLUMN_TOKENS} instead, where it matches whole
|
|
156
|
+
* tokens (`secret`, `secrets`, `client_secret`) and not `secretary`.
|
|
157
|
+
*/
|
|
158
|
+
export const SENSITIVE_COLUMN_PATTERNS = [
|
|
159
|
+
'password',
|
|
160
|
+
'passwd',
|
|
161
|
+
'pwd',
|
|
162
|
+
'passcode',
|
|
163
|
+
'passphrase',
|
|
164
|
+
'passhash',
|
|
165
|
+
'salt',
|
|
166
|
+
'token',
|
|
167
|
+
'credential',
|
|
168
|
+
'private_key',
|
|
169
|
+
'privatekey',
|
|
170
|
+
'access_key',
|
|
171
|
+
'accesskey',
|
|
172
|
+
'apikey',
|
|
173
|
+
'id_card',
|
|
174
|
+
'idcard',
|
|
175
|
+
'id_number',
|
|
176
|
+
'bank_card',
|
|
177
|
+
'bankcard',
|
|
178
|
+
'cvv',
|
|
179
|
+
];
|
|
180
|
+
/**
|
|
181
|
+
* Short ASCII words that are sensitive only as a whole identifier token, matched with an optional
|
|
182
|
+
* trailing `s`.
|
|
183
|
+
*
|
|
184
|
+
* `pass` as a substring would redact `passenger` and `bypass`; as a token it covers `user_pass`,
|
|
185
|
+
* `pass_hash` and `PassCode` — the spellings the alias table already treats as "password", and
|
|
186
|
+
* therefore the ones a `find` can return. The trailing-`s` rule is what makes `secrets` match while
|
|
187
|
+
* keeping `secretary` and `passage` out: those are different tokens, not plural forms.
|
|
188
|
+
*
|
|
189
|
+
* `userpass` (the concatenated spelling) is a token of its own because `pass` is not: no separator
|
|
190
|
+
* splits it, and SQL columns are routinely named `userpass` by older frameworks.
|
|
191
|
+
*/
|
|
192
|
+
export const SENSITIVE_COLUMN_TOKENS = ['pass', 'secret', 'userpass'];
|
|
193
|
+
/**
|
|
194
|
+
* Chinese words that mark a column as sensitive. CJK has no separators, so these match as substrings
|
|
195
|
+
* of the folded name — the same rule the alias table uses for `密码` inside `登录密码`.
|
|
196
|
+
*/
|
|
197
|
+
export const SENSITIVE_CJK_WORDS = ['密码', '口令', '密钥', '凭证'];
|
|
198
|
+
/**
|
|
199
|
+
* The identifier tokens of a column name, as the shared tokenizer splits them (`user_pass` gives
|
|
200
|
+
* `user`, `pass`). CJK bigrams are dropped: a Chinese word is matched as a substring instead.
|
|
201
|
+
* @param name - the column name.
|
|
202
|
+
* @returns its ASCII tokens, lowercased.
|
|
203
|
+
*/
|
|
204
|
+
function identifierTokens(name) {
|
|
205
|
+
return tokenizeForSearch(name).filter(token => /^[a-z0-9]+$/.test(token));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Whether a column name looks sensitive. Three rules, each for a different shape:
|
|
209
|
+
*
|
|
210
|
+
* - a Chinese word matches as a substring;
|
|
211
|
+
* - a long ASCII fragment (`password`, `idcard`) matches as a substring too — a false positive on
|
|
212
|
+
* `password_reset_count` is cheaper than a missed `user_password`;
|
|
213
|
+
* - a short ambiguous word (`pass`, `secret`) matches only as a whole identifier token, with an
|
|
214
|
+
* optional trailing `s`. So `passenger`, `bypass`, `compass` and `secretary` are not redacted,
|
|
215
|
+
* while `user_pass`, `pass_hash`, `client_secret` and `secrets` are. The `s` matters because a
|
|
216
|
+
* column named `secrets` is a plural of the same thing, whereas `secretary` merely shares a prefix.
|
|
217
|
+
*
|
|
218
|
+
* @param name - column name.
|
|
219
|
+
* @param extra - additional patterns from configuration, matched with the substring rule.
|
|
220
|
+
* @returns true when the column should be masked.
|
|
221
|
+
*/
|
|
222
|
+
export function isSensitiveColumn(name, extra = []) {
|
|
223
|
+
const normalized = name.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]/g, '');
|
|
224
|
+
if (normalized === '')
|
|
225
|
+
return false;
|
|
226
|
+
for (const word of SENSITIVE_CJK_WORDS) {
|
|
227
|
+
if (normalized.includes(word))
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
for (const pattern of SENSITIVE_COLUMN_PATTERNS) {
|
|
231
|
+
if (normalized.includes(pattern))
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
const tokens = identifierTokens(name);
|
|
235
|
+
for (const word of SENSITIVE_COLUMN_TOKENS) {
|
|
236
|
+
if (tokens.includes(word) || tokens.includes(`${word}s`))
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
for (const pattern of extra) {
|
|
240
|
+
const needle = pattern.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]/g, '');
|
|
241
|
+
if (needle !== '' && normalized.includes(needle))
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=zh-aliases.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-dbgraph-service",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Service Definition for the DeepSeek Harness database-graph capability seam (ctx.dbgraph): catalog vocabulary, dialect registry, index-file protocol and the semantic find contract",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"dsh",
|
|
7
|
+
"dsh-plugin",
|
|
8
|
+
"deepseek-harness",
|
|
9
|
+
"cordis",
|
|
10
|
+
"cordis-plugin",
|
|
11
|
+
"database",
|
|
12
|
+
"sql",
|
|
13
|
+
"sqlite",
|
|
14
|
+
"mysql",
|
|
15
|
+
"postgresql",
|
|
16
|
+
"mongodb",
|
|
17
|
+
"redis",
|
|
18
|
+
"schema",
|
|
19
|
+
"ai-agent",
|
|
20
|
+
"llm-tools"
|
|
21
|
+
],
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "CC ZHAO",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/CC19990113/dsh-plugin-dbgraph.git",
|
|
27
|
+
"directory": "packages/service"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/CC19990113/dsh-plugin-dbgraph#readme",
|
|
30
|
+
"bugs": "https://github.com/CC19990113/dsh-plugin-dbgraph/issues",
|
|
31
|
+
"type": "module",
|
|
32
|
+
"main": "lib/index.js",
|
|
33
|
+
"types": "lib/index.d.ts",
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./lib/index.d.ts",
|
|
37
|
+
"default": "./lib/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./invariant": {
|
|
40
|
+
"types": "./lib/invariant.d.ts",
|
|
41
|
+
"default": "./lib/invariant.js"
|
|
42
|
+
},
|
|
43
|
+
"./package.json": "./package.json"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"lib/**/*.js",
|
|
47
|
+
"lib/**/*.d.ts"
|
|
48
|
+
],
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public",
|
|
51
|
+
"provenance": true
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"@deepseek-ai/cordis": ">=4.0.1",
|
|
55
|
+
"@deepseek-ai/dsh-brand": ">=0.1.0-rc.6",
|
|
56
|
+
"@deepseek-ai/dsh-invariants": ">=0.1.0-rc.6",
|
|
57
|
+
"@deepseek-ai/dsh-llm": ">=0.1.0-rc.6"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
61
|
+
"@deepseek-ai/dsh-brand": "0.1.0-rc.6",
|
|
62
|
+
"@deepseek-ai/dsh-invariants": "0.1.0-rc.6",
|
|
63
|
+
"@deepseek-ai/dsh-llm": "0.1.0-rc.6"
|
|
64
|
+
}
|
|
6
65
|
}
|
package/README.md
DELETED