poe-code 0.1.26
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 +64 -0
- package/dist/cli/api-client.d.ts +14 -0
- package/dist/cli/api-client.js +140 -0
- package/dist/cli/api-client.js.map +1 -0
- package/dist/cli/chat.d.ts +32 -0
- package/dist/cli/chat.js +2 -0
- package/dist/cli/chat.js.map +1 -0
- package/dist/cli/command-runner.d.ts +2 -0
- package/dist/cli/command-runner.js +37 -0
- package/dist/cli/command-runner.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +18 -0
- package/dist/cli/commands/agent.js +84 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/configure-agents.d.ts +3 -0
- package/dist/cli/commands/configure-agents.js +72 -0
- package/dist/cli/commands/configure-agents.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +11 -0
- package/dist/cli/commands/configure.js +150 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.js +45 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/interactive.d.ts +3 -0
- package/dist/cli/commands/interactive.js +17 -0
- package/dist/cli/commands/interactive.js.map +1 -0
- package/dist/cli/commands/login.d.ts +6 -0
- package/dist/cli/commands/login.js +51 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +3 -0
- package/dist/cli/commands/logout.js +31 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/prerequisites.d.ts +3 -0
- package/dist/cli/commands/prerequisites.js +23 -0
- package/dist/cli/commands/prerequisites.js.map +1 -0
- package/dist/cli/commands/query.d.ts +7 -0
- package/dist/cli/commands/query.js +46 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/remove.d.ts +6 -0
- package/dist/cli/commands/remove.js +80 -0
- package/dist/cli/commands/remove.js.map +1 -0
- package/dist/cli/commands/root.d.ts +3 -0
- package/dist/cli/commands/root.js +7 -0
- package/dist/cli/commands/root.js.map +1 -0
- package/dist/cli/commands/shared.d.ts +24 -0
- package/dist/cli/commands/shared.js +61 -0
- package/dist/cli/commands/shared.js.map +1 -0
- package/dist/cli/commands/spawn-worktree.d.ts +6 -0
- package/dist/cli/commands/spawn-worktree.js +91 -0
- package/dist/cli/commands/spawn-worktree.js.map +1 -0
- package/dist/cli/commands/spawn.d.ts +7 -0
- package/dist/cli/commands/spawn.js +112 -0
- package/dist/cli/commands/spawn.js.map +1 -0
- package/dist/cli/commands/test.d.ts +6 -0
- package/dist/cli/commands/test.js +26 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/constants.d.ts +10 -0
- package/dist/cli/constants.js +11 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/container.d.ts +48 -0
- package/dist/cli/container.js +94 -0
- package/dist/cli/container.js.map +1 -0
- package/dist/cli/context.d.ts +37 -0
- package/dist/cli/context.js +198 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/environment.d.ts +19 -0
- package/dist/cli/environment.js +26 -0
- package/dist/cli/environment.js.map +1 -0
- package/dist/cli/error-logger.d.ts +46 -0
- package/dist/cli/error-logger.js +137 -0
- package/dist/cli/error-logger.js.map +1 -0
- package/dist/cli/errors.d.ts +91 -0
- package/dist/cli/errors.js +128 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/file-mentions.d.ts +13 -0
- package/dist/cli/file-mentions.js +87 -0
- package/dist/cli/file-mentions.js.map +1 -0
- package/dist/cli/file-picker-state.d.ts +14 -0
- package/dist/cli/file-picker-state.js +23 -0
- package/dist/cli/file-picker-state.js.map +1 -0
- package/dist/cli/http.d.ts +11 -0
- package/dist/cli/http.js +2 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/interactive-command-runner.d.ts +11 -0
- package/dist/cli/interactive-command-runner.js +142 -0
- package/dist/cli/interactive-command-runner.js.map +1 -0
- package/dist/cli/interactive-launcher.d.ts +2 -0
- package/dist/cli/interactive-launcher.js +404 -0
- package/dist/cli/interactive-launcher.js.map +1 -0
- package/dist/cli/interactive-tasks.d.ts +7 -0
- package/dist/cli/interactive-tasks.js +199 -0
- package/dist/cli/interactive-tasks.js.map +1 -0
- package/dist/cli/interactive.d.ts +19 -0
- package/dist/cli/interactive.js +479 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/logger.d.ts +26 -0
- package/dist/cli/logger.js +87 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/markdown-renderer.d.ts +27 -0
- package/dist/cli/markdown-renderer.js +178 -0
- package/dist/cli/markdown-renderer.js.map +1 -0
- package/dist/cli/markdown-renderer.test.d.ts +1 -0
- package/dist/cli/markdown-renderer.test.js +105 -0
- package/dist/cli/markdown-renderer.test.js.map +1 -0
- package/dist/cli/options.d.ts +30 -0
- package/dist/cli/options.js +84 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.js +64 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/prompts.d.ts +23 -0
- package/dist/cli/prompts.js +58 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/service-registry.d.ts +33 -0
- package/dist/cli/service-registry.js +35 -0
- package/dist/cli/service-registry.js.map +1 -0
- package/dist/cli/telemetry.d.ts +15 -0
- package/dist/cli/telemetry.js +45 -0
- package/dist/cli/telemetry.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/commands/init.d.ts +9 -0
- package/dist/commands/init.js +43 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/publish-placeholder.d.ts +8 -0
- package/dist/commands/publish-placeholder.js +50 -0
- package/dist/commands/publish-placeholder.js.map +1 -0
- package/dist/commands/spawn-worktree.d.ts +25 -0
- package/dist/commands/spawn-worktree.js +139 -0
- package/dist/commands/spawn-worktree.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/claude-code-adapter.d.ts +20 -0
- package/dist/providers/claude-code-adapter.js +48 -0
- package/dist/providers/claude-code-adapter.js.map +1 -0
- package/dist/providers/codex-adapter.d.ts +19 -0
- package/dist/providers/codex-adapter.js +49 -0
- package/dist/providers/codex-adapter.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +13 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/opencode-adapter.d.ts +18 -0
- package/dist/providers/opencode-adapter.js +45 -0
- package/dist/providers/opencode-adapter.js.map +1 -0
- package/dist/providers/roo-code-adapter.d.ts +19 -0
- package/dist/providers/roo-code-adapter.js +70 -0
- package/dist/providers/roo-code-adapter.js.map +1 -0
- package/dist/services/agent-config-manager.d.ts +32 -0
- package/dist/services/agent-config-manager.js +130 -0
- package/dist/services/agent-config-manager.js.map +1 -0
- package/dist/services/agent-registry.d.ts +27 -0
- package/dist/services/agent-registry.js +89 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/agent-session.d.ts +24 -0
- package/dist/services/agent-session.js +107 -0
- package/dist/services/agent-session.js.map +1 -0
- package/dist/services/agent-task-registry.d.ts +131 -0
- package/dist/services/agent-task-registry.js +491 -0
- package/dist/services/agent-task-registry.js.map +1 -0
- package/dist/services/chat.d.ts +94 -0
- package/dist/services/chat.js +241 -0
- package/dist/services/chat.js.map +1 -0
- package/dist/services/claude-code.d.ts +28 -0
- package/dist/services/claude-code.js +155 -0
- package/dist/services/claude-code.js.map +1 -0
- package/dist/services/codex.d.ts +27 -0
- package/dist/services/codex.js +231 -0
- package/dist/services/codex.js.map +1 -0
- package/dist/services/credentials.d.ts +11 -0
- package/dist/services/credentials.js +44 -0
- package/dist/services/credentials.js.map +1 -0
- package/dist/services/mcp-client.d.ts +38 -0
- package/dist/services/mcp-client.js +170 -0
- package/dist/services/mcp-client.js.map +1 -0
- package/dist/services/mcp-manager.d.ts +28 -0
- package/dist/services/mcp-manager.js +157 -0
- package/dist/services/mcp-manager.js.map +1 -0
- package/dist/services/model-strategy.d.ts +99 -0
- package/dist/services/model-strategy.js +182 -0
- package/dist/services/model-strategy.js.map +1 -0
- package/dist/services/opencode.d.ts +25 -0
- package/dist/services/opencode.js +161 -0
- package/dist/services/opencode.js.map +1 -0
- package/dist/services/poe-code.d.ts +7 -0
- package/dist/services/poe-code.js +5 -0
- package/dist/services/poe-code.js.map +1 -0
- package/dist/services/roo-code.d.ts +22 -0
- package/dist/services/roo-code.js +134 -0
- package/dist/services/roo-code.js.map +1 -0
- package/dist/services/service-install.d.ts +21 -0
- package/dist/services/service-install.js +47 -0
- package/dist/services/service-install.js.map +1 -0
- package/dist/services/service-manifest.d.ts +122 -0
- package/dist/services/service-manifest.js +368 -0
- package/dist/services/service-manifest.js.map +1 -0
- package/dist/services/task-logger.d.ts +24 -0
- package/dist/services/task-logger.js +73 -0
- package/dist/services/task-logger.js.map +1 -0
- package/dist/services/task-runner.d.ts +19 -0
- package/dist/services/task-runner.js +157 -0
- package/dist/services/task-runner.js.map +1 -0
- package/dist/services/tools.d.ts +76 -0
- package/dist/services/tools.js +870 -0
- package/dist/services/tools.js.map +1 -0
- package/dist/templates/claude-code/anthropic_key.sh.hbs +2 -0
- package/dist/templates/codex/config.toml.hbs +9 -0
- package/dist/templates/python/env.hbs +3 -0
- package/dist/templates/python/main.py.hbs +17 -0
- package/dist/templates/python/requirements.txt.hbs +2 -0
- package/dist/utils/backup.d.ts +5 -0
- package/dist/utils/backup.js +61 -0
- package/dist/utils/backup.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 +38 -0
- package/dist/utils/dry-run.js +211 -0
- package/dist/utils/dry-run.js.map +1 -0
- package/dist/utils/e2e-flags.d.ts +1 -0
- package/dist/utils/e2e-flags.js +9 -0
- package/dist/utils/e2e-flags.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 +42 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/prerequisites.d.ts +41 -0
- package/dist/utils/prerequisites.js +92 -0
- package/dist/utils/prerequisites.js.map +1 -0
- package/dist/utils/templates.d.ts +4 -0
- package/dist/utils/templates.js +22 -0
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/toml.d.ts +8 -0
- package/dist/utils/toml.js +30 -0
- package/dist/utils/toml.js.map +1 -0
- package/dist/utils/worktree.d.ts +40 -0
- package/dist/utils/worktree.js +179 -0
- package/dist/utils/worktree.js.map +1 -0
- package/package.json +84 -0
- package/shared/conversation-layout.cjs +11 -0
- package/shared/conversation-layout.d.ts +7 -0
- package/shared/conversation-layout.js +11 -0
- package/shared/package.json +13 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { DryRunRecorder, formatDryRunOperations } from "../utils/dry-run.js";
|
|
3
|
+
import { createDryRunFileSystem } from "../utils/dry-run.js";
|
|
4
|
+
import { createPrerequisiteManager } from "../utils/prerequisites.js";
|
|
5
|
+
export function createCommandContextFactory(init) {
|
|
6
|
+
const { fs } = init;
|
|
7
|
+
const create = (options) => {
|
|
8
|
+
const prerequisites = createPrerequisiteManager({
|
|
9
|
+
isDryRun: options.dryRun,
|
|
10
|
+
runCommand: options.runner
|
|
11
|
+
});
|
|
12
|
+
if (!options.dryRun) {
|
|
13
|
+
return {
|
|
14
|
+
fs,
|
|
15
|
+
prerequisites,
|
|
16
|
+
runCommand: options.runner,
|
|
17
|
+
complete(messages) {
|
|
18
|
+
options.logger.info(messages.success);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const recorder = new DryRunRecorder();
|
|
23
|
+
const proxyFs = createDryRunFileSystem(fs, recorder);
|
|
24
|
+
const recordedCommands = new Set();
|
|
25
|
+
const entries = [];
|
|
26
|
+
const recordMutation = (entry) => {
|
|
27
|
+
entries.push(entry);
|
|
28
|
+
recordedCommands.add(entry.command);
|
|
29
|
+
};
|
|
30
|
+
const flush = () => {
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
options.logger.info(entry.message);
|
|
33
|
+
}
|
|
34
|
+
for (const line of formatDryRunOperations(recorder.drain())) {
|
|
35
|
+
const base = extractBaseCommand(line);
|
|
36
|
+
if (!recordedCommands.has(base)) {
|
|
37
|
+
options.logger.info(line);
|
|
38
|
+
recordedCommands.add(base);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
fs: proxyFs,
|
|
44
|
+
prerequisites,
|
|
45
|
+
recordMutation,
|
|
46
|
+
runCommand: options.runner,
|
|
47
|
+
complete(messages) {
|
|
48
|
+
options.logger.dryRun(messages.dry);
|
|
49
|
+
flush();
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
return { create };
|
|
54
|
+
}
|
|
55
|
+
export function createLoggingCommandRunner(runner, logger) {
|
|
56
|
+
return async (command, args) => {
|
|
57
|
+
const rendered = [command, ...args].join(" ").trim();
|
|
58
|
+
logger.verbose(`> ${rendered}`);
|
|
59
|
+
return runner(command, args);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function createPrerequisiteHooks(phase, logger) {
|
|
63
|
+
if (!logger.context.verbose) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
onStart(prerequisite) {
|
|
68
|
+
logger.verbose(`Running ${phase} prerequisite: ${prerequisite.description}`);
|
|
69
|
+
},
|
|
70
|
+
onSuccess(prerequisite) {
|
|
71
|
+
logger.verbose(`✓ ${prerequisite.description}`);
|
|
72
|
+
},
|
|
73
|
+
onFailure(prerequisite, error) {
|
|
74
|
+
const detail = error instanceof Error ? error.message : String(error ?? "Unknown error");
|
|
75
|
+
logger.error(`✖ ${prerequisite.description}: ${detail}`);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function createMutationLogger(logger, options) {
|
|
80
|
+
const { collector } = options;
|
|
81
|
+
const verbose = logger.context.verbose;
|
|
82
|
+
if (!verbose && !collector) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
const emit = (entry) => {
|
|
86
|
+
collector?.(entry);
|
|
87
|
+
if (verbose) {
|
|
88
|
+
logger.info(entry.message);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
onStart() {
|
|
93
|
+
// Start is intentionally silent to keep verbose logging focused on results.
|
|
94
|
+
},
|
|
95
|
+
onComplete(details, outcome) {
|
|
96
|
+
const command = formatMutationCommand(details, outcome);
|
|
97
|
+
emit({
|
|
98
|
+
command,
|
|
99
|
+
message: decorateMutationCommand(command, outcome)
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
onError(details, error) {
|
|
103
|
+
const command = formatMutationCommand(details);
|
|
104
|
+
const rendered = renderMutationError(command, error);
|
|
105
|
+
logger.error(rendered);
|
|
106
|
+
collector?.({ command, message: rendered });
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function normalizePhase(value) {
|
|
111
|
+
const normalized = value.toLowerCase();
|
|
112
|
+
if (normalized === "before" || normalized === "after") {
|
|
113
|
+
return normalized;
|
|
114
|
+
}
|
|
115
|
+
throw new Error(`Unknown phase "${value}". Use "before" or "after".`);
|
|
116
|
+
}
|
|
117
|
+
function renderMutationError(command, error) {
|
|
118
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
119
|
+
return chalk.red(`${command} ! ${detail}`);
|
|
120
|
+
}
|
|
121
|
+
function formatMutationCommand(details, outcome) {
|
|
122
|
+
const target = details.targetPath;
|
|
123
|
+
const effect = outcome?.effect;
|
|
124
|
+
if (effect && effect !== "none") {
|
|
125
|
+
return describeEffect(effect, target);
|
|
126
|
+
}
|
|
127
|
+
switch (details.kind) {
|
|
128
|
+
case "ensureDirectory":
|
|
129
|
+
return describeEffect("mkdir", target);
|
|
130
|
+
case "createBackup":
|
|
131
|
+
return describeEffect("copy", target);
|
|
132
|
+
case "removeFile":
|
|
133
|
+
return describeEffect("delete", target);
|
|
134
|
+
case "writeTemplate":
|
|
135
|
+
case "transformFile":
|
|
136
|
+
return describeEffect("write", target);
|
|
137
|
+
default:
|
|
138
|
+
return details.label;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function decorateMutationCommand(command, outcome) {
|
|
142
|
+
const colored = colorizeMutation(command, outcome);
|
|
143
|
+
const suffix = describeOutcomeDetail(outcome);
|
|
144
|
+
return suffix ? `${colored} ${chalk.dim(`# ${suffix}`)}` : colored;
|
|
145
|
+
}
|
|
146
|
+
function colorizeMutation(command, outcome) {
|
|
147
|
+
if (!outcome.changed || outcome.effect === "none") {
|
|
148
|
+
return chalk.dim(command);
|
|
149
|
+
}
|
|
150
|
+
switch (outcome.effect) {
|
|
151
|
+
case "mkdir":
|
|
152
|
+
case "copy":
|
|
153
|
+
return chalk.cyan(command);
|
|
154
|
+
case "delete":
|
|
155
|
+
return chalk.red(command);
|
|
156
|
+
case "write":
|
|
157
|
+
return chalk.green(command);
|
|
158
|
+
default:
|
|
159
|
+
return command;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function describeOutcomeDetail(outcome) {
|
|
163
|
+
switch (outcome.detail) {
|
|
164
|
+
case "create":
|
|
165
|
+
return "create";
|
|
166
|
+
case "update":
|
|
167
|
+
return "update";
|
|
168
|
+
case "delete":
|
|
169
|
+
return "delete";
|
|
170
|
+
case "noop":
|
|
171
|
+
return "no change";
|
|
172
|
+
default:
|
|
173
|
+
return outcome.detail;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function describeEffect(effect, target) {
|
|
177
|
+
switch (effect) {
|
|
178
|
+
case "mkdir":
|
|
179
|
+
return target ? `mkdir -p ${target}` : "mkdir -p";
|
|
180
|
+
case "copy":
|
|
181
|
+
return target ? `cp ${target} ${target}.bak` : "cp <target> <target>.bak";
|
|
182
|
+
case "write":
|
|
183
|
+
return target ? `cat > ${target}` : "cat > <target>";
|
|
184
|
+
case "delete":
|
|
185
|
+
return target ? `rm ${target}` : "rm <target>";
|
|
186
|
+
default:
|
|
187
|
+
return effect;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function extractBaseCommand(message) {
|
|
191
|
+
const raw = stripAnsi(message);
|
|
192
|
+
const detailIndex = raw.indexOf(" #");
|
|
193
|
+
return detailIndex >= 0 ? raw.slice(0, detailIndex).trim() : raw.trim();
|
|
194
|
+
}
|
|
195
|
+
function stripAnsi(value) {
|
|
196
|
+
return value.replace(/\u001B\[[0-9;]*m/g, "");
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAS7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAwCtE,MAAM,UAAU,2BAA2B,CACzC,IAA+B;IAE/B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAEpB,MAAM,MAAM,GAAG,CAAC,OAA8B,EAAkB,EAAE;QAChE,MAAM,aAAa,GAAG,yBAAyB,CAAC;YAC9C,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO;gBACL,EAAE;gBACF,aAAa;gBACb,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,QAAQ,CAAC,QAAQ;oBACf,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAQ,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1B,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,OAAO;YACX,aAAa;YACb,cAAc;YACd,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,QAAQ,CAAC,QAAQ;gBACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,KAAK,EAAE,CAAC;YACV,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAqB,EACrB,MAAoB;IAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAgC,EAAE;QAC3D,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,MAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,YAAY;YAClB,MAAM,CAAC,OAAO,CACZ,WAAW,KAAK,kBAAkB,YAAY,CAAC,WAAW,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,YAAY;YACpB,MAAM,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,SAAS,CAAC,YAAY,EAAE,KAAK;YAC3B,MAAM,MAAM,GACV,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAoB,EACpB,OAA0D;IAE1D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAQ,EAAE;QAC7C,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;YACL,4EAA4E;QAC9E,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,OAAO;YACzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,OAAO;gBACP,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,OAAO,EAAE,KAAK;YACpB,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,6BAA6B,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAc;IAC1D,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA2B,EAC3B,OAAgC;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,iBAAiB;YACpB,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,KAAK,cAAc;YACjB,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,KAAK,YAAY;YACf,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,eAAe,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC;YACE,OAAO,OAAO,CAAC,KAAK,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAe,EACf,OAA+B;IAE/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAe,EACf,OAA+B;IAE/B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA+B;IAE/B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,MAAe;IACrD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QACpD,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC;QAC5E,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACvD,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACjD;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface CliEnvironmentInit {
|
|
2
|
+
cwd: string;
|
|
3
|
+
homeDir: string;
|
|
4
|
+
platform?: NodeJS.Platform;
|
|
5
|
+
variables?: Record<string, string | undefined>;
|
|
6
|
+
}
|
|
7
|
+
export interface CliEnvironment {
|
|
8
|
+
readonly cwd: string;
|
|
9
|
+
readonly homeDir: string;
|
|
10
|
+
readonly platform: NodeJS.Platform;
|
|
11
|
+
readonly credentialsPath: string;
|
|
12
|
+
readonly logDir: string;
|
|
13
|
+
readonly variables: Record<string, string | undefined>;
|
|
14
|
+
resolveHomePath: (...segments: string[]) => string;
|
|
15
|
+
getVariable: (name: string) => string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function createCliEnvironment(init: CliEnvironmentInit): CliEnvironment;
|
|
18
|
+
export declare function resolveCredentialsPath(homeDir: string): string;
|
|
19
|
+
export declare function resolveLogDir(homeDir: string): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
export function createCliEnvironment(init) {
|
|
3
|
+
const platform = init.platform ?? process.platform;
|
|
4
|
+
const variables = init.variables ?? process.env;
|
|
5
|
+
const credentialsPath = resolveCredentialsPath(init.homeDir);
|
|
6
|
+
const logDir = resolveLogDir(init.homeDir);
|
|
7
|
+
const resolveHomePath = (...segments) => path.join(init.homeDir, ...segments);
|
|
8
|
+
const getVariable = (name) => variables[name];
|
|
9
|
+
return {
|
|
10
|
+
cwd: init.cwd,
|
|
11
|
+
homeDir: init.homeDir,
|
|
12
|
+
platform,
|
|
13
|
+
credentialsPath,
|
|
14
|
+
logDir,
|
|
15
|
+
variables,
|
|
16
|
+
resolveHomePath,
|
|
17
|
+
getVariable
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function resolveCredentialsPath(homeDir) {
|
|
21
|
+
return path.join(homeDir, ".poe-code", "credentials.json");
|
|
22
|
+
}
|
|
23
|
+
export function resolveLogDir(homeDir) {
|
|
24
|
+
return path.join(homeDir, ".poe-code", "logs");
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAoB7B,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAChD,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE3C,MAAM,eAAe,GAAG,CAAC,GAAG,QAAkB,EAAU,EAAE,CACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE1E,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ;QACR,eAAe;QACf,MAAM;QACN,SAAS;QACT,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { FsLike } from "../services/agent-task-registry.js";
|
|
2
|
+
export interface ErrorContext {
|
|
3
|
+
operation?: string;
|
|
4
|
+
component?: string;
|
|
5
|
+
apiEndpoint?: string;
|
|
6
|
+
httpStatus?: number;
|
|
7
|
+
requestBody?: unknown;
|
|
8
|
+
responseBody?: unknown;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface ErrorLogEntry {
|
|
12
|
+
timestamp: string;
|
|
13
|
+
level: "ERROR" | "WARN";
|
|
14
|
+
message: string;
|
|
15
|
+
stack?: string;
|
|
16
|
+
context?: ErrorContext;
|
|
17
|
+
}
|
|
18
|
+
export interface ErrorLoggerOptions {
|
|
19
|
+
fs: FsLike;
|
|
20
|
+
logDir: string;
|
|
21
|
+
logToStderr?: boolean;
|
|
22
|
+
maxSize?: number;
|
|
23
|
+
maxBackups?: number;
|
|
24
|
+
now?: () => Date;
|
|
25
|
+
}
|
|
26
|
+
export declare class ErrorLogger {
|
|
27
|
+
private readonly fs;
|
|
28
|
+
private readonly logFilePath;
|
|
29
|
+
private readonly logToStderr;
|
|
30
|
+
private readonly maxSize;
|
|
31
|
+
private readonly maxBackups;
|
|
32
|
+
private readonly now;
|
|
33
|
+
constructor(options: ErrorLoggerOptions);
|
|
34
|
+
logError(error: Error | string, context?: ErrorContext): void;
|
|
35
|
+
logWarning(message: string, context?: ErrorContext): void;
|
|
36
|
+
logErrorWithStackTrace(error: Error, operation: string, context?: ErrorContext): void;
|
|
37
|
+
private createErrorEntry;
|
|
38
|
+
private createWarningEntry;
|
|
39
|
+
private writeEntry;
|
|
40
|
+
private formatEntry;
|
|
41
|
+
private writeToStderr;
|
|
42
|
+
private rotateIfNeeded;
|
|
43
|
+
private performRotation;
|
|
44
|
+
private buildBackupPath;
|
|
45
|
+
private ensureLogDirectory;
|
|
46
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const DEFAULT_MAX_SIZE = 10 * 1024 * 1024; // 10MB
|
|
3
|
+
const DEFAULT_MAX_BACKUPS = 5;
|
|
4
|
+
export class ErrorLogger {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.fs = options.fs;
|
|
7
|
+
this.logFilePath = path.join(options.logDir, "errors.log");
|
|
8
|
+
this.logToStderr = options.logToStderr ?? true;
|
|
9
|
+
this.maxSize = options.maxSize ?? DEFAULT_MAX_SIZE;
|
|
10
|
+
this.maxBackups = options.maxBackups ?? DEFAULT_MAX_BACKUPS;
|
|
11
|
+
this.now = options.now ?? (() => new Date());
|
|
12
|
+
this.ensureLogDirectory();
|
|
13
|
+
}
|
|
14
|
+
logError(error, context) {
|
|
15
|
+
const entry = this.createErrorEntry(error, "ERROR", context);
|
|
16
|
+
this.writeEntry(entry);
|
|
17
|
+
if (this.logToStderr) {
|
|
18
|
+
this.writeToStderr(entry);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
logWarning(message, context) {
|
|
22
|
+
const entry = this.createWarningEntry(message, context);
|
|
23
|
+
this.writeEntry(entry);
|
|
24
|
+
if (this.logToStderr) {
|
|
25
|
+
this.writeToStderr(entry);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
logErrorWithStackTrace(error, operation, context) {
|
|
29
|
+
const fullContext = {
|
|
30
|
+
...context,
|
|
31
|
+
operation
|
|
32
|
+
};
|
|
33
|
+
this.logError(error, fullContext);
|
|
34
|
+
}
|
|
35
|
+
createErrorEntry(error, level, context) {
|
|
36
|
+
const errorObj = typeof error === "string" ? new Error(error) : error;
|
|
37
|
+
return {
|
|
38
|
+
timestamp: this.now().toISOString(),
|
|
39
|
+
level,
|
|
40
|
+
message: errorObj.message,
|
|
41
|
+
stack: errorObj.stack,
|
|
42
|
+
context
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
createWarningEntry(message, context) {
|
|
46
|
+
return {
|
|
47
|
+
timestamp: this.now().toISOString(),
|
|
48
|
+
level: "WARN",
|
|
49
|
+
message,
|
|
50
|
+
context
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
writeEntry(entry) {
|
|
54
|
+
this.rotateIfNeeded();
|
|
55
|
+
const formattedEntry = this.formatEntry(entry);
|
|
56
|
+
try {
|
|
57
|
+
this.fs.appendFileSync(this.logFilePath, formattedEntry + "\n");
|
|
58
|
+
}
|
|
59
|
+
catch (writeError) {
|
|
60
|
+
// Fallback to stderr if file write fails
|
|
61
|
+
console.error("Failed to write to error log file:", writeError);
|
|
62
|
+
this.writeToStderr(entry);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
formatEntry(entry) {
|
|
66
|
+
const parts = [`[${entry.timestamp}] ${entry.level}: ${entry.message}`];
|
|
67
|
+
if (entry.context && Object.keys(entry.context).length > 0) {
|
|
68
|
+
parts.push(`Context: ${JSON.stringify(entry.context)}`);
|
|
69
|
+
}
|
|
70
|
+
if (entry.stack) {
|
|
71
|
+
parts.push(`Stack trace:\n${entry.stack}`);
|
|
72
|
+
}
|
|
73
|
+
return parts.join("\n");
|
|
74
|
+
}
|
|
75
|
+
writeToStderr(entry) {
|
|
76
|
+
const formatted = this.formatEntry(entry);
|
|
77
|
+
console.error(formatted);
|
|
78
|
+
}
|
|
79
|
+
rotateIfNeeded() {
|
|
80
|
+
try {
|
|
81
|
+
if (!this.fs.existsSync(this.logFilePath)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const stats = this.fs.statSync(this.logFilePath);
|
|
85
|
+
if (stats.size < this.maxSize) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this.performRotation();
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error("Error during log rotation:", error);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
performRotation() {
|
|
95
|
+
if (this.maxBackups < 1) {
|
|
96
|
+
this.fs.unlinkSync(this.logFilePath);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Delete oldest backup
|
|
100
|
+
const oldestPath = this.buildBackupPath(this.maxBackups);
|
|
101
|
+
if (this.fs.existsSync(oldestPath)) {
|
|
102
|
+
this.fs.unlinkSync(oldestPath);
|
|
103
|
+
}
|
|
104
|
+
// Rotate existing backups
|
|
105
|
+
for (let i = this.maxBackups - 1; i >= 1; i--) {
|
|
106
|
+
const source = this.buildBackupPath(i);
|
|
107
|
+
if (this.fs.existsSync(source)) {
|
|
108
|
+
const target = this.buildBackupPath(i + 1);
|
|
109
|
+
this.fs.renameSync(source, target);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Move current log to backup.1
|
|
113
|
+
if (this.fs.existsSync(this.logFilePath)) {
|
|
114
|
+
this.fs.renameSync(this.logFilePath, this.buildBackupPath(1));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
buildBackupPath(index) {
|
|
118
|
+
return `${this.logFilePath}.${index}`;
|
|
119
|
+
}
|
|
120
|
+
ensureLogDirectory() {
|
|
121
|
+
const directory = path.dirname(this.logFilePath);
|
|
122
|
+
try {
|
|
123
|
+
if (!this.fs.existsSync(directory)) {
|
|
124
|
+
this.fs.mkdirSync(directory, { recursive: true });
|
|
125
|
+
}
|
|
126
|
+
if (!this.fs.existsSync(this.logFilePath)) {
|
|
127
|
+
this.fs.writeFileSync(this.logFilePath, "", { encoding: "utf8" });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
// Silently fail during directory creation - this is expected in test environments
|
|
132
|
+
// where the log directory path may not exist. The logger will still function,
|
|
133
|
+
// just without file logging capability.
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=error-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-logger.js","sourceRoot":"","sources":["../../src/cli/error-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
* API-related errors (network, HTTP status, API responses)
|
|
14
|
+
*/
|
|
15
|
+
export declare class ApiError extends CliError {
|
|
16
|
+
readonly httpStatus?: number;
|
|
17
|
+
readonly endpoint?: string;
|
|
18
|
+
constructor(message: string, options?: {
|
|
19
|
+
httpStatus?: number;
|
|
20
|
+
endpoint?: string;
|
|
21
|
+
context?: ErrorContext;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Configuration and validation errors (user input, config files)
|
|
26
|
+
*/
|
|
27
|
+
export declare class ValidationError extends CliError {
|
|
28
|
+
constructor(message: string, context?: ErrorContext);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* File system operation errors
|
|
32
|
+
*/
|
|
33
|
+
export declare class FileSystemError extends CliError {
|
|
34
|
+
readonly filePath?: string;
|
|
35
|
+
readonly operation?: string;
|
|
36
|
+
constructor(message: string, options?: {
|
|
37
|
+
filePath?: string;
|
|
38
|
+
operation?: string;
|
|
39
|
+
context?: ErrorContext;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Authentication and credential errors
|
|
44
|
+
*/
|
|
45
|
+
export declare class AuthenticationError extends CliError {
|
|
46
|
+
constructor(message: string, context?: ErrorContext);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Command execution errors
|
|
50
|
+
*/
|
|
51
|
+
export declare class CommandExecutionError extends CliError {
|
|
52
|
+
readonly command?: string;
|
|
53
|
+
readonly exitCode?: number;
|
|
54
|
+
constructor(message: string, options?: {
|
|
55
|
+
command?: string;
|
|
56
|
+
exitCode?: number;
|
|
57
|
+
context?: ErrorContext;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Prerequisite check failures
|
|
62
|
+
*/
|
|
63
|
+
export declare class PrerequisiteError extends CliError {
|
|
64
|
+
readonly checks?: string[];
|
|
65
|
+
constructor(message: string, options?: {
|
|
66
|
+
checks?: string[];
|
|
67
|
+
context?: ErrorContext;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Service provider errors (MCP, Codex, etc.)
|
|
72
|
+
*/
|
|
73
|
+
export declare class ServiceError extends CliError {
|
|
74
|
+
readonly service?: string;
|
|
75
|
+
constructor(message: string, options?: {
|
|
76
|
+
service?: string;
|
|
77
|
+
context?: ErrorContext;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Helper to determine if an error should be shown to users
|
|
82
|
+
*/
|
|
83
|
+
export declare function isUserFacingError(error: unknown): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Helper to extract error context from any error
|
|
86
|
+
*/
|
|
87
|
+
export declare function extractErrorContext(error: unknown): ErrorContext | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Helper to create a standardized error message with context
|
|
90
|
+
*/
|
|
91
|
+
export declare function formatErrorWithContext(error: Error, context?: ErrorContext): string;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all CLI errors with context support
|
|
3
|
+
*/
|
|
4
|
+
export class CliError extends Error {
|
|
5
|
+
constructor(message, context, options) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = this.constructor.name;
|
|
8
|
+
this.context = context;
|
|
9
|
+
this.isUserError = options?.isUserError ?? false;
|
|
10
|
+
// Maintains proper stack trace for where error was thrown
|
|
11
|
+
if (Error.captureStackTrace) {
|
|
12
|
+
Error.captureStackTrace(this, this.constructor);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* API-related errors (network, HTTP status, API responses)
|
|
18
|
+
*/
|
|
19
|
+
export class ApiError extends CliError {
|
|
20
|
+
constructor(message, options) {
|
|
21
|
+
super(message, {
|
|
22
|
+
...options?.context,
|
|
23
|
+
httpStatus: options?.httpStatus,
|
|
24
|
+
apiEndpoint: options?.endpoint
|
|
25
|
+
});
|
|
26
|
+
this.httpStatus = options?.httpStatus;
|
|
27
|
+
this.endpoint = options?.endpoint;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Configuration and validation errors (user input, config files)
|
|
32
|
+
*/
|
|
33
|
+
export class ValidationError extends CliError {
|
|
34
|
+
constructor(message, context) {
|
|
35
|
+
super(message, context, { isUserError: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* File system operation errors
|
|
40
|
+
*/
|
|
41
|
+
export class FileSystemError extends CliError {
|
|
42
|
+
constructor(message, options) {
|
|
43
|
+
super(message, {
|
|
44
|
+
...options?.context,
|
|
45
|
+
filePath: options?.filePath,
|
|
46
|
+
operation: options?.operation
|
|
47
|
+
});
|
|
48
|
+
this.filePath = options?.filePath;
|
|
49
|
+
this.operation = options?.operation;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Authentication and credential errors
|
|
54
|
+
*/
|
|
55
|
+
export class AuthenticationError extends CliError {
|
|
56
|
+
constructor(message, context) {
|
|
57
|
+
super(message, context, { isUserError: true });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Command execution errors
|
|
62
|
+
*/
|
|
63
|
+
export class CommandExecutionError extends CliError {
|
|
64
|
+
constructor(message, options) {
|
|
65
|
+
super(message, {
|
|
66
|
+
...options?.context,
|
|
67
|
+
command: options?.command,
|
|
68
|
+
exitCode: options?.exitCode
|
|
69
|
+
});
|
|
70
|
+
this.command = options?.command;
|
|
71
|
+
this.exitCode = options?.exitCode;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Prerequisite check failures
|
|
76
|
+
*/
|
|
77
|
+
export class PrerequisiteError extends CliError {
|
|
78
|
+
constructor(message, options) {
|
|
79
|
+
super(message, {
|
|
80
|
+
...options?.context,
|
|
81
|
+
failedChecks: options?.checks
|
|
82
|
+
});
|
|
83
|
+
this.checks = options?.checks;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Service provider errors (MCP, Codex, etc.)
|
|
88
|
+
*/
|
|
89
|
+
export class ServiceError extends CliError {
|
|
90
|
+
constructor(message, options) {
|
|
91
|
+
super(message, {
|
|
92
|
+
...options?.context,
|
|
93
|
+
service: options?.service
|
|
94
|
+
});
|
|
95
|
+
this.service = options?.service;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Helper to determine if an error should be shown to users
|
|
100
|
+
*/
|
|
101
|
+
export function isUserFacingError(error) {
|
|
102
|
+
return error instanceof CliError && error.isUserError;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Helper to extract error context from any error
|
|
106
|
+
*/
|
|
107
|
+
export function extractErrorContext(error) {
|
|
108
|
+
if (error instanceof CliError) {
|
|
109
|
+
return error.context;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Helper to create a standardized error message with context
|
|
115
|
+
*/
|
|
116
|
+
export function formatErrorWithContext(error, context) {
|
|
117
|
+
const parts = [error.message];
|
|
118
|
+
if (context) {
|
|
119
|
+
if (context.operation) {
|
|
120
|
+
parts.push(`Operation: ${context.operation}`);
|
|
121
|
+
}
|
|
122
|
+
if (context.component) {
|
|
123
|
+
parts.push(`Component: ${context.component}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return parts.join(" | ");
|
|
127
|
+
}
|
|
128
|
+
//# 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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"}
|