@charming_groot/core 0.1.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.
Files changed (84) hide show
  1. package/dist/config.d.ts +669 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +99 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/errors/base-error.d.ts +29 -0
  6. package/dist/errors/base-error.d.ts.map +1 -0
  7. package/dist/errors/base-error.js +57 -0
  8. package/dist/errors/base-error.js.map +1 -0
  9. package/dist/errors/index.d.ts +2 -0
  10. package/dist/errors/index.d.ts.map +1 -0
  11. package/dist/errors/index.js +2 -0
  12. package/dist/errors/index.js.map +1 -0
  13. package/dist/event-bus.d.ts +14 -0
  14. package/dist/event-bus.d.ts.map +1 -0
  15. package/dist/event-bus.js +64 -0
  16. package/dist/event-bus.js.map +1 -0
  17. package/dist/index.d.ts +11 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +12 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/logger.d.ts +7 -0
  22. package/dist/logger.d.ts.map +1 -0
  23. package/dist/logger.js +33 -0
  24. package/dist/logger.js.map +1 -0
  25. package/dist/registry.d.ts +15 -0
  26. package/dist/registry.d.ts.map +1 -0
  27. package/dist/registry.js +46 -0
  28. package/dist/registry.js.map +1 -0
  29. package/dist/run-context.d.ts +20 -0
  30. package/dist/run-context.d.ts.map +1 -0
  31. package/dist/run-context.js +39 -0
  32. package/dist/run-context.js.map +1 -0
  33. package/dist/types/auth.d.ts +56 -0
  34. package/dist/types/auth.d.ts.map +1 -0
  35. package/dist/types/auth.js +2 -0
  36. package/dist/types/auth.js.map +1 -0
  37. package/dist/types/common.d.ts +15 -0
  38. package/dist/types/common.d.ts.map +1 -0
  39. package/dist/types/common.js +2 -0
  40. package/dist/types/common.js.map +1 -0
  41. package/dist/types/events.d.ts +77 -0
  42. package/dist/types/events.d.ts.map +1 -0
  43. package/dist/types/events.js +2 -0
  44. package/dist/types/events.js.map +1 -0
  45. package/dist/types/index.d.ts +8 -0
  46. package/dist/types/index.d.ts.map +1 -0
  47. package/dist/types/index.js +2 -0
  48. package/dist/types/index.js.map +1 -0
  49. package/dist/types/provider.d.ts +42 -0
  50. package/dist/types/provider.d.ts.map +1 -0
  51. package/dist/types/provider.js +2 -0
  52. package/dist/types/provider.js.map +1 -0
  53. package/dist/types/sandbox.d.ts +27 -0
  54. package/dist/types/sandbox.d.ts.map +1 -0
  55. package/dist/types/sandbox.js +2 -0
  56. package/dist/types/sandbox.js.map +1 -0
  57. package/dist/types/tool.d.ts +43 -0
  58. package/dist/types/tool.d.ts.map +1 -0
  59. package/dist/types/tool.js +8 -0
  60. package/dist/types/tool.js.map +1 -0
  61. package/package.json +34 -0
  62. package/src/config.ts +119 -0
  63. package/src/errors/base-error.ts +66 -0
  64. package/src/errors/index.ts +10 -0
  65. package/src/event-bus.ts +78 -0
  66. package/src/index.ts +74 -0
  67. package/src/logger.ts +43 -0
  68. package/src/registry.ts +62 -0
  69. package/src/run-context.ts +48 -0
  70. package/src/types/auth.ts +79 -0
  71. package/src/types/common.ts +22 -0
  72. package/src/types/events.ts +24 -0
  73. package/src/types/index.ts +54 -0
  74. package/src/types/provider.ts +50 -0
  75. package/src/types/sandbox.ts +29 -0
  76. package/src/types/tool.ts +37 -0
  77. package/tests/config.test.ts +98 -0
  78. package/tests/errors.test.ts +87 -0
  79. package/tests/event-bus.test.ts +89 -0
  80. package/tests/logger.test.ts +34 -0
  81. package/tests/registry.test.ts +90 -0
  82. package/tests/run-context.test.ts +80 -0
  83. package/tsconfig.json +9 -0
  84. package/vitest.config.ts +9 -0
