katanakit-js 6.2.0 → 6.6.1
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 +11 -3
- package/dist/adapters/better-auth/better-auth.service.d.ts +83 -0
- package/dist/adapters/better-auth/better-auth.service.d.ts.map +1 -0
- package/dist/adapters/better-auth/better-auth.service.js +110 -0
- package/dist/adapters/better-auth/better-auth.service.js.map +1 -0
- package/dist/adapters/better-auth/client.d.ts +51 -0
- package/dist/adapters/better-auth/client.d.ts.map +1 -0
- package/dist/adapters/better-auth/client.js +67 -0
- package/dist/adapters/better-auth/client.js.map +1 -0
- package/dist/adapters/better-auth/index.d.ts +3 -0
- package/dist/adapters/better-auth/index.d.ts.map +1 -0
- package/dist/adapters/better-auth/index.js +3 -0
- package/dist/adapters/better-auth/index.js.map +1 -0
- package/dist/adapters/express/server.d.ts +133 -1
- package/dist/adapters/express/server.d.ts.map +1 -1
- package/dist/adapters/express/server.js +199 -97
- package/dist/adapters/express/server.js.map +1 -1
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/insforge/insforge.service.d.ts +139 -4
- package/dist/adapters/insforge/insforge.service.d.ts.map +1 -1
- package/dist/adapters/insforge/insforge.service.js +383 -213
- package/dist/adapters/insforge/insforge.service.js.map +1 -1
- package/dist/adapters/notion/notion.service.d.ts +130 -144
- package/dist/adapters/notion/notion.service.d.ts.map +1 -1
- package/dist/adapters/notion/notion.service.js +330 -341
- package/dist/adapters/notion/notion.service.js.map +1 -1
- package/dist/adapters/photoswipe/index.d.ts +2 -0
- package/dist/adapters/photoswipe/index.d.ts.map +1 -0
- package/dist/adapters/photoswipe/index.js +2 -0
- package/dist/adapters/photoswipe/index.js.map +1 -0
- package/dist/adapters/photoswipe/photoswipe.service.d.ts +99 -0
- package/dist/adapters/photoswipe/photoswipe.service.d.ts.map +1 -0
- package/dist/adapters/photoswipe/photoswipe.service.js +150 -0
- package/dist/adapters/photoswipe/photoswipe.service.js.map +1 -0
- package/dist/adapters/telegram/telegram.service.d.ts +82 -13
- package/dist/adapters/telegram/telegram.service.d.ts.map +1 -1
- package/dist/adapters/telegram/telegram.service.js +133 -55
- package/dist/adapters/telegram/telegram.service.js.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.d.ts +181 -110
- package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.js +556 -465
- package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
- package/dist/config/seo.service.d.ts +1 -1
- package/dist/config/seo.service.d.ts.map +1 -1
- package/dist/config/seo.service.js +1 -1
- package/dist/config/seo.service.js.map +1 -1
- package/dist/core/services/access.service.d.ts +167 -4
- package/dist/core/services/access.service.d.ts.map +1 -1
- package/dist/core/services/access.service.js +241 -31
- package/dist/core/services/access.service.js.map +1 -1
- package/dist/core/services/agent.service.d.ts +182 -27
- package/dist/core/services/agent.service.d.ts.map +1 -1
- package/dist/core/services/agent.service.js +296 -164
- package/dist/core/services/agent.service.js.map +1 -1
- package/dist/core/services/assistant.service.d.ts +96 -5
- package/dist/core/services/assistant.service.d.ts.map +1 -1
- package/dist/core/services/assistant.service.js +171 -66
- package/dist/core/services/assistant.service.js.map +1 -1
- package/dist/core/services/dates.service.d.ts +183 -11
- package/dist/core/services/dates.service.d.ts.map +1 -1
- package/dist/core/services/dates.service.js +256 -57
- package/dist/core/services/dates.service.js.map +1 -1
- package/dist/core/services/http.service.d.ts +172 -133
- package/dist/core/services/http.service.d.ts.map +1 -1
- package/dist/core/services/http.service.js +367 -310
- package/dist/core/services/http.service.js.map +1 -1
- package/dist/core/services/logger.service.d.ts +96 -34
- package/dist/core/services/logger.service.d.ts.map +1 -1
- package/dist/core/services/logger.service.js +128 -41
- package/dist/core/services/logger.service.js.map +1 -1
- package/dist/core/services/query.service.d.ts +101 -0
- package/dist/core/services/query.service.d.ts.map +1 -1
- package/dist/core/services/query.service.js +131 -14
- package/dist/core/services/query.service.js.map +1 -1
- package/dist/core/services/utils.service.d.ts +286 -131
- package/dist/core/services/utils.service.d.ts.map +1 -1
- package/dist/core/services/utils.service.js +417 -227
- package/dist/core/services/utils.service.js.map +1 -1
- package/dist/core/services/validation.service.d.ts +48 -3
- package/dist/core/services/validation.service.d.ts.map +1 -1
- package/dist/core/services/validation.service.js +75 -23
- package/dist/core/services/validation.service.js.map +1 -1
- package/dist/infrastructure/decorators/cache.decorator.d.ts +53 -0
- package/dist/infrastructure/decorators/cache.decorator.d.ts.map +1 -0
- package/dist/infrastructure/decorators/cache.decorator.js +47 -0
- package/dist/infrastructure/decorators/cache.decorator.js.map +1 -0
- package/dist/infrastructure/decorators/index.d.ts +4 -0
- package/dist/infrastructure/decorators/index.d.ts.map +1 -0
- package/dist/infrastructure/decorators/index.js +4 -0
- package/dist/infrastructure/decorators/index.js.map +1 -0
- package/dist/infrastructure/decorators/logger.decorator.d.ts +38 -0
- package/dist/infrastructure/decorators/logger.decorator.d.ts.map +1 -0
- package/dist/infrastructure/decorators/logger.decorator.js +66 -0
- package/dist/infrastructure/decorators/logger.decorator.js.map +1 -0
- package/dist/infrastructure/decorators/retry.decorator.d.ts +37 -0
- package/dist/infrastructure/decorators/retry.decorator.d.ts.map +1 -0
- package/dist/infrastructure/decorators/retry.decorator.js +54 -0
- package/dist/infrastructure/decorators/retry.decorator.js.map +1 -0
- package/dist/infrastructure/index.d.ts +1 -0
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +1 -0
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/styles.css +2 -0
- package/package.json +49 -14
- package/scss/_flags.scss +179 -0
- package/scss/_functions.scss +168 -0
- package/scss/_mixins.scss +658 -0
- package/scss/_reset.scss +275 -0
- package/scss/_utilities.scss +449 -0
- package/scss/_variables.scss +539 -0
- package/scss/components/_index.scss +50 -0
- package/scss/demo.scss +12 -0
- package/scss/main.scss +56 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------- */
|
|
2
|
+
/* Role hierarchy (shared between strategies) */
|
|
3
|
+
/* -------------------------------------------------------------------------- */
|
|
1
4
|
/**
|
|
2
5
|
* Role ranks: lower number = more privileged. Higher-privilege roles inherit
|
|
3
6
|
* the capabilities of every role below them (e.g. `admin` can do everything
|
|
@@ -13,7 +16,7 @@ const ROLE_RANK = {
|
|
|
13
16
|
};
|
|
14
17
|
/**
|
|
15
18
|
* Default role registry: each role lists only the capabilities it adds on top
|
|
16
|
-
* of the roles below it. `guest` adds none
|
|
19
|
+
* of the roles below it. `guest` adds none - read access is public by default.
|
|
17
20
|
*/
|
|
18
21
|
const DEFAULT_ROLES = [
|
|
19
22
|
{ slug: "owner", label: "Owner", capabilities: ["roles:assign", "system:admin"] },
|
|
@@ -40,58 +43,265 @@ const DEFAULT_ROLES = [
|
|
|
40
43
|
function useCopy(definition) {
|
|
41
44
|
return { ...definition, capabilities: [...definition.capabilities] };
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
/* -------------------------------------------------------------------------- */
|
|
47
|
+
/* Concrete strategies */
|
|
48
|
+
/* -------------------------------------------------------------------------- */
|
|
49
|
+
/**
|
|
50
|
+
* Estrategia por defecto: control de acceso jerárquico basado en roles
|
|
51
|
+
* registrados. Es la estrategia estándar del servicio.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* const strategy = new HierarchicalAccessStrategy();
|
|
56
|
+
* strategy.useCan({ id: 1, roles: ["editor"] }, "content:create"); // true
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export class HierarchicalAccessStrategy {
|
|
60
|
+
/** Active registry, keyed by role slug. Starts as the default set. */
|
|
61
|
+
registry;
|
|
62
|
+
constructor() {
|
|
63
|
+
this.registry = new Map(DEFAULT_ROLES.map((role) => [role.slug, role]));
|
|
64
|
+
}
|
|
65
|
+
useDefinitionFor(role) {
|
|
66
|
+
const definition = this.registry.get(role);
|
|
67
|
+
if (!definition) {
|
|
68
|
+
throw new Error(`Unknown access role: ${role}`);
|
|
69
|
+
}
|
|
70
|
+
return definition;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Effective capabilities of a role: its own plus every less-privileged role's.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* useCapabilitiesFor("author"); // content:create, content:edit:own, ..., conversations:use
|
|
78
|
+
* useCapabilitiesFor("guest"); // []
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
useCapabilitiesFor(role) {
|
|
82
|
+
const rank = ROLE_RANK[this.useDefinitionFor(role).slug];
|
|
83
|
+
const capabilities = new Set();
|
|
84
|
+
for (const definition of this.registry.values()) {
|
|
85
|
+
if (ROLE_RANK[definition.slug] >= rank) {
|
|
86
|
+
for (const capability of definition.capabilities) {
|
|
87
|
+
capabilities.add(capability);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return [...capabilities];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Registers (or replaces) a role definition. Use it to extend a built-in
|
|
95
|
+
* role's capabilities, e.g. grant `content:create` to `member`. The definition
|
|
96
|
+
* is copied, so mutating the caller's object afterwards has no effect.
|
|
97
|
+
*/
|
|
98
|
+
useRegisterRole(definition) {
|
|
99
|
+
this.registry.set(definition.slug, Object.freeze(useCopy(definition)));
|
|
100
|
+
}
|
|
101
|
+
/** Restores the built-in role registry (mainly for tests). */
|
|
102
|
+
useResetRoles() {
|
|
103
|
+
this.registry.clear();
|
|
104
|
+
for (const role of DEFAULT_ROLES) {
|
|
105
|
+
this.registry.set(role.slug, role);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Lists every registered role definition. Returns copies, not live state. */
|
|
109
|
+
useRoles() {
|
|
110
|
+
return [...this.registry.values()]
|
|
111
|
+
.sort((a, b) => ROLE_RANK[a.slug] - ROLE_RANK[b.slug])
|
|
112
|
+
.map(useCopy);
|
|
113
|
+
}
|
|
114
|
+
/** Exact role membership - no hierarchy involved. */
|
|
115
|
+
useHasRole(subject, role) {
|
|
116
|
+
return subject.roles.includes(role);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Whether the subject may perform a capability. Any of the subject's roles
|
|
120
|
+
* granting the capability (directly or by inheritance) is enough.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* useCan({ id: 1, roles: ["author"] }, "content:publish"); // false
|
|
125
|
+
* useCan({ id: 1, roles: ["author"] }, "content:create"); // true
|
|
126
|
+
* useCan({ id: 2, roles: ["editor"] }, "content:create"); // true (inherits author)
|
|
127
|
+
* useCan({ id: 3, roles: [] }, "conversations:use"); // false
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
useCan(subject, capability) {
|
|
131
|
+
return subject.roles.some((role) => this.useCapabilitiesFor(role).includes(capability));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Estrategia estricta: sólo verifica capacidades declaradas explícitamente
|
|
136
|
+
* en el rol del sujeto, sin her jerarquía. Útil cuando cada rol debe
|
|
137
|
+
* declarar todo lo que puede hacer.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* const access = new AccessService(new FlatAccessStrategy());
|
|
142
|
+
* // "editor" ya NO hereda las capacidades de "author"
|
|
143
|
+
* access.useCan({ id: 1, roles: ["editor"] }, "content:create"); // false
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export class FlatAccessStrategy {
|
|
147
|
+
registry;
|
|
148
|
+
constructor() {
|
|
149
|
+
this.registry = new Map(DEFAULT_ROLES.map((role) => [role.slug, role]));
|
|
150
|
+
}
|
|
151
|
+
useCapabilitiesFor(role) {
|
|
152
|
+
const definition = this.registry.get(role);
|
|
153
|
+
return definition ? [...definition.capabilities] : [];
|
|
154
|
+
}
|
|
155
|
+
useRegisterRole(definition) {
|
|
156
|
+
this.registry.set(definition.slug, Object.freeze(useCopy(definition)));
|
|
157
|
+
}
|
|
158
|
+
useResetRoles() {
|
|
159
|
+
this.registry.clear();
|
|
160
|
+
for (const role of DEFAULT_ROLES) {
|
|
161
|
+
this.registry.set(role.slug, role);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
useRoles() {
|
|
165
|
+
return [...this.registry.values()].map(useCopy);
|
|
166
|
+
}
|
|
167
|
+
useHasRole(subject, role) {
|
|
168
|
+
return subject.roles.includes(role);
|
|
169
|
+
}
|
|
170
|
+
useCan(subject, capability) {
|
|
171
|
+
return subject.roles.some((role) => this.useCapabilitiesFor(role).includes(capability));
|
|
172
|
+
}
|
|
51
173
|
}
|
|
174
|
+
/* -------------------------------------------------------------------------- */
|
|
175
|
+
/* Context (Singleton facade) */
|
|
176
|
+
/* -------------------------------------------------------------------------- */
|
|
177
|
+
/**
|
|
178
|
+
* AccessService - Singleton facade con Strategy Pattern.
|
|
179
|
+
*
|
|
180
|
+
* Centraliza el control de acceso (roles y capacidades) delegando el
|
|
181
|
+
* algoritmo concreto en una {@link IAccessStrategy} intercambiable.
|
|
182
|
+
* Por defecto usa {@link HierarchicalAccessStrategy}.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* // Uso con la estrategia por defecto (jerárquica)
|
|
187
|
+
* AccessService.getInstance().useCan({ id: 1, roles: ["admin"] }, "members:manage");
|
|
188
|
+
*
|
|
189
|
+
* // Cambiar a estrategia plana en runtime
|
|
190
|
+
* AccessService.getInstance().useSetStrategy(new FlatAccessStrategy());
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export class AccessService {
|
|
194
|
+
static instance;
|
|
195
|
+
strategy;
|
|
196
|
+
/**
|
|
197
|
+
* Constructor privado - enforce singleton.
|
|
198
|
+
* @param strategy - Estrategia a inyectar (opcional).
|
|
199
|
+
*/
|
|
200
|
+
constructor(strategy) {
|
|
201
|
+
this.strategy = strategy ?? new HierarchicalAccessStrategy();
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Obtiene la instancia única del AccessService (Singleton).
|
|
205
|
+
*
|
|
206
|
+
* @returns La instancia única de {@link AccessService}.
|
|
207
|
+
*/
|
|
208
|
+
static getInstance() {
|
|
209
|
+
if (!AccessService.instance) {
|
|
210
|
+
AccessService.instance = new AccessService();
|
|
211
|
+
}
|
|
212
|
+
return AccessService.instance;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Crea una instancia NO-singleton con una estrategia específica.
|
|
216
|
+
* Útil para tests o para aislar varios contextos de acceso.
|
|
217
|
+
*
|
|
218
|
+
* @param strategy - Estrategia a inyectar.
|
|
219
|
+
* @returns Una nueva instancia de {@link AccessService}.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* const flatAccess = AccessService.create(new FlatAccessStrategy());
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
static create(strategy) {
|
|
227
|
+
return new AccessService(strategy);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Intercambia la estrategia de acceso en runtime (Strategy Pattern).
|
|
231
|
+
*
|
|
232
|
+
* @param strategy - La nueva estrategia a utilizar.
|
|
233
|
+
*/
|
|
234
|
+
useSetStrategy(strategy) {
|
|
235
|
+
this.strategy = strategy;
|
|
236
|
+
}
|
|
237
|
+
/** Returns the currently active strategy. */
|
|
238
|
+
useGetStrategy() {
|
|
239
|
+
return this.strategy;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Effective capabilities of a role (delegado a la estrategia activa).
|
|
243
|
+
*/
|
|
244
|
+
useCapabilitiesFor(role) {
|
|
245
|
+
return this.strategy.useCapabilitiesFor(role);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Registers (or replaces) a role definition (delegado a la estrategia activa).
|
|
249
|
+
*/
|
|
250
|
+
useRegisterRole(definition) {
|
|
251
|
+
this.strategy.useRegisterRole(definition);
|
|
252
|
+
}
|
|
253
|
+
/** Restores the built-in role registry (delegado a la estrategia activa). */
|
|
254
|
+
useResetRoles() {
|
|
255
|
+
this.strategy.useResetRoles();
|
|
256
|
+
}
|
|
257
|
+
/** Lists every registered role definition (delegado a la estrategia activa). */
|
|
258
|
+
useRoles() {
|
|
259
|
+
return this.strategy.useRoles();
|
|
260
|
+
}
|
|
261
|
+
/** Exact role membership - no hierarchy involved. */
|
|
262
|
+
useHasRole(subject, role) {
|
|
263
|
+
return this.strategy.useHasRole(subject, role);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Whether the subject may perform a capability (delegado a la estrategia activa).
|
|
267
|
+
*/
|
|
268
|
+
useCan(subject, capability) {
|
|
269
|
+
return this.strategy.useCan(subject, capability);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/* -------------------------------------------------------------------------- */
|
|
273
|
+
/* Wrappers (backward compatibility) */
|
|
274
|
+
/* -------------------------------------------------------------------------- */
|
|
52
275
|
/**
|
|
53
276
|
* Effective capabilities of a role: its own plus every less-privileged role's.
|
|
54
277
|
*
|
|
55
278
|
* @example
|
|
56
279
|
* ```ts
|
|
57
|
-
* useCapabilitiesFor("author"); // content:create, content:edit:own,
|
|
280
|
+
* useCapabilitiesFor("author"); // content:create, content:edit:own, ..., conversations:use
|
|
58
281
|
* useCapabilitiesFor("guest"); // []
|
|
59
282
|
* ```
|
|
60
283
|
*/
|
|
61
284
|
export function useCapabilitiesFor(role) {
|
|
62
|
-
|
|
63
|
-
const capabilities = new Set();
|
|
64
|
-
for (const definition of registry.values()) {
|
|
65
|
-
if (ROLE_RANK[definition.slug] >= rank) {
|
|
66
|
-
for (const capability of definition.capabilities) {
|
|
67
|
-
capabilities.add(capability);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return [...capabilities];
|
|
285
|
+
return AccessService.getInstance().useCapabilitiesFor(role);
|
|
72
286
|
}
|
|
73
287
|
/**
|
|
74
288
|
* Registers (or replaces) a role definition. Use it to extend a built-in
|
|
75
|
-
* role's capabilities, e.g. grant `content:create` to `member`.
|
|
76
|
-
* is copied, so mutating the caller's object afterwards has no effect.
|
|
289
|
+
* role's capabilities, e.g. grant `content:create` to `member`.
|
|
77
290
|
*/
|
|
78
291
|
export function useRegisterRole(definition) {
|
|
79
|
-
|
|
292
|
+
AccessService.getInstance().useRegisterRole(definition);
|
|
80
293
|
}
|
|
81
294
|
/** Restores the built-in role registry (mainly for tests). */
|
|
82
295
|
export function useResetRoles() {
|
|
83
|
-
|
|
84
|
-
for (const role of DEFAULT_ROLES) {
|
|
85
|
-
registry.set(role.slug, role);
|
|
86
|
-
}
|
|
296
|
+
AccessService.getInstance().useResetRoles();
|
|
87
297
|
}
|
|
88
298
|
/** Lists every registered role definition. Returns copies, not live state. */
|
|
89
299
|
export function useRoles() {
|
|
90
|
-
return
|
|
300
|
+
return AccessService.getInstance().useRoles();
|
|
91
301
|
}
|
|
92
|
-
/** Exact role membership
|
|
302
|
+
/** Exact role membership - no hierarchy involved. */
|
|
93
303
|
export function useHasRole(subject, role) {
|
|
94
|
-
return
|
|
304
|
+
return AccessService.getInstance().useHasRole(subject, role);
|
|
95
305
|
}
|
|
96
306
|
/**
|
|
97
307
|
* Whether the subject may perform a capability. Any of the subject's roles
|
|
@@ -106,6 +316,6 @@ export function useHasRole(subject, role) {
|
|
|
106
316
|
* ```
|
|
107
317
|
*/
|
|
108
318
|
export function useCan(subject, capability) {
|
|
109
|
-
return
|
|
319
|
+
return AccessService.getInstance().useCan(subject, capability);
|
|
110
320
|
}
|
|
111
321
|
//# sourceMappingURL=access.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.service.js","sourceRoot":"","sources":["../../../src/core/services/access.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"access.service.js","sourceRoot":"","sources":["../../../src/core/services/access.service.ts"],"names":[],"mappings":"AAiCA,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,SAAS,GAA+B;IAC7C,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;CACR,CAAC;AAEF;;;GAGG;AACH,MAAM,aAAa,GAClB;IACC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;IACjF,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACnE;QACC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE;YACb,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,wBAAwB;SACxB;KACD;IACD;QACC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;KAC1E;IACD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,mBAAmB,CAAC,EAAE;IACxE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;CAEpD,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE9C,iFAAiF;AACjF,SAAS,OAAO,CAAC,UAAgC;IAChD,OAAO,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,OAAO,0BAA0B;IACtC,sEAAsE;IAC9D,QAAQ,CAAwC;IAExD;QACC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CACtB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC9C,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,IAAgB;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACH,kBAAkB,CAAC,IAAgB;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACxC,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBAClD,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,UAAgC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,8DAA8D;IAC9D,aAAa;QACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,8EAA8E;IAC9E,QAAQ;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACrD,GAAG,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;IAED,qDAAqD;IACrD,UAAU,CAAC,OAAsB,EAAE,IAAgB;QAClD,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAsB,EAAE,UAA4B;QAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,CAAC;CACD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IACtB,QAAQ,CAAwC;IAExD;QACC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CACtB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC9C,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,IAAgB;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,UAAgC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,QAAQ;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,OAAsB,EAAE,IAAgB;QAClD,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,OAAsB,EAAE,UAA4B;QAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,CAAC;CACD;AAED,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,QAAQ,CAAgB;IAC/B,QAAQ,CAAkB;IAElC;;;OAGG;IACH,YAAoB,QAA0B;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,0BAA0B,EAAE,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC7B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,QAA0B;QACvC,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,QAAyB;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,6CAA6C;IAC7C,cAAc;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAgB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAgC;QAC/C,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,6EAA6E;IAC7E,aAAa;QACZ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAED,gFAAgF;IAChF,QAAQ;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,qDAAqD;IACrD,UAAU,CAAC,OAAsB,EAAE,IAAgB;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAsB,EAAE,UAA4B;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;CACD;AAED,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IAClD,OAAO,aAAa,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAgC;IAC/D,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa;IAC5B,aAAa,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;AAC7C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,QAAQ;IACvB,OAAO,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,OAAsB,EAAE,IAAgB;IAClE,OAAO,aAAa,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,OAAsB,EAAE,UAA4B;IAC1E,OAAO,aAAa,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentResult, AgentRunOptions, AiChatOptions, AiMessage, AiProviderConfig, AiResult } from "../../types/index.js";
|
|
1
|
+
import type { AgentResult, AgentRunOptions, AiChatOptions, AiMessage, AiProviderConfig, AiResult, AiTool, AiToolCall } from "../../types/index.js";
|
|
2
2
|
/** Default endpoint for Alibaba Cloud Model Studio (DashScope) compatible mode. */
|
|
3
3
|
export declare const KITT_BASE_URL = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
|
|
4
4
|
/** Default model for the Kitt assistant preset. */
|
|
@@ -7,11 +7,183 @@ export declare const KITT_DEFAULT_MODEL = "qwen3.8-max";
|
|
|
7
7
|
export declare const KITT_SYSTEM_PROMPT = "You are Kitt, a helpful assistant. Answer clearly and concisely.";
|
|
8
8
|
/** Reusable preset (base URL + model) for the Kitt assistant. */
|
|
9
9
|
export declare const kittPreset: Pick<AiProviderConfig, "baseUrl" | "model">;
|
|
10
|
+
/** Shape of a `/chat/completions` response. */
|
|
11
|
+
interface ChatCompletionResponse {
|
|
12
|
+
choices?: Array<{
|
|
13
|
+
message?: {
|
|
14
|
+
content?: string | null;
|
|
15
|
+
tool_calls?: AiToolCall[];
|
|
16
|
+
};
|
|
17
|
+
finish_reason?: string | null;
|
|
18
|
+
}>;
|
|
19
|
+
error?: {
|
|
20
|
+
message?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Request options shared by chat and agent calls. */
|
|
24
|
+
interface RequestOptions {
|
|
25
|
+
temperature?: number;
|
|
26
|
+
maxTokens?: number;
|
|
27
|
+
topP?: number;
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
tools?: AiTool[];
|
|
30
|
+
}
|
|
10
31
|
/**
|
|
11
|
-
*
|
|
32
|
+
* Estrategia de proveedor AI - Strategy Pattern.
|
|
33
|
+
*
|
|
34
|
+
* Define el contrato que toda implementación de proveedor de completions debe
|
|
35
|
+
* cumplir. El {@link AgentService} delega la llamada HTTP en una estrategia
|
|
36
|
+
* concreta, permitiendo intercambiar proveedores (DashScope, OpenAI,
|
|
37
|
+
* self-hosted, mock en tests) sin tocar el bucle del agente.
|
|
38
|
+
*/
|
|
39
|
+
export interface IAiProviderStrategy {
|
|
40
|
+
/**
|
|
41
|
+
* Performs a single `chat/completions` request against the provider.
|
|
42
|
+
*
|
|
43
|
+
* @param config - Provider configuration (baseUrl, model, apiKey).
|
|
44
|
+
* @param messages - Conversation messages.
|
|
45
|
+
* @param options - Sampling options, tools and abort signal.
|
|
46
|
+
* @returns The parsed provider response.
|
|
47
|
+
* @throws On non-2xx responses or transport failures.
|
|
48
|
+
*/
|
|
49
|
+
requestCompletion(config: AiProviderConfig, messages: AiMessage[], options: RequestOptions): Promise<ChatCompletionResponse>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Estrategia por defecto: proveedor compatible con OpenAI
|
|
53
|
+
* (`POST /chat/completions` con Bearer token). Cubre DashScope en modo
|
|
54
|
+
* compatible, OpenAI, Azure OpenAI y la mayoría de endpoints self-hosted.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const strategy = new OpenAiCompatibleStrategy();
|
|
59
|
+
* const response = await strategy.requestCompletion(config, messages, {});
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class OpenAiCompatibleStrategy implements IAiProviderStrategy {
|
|
63
|
+
/**
|
|
64
|
+
* Performs a raw `chat/completions` request against the provider.
|
|
65
|
+
* Throws {@link AiHttpError} on non-2xx responses.
|
|
66
|
+
*/
|
|
67
|
+
requestCompletion(config: AiProviderConfig, messages: AiMessage[], options: RequestOptions): Promise<ChatCompletionResponse>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* AgentService - Singleton facade con Strategy Pattern.
|
|
12
71
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
72
|
+
* Centraliza el registro del proveedor AI y el bucle de completions,
|
|
73
|
+
* delegando la llamada HTTP en una {@link IAiProviderStrategy}
|
|
74
|
+
* intercambiable. Por defecto usa {@link OpenAiCompatibleStrategy}.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* // Configurar el proveedor
|
|
79
|
+
* AgentService.getInstance().useInitAgent({ apiKey: process.env.DASHSCOPE_API_KEY });
|
|
80
|
+
*
|
|
81
|
+
* // Cambiar de estrategia en runtime (p. ej. un mock en tests)
|
|
82
|
+
* AgentService.getInstance().useSetStrategy(new OpenAiCompatibleStrategy());
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare class AgentService {
|
|
86
|
+
private static instance;
|
|
87
|
+
private provider;
|
|
88
|
+
private strategy;
|
|
89
|
+
/**
|
|
90
|
+
* Constructor privado - enforce singleton.
|
|
91
|
+
* @param strategy - Estrategia de proveedor a inyectar (opcional).
|
|
92
|
+
*/
|
|
93
|
+
private constructor();
|
|
94
|
+
/**
|
|
95
|
+
* Obtiene la instancia única del AgentService (Singleton).
|
|
96
|
+
*
|
|
97
|
+
* @returns La instancia única de {@link AgentService}.
|
|
98
|
+
*/
|
|
99
|
+
static getInstance(): AgentService;
|
|
100
|
+
/**
|
|
101
|
+
* Crea una instancia NO-singleton con una estrategia específica.
|
|
102
|
+
* Útil para tests o para aislar varios proveedores.
|
|
103
|
+
*
|
|
104
|
+
* @param strategy - Estrategia a inyectar.
|
|
105
|
+
* @returns Una nueva instancia de {@link AgentService}.
|
|
106
|
+
*/
|
|
107
|
+
static create(strategy?: IAiProviderStrategy): AgentService;
|
|
108
|
+
/**
|
|
109
|
+
* Intercambia la estrategia de proveedor en runtime (Strategy Pattern).
|
|
110
|
+
*
|
|
111
|
+
* @param strategy - La nueva estrategia a utilizar.
|
|
112
|
+
*/
|
|
113
|
+
useSetStrategy(strategy: IAiProviderStrategy): void;
|
|
114
|
+
/** Returns the currently active provider strategy. */
|
|
115
|
+
useGetStrategy(): IAiProviderStrategy;
|
|
116
|
+
/** Retrieves the configured provider or throws. */
|
|
117
|
+
private useGetProvider;
|
|
118
|
+
/**
|
|
119
|
+
* Registers the AI provider for the Kitt assistant.
|
|
120
|
+
*
|
|
121
|
+
* `apiKey` falls back to `process.env.DASHSCOPE_API_KEY`; `baseUrl`, `model`
|
|
122
|
+
* and `systemPrompt` fall back to the {@link kittPreset} defaults.
|
|
123
|
+
*
|
|
124
|
+
* @param config - Partial provider configuration.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* import { useInitAgent } from "katanakit-js";
|
|
129
|
+
*
|
|
130
|
+
* useInitAgent({
|
|
131
|
+
* apiKey: process.env.DASHSCOPE_API_KEY,
|
|
132
|
+
* model: "qwen3.8-max",
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
useInitAgent(config?: Partial<AiProviderConfig>): void;
|
|
137
|
+
/**
|
|
138
|
+
* Sends a single chat completion and returns the assistant text as a Safe Result.
|
|
139
|
+
*
|
|
140
|
+
* Use this for review / questioning (single-shot). For autonomous multi-step
|
|
141
|
+
* work with tools, use {@link useRunAgent}.
|
|
142
|
+
*
|
|
143
|
+
* @param messages - Conversation messages (a system prompt is prepended if absent).
|
|
144
|
+
* @param options - Optional completion options.
|
|
145
|
+
* @returns A `AiResult` with the assistant text.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* import { useChat } from "katanakit-js";
|
|
150
|
+
*
|
|
151
|
+
* const result = await useChat([
|
|
152
|
+
* { role: "user", content: "Summarize the benefits of solar energy in three bullet points." },
|
|
153
|
+
* ]);
|
|
154
|
+
* if (result.ok) console.log(result.data);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
useChat(messages: AiMessage[], options?: AiChatOptions): Promise<AiResult<string>>;
|
|
158
|
+
/**
|
|
159
|
+
* Runs the tool-calling agent loop against a goal until it emits a final
|
|
160
|
+
* answer or exhausts `maxSteps`.
|
|
161
|
+
*
|
|
162
|
+
* @param goal - The natural-language objective.
|
|
163
|
+
* @param options - Tools, step budget and completion options.
|
|
164
|
+
* @returns An `AgentResult` with the final message and executed steps.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```ts
|
|
168
|
+
* import { useRunAgent } from "katanakit-js";
|
|
169
|
+
*
|
|
170
|
+
* const result = await useRunAgent("Fix the type errors reported by tsc", {
|
|
171
|
+
* tools: [
|
|
172
|
+
* {
|
|
173
|
+
* name: "runCommand",
|
|
174
|
+
* description: "Runs a shell command and returns its output",
|
|
175
|
+
* parameters: { type: "object", properties: { command: { type: "string" } } },
|
|
176
|
+
* execute: (input) => shell.run(input.command),
|
|
177
|
+
* },
|
|
178
|
+
* ],
|
|
179
|
+
* maxSteps: 12,
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
useRunAgent(goal: string, options?: AgentRunOptions): Promise<AgentResult>;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Registers the AI provider for the Kitt assistant.
|
|
15
187
|
*
|
|
16
188
|
* @param config - Partial provider configuration.
|
|
17
189
|
*
|
|
@@ -19,30 +191,22 @@ export declare const kittPreset: Pick<AiProviderConfig, "baseUrl" | "model">;
|
|
|
19
191
|
* ```ts
|
|
20
192
|
* import { useInitAgent } from "katanakit-js";
|
|
21
193
|
*
|
|
22
|
-
* useInitAgent({
|
|
23
|
-
* apiKey: process.env.DASHSCOPE_API_KEY,
|
|
24
|
-
* model: "qwen3.8-max",
|
|
25
|
-
* });
|
|
194
|
+
* useInitAgent({ apiKey: process.env.DASHSCOPE_API_KEY });
|
|
26
195
|
* ```
|
|
27
196
|
*/
|
|
28
197
|
export declare function useInitAgent(config?: Partial<AiProviderConfig>): void;
|
|
29
198
|
/**
|
|
30
199
|
* Sends a single chat completion and returns the assistant text as a Safe Result.
|
|
31
200
|
*
|
|
32
|
-
* Use this for review / questioning (single-shot). For autonomous multi-step
|
|
33
|
-
* work with tools, use {@link useRunAgent}.
|
|
34
|
-
*
|
|
35
201
|
* @param messages - Conversation messages (a system prompt is prepended if absent).
|
|
36
202
|
* @param options - Optional completion options.
|
|
37
|
-
* @returns
|
|
203
|
+
* @returns An `AiResult` with the assistant text.
|
|
38
204
|
*
|
|
39
205
|
* @example
|
|
40
206
|
* ```ts
|
|
41
207
|
* import { useChat } from "katanakit-js";
|
|
42
208
|
*
|
|
43
|
-
* const result = await useChat([
|
|
44
|
-
* { role: "user", content: "Summarize the benefits of solar energy in three bullet points." },
|
|
45
|
-
* ]);
|
|
209
|
+
* const result = await useChat([{ role: "user", content: "Hello" }]);
|
|
46
210
|
* if (result.ok) console.log(result.data);
|
|
47
211
|
* ```
|
|
48
212
|
*/
|
|
@@ -53,24 +217,15 @@ export declare function useChat(messages: AiMessage[], options?: AiChatOptions):
|
|
|
53
217
|
*
|
|
54
218
|
* @param goal - The natural-language objective.
|
|
55
219
|
* @param options - Tools, step budget and completion options.
|
|
56
|
-
* @returns An
|
|
220
|
+
* @returns An `AgentResult` with the final message and executed steps.
|
|
57
221
|
*
|
|
58
222
|
* @example
|
|
59
223
|
* ```ts
|
|
60
224
|
* import { useRunAgent } from "katanakit-js";
|
|
61
225
|
*
|
|
62
|
-
* const result = await useRunAgent("Fix the type errors reported by tsc"
|
|
63
|
-
* tools: [
|
|
64
|
-
* {
|
|
65
|
-
* name: "runCommand",
|
|
66
|
-
* description: "Runs a shell command and returns its output",
|
|
67
|
-
* parameters: { type: "object", properties: { command: { type: "string" } } },
|
|
68
|
-
* execute: (input) => shell.run(input.command),
|
|
69
|
-
* },
|
|
70
|
-
* ],
|
|
71
|
-
* maxSteps: 12,
|
|
72
|
-
* });
|
|
226
|
+
* const result = await useRunAgent("Fix the type errors reported by tsc");
|
|
73
227
|
* ```
|
|
74
228
|
*/
|
|
75
229
|
export declare function useRunAgent(goal: string, options?: AgentRunOptions): Promise<AgentResult>;
|
|
230
|
+
export {};
|
|
76
231
|
//# sourceMappingURL=agent.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,eAAe,EAEf,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,QAAQ,
|
|
1
|
+
{"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/agent.service.ts"],"names":[],"mappings":"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"}
|