@aalis/api-authority 0.9.0 → 0.11.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/README.md +3 -3
- package/dist/index.d.ts +60 -103
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -15,10 +15,10 @@ pnpm add @aalis/api-authority
|
|
|
15
15
|
## 使用
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
|
-
import
|
|
19
|
-
```
|
|
18
|
+
import { authority } from '@aalis/api-authority';
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
// uses: { authority }
|
|
21
|
+
```
|
|
22
22
|
|
|
23
23
|
## 许可
|
|
24
24
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
import type { OriginKind } from '@aalis/api-approval';
|
|
1
2
|
/** 细粒度能力标识,如 tool:file.write、command:shutdown */
|
|
2
3
|
export type CapabilityId = string;
|
|
3
4
|
/**
|
|
4
5
|
* 能力默认可见性(轴 A · 授权:谁默认能用):
|
|
5
6
|
* - public:所有人默认拥有(除非被显式 deny),如查天气、查状态。
|
|
6
|
-
* - restricted
|
|
7
|
+
* - restricted:门槛较高,无 risk 声明时最低等级为 RESTRICTED_LEVEL,如关机、写 users.json。
|
|
7
8
|
*/
|
|
8
9
|
export type CapabilityVisibility = 'public' | 'restricted';
|
|
9
10
|
/**
|
|
10
11
|
* 能力确认要求(轴 B · 确认:是否需「人确认」这一步,与 visibility 正交、owner 也生效):
|
|
11
12
|
* - 缺省/undefined:无需确认(不提醒)。
|
|
12
|
-
* - 'session'
|
|
13
|
-
* - 'always'
|
|
13
|
+
* - 'session':执行前需人确认;系统源(ExecutionGuardContext.skipConfirm)与 restrictedPolicy 白名单可免。
|
|
14
|
+
* - 'always':每次都需确认,什么都免不掉(最危险操作)。
|
|
15
|
+
*
|
|
16
|
+
* 怎么确认看操作是谁发起的:工具由模型调用,确认是 owner 审批(@aalis/api-approval);指令由人亲手输入,
|
|
17
|
+
* 确认是向发出者本人核对意图(ExecutionGuardContext.confirmIntent)。
|
|
14
18
|
*
|
|
15
19
|
* 与 visibility 正交:visibility 管「授权(能不能)」,confirm 管「意图确认(是不是你本人此刻要)/防注入减速带」。
|
|
16
20
|
* 即便 owner=`*`,命中 confirm 的能力仍须确认 —— 抵御 owner 会话内提示注入借权静默调高危。
|
|
@@ -63,38 +67,46 @@ export declare function riskDefaults(risk?: CapabilityRisk): {
|
|
|
63
67
|
/**
|
|
64
68
|
* 把 (risk, visibility, confirm) 声明展开为生效的 (visibility, confirm)。纯函数。
|
|
65
69
|
* 优先级:显式 visibility/confirm > risk 推导 > defaultVisibility。
|
|
66
|
-
* @param defaultVisibility
|
|
67
|
-
* WebUI actions 传 'restricted'(actions 默认拒,与 tool/command 相反)。
|
|
70
|
+
* @param defaultVisibility 三者皆缺省时的兜底可见性(缺省 'public')。
|
|
68
71
|
*/
|
|
69
72
|
export declare function resolveCapabilityPolicy(decl: CapabilityPolicyDecl, defaultVisibility?: CapabilityVisibility): {
|
|
70
73
|
visibility: CapabilityVisibility;
|
|
71
74
|
confirm?: CapabilityConfirm;
|
|
72
75
|
};
|
|
76
|
+
/**
|
|
77
|
+
* 调用所在的入站回合(只由 agent 工具循环填写,指令与其他调用方没有)。守卫据它判发起回合的类别,
|
|
78
|
+
* 类别决定需要确认的工具调用能不能产生 owner 审批。
|
|
79
|
+
*/
|
|
80
|
+
export interface InboundTurn {
|
|
81
|
+
/** 同 IncomingMessage.source:真人消息为 undefined,内部注入为注入方标识 */
|
|
82
|
+
source?: string;
|
|
83
|
+
/**
|
|
84
|
+
* 宿主通知延续某次工具调用时,那次调用的发言者(IncomingMessage.hostNotice.callerUserId)。
|
|
85
|
+
* 那次调用是 owner 在自己会话里发起的,这一轮才是 owner 链的延续
|
|
86
|
+
*/
|
|
87
|
+
callerUserId?: string;
|
|
88
|
+
/** 同 IncomingMessage.messageId:入站消息的平台消息 id。转到后台的工具调用结束时,结束通知的回复据它引用这条消息 */
|
|
89
|
+
messageId?: string;
|
|
90
|
+
}
|
|
73
91
|
/** 执行守卫上下文 —— 操作执行前权限检查的最小信息 */
|
|
74
92
|
export interface ExecutionGuardContext {
|
|
75
93
|
/** 操作名称(指令名 / 工具名) */
|
|
76
94
|
name: string;
|
|
77
95
|
/** 操作类型 */
|
|
78
96
|
type: 'command' | 'tool';
|
|
79
|
-
/** 操作主能力的生效可见性(轴 A;注册时已由 resolveCapabilityPolicy 展开 risk/默认)。无 risk
|
|
97
|
+
/** 操作主能力的生效可见性(轴 A;注册时已由 resolveCapabilityPolicy 展开 risk/默认)。无 risk 时据它兜底 minLevel */
|
|
80
98
|
visibility: CapabilityVisibility;
|
|
81
|
-
/** 操作原始风险声明(透传,供 authority 派生
|
|
99
|
+
/** 操作原始风险声明(透传,供 authority 派生 minLevel:safe→0 / sensitive→1 / dangerous→2);缺省回退 visibility */
|
|
82
100
|
risk?: CapabilityRisk;
|
|
83
101
|
/** 操作的生效确认要求(轴 B,与 visibility/档位 正交、owner 也生效);缺省=不确认 */
|
|
84
102
|
confirm?: CapabilityConfirm;
|
|
85
103
|
/** 会话 ID */
|
|
86
104
|
sessionId: string;
|
|
87
|
-
/**
|
|
105
|
+
/** 来源平台(会话语义;等级判定见 actor) */
|
|
88
106
|
platform: string;
|
|
89
107
|
/** 用户 ID(物理发言者;等级判定见 actor) */
|
|
90
108
|
userId?: string;
|
|
91
|
-
/**
|
|
92
|
-
* 授权身份(缺省 = platform/userId 本身):等级裁决(authorize)与 owner 的
|
|
93
|
-
* 自动确认跳过按它评估;confirm 通道选路仍按会话身份。未授权后的救援闸
|
|
94
|
-
* (restrictedPolicy 白名单 / 会话临时授予,均按会话身份登记)只在授权身份就是
|
|
95
|
-
* 会话身份时适用——actor 覆盖了会话身份(委派 / 定时 / 自发回合的无主体)时整体
|
|
96
|
-
* 不适用:物理发言者的放行不能替另一个身份解围(fail-safe,宁缺勿错)。
|
|
97
|
-
*/
|
|
109
|
+
/** 授权身份(缺省 = platform/userId 本身):等级裁决(authorize)按它评估 */
|
|
98
110
|
actor?: {
|
|
99
111
|
platform: string;
|
|
100
112
|
userId: string;
|
|
@@ -102,85 +114,44 @@ export interface ExecutionGuardContext {
|
|
|
102
114
|
/** 操作参数 */
|
|
103
115
|
args?: Record<string, unknown>;
|
|
104
116
|
/**
|
|
105
|
-
* 系统/受信源(如 scheduler,无人能点交互确认):仍走 authorize
|
|
106
|
-
*
|
|
117
|
+
* 系统/受信源(如 scheduler,无人能点交互确认):仍走 authorize 评估调用者能力,**不**绕过它(防提权)。
|
|
118
|
+
* 已授权时跳过非 always 的确认,always 照常确认。
|
|
107
119
|
*/
|
|
108
120
|
skipConfirm?: boolean;
|
|
109
|
-
/**
|
|
121
|
+
/** 调用所在回合的 id(工具调用由 agent 工具循环填写);审批随回合结束撤销 */
|
|
122
|
+
turnId?: string;
|
|
123
|
+
/** 这次工具调用的 id(同 ToolCallContext.callId);审批卡据它挂到工具卡上 */
|
|
124
|
+
callId?: string;
|
|
125
|
+
/** 调用所在的入站回合;缺省 = 调用不在由入站消息驱动的回合里(编排的节点、mcp-server 等) */
|
|
126
|
+
inbound?: InboundTurn;
|
|
127
|
+
/**
|
|
128
|
+
* 向发出者本人核对意图(指令用):调用方能在同一会话里当面问到发出者时提供,resolve true 为发出者确认。
|
|
129
|
+
* 需要确认的指令没有它(定时任务、编排注入的指令)就无从确认,按拒绝处理
|
|
130
|
+
*/
|
|
131
|
+
confirmIntent?: () => Promise<boolean>;
|
|
132
|
+
/** 调用方回合的中止信号:守卫等 owner 审批期间回合中止,审批即撤销 */
|
|
110
133
|
signal?: AbortSignal;
|
|
111
134
|
}
|
|
135
|
+
/** 判发起回合的类别要的信息:执行守卫上下文的这几项,调用方按同样的口径填 */
|
|
136
|
+
export type OriginTurn = Pick<ExecutionGuardContext, 'sessionId' | 'platform' | 'userId' | 'actor' | 'inbound'>;
|
|
112
137
|
/**
|
|
113
138
|
* 执行守卫函数。返回 null 放行;返回 string 拦截(值为原因/提示)。
|
|
114
|
-
* 由 plugin-authority 通过 setExecutionGuard()
|
|
139
|
+
* 由 plugin-authority 通过 setExecutionGuard() 注入,停用时摘掉。
|
|
115
140
|
*/
|
|
116
141
|
export type ExecutionGuard = (ctx: ExecutionGuardContext) => Promise<string | null>;
|
|
117
142
|
/**
|
|
118
143
|
* 能力统一闸请求:一次敏感操作在边界处声明它触达的能力。
|
|
119
144
|
*
|
|
120
|
-
*
|
|
121
|
-
* 调用 authorize 过同一闸。
|
|
145
|
+
* tools / commands 的执行守卫在操作边界调用 authorize 过这道闸。
|
|
122
146
|
*/
|
|
123
147
|
export interface AuthorizeRequest {
|
|
124
148
|
/** 操作主能力(tool:<name> / command:<name>) */
|
|
125
149
|
capability: CapabilityId;
|
|
126
|
-
/** 主能力的默认可见性(操作声明;无 risk
|
|
150
|
+
/** 主能力的默认可见性(操作声明;无 risk 时据它兜底 minLevel) */
|
|
127
151
|
visibility: CapabilityVisibility;
|
|
128
|
-
/** 操作原始风险(透传,供
|
|
152
|
+
/** 操作原始风险(透传,供 minLevel 派生;缺省回退 visibility) */
|
|
129
153
|
risk?: CapabilityRisk;
|
|
130
154
|
}
|
|
131
|
-
/** 用户触达未授予的 restricted 能力时,向 owner/确认回调发起的请求 */
|
|
132
|
-
export interface AccessRequest {
|
|
133
|
-
/** 操作名称 */
|
|
134
|
-
name: string;
|
|
135
|
-
/** 操作类型 */
|
|
136
|
-
type: 'command' | 'tool';
|
|
137
|
-
/** 触达的(受限)能力 */
|
|
138
|
-
capability: CapabilityId;
|
|
139
|
-
args?: Record<string, unknown>;
|
|
140
|
-
sessionId: string;
|
|
141
|
-
platform: string;
|
|
142
|
-
userId?: string;
|
|
143
|
-
/**
|
|
144
|
-
* 请求性质:
|
|
145
|
-
* - 'grant'(缺省):非 owner 触达未授予的 restricted 能力,确认=授予。
|
|
146
|
-
* - 'confirm':调用者已有权限(含 owner),仅因能力标了 confirm 轴需「意图确认」。
|
|
147
|
-
* confirm='always' 时不接受会话记忆(每次都问)。
|
|
148
|
-
*/
|
|
149
|
-
confirm?: CapabilityConfirm;
|
|
150
|
-
/**
|
|
151
|
-
* 发起回合的中止信号(可选)。已中止即不问直接拒;等待应答期间中止则立即拒,
|
|
152
|
-
* 确认通道应据此撤回未决提示。第三方 authority / 通道实现可忽略该字段(退化为等应答)。
|
|
153
|
-
*/
|
|
154
|
-
signal?: AbortSignal;
|
|
155
|
-
}
|
|
156
|
-
/** 批准后授予的临时委托范围:once 不持久;session 为当前会话短时授予 */
|
|
157
|
-
export interface TemporaryGrantSpec {
|
|
158
|
-
scope: 'once' | 'session';
|
|
159
|
-
/** 授予秒数,仅 scope=session 时有效 */
|
|
160
|
-
durationSeconds?: number;
|
|
161
|
-
/** 最大使用次数,仅 scope=session 时有效 */
|
|
162
|
-
maxUses?: number;
|
|
163
|
-
}
|
|
164
|
-
export interface AccessDecision {
|
|
165
|
-
allowed: boolean;
|
|
166
|
-
grant?: TemporaryGrantSpec;
|
|
167
|
-
}
|
|
168
|
-
/** 一条生效中的临时能力委托 */
|
|
169
|
-
export interface TemporaryGrant {
|
|
170
|
-
id: string;
|
|
171
|
-
capability: CapabilityId;
|
|
172
|
-
name: string;
|
|
173
|
-
type: 'command' | 'tool';
|
|
174
|
-
sessionId: string;
|
|
175
|
-
platform: string;
|
|
176
|
-
userId?: string;
|
|
177
|
-
expiresAt: number;
|
|
178
|
-
maxUses?: number;
|
|
179
|
-
used: number;
|
|
180
|
-
createdAt: number;
|
|
181
|
-
}
|
|
182
|
-
/** 确认回调:boolean 为最简允许/拒绝;对象可附带临时委托范围 */
|
|
183
|
-
export type AccessConfirmHandler = (request: AccessRequest) => Promise<boolean | AccessDecision>;
|
|
184
155
|
/** 跨平台用户身份标识 */
|
|
185
156
|
export interface UserIdentity {
|
|
186
157
|
platform: string;
|
|
@@ -201,7 +172,13 @@ export interface AuthorityService {
|
|
|
201
172
|
/** 是否为 owner(owners 配置命中 → 拥有 `*`) */
|
|
202
173
|
isOwner(platform: string, userId?: string): boolean;
|
|
203
174
|
/**
|
|
204
|
-
*
|
|
175
|
+
* 这一轮是谁发起的(契约见 api-approval 的 OriginKind):按回合的来源判,不按授权身份判,会话的受众按会话管理里
|
|
176
|
+
* 记下的字段判。只有 owner 与 owner-chain 能产生审批;本地效果由触及服务按这一类别定主体:owner 与 owner-chain 为
|
|
177
|
+
* owner,subtask 随派出它的那一轮父会话,其余没有本地效果
|
|
178
|
+
*/
|
|
179
|
+
originOf(turn: OriginTurn): OriginKind;
|
|
180
|
+
/**
|
|
181
|
+
* 统一权限闸 —— tools / commands 的执行守卫在操作边界调用本方法。
|
|
205
182
|
* 数字等级裁决:deniedCapabilities(全局硬禁) > owner(∞) > 用户 level >= 操作 minLevel;
|
|
206
183
|
* minLevel 由 request.risk/visibility/config.authorityOverrides 派生。
|
|
207
184
|
* @returns null 放行;string 为拒绝原因(可直接展示)
|
|
@@ -217,26 +194,10 @@ export interface AuthorityService {
|
|
|
217
194
|
setUserLevel(target: UserIdentity, level: number): void;
|
|
218
195
|
/** 删除用户记录(等级一并清除,回退默认 0) */
|
|
219
196
|
removeUser(platform: string, userId: string): void;
|
|
220
|
-
/**
|
|
221
|
-
* 「未授权」分支专用闸:请求是否被 owner 预先放行(restrictedPolicy 白名单 / 该用户在本会话已有授予),
|
|
222
|
-
* 且不触犯硬禁 / 资源保护。**绝不询问发起者本人**(杜绝自我确认提权)。守卫 authorize 拒绝后调本方法。
|
|
223
|
-
*/
|
|
224
|
-
isPreApproved(request: AccessRequest): boolean;
|
|
225
|
-
/** 用户触达未授予的 restricted 能力时,过临时委托流程(白名单策略 → 会话临时授予 → 确认回调) */
|
|
226
|
-
requestAccess(request: AccessRequest): Promise<boolean>;
|
|
227
|
-
listTemporaryGrants(): TemporaryGrant[];
|
|
228
|
-
/** 撤销某能力上所有未过期的会话授予(操作门槛变更时调用),返回撤销条数 */
|
|
229
|
-
revokeGrantsOfCapability(capability: string): number;
|
|
230
|
-
revokeTemporaryGrant(id: string): boolean;
|
|
231
|
-
/**
|
|
232
|
-
* 注册平台确认通道('*' 为兜底)。返回注销函数——注册方 dispose 时必须调用,
|
|
233
|
-
* 否则插件卸载后 authority 仍会把确认请求投给已死的 handler,等到超时才拒。
|
|
234
|
-
*/
|
|
235
|
-
setConfirmHandler(platform: string, handler: AccessConfirmHandler): () => void;
|
|
236
197
|
save(): void;
|
|
237
198
|
listUsers(): AuthorityUserEntry[];
|
|
238
199
|
}
|
|
239
|
-
declare module '@aalis/
|
|
200
|
+
declare module '@aalis/api-host-config' {
|
|
240
201
|
interface AalisConfig {
|
|
241
202
|
/** owner 列表(owner = `*`,拥有一切) */
|
|
242
203
|
owners?: UserIdentity[];
|
|
@@ -253,8 +214,8 @@ declare module '@aalis/core' {
|
|
|
253
214
|
*/
|
|
254
215
|
confirmOverrides?: Record<string, CapabilityConfirm | 'off'>;
|
|
255
216
|
/**
|
|
256
|
-
*
|
|
257
|
-
*
|
|
217
|
+
* 免确认白名单:allow 列出不必确认的能力 glob(['*'] 全放);duration 生效时长(秒,0=永久)。
|
|
218
|
+
* 只免 confirm 为 session 的确认,always 照常确认;不放宽授权,等级不够的照样拒。
|
|
258
219
|
* 运行时启用时点(enabledAt)不持久化,是 plugin-authority 运行时状态。
|
|
259
220
|
*/
|
|
260
221
|
restrictedPolicy?: {
|
|
@@ -262,12 +223,8 @@ declare module '@aalis/core' {
|
|
|
262
223
|
duration?: number;
|
|
263
224
|
};
|
|
264
225
|
/**
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*/
|
|
268
|
-
autoConfirmUntil?: number;
|
|
269
|
-
/**
|
|
270
|
-
* 网络出口闸(SSRF 防护,粗粒度高效):限制由 LLM/用户 URL 触发的 safeFetch 能连到哪。
|
|
226
|
+
* 网络出口闸(SSRF 防护,粗粒度高效):限制由 LLM/用户 URL 触发的出口能连到哪,即 safeFetch,
|
|
227
|
+
* 以及 tool-browser 开启 blockPrivate 时的浏览器网络闸(三项都遵循)。
|
|
271
228
|
* 不影响你自己配置的固定本地服务(ollama/onebot daemon 走裸 fetch,不过 safeFetch)。
|
|
272
229
|
*/
|
|
273
230
|
network?: {
|
|
@@ -280,5 +237,5 @@ declare module '@aalis/core' {
|
|
|
280
237
|
};
|
|
281
238
|
}
|
|
282
239
|
}
|
|
283
|
-
export declare const authority: import("@aalis/core").ServiceDescriptor<AuthorityService,
|
|
240
|
+
export declare const authority: import("@aalis/core").ServiceDescriptor<AuthorityService, AuthorityService>;
|
|
284
241
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -40,8 +40,7 @@ export function riskDefaults(risk) {
|
|
|
40
40
|
/**
|
|
41
41
|
* 把 (risk, visibility, confirm) 声明展开为生效的 (visibility, confirm)。纯函数。
|
|
42
42
|
* 优先级:显式 visibility/confirm > risk 推导 > defaultVisibility。
|
|
43
|
-
* @param defaultVisibility
|
|
44
|
-
* WebUI actions 传 'restricted'(actions 默认拒,与 tool/command 相反)。
|
|
43
|
+
* @param defaultVisibility 三者皆缺省时的兜底可见性(缺省 'public')。
|
|
45
44
|
*/
|
|
46
45
|
export function resolveCapabilityPolicy(decl, defaultVisibility = 'public') {
|
|
47
46
|
const base = riskDefaults(decl.risk);
|
|
@@ -50,6 +49,6 @@ export function resolveCapabilityPolicy(decl, defaultVisibility = 'public') {
|
|
|
50
49
|
confirm: decl.confirm ?? base.confirm,
|
|
51
50
|
};
|
|
52
51
|
}
|
|
53
|
-
// -----
|
|
52
|
+
// ----- 服务描述符(调用型:业务层就是提供者的形状)-----
|
|
54
53
|
export const authority = defineService('authority');
|
|
55
54
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyD5C,MAAM,aAAa,GAA8F;IAC/G,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC9B,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;IACvC,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;CAC5D,CAAC;AAEF,oBAAoB;AACpB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAkE;IACnG,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,iBAAiB,CAAC;IACnD,OAAO,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAqB;IAIhD,OAAO,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAA0B,EAC1B,oBAA0C,QAAQ;IAKlD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,iBAAiB;QACnE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;KACtC,CAAC;AACJ,CAAC;AAoMD,oCAAoC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAmB,WAAW,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/api-authority",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,16 +18,17 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@aalis/api-approval": ">=0.1.0 <1.0.0",
|
|
23
|
+
"@aalis/api-host-config": ">=0.2.0 <1.0.0"
|
|
24
|
+
},
|
|
21
25
|
"devDependencies": {
|
|
22
26
|
"@types/node": "^22.0.0",
|
|
23
27
|
"typescript": "^5.7.0",
|
|
24
|
-
"@aalis/core": "0.
|
|
25
|
-
},
|
|
26
|
-
"aalis": {
|
|
27
|
-
"types": true
|
|
28
|
+
"@aalis/core": "0.20.0"
|
|
28
29
|
},
|
|
29
30
|
"peerDependencies": {
|
|
30
|
-
"@aalis/core": ">=0.
|
|
31
|
+
"@aalis/core": ">=0.20.0 <1.0.0"
|
|
31
32
|
},
|
|
32
33
|
"keywords": [
|
|
33
34
|
"aalis",
|