@inkeep/agents-sdk 0.38.3 → 0.39.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 +154 -0
- package/dist/index.cjs +555 -1
- package/dist/index.d.cts +391 -1
- package/dist/index.d.ts +391 -1
- package/dist/index.js +545 -2
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -36,7 +36,12 @@ var lockfile__namespace = /*#__PURE__*/_interopNamespace(lockfile);
|
|
|
36
36
|
var yaml__namespace = /*#__PURE__*/_interopNamespace(yaml);
|
|
37
37
|
var ts__default = /*#__PURE__*/_interopDefault(ts);
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
40
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
41
|
+
}) : x)(function(x) {
|
|
42
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
43
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
44
|
+
});
|
|
40
45
|
|
|
41
46
|
// src/utils/generateIdFromName.ts
|
|
42
47
|
function generateIdFromName(name) {
|
|
@@ -3565,6 +3570,209 @@ function transfer(targetAgent, description, condition) {
|
|
|
3565
3570
|
return config;
|
|
3566
3571
|
}
|
|
3567
3572
|
|
|
3573
|
+
// src/credential-provider.ts
|
|
3574
|
+
var DEFAULT_CONFIG = {
|
|
3575
|
+
type: "memory",
|
|
3576
|
+
id: "memory-default"
|
|
3577
|
+
};
|
|
3578
|
+
var InMemoryStore = class {
|
|
3579
|
+
id;
|
|
3580
|
+
type = "memory";
|
|
3581
|
+
credentials = /* @__PURE__ */ new Map();
|
|
3582
|
+
constructor(id = "memory-default") {
|
|
3583
|
+
this.id = id;
|
|
3584
|
+
}
|
|
3585
|
+
async get(key) {
|
|
3586
|
+
const credential2 = this.credentials.get(key);
|
|
3587
|
+
if (!credential2) {
|
|
3588
|
+
const envValue = process.env[key];
|
|
3589
|
+
if (envValue) {
|
|
3590
|
+
this.credentials.set(key, envValue);
|
|
3591
|
+
return envValue;
|
|
3592
|
+
}
|
|
3593
|
+
return null;
|
|
3594
|
+
}
|
|
3595
|
+
return credential2;
|
|
3596
|
+
}
|
|
3597
|
+
async set(key, value, _metadata) {
|
|
3598
|
+
this.credentials.set(key, value);
|
|
3599
|
+
}
|
|
3600
|
+
async has(key) {
|
|
3601
|
+
return this.credentials.has(key) || !!process.env[key];
|
|
3602
|
+
}
|
|
3603
|
+
async delete(key) {
|
|
3604
|
+
return this.credentials.delete(key);
|
|
3605
|
+
}
|
|
3606
|
+
async checkAvailability() {
|
|
3607
|
+
return { available: true };
|
|
3608
|
+
}
|
|
3609
|
+
};
|
|
3610
|
+
var InkeepCredentialProvider = class {
|
|
3611
|
+
store;
|
|
3612
|
+
constructor(config = DEFAULT_CONFIG) {
|
|
3613
|
+
this.store = this.createStore(config);
|
|
3614
|
+
}
|
|
3615
|
+
/**
|
|
3616
|
+
* Create the appropriate store based on configuration
|
|
3617
|
+
*/
|
|
3618
|
+
createStore(config) {
|
|
3619
|
+
switch (config.type) {
|
|
3620
|
+
case "memory":
|
|
3621
|
+
return new InMemoryStore(config.id);
|
|
3622
|
+
case "keychain":
|
|
3623
|
+
return this.createKeychainStore(config);
|
|
3624
|
+
case "nango":
|
|
3625
|
+
return this.createNangoStore(config);
|
|
3626
|
+
case "custom":
|
|
3627
|
+
return config.store;
|
|
3628
|
+
default:
|
|
3629
|
+
throw new Error(`Unknown credential provider type: ${config.type}`);
|
|
3630
|
+
}
|
|
3631
|
+
}
|
|
3632
|
+
/**
|
|
3633
|
+
* Create keychain store with dynamic import
|
|
3634
|
+
*/
|
|
3635
|
+
createKeychainStore(config) {
|
|
3636
|
+
const storeId = config.id || "keychain-default";
|
|
3637
|
+
return {
|
|
3638
|
+
id: storeId,
|
|
3639
|
+
type: "keychain",
|
|
3640
|
+
get: async (key) => {
|
|
3641
|
+
const { createKeyChainStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3642
|
+
const store = createKeyChainStore(storeId);
|
|
3643
|
+
return store.get(key);
|
|
3644
|
+
},
|
|
3645
|
+
set: async (key, value, metadata) => {
|
|
3646
|
+
const { createKeyChainStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3647
|
+
const store = createKeyChainStore(storeId);
|
|
3648
|
+
return store.set(key, value, metadata);
|
|
3649
|
+
},
|
|
3650
|
+
has: async (key) => {
|
|
3651
|
+
const { createKeyChainStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3652
|
+
const store = createKeyChainStore(storeId);
|
|
3653
|
+
return store.has(key);
|
|
3654
|
+
},
|
|
3655
|
+
delete: async (key) => {
|
|
3656
|
+
const { createKeyChainStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3657
|
+
const store = createKeyChainStore(storeId);
|
|
3658
|
+
return store.delete(key);
|
|
3659
|
+
},
|
|
3660
|
+
checkAvailability: async () => {
|
|
3661
|
+
try {
|
|
3662
|
+
const { createKeyChainStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3663
|
+
const store = createKeyChainStore(storeId);
|
|
3664
|
+
return store.checkAvailability();
|
|
3665
|
+
} catch {
|
|
3666
|
+
return {
|
|
3667
|
+
available: false,
|
|
3668
|
+
reason: "Keychain store requires keytar package to be installed"
|
|
3669
|
+
};
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3672
|
+
};
|
|
3673
|
+
}
|
|
3674
|
+
/**
|
|
3675
|
+
* Create Nango store with dynamic import
|
|
3676
|
+
*/
|
|
3677
|
+
createNangoStore(config) {
|
|
3678
|
+
const storeId = config.id || "nango-default";
|
|
3679
|
+
const secretKey = config.secretKey;
|
|
3680
|
+
const apiUrl = config.apiUrl;
|
|
3681
|
+
return {
|
|
3682
|
+
id: storeId,
|
|
3683
|
+
type: "nango",
|
|
3684
|
+
get: async (key) => {
|
|
3685
|
+
const { createNangoCredentialStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3686
|
+
const store = createNangoCredentialStore(storeId, { secretKey, apiUrl });
|
|
3687
|
+
return store.get(key);
|
|
3688
|
+
},
|
|
3689
|
+
set: async (key, value, metadata) => {
|
|
3690
|
+
const { createNangoCredentialStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3691
|
+
const store = createNangoCredentialStore(storeId, { secretKey, apiUrl });
|
|
3692
|
+
return store.set(key, value, metadata);
|
|
3693
|
+
},
|
|
3694
|
+
has: async (key) => {
|
|
3695
|
+
const { createNangoCredentialStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3696
|
+
const store = createNangoCredentialStore(storeId, { secretKey, apiUrl });
|
|
3697
|
+
return store.has(key);
|
|
3698
|
+
},
|
|
3699
|
+
delete: async (key) => {
|
|
3700
|
+
const { createNangoCredentialStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3701
|
+
const store = createNangoCredentialStore(storeId, { secretKey, apiUrl });
|
|
3702
|
+
return store.delete(key);
|
|
3703
|
+
},
|
|
3704
|
+
checkAvailability: async () => {
|
|
3705
|
+
try {
|
|
3706
|
+
const { createNangoCredentialStore } = await import('@inkeep/agents-core/credential-stores');
|
|
3707
|
+
const store = createNangoCredentialStore(storeId, { secretKey, apiUrl });
|
|
3708
|
+
return store.checkAvailability();
|
|
3709
|
+
} catch (error) {
|
|
3710
|
+
return {
|
|
3711
|
+
available: false,
|
|
3712
|
+
reason: error instanceof Error ? error.message : "Nango store requires @nangohq/node package and NANGO_SECRET_KEY"
|
|
3713
|
+
};
|
|
3714
|
+
}
|
|
3715
|
+
}
|
|
3716
|
+
};
|
|
3717
|
+
}
|
|
3718
|
+
// Implement CredentialStore interface by delegating to internal store
|
|
3719
|
+
get id() {
|
|
3720
|
+
return this.store.id;
|
|
3721
|
+
}
|
|
3722
|
+
get type() {
|
|
3723
|
+
return this.store.type;
|
|
3724
|
+
}
|
|
3725
|
+
/**
|
|
3726
|
+
* Get a credential by key
|
|
3727
|
+
* @param key - The credential key
|
|
3728
|
+
* @returns The credential value or null if not found
|
|
3729
|
+
*/
|
|
3730
|
+
async get(key) {
|
|
3731
|
+
return this.store.get(key);
|
|
3732
|
+
}
|
|
3733
|
+
/**
|
|
3734
|
+
* Set a credential
|
|
3735
|
+
* @param key - The credential key
|
|
3736
|
+
* @param value - The credential value
|
|
3737
|
+
* @param metadata - Optional metadata
|
|
3738
|
+
*/
|
|
3739
|
+
async set(key, value, metadata) {
|
|
3740
|
+
return this.store.set(key, value, metadata);
|
|
3741
|
+
}
|
|
3742
|
+
/**
|
|
3743
|
+
* Check if a credential exists
|
|
3744
|
+
* @param key - The credential key
|
|
3745
|
+
* @returns True if the credential exists
|
|
3746
|
+
*/
|
|
3747
|
+
async has(key) {
|
|
3748
|
+
return this.store.has(key);
|
|
3749
|
+
}
|
|
3750
|
+
/**
|
|
3751
|
+
* Delete a credential
|
|
3752
|
+
* @param key - The credential key
|
|
3753
|
+
* @returns True if the credential was deleted
|
|
3754
|
+
*/
|
|
3755
|
+
async delete(key) {
|
|
3756
|
+
return this.store.delete(key);
|
|
3757
|
+
}
|
|
3758
|
+
/**
|
|
3759
|
+
* Check if the credential store is available and functional
|
|
3760
|
+
* @returns Availability status
|
|
3761
|
+
*/
|
|
3762
|
+
async checkAvailability() {
|
|
3763
|
+
return this.store.checkAvailability();
|
|
3764
|
+
}
|
|
3765
|
+
/**
|
|
3766
|
+
* Get the underlying store (for advanced use cases)
|
|
3767
|
+
*/
|
|
3768
|
+
getStore() {
|
|
3769
|
+
return this.store;
|
|
3770
|
+
}
|
|
3771
|
+
};
|
|
3772
|
+
function createCredentialProvider(config = DEFAULT_CONFIG) {
|
|
3773
|
+
return new InkeepCredentialProvider(config);
|
|
3774
|
+
}
|
|
3775
|
+
|
|
3568
3776
|
// src/credential-ref.ts
|
|
3569
3777
|
function credentialRef(id) {
|
|
3570
3778
|
return {
|
|
@@ -3991,6 +4199,341 @@ var run = Runner.run.bind(Runner);
|
|
|
3991
4199
|
var stream = Runner.stream.bind(Runner);
|
|
3992
4200
|
var raceAgents = Runner.raceAgents.bind(Runner);
|
|
3993
4201
|
|
|
4202
|
+
// src/telemetry-provider.ts
|
|
4203
|
+
var SpanStatus = {
|
|
4204
|
+
OK: "ok",
|
|
4205
|
+
ERROR: "error",
|
|
4206
|
+
UNSET: "unset"
|
|
4207
|
+
};
|
|
4208
|
+
var createNoOpSpan = () => ({
|
|
4209
|
+
setAttributes: function() {
|
|
4210
|
+
return this;
|
|
4211
|
+
},
|
|
4212
|
+
setAttribute: function() {
|
|
4213
|
+
return this;
|
|
4214
|
+
},
|
|
4215
|
+
recordException: function() {
|
|
4216
|
+
return this;
|
|
4217
|
+
},
|
|
4218
|
+
setStatus: function() {
|
|
4219
|
+
return this;
|
|
4220
|
+
},
|
|
4221
|
+
addEvent: function() {
|
|
4222
|
+
return this;
|
|
4223
|
+
},
|
|
4224
|
+
end: () => {
|
|
4225
|
+
},
|
|
4226
|
+
isRecording: () => false,
|
|
4227
|
+
updateName: function() {
|
|
4228
|
+
return this;
|
|
4229
|
+
}
|
|
4230
|
+
});
|
|
4231
|
+
var createNoOpTracer = () => ({
|
|
4232
|
+
startActiveSpan(_name, arg1, arg2) {
|
|
4233
|
+
const fn = typeof arg1 === "function" ? arg1 : arg2;
|
|
4234
|
+
if (!fn) throw new Error("No callback function provided");
|
|
4235
|
+
return fn(createNoOpSpan());
|
|
4236
|
+
},
|
|
4237
|
+
startSpan(_name, _options) {
|
|
4238
|
+
return createNoOpSpan();
|
|
4239
|
+
}
|
|
4240
|
+
});
|
|
4241
|
+
var createNoOpLogger = () => ({
|
|
4242
|
+
debug: () => {
|
|
4243
|
+
},
|
|
4244
|
+
info: () => {
|
|
4245
|
+
},
|
|
4246
|
+
warn: () => {
|
|
4247
|
+
},
|
|
4248
|
+
error: () => {
|
|
4249
|
+
}
|
|
4250
|
+
});
|
|
4251
|
+
var createNoOpMetrics = () => ({
|
|
4252
|
+
increment: () => {
|
|
4253
|
+
},
|
|
4254
|
+
gauge: () => {
|
|
4255
|
+
},
|
|
4256
|
+
histogram: () => {
|
|
4257
|
+
}
|
|
4258
|
+
});
|
|
4259
|
+
var NoOpTelemetryProvider = class {
|
|
4260
|
+
getTracer(_name, _version) {
|
|
4261
|
+
return createNoOpTracer();
|
|
4262
|
+
}
|
|
4263
|
+
getLogger(_name) {
|
|
4264
|
+
return createNoOpLogger();
|
|
4265
|
+
}
|
|
4266
|
+
getMetrics(_name) {
|
|
4267
|
+
return createNoOpMetrics();
|
|
4268
|
+
}
|
|
4269
|
+
async shutdown() {
|
|
4270
|
+
}
|
|
4271
|
+
isEnabled() {
|
|
4272
|
+
return false;
|
|
4273
|
+
}
|
|
4274
|
+
};
|
|
4275
|
+
var ConsoleTelemetryProvider = class {
|
|
4276
|
+
serviceName;
|
|
4277
|
+
constructor(serviceName = "inkeep-agent") {
|
|
4278
|
+
this.serviceName = serviceName;
|
|
4279
|
+
}
|
|
4280
|
+
getTracer(name, _version) {
|
|
4281
|
+
const serviceName = this.serviceName;
|
|
4282
|
+
const createConsoleSpan = (spanName) => {
|
|
4283
|
+
const startTime = Date.now();
|
|
4284
|
+
const attributes = {};
|
|
4285
|
+
const events = [];
|
|
4286
|
+
return {
|
|
4287
|
+
setAttributes: function(attrs) {
|
|
4288
|
+
Object.assign(attributes, attrs);
|
|
4289
|
+
return this;
|
|
4290
|
+
},
|
|
4291
|
+
setAttribute: function(key, value) {
|
|
4292
|
+
attributes[key] = value;
|
|
4293
|
+
return this;
|
|
4294
|
+
},
|
|
4295
|
+
recordException: function(error) {
|
|
4296
|
+
console.error(`[${serviceName}:${name}] Exception in ${spanName}:`, error.message);
|
|
4297
|
+
return this;
|
|
4298
|
+
},
|
|
4299
|
+
setStatus: function(status, message) {
|
|
4300
|
+
if (status === SpanStatus.ERROR) {
|
|
4301
|
+
console.error(`[${serviceName}:${name}] ${spanName} ERROR:`, message);
|
|
4302
|
+
}
|
|
4303
|
+
return this;
|
|
4304
|
+
},
|
|
4305
|
+
addEvent: function(eventName, eventAttrs) {
|
|
4306
|
+
events.push({ name: eventName, attributes: eventAttrs });
|
|
4307
|
+
return this;
|
|
4308
|
+
},
|
|
4309
|
+
end: () => {
|
|
4310
|
+
const duration = Date.now() - startTime;
|
|
4311
|
+
console.log(`[${serviceName}:${name}] ${spanName} completed in ${duration}ms`, {
|
|
4312
|
+
attributes,
|
|
4313
|
+
events
|
|
4314
|
+
});
|
|
4315
|
+
},
|
|
4316
|
+
isRecording: () => true,
|
|
4317
|
+
updateName: function(newName) {
|
|
4318
|
+
console.log(`[${serviceName}:${name}] Span renamed: ${spanName} -> ${newName}`);
|
|
4319
|
+
return this;
|
|
4320
|
+
}
|
|
4321
|
+
};
|
|
4322
|
+
};
|
|
4323
|
+
return {
|
|
4324
|
+
startActiveSpan(spanName, arg1, arg2) {
|
|
4325
|
+
const fn = typeof arg1 === "function" ? arg1 : arg2;
|
|
4326
|
+
if (!fn) throw new Error("No callback function provided");
|
|
4327
|
+
const span = createConsoleSpan(spanName);
|
|
4328
|
+
try {
|
|
4329
|
+
return fn(span);
|
|
4330
|
+
} finally {
|
|
4331
|
+
span.end();
|
|
4332
|
+
}
|
|
4333
|
+
},
|
|
4334
|
+
startSpan(spanName, _options) {
|
|
4335
|
+
return createConsoleSpan(spanName);
|
|
4336
|
+
}
|
|
4337
|
+
};
|
|
4338
|
+
}
|
|
4339
|
+
getLogger(name) {
|
|
4340
|
+
const prefix = `[${this.serviceName}:${name}]`;
|
|
4341
|
+
return {
|
|
4342
|
+
debug: (message, context) => console.debug(prefix, message, context),
|
|
4343
|
+
info: (message, context) => console.info(prefix, message, context),
|
|
4344
|
+
warn: (message, context) => console.warn(prefix, message, context),
|
|
4345
|
+
error: (message, context) => console.error(prefix, message, context)
|
|
4346
|
+
};
|
|
4347
|
+
}
|
|
4348
|
+
getMetrics(name) {
|
|
4349
|
+
const prefix = `[${this.serviceName}:${name}]`;
|
|
4350
|
+
return {
|
|
4351
|
+
increment: (metricName, value = 1, attributes) => console.log(`${prefix} COUNTER ${metricName}: +${value}`, attributes),
|
|
4352
|
+
gauge: (metricName, value, attributes) => console.log(`${prefix} GAUGE ${metricName}: ${value}`, attributes),
|
|
4353
|
+
histogram: (metricName, value, attributes) => console.log(`${prefix} HISTOGRAM ${metricName}: ${value}`, attributes)
|
|
4354
|
+
};
|
|
4355
|
+
}
|
|
4356
|
+
async shutdown() {
|
|
4357
|
+
console.log(`[${this.serviceName}] Telemetry provider shutting down`);
|
|
4358
|
+
}
|
|
4359
|
+
isEnabled() {
|
|
4360
|
+
return true;
|
|
4361
|
+
}
|
|
4362
|
+
};
|
|
4363
|
+
var globalProvider = new NoOpTelemetryProvider();
|
|
4364
|
+
var InkeepTelemetryProvider = class {
|
|
4365
|
+
provider;
|
|
4366
|
+
constructor(config = {}) {
|
|
4367
|
+
if (config.provider) {
|
|
4368
|
+
this.provider = config.provider;
|
|
4369
|
+
} else if (config.enabled) {
|
|
4370
|
+
this.provider = new ConsoleTelemetryProvider(config.serviceName);
|
|
4371
|
+
} else {
|
|
4372
|
+
this.provider = new NoOpTelemetryProvider();
|
|
4373
|
+
}
|
|
4374
|
+
}
|
|
4375
|
+
/**
|
|
4376
|
+
* Get a tracer for creating spans
|
|
4377
|
+
*/
|
|
4378
|
+
getTracer(name, version) {
|
|
4379
|
+
return this.provider.getTracer(name, version);
|
|
4380
|
+
}
|
|
4381
|
+
/**
|
|
4382
|
+
* Get a logger for structured logging
|
|
4383
|
+
*/
|
|
4384
|
+
getLogger(name) {
|
|
4385
|
+
return this.provider.getLogger(name);
|
|
4386
|
+
}
|
|
4387
|
+
/**
|
|
4388
|
+
* Get metrics recorder
|
|
4389
|
+
*/
|
|
4390
|
+
getMetrics(name) {
|
|
4391
|
+
return this.provider.getMetrics(name);
|
|
4392
|
+
}
|
|
4393
|
+
/**
|
|
4394
|
+
* Check if telemetry is enabled
|
|
4395
|
+
*/
|
|
4396
|
+
isEnabled() {
|
|
4397
|
+
return this.provider.isEnabled();
|
|
4398
|
+
}
|
|
4399
|
+
/**
|
|
4400
|
+
* Shutdown the provider
|
|
4401
|
+
*/
|
|
4402
|
+
async shutdown() {
|
|
4403
|
+
return this.provider.shutdown();
|
|
4404
|
+
}
|
|
4405
|
+
/**
|
|
4406
|
+
* Get the underlying provider
|
|
4407
|
+
*/
|
|
4408
|
+
getProvider() {
|
|
4409
|
+
return this.provider;
|
|
4410
|
+
}
|
|
4411
|
+
/**
|
|
4412
|
+
* Set as the global telemetry provider
|
|
4413
|
+
*/
|
|
4414
|
+
setAsGlobal() {
|
|
4415
|
+
globalProvider = this.provider;
|
|
4416
|
+
}
|
|
4417
|
+
};
|
|
4418
|
+
function getGlobalTelemetryProvider() {
|
|
4419
|
+
return globalProvider;
|
|
4420
|
+
}
|
|
4421
|
+
function setGlobalTelemetryProvider(provider) {
|
|
4422
|
+
globalProvider = provider;
|
|
4423
|
+
}
|
|
4424
|
+
function createNoOpTelemetryProvider() {
|
|
4425
|
+
return new InkeepTelemetryProvider({ enabled: false });
|
|
4426
|
+
}
|
|
4427
|
+
function createConsoleTelemetryProvider(serviceName) {
|
|
4428
|
+
return new InkeepTelemetryProvider({
|
|
4429
|
+
enabled: true,
|
|
4430
|
+
serviceName,
|
|
4431
|
+
provider: new ConsoleTelemetryProvider(serviceName)
|
|
4432
|
+
});
|
|
4433
|
+
}
|
|
4434
|
+
function wrapOtelSpan(otelSpan) {
|
|
4435
|
+
return {
|
|
4436
|
+
setAttributes: function(attributes) {
|
|
4437
|
+
otelSpan.setAttributes(attributes);
|
|
4438
|
+
return this;
|
|
4439
|
+
},
|
|
4440
|
+
setAttribute: function(key, value) {
|
|
4441
|
+
otelSpan.setAttribute(key, value);
|
|
4442
|
+
return this;
|
|
4443
|
+
},
|
|
4444
|
+
recordException: function(error) {
|
|
4445
|
+
otelSpan.recordException(error);
|
|
4446
|
+
return this;
|
|
4447
|
+
},
|
|
4448
|
+
setStatus: function(status, message) {
|
|
4449
|
+
const statusCode = status === SpanStatus.ERROR ? 2 : status === SpanStatus.OK ? 1 : 0;
|
|
4450
|
+
otelSpan.setStatus({ code: statusCode, message });
|
|
4451
|
+
return this;
|
|
4452
|
+
},
|
|
4453
|
+
addEvent: function(name, attributes) {
|
|
4454
|
+
otelSpan.addEvent(name, attributes);
|
|
4455
|
+
return this;
|
|
4456
|
+
},
|
|
4457
|
+
end: () => otelSpan.end(),
|
|
4458
|
+
isRecording: () => otelSpan.isRecording(),
|
|
4459
|
+
updateName: function(name) {
|
|
4460
|
+
otelSpan.updateName(name);
|
|
4461
|
+
return this;
|
|
4462
|
+
}
|
|
4463
|
+
};
|
|
4464
|
+
}
|
|
4465
|
+
function isOpenTelemetryAvailable() {
|
|
4466
|
+
try {
|
|
4467
|
+
__require.resolve("@opentelemetry/api");
|
|
4468
|
+
return true;
|
|
4469
|
+
} catch {
|
|
4470
|
+
return false;
|
|
4471
|
+
}
|
|
4472
|
+
}
|
|
4473
|
+
async function loadOpenTelemetryModule() {
|
|
4474
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
4475
|
+
return dynamicImport("@opentelemetry/api");
|
|
4476
|
+
}
|
|
4477
|
+
async function createOpenTelemetryProvider(config) {
|
|
4478
|
+
if (!isOpenTelemetryAvailable()) {
|
|
4479
|
+
console.warn(
|
|
4480
|
+
"OpenTelemetry packages not installed. Install with: npm install @opentelemetry/api @opentelemetry/sdk-node"
|
|
4481
|
+
);
|
|
4482
|
+
return createNoOpTelemetryProvider();
|
|
4483
|
+
}
|
|
4484
|
+
try {
|
|
4485
|
+
const { trace } = await loadOpenTelemetryModule();
|
|
4486
|
+
const provider = {
|
|
4487
|
+
getTracer(name, version) {
|
|
4488
|
+
const otelTracer = trace.getTracer(name, version);
|
|
4489
|
+
return {
|
|
4490
|
+
startActiveSpan(spanName, arg1, arg2) {
|
|
4491
|
+
const fn = typeof arg1 === "function" ? arg1 : arg2;
|
|
4492
|
+
const options = typeof arg1 === "object" ? arg1 : void 0;
|
|
4493
|
+
if (!fn) throw new Error("No callback function provided");
|
|
4494
|
+
return otelTracer.startActiveSpan(
|
|
4495
|
+
spanName,
|
|
4496
|
+
options?.attributes ? { attributes: options.attributes } : {},
|
|
4497
|
+
(otelSpan) => {
|
|
4498
|
+
const span = wrapOtelSpan(otelSpan);
|
|
4499
|
+
return fn(span);
|
|
4500
|
+
}
|
|
4501
|
+
);
|
|
4502
|
+
},
|
|
4503
|
+
startSpan(spanName, options) {
|
|
4504
|
+
const otelSpan = otelTracer.startSpan(
|
|
4505
|
+
spanName,
|
|
4506
|
+
options?.attributes ? { attributes: options.attributes } : {}
|
|
4507
|
+
);
|
|
4508
|
+
return wrapOtelSpan(otelSpan);
|
|
4509
|
+
}
|
|
4510
|
+
};
|
|
4511
|
+
},
|
|
4512
|
+
getLogger(name) {
|
|
4513
|
+
return new ConsoleTelemetryProvider(config.serviceName).getLogger(name);
|
|
4514
|
+
},
|
|
4515
|
+
getMetrics(_name) {
|
|
4516
|
+
return createNoOpMetrics();
|
|
4517
|
+
},
|
|
4518
|
+
async shutdown() {
|
|
4519
|
+
},
|
|
4520
|
+
isEnabled() {
|
|
4521
|
+
return true;
|
|
4522
|
+
}
|
|
4523
|
+
};
|
|
4524
|
+
return new InkeepTelemetryProvider({
|
|
4525
|
+
enabled: true,
|
|
4526
|
+
provider
|
|
4527
|
+
});
|
|
4528
|
+
} catch (error) {
|
|
4529
|
+
console.warn(
|
|
4530
|
+
"Failed to initialize OpenTelemetry:",
|
|
4531
|
+
error instanceof Error ? error.message : "Unknown error"
|
|
4532
|
+
);
|
|
4533
|
+
return createNoOpTelemetryProvider();
|
|
4534
|
+
}
|
|
4535
|
+
}
|
|
4536
|
+
|
|
3994
4537
|
Object.defineProperty(exports, "ANTHROPIC_MODELS", {
|
|
3995
4538
|
enumerable: true,
|
|
3996
4539
|
get: function () { return agentsCore.ANTHROPIC_MODELS; }
|
|
@@ -4004,19 +4547,28 @@ Object.defineProperty(exports, "OPENAI_MODELS", {
|
|
|
4004
4547
|
get: function () { return agentsCore.OPENAI_MODELS; }
|
|
4005
4548
|
});
|
|
4006
4549
|
exports.ArtifactComponent = ArtifactComponent;
|
|
4550
|
+
exports.ConsoleTelemetryProvider = ConsoleTelemetryProvider;
|
|
4007
4551
|
exports.DataComponent = DataComponent;
|
|
4008
4552
|
exports.ExternalAgent = ExternalAgent;
|
|
4009
4553
|
exports.FunctionTool = FunctionTool;
|
|
4554
|
+
exports.InkeepCredentialProvider = InkeepCredentialProvider;
|
|
4555
|
+
exports.InkeepTelemetryProvider = InkeepTelemetryProvider;
|
|
4556
|
+
exports.NoOpTelemetryProvider = NoOpTelemetryProvider;
|
|
4010
4557
|
exports.Project = Project;
|
|
4011
4558
|
exports.Runner = Runner;
|
|
4559
|
+
exports.SpanStatus = SpanStatus;
|
|
4012
4560
|
exports.StatusComponent = StatusComponent;
|
|
4013
4561
|
exports.SubAgent = SubAgent;
|
|
4014
4562
|
exports.Tool = Tool;
|
|
4015
4563
|
exports.agent = agent;
|
|
4016
4564
|
exports.agentMcp = agentMcp;
|
|
4017
4565
|
exports.artifactComponent = artifactComponent;
|
|
4566
|
+
exports.createConsoleTelemetryProvider = createConsoleTelemetryProvider;
|
|
4567
|
+
exports.createCredentialProvider = createCredentialProvider;
|
|
4018
4568
|
exports.createEnvironmentSettings = createEnvironmentSettings;
|
|
4019
4569
|
exports.createFullProjectViaAPI = createFullProjectViaAPI;
|
|
4570
|
+
exports.createNoOpTelemetryProvider = createNoOpTelemetryProvider;
|
|
4571
|
+
exports.createOpenTelemetryProvider = createOpenTelemetryProvider;
|
|
4020
4572
|
exports.credential = credential;
|
|
4021
4573
|
exports.credentialRef = credentialRef;
|
|
4022
4574
|
exports.dataComponent = dataComponent;
|
|
@@ -4025,6 +4577,7 @@ exports.externalAgent = externalAgent;
|
|
|
4025
4577
|
exports.externalAgents = externalAgents;
|
|
4026
4578
|
exports.functionTool = functionTool;
|
|
4027
4579
|
exports.getFullProjectViaAPI = getFullProjectViaAPI;
|
|
4580
|
+
exports.getGlobalTelemetryProvider = getGlobalTelemetryProvider;
|
|
4028
4581
|
exports.isCredentialReference = isCredentialReference;
|
|
4029
4582
|
exports.mcpServer = mcpServer;
|
|
4030
4583
|
exports.mcpTool = mcpTool;
|
|
@@ -4032,6 +4585,7 @@ exports.project = project;
|
|
|
4032
4585
|
exports.raceAgents = raceAgents;
|
|
4033
4586
|
exports.registerEnvironmentSettings = registerEnvironmentSettings;
|
|
4034
4587
|
exports.run = run;
|
|
4588
|
+
exports.setGlobalTelemetryProvider = setGlobalTelemetryProvider;
|
|
4035
4589
|
exports.statusComponent = statusComponent;
|
|
4036
4590
|
exports.stream = stream;
|
|
4037
4591
|
exports.subAgent = subAgent;
|