@inkeep/agents-sdk 0.38.3 → 0.39.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/dist/index.d.ts CHANGED
@@ -1283,6 +1283,180 @@ declare function agentMcp(config: AgentMcpConfig): AgentMcpConfig;
1283
1283
  */
1284
1284
  declare function functionTool(config: FunctionToolConfig): FunctionTool;
1285
1285
 
1286
+ /**
1287
+ * InkeepCredentialProvider - Abstraction for Credential Management
1288
+ *
1289
+ * This module provides a clean abstraction over credential provider implementations.
1290
+ * Cloud customers can use this without needing to know about or install internal
1291
+ * dependencies like Nango.
1292
+ *
1293
+ * @example
1294
+ * ```typescript
1295
+ * // Simple usage with environment variables (default)
1296
+ * import { InkeepCredentialProvider } from '@inkeep/agents-sdk'
1297
+ *
1298
+ * const credentials = new InkeepCredentialProvider()
1299
+ *
1300
+ * // With custom configuration
1301
+ * const credentials = new InkeepCredentialProvider({
1302
+ * type: 'memory',
1303
+ * id: 'my-store'
1304
+ * })
1305
+ * ```
1306
+ */
1307
+ /**
1308
+ * Base interface for all credential stores
1309
+ * This is a simplified version for SDK customers
1310
+ */
1311
+ interface CredentialStore {
1312
+ /** Unique identifier for this credential store */
1313
+ readonly id: string;
1314
+ /** Type of credential store */
1315
+ readonly type: CredentialProviderType;
1316
+ /** Get a credential by key */
1317
+ get(key: string): Promise<string | null>;
1318
+ /** Set a credential */
1319
+ set(key: string, value: string, metadata?: Record<string, string>): Promise<void>;
1320
+ /** Check if a credential exists */
1321
+ has(key: string): Promise<boolean>;
1322
+ /** Delete a credential */
1323
+ delete(key: string): Promise<boolean>;
1324
+ /** Check if the credential store is available */
1325
+ checkAvailability(): Promise<{
1326
+ available: boolean;
1327
+ reason?: string;
1328
+ }>;
1329
+ }
1330
+ /**
1331
+ * Supported credential provider types
1332
+ */
1333
+ type CredentialProviderType = 'memory' | 'keychain' | 'nango' | 'custom';
1334
+ /**
1335
+ * Configuration for memory-based credential storage
1336
+ */
1337
+ interface MemoryCredentialConfig {
1338
+ type: 'memory';
1339
+ /** Optional store ID (defaults to 'memory-default') */
1340
+ id?: string;
1341
+ }
1342
+ /**
1343
+ * Configuration for keychain-based credential storage
1344
+ */
1345
+ interface KeychainCredentialConfig {
1346
+ type: 'keychain';
1347
+ /** Optional store ID (defaults to 'keychain-default') */
1348
+ id?: string;
1349
+ /** Optional service name for keychain entries */
1350
+ serviceName?: string;
1351
+ }
1352
+ /**
1353
+ * Configuration for Nango-based credential storage (OAuth management)
1354
+ * Note: Using Nango requires the @nangohq/node package to be installed
1355
+ */
1356
+ interface NangoCredentialConfig {
1357
+ type: 'nango';
1358
+ /** Optional store ID (defaults to 'nango-default') */
1359
+ id?: string;
1360
+ /** Nango secret key (defaults to NANGO_SECRET_KEY env var) */
1361
+ secretKey?: string;
1362
+ /** Nango API URL (defaults to https://api.nango.dev) */
1363
+ apiUrl?: string;
1364
+ }
1365
+ /**
1366
+ * Configuration for custom credential provider
1367
+ */
1368
+ interface CustomCredentialConfig {
1369
+ type: 'custom';
1370
+ /** Custom credential store implementation */
1371
+ store: CredentialStore;
1372
+ }
1373
+ /**
1374
+ * Union type for all credential provider configurations
1375
+ */
1376
+ type CredentialProviderConfig = MemoryCredentialConfig | KeychainCredentialConfig | NangoCredentialConfig | CustomCredentialConfig;
1377
+ /**
1378
+ * InkeepCredentialProvider - Unified credential management for Inkeep SDK
1379
+ *
1380
+ * Provides a clean abstraction over various credential storage backends.
1381
+ * Cloud customers can use simple memory-based storage, while advanced
1382
+ * users can integrate with OAuth providers like Nango.
1383
+ *
1384
+ * @example
1385
+ * ```typescript
1386
+ * // Default memory-based storage
1387
+ * const provider = new InkeepCredentialProvider()
1388
+ *
1389
+ * // Store and retrieve credentials
1390
+ * await provider.set('my-api-key', 'secret-value')
1391
+ * const key = await provider.get('my-api-key')
1392
+ *
1393
+ * // Use environment variables automatically
1394
+ * process.env.MY_TOKEN = 'env-token'
1395
+ * const token = await provider.get('MY_TOKEN') // Returns 'env-token'
1396
+ * ```
1397
+ */
1398
+ declare class InkeepCredentialProvider implements CredentialStore {
1399
+ private store;
1400
+ constructor(config?: CredentialProviderConfig);
1401
+ /**
1402
+ * Create the appropriate store based on configuration
1403
+ */
1404
+ private createStore;
1405
+ /**
1406
+ * Create keychain store with dynamic import
1407
+ */
1408
+ private createKeychainStore;
1409
+ /**
1410
+ * Create Nango store with dynamic import
1411
+ */
1412
+ private createNangoStore;
1413
+ get id(): string;
1414
+ get type(): CredentialProviderType;
1415
+ /**
1416
+ * Get a credential by key
1417
+ * @param key - The credential key
1418
+ * @returns The credential value or null if not found
1419
+ */
1420
+ get(key: string): Promise<string | null>;
1421
+ /**
1422
+ * Set a credential
1423
+ * @param key - The credential key
1424
+ * @param value - The credential value
1425
+ * @param metadata - Optional metadata
1426
+ */
1427
+ set(key: string, value: string, metadata?: Record<string, string>): Promise<void>;
1428
+ /**
1429
+ * Check if a credential exists
1430
+ * @param key - The credential key
1431
+ * @returns True if the credential exists
1432
+ */
1433
+ has(key: string): Promise<boolean>;
1434
+ /**
1435
+ * Delete a credential
1436
+ * @param key - The credential key
1437
+ * @returns True if the credential was deleted
1438
+ */
1439
+ delete(key: string): Promise<boolean>;
1440
+ /**
1441
+ * Check if the credential store is available and functional
1442
+ * @returns Availability status
1443
+ */
1444
+ checkAvailability(): Promise<{
1445
+ available: boolean;
1446
+ reason?: string;
1447
+ }>;
1448
+ /**
1449
+ * Get the underlying store (for advanced use cases)
1450
+ */
1451
+ getStore(): CredentialStore;
1452
+ }
1453
+ /**
1454
+ * Factory function to create an InkeepCredentialProvider
1455
+ * @param config - Configuration options
1456
+ * @returns A new InkeepCredentialProvider instance
1457
+ */
1458
+ declare function createCredentialProvider(config?: CredentialProviderConfig): InkeepCredentialProvider;
1459
+
1286
1460
  /**
1287
1461
  * Credential Reference System
1288
1462
  *
@@ -1425,4 +1599,220 @@ declare const run: typeof Runner.run;
1425
1599
  declare const stream: typeof Runner.stream;
1426
1600
  declare const raceAgents: typeof Runner.raceAgents;
1427
1601
 
1428
- export { type AgentConfig, AgentError, type AgentInterface, type AgentResponse, type AgentTool, type AllDelegateInputInterface, type AllDelegateOutputInterface, ArtifactComponent, type ArtifactComponentInterface, type ArtifactComponentWithZodProps, type AssistantMessage, type BuilderAgentConfig, type BuilderRelationConfig, type BuilderToolConfig, type CredentialReference, DataComponent, type DataComponentInterface, type DataComponentWithZodProps, ExternalAgent, type ExternalAgentInterface, type ExtractCredentialIds, type FetchDefinitionConfig, FunctionTool, type GenerateOptions, type MCPToolConfig, MaxTurnsExceededError, type Message, type MessageInput, Project, type RequestSchemaConfig, type RequestSchemaDefinition, type RunResult, Runner, type ServerConfig, StatusComponent, type StatusComponentInterface, type StreamEvent, type StreamResponse, SubAgent, type SubAgentCanUseType, type SubAgentConfig, type SubAgentInterface, type SystemMessage, Tool, type ToolCall, type ToolConfig, ToolExecutionError, type ToolMessage, type ToolResult, type TransferConfig, TransferError, type UnionCredentialIds, type UserMessage, agent, agentMcp, artifactComponent, createEnvironmentSettings, createFullProjectViaAPI, credential, credentialRef, dataComponent, deleteFullProjectViaAPI, externalAgent, externalAgents, functionTool, getFullProjectViaAPI, isCredentialReference, mcpServer, mcpTool, project, raceAgents, registerEnvironmentSettings, run, statusComponent, stream, subAgent, type subAgentExternalAgentInterface, type subAgentTeamAgentInterface, transfer, updateFullProjectViaAPI };
1602
+ /**
1603
+ * TelemetryProvider - Abstraction for Telemetry/Observability
1604
+ *
1605
+ * This module provides a clean abstraction over telemetry implementations.
1606
+ * Cloud customers can use this without needing to install or configure
1607
+ * OpenTelemetry or Signoz directly.
1608
+ *
1609
+ * Telemetry is OPT-IN - if not configured, a no-op provider is used.
1610
+ *
1611
+ * @example
1612
+ * ```typescript
1613
+ * // Opt-in to telemetry with default console logger
1614
+ * import { InkeepTelemetryProvider, createConsoleTelemetryProvider } from '@inkeep/agents-sdk'
1615
+ *
1616
+ * const telemetry = createConsoleTelemetryProvider()
1617
+ *
1618
+ * // Or with OpenTelemetry (requires @opentelemetry packages)
1619
+ * const telemetry = createOpenTelemetryProvider({
1620
+ * serviceName: 'my-agent',
1621
+ * endpoint: 'http://localhost:4318'
1622
+ * })
1623
+ * ```
1624
+ */
1625
+ /**
1626
+ * Span status codes
1627
+ */
1628
+ declare const SpanStatus: {
1629
+ readonly OK: "ok";
1630
+ readonly ERROR: "error";
1631
+ readonly UNSET: "unset";
1632
+ };
1633
+ type SpanStatusType = (typeof SpanStatus)[keyof typeof SpanStatus];
1634
+ /**
1635
+ * Span interface for tracing
1636
+ */
1637
+ interface TelemetrySpan {
1638
+ /** Set span attributes */
1639
+ setAttributes(attributes: Record<string, unknown>): TelemetrySpan;
1640
+ /** Set a single attribute */
1641
+ setAttribute(key: string, value: unknown): TelemetrySpan;
1642
+ /** Record an exception */
1643
+ recordException(error: Error): TelemetrySpan;
1644
+ /** Set span status */
1645
+ setStatus(status: SpanStatusType, message?: string): TelemetrySpan;
1646
+ /** Add an event to the span */
1647
+ addEvent(name: string, attributes?: Record<string, unknown>): TelemetrySpan;
1648
+ /** End the span */
1649
+ end(): void;
1650
+ /** Check if span is recording */
1651
+ isRecording(): boolean;
1652
+ /** Update span name */
1653
+ updateName(name: string): TelemetrySpan;
1654
+ }
1655
+ /**
1656
+ * Span options
1657
+ */
1658
+ interface SpanOptions {
1659
+ /** Span attributes */
1660
+ attributes?: Record<string, unknown>;
1661
+ /** Parent span (for context propagation) */
1662
+ parent?: TelemetrySpan;
1663
+ }
1664
+ /**
1665
+ * Tracer interface for creating spans
1666
+ */
1667
+ interface TelemetryTracer {
1668
+ /** Start a new active span and execute callback */
1669
+ startActiveSpan<T>(name: string, fn: (span: TelemetrySpan) => T): T;
1670
+ startActiveSpan<T>(name: string, options: SpanOptions, fn: (span: TelemetrySpan) => T): T;
1671
+ /** Start a new span without making it active */
1672
+ startSpan(name: string, options?: SpanOptions): TelemetrySpan;
1673
+ }
1674
+ /**
1675
+ * Logger interface for structured logging
1676
+ */
1677
+ interface TelemetryLogger {
1678
+ debug(message: string, context?: Record<string, unknown>): void;
1679
+ info(message: string, context?: Record<string, unknown>): void;
1680
+ warn(message: string, context?: Record<string, unknown>): void;
1681
+ error(message: string, context?: Record<string, unknown>): void;
1682
+ }
1683
+ /**
1684
+ * Metrics interface for recording measurements
1685
+ */
1686
+ interface TelemetryMetrics {
1687
+ /** Increment a counter */
1688
+ increment(name: string, value?: number, attributes?: Record<string, unknown>): void;
1689
+ /** Record a gauge value */
1690
+ gauge(name: string, value: number, attributes?: Record<string, unknown>): void;
1691
+ /** Record a histogram value */
1692
+ histogram(name: string, value: number, attributes?: Record<string, unknown>): void;
1693
+ }
1694
+ /**
1695
+ * Main telemetry provider interface
1696
+ */
1697
+ interface TelemetryProvider {
1698
+ /** Get a tracer for creating spans */
1699
+ getTracer(name: string, version?: string): TelemetryTracer;
1700
+ /** Get a logger for structured logging */
1701
+ getLogger(name: string): TelemetryLogger;
1702
+ /** Get metrics for recording measurements */
1703
+ getMetrics(name: string): TelemetryMetrics;
1704
+ /** Shutdown the telemetry provider */
1705
+ shutdown(): Promise<void>;
1706
+ /** Check if telemetry is enabled */
1707
+ isEnabled(): boolean;
1708
+ }
1709
+ /**
1710
+ * Configuration for telemetry provider
1711
+ */
1712
+ interface TelemetryConfig {
1713
+ /** Whether telemetry is enabled (default: false) */
1714
+ enabled?: boolean;
1715
+ /** Service name for identifying the source */
1716
+ serviceName?: string;
1717
+ /** Service version */
1718
+ serviceVersion?: string;
1719
+ /** Custom provider implementation */
1720
+ provider?: TelemetryProvider;
1721
+ }
1722
+ /**
1723
+ * No-op telemetry provider (default)
1724
+ */
1725
+ declare class NoOpTelemetryProvider implements TelemetryProvider {
1726
+ getTracer(_name: string, _version?: string): TelemetryTracer;
1727
+ getLogger(_name: string): TelemetryLogger;
1728
+ getMetrics(_name: string): TelemetryMetrics;
1729
+ shutdown(): Promise<void>;
1730
+ isEnabled(): boolean;
1731
+ }
1732
+ /**
1733
+ * Console-based telemetry provider for development/debugging
1734
+ */
1735
+ declare class ConsoleTelemetryProvider implements TelemetryProvider {
1736
+ private serviceName;
1737
+ constructor(serviceName?: string);
1738
+ getTracer(name: string, _version?: string): TelemetryTracer;
1739
+ getLogger(name: string): TelemetryLogger;
1740
+ getMetrics(name: string): TelemetryMetrics;
1741
+ shutdown(): Promise<void>;
1742
+ isEnabled(): boolean;
1743
+ }
1744
+ /**
1745
+ * InkeepTelemetryProvider - Main telemetry management class
1746
+ *
1747
+ * Provides a unified interface for telemetry across the SDK.
1748
+ * Telemetry is OPT-IN - by default, a no-op provider is used.
1749
+ */
1750
+ declare class InkeepTelemetryProvider {
1751
+ private provider;
1752
+ constructor(config?: TelemetryConfig);
1753
+ /**
1754
+ * Get a tracer for creating spans
1755
+ */
1756
+ getTracer(name: string, version?: string): TelemetryTracer;
1757
+ /**
1758
+ * Get a logger for structured logging
1759
+ */
1760
+ getLogger(name: string): TelemetryLogger;
1761
+ /**
1762
+ * Get metrics recorder
1763
+ */
1764
+ getMetrics(name: string): TelemetryMetrics;
1765
+ /**
1766
+ * Check if telemetry is enabled
1767
+ */
1768
+ isEnabled(): boolean;
1769
+ /**
1770
+ * Shutdown the provider
1771
+ */
1772
+ shutdown(): Promise<void>;
1773
+ /**
1774
+ * Get the underlying provider
1775
+ */
1776
+ getProvider(): TelemetryProvider;
1777
+ /**
1778
+ * Set as the global telemetry provider
1779
+ */
1780
+ setAsGlobal(): void;
1781
+ }
1782
+ /**
1783
+ * Get the global telemetry provider
1784
+ */
1785
+ declare function getGlobalTelemetryProvider(): TelemetryProvider;
1786
+ /**
1787
+ * Set the global telemetry provider
1788
+ */
1789
+ declare function setGlobalTelemetryProvider(provider: TelemetryProvider): void;
1790
+ /**
1791
+ * Create a no-op telemetry provider (default, does nothing)
1792
+ */
1793
+ declare function createNoOpTelemetryProvider(): InkeepTelemetryProvider;
1794
+ /**
1795
+ * Create a console-based telemetry provider for development
1796
+ */
1797
+ declare function createConsoleTelemetryProvider(serviceName?: string): InkeepTelemetryProvider;
1798
+ /**
1799
+ * Configuration for OpenTelemetry provider
1800
+ */
1801
+ interface OpenTelemetryConfig {
1802
+ /** Service name */
1803
+ serviceName: string;
1804
+ /** Service version */
1805
+ serviceVersion?: string;
1806
+ /** OTLP endpoint URL */
1807
+ endpoint?: string;
1808
+ /** Additional resource attributes */
1809
+ resourceAttributes?: Record<string, string>;
1810
+ }
1811
+ /**
1812
+ * Create an OpenTelemetry-based provider
1813
+ *
1814
+ * Note: Requires @opentelemetry packages to be installed
1815
+ */
1816
+ declare function createOpenTelemetryProvider(config: OpenTelemetryConfig): Promise<InkeepTelemetryProvider>;
1817
+
1818
+ export { type AgentConfig, AgentError, type AgentInterface, type AgentResponse, type AgentTool, type AllDelegateInputInterface, type AllDelegateOutputInterface, ArtifactComponent, type ArtifactComponentInterface, type ArtifactComponentWithZodProps, type AssistantMessage, type BuilderAgentConfig, type BuilderRelationConfig, type BuilderToolConfig, ConsoleTelemetryProvider, type CredentialProviderConfig, type CredentialProviderType, type CredentialReference, type CredentialStore, type CustomCredentialConfig, DataComponent, type DataComponentInterface, type DataComponentWithZodProps, ExternalAgent, type ExternalAgentInterface, type ExtractCredentialIds, type FetchDefinitionConfig, FunctionTool, type GenerateOptions, InkeepCredentialProvider, InkeepTelemetryProvider, type KeychainCredentialConfig, type MCPToolConfig, MaxTurnsExceededError, type MemoryCredentialConfig, type Message, type MessageInput, type NangoCredentialConfig, NoOpTelemetryProvider, type OpenTelemetryConfig, Project, type RequestSchemaConfig, type RequestSchemaDefinition, type RunResult, Runner, type ServerConfig, type SpanOptions, SpanStatus, type SpanStatusType, StatusComponent, type StatusComponentInterface, type StreamEvent, type StreamResponse, SubAgent, type SubAgentCanUseType, type SubAgentConfig, type SubAgentInterface, type SystemMessage, type TelemetryConfig, type TelemetryLogger, type TelemetryMetrics, type TelemetryProvider, type TelemetrySpan, type TelemetryTracer, Tool, type ToolCall, type ToolConfig, ToolExecutionError, type ToolMessage, type ToolResult, type TransferConfig, TransferError, type UnionCredentialIds, type UserMessage, agent, agentMcp, artifactComponent, createConsoleTelemetryProvider, createCredentialProvider, createEnvironmentSettings, createFullProjectViaAPI, createNoOpTelemetryProvider, createOpenTelemetryProvider, credential, credentialRef, dataComponent, deleteFullProjectViaAPI, externalAgent, externalAgents, functionTool, getFullProjectViaAPI, getGlobalTelemetryProvider, isCredentialReference, mcpServer, mcpTool, project, raceAgents, registerEnvironmentSettings, run, setGlobalTelemetryProvider, statusComponent, stream, subAgent, type subAgentExternalAgentInterface, type subAgentTeamAgentInterface, transfer, updateFullProjectViaAPI };