poe-code 3.0.29 → 3.0.31
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 +2 -2
- package/dist/bin/poe-claude.js +23 -0
- package/dist/bin/poe-codex.js +23 -0
- package/dist/bin/poe-kimi-cli.js +23 -0
- package/dist/bin/poe-opencode.js +23 -0
- package/dist/bin.cjs +9 -0
- package/dist/cli/binary-aliases.d.ts +7 -0
- package/dist/cli/binary-aliases.js +26 -0
- package/dist/cli/binary-aliases.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +4 -0
- package/dist/cli/bootstrap.js +78 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/command-not-found.d.ts +8 -0
- package/dist/cli/command-not-found.js +34 -0
- package/dist/cli/command-not-found.js.map +1 -0
- package/dist/cli/commands/configure-payload.d.ts +15 -0
- package/dist/cli/commands/configure-payload.js +31 -0
- package/dist/cli/commands/configure-payload.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +12 -0
- package/dist/cli/commands/configure.js +151 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/ensure-isolated-config.d.ts +12 -0
- package/dist/cli/commands/ensure-isolated-config.js +53 -0
- package/dist/cli/commands/ensure-isolated-config.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.js +322 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/install.d.ts +4 -0
- package/dist/cli/commands/install.js +40 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/login.d.ts +6 -0
- package/dist/cli/commands/login.js +105 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.js +178 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/models.d.ts +3 -0
- package/dist/cli/commands/models.js +183 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/ralph-worktree.d.ts +3 -0
- package/dist/cli/commands/ralph-worktree.js +73 -0
- package/dist/cli/commands/ralph-worktree.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +3 -0
- package/dist/cli/commands/ralph.js +424 -0
- package/dist/cli/commands/ralph.js.map +1 -0
- package/dist/cli/commands/shared.d.ts +29 -0
- package/dist/cli/commands/shared.js +82 -0
- package/dist/cli/commands/shared.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +3 -0
- package/dist/cli/commands/skill.js +242 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/spawn.d.ts +17 -0
- package/dist/cli/commands/spawn.js +226 -0
- package/dist/cli/commands/spawn.js.map +1 -0
- package/dist/cli/commands/test.d.ts +8 -0
- package/dist/cli/commands/test.js +124 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/unconfigure.d.ts +7 -0
- package/dist/cli/commands/unconfigure.js +116 -0
- package/dist/cli/commands/unconfigure.js.map +1 -0
- package/dist/cli/commands/usage.d.ts +3 -0
- package/dist/cli/commands/usage.js +186 -0
- package/dist/cli/commands/usage.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.js +31 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/wrap.d.ts +3 -0
- package/dist/cli/commands/wrap.js +61 -0
- package/dist/cli/commands/wrap.js.map +1 -0
- package/dist/cli/constants.d.ts +24 -0
- package/dist/cli/constants.js +44 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/container.d.ts +42 -0
- package/dist/cli/container.js +90 -0
- package/dist/cli/container.js.map +1 -0
- package/dist/cli/context.d.ts +33 -0
- package/dist/cli/context.js +91 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/environment.d.ts +21 -0
- package/dist/cli/environment.js +106 -0
- package/dist/cli/environment.js.map +1 -0
- package/dist/cli/error-logger.d.ts +62 -0
- package/dist/cli/error-logger.js +155 -0
- package/dist/cli/error-logger.js.map +1 -0
- package/dist/cli/errors.d.ts +95 -0
- package/dist/cli/errors.js +141 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/exit-signals.d.ts +4 -0
- package/dist/cli/exit-signals.js +8 -0
- package/dist/cli/exit-signals.js.map +1 -0
- package/dist/cli/http.d.ts +12 -0
- package/dist/cli/http.js +2 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/isolated-env-runner.d.ts +10 -0
- package/dist/cli/isolated-env-runner.js +50 -0
- package/dist/cli/isolated-env-runner.js.map +1 -0
- package/dist/cli/isolated-env.d.ts +24 -0
- package/dist/cli/isolated-env.js +210 -0
- package/dist/cli/isolated-env.js.map +1 -0
- package/dist/cli/logger.d.ts +36 -0
- package/dist/cli/logger.js +191 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/mcp-output-format.d.ts +2 -0
- package/dist/cli/mcp-output-format.js +27 -0
- package/dist/cli/mcp-output-format.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +21 -0
- package/dist/cli/mcp-server.js +321 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/options.d.ts +45 -0
- package/dist/cli/options.js +111 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/poe-code-command-runner.d.ts +6 -0
- package/dist/cli/poe-code-command-runner.js +63 -0
- package/dist/cli/poe-code-command-runner.js.map +1 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.js +249 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/prompt-runner.d.ts +10 -0
- package/dist/cli/prompt-runner.js +79 -0
- package/dist/cli/prompt-runner.js.map +1 -0
- package/dist/cli/prompts.d.ts +39 -0
- package/dist/cli/prompts.js +42 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/service-registry.d.ts +108 -0
- package/dist/cli/service-registry.js +83 -0
- package/dist/cli/service-registry.js.map +1 -0
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/ui/service-menu.d.ts +7 -0
- package/dist/cli/ui/service-menu.js +43 -0
- package/dist/cli/ui/service-menu.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +36812 -0
- package/dist/index.js.map +7 -0
- package/dist/providers/claude-code.d.ts +13 -0
- package/dist/providers/claude-code.js +143 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/providers/codex.d.ts +17 -0
- package/dist/providers/codex.js +144 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/create-provider.d.ts +29 -0
- package/dist/providers/create-provider.js +78 -0
- package/dist/providers/create-provider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/kimi.d.ts +4 -0
- package/dist/providers/kimi.js +123 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/opencode.d.ts +3 -0
- package/dist/providers/opencode.js +119 -0
- package/dist/providers/opencode.js.map +1 -0
- package/dist/providers/spawn-options.d.ts +13 -0
- package/dist/providers/spawn-options.js +2 -0
- package/dist/providers/spawn-options.js.map +1 -0
- package/dist/sdk/container.d.ts +18 -0
- package/dist/sdk/container.js +127 -0
- package/dist/sdk/container.js.map +1 -0
- package/dist/sdk/credentials.d.ts +9 -0
- package/dist/sdk/credentials.js +35 -0
- package/dist/sdk/credentials.js.map +1 -0
- package/dist/sdk/generate.d.ts +5 -0
- package/dist/sdk/generate.js +97 -0
- package/dist/sdk/generate.js.map +1 -0
- package/dist/sdk/spawn-core.d.ts +23 -0
- package/dist/sdk/spawn-core.js +105 -0
- package/dist/sdk/spawn-core.js.map +1 -0
- package/dist/sdk/spawn.d.ts +31 -0
- package/dist/sdk/spawn.js +109 -0
- package/dist/sdk/spawn.js.map +1 -0
- package/dist/sdk/types.d.ts +44 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/services/client-instance.d.ts +12 -0
- package/dist/services/client-instance.js +36 -0
- package/dist/services/client-instance.js.map +1 -0
- package/dist/services/credentials.d.ts +24 -0
- package/dist/services/credentials.js +157 -0
- package/dist/services/credentials.js.map +1 -0
- package/dist/services/llm-client.d.ts +22 -0
- package/dist/services/llm-client.js +138 -0
- package/dist/services/llm-client.js.map +1 -0
- package/dist/services/media-download.d.ts +17 -0
- package/dist/services/media-download.js +42 -0
- package/dist/services/media-download.js.map +1 -0
- package/dist/services/model-strategy.d.ts +99 -0
- package/dist/services/model-strategy.js +187 -0
- package/dist/services/model-strategy.js.map +1 -0
- package/dist/services/mutation-events.d.ts +4 -0
- package/dist/services/mutation-events.js +53 -0
- package/dist/services/mutation-events.js.map +1 -0
- package/dist/services/service-install.d.ts +22 -0
- package/dist/services/service-install.js +70 -0
- package/dist/services/service-install.js.map +1 -0
- package/dist/services/version.d.ts +11 -0
- package/dist/services/version.js +28 -0
- package/dist/services/version.js.map +1 -0
- package/dist/tools/label-generator.d.ts +11 -0
- package/dist/tools/label-generator.js +78 -0
- package/dist/tools/label-generator.js.map +1 -0
- package/dist/utils/backup.d.ts +5 -0
- package/dist/utils/backup.js +56 -0
- package/dist/utils/backup.js.map +1 -0
- package/dist/utils/cli-settings-merge.d.ts +22 -0
- package/dist/utils/cli-settings-merge.js +56 -0
- package/dist/utils/cli-settings-merge.js.map +1 -0
- package/dist/utils/command-checks.d.ts +36 -0
- package/dist/utils/command-checks.js +120 -0
- package/dist/utils/command-checks.js.map +1 -0
- package/dist/utils/command-line.d.ts +1 -0
- package/dist/utils/command-line.js +54 -0
- package/dist/utils/command-line.js.map +1 -0
- package/dist/utils/dry-run.d.ts +39 -0
- package/dist/utils/dry-run.js +315 -0
- package/dist/utils/dry-run.js.map +1 -0
- package/dist/utils/execution-context.d.ts +48 -0
- package/dist/utils/execution-context.js +151 -0
- package/dist/utils/execution-context.js.map +1 -0
- package/dist/utils/file-system.d.ts +21 -0
- package/dist/utils/file-system.js +2 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/json.d.ts +12 -0
- package/dist/utils/json.js +45 -0
- package/dist/utils/json.js.map +1 -0
- package/package.json +5 -2
- package/packages/tiny-mcp-test-server/dist/index.js +47 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { ErrorContext } from "./error-logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Base error class for all CLI errors with context support
|
|
4
|
+
*/
|
|
5
|
+
export declare class CliError extends Error {
|
|
6
|
+
readonly context?: ErrorContext;
|
|
7
|
+
readonly isUserError: boolean;
|
|
8
|
+
constructor(message: string, context?: ErrorContext, options?: {
|
|
9
|
+
isUserError?: boolean;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Error used purely for control flow: exits the CLI silently with code 0.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SilentError extends CliError {
|
|
16
|
+
constructor(message?: string, options?: {
|
|
17
|
+
isUserError?: boolean;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* API-related errors (network, HTTP status, API responses)
|
|
22
|
+
*/
|
|
23
|
+
export declare class ApiError extends CliError {
|
|
24
|
+
readonly httpStatus?: number;
|
|
25
|
+
readonly endpoint?: string;
|
|
26
|
+
constructor(message: string, options?: {
|
|
27
|
+
httpStatus?: number;
|
|
28
|
+
endpoint?: string;
|
|
29
|
+
context?: ErrorContext;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Configuration and validation errors (user input, config files)
|
|
34
|
+
*/
|
|
35
|
+
export declare class ValidationError extends CliError {
|
|
36
|
+
constructor(message: string, context?: ErrorContext);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* File system operation errors
|
|
40
|
+
*/
|
|
41
|
+
export declare class FileSystemError extends CliError {
|
|
42
|
+
readonly filePath?: string;
|
|
43
|
+
readonly operation?: string;
|
|
44
|
+
constructor(message: string, options?: {
|
|
45
|
+
filePath?: string;
|
|
46
|
+
operation?: string;
|
|
47
|
+
context?: ErrorContext;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Authentication and credential errors
|
|
52
|
+
*/
|
|
53
|
+
export declare class AuthenticationError extends CliError {
|
|
54
|
+
constructor(message: string, context?: ErrorContext);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Command execution errors
|
|
58
|
+
*/
|
|
59
|
+
export declare class CommandExecutionError extends CliError {
|
|
60
|
+
readonly command?: string;
|
|
61
|
+
readonly exitCode?: number;
|
|
62
|
+
constructor(message: string, options?: {
|
|
63
|
+
command?: string;
|
|
64
|
+
exitCode?: number;
|
|
65
|
+
context?: ErrorContext;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Service provider errors (MCP, Codex, etc.)
|
|
70
|
+
*/
|
|
71
|
+
export declare class ServiceError extends CliError {
|
|
72
|
+
readonly service?: string;
|
|
73
|
+
constructor(message: string, options?: {
|
|
74
|
+
service?: string;
|
|
75
|
+
context?: ErrorContext;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Graceful cancellation triggered by the user (Ctrl+C, escape, etc.)
|
|
80
|
+
*/
|
|
81
|
+
export declare class OperationCancelledError extends SilentError {
|
|
82
|
+
constructor(message?: string);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Helper to determine if an error should be shown to users
|
|
86
|
+
*/
|
|
87
|
+
export declare function isUserFacingError(error: unknown): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Helper to extract error context from any error
|
|
90
|
+
*/
|
|
91
|
+
export declare function extractErrorContext(error: unknown): ErrorContext | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Helper to create a standardized error message with context
|
|
94
|
+
*/
|
|
95
|
+
export declare function formatErrorWithContext(error: Error, context?: ErrorContext): string;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all CLI errors with context support
|
|
3
|
+
*/
|
|
4
|
+
export class CliError extends Error {
|
|
5
|
+
context;
|
|
6
|
+
isUserError;
|
|
7
|
+
constructor(message, context, options) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = this.constructor.name;
|
|
10
|
+
this.context = context;
|
|
11
|
+
this.isUserError = options?.isUserError ?? false;
|
|
12
|
+
// Maintains proper stack trace for where error was thrown
|
|
13
|
+
if (Error.captureStackTrace) {
|
|
14
|
+
Error.captureStackTrace(this, this.constructor);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error used purely for control flow: exits the CLI silently with code 0.
|
|
20
|
+
*/
|
|
21
|
+
export class SilentError extends CliError {
|
|
22
|
+
constructor(message = "", options) {
|
|
23
|
+
super(message, undefined, { isUserError: options?.isUserError ?? false });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* API-related errors (network, HTTP status, API responses)
|
|
28
|
+
*/
|
|
29
|
+
export class ApiError extends CliError {
|
|
30
|
+
httpStatus;
|
|
31
|
+
endpoint;
|
|
32
|
+
constructor(message, options) {
|
|
33
|
+
super(message, {
|
|
34
|
+
...options?.context,
|
|
35
|
+
httpStatus: options?.httpStatus,
|
|
36
|
+
apiEndpoint: options?.endpoint
|
|
37
|
+
});
|
|
38
|
+
this.httpStatus = options?.httpStatus;
|
|
39
|
+
this.endpoint = options?.endpoint;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Configuration and validation errors (user input, config files)
|
|
44
|
+
*/
|
|
45
|
+
export class ValidationError extends CliError {
|
|
46
|
+
constructor(message, context) {
|
|
47
|
+
super(message, context, { isUserError: true });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* File system operation errors
|
|
52
|
+
*/
|
|
53
|
+
export class FileSystemError extends CliError {
|
|
54
|
+
filePath;
|
|
55
|
+
operation;
|
|
56
|
+
constructor(message, options) {
|
|
57
|
+
super(message, {
|
|
58
|
+
...options?.context,
|
|
59
|
+
filePath: options?.filePath,
|
|
60
|
+
operation: options?.operation
|
|
61
|
+
});
|
|
62
|
+
this.filePath = options?.filePath;
|
|
63
|
+
this.operation = options?.operation;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Authentication and credential errors
|
|
68
|
+
*/
|
|
69
|
+
export class AuthenticationError extends CliError {
|
|
70
|
+
constructor(message, context) {
|
|
71
|
+
super(message, context, { isUserError: true });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Command execution errors
|
|
76
|
+
*/
|
|
77
|
+
export class CommandExecutionError extends CliError {
|
|
78
|
+
command;
|
|
79
|
+
exitCode;
|
|
80
|
+
constructor(message, options) {
|
|
81
|
+
super(message, {
|
|
82
|
+
...options?.context,
|
|
83
|
+
command: options?.command,
|
|
84
|
+
exitCode: options?.exitCode
|
|
85
|
+
});
|
|
86
|
+
this.command = options?.command;
|
|
87
|
+
this.exitCode = options?.exitCode;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Service provider errors (MCP, Codex, etc.)
|
|
92
|
+
*/
|
|
93
|
+
export class ServiceError extends CliError {
|
|
94
|
+
service;
|
|
95
|
+
constructor(message, options) {
|
|
96
|
+
super(message, {
|
|
97
|
+
...options?.context,
|
|
98
|
+
service: options?.service
|
|
99
|
+
});
|
|
100
|
+
this.service = options?.service;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Graceful cancellation triggered by the user (Ctrl+C, escape, etc.)
|
|
105
|
+
*/
|
|
106
|
+
export class OperationCancelledError extends SilentError {
|
|
107
|
+
constructor(message = "Operation cancelled.") {
|
|
108
|
+
super(message, { isUserError: true });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Helper to determine if an error should be shown to users
|
|
113
|
+
*/
|
|
114
|
+
export function isUserFacingError(error) {
|
|
115
|
+
return error instanceof CliError && error.isUserError;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Helper to extract error context from any error
|
|
119
|
+
*/
|
|
120
|
+
export function extractErrorContext(error) {
|
|
121
|
+
if (error instanceof CliError) {
|
|
122
|
+
return error.context;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Helper to create a standardized error message with context
|
|
128
|
+
*/
|
|
129
|
+
export function formatErrorWithContext(error, context) {
|
|
130
|
+
const parts = [error.message];
|
|
131
|
+
if (context) {
|
|
132
|
+
if (context.operation) {
|
|
133
|
+
parts.push(`Operation: ${context.operation}`);
|
|
134
|
+
}
|
|
135
|
+
if (context.component) {
|
|
136
|
+
parts.push(`Component: ${context.component}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return parts.join(" | ");
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-signals.js","sourceRoot":"","sources":["../../src/cli/exit-signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C;QACE,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface HttpResponse {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
status: number;
|
|
4
|
+
json(): Promise<unknown>;
|
|
5
|
+
text?: () => Promise<string>;
|
|
6
|
+
}
|
|
7
|
+
export interface HttpClientRequest {
|
|
8
|
+
method?: string;
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
body?: string;
|
|
11
|
+
}
|
|
12
|
+
export type HttpClient = (url: string, init?: HttpClientRequest) => Promise<HttpResponse>;
|
package/dist/cli/http.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/cli/http.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProviderIsolatedEnv } from "./service-registry.js";
|
|
2
|
+
import type { CliEnvironment } from "./environment.js";
|
|
3
|
+
import type { FileSystem } from "../utils/file-system.js";
|
|
4
|
+
export declare function isolatedEnvRunner(input: {
|
|
5
|
+
env: CliEnvironment;
|
|
6
|
+
providerName: string;
|
|
7
|
+
isolated: ProviderIsolatedEnv;
|
|
8
|
+
argv: string[];
|
|
9
|
+
fs?: FileSystem;
|
|
10
|
+
}): Promise<never>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { isNotFound } from "@poe-code/config-mutations";
|
|
3
|
+
import { resolveCliSettings, resolveIsolatedEnvDetails } from "./isolated-env.js";
|
|
4
|
+
import { buildArgsWithMergedSettings } from "../utils/cli-settings-merge.js";
|
|
5
|
+
export async function isolatedEnvRunner(input) {
|
|
6
|
+
const details = await resolveIsolatedEnvDetails(input.env, input.isolated, input.providerName, input.fs);
|
|
7
|
+
let args = input.argv.slice(2);
|
|
8
|
+
if (input.isolated.requiresConfig !== false) {
|
|
9
|
+
const hasConfig = await configExists(input.fs, details.configProbePath);
|
|
10
|
+
if (!hasConfig) {
|
|
11
|
+
throw new Error(`${input.providerName} is not configured. Run 'poe-code login' or 'poe-code configure ${input.providerName}'.`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// Merge CLI settings if provider defines them
|
|
15
|
+
if (input.isolated.cliSettings) {
|
|
16
|
+
const resolvedSettings = await resolveCliSettings(input.isolated.cliSettings, input.env, input.fs);
|
|
17
|
+
args = buildArgsWithMergedSettings(args, resolvedSettings);
|
|
18
|
+
}
|
|
19
|
+
const child = spawn(details.agentBinary, args, {
|
|
20
|
+
stdio: "inherit",
|
|
21
|
+
env: {
|
|
22
|
+
...process.env,
|
|
23
|
+
...details.env
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return await new Promise((_, reject) => {
|
|
27
|
+
child.on("error", (error) => {
|
|
28
|
+
reject(error);
|
|
29
|
+
});
|
|
30
|
+
child.on("close", (code) => {
|
|
31
|
+
process.exit(code ?? 0);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async function configExists(fs, filePath) {
|
|
36
|
+
if (!fs) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
await fs.stat(filePath);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (isNotFound(error)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=isolated-env-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolated-env-runner.js","sourceRoot":"","sources":["../../src/cli/isolated-env-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAElF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAMvC;IACC,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,CACT,CAAC;IACF,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,eAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,CAAC,YAAY,mEAAmE,KAAK,CAAC,YAAY,IAAI,CAC/G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAC/C,KAAK,CAAC,QAAQ,CAAC,WAAW,EAC1B,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,EAAE,CACT,CAAC;QACF,IAAI,GAAG,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;QAC7C,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE;YACH,GAAI,OAAO,CAAC,GAA0C;YACtD,GAAG,OAAO,CAAC,GAAG;SACf;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,EAA0B,EAC1B,QAAgB;IAEhB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CliEnvironment } from "./environment.js";
|
|
2
|
+
import type { FileSystem } from "../utils/file-system.js";
|
|
3
|
+
import type { IsolatedCliSettings, ProviderIsolatedEnv } from "./service-registry.js";
|
|
4
|
+
import type { CliSettings } from "../utils/cli-settings-merge.js";
|
|
5
|
+
export interface IsolatedEnvDetails {
|
|
6
|
+
agentBinary: string;
|
|
7
|
+
env: Record<string, string>;
|
|
8
|
+
configProbePath?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveIsolatedEnvDetails(env: CliEnvironment, isolated: ProviderIsolatedEnv, providerName?: string, fs?: FileSystem): Promise<IsolatedEnvDetails>;
|
|
11
|
+
export declare function resolveIsolatedTargetDirectory(input: {
|
|
12
|
+
targetDirectory: string;
|
|
13
|
+
isolated: ProviderIsolatedEnv;
|
|
14
|
+
env: CliEnvironment;
|
|
15
|
+
providerName: string;
|
|
16
|
+
}): string;
|
|
17
|
+
export declare function isolatedConfigExists(fs: FileSystem, configProbePath: string): Promise<boolean>;
|
|
18
|
+
export declare function applyIsolatedEnvRepairs(input: {
|
|
19
|
+
fs: FileSystem;
|
|
20
|
+
env: CliEnvironment;
|
|
21
|
+
providerName: string;
|
|
22
|
+
isolated: ProviderIsolatedEnv;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
export declare function resolveCliSettings(cliSettings: IsolatedCliSettings, env: CliEnvironment, fs?: FileSystem): Promise<CliSettings>;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { isNotFound } from "@poe-code/config-mutations";
|
|
3
|
+
import { loadCredentials } from "../services/credentials.js";
|
|
4
|
+
export async function resolveIsolatedEnvDetails(env, isolated, providerName, fs) {
|
|
5
|
+
if (!providerName) {
|
|
6
|
+
throw new Error("resolveIsolatedEnvDetails requires providerName.");
|
|
7
|
+
}
|
|
8
|
+
const baseDir = resolveIsolatedBaseDir(env, providerName);
|
|
9
|
+
const requiresConfig = isolated.requiresConfig !== false;
|
|
10
|
+
if (requiresConfig && !isolated.configProbe) {
|
|
11
|
+
throw new Error(`resolveIsolatedEnvDetails requires configProbe when requiresConfig is true (provider "${providerName}").`);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
agentBinary: isolated.agentBinary,
|
|
15
|
+
env: await resolveIsolatedEnvVars(env, baseDir, isolated.env, fs),
|
|
16
|
+
configProbePath: isolated.configProbe
|
|
17
|
+
? resolveIsolatedEnvPath(env, baseDir, isolated.configProbe)
|
|
18
|
+
: undefined
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function resolveIsolatedTargetDirectory(input) {
|
|
22
|
+
const expanded = expandHomeShortcut(input.env, input.targetDirectory);
|
|
23
|
+
const baseDir = resolveIsolatedBaseDir(input.env, input.providerName);
|
|
24
|
+
const homeDir = input.env.homeDir;
|
|
25
|
+
const homeDirWithSep = `${homeDir}${path.sep}`;
|
|
26
|
+
if (expanded !== homeDir && !expanded.startsWith(homeDirWithSep)) {
|
|
27
|
+
throw new Error(`Isolated config targets must live under the user's home directory (received "${input.targetDirectory}").`);
|
|
28
|
+
}
|
|
29
|
+
if (expanded === baseDir) {
|
|
30
|
+
return baseDir;
|
|
31
|
+
}
|
|
32
|
+
if (expanded === homeDir) {
|
|
33
|
+
return baseDir;
|
|
34
|
+
}
|
|
35
|
+
if (!expanded.startsWith(homeDirWithSep)) {
|
|
36
|
+
return expanded;
|
|
37
|
+
}
|
|
38
|
+
const mapped = path.join(baseDir, expanded.slice(homeDirWithSep.length));
|
|
39
|
+
return stripAgentHome(mapped, baseDir, input.isolated.agentBinary);
|
|
40
|
+
}
|
|
41
|
+
function resolveIsolatedBaseDir(env, providerName) {
|
|
42
|
+
return env.resolveHomePath(".poe-code", providerName);
|
|
43
|
+
}
|
|
44
|
+
async function resolveIsolatedEnvVars(env, baseDir, vars, fs) {
|
|
45
|
+
const out = {};
|
|
46
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
47
|
+
out[key] = await resolveIsolatedEnvValue(env, baseDir, value, fs);
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
async function resolveIsolatedEnvValue(env, baseDir, value, fs) {
|
|
52
|
+
if (typeof value === "string") {
|
|
53
|
+
return expandHomeShortcut(env, value);
|
|
54
|
+
}
|
|
55
|
+
if (isEnvVarReference(value)) {
|
|
56
|
+
const resolved = env.getVariable(value.name);
|
|
57
|
+
if (typeof resolved !== "string" || resolved.trim().length === 0) {
|
|
58
|
+
throw new Error(`Missing required environment variable "${value.name}" for isolated wrapper.`);
|
|
59
|
+
}
|
|
60
|
+
return resolved;
|
|
61
|
+
}
|
|
62
|
+
if (isPoeApiKeyReference(value)) {
|
|
63
|
+
const resolved = env.getVariable("POE_API_KEY");
|
|
64
|
+
if (typeof resolved === "string" && resolved.trim().length > 0) {
|
|
65
|
+
return resolved;
|
|
66
|
+
}
|
|
67
|
+
if (!fs) {
|
|
68
|
+
throw new Error('Missing Poe API key for isolated wrapper. Set "POE_API_KEY" or run "poe-code login".');
|
|
69
|
+
}
|
|
70
|
+
return await resolvePoeApiKeyFromCredentials({ fs, env });
|
|
71
|
+
}
|
|
72
|
+
if (isPoeBaseUrlReference(value)) {
|
|
73
|
+
return env.poeBaseUrl;
|
|
74
|
+
}
|
|
75
|
+
if (value.kind === "isolatedDir" || value.kind === "isolatedFile") {
|
|
76
|
+
return resolveIsolatedEnvPath(env, baseDir, value);
|
|
77
|
+
}
|
|
78
|
+
throw new Error("Unsupported isolated environment value.");
|
|
79
|
+
}
|
|
80
|
+
function resolveIsolatedEnvPath(env, baseDir, value) {
|
|
81
|
+
switch (value.kind) {
|
|
82
|
+
case "isolatedDir":
|
|
83
|
+
return value.relativePath
|
|
84
|
+
? path.join(baseDir, value.relativePath)
|
|
85
|
+
: baseDir;
|
|
86
|
+
case "isolatedFile":
|
|
87
|
+
return path.join(baseDir, value.relativePath);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function isEnvVarReference(value) {
|
|
91
|
+
return typeof value === "object" && value.kind === "envVar";
|
|
92
|
+
}
|
|
93
|
+
function isPoeApiKeyReference(value) {
|
|
94
|
+
return typeof value === "object" && value.kind === "poeApiKey";
|
|
95
|
+
}
|
|
96
|
+
function isPoeBaseUrlReference(value) {
|
|
97
|
+
return typeof value === "object" && value.kind === "poeBaseUrl";
|
|
98
|
+
}
|
|
99
|
+
async function resolvePoeApiKeyFromCredentials(input) {
|
|
100
|
+
const stored = (await loadCredentials({ fs: input.fs, filePath: input.env.credentialsPath })) ??
|
|
101
|
+
undefined;
|
|
102
|
+
if (typeof stored !== "string" || stored.trim().length === 0) {
|
|
103
|
+
throw new Error('Missing Poe API key for isolated wrapper. Set "POE_API_KEY" or run "poe-code login".');
|
|
104
|
+
}
|
|
105
|
+
return stored;
|
|
106
|
+
}
|
|
107
|
+
export async function isolatedConfigExists(fs, configProbePath) {
|
|
108
|
+
try {
|
|
109
|
+
await fs.stat(configProbePath);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
if (isNotFound(error)) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export async function applyIsolatedEnvRepairs(input) {
|
|
120
|
+
const repairs = input.isolated.repairs ?? [];
|
|
121
|
+
if (repairs.length === 0 || typeof input.fs.chmod !== "function") {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const baseDir = input.env.resolveHomePath(".poe-code", input.providerName);
|
|
125
|
+
for (const repair of repairs) {
|
|
126
|
+
if (repair.kind !== "chmod") {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (path.isAbsolute(repair.relativePath)) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const repairPath = path.join(baseDir, repair.relativePath);
|
|
133
|
+
try {
|
|
134
|
+
await input.fs.chmod(repairPath, repair.mode);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (isNotFound(error)) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export async function resolveCliSettings(cliSettings, env, fs) {
|
|
145
|
+
const result = { ...cliSettings.values };
|
|
146
|
+
// Resolve top-level settings
|
|
147
|
+
if (cliSettings.resolved) {
|
|
148
|
+
for (const [key, value] of Object.entries(cliSettings.resolved)) {
|
|
149
|
+
result[key] = await resolveCliSettingValue(value, env, fs);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Resolve env settings (nested under settings.env)
|
|
153
|
+
if (cliSettings.env) {
|
|
154
|
+
const resolvedEnv = {};
|
|
155
|
+
for (const [key, value] of Object.entries(cliSettings.env)) {
|
|
156
|
+
if (typeof value === "string") {
|
|
157
|
+
resolvedEnv[key] = value;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
resolvedEnv[key] = await resolveCliSettingValue(value, env, fs);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
result.env = resolvedEnv;
|
|
164
|
+
}
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
async function resolveCliSettingValue(value, env, fs) {
|
|
168
|
+
if (isPoeApiKeyReference(value)) {
|
|
169
|
+
const resolved = env.getVariable("POE_API_KEY");
|
|
170
|
+
if (typeof resolved === "string" && resolved.trim().length > 0) {
|
|
171
|
+
return resolved;
|
|
172
|
+
}
|
|
173
|
+
if (fs) {
|
|
174
|
+
return await resolvePoeApiKeyFromCredentials({ fs, env });
|
|
175
|
+
}
|
|
176
|
+
throw new Error('Missing Poe API key for CLI settings. Set "POE_API_KEY" or run "poe-code login".');
|
|
177
|
+
}
|
|
178
|
+
if (isPoeBaseUrlReference(value)) {
|
|
179
|
+
return env.poeBaseUrl;
|
|
180
|
+
}
|
|
181
|
+
throw new Error("Unsupported CLI setting value type.");
|
|
182
|
+
}
|
|
183
|
+
function stripAgentHome(mapped, baseDir, agentBinary) {
|
|
184
|
+
const agentDir = `.${agentBinary}`;
|
|
185
|
+
const prefix = path.join(baseDir, agentDir);
|
|
186
|
+
if (mapped === prefix) {
|
|
187
|
+
return baseDir;
|
|
188
|
+
}
|
|
189
|
+
const withSep = `${prefix}${path.sep}`;
|
|
190
|
+
if (mapped.startsWith(withSep)) {
|
|
191
|
+
return path.join(baseDir, mapped.slice(withSep.length));
|
|
192
|
+
}
|
|
193
|
+
return mapped;
|
|
194
|
+
}
|
|
195
|
+
function expandHomeShortcut(env, input) {
|
|
196
|
+
if (!input.startsWith("~")) {
|
|
197
|
+
return input;
|
|
198
|
+
}
|
|
199
|
+
if (input === "~") {
|
|
200
|
+
return env.homeDir;
|
|
201
|
+
}
|
|
202
|
+
if (input.startsWith("~/") || input.startsWith(`~${path.sep}`)) {
|
|
203
|
+
return path.join(env.homeDir, input.slice(2));
|
|
204
|
+
}
|
|
205
|
+
if (input.startsWith("~./") || input.startsWith(`~.${path.sep}`)) {
|
|
206
|
+
return path.join(env.homeDir, `.${input.slice(3)}`);
|
|
207
|
+
}
|
|
208
|
+
return input;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=isolated-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolated-env.js","sourceRoot":"","sources":["../../src/cli/isolated-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { LoggerFn } from "./types.js";
|
|
2
|
+
import type { ErrorLogger, ErrorContext } from "./error-logger.js";
|
|
3
|
+
export interface LoggerContext {
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
scope?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ScopedLogger {
|
|
9
|
+
readonly context: Required<Pick<LoggerContext, "dryRun" | "verbose">> & Pick<LoggerContext, "scope">;
|
|
10
|
+
info(message: string): void;
|
|
11
|
+
success(message: string): void;
|
|
12
|
+
warn(message: string): void;
|
|
13
|
+
error(message: string): void;
|
|
14
|
+
errorResolved(label: string, value: string): void;
|
|
15
|
+
errorWithStack(error: Error, context?: ErrorContext): void;
|
|
16
|
+
logException(error: Error, operation: string, context?: ErrorContext): void;
|
|
17
|
+
dryRun(message: string): void;
|
|
18
|
+
verbose(message: string): void;
|
|
19
|
+
intro(title: string): void;
|
|
20
|
+
resolved(label: string, value: string): void;
|
|
21
|
+
nextSteps(steps: string[]): void;
|
|
22
|
+
feedback(label: string, url: string): void;
|
|
23
|
+
child(context: Partial<LoggerContext>): ScopedLogger;
|
|
24
|
+
}
|
|
25
|
+
export interface LoggerFactory {
|
|
26
|
+
base: LoggerFn;
|
|
27
|
+
errorLogger?: ErrorLogger;
|
|
28
|
+
create(context?: LoggerContext): ScopedLogger;
|
|
29
|
+
setErrorLogger(errorLogger: ErrorLogger): void;
|
|
30
|
+
}
|
|
31
|
+
export interface LoggerTheme {
|
|
32
|
+
intro?: (text: string) => string;
|
|
33
|
+
resolvedSymbol?: string;
|
|
34
|
+
errorSymbol?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function createLoggerFactory(emitter?: LoggerFn, theme?: LoggerTheme): LoggerFactory;
|