@aalis/plugin-authority 0.4.0 → 0.5.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/dist/authority-manager.d.ts +14 -19
- package/dist/authority-manager.d.ts.map +1 -1
- package/dist/authority-manager.js +64 -124
- package/dist/authority-manager.js.map +1 -1
- package/dist/authority-model.d.ts +51 -0
- package/dist/authority-model.d.ts.map +1 -0
- package/dist/authority-model.js +85 -0
- package/dist/authority-model.js.map +1 -0
- package/dist/capability-model.d.ts +0 -8
- package/dist/capability-model.d.ts.map +1 -1
- package/dist/capability-model.js +2 -15
- package/dist/capability-model.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +182 -345
- package/dist/index.js.map +1 -1
- package/dist/tier-model.d.ts +42 -0
- package/dist/tier-model.d.ts.map +1 -0
- package/dist/tier-model.js +83 -0
- package/dist/tier-model.js.map +1 -0
- package/dist/user-store.d.ts +5 -31
- package/dist/user-store.d.ts.map +1 -1
- package/dist/user-store.js +19 -154
- package/dist/user-store.js.map +1 -1
- package/package.json +10 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConfigManager, Logger } from '@aalis/core';
|
|
2
|
-
import type { AccessConfirmHandler, AccessRequest, AuthorityService, AuthorityUserEntry, AuthorizeRequest, TemporaryGrant,
|
|
2
|
+
import type { AccessConfirmHandler, AccessRequest, AuthorityService, AuthorityUserEntry, AuthorizeRequest, TemporaryGrant, UserIdentity } from '@aalis/plugin-authority-api';
|
|
3
3
|
import type { StorageService } from '@aalis/plugin-storage-api';
|
|
4
4
|
export declare class AuthorityManager implements AuthorityService {
|
|
5
5
|
private readonly config;
|
|
@@ -13,24 +13,28 @@ export declare class AuthorityManager implements AuthorityService {
|
|
|
13
13
|
constructor(config: ConfigManager, logger: Logger, storage: StorageService);
|
|
14
14
|
init(): Promise<void>;
|
|
15
15
|
isOwner(platform: string, userId?: string): boolean;
|
|
16
|
-
/**
|
|
17
|
-
private
|
|
18
|
-
/** 一条能力是否为 restricted(命中内置 + config.restrictedCapabilities) */
|
|
19
|
-
private isRestrictedCap;
|
|
16
|
+
/** 触发者有效等级(owner→∞;登记等级;无记录→默认 0)。v1 无访问器(onebot 群角色待 sender.role 透传后接线)。 */
|
|
17
|
+
private level;
|
|
20
18
|
authorize(identity: {
|
|
21
19
|
platform: string;
|
|
22
20
|
userId?: string;
|
|
23
21
|
}, request: AuthorizeRequest): string | null;
|
|
24
|
-
|
|
22
|
+
setUserLevel(target: UserIdentity, level: number): void;
|
|
25
23
|
removeUser(platform: string, userId: string): void;
|
|
26
|
-
listDelegatees(granter: UserIdentity | null): AuthorityUserEntry[];
|
|
27
24
|
setConfirmHandler(platform: string, handler: AccessConfirmHandler): void;
|
|
28
25
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
26
|
+
* 该请求是否被 owner **预先**放行(白名单 / 该用户在本会话已有的临时授予)——**绝不**含"问发起者本人"。
|
|
27
|
+
* 先过绝对闸(任何放行都不得绕过):硬禁 deniedCapabilities。
|
|
28
|
+
* 再看:restrictedPolicy 全局白名单(自动化免确认)或 会话临时授予。
|
|
29
|
+
* 临时授予按 **userId + sessionId + capability** 匹配 —— 群内 sessionId 全群共享时,不跨用户泄漏。
|
|
32
30
|
*/
|
|
33
31
|
private isTemporarilyAllowed;
|
|
32
|
+
/**
|
|
33
|
+
* 守卫「未授权」分支专用闸:请求是否被 owner 预先放行(白名单 / 该用户已有授予),
|
|
34
|
+
* 且不触犯硬禁 / 资源保护。**绝不询问发起者本人** —— 杜绝低档用户对超档操作自我确认提权。
|
|
35
|
+
* 守卫拒绝后改调本方法(而非 requestAccess),requestAccess 仅用于「已授权但需意图确认」。
|
|
36
|
+
*/
|
|
37
|
+
isPreApproved(request: AccessRequest): boolean;
|
|
34
38
|
requestAccess(request: AccessRequest): Promise<boolean>;
|
|
35
39
|
listTemporaryGrants(): TemporaryGrant[];
|
|
36
40
|
revokeTemporaryGrant(id: string): boolean;
|
|
@@ -40,15 +44,6 @@ export declare class AuthorityManager implements AuthorityService {
|
|
|
40
44
|
private createTempGrant;
|
|
41
45
|
private pruneTempGrants;
|
|
42
46
|
listUsers(): AuthorityUserEntry[];
|
|
43
|
-
setPassword(platform: string, userId: string, password: string): Promise<void>;
|
|
44
|
-
verifyPassword(platform: string, userId: string, password: string): Promise<boolean>;
|
|
45
|
-
hasPassword(platform: string, userId: string): boolean;
|
|
46
|
-
createBindCode(platform: string, userId: string): {
|
|
47
|
-
code: string;
|
|
48
|
-
expiresAt: number;
|
|
49
|
-
};
|
|
50
|
-
consumeBindCode(code: string, identity: UserIdentity): UserIdentity;
|
|
51
|
-
unlinkIdentity(platform: string, userId: string): boolean;
|
|
52
47
|
save(): void;
|
|
53
48
|
}
|
|
54
49
|
//# sourceMappingURL=authority-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority-manager.d.ts","sourceRoot":"","sources":["../src/authority-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACV,oBAAoB,EAEpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"authority-manager.d.ts","sourceRoot":"","sources":["../src/authority-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACV,oBAAoB,EAEpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAahE,qBAAa,gBAAiB,YAAW,gBAAgB;IASrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,QAAQ,CAAK;IACrB,sDAAsD;IACtD,OAAO,CAAC,eAAe,CAAuB;gBAG3B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EAC/B,OAAO,EAAE,cAAc;IAKzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAOnD,6EAA6E;IAC7E,OAAO,CAAC,KAAK;IAOb,SAAS,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI;IAoBpG,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYvD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAIxE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7D,mBAAmB,IAAI,cAAc,EAAE;IAKvC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAMzC,iBAAiB,IAAI,IAAI;IAIzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,eAAe;IAQvB,SAAS,IAAI,kBAAkB,EAAE;IAiBjC,IAAI,IAAI,IAAI;CAGb"}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_AUTHORITY, matchAnyCap, OWNER_RANK, resolveAccess, resolveMinLevel } from './authority-model.js';
|
|
2
2
|
import { UserStore } from './user-store.js';
|
|
3
3
|
// ════════════════════════════════════════════════════════════
|
|
4
|
-
// AuthorityManager ——
|
|
4
|
+
// AuthorityManager —— 数字等级单轴的 AuthorityService 实现(策略层)
|
|
5
5
|
//
|
|
6
|
-
// owner
|
|
7
|
-
//
|
|
8
|
-
//
|
|
6
|
+
// owner=∞;每个外部身份一个登记等级(缺省 0,封禁=负数);操作一个 minLevel(risk/visibility/authorityOverrides 派生);
|
|
7
|
+
// 裁决 deniedCapabilities(全局硬禁) > owner > level>=minLevel(纯函数在 authority-model)。
|
|
8
|
+
// confirm 轴 + 临时放行正交保留。
|
|
9
|
+
// 数据层(users.json v5 等级存储)委托给 UserStore。
|
|
9
10
|
// ════════════════════════════════════════════════════════════
|
|
10
|
-
/** 内置受限能力:写用户表 / 计划任务 / 源码根 —— 默认禁、仅 owner 或被授予者可触达 */
|
|
11
|
-
const BUILTIN_RESTRICTED = [
|
|
12
|
-
'storage:path:data:/users.json:write',
|
|
13
|
-
'storage:path:data:/users.json:delete',
|
|
14
|
-
'storage:path:data:/scheduler-jobs.json:write',
|
|
15
|
-
'storage:path:data:/scheduler-jobs.json:delete',
|
|
16
|
-
'storage:aalis:write',
|
|
17
|
-
'storage:aalis:delete',
|
|
18
|
-
];
|
|
19
11
|
export class AuthorityManager {
|
|
20
12
|
config;
|
|
21
13
|
logger;
|
|
@@ -42,102 +34,65 @@ export class AuthorityManager {
|
|
|
42
34
|
const owners = this.config.get('owners') ?? [];
|
|
43
35
|
return owners.some((o) => o.platform === platform && o.userId === userId);
|
|
44
36
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
const accountRecord = accountKey ? this.store.get(accountKey) : undefined;
|
|
52
|
-
const grants = (accountKey ? accountRecord?.caps?.grant : ownRecord?.caps?.grant) ?? [];
|
|
53
|
-
const denies = [...(ownRecord?.caps?.deny ?? []), ...(accountRecord?.caps?.deny ?? [])];
|
|
54
|
-
return { isOwner, grants, denies };
|
|
37
|
+
/** 触发者有效等级(owner→∞;登记等级;无记录→默认 0)。v1 无访问器(onebot 群角色待 sender.role 透传后接线)。 */
|
|
38
|
+
level(platform, userId) {
|
|
39
|
+
if (this.isOwner(platform, userId))
|
|
40
|
+
return OWNER_RANK;
|
|
41
|
+
const key = userId ? `${platform}:${userId}` : undefined;
|
|
42
|
+
return (key ? this.store.get(key)?.level : undefined) ?? DEFAULT_AUTHORITY;
|
|
55
43
|
}
|
|
56
|
-
|
|
57
|
-
isRestrictedCap(cap) {
|
|
58
|
-
if (matchAnyCap(BUILTIN_RESTRICTED, cap))
|
|
59
|
-
return true;
|
|
60
|
-
const extra = this.config.get('restrictedCapabilities') ?? [];
|
|
61
|
-
return matchAnyCap(extra, cap);
|
|
62
|
-
}
|
|
63
|
-
// ── 能力统一闸(静态判定;临时委托在 requestAccess)──────────
|
|
44
|
+
// ── 统一权限闸(等级静态判定;临时放行/确认在 requestAccess)──────────
|
|
64
45
|
authorize(identity, request) {
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (primary)
|
|
80
|
-
return primary;
|
|
81
|
-
// 资源能力:受限性由 restrictedCapabilities 判定
|
|
82
|
-
for (const cap of request.resourceCapabilities ?? []) {
|
|
83
|
-
const rejection = check(cap, this.isRestrictedCap(cap));
|
|
84
|
-
if (rejection)
|
|
85
|
-
return rejection;
|
|
46
|
+
const level = this.level(identity.platform, identity.userId);
|
|
47
|
+
const isOwner = this.isOwner(identity.platform, identity.userId);
|
|
48
|
+
const denied = (this.config.get('deniedCapabilities') ?? []);
|
|
49
|
+
const authorityOverrides = (this.config.get('authorityOverrides') ?? {});
|
|
50
|
+
// 主能力:minLevel 由 authorityOverrides > risk > visibility 派生
|
|
51
|
+
const minLevel = resolveMinLevel(request.capability, {
|
|
52
|
+
authorityOverrides,
|
|
53
|
+
risk: request.risk,
|
|
54
|
+
visibility: request.visibility,
|
|
55
|
+
});
|
|
56
|
+
if (!resolveAccess({ level, minLevel, isOwner, denied, capability: request.capability })) {
|
|
57
|
+
if (matchAnyCap(denied, request.capability))
|
|
58
|
+
return `已被系统禁用: ${request.capability}`;
|
|
59
|
+
return `权限不足: "${request.capability}" 需等级 ${minLevel}(当前 ${level})`;
|
|
86
60
|
}
|
|
87
61
|
return null;
|
|
88
62
|
}
|
|
89
|
-
// ──
|
|
90
|
-
|
|
91
|
-
const normalize = (list) => {
|
|
92
|
-
const cleaned = [...new Set((list ?? []).map(p => p.trim()).filter(Boolean))];
|
|
93
|
-
return cleaned.length > 0 ? cleaned : undefined;
|
|
94
|
-
};
|
|
95
|
-
const grant = normalize(caps.grant);
|
|
96
|
-
const deny = normalize(caps.deny);
|
|
97
|
-
// 子集约束:非 owner 授予方只能授予自己持有的能力(单调递减防越权)
|
|
98
|
-
if (granter && !this.isOwner(granter.platform, granter.userId)) {
|
|
99
|
-
const gRes = this.resolve(granter.platform, granter.userId);
|
|
100
|
-
const bad = rejectedDelegations({ isOwner: false, publicCaps: [], grants: gRes.grants, denies: gRes.denies }, grant ?? []);
|
|
101
|
-
if (bad.length > 0) {
|
|
102
|
-
throw new Error(`越权:你不持有这些能力,无法授予:${bad.join('、')}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
63
|
+
// ── 等级设置(owner 管理;单轴,无 per-user 特批)──────────
|
|
64
|
+
setUserLevel(target, level) {
|
|
105
65
|
const key = `${target.platform}:${target.userId}`;
|
|
106
66
|
const existing = this.store.get(key);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (!next.caps && !next.secret && !next.links) {
|
|
67
|
+
// 默认等级(0)且无备注 → 直接清记录(保持 users.json 精简)
|
|
68
|
+
if (level === DEFAULT_AUTHORITY && !existing?.note) {
|
|
110
69
|
this.store.delete(key);
|
|
111
70
|
}
|
|
112
71
|
else {
|
|
113
|
-
this.store.set(key,
|
|
72
|
+
this.store.set(key, { ...existing, level });
|
|
114
73
|
}
|
|
115
|
-
this.logger.debug(
|
|
74
|
+
this.logger.debug(`设置等级: ${key} → ${level}`);
|
|
116
75
|
}
|
|
117
76
|
removeUser(platform, userId) {
|
|
118
77
|
if (this.store.delete(`${platform}:${userId}`))
|
|
119
78
|
this.logger.debug(`删除用户记录: ${platform}:${userId}`);
|
|
120
79
|
}
|
|
121
|
-
listDelegatees(granter) {
|
|
122
|
-
const granterKey = granter ? `${granter.platform}:${granter.userId}` : null;
|
|
123
|
-
return this.listUsers().filter(u => {
|
|
124
|
-
const entry = this.store.get(`${u.platform}:${u.userId}`);
|
|
125
|
-
// owner(null)列顶层:无 grantedBy 且非 owner 自身的用户
|
|
126
|
-
if (granterKey === null)
|
|
127
|
-
return !entry?.grantedBy && !u.isOwner;
|
|
128
|
-
return entry?.grantedBy === granterKey;
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
80
|
// ── 临时能力委托(restricted 能力的时限/限次放行)──────────────
|
|
132
81
|
setConfirmHandler(platform, handler) {
|
|
133
82
|
this.confirmHandlers.set(platform, handler);
|
|
134
83
|
}
|
|
135
84
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
85
|
+
* 该请求是否被 owner **预先**放行(白名单 / 该用户在本会话已有的临时授予)——**绝不**含"问发起者本人"。
|
|
86
|
+
* 先过绝对闸(任何放行都不得绕过):硬禁 deniedCapabilities。
|
|
87
|
+
* 再看:restrictedPolicy 全局白名单(自动化免确认)或 会话临时授予。
|
|
88
|
+
* 临时授予按 **userId + sessionId + capability** 匹配 —— 群内 sessionId 全群共享时,不跨用户泄漏。
|
|
139
89
|
*/
|
|
140
90
|
isTemporarilyAllowed(request) {
|
|
91
|
+
const denied = (this.config.get('deniedCapabilities') ?? []);
|
|
92
|
+
// 硬禁绝对:主能力命中 deniedCapabilities 时,任何放行路径都不得绕过
|
|
93
|
+
if (matchAnyCap(denied, request.capability))
|
|
94
|
+
return false;
|
|
95
|
+
// owner 全局白名单(自动化免确认)
|
|
141
96
|
const policy = this.config.get('restrictedPolicy');
|
|
142
97
|
if (policy?.allow && policy.allow.length > 0) {
|
|
143
98
|
if (!policy.duration ||
|
|
@@ -147,26 +102,41 @@ export class AuthorityManager {
|
|
|
147
102
|
return true;
|
|
148
103
|
}
|
|
149
104
|
}
|
|
105
|
+
// 会话临时授予:同一用户 + 同会话 + 同能力(userId 必须匹配,防群内跨用户白嫖)
|
|
150
106
|
this.pruneTempGrants();
|
|
151
107
|
for (const g of this.tempGrants.values()) {
|
|
152
108
|
if (g.sessionId !== request.sessionId)
|
|
153
109
|
continue;
|
|
110
|
+
if (g.userId !== request.userId)
|
|
111
|
+
continue;
|
|
154
112
|
if (g.capability === request.capability || matchAnyCap([g.capability], request.capability))
|
|
155
113
|
return true;
|
|
156
114
|
}
|
|
157
115
|
return false;
|
|
158
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* 守卫「未授权」分支专用闸:请求是否被 owner 预先放行(白名单 / 该用户已有授予),
|
|
119
|
+
* 且不触犯硬禁 / 资源保护。**绝不询问发起者本人** —— 杜绝低档用户对超档操作自我确认提权。
|
|
120
|
+
* 守卫拒绝后改调本方法(而非 requestAccess),requestAccess 仅用于「已授权但需意图确认」。
|
|
121
|
+
*/
|
|
122
|
+
isPreApproved(request) {
|
|
123
|
+
return this.isTemporarilyAllowed(request);
|
|
124
|
+
}
|
|
159
125
|
async requestAccess(request) {
|
|
160
|
-
|
|
126
|
+
// confirm='always':每次都问,不接受白名单/会话记忆(最高危)
|
|
127
|
+
const always = request.confirm === 'always';
|
|
128
|
+
if (!always && this.isTemporarilyAllowed(request)) {
|
|
161
129
|
this.consumeTempGrant(request);
|
|
162
130
|
return true;
|
|
163
131
|
}
|
|
164
|
-
|
|
132
|
+
// 精确平台 handler 优先(如 WebUI 的 WS 确认);否则落到 '*' 通配 fallback
|
|
133
|
+
// (plugin-session-confirm 注册,经 gateway 总线覆盖 onebot/cli/任何会话型平台)。
|
|
134
|
+
const handler = this.confirmHandlers.get(request.platform) ?? this.confirmHandlers.get('*');
|
|
165
135
|
if (!handler)
|
|
166
136
|
return false;
|
|
167
137
|
try {
|
|
168
138
|
const decision = this.normalizeDecision(await handler(request));
|
|
169
|
-
if (decision.allowed && decision.grant?.scope === 'session')
|
|
139
|
+
if (!always && decision.allowed && decision.grant?.scope === 'session')
|
|
170
140
|
this.createTempGrant(request, decision);
|
|
171
141
|
return decision.allowed;
|
|
172
142
|
}
|
|
@@ -197,6 +167,8 @@ export class AuthorityManager {
|
|
|
197
167
|
continue;
|
|
198
168
|
if (g.sessionId !== request.sessionId)
|
|
199
169
|
continue;
|
|
170
|
+
if (g.userId !== request.userId)
|
|
171
|
+
continue;
|
|
200
172
|
g.used++;
|
|
201
173
|
if (g.maxUses && g.used >= g.maxUses)
|
|
202
174
|
this.tempGrants.delete(g.id);
|
|
@@ -243,44 +215,12 @@ export class AuthorityManager {
|
|
|
243
215
|
platform,
|
|
244
216
|
userId,
|
|
245
217
|
isOwner: this.isOwner(platform, userId),
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
grantedBy: record.grantedBy,
|
|
249
|
-
hasPassword: record.secret ? true : undefined,
|
|
250
|
-
links: record.links,
|
|
251
|
-
linkedTo: this.store.accountOf(key),
|
|
218
|
+
level: record.level ?? DEFAULT_AUTHORITY,
|
|
219
|
+
note: record.note,
|
|
252
220
|
});
|
|
253
221
|
}
|
|
254
|
-
// 无自身记录的被绑身份也可见
|
|
255
|
-
for (const [identityKey, accountKey] of this.store.links()) {
|
|
256
|
-
if (this.store.get(identityKey))
|
|
257
|
-
continue;
|
|
258
|
-
const idx = identityKey.indexOf(':');
|
|
259
|
-
const platform = identityKey.slice(0, idx);
|
|
260
|
-
const userId = identityKey.slice(idx + 1);
|
|
261
|
-
result.push({ platform, userId, isOwner: this.isOwner(platform, userId), linkedTo: accountKey });
|
|
262
|
-
}
|
|
263
222
|
return result;
|
|
264
223
|
}
|
|
265
|
-
// ── 密码 / 绑定(委托给 UserStore)──────────────────────────
|
|
266
|
-
setPassword(platform, userId, password) {
|
|
267
|
-
return this.store.setPassword(platform, userId, password);
|
|
268
|
-
}
|
|
269
|
-
verifyPassword(platform, userId, password) {
|
|
270
|
-
return this.store.verifyPassword(platform, userId, password);
|
|
271
|
-
}
|
|
272
|
-
hasPassword(platform, userId) {
|
|
273
|
-
return this.store.hasPassword(platform, userId);
|
|
274
|
-
}
|
|
275
|
-
createBindCode(platform, userId) {
|
|
276
|
-
return this.store.createBindCode(platform, userId);
|
|
277
|
-
}
|
|
278
|
-
consumeBindCode(code, identity) {
|
|
279
|
-
return this.store.consumeBindCode(code, identity);
|
|
280
|
-
}
|
|
281
|
-
unlinkIdentity(platform, userId) {
|
|
282
|
-
return this.store.unlinkIdentity(platform, userId);
|
|
283
|
-
}
|
|
284
224
|
save() {
|
|
285
225
|
this.store.save();
|
|
286
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority-manager.js","sourceRoot":"","sources":["../src/authority-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authority-manager.js","sourceRoot":"","sources":["../src/authority-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** owner 等级(∞):不入等级轴,靠 owners 列表归属;任何有限门槛都压不过它(防自锁)。 */
|
|
2
|
+
export declare const OWNER_RANK: number;
|
|
3
|
+
/** 未登记外部身份的默认等级。 */
|
|
4
|
+
export declare const DEFAULT_AUTHORITY = 0;
|
|
5
|
+
/** 无 risk 声明、仅标 visibility:'restricted' 的操作的兜底最低等级(≈老版「受信」门槛)。 */
|
|
6
|
+
export declare const RESTRICTED_LEVEL = 2;
|
|
7
|
+
/** 风险 → 操作最低等级:safe→0 · sensitive→1 · dangerous→2(owner 可逐条覆盖成任意整数)。 */
|
|
8
|
+
export declare function riskToLevel(risk?: 'safe' | 'sensitive' | 'dangerous'): number;
|
|
9
|
+
export declare function matchAnyCap(patterns: readonly string[], value: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 操作最低等级解析:authorityOverrides[cap] > risk 派生 > visibility 兜底。
|
|
12
|
+
* visibility 兜底仅在拿不到 risk 时用(public→0 / restricted→RESTRICTED_LEVEL)。
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveMinLevel(capability: string, opts: {
|
|
15
|
+
authorityOverrides?: Record<string, number>;
|
|
16
|
+
risk?: 'safe' | 'sensitive' | 'dangerous';
|
|
17
|
+
visibility?: 'public' | 'restricted';
|
|
18
|
+
}): number;
|
|
19
|
+
/** 一次访问裁决的输入(纯数字单轴)。 */
|
|
20
|
+
interface AccessInput {
|
|
21
|
+
/** 触发者有效等级(owner→OWNER_RANK;= 登记等级,缺省 DEFAULT_AUTHORITY) */
|
|
22
|
+
level: number;
|
|
23
|
+
/** 操作最低等级 */
|
|
24
|
+
minLevel: number;
|
|
25
|
+
isOwner: boolean;
|
|
26
|
+
/** 全局硬禁 glob(config.deniedCapabilities,配置总闸,非 per-user) */
|
|
27
|
+
denied?: readonly string[];
|
|
28
|
+
/** 被裁决的能力串(command:x / tool:x / storage:...) */
|
|
29
|
+
capability: string;
|
|
30
|
+
}
|
|
31
|
+
/** 数字等级裁决(见文件头优先级)。true=放行。 */
|
|
32
|
+
export declare function resolveAccess(input: AccessInput): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* auto 模式(owner 临时免 session 确认,类 Claude Code auto)是否激活。纯函数。
|
|
35
|
+
* `until`:-1=一直;>now=截止前激活;其余(0/过期)=关。只影响确认轴,不动等级/deny;always 确认不被它跳过(调用方保证)。
|
|
36
|
+
*/
|
|
37
|
+
export declare function autoConfirmActive(until: number, now: number): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 确认轴是否可跳过(纯函数)。**`always` 永不可跳**(最高危:必须每次有人确认;cron 无人确认即拒)。
|
|
40
|
+
* 非 always 的两种正当跳过:① skipConfirm(系统/受信源如 scheduler,无人可点);
|
|
41
|
+
* ② auto 模式 且 触发者是 owner 本人。其余一律不跳。
|
|
42
|
+
*/
|
|
43
|
+
export declare function shouldSkipConfirm(opts: {
|
|
44
|
+
confirm: 'session' | 'always';
|
|
45
|
+
skipConfirm: boolean;
|
|
46
|
+
isOwner: boolean;
|
|
47
|
+
autoConfirmUntil: number;
|
|
48
|
+
now: number;
|
|
49
|
+
}): boolean;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=authority-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-model.d.ts","sourceRoot":"","sources":["../src/authority-model.ts"],"names":[],"mappings":"AAcA,wDAAwD;AACxD,eAAO,MAAM,UAAU,QAA2B,CAAC;AACnD,oBAAoB;AACpB,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,CAI7E;AAYD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IACJ,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAC1C,UAAU,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;CACtC,GACA,MAAM,CAKR;AAED,wBAAwB;AACxB,UAAU,WAAW;IACnB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAIzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAIV"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// ════════════════════════════════════════════════════════════
|
|
2
|
+
// authority-model —— 数字等级裁决引擎(纯函数,无副作用,便于单测)
|
|
3
|
+
//
|
|
4
|
+
// 单 owner 个人 bot 的「好管」权限:每个外部身份一个**整数等级**(越大越高,默认 0,
|
|
5
|
+
// 封禁=负数),每个操作一个**最低等级**(由 risk 派生、owner 可逐条覆盖成任意整数)。
|
|
6
|
+
// owner = ∞(不在等级轴上,靠 owners 列表归属),永不被任何门槛锁出。
|
|
7
|
+
// 裁决优先级(首个命中赢,对齐 Claude Code deny→allow 与老版数字等级):
|
|
8
|
+
// 1. 全局硬禁 deniedCapabilities → 拒(压过 owner,保 deny>owner 不变量;配置总闸,非 per-user)
|
|
9
|
+
// 2. owner → 放行
|
|
10
|
+
// 3. 等级 level >= 操作 minLevel → 放行;否则拒(封禁=负数自然连 minLevel=0 都不过)
|
|
11
|
+
// 确认轴(confirm/HITL)正交,不在此函数(owner 也吃,防注入借权)。
|
|
12
|
+
// 内含 glob 工具 matchAnyCap(资源能力/硬禁匹配)。
|
|
13
|
+
// ════════════════════════════════════════════════════════════
|
|
14
|
+
/** owner 等级(∞):不入等级轴,靠 owners 列表归属;任何有限门槛都压不过它(防自锁)。 */
|
|
15
|
+
export const OWNER_RANK = Number.POSITIVE_INFINITY;
|
|
16
|
+
/** 未登记外部身份的默认等级。 */
|
|
17
|
+
export const DEFAULT_AUTHORITY = 0;
|
|
18
|
+
/** 无 risk 声明、仅标 visibility:'restricted' 的操作的兜底最低等级(≈老版「受信」门槛)。 */
|
|
19
|
+
export const RESTRICTED_LEVEL = 2;
|
|
20
|
+
/** 风险 → 操作最低等级:safe→0 · sensitive→1 · dangerous→2(owner 可逐条覆盖成任意整数)。 */
|
|
21
|
+
export function riskToLevel(risk) {
|
|
22
|
+
if (risk === 'dangerous')
|
|
23
|
+
return 2;
|
|
24
|
+
if (risk === 'sensitive')
|
|
25
|
+
return 1;
|
|
26
|
+
return DEFAULT_AUTHORITY; // safe / 未声明
|
|
27
|
+
}
|
|
28
|
+
// ── glob(`*` 通配任意字符段)──────────────
|
|
29
|
+
function capMatches(pattern, value) {
|
|
30
|
+
if (pattern === '*' || pattern === value)
|
|
31
|
+
return true;
|
|
32
|
+
if (!pattern.includes('*'))
|
|
33
|
+
return false;
|
|
34
|
+
const re = new RegExp(`^${pattern.split('*').map(escapeRegExp).join('.*')}$`);
|
|
35
|
+
return re.test(value);
|
|
36
|
+
}
|
|
37
|
+
function escapeRegExp(s) {
|
|
38
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
39
|
+
}
|
|
40
|
+
export function matchAnyCap(patterns, value) {
|
|
41
|
+
for (const p of patterns)
|
|
42
|
+
if (capMatches(p, value))
|
|
43
|
+
return true;
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 操作最低等级解析:authorityOverrides[cap] > risk 派生 > visibility 兜底。
|
|
48
|
+
* visibility 兜底仅在拿不到 risk 时用(public→0 / restricted→RESTRICTED_LEVEL)。
|
|
49
|
+
*/
|
|
50
|
+
export function resolveMinLevel(capability, opts) {
|
|
51
|
+
const ov = opts.authorityOverrides?.[capability];
|
|
52
|
+
if (ov !== undefined)
|
|
53
|
+
return ov;
|
|
54
|
+
if (opts.risk)
|
|
55
|
+
return riskToLevel(opts.risk);
|
|
56
|
+
return opts.visibility === 'restricted' ? RESTRICTED_LEVEL : DEFAULT_AUTHORITY;
|
|
57
|
+
}
|
|
58
|
+
/** 数字等级裁决(见文件头优先级)。true=放行。 */
|
|
59
|
+
export function resolveAccess(input) {
|
|
60
|
+
if (matchAnyCap(input.denied ?? [], input.capability))
|
|
61
|
+
return false; // 1. 全局硬禁,压过 owner
|
|
62
|
+
if (input.isOwner)
|
|
63
|
+
return true; // 2. owner(∞)
|
|
64
|
+
return input.level >= input.minLevel; // 3. 等级门槛(封禁=负数自然不过)
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* auto 模式(owner 临时免 session 确认,类 Claude Code auto)是否激活。纯函数。
|
|
68
|
+
* `until`:-1=一直;>now=截止前激活;其余(0/过期)=关。只影响确认轴,不动等级/deny;always 确认不被它跳过(调用方保证)。
|
|
69
|
+
*/
|
|
70
|
+
export function autoConfirmActive(until, now) {
|
|
71
|
+
return until === -1 || (until > 0 && now < until);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 确认轴是否可跳过(纯函数)。**`always` 永不可跳**(最高危:必须每次有人确认;cron 无人确认即拒)。
|
|
75
|
+
* 非 always 的两种正当跳过:① skipConfirm(系统/受信源如 scheduler,无人可点);
|
|
76
|
+
* ② auto 模式 且 触发者是 owner 本人。其余一律不跳。
|
|
77
|
+
*/
|
|
78
|
+
export function shouldSkipConfirm(opts) {
|
|
79
|
+
if (opts.confirm === 'always')
|
|
80
|
+
return false;
|
|
81
|
+
if (opts.skipConfirm)
|
|
82
|
+
return true;
|
|
83
|
+
return opts.isOwner && autoConfirmActive(opts.autoConfirmUntil, opts.now);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=authority-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-model.js","sourceRoot":"","sources":["../src/authority-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,12 +20,4 @@ export interface CapabilityResolution {
|
|
|
20
20
|
* 注意 deny 高于 owner——owner 也可被显式 deny 某能力(如临时收回)。
|
|
21
21
|
*/
|
|
22
22
|
export declare function hasCapability(res: CapabilityResolution, cap: string): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* 委托子集约束:授予方把 requested 能力委托给下层是否合法。
|
|
25
|
-
* owner 可委托一切;非 owner 只能委托「自己当前有效持有」的能力(防越权放大)。
|
|
26
|
-
* 返回越权(不可委托)的能力项;空数组 = 全部合法。
|
|
27
|
-
*
|
|
28
|
-
* 语义:具体能力按 hasCapability 判定;委托更宽的 glob(超出自己持有的)会被拒。
|
|
29
|
-
*/
|
|
30
|
-
export declare function rejectedDelegations(granter: CapabilityResolution, requested: readonly string[]): string[];
|
|
31
23
|
//# sourceMappingURL=capability-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-model.d.ts","sourceRoot":"","sources":["../src/capability-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capability-model.d.ts","sourceRoot":"","sources":["../src/capability-model.ts"],"names":[],"mappings":"AAUA,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKlE;AAMD,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAI7E"}
|
package/dist/capability-model.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// ════════════════════════════════════════════════════════════
|
|
2
2
|
// 纯能力委托模型 —— feat/auth-capability 重构基石(纯函数,无副作用,便于单测)
|
|
3
3
|
//
|
|
4
|
-
// 用「能力 + 默认可见性 public/restricted +
|
|
4
|
+
// 用「能力 + 默认可见性 public/restricted + owner 授予加减」替代数字等级:
|
|
5
5
|
// - 能力是 glob 标识(tool:x / command:x / storage:path:...:write / *)。
|
|
6
6
|
// - 作者为每个操作声明默认可见性:public(默认所有人可用)/ restricted(默认禁,需授予)。
|
|
7
7
|
// - 用户有效能力 = owner ? 全部 : (所有 public ∪ 被授予的 restricted) − 被禁用的;deny 优先。
|
|
8
|
-
// -
|
|
9
|
-
// 单调递减、天然防越权。owner = `*`,可委托一切。
|
|
8
|
+
// - 单 owner 终态:权限只由 owner 管理(无委托树/子委托),故无子集约束。
|
|
10
9
|
// ════════════════════════════════════════════════════════════
|
|
11
10
|
/** 单条能力 glob 匹配:`*` 通配任意字符段。pattern 为 glob,value 为具体能力串。 */
|
|
12
11
|
export function capMatches(pattern, value) {
|
|
@@ -38,16 +37,4 @@ export function hasCapability(res, cap) {
|
|
|
38
37
|
return true;
|
|
39
38
|
return matchAnyCap(res.publicCaps, cap) || matchAnyCap(res.grants, cap);
|
|
40
39
|
}
|
|
41
|
-
/**
|
|
42
|
-
* 委托子集约束:授予方把 requested 能力委托给下层是否合法。
|
|
43
|
-
* owner 可委托一切;非 owner 只能委托「自己当前有效持有」的能力(防越权放大)。
|
|
44
|
-
* 返回越权(不可委托)的能力项;空数组 = 全部合法。
|
|
45
|
-
*
|
|
46
|
-
* 语义:具体能力按 hasCapability 判定;委托更宽的 glob(超出自己持有的)会被拒。
|
|
47
|
-
*/
|
|
48
|
-
export function rejectedDelegations(granter, requested) {
|
|
49
|
-
if (granter.isOwner)
|
|
50
|
-
return [];
|
|
51
|
-
return requested.filter(cap => !hasCapability(granter, cap));
|
|
52
|
-
}
|
|
53
40
|
//# sourceMappingURL=capability-model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-model.js","sourceRoot":"","sources":["../src/capability-model.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"capability-model.js","sourceRoot":"","sources":["../src/capability-model.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,EAAE;AACF,sDAAsD;AACtD,oEAAoE;AACpE,2DAA2D;AAC3D,0EAA0E;AAC1E,iDAAiD;AACjD,+DAA+D;AAE/D,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAa;IACvD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,QAA2B,EAAE,KAAa;IACpE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAgBD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,GAAW;IAClE,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,5 +10,4 @@ export declare const inject: {
|
|
|
10
10
|
};
|
|
11
11
|
export declare function apply(ctx: Context, _config: Record<string, unknown>): Promise<void>;
|
|
12
12
|
export declare const actions: PluginModule['actions'];
|
|
13
|
-
export declare const actionsMeta: PluginModule['actionsMeta'];
|
|
14
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,eAAO,MAAM,IAAI,4BAA4B,CAAC;AAC9C,eAAO,MAAM,WAAW,6BAAS,CAAC;AAClC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,QAAQ,UAAgB,CAAC;AACtC,eAAO,MAAM,MAAM;;CAElB,CAAC;AASF,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA4JzF;AAUD,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,SAAS,CA4K3C,CAAC"}
|