autonomous-agents 0.1.0 → 2.0.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.
Files changed (51) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +260 -96
  4. package/dist/actions.d.ts +136 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +303 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/agent.d.ts +49 -0
  9. package/dist/agent.d.ts.map +1 -0
  10. package/dist/agent.js +452 -0
  11. package/dist/agent.js.map +1 -0
  12. package/dist/goals.d.ts +138 -0
  13. package/dist/goals.d.ts.map +1 -0
  14. package/dist/goals.js +342 -0
  15. package/dist/goals.js.map +1 -0
  16. package/dist/index.d.ts +55 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +60 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/metrics.d.ts +245 -0
  21. package/dist/metrics.d.ts.map +1 -0
  22. package/dist/metrics.js +436 -0
  23. package/dist/metrics.js.map +1 -0
  24. package/dist/role.d.ts +122 -0
  25. package/dist/role.d.ts.map +1 -0
  26. package/dist/role.js +393 -0
  27. package/dist/role.js.map +1 -0
  28. package/dist/team.d.ts +152 -0
  29. package/dist/team.d.ts.map +1 -0
  30. package/dist/team.js +347 -0
  31. package/dist/team.js.map +1 -0
  32. package/dist/types.d.ts +327 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +8 -0
  35. package/dist/types.js.map +1 -0
  36. package/package.json +27 -36
  37. package/src/actions.ts +366 -0
  38. package/src/agent.ts +548 -0
  39. package/src/goals.ts +435 -0
  40. package/src/index.ts +135 -0
  41. package/src/metrics.ts +591 -0
  42. package/src/role.ts +422 -0
  43. package/src/team.ts +466 -0
  44. package/src/types.ts +356 -0
  45. package/test/actions.test.ts +522 -0
  46. package/test/agent.test.ts +490 -0
  47. package/test/goals.test.ts +570 -0
  48. package/test/metrics.test.ts +707 -0
  49. package/test/role.test.ts +423 -0
  50. package/test/team.test.ts +708 -0
  51. package/tsconfig.json +9 -0
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Metrics - KPIs and OKRs for autonomous agents
3
+ *
4
+ * Track key performance indicators and objectives/key results to measure
5
+ * agent and team performance.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { KPI, OKR, KeyResult } from './types.js';
10
+ /**
11
+ * Create a KPI (Key Performance Indicator)
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { kpi } from 'autonomous-agents'
16
+ *
17
+ * const revenueKPI = kpi({
18
+ * name: 'Monthly Recurring Revenue',
19
+ * description: 'Total MRR from subscriptions',
20
+ * value: 125000,
21
+ * target: 150000,
22
+ * unit: 'USD',
23
+ * frequency: 'monthly',
24
+ * trend: 'up',
25
+ * })
26
+ *
27
+ * // Update the value
28
+ * revenueKPI.update(130000)
29
+ *
30
+ * // Add historical data
31
+ * revenueKPI.addHistory(125000)
32
+ *
33
+ * // Get progress
34
+ * const progress = revenueKPI.getProgress() // 86.67%
35
+ * ```
36
+ */
37
+ export declare function kpi(config: {
38
+ name: string;
39
+ description?: string;
40
+ value: number | string;
41
+ target?: number | string;
42
+ unit?: string;
43
+ frequency?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
44
+ }): KPIInstance;
45
+ /**
46
+ * KPI instance with methods
47
+ */
48
+ export interface KPIInstance extends KPI {
49
+ /** Update the current value */
50
+ update(value: number | string): void;
51
+ /** Add historical data point */
52
+ addHistory(value: number | string, timestamp?: Date): void;
53
+ /** Get progress towards target */
54
+ getProgress(): number | null;
55
+ /** Get trend direction */
56
+ getTrend(): 'up' | 'down' | 'stable';
57
+ /** Get historical data */
58
+ getHistory(): Array<{
59
+ timestamp: Date;
60
+ value: number | string;
61
+ }>;
62
+ /** Convert to plain JSON */
63
+ toJSON(): KPI;
64
+ }
65
+ /**
66
+ * Create multiple KPIs
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * import { kpis } from 'autonomous-agents'
71
+ *
72
+ * const metrics = kpis([
73
+ * { name: 'Revenue', value: 100000, target: 150000, unit: 'USD' },
74
+ * { name: 'Active Users', value: 5000, target: 10000, unit: 'users' },
75
+ * { name: 'NPS Score', value: 72, target: 80, unit: 'points' },
76
+ * ])
77
+ *
78
+ * // Access individual KPIs
79
+ * metrics.revenue.update(110000)
80
+ *
81
+ * // Get all KPIs
82
+ * const all = metrics.getAll()
83
+ *
84
+ * // Get progress summary
85
+ * const summary = metrics.getSummary()
86
+ * ```
87
+ */
88
+ export declare function kpis(configs: Array<{
89
+ name: string;
90
+ description?: string;
91
+ value: number | string;
92
+ target?: number | string;
93
+ unit?: string;
94
+ frequency?: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
95
+ }>): KPIsCollection;
96
+ /**
97
+ * KPIs collection with dynamic access
98
+ */
99
+ export interface KPIsCollection {
100
+ /** Get all KPIs */
101
+ getAll(): KPIInstance[];
102
+ /** Get a specific KPI by name */
103
+ get(name: string): KPIInstance | undefined;
104
+ /** Get summary of all KPIs */
105
+ getSummary(): {
106
+ total: number;
107
+ onTrack: number;
108
+ atRisk: number;
109
+ averageProgress: number;
110
+ };
111
+ /** Convert all KPIs to JSON */
112
+ toJSON(): KPI[];
113
+ /** Dynamic access to KPIs by name */
114
+ [key: string]: KPIInstance | ((...args: any[]) => any);
115
+ }
116
+ /**
117
+ * Create an OKR (Objectives and Key Results)
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * import { okr } from 'autonomous-agents'
122
+ *
123
+ * const growthOKR = okr({
124
+ * objective: 'Accelerate revenue growth',
125
+ * description: 'Drive sustainable revenue growth through product expansion and market penetration',
126
+ * keyResults: [
127
+ * {
128
+ * id: 'kr1',
129
+ * description: 'Increase MRR from $100k to $150k',
130
+ * current: 100000,
131
+ * target: 150000,
132
+ * unit: 'USD',
133
+ * },
134
+ * {
135
+ * id: 'kr2',
136
+ * description: 'Launch in 3 new markets',
137
+ * current: 0,
138
+ * target: 3,
139
+ * unit: 'markets',
140
+ * },
141
+ * ],
142
+ * period: 'Q1 2024',
143
+ * owner: 'CEO',
144
+ * })
145
+ *
146
+ * // Update a key result
147
+ * growthOKR.updateKeyResult('kr1', { current: 125000 })
148
+ *
149
+ * // Get overall progress
150
+ * const progress = growthOKR.getProgress() // 58.33%
151
+ * ```
152
+ */
153
+ export declare function okr(config: {
154
+ objective: string;
155
+ description?: string;
156
+ keyResults: KeyResult[];
157
+ period?: string;
158
+ owner?: string;
159
+ }): OKRInstance;
160
+ /**
161
+ * OKR instance with methods
162
+ */
163
+ export interface OKRInstance extends OKR {
164
+ /** Update a key result */
165
+ updateKeyResult(keyResultId: string, updates: Partial<Omit<KeyResult, 'id'>>): void;
166
+ /** Get overall progress */
167
+ getProgress(): number;
168
+ /** Get a specific key result */
169
+ getKeyResult(keyResultId: string): KeyResult | undefined;
170
+ /** Get all key results */
171
+ getKeyResults(): KeyResult[];
172
+ /** Get OKR status */
173
+ getStatus(): 'active' | 'completed' | 'at-risk' | 'cancelled';
174
+ /** Convert to plain JSON */
175
+ toJSON(): OKR;
176
+ }
177
+ /**
178
+ * Create multiple OKRs
179
+ *
180
+ * @example
181
+ * ```ts
182
+ * import { okrs } from 'autonomous-agents'
183
+ *
184
+ * const objectives = okrs([
185
+ * {
186
+ * objective: 'Accelerate revenue growth',
187
+ * keyResults: [
188
+ * { id: 'kr1', description: 'Increase MRR to $150k', current: 100000, target: 150000 },
189
+ * ],
190
+ * },
191
+ * {
192
+ * objective: 'Improve product quality',
193
+ * keyResults: [
194
+ * { id: 'kr2', description: 'Reduce bug count to 10', current: 25, target: 10 },
195
+ * ],
196
+ * },
197
+ * ])
198
+ *
199
+ * const all = objectives.getAll()
200
+ * const summary = objectives.getSummary()
201
+ * ```
202
+ */
203
+ export declare function okrs(configs: Array<{
204
+ objective: string;
205
+ description?: string;
206
+ keyResults: KeyResult[];
207
+ period?: string;
208
+ owner?: string;
209
+ }>): OKRsCollection;
210
+ /**
211
+ * OKRs collection
212
+ */
213
+ export interface OKRsCollection {
214
+ /** Get all OKRs */
215
+ getAll(): OKRInstance[];
216
+ /** Get a specific OKR by ID */
217
+ get(id: string): OKRInstance | undefined;
218
+ /** Get OKRs by owner */
219
+ getByOwner(owner: string): OKRInstance[];
220
+ /** Get summary of all OKRs */
221
+ getSummary(): {
222
+ total: number;
223
+ onTrack: number;
224
+ atRisk: number;
225
+ completed: number;
226
+ averageProgress: number;
227
+ };
228
+ /** Convert all OKRs to JSON */
229
+ toJSON(): OKR[];
230
+ }
231
+ /**
232
+ * Update key result status based on progress
233
+ */
234
+ export declare function updateKeyResultStatus(kr: KeyResult): void;
235
+ /**
236
+ * Create a key result
237
+ */
238
+ export declare function createKeyResult(config: {
239
+ id: string;
240
+ description: string;
241
+ current: number | string;
242
+ target: number | string;
243
+ unit?: string;
244
+ }): KeyResult;
245
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,436 @@
1
+ /**
2
+ * Metrics - KPIs and OKRs for autonomous agents
3
+ *
4
+ * Track key performance indicators and objectives/key results to measure
5
+ * agent and team performance.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Create a KPI (Key Performance Indicator)
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { kpi } from 'autonomous-agents'
15
+ *
16
+ * const revenueKPI = kpi({
17
+ * name: 'Monthly Recurring Revenue',
18
+ * description: 'Total MRR from subscriptions',
19
+ * value: 125000,
20
+ * target: 150000,
21
+ * unit: 'USD',
22
+ * frequency: 'monthly',
23
+ * trend: 'up',
24
+ * })
25
+ *
26
+ * // Update the value
27
+ * revenueKPI.update(130000)
28
+ *
29
+ * // Add historical data
30
+ * revenueKPI.addHistory(125000)
31
+ *
32
+ * // Get progress
33
+ * const progress = revenueKPI.getProgress() // 86.67%
34
+ * ```
35
+ */
36
+ export function kpi(config) {
37
+ const state = {
38
+ id: generateKPIId(config.name),
39
+ name: config.name,
40
+ description: config.description,
41
+ value: config.value,
42
+ target: config.target,
43
+ unit: config.unit,
44
+ frequency: config.frequency,
45
+ history: [],
46
+ };
47
+ return {
48
+ ...state,
49
+ update,
50
+ addHistory,
51
+ getProgress,
52
+ getTrend,
53
+ getHistory,
54
+ toJSON,
55
+ };
56
+ /**
57
+ * Update the current value
58
+ */
59
+ function update(newValue) {
60
+ // Store old value in history
61
+ if (state.value !== undefined) {
62
+ addHistory(state.value);
63
+ }
64
+ state.value = newValue;
65
+ state.trend = calculateTrend();
66
+ }
67
+ /**
68
+ * Add a historical data point
69
+ */
70
+ function addHistory(value, timestamp) {
71
+ if (!state.history) {
72
+ state.history = [];
73
+ }
74
+ state.history.push({
75
+ timestamp: timestamp || new Date(),
76
+ value,
77
+ });
78
+ }
79
+ /**
80
+ * Get progress towards target
81
+ */
82
+ function getProgress() {
83
+ if (!state.target)
84
+ return null;
85
+ if (typeof state.value === 'number' && typeof state.target === 'number') {
86
+ return Math.min(100, (state.value / state.target) * 100);
87
+ }
88
+ return null;
89
+ }
90
+ /**
91
+ * Get trend direction
92
+ */
93
+ function getTrend() {
94
+ return state.trend || calculateTrend();
95
+ }
96
+ /**
97
+ * Calculate trend from history
98
+ */
99
+ function calculateTrend() {
100
+ if (!state.history || state.history.length < 2)
101
+ return 'stable';
102
+ const recent = state.history.slice(-2);
103
+ const prev = recent[0].value;
104
+ const curr = recent[1].value;
105
+ if (typeof prev === 'number' && typeof curr === 'number') {
106
+ if (curr > prev)
107
+ return 'up';
108
+ if (curr < prev)
109
+ return 'down';
110
+ }
111
+ return 'stable';
112
+ }
113
+ /**
114
+ * Get historical data
115
+ */
116
+ function getHistory() {
117
+ return state.history || [];
118
+ }
119
+ /**
120
+ * Convert to plain JSON
121
+ */
122
+ function toJSON() {
123
+ return { ...state };
124
+ }
125
+ }
126
+ /**
127
+ * Create multiple KPIs
128
+ *
129
+ * @example
130
+ * ```ts
131
+ * import { kpis } from 'autonomous-agents'
132
+ *
133
+ * const metrics = kpis([
134
+ * { name: 'Revenue', value: 100000, target: 150000, unit: 'USD' },
135
+ * { name: 'Active Users', value: 5000, target: 10000, unit: 'users' },
136
+ * { name: 'NPS Score', value: 72, target: 80, unit: 'points' },
137
+ * ])
138
+ *
139
+ * // Access individual KPIs
140
+ * metrics.revenue.update(110000)
141
+ *
142
+ * // Get all KPIs
143
+ * const all = metrics.getAll()
144
+ *
145
+ * // Get progress summary
146
+ * const summary = metrics.getSummary()
147
+ * ```
148
+ */
149
+ export function kpis(configs) {
150
+ const kpiMap = new Map();
151
+ // Create KPI instances
152
+ configs.forEach(config => {
153
+ const instance = kpi(config);
154
+ const key = config.name.toLowerCase().replace(/\s+/g, '');
155
+ kpiMap.set(key, instance);
156
+ });
157
+ // Create proxy for direct access
158
+ const proxy = new Proxy({}, {
159
+ get(_target, prop) {
160
+ if (prop === 'getAll')
161
+ return getAll;
162
+ if (prop === 'get')
163
+ return get;
164
+ if (prop === 'getSummary')
165
+ return getSummary;
166
+ if (prop === 'toJSON')
167
+ return toJSON;
168
+ return kpiMap.get(prop);
169
+ },
170
+ });
171
+ function getAll() {
172
+ return Array.from(kpiMap.values());
173
+ }
174
+ function get(name) {
175
+ return kpiMap.get(name.toLowerCase().replace(/\s+/g, ''));
176
+ }
177
+ function getSummary() {
178
+ const all = getAll();
179
+ const withTargets = all.filter(k => k.target !== undefined);
180
+ const onTrack = withTargets.filter(k => {
181
+ const progress = k.getProgress();
182
+ return progress !== null && progress >= 70;
183
+ });
184
+ const atRisk = withTargets.filter(k => {
185
+ const progress = k.getProgress();
186
+ return progress !== null && progress < 70;
187
+ });
188
+ const totalProgress = withTargets.reduce((sum, k) => {
189
+ const progress = k.getProgress();
190
+ return sum + (progress || 0);
191
+ }, 0);
192
+ return {
193
+ total: all.length,
194
+ onTrack: onTrack.length,
195
+ atRisk: atRisk.length,
196
+ averageProgress: withTargets.length > 0 ? totalProgress / withTargets.length : 0,
197
+ };
198
+ }
199
+ function toJSON() {
200
+ return getAll().map(k => k.toJSON());
201
+ }
202
+ return proxy;
203
+ }
204
+ /**
205
+ * Create an OKR (Objectives and Key Results)
206
+ *
207
+ * @example
208
+ * ```ts
209
+ * import { okr } from 'autonomous-agents'
210
+ *
211
+ * const growthOKR = okr({
212
+ * objective: 'Accelerate revenue growth',
213
+ * description: 'Drive sustainable revenue growth through product expansion and market penetration',
214
+ * keyResults: [
215
+ * {
216
+ * id: 'kr1',
217
+ * description: 'Increase MRR from $100k to $150k',
218
+ * current: 100000,
219
+ * target: 150000,
220
+ * unit: 'USD',
221
+ * },
222
+ * {
223
+ * id: 'kr2',
224
+ * description: 'Launch in 3 new markets',
225
+ * current: 0,
226
+ * target: 3,
227
+ * unit: 'markets',
228
+ * },
229
+ * ],
230
+ * period: 'Q1 2024',
231
+ * owner: 'CEO',
232
+ * })
233
+ *
234
+ * // Update a key result
235
+ * growthOKR.updateKeyResult('kr1', { current: 125000 })
236
+ *
237
+ * // Get overall progress
238
+ * const progress = growthOKR.getProgress() // 58.33%
239
+ * ```
240
+ */
241
+ export function okr(config) {
242
+ const state = {
243
+ id: generateOKRId(config.objective),
244
+ objective: config.objective,
245
+ description: config.description,
246
+ keyResults: config.keyResults,
247
+ period: config.period,
248
+ owner: config.owner,
249
+ status: 'active',
250
+ };
251
+ return {
252
+ ...state,
253
+ updateKeyResult,
254
+ getProgress,
255
+ getKeyResult,
256
+ getKeyResults,
257
+ getStatus,
258
+ toJSON,
259
+ };
260
+ /**
261
+ * Update a key result
262
+ */
263
+ function updateKeyResult(keyResultId, updates) {
264
+ const kr = state.keyResults.find(k => k.id === keyResultId);
265
+ if (!kr) {
266
+ throw new Error(`Key result with id ${keyResultId} not found`);
267
+ }
268
+ Object.assign(kr, updates);
269
+ // Recalculate progress
270
+ kr.progress = calculateKeyResultProgress(kr);
271
+ state.progress = calculateOKRProgress();
272
+ }
273
+ /**
274
+ * Get overall OKR progress
275
+ */
276
+ function getProgress() {
277
+ if (state.progress !== undefined)
278
+ return state.progress;
279
+ return calculateOKRProgress();
280
+ }
281
+ /**
282
+ * Calculate OKR progress from key results
283
+ */
284
+ function calculateOKRProgress() {
285
+ if (state.keyResults.length === 0)
286
+ return 0;
287
+ const totalProgress = state.keyResults.reduce((sum, kr) => {
288
+ return sum + (kr.progress || calculateKeyResultProgress(kr));
289
+ }, 0);
290
+ return totalProgress / state.keyResults.length;
291
+ }
292
+ /**
293
+ * Get a specific key result
294
+ */
295
+ function getKeyResult(keyResultId) {
296
+ return state.keyResults.find(k => k.id === keyResultId);
297
+ }
298
+ /**
299
+ * Get all key results
300
+ */
301
+ function getKeyResults() {
302
+ return [...state.keyResults];
303
+ }
304
+ /**
305
+ * Get OKR status
306
+ */
307
+ function getStatus() {
308
+ if (state.status)
309
+ return state.status;
310
+ const progress = getProgress();
311
+ if (progress >= 100)
312
+ return 'completed';
313
+ if (progress < 50)
314
+ return 'at-risk';
315
+ return 'active';
316
+ }
317
+ /**
318
+ * Convert to plain JSON
319
+ */
320
+ function toJSON() {
321
+ return { ...state };
322
+ }
323
+ }
324
+ /**
325
+ * Create multiple OKRs
326
+ *
327
+ * @example
328
+ * ```ts
329
+ * import { okrs } from 'autonomous-agents'
330
+ *
331
+ * const objectives = okrs([
332
+ * {
333
+ * objective: 'Accelerate revenue growth',
334
+ * keyResults: [
335
+ * { id: 'kr1', description: 'Increase MRR to $150k', current: 100000, target: 150000 },
336
+ * ],
337
+ * },
338
+ * {
339
+ * objective: 'Improve product quality',
340
+ * keyResults: [
341
+ * { id: 'kr2', description: 'Reduce bug count to 10', current: 25, target: 10 },
342
+ * ],
343
+ * },
344
+ * ])
345
+ *
346
+ * const all = objectives.getAll()
347
+ * const summary = objectives.getSummary()
348
+ * ```
349
+ */
350
+ export function okrs(configs) {
351
+ const okrList = configs.map(config => okr(config));
352
+ return {
353
+ getAll() {
354
+ return okrList;
355
+ },
356
+ get(id) {
357
+ return okrList.find(o => o.id === id);
358
+ },
359
+ getByOwner(owner) {
360
+ return okrList.filter(o => o.owner === owner);
361
+ },
362
+ getSummary() {
363
+ const totalProgress = okrList.reduce((sum, o) => sum + o.getProgress(), 0);
364
+ return {
365
+ total: okrList.length,
366
+ onTrack: okrList.filter(o => o.getProgress() >= 70).length,
367
+ atRisk: okrList.filter(o => o.getProgress() < 50).length,
368
+ completed: okrList.filter(o => o.status === 'completed').length,
369
+ averageProgress: okrList.length > 0 ? totalProgress / okrList.length : 0,
370
+ };
371
+ },
372
+ toJSON() {
373
+ return okrList.map(o => o.toJSON());
374
+ },
375
+ };
376
+ }
377
+ /**
378
+ * Generate a KPI ID from name
379
+ */
380
+ function generateKPIId(name) {
381
+ return `kpi-${name.toLowerCase().replace(/\s+/g, '-')}`;
382
+ }
383
+ /**
384
+ * Generate an OKR ID from objective
385
+ */
386
+ function generateOKRId(objective) {
387
+ return `okr-${objective.toLowerCase().replace(/\s+/g, '-').slice(0, 30)}`;
388
+ }
389
+ /**
390
+ * Calculate progress for a key result
391
+ */
392
+ function calculateKeyResultProgress(kr) {
393
+ if (typeof kr.current === 'number' && typeof kr.target === 'number') {
394
+ return Math.min(100, (kr.current / kr.target) * 100);
395
+ }
396
+ return 0;
397
+ }
398
+ /**
399
+ * Update key result status based on progress
400
+ */
401
+ export function updateKeyResultStatus(kr) {
402
+ const progress = kr.progress || calculateKeyResultProgress(kr);
403
+ if (progress >= 100) {
404
+ kr.status = 'completed';
405
+ }
406
+ else if (progress >= 70) {
407
+ kr.status = 'on-track';
408
+ }
409
+ else if (progress >= 30) {
410
+ kr.status = 'at-risk';
411
+ }
412
+ else {
413
+ kr.status = 'off-track';
414
+ }
415
+ }
416
+ /**
417
+ * Create a key result
418
+ */
419
+ export function createKeyResult(config) {
420
+ const kr = {
421
+ id: config.id,
422
+ description: config.description,
423
+ current: config.current,
424
+ target: config.target,
425
+ unit: config.unit,
426
+ progress: calculateKeyResultProgress({
427
+ id: config.id,
428
+ description: config.description,
429
+ current: config.current,
430
+ target: config.target,
431
+ }),
432
+ };
433
+ updateKeyResultStatus(kr);
434
+ return kr;
435
+ }
436
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}