package/dist/config.js ADDED
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import { ConfigError } from './errors/base-error.js';
3
+ const noAuthSchema = z.object({
4
+ type: z.literal('no-auth'),
5
+ });
6
+ const apiKeyAuthSchema = z.object({
7
+ type: z.literal('api-key'),
8
+ apiKey: z.string().min(1),
9
+ });
10
+ const oauthAuthSchema = z.object({
11
+ type: z.literal('oauth'),
12
+ clientId: z.string().min(1),
13
+ clientSecret: z.string().min(1),
14
+ tokenUrl: z.string().url(),
15
+ scopes: z.array(z.string()).optional(),
16
+ accessToken: z.string().optional(),
17
+ refreshToken: z.string().optional(),
18
+ });
19
+ const azureAdAuthSchema = z.object({
20
+ type: z.literal('azure-ad'),
21
+ tenantId: z.string().min(1),
22
+ clientId: z.string().min(1),
23
+ clientSecret: z.string().optional(),
24
+ accessToken: z.string().optional(),
25
+ });
26
+ const awsIamAuthSchema = z.object({
27
+ type: z.literal('aws-iam'),
28
+ accessKeyId: z.string().optional(),
29
+ secretAccessKey: z.string().optional(),
30
+ sessionToken: z.string().optional(),
31
+ region: z.string().min(1),
32
+ profile: z.string().optional(),
33
+ });
34
+ const gcpServiceAccountAuthSchema = z.object({
35
+ type: z.literal('gcp-service-account'),
36
+ projectId: z.string().min(1),
37
+ keyFilePath: z.string().optional(),
38
+ accessToken: z.string().optional(),
39
+ });
40
+ const credentialFileAuthSchema = z.object({
41
+ type: z.literal('credential-file'),
42
+ filePath: z.string().min(1),
43
+ profile: z.string().optional(),
44
+ });
45
+ export const authConfigSchema = z.discriminatedUnion('type', [
46
+ noAuthSchema,
47
+ apiKeyAuthSchema,
48
+ oauthAuthSchema,
49
+ azureAdAuthSchema,
50
+ awsIamAuthSchema,
51
+ gcpServiceAccountAuthSchema,
52
+ credentialFileAuthSchema,
53
+ ]);
54
+ export const providerConfigSchema = z.object({
55
+ providerId: z.string().min(1),
56
+ model: z.string().min(1),
57
+ auth: authConfigSchema,
58
+ baseUrl: z.string().url().optional(),
59
+ maxTokens: z.number().int().positive().default(4096),
60
+ temperature: z.number().min(0).max(2).default(0.7),
61
+ });
62
+ export const sandboxConfigSchema = z.object({
63
+ image: z.string().default('node:20-slim'),
64
+ memoryLimitMb: z.number().int().positive().default(512),
65
+ cpuLimit: z.number().positive().default(1),
66
+ timeoutMs: z.number().int().positive().default(30000),
67
+ workDir: z.string().default('/workspace'),
68
+ });
69
+ export const agentConfigSchema = z.object({
70
+ provider: providerConfigSchema,
71
+ sandbox: sandboxConfigSchema.optional(),
72
+ maxIterations: z.number().int().positive().default(50),
73
+ systemPrompt: z.string().optional(),
74
+ workingDirectory: z.string().default(process.cwd()),
75
+ });
76
+ export function parseConfig(schema, raw) {
77
+ const result = schema.safeParse(raw);
78
+ if (!result.success) {
79
+ const messages = result.error.issues
80
+ .map((issue) => `${issue.path.join('.')}: ${issue.message}`)
81
+ .join('; ');
82
+ throw new ConfigError(`Invalid configuration: ${messages}`);
83
+ }
84
+ return result.data;
85
+ }
86
+ export function parseAgentConfig(raw) {
87
+ return parseConfig(agentConfigSchema, raw);
88
+ }
89
+ /**
90
+ * Shorthand: convert a plain apiKey string to an AuthConfig object.
91
+ * Useful for backward-compatible CLI usage.
92
+ */
93
+ export function apiKeyAuth(apiKey) {
94
+ return { type: 'api-key', apiKey };
95
+ }
96
+ export function noAuth() {
97
+ return { type: 'no-auth' };
98
+ }
99
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC3D,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,2BAA2B;IAC3B,wBAAwB;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CACnD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;CAC1C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;CACpD,CAAC,CAAC;AAIH,MAAM,UAAU,WAAW,CAAI,MAA2C,EAAE,GAAY;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,WAAW,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare class AgentError extends Error {
2
+ readonly code: string;
3
+ readonly cause?: Error;
4
+ constructor(message: string, code: string, cause?: Error);
5
+ }
6
+ export declare class RegistryError extends AgentError {
7
+ constructor(message: string, cause?: Error);
8
+ }
9
+ export declare class ConfigError extends AgentError {
10
+ constructor(message: string, cause?: Error);
11
+ }
12
+ export declare class ProviderError extends AgentError {
13
+ constructor(message: string, cause?: Error);
14
+ }
15
+ export declare class ToolExecutionError extends AgentError {
16
+ readonly toolName: string;
17
+ constructor(toolName: string, message: string, cause?: Error);
18
+ }
19
+ export declare class SandboxError extends AgentError {
20
+ constructor(message: string, cause?: Error);
21
+ }
22
+ export declare class PermissionDeniedError extends AgentError {
23
+ readonly toolName: string;
24
+ constructor(toolName: string);
25
+ }
26
+ export declare class AbortError extends AgentError {
27
+ constructor(message?: string);
28
+ }
29
+ //# sourceMappingURL=base-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-error.d.ts","sourceRoot":"","sources":["../../src/errors/base-error.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAMzD;AAED,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAED,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAED,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAED,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAK7D;AAED,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAED,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM;CAK7B;AAED,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,SAAsB;CAI1C"}
@@ -0,0 +1,57 @@
1
+ export class AgentError extends Error {
2
+ code;
3
+ cause;
4
+ constructor(message, code, cause) {
5
+ super(message);
6
+ this.name = 'AgentError';
7
+ this.code = code;
8
+ this.cause = cause;
9
+ }
10
+ }
11
+ export class RegistryError extends AgentError {
12
+ constructor(message, cause) {
13
+ super(message, 'REGISTRY_ERROR', cause);
14
+ this.name = 'RegistryError';
15
+ }
16
+ }
17
+ export class ConfigError extends AgentError {
18
+ constructor(message, cause) {
19
+ super(message, 'CONFIG_ERROR', cause);
20
+ this.name = 'ConfigError';
21
+ }
22
+ }
23
+ export class ProviderError extends AgentError {
24
+ constructor(message, cause) {
25
+ super(message, 'PROVIDER_ERROR', cause);
26
+ this.name = 'ProviderError';
27
+ }
28
+ }
29
+ export class ToolExecutionError extends AgentError {
30
+ toolName;
31
+ constructor(toolName, message, cause) {
32
+ super(message, 'TOOL_EXECUTION_ERROR', cause);
33
+ this.name = 'ToolExecutionError';
34
+ this.toolName = toolName;
35
+ }
36
+ }
37
+ export class SandboxError extends AgentError {
38
+ constructor(message, cause) {
39
+ super(message, 'SANDBOX_ERROR', cause);
40
+ this.name = 'SandboxError';
41
+ }
42
+ }
43
+ export class PermissionDeniedError extends AgentError {
44
+ toolName;
45
+ constructor(toolName) {
46
+ super(`Permission denied for tool: ${toolName}`, 'PERMISSION_DENIED');
47
+ this.name = 'PermissionDeniedError';
48
+ this.toolName = toolName;
49
+ }
50
+ }
51
+ export class AbortError extends AgentError {
52
+ constructor(message = 'Operation aborted') {
53
+ super(message, 'ABORT_ERROR');
54
+ this.name = 'AbortError';
55
+ }
56
+ }
57
+ //# sourceMappingURL=base-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-error.js","sourceRoot":"","sources":["../../src/errors/base-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,KAAK,CAAS;IAEvB,YAAY,OAAe,EAAE,IAAY,EAAE,KAAa;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IACvC,QAAQ,CAAS;IAE1B,YAAY,QAAgB,EAAE,OAAe,EAAE,KAAa;QAC1D,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IAC1C,QAAQ,CAAS;IAE1B,YAAY,QAAgB;QAC1B,KAAK,CAAC,+BAA+B,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,YAAY,OAAO,GAAG,mBAAmB;QACvC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { AgentError, RegistryError, ConfigError, ProviderError, ToolExecutionError, SandboxError, PermissionDeniedError, AbortError, } from './base-error.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,UAAU,GACX,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AgentError, RegistryError, ConfigError, ProviderError, ToolExecutionError, SandboxError, PermissionDeniedError, AbortError, } from './base-error.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,UAAU,GACX,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { EventName, EventPayload } from './types/events.js';
2
+ type EventHandler<K extends EventName> = (payload: EventPayload<K>) => void;
3
+ export declare class EventBus {
4
+ private readonly listeners;
5
+ on<K extends EventName>(event: K, handler: EventHandler<K>): () => void;
6
+ once<K extends EventName>(event: K, handler: EventHandler<K>): () => void;
7
+ emit<K extends EventName>(event: K, payload: EventPayload<K>): void;
8
+ removeAllListeners(event?: EventName): void;
9
+ listenerCount(event: EventName): number;
10
+ private addListener;
11
+ private removeListener;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAQ5E,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAUvE,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAUzE,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAiBnE,kBAAkB,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI;IAQ3C,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAIvC,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,cAAc;CAUvB"}
@@ -0,0 +1,64 @@
1
+ export class EventBus {
2
+ listeners = new Map();
3
+ on(event, handler) {
4
+ const entry = {
5
+ event,
6
+ handler: handler,
7
+ once: false,
8
+ };
9
+ this.addListener(event, entry);
10
+ return () => this.removeListener(event, entry);
11
+ }
12
+ once(event, handler) {
13
+ const entry = {
14
+ event,
15
+ handler: handler,
16
+ once: true,
17
+ };
18
+ this.addListener(event, entry);
19
+ return () => this.removeListener(event, entry);
20
+ }
21
+ emit(event, payload) {
22
+ const entries = this.listeners.get(event);
23
+ if (!entries)
24
+ return;
25
+ const toRemove = [];
26
+ for (const entry of entries) {
27
+ entry.handler(payload);
28
+ if (entry.once) {
29
+ toRemove.push(entry);
30
+ }
31
+ }
32
+ for (const entry of toRemove) {
33
+ this.removeListener(event, entry);
34
+ }
35
+ }
36
+ removeAllListeners(event) {
37
+ if (event) {
38
+ this.listeners.delete(event);
39
+ }
40
+ else {
41
+ this.listeners.clear();
42
+ }
43
+ }
44
+ listenerCount(event) {
45
+ return this.listeners.get(event)?.length ?? 0;
46
+ }
47
+ addListener(event, entry) {
48
+ const existing = this.listeners.get(event) ?? [];
49
+ this.listeners.set(event, [...existing, entry]);
50
+ }
51
+ removeListener(event, entry) {
52
+ const existing = this.listeners.get(event);
53
+ if (!existing)
54
+ return;
55
+ const filtered = existing.filter((e) => e !== entry);
56
+ if (filtered.length === 0) {
57
+ this.listeners.delete(event);
58
+ }
59
+ else {
60
+ this.listeners.set(event, filtered);
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,QAAQ;IACF,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEnE,EAAE,CAAsB,KAAQ,EAAE,OAAwB;QACxD,MAAM,KAAK,GAAkB;YAC3B,KAAK;YACL,OAAO,EAAE,OAAkC;YAC3C,IAAI,EAAE,KAAK;SACZ,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAsB,KAAQ,EAAE,OAAwB;QAC1D,MAAM,KAAK,GAAkB;YAC3B,KAAK;YACL,OAAO,EAAE,OAAkC;YAC3C,IAAI,EAAE,IAAI;SACX,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAsB,KAAQ,EAAE,OAAwB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAAiB;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAgB;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAChD,CAAC;IAEO,WAAW,CAAC,KAAgB,EAAE,KAAoB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,cAAc,CAAC,KAAgB,EAAE,KAAoB;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export type { JsonValue, JsonObject, Identifiable, Timestamped, Disposable, ToolParameter, ToolDescription, ToolResult, ITool, MessageRole, ToolCall, ToolResultMessage, Message, StopReason, LlmResponse, TokenUsage, StreamEvent, ILlmProvider, SandboxConfig, ExecutionRequest, ExecutionResult, ISandbox, AgentEvents, EventName, EventPayload, AuthType, NoAuth, ApiKeyAuth, OAuthAuth, AzureAdAuth, AwsIamAuth, GcpServiceAccountAuth, CredentialFileAuth, AuthConfig, IAuthStrategy, ResolvedCredential, } from './types/index.js';
2
+ export { toolResultSchema } from './types/index.js';
3
+ export { Registry } from './registry.js';
4
+ export { EventBus } from './event-bus.js';
5
+ export { RunContext } from './run-context.js';
6
+ export { providerConfigSchema, authConfigSchema, sandboxConfigSchema, agentConfigSchema, parseConfig, parseAgentConfig, apiKeyAuth, noAuth, } from './config.js';
7
+ export type { ProviderConfig, SandboxConfigInput, AgentConfig } from './config.js';
8
+ export { createLogger, createChildLogger, getRootLogger } from './logger.js';
9
+ export type { LogLevel, AgentLogger } from './logger.js';
10
+ export { AgentError, RegistryError, ConfigError, ProviderError, ToolExecutionError, SandboxError, PermissionDeniedError, AbortError, } from './errors/index.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,UAAU,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,UAAU,GACX,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export { toolResultSchema } from './types/index.js';
2
+ // Core modules
3
+ export { Registry } from './registry.js';
4
+ export { EventBus } from './event-bus.js';
5
+ export { RunContext } from './run-context.js';
6
+ // Config
7
+ export { providerConfigSchema, authConfigSchema, sandboxConfigSchema, agentConfigSchema, parseConfig, parseAgentConfig, apiKeyAuth, noAuth, } from './config.js';
8
+ // Logger
9
+ export { createLogger, createChildLogger, getRootLogger } from './logger.js';
10
+ // Errors
11
+ export { AgentError, RegistryError, ConfigError, ProviderError, ToolExecutionError, SandboxError, PermissionDeniedError, AbortError, } from './errors/index.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,SAAS;AACT,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAC;AAGrB,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG7E,SAAS;AACT,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,UAAU,GACX,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import pino from 'pino';
2
+ export type AgentLogger = pino.Logger;
3
+ export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
4
+ export declare function createLogger(name: string, level?: LogLevel): pino.Logger;
5
+ export declare function getRootLogger(): pino.Logger;
6
+ export declare function createChildLogger(name: string): pino.Logger;
7
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAiB/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CASxE;AAID,wBAAgB,aAAa,IAAI,IAAI,CAAC,MAAM,CAK3C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAE3D"}
package/dist/logger.js ADDED
@@ -0,0 +1,33 @@
1
+ import pino from 'pino';
2
+ const LOG_LEVEL_KEY = 'CLI_AGENT_LOG_LEVEL';
3
+ const DEFAULT_LOG_LEVEL = 'info';
4
+ function getLogLevel() {
5
+ const envLevel = process.env[LOG_LEVEL_KEY];
6
+ if (envLevel && isValidLogLevel(envLevel)) {
7
+ return envLevel;
8
+ }
9
+ return DEFAULT_LOG_LEVEL;
10
+ }
11
+ function isValidLogLevel(level) {
12
+ return ['trace', 'debug', 'info', 'warn', 'error', 'fatal'].includes(level);
13
+ }
14
+ export function createLogger(name, level) {
15
+ return pino({
16
+ name,
17
+ level: level ?? getLogLevel(),
18
+ transport: process.env['NODE_ENV'] !== 'production'
19
+ ? { target: 'pino/file', options: { destination: 1 } }
20
+ : undefined,
21
+ });
22
+ }
23
+ let rootLogger;
24
+ export function getRootLogger() {
25
+ if (!rootLogger) {
26
+ rootLogger = createLogger('cli-agent');
27
+ }
28
+ return rootLogger;
29
+ }
30
+ export function createChildLogger(name) {
31
+ return getRootLogger().child({ module: name });
32
+ }
33
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,MAAM,iBAAiB,GAAa,MAAM,CAAC;AAE3C,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAgB;IACzD,OAAO,IAAI,CAAC;QACV,IAAI;QACJ,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE;QAC7B,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY;YACtC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;YACtD,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC;AACL,CAAC;AAED,IAAI,UAAmC,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare class Registry<T> {
2
+ private readonly items;
3
+ private readonly label;
4
+ constructor(label: string);
5
+ register(name: string, item: T): void;
6
+ get(name: string): T;
7
+ tryGet(name: string): T | undefined;
8
+ has(name: string): boolean;
9
+ getAll(): ReadonlyMap<string, T>;
10
+ getAllNames(): readonly string[];
11
+ unregister(name: string): boolean;
12
+ clear(): void;
13
+ get size(): number;
14
+ }
15
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,KAAK,EAAE,MAAM;IAIzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IASrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;IAUpB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAInC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAIhC,WAAW,IAAI,SAAS,MAAM,EAAE;IAIhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASjC,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,46 @@
1
+ import { RegistryError } from './errors/base-error.js';
2
+ export class Registry {
3
+ items = new Map();
4
+ label;
5
+ constructor(label) {
6
+ this.label = label;
7
+ }
8
+ register(name, item) {
9
+ if (this.items.has(name)) {
10
+ throw new RegistryError(`${this.label} '${name}' is already registered`);
11
+ }
12
+ this.items.set(name, item);
13
+ }
14
+ get(name) {
15
+ const item = this.items.get(name);
16
+ if (item === undefined) {
17
+ throw new RegistryError(`${this.label} '${name}' is not registered`);
18
+ }
19
+ return item;
20
+ }
21
+ tryGet(name) {
22
+ return this.items.get(name);
23
+ }
24
+ has(name) {
25
+ return this.items.has(name);
26
+ }
27
+ getAll() {
28
+ return this.items;
29
+ }
30
+ getAllNames() {
31
+ return [...this.items.keys()];
32
+ }
33
+ unregister(name) {
34
+ if (!this.items.has(name)) {
35
+ throw new RegistryError(`${this.label} '${name}' is not registered`);
36
+ }
37
+ return this.items.delete(name);
38
+ }
39
+ clear() {
40
+ this.items.clear();
41
+ }
42
+ get size() {
43
+ return this.items.size;
44
+ }
45
+ }
46
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,OAAO,QAAQ;IACF,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IAC7B,KAAK,CAAS;IAE/B,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,IAAO;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CACrB,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,yBAAyB,CAChD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,aAAa,CACrB,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,qBAAqB,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,aAAa,CACrB,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,qBAAqB,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { AgentConfig } from './config.js';
2
+ import { EventBus } from './event-bus.js';
3
+ import type { JsonValue } from './types/common.js';
4
+ export declare class RunContext {
5
+ readonly runId: string;
6
+ readonly workingDirectory: string;
7
+ readonly eventBus: EventBus;
8
+ readonly config: AgentConfig;
9
+ readonly createdAt: Date;
10
+ private readonly metadata;
11
+ private abortController;
12
+ constructor(config: AgentConfig, eventBus?: EventBus);
13
+ get signal(): AbortSignal;
14
+ get isAborted(): boolean;
15
+ abort(reason?: string): void;
16
+ setMetadata(key: string, value: JsonValue): void;
17
+ getMetadata(key: string): JsonValue | undefined;
18
+ getAllMetadata(): ReadonlyMap<string, JsonValue>;
19
+ }
20
+ //# sourceMappingURL=run-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-context.d.ts","sourceRoot":"","sources":["../src/run-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAUpD,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAIhD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/C,cAAc,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;CAGjD"}
@@ -0,0 +1,39 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { EventBus } from './event-bus.js';
3
+ export class RunContext {
4
+ runId;
5
+ workingDirectory;
6
+ eventBus;
7
+ config;
8
+ createdAt;
9
+ metadata;
10
+ abortController;
11
+ constructor(config, eventBus) {
12
+ this.runId = randomUUID();
13
+ this.workingDirectory = config.workingDirectory;
14
+ this.config = config;
15
+ this.eventBus = eventBus ?? new EventBus();
16
+ this.createdAt = new Date();
17
+ this.metadata = new Map();
18
+ this.abortController = new AbortController();
19
+ }
20
+ get signal() {
21
+ return this.abortController.signal;
22
+ }
23
+ get isAborted() {
24
+ return this.abortController.signal.aborted;
25
+ }
26
+ abort(reason) {
27
+ this.abortController.abort(reason);
28
+ }
29
+ setMetadata(key, value) {
30
+ this.metadata.set(key, value);
31
+ }
32
+ getMetadata(key) {
33
+ return this.metadata.get(key);
34
+ }
35
+ getAllMetadata() {
36
+ return this.metadata;
37
+ }
38
+ }
39
+ //# sourceMappingURL=run-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-context.js","sourceRoot":"","sources":["../src/run-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,UAAU;IACZ,KAAK,CAAS;IACd,gBAAgB,CAAS;IACzB,QAAQ,CAAW;IACnB,MAAM,CAAc;IACpB,SAAS,CAAO;IACR,QAAQ,CAAyB;IAC1C,eAAe,CAAkB;IAEzC,YAAY,MAAmB,EAAE,QAAmB;QAClD,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAe;QACnB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,KAAgB;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,56 @@
1
+ export type AuthType = 'no-auth' | 'api-key' | 'oauth' | 'azure-ad' | 'aws-iam' | 'gcp-service-account' | 'credential-file';
2
+ export interface NoAuth {
3
+ readonly type: 'no-auth';
4
+ }
5
+ export interface ApiKeyAuth {
6
+ readonly type: 'api-key';
7
+ readonly apiKey: string;
8
+ }
9
+ export interface OAuthAuth {
10
+ readonly type: 'oauth';
11
+ readonly clientId: string;
12
+ readonly clientSecret: string;
13
+ readonly tokenUrl: string;
14
+ readonly scopes?: readonly string[];
15
+ readonly accessToken?: string;
16
+ readonly refreshToken?: string;
17
+ }
18
+ export interface AzureAdAuth {
19
+ readonly type: 'azure-ad';
20
+ readonly tenantId: string;
21
+ readonly clientId: string;
22
+ readonly clientSecret?: string;
23
+ readonly accessToken?: string;
24
+ }
25
+ export interface AwsIamAuth {
26
+ readonly type: 'aws-iam';
27
+ readonly accessKeyId?: string;
28
+ readonly secretAccessKey?: string;
29
+ readonly sessionToken?: string;
30
+ readonly region: string;
31
+ readonly profile?: string;
32
+ }
33
+ export interface GcpServiceAccountAuth {
34
+ readonly type: 'gcp-service-account';
35
+ readonly projectId: string;
36
+ readonly keyFilePath?: string;
37
+ readonly accessToken?: string;
38
+ }
39
+ export interface CredentialFileAuth {
40
+ readonly type: 'credential-file';
41
+ readonly filePath: string;
42
+ readonly profile?: string;
43
+ }
44
+ export type AuthConfig = NoAuth | ApiKeyAuth | OAuthAuth | AzureAdAuth | AwsIamAuth | GcpServiceAccountAuth | CredentialFileAuth;
45
+ export interface IAuthStrategy {
46
+ readonly type: AuthType;
47
+ resolve(config: AuthConfig): Promise<ResolvedCredential>;
48
+ refresh?(config: AuthConfig): Promise<ResolvedCredential>;
49
+ }
50
+ export interface ResolvedCredential {
51
+ readonly type: AuthType;
52
+ readonly headers: Record<string, string>;
53
+ readonly token?: string;
54
+ readonly expiresAt?: Date;
55
+ }
56
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,SAAS,GACT,OAAO,GACP,UAAU,GACV,SAAS,GACT,qBAAqB,GACrB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzD,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
2
+ [key: string]: JsonValue;
3
+ };
4
+ export type JsonObject = Record<string, JsonValue>;
5
+ export interface Identifiable {
6
+ readonly id: string;
7
+ }
8
+ export interface Timestamped {
9
+ readonly createdAt: Date;
10
+ readonly updatedAt: Date;
11
+ }
12
+ export interface Disposable {
13
+ dispose(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common.js.map