poe-code 1.2.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -20
- package/dist/cli/bootstrap.d.ts +4 -0
- package/dist/cli/bootstrap.js +75 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +2 -1
- package/dist/cli/commands/configure.js +7 -7
- package/dist/cli/commands/configure.js.map +1 -1
- package/dist/cli/container.d.ts +0 -5
- package/dist/cli/container.js +0 -8
- package/dist/cli/container.js.map +1 -1
- package/dist/cli/error-logger.d.ts +17 -2
- package/dist/cli/error-logger.js.map +1 -1
- package/dist/cli/errors.d.ts +6 -0
- package/dist/cli/errors.js +8 -0
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/program.js +6 -26
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/prompt-runner.d.ts +3 -0
- package/dist/cli/prompt-runner.js +9 -0
- package/dist/cli/prompt-runner.js.map +1 -0
- package/dist/cli/service-registry.d.ts +8 -0
- package/dist/cli/service-registry.js.map +1 -1
- package/dist/cli/ui/service-menu.d.ts +6 -0
- package/dist/cli/ui/service-menu.js +37 -0
- package/dist/cli/ui/service-menu.js.map +1 -0
- package/dist/cli/ui/theme.d.ts +16 -0
- package/dist/cli/ui/theme.js +78 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -74
- package/dist/index.js.map +1 -1
- package/dist/providers/claude-code-adapter.js +6 -0
- package/dist/providers/claude-code-adapter.js.map +1 -1
- package/dist/providers/codex-adapter.js +6 -0
- package/dist/providers/codex-adapter.js.map +1 -1
- package/dist/providers/opencode-adapter.js +6 -0
- package/dist/providers/opencode-adapter.js.map +1 -1
- package/package.json +13 -34
- package/dist/cli/api-client.d.ts +0 -14
- package/dist/cli/api-client.js +0 -140
- package/dist/cli/api-client.js.map +0 -1
- package/dist/cli/chat.d.ts +0 -32
- package/dist/cli/chat.js +0 -2
- package/dist/cli/chat.js.map +0 -1
- package/dist/cli/commands/agent.d.ts +0 -18
- package/dist/cli/commands/agent.js +0 -84
- package/dist/cli/commands/agent.js.map +0 -1
- package/dist/cli/commands/configure-agents.d.ts +0 -3
- package/dist/cli/commands/configure-agents.js +0 -72
- package/dist/cli/commands/configure-agents.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.js +0 -45
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/interactive.d.ts +0 -3
- package/dist/cli/commands/interactive.js +0 -17
- package/dist/cli/commands/interactive.js.map +0 -1
- package/dist/cli/commands/login.d.ts +0 -6
- package/dist/cli/commands/login.js +0 -51
- package/dist/cli/commands/login.js.map +0 -1
- package/dist/cli/commands/logout.d.ts +0 -3
- package/dist/cli/commands/logout.js +0 -31
- package/dist/cli/commands/logout.js.map +0 -1
- package/dist/cli/commands/prerequisites.d.ts +0 -3
- package/dist/cli/commands/prerequisites.js +0 -23
- package/dist/cli/commands/prerequisites.js.map +0 -1
- package/dist/cli/commands/query.d.ts +0 -7
- package/dist/cli/commands/query.js +0 -46
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/remove.d.ts +0 -6
- package/dist/cli/commands/remove.js +0 -80
- package/dist/cli/commands/remove.js.map +0 -1
- package/dist/cli/commands/root.d.ts +0 -3
- package/dist/cli/commands/root.js +0 -7
- package/dist/cli/commands/root.js.map +0 -1
- package/dist/cli/commands/spawn-worktree.d.ts +0 -6
- package/dist/cli/commands/spawn-worktree.js +0 -91
- package/dist/cli/commands/spawn-worktree.js.map +0 -1
- package/dist/cli/commands/spawn.d.ts +0 -7
- package/dist/cli/commands/spawn.js +0 -112
- package/dist/cli/commands/spawn.js.map +0 -1
- package/dist/cli/commands/test.d.ts +0 -6
- package/dist/cli/commands/test.js +0 -26
- package/dist/cli/commands/test.js.map +0 -1
- package/dist/cli/file-mentions.d.ts +0 -13
- package/dist/cli/file-mentions.js +0 -87
- package/dist/cli/file-mentions.js.map +0 -1
- package/dist/cli/file-picker-state.d.ts +0 -14
- package/dist/cli/file-picker-state.js +0 -23
- package/dist/cli/file-picker-state.js.map +0 -1
- package/dist/cli/interactive-command-runner.d.ts +0 -11
- package/dist/cli/interactive-command-runner.js +0 -142
- package/dist/cli/interactive-command-runner.js.map +0 -1
- package/dist/cli/interactive-launcher.d.ts +0 -2
- package/dist/cli/interactive-launcher.js +0 -404
- package/dist/cli/interactive-launcher.js.map +0 -1
- package/dist/cli/interactive-tasks.d.ts +0 -7
- package/dist/cli/interactive-tasks.js +0 -199
- package/dist/cli/interactive-tasks.js.map +0 -1
- package/dist/cli/interactive.d.ts +0 -19
- package/dist/cli/interactive.js +0 -479
- package/dist/cli/interactive.js.map +0 -1
- package/dist/cli/markdown-renderer.d.ts +0 -27
- package/dist/cli/markdown-renderer.js +0 -178
- package/dist/cli/markdown-renderer.js.map +0 -1
- package/dist/cli/markdown-renderer.test.d.ts +0 -1
- package/dist/cli/markdown-renderer.test.js +0 -105
- package/dist/cli/markdown-renderer.test.js.map +0 -1
- package/dist/commands/init.d.ts +0 -9
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/spawn-worktree.d.ts +0 -25
- package/dist/commands/spawn-worktree.js +0 -139
- package/dist/commands/spawn-worktree.js.map +0 -1
- package/dist/services/agent-config-manager.d.ts +0 -32
- package/dist/services/agent-config-manager.js +0 -130
- package/dist/services/agent-config-manager.js.map +0 -1
- package/dist/services/agent-registry.d.ts +0 -27
- package/dist/services/agent-registry.js +0 -89
- package/dist/services/agent-registry.js.map +0 -1
- package/dist/services/agent-session.d.ts +0 -24
- package/dist/services/agent-session.js +0 -107
- package/dist/services/agent-session.js.map +0 -1
- package/dist/services/agent-task-registry.d.ts +0 -131
- package/dist/services/agent-task-registry.js +0 -491
- package/dist/services/agent-task-registry.js.map +0 -1
- package/dist/services/chat.d.ts +0 -94
- package/dist/services/chat.js +0 -241
- package/dist/services/chat.js.map +0 -1
- package/dist/services/mcp-client.d.ts +0 -38
- package/dist/services/mcp-client.js +0 -170
- package/dist/services/mcp-client.js.map +0 -1
- package/dist/services/mcp-manager.d.ts +0 -28
- package/dist/services/mcp-manager.js +0 -157
- package/dist/services/mcp-manager.js.map +0 -1
- package/dist/services/poe-code.d.ts +0 -7
- package/dist/services/poe-code.js +0 -5
- package/dist/services/poe-code.js.map +0 -1
- package/dist/services/task-logger.d.ts +0 -24
- package/dist/services/task-logger.js +0 -73
- package/dist/services/task-logger.js.map +0 -1
- package/dist/services/task-runner.d.ts +0 -19
- package/dist/services/task-runner.js +0 -157
- package/dist/services/task-runner.js.map +0 -1
- package/dist/services/tools.d.ts +0 -76
- package/dist/services/tools.js +0 -870
- package/dist/services/tools.js.map +0 -1
- package/dist/utils/e2e-flags.d.ts +0 -1
- package/dist/utils/e2e-flags.js +0 -9
- package/dist/utils/e2e-flags.js.map +0 -1
- package/dist/utils/worktree.d.ts +0 -40
- package/dist/utils/worktree.js +0 -179
- package/dist/utils/worktree.js.map +0 -1
- package/shared/conversation-layout.cjs +0 -11
- package/shared/conversation-layout.d.ts +0 -7
- package/shared/conversation-layout.js +0 -11
- package/shared/package.json +0 -13
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { buildProviderContext, resolveCommandFlags, resolveServiceAdapter } from "./shared.js";
|
|
2
|
-
import { spawnGitWorktree } from "../../commands/spawn-worktree.js";
|
|
3
|
-
import { simpleGit as createSimpleGit } from "simple-git";
|
|
4
|
-
export function registerSpawnWorktreeCommand(program, container) {
|
|
5
|
-
program
|
|
6
|
-
.command("spawn-git-worktree")
|
|
7
|
-
.description("Create a git worktree, run an agent, and attempt to merge changes.")
|
|
8
|
-
.argument("<service>", "Service to spawn (claude-code | codex | opencode)")
|
|
9
|
-
.argument("<prompt>", "Prompt to provide to the agent")
|
|
10
|
-
.argument("[agentArgs...]", "Additional arguments forwarded to the agent")
|
|
11
|
-
.option("--branch <name>", "Target branch to merge into")
|
|
12
|
-
.action(async (service, promptText, agentArgs = [], options) => {
|
|
13
|
-
const adapter = resolveServiceAdapter(container, service);
|
|
14
|
-
if (!adapter.supportsSpawn) {
|
|
15
|
-
throw new Error(`${adapter.label} does not support spawn.`);
|
|
16
|
-
}
|
|
17
|
-
const flags = resolveCommandFlags(program);
|
|
18
|
-
const logger = container.loggerFactory.create({
|
|
19
|
-
dryRun: flags.dryRun,
|
|
20
|
-
verbose: flags.verbose,
|
|
21
|
-
scope: "spawn-worktree"
|
|
22
|
-
});
|
|
23
|
-
if (flags.dryRun) {
|
|
24
|
-
const argsSuffix = agentArgs.length > 0
|
|
25
|
-
? ` with args ${JSON.stringify(agentArgs)}`
|
|
26
|
-
: "";
|
|
27
|
-
const branchSuffix = options.branch ? ` into ${options.branch}` : "";
|
|
28
|
-
logger.dryRun(`Dry run: would create git worktree, run ${adapter.label}${argsSuffix}, and merge${branchSuffix}.`);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const runner = flags.verbose
|
|
32
|
-
? createVerboseRunner(container, logger)
|
|
33
|
-
: container.commandRunner;
|
|
34
|
-
const currentBranch = await resolveTargetBranch(container, options.branch);
|
|
35
|
-
await spawnGitWorktree({
|
|
36
|
-
agent: service,
|
|
37
|
-
prompt: promptText,
|
|
38
|
-
agentArgs,
|
|
39
|
-
basePath: container.env.cwd,
|
|
40
|
-
targetBranch: currentBranch,
|
|
41
|
-
logger: (message) => logger.info(message),
|
|
42
|
-
runAgent: async ({ agent, prompt, args }) => {
|
|
43
|
-
if (agent !== service) {
|
|
44
|
-
throw new Error(`Mismatched agent request "${agent}" (expected "${service}").`);
|
|
45
|
-
}
|
|
46
|
-
return await spawnWithCustomRunner(container, adapter, flags.verbose, runner, prompt, args);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
function createVerboseRunner(container, logger) {
|
|
52
|
-
return async (command, args) => {
|
|
53
|
-
logger.verbose(`> ${[command, ...args].join(" ").trim()}`);
|
|
54
|
-
return container.commandRunner(command, args);
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
async function resolveTargetBranch(container, branchOverride) {
|
|
58
|
-
if (branchOverride) {
|
|
59
|
-
return branchOverride;
|
|
60
|
-
}
|
|
61
|
-
const git = createSimpleGit({ baseDir: container.env.cwd });
|
|
62
|
-
const branch = await git.revparse(["--abbrev-ref", "HEAD"]);
|
|
63
|
-
return branch.trim();
|
|
64
|
-
}
|
|
65
|
-
async function spawnWithCustomRunner(container, adapter, verbose, runner, prompt, args) {
|
|
66
|
-
const scopedLogger = container.loggerFactory.create({
|
|
67
|
-
dryRun: false,
|
|
68
|
-
verbose,
|
|
69
|
-
scope: `spawn:${adapter.name}`
|
|
70
|
-
});
|
|
71
|
-
const context = container.contextFactory.create({
|
|
72
|
-
dryRun: false,
|
|
73
|
-
logger: scopedLogger,
|
|
74
|
-
runner
|
|
75
|
-
});
|
|
76
|
-
const resources = {
|
|
77
|
-
logger: scopedLogger,
|
|
78
|
-
context
|
|
79
|
-
};
|
|
80
|
-
const providerContext = buildProviderContext(container, adapter, resources);
|
|
81
|
-
return (await container.registry.invoke(adapter.name, "spawn", async (entry) => {
|
|
82
|
-
if (!entry.spawn) {
|
|
83
|
-
throw new Error(`${adapter.label} does not support spawn.`);
|
|
84
|
-
}
|
|
85
|
-
return (await entry.spawn(providerContext, {
|
|
86
|
-
prompt,
|
|
87
|
-
args
|
|
88
|
-
}));
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=spawn-worktree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-worktree.js","sourceRoot":"","sources":["../../../src/cli/commands/spawn-worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Command } from "commander";
|
|
2
|
-
import type { CliContainer } from "../container.js";
|
|
3
|
-
export interface SpawnCommandOptions {
|
|
4
|
-
prompt: string;
|
|
5
|
-
args: string[];
|
|
6
|
-
}
|
|
7
|
-
export declare function registerSpawnCommand(program: Command, container: CliContainer): void;
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter } from "./shared.js";
|
|
2
|
-
import { DEFAULT_QUERY_MODEL } from "../constants.js";
|
|
3
|
-
import { runAgentConversation } from "./agent.js";
|
|
4
|
-
export function registerSpawnCommand(program, container) {
|
|
5
|
-
program
|
|
6
|
-
.command("spawn")
|
|
7
|
-
.description("Run a single prompt through a configured service CLI.")
|
|
8
|
-
.argument("<service>", "Service to spawn (claude-code | codex | opencode | poe-code)")
|
|
9
|
-
.argument("<prompt>", "Prompt text to send")
|
|
10
|
-
.argument("[agentArgs...]", "Additional arguments forwarded to the service CLI")
|
|
11
|
-
.action(async (service, promptText, agentArgs = []) => {
|
|
12
|
-
const flags = resolveCommandFlags(program);
|
|
13
|
-
const resources = createExecutionResources(container, flags, `spawn:${service}`);
|
|
14
|
-
if (service === "poe-code") {
|
|
15
|
-
await runPoeCodeSpawn({
|
|
16
|
-
container,
|
|
17
|
-
flags,
|
|
18
|
-
resources,
|
|
19
|
-
prompt: promptText,
|
|
20
|
-
args: agentArgs
|
|
21
|
-
});
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const adapter = resolveServiceAdapter(container, service);
|
|
25
|
-
if (!adapter.supportsSpawn) {
|
|
26
|
-
throw new Error(`${adapter.label} does not support spawn.`);
|
|
27
|
-
}
|
|
28
|
-
const providerContext = buildProviderContext(container, adapter, resources);
|
|
29
|
-
if (flags.dryRun) {
|
|
30
|
-
const extra = agentArgs.length > 0 ? ` with args ${JSON.stringify(agentArgs)}` : "";
|
|
31
|
-
resources.logger.dryRun(`Dry run: would spawn ${adapter.label} with prompt "${promptText}"${extra}.`);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const result = (await container.registry.invoke(service, "spawn", async (entry) => {
|
|
35
|
-
if (!entry.spawn) {
|
|
36
|
-
throw new Error(`${adapter.label} does not support spawn.`);
|
|
37
|
-
}
|
|
38
|
-
const output = await entry.spawn(providerContext, {
|
|
39
|
-
prompt: promptText,
|
|
40
|
-
args: agentArgs
|
|
41
|
-
});
|
|
42
|
-
return output;
|
|
43
|
-
}));
|
|
44
|
-
if (!result) {
|
|
45
|
-
resources.logger.info(`${adapter.label} spawn completed.`);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (result.exitCode !== 0) {
|
|
49
|
-
const detail = result.stderr.trim() || result.stdout.trim();
|
|
50
|
-
const suffix = detail ? `: ${detail}` : "";
|
|
51
|
-
throw new Error(`${adapter.label} spawn failed with exit code ${result.exitCode}${suffix}`);
|
|
52
|
-
}
|
|
53
|
-
const trimmedStdout = result.stdout.trim();
|
|
54
|
-
if (trimmedStdout) {
|
|
55
|
-
resources.logger.info(trimmedStdout);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const trimmedStderr = result.stderr.trim();
|
|
59
|
-
if (trimmedStderr) {
|
|
60
|
-
resources.logger.info(trimmedStderr);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
resources.logger.info(`${adapter.label} spawn completed.`);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
async function runPoeCodeSpawn(options) {
|
|
67
|
-
const parsedArgs = parsePoeCodeArgs(options.args);
|
|
68
|
-
const model = parsedArgs.model ?? DEFAULT_QUERY_MODEL;
|
|
69
|
-
if (options.flags.dryRun) {
|
|
70
|
-
options.resources.logger.dryRun(`Dry run: would spawn Poe Code with prompt "${options.prompt}" using model "${model}".`);
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const apiKey = await options.container.options.resolveApiKey({
|
|
74
|
-
value: parsedArgs.apiKey,
|
|
75
|
-
dryRun: options.flags.dryRun
|
|
76
|
-
});
|
|
77
|
-
const message = await runAgentConversation({
|
|
78
|
-
container: options.container,
|
|
79
|
-
logger: options.resources.logger,
|
|
80
|
-
text: options.prompt,
|
|
81
|
-
model,
|
|
82
|
-
apiKey
|
|
83
|
-
});
|
|
84
|
-
options.resources.logger.info(message.replace("Agent response", "Poe Code response"));
|
|
85
|
-
}
|
|
86
|
-
function parsePoeCodeArgs(args) {
|
|
87
|
-
const result = {};
|
|
88
|
-
let index = 0;
|
|
89
|
-
while (index < args.length) {
|
|
90
|
-
const current = args[index];
|
|
91
|
-
const next = args[index + 1];
|
|
92
|
-
if (current === "--model") {
|
|
93
|
-
if (next == null) {
|
|
94
|
-
throw new Error("Missing value for --model.");
|
|
95
|
-
}
|
|
96
|
-
result.model = next;
|
|
97
|
-
index += 2;
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
if (current === "--api-key") {
|
|
101
|
-
if (next == null) {
|
|
102
|
-
throw new Error("Missing value for --api-key.");
|
|
103
|
-
}
|
|
104
|
-
result.apiKey = next;
|
|
105
|
-
index += 2;
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
throw new Error(`Unknown option "${current}" for poe-code spawn.`);
|
|
109
|
-
}
|
|
110
|
-
return result;
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=spawn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/cli/commands/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { resolveCommandFlags } from "./shared.js";
|
|
2
|
-
export function registerTestCommand(program, container) {
|
|
3
|
-
program
|
|
4
|
-
.command("test")
|
|
5
|
-
.description('Verify the Poe API key by sending "Ping" to EchoBot.')
|
|
6
|
-
.option("--api-key <key>", "Poe API key")
|
|
7
|
-
.action(async (options) => {
|
|
8
|
-
const flags = resolveCommandFlags(program);
|
|
9
|
-
const logger = container.loggerFactory.create({
|
|
10
|
-
dryRun: flags.dryRun,
|
|
11
|
-
verbose: flags.verbose,
|
|
12
|
-
scope: "test"
|
|
13
|
-
});
|
|
14
|
-
const apiKey = await container.options.resolveApiKey({
|
|
15
|
-
value: options.apiKey,
|
|
16
|
-
dryRun: flags.dryRun
|
|
17
|
-
});
|
|
18
|
-
if (flags.dryRun) {
|
|
19
|
-
logger.dryRun('would verify Poe API key by calling EchoBot with "Ping".');
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
await container.poeApiClient.verify({ apiKey });
|
|
23
|
-
logger.info("Poe API key verified via EchoBot.");
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,SAAuB;IAEvB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;YACnD,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CACX,0DAA0D,CAC3D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { ErrorLogger } from "./error-logger.js";
|
|
2
|
-
export interface ResolveFileMentionsDependencies {
|
|
3
|
-
input: string;
|
|
4
|
-
cwd: string;
|
|
5
|
-
readFile: (filePath: string, encoding: BufferEncoding) => Promise<string>;
|
|
6
|
-
errorLogger: Pick<ErrorLogger, "logErrorWithStackTrace">;
|
|
7
|
-
}
|
|
8
|
-
export interface FileMentionResolution {
|
|
9
|
-
processedInput: string;
|
|
10
|
-
attachments: string[];
|
|
11
|
-
mentions: string[];
|
|
12
|
-
}
|
|
13
|
-
export declare function resolveFileMentions(dependencies: ResolveFileMentionsDependencies): Promise<FileMentionResolution>;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
const WHITESPACE = new Set([" ", "\n", "\r", "\t"]);
|
|
3
|
-
export async function resolveFileMentions(dependencies) {
|
|
4
|
-
const { input, cwd, readFile, errorLogger } = dependencies;
|
|
5
|
-
const segments = extractMentions(input);
|
|
6
|
-
if (segments.length === 0) {
|
|
7
|
-
return {
|
|
8
|
-
processedInput: input,
|
|
9
|
-
attachments: [],
|
|
10
|
-
mentions: []
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
const attachments = [];
|
|
14
|
-
const resolvedMentions = [];
|
|
15
|
-
for (const segment of segments) {
|
|
16
|
-
resolvedMentions.push(segment.mention);
|
|
17
|
-
const absolutePath = path.isAbsolute(segment.mention)
|
|
18
|
-
? segment.mention
|
|
19
|
-
: path.join(cwd, segment.mention);
|
|
20
|
-
try {
|
|
21
|
-
const contents = await readFile(absolutePath, "utf8");
|
|
22
|
-
attachments.push(`\n\n--- Content of ${segment.mention} ---\n${contents}\n--- End of ${segment.mention} ---`);
|
|
23
|
-
}
|
|
24
|
-
catch (rawError) {
|
|
25
|
-
const error = rawError instanceof Error ? rawError : new Error(String(rawError));
|
|
26
|
-
attachments.push(`\n\n[Error reading ${segment.mention}: ${error.message}]`);
|
|
27
|
-
errorLogger.logErrorWithStackTrace(error, "interactive file mention", {
|
|
28
|
-
component: "interactive",
|
|
29
|
-
operation: "read file mention",
|
|
30
|
-
mention: segment.mention,
|
|
31
|
-
absolutePath,
|
|
32
|
-
cwd
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const base = removeMentions(input, segments).trim();
|
|
37
|
-
return {
|
|
38
|
-
processedInput: `${base}${attachments.join("")}`,
|
|
39
|
-
attachments,
|
|
40
|
-
mentions: resolvedMentions
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function extractMentions(value) {
|
|
44
|
-
const segments = [];
|
|
45
|
-
let index = 0;
|
|
46
|
-
while (index < value.length) {
|
|
47
|
-
if (value[index] !== "@") {
|
|
48
|
-
index += 1;
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
const start = index;
|
|
52
|
-
index += 1;
|
|
53
|
-
let cursor = index;
|
|
54
|
-
while (cursor < value.length && !WHITESPACE.has(value[cursor])) {
|
|
55
|
-
cursor += 1;
|
|
56
|
-
}
|
|
57
|
-
const mention = value.slice(index, cursor);
|
|
58
|
-
if (mention.length === 0) {
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
segments.push({
|
|
62
|
-
mention,
|
|
63
|
-
start,
|
|
64
|
-
end: cursor
|
|
65
|
-
});
|
|
66
|
-
index = cursor;
|
|
67
|
-
}
|
|
68
|
-
return segments;
|
|
69
|
-
}
|
|
70
|
-
function removeMentions(value, segments) {
|
|
71
|
-
if (segments.length === 0) {
|
|
72
|
-
return value;
|
|
73
|
-
}
|
|
74
|
-
let result = "";
|
|
75
|
-
let cursor = 0;
|
|
76
|
-
for (const segment of segments) {
|
|
77
|
-
if (cursor < segment.start) {
|
|
78
|
-
result += value.slice(cursor, segment.start);
|
|
79
|
-
}
|
|
80
|
-
cursor = segment.end;
|
|
81
|
-
}
|
|
82
|
-
if (cursor < value.length) {
|
|
83
|
-
result += value.slice(cursor);
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=file-mentions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-mentions.js","sourceRoot":"","sources":["../../src/cli/file-mentions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface EvaluateFilePickerInput {
|
|
2
|
-
value: string;
|
|
3
|
-
isOpen: boolean;
|
|
4
|
-
}
|
|
5
|
-
export type FilePickerAction = {
|
|
6
|
-
kind: "open";
|
|
7
|
-
prefix: string;
|
|
8
|
-
} | {
|
|
9
|
-
kind: "search";
|
|
10
|
-
query: string;
|
|
11
|
-
} | {
|
|
12
|
-
kind: "close";
|
|
13
|
-
};
|
|
14
|
-
export declare function evaluateFilePickerAction(input: EvaluateFilePickerInput): FilePickerAction | null;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export function evaluateFilePickerAction(input) {
|
|
2
|
-
const { value, isOpen } = input;
|
|
3
|
-
if (value.endsWith("@")) {
|
|
4
|
-
return {
|
|
5
|
-
kind: "open",
|
|
6
|
-
prefix: value.slice(0, -1)
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
if (!isOpen) {
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
const atIndex = value.lastIndexOf("@");
|
|
13
|
-
if (atIndex === -1) {
|
|
14
|
-
return {
|
|
15
|
-
kind: "close"
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
kind: "search",
|
|
20
|
-
query: value.slice(atIndex + 1)
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=file-picker-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-picker-state.js","sourceRoot":"","sources":["../../src/cli/file-picker-state.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,wBAAwB,CACtC,KAA8B;IAE9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEhC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type CliDependencies } from "./program.js";
|
|
2
|
-
export interface ParsedInteractiveCommand {
|
|
3
|
-
command: string;
|
|
4
|
-
tokens: string[];
|
|
5
|
-
normalized: string[];
|
|
6
|
-
}
|
|
7
|
-
export interface InteractiveCommandExecutor {
|
|
8
|
-
identify(input: string): ParsedInteractiveCommand | null;
|
|
9
|
-
execute(input: string | ParsedInteractiveCommand): Promise<string | null>;
|
|
10
|
-
}
|
|
11
|
-
export declare function createInteractiveCommandExecutor(dependencies: CliDependencies): Promise<InteractiveCommandExecutor>;
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { CommanderError } from "commander";
|
|
2
|
-
import { createProgram } from "./program.js";
|
|
3
|
-
import { tokenizeCommandLine } from "../utils/command-line.js";
|
|
4
|
-
export async function createInteractiveCommandExecutor(dependencies) {
|
|
5
|
-
const outputBuffer = [];
|
|
6
|
-
const baseLogger = dependencies.logger;
|
|
7
|
-
const logger = (message) => {
|
|
8
|
-
outputBuffer.push(message);
|
|
9
|
-
if (baseLogger) {
|
|
10
|
-
baseLogger(message);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
const program = createProgram({
|
|
14
|
-
...dependencies,
|
|
15
|
-
logger,
|
|
16
|
-
exitOverride: true
|
|
17
|
-
});
|
|
18
|
-
const commandMap = buildCommandMap(program.commands.map((cmd) => cmd));
|
|
19
|
-
const identify = (input) => {
|
|
20
|
-
const tokens = tokenizeCommandLine(input);
|
|
21
|
-
if (tokens.length === 0) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
const first = tokens[0];
|
|
25
|
-
if (first.toLowerCase() === "help") {
|
|
26
|
-
return {
|
|
27
|
-
command: "help",
|
|
28
|
-
tokens,
|
|
29
|
-
normalized: tokens
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const key = tokens[0];
|
|
33
|
-
const canonical = commandMap.get(key) ?? commandMap.get(key.toLowerCase());
|
|
34
|
-
if (!canonical) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
const normalized = normalizeTokens(tokens, canonical);
|
|
38
|
-
return {
|
|
39
|
-
command: canonical,
|
|
40
|
-
tokens,
|
|
41
|
-
normalized
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
const execute = async (input) => {
|
|
45
|
-
const parsed = typeof input === "string" ? identify(input) : input;
|
|
46
|
-
if (!parsed) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
outputBuffer.length = 0;
|
|
50
|
-
if (parsed.command === "help") {
|
|
51
|
-
return renderHelp(program, parsed.tokens.slice(1));
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
await program.parseAsync(parsed.normalized, { from: "user" });
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
if (error instanceof CommanderError) {
|
|
58
|
-
if (error.code !== "commander.helpDisplayed" &&
|
|
59
|
-
error.message &&
|
|
60
|
-
!outputBuffer.includes(error.message)) {
|
|
61
|
-
outputBuffer.push(error.message);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return outputBuffer.join("\n");
|
|
69
|
-
};
|
|
70
|
-
return { identify, execute };
|
|
71
|
-
}
|
|
72
|
-
function buildCommandMap(commands) {
|
|
73
|
-
const map = new Map();
|
|
74
|
-
for (const command of commands) {
|
|
75
|
-
const canonical = command.name();
|
|
76
|
-
map.set(canonical, canonical);
|
|
77
|
-
map.set(canonical.toLowerCase(), canonical);
|
|
78
|
-
for (const alias of command.aliases()) {
|
|
79
|
-
map.set(alias, canonical);
|
|
80
|
-
map.set(alias.toLowerCase(), canonical);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return map;
|
|
84
|
-
}
|
|
85
|
-
function renderHelp(program, topics) {
|
|
86
|
-
if (topics.length === 0) {
|
|
87
|
-
return program.helpInformation();
|
|
88
|
-
}
|
|
89
|
-
const [topic, ...rest] = topics;
|
|
90
|
-
if (rest.length > 0) {
|
|
91
|
-
return `Unknown help topic "${topics.join(" ")}".`;
|
|
92
|
-
}
|
|
93
|
-
const command = findCommand(program, topic);
|
|
94
|
-
if (!command) {
|
|
95
|
-
return `Unknown help topic "${topic}".`;
|
|
96
|
-
}
|
|
97
|
-
return command.helpInformation();
|
|
98
|
-
}
|
|
99
|
-
function findCommand(program, name) {
|
|
100
|
-
const direct = program.commands.find((cmd) => cmd.name() === name);
|
|
101
|
-
if (direct) {
|
|
102
|
-
return direct;
|
|
103
|
-
}
|
|
104
|
-
const lower = name.toLowerCase();
|
|
105
|
-
return program.commands.find((cmd) => {
|
|
106
|
-
if (cmd.name().toLowerCase() === lower) {
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
return cmd.aliases().some((alias) => alias === name || alias.toLowerCase() === lower);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
function normalizeTokens(tokens, canonical) {
|
|
113
|
-
if (tokens.length === 0) {
|
|
114
|
-
return tokens;
|
|
115
|
-
}
|
|
116
|
-
const rest = tokens.slice(1);
|
|
117
|
-
if (canonical === "login" && rest.length > 0 && !rest[0].startsWith("-")) {
|
|
118
|
-
return [canonical, "--api-key", rest.join(" ")];
|
|
119
|
-
}
|
|
120
|
-
if (canonical === "test" && rest.length > 0 && !rest[0].startsWith("-")) {
|
|
121
|
-
return [canonical, "--api-key", rest.join(" ")];
|
|
122
|
-
}
|
|
123
|
-
if (canonical === "init" && rest.length > 0 && !rest[0].startsWith("-")) {
|
|
124
|
-
const [projectName, ...remaining] = rest;
|
|
125
|
-
return [canonical, "--project-name", projectName, ...remaining];
|
|
126
|
-
}
|
|
127
|
-
if (canonical === "remove" &&
|
|
128
|
-
rest.length > 1 &&
|
|
129
|
-
!rest.some((token) => token.startsWith("--"))) {
|
|
130
|
-
const [service, ...remaining] = rest;
|
|
131
|
-
if (remaining.length > 0) {
|
|
132
|
-
return [
|
|
133
|
-
canonical,
|
|
134
|
-
service,
|
|
135
|
-
"--config-name",
|
|
136
|
-
remaining.join(" ")
|
|
137
|
-
];
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return [canonical, ...rest];
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=interactive-command-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-command-runner.js","sourceRoot":"","sources":["../../src/cli/interactive-command-runner.ts"],"names":[],"mappings":"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"}
|