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.
Files changed (156) hide show
  1. package/README.md +16 -20
  2. package/dist/cli/bootstrap.d.ts +4 -0
  3. package/dist/cli/bootstrap.js +75 -0
  4. package/dist/cli/bootstrap.js.map +1 -0
  5. package/dist/cli/commands/configure.d.ts +2 -1
  6. package/dist/cli/commands/configure.js +7 -7
  7. package/dist/cli/commands/configure.js.map +1 -1
  8. package/dist/cli/container.d.ts +0 -5
  9. package/dist/cli/container.js +0 -8
  10. package/dist/cli/container.js.map +1 -1
  11. package/dist/cli/error-logger.d.ts +17 -2
  12. package/dist/cli/error-logger.js.map +1 -1
  13. package/dist/cli/errors.d.ts +6 -0
  14. package/dist/cli/errors.js +8 -0
  15. package/dist/cli/errors.js.map +1 -1
  16. package/dist/cli/program.js +6 -26
  17. package/dist/cli/program.js.map +1 -1
  18. package/dist/cli/prompt-runner.d.ts +3 -0
  19. package/dist/cli/prompt-runner.js +9 -0
  20. package/dist/cli/prompt-runner.js.map +1 -0
  21. package/dist/cli/service-registry.d.ts +8 -0
  22. package/dist/cli/service-registry.js.map +1 -1
  23. package/dist/cli/ui/service-menu.d.ts +6 -0
  24. package/dist/cli/ui/service-menu.js +37 -0
  25. package/dist/cli/ui/service-menu.js.map +1 -0
  26. package/dist/cli/ui/theme.d.ts +16 -0
  27. package/dist/cli/ui/theme.js +78 -0
  28. package/dist/cli/ui/theme.js.map +1 -0
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +2 -74
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers/claude-code-adapter.js +6 -0
  33. package/dist/providers/claude-code-adapter.js.map +1 -1
  34. package/dist/providers/codex-adapter.js +6 -0
  35. package/dist/providers/codex-adapter.js.map +1 -1
  36. package/dist/providers/opencode-adapter.js +6 -0
  37. package/dist/providers/opencode-adapter.js.map +1 -1
  38. package/package.json +13 -34
  39. package/dist/cli/api-client.d.ts +0 -14
  40. package/dist/cli/api-client.js +0 -140
  41. package/dist/cli/api-client.js.map +0 -1
  42. package/dist/cli/chat.d.ts +0 -32
  43. package/dist/cli/chat.js +0 -2
  44. package/dist/cli/chat.js.map +0 -1
  45. package/dist/cli/commands/agent.d.ts +0 -18
  46. package/dist/cli/commands/agent.js +0 -84
  47. package/dist/cli/commands/agent.js.map +0 -1
  48. package/dist/cli/commands/configure-agents.d.ts +0 -3
  49. package/dist/cli/commands/configure-agents.js +0 -72
  50. package/dist/cli/commands/configure-agents.js.map +0 -1
  51. package/dist/cli/commands/init.d.ts +0 -8
  52. package/dist/cli/commands/init.js +0 -45
  53. package/dist/cli/commands/init.js.map +0 -1
  54. package/dist/cli/commands/interactive.d.ts +0 -3
  55. package/dist/cli/commands/interactive.js +0 -17
  56. package/dist/cli/commands/interactive.js.map +0 -1
  57. package/dist/cli/commands/login.d.ts +0 -6
  58. package/dist/cli/commands/login.js +0 -51
  59. package/dist/cli/commands/login.js.map +0 -1
  60. package/dist/cli/commands/logout.d.ts +0 -3
  61. package/dist/cli/commands/logout.js +0 -31
  62. package/dist/cli/commands/logout.js.map +0 -1
  63. package/dist/cli/commands/prerequisites.d.ts +0 -3
  64. package/dist/cli/commands/prerequisites.js +0 -23
  65. package/dist/cli/commands/prerequisites.js.map +0 -1
  66. package/dist/cli/commands/query.d.ts +0 -7
  67. package/dist/cli/commands/query.js +0 -46
  68. package/dist/cli/commands/query.js.map +0 -1
  69. package/dist/cli/commands/remove.d.ts +0 -6
  70. package/dist/cli/commands/remove.js +0 -80
  71. package/dist/cli/commands/remove.js.map +0 -1
  72. package/dist/cli/commands/root.d.ts +0 -3
  73. package/dist/cli/commands/root.js +0 -7
  74. package/dist/cli/commands/root.js.map +0 -1
  75. package/dist/cli/commands/spawn-worktree.d.ts +0 -6
  76. package/dist/cli/commands/spawn-worktree.js +0 -91
  77. package/dist/cli/commands/spawn-worktree.js.map +0 -1
  78. package/dist/cli/commands/spawn.d.ts +0 -7
  79. package/dist/cli/commands/spawn.js +0 -112
  80. package/dist/cli/commands/spawn.js.map +0 -1
  81. package/dist/cli/commands/test.d.ts +0 -6
  82. package/dist/cli/commands/test.js +0 -26
  83. package/dist/cli/commands/test.js.map +0 -1
  84. package/dist/cli/file-mentions.d.ts +0 -13
  85. package/dist/cli/file-mentions.js +0 -87
  86. package/dist/cli/file-mentions.js.map +0 -1
  87. package/dist/cli/file-picker-state.d.ts +0 -14
  88. package/dist/cli/file-picker-state.js +0 -23
  89. package/dist/cli/file-picker-state.js.map +0 -1
  90. package/dist/cli/interactive-command-runner.d.ts +0 -11
  91. package/dist/cli/interactive-command-runner.js +0 -142
  92. package/dist/cli/interactive-command-runner.js.map +0 -1
  93. package/dist/cli/interactive-launcher.d.ts +0 -2
  94. package/dist/cli/interactive-launcher.js +0 -404
  95. package/dist/cli/interactive-launcher.js.map +0 -1
  96. package/dist/cli/interactive-tasks.d.ts +0 -7
  97. package/dist/cli/interactive-tasks.js +0 -199
  98. package/dist/cli/interactive-tasks.js.map +0 -1
  99. package/dist/cli/interactive.d.ts +0 -19
  100. package/dist/cli/interactive.js +0 -479
  101. package/dist/cli/interactive.js.map +0 -1
  102. package/dist/cli/markdown-renderer.d.ts +0 -27
  103. package/dist/cli/markdown-renderer.js +0 -178
  104. package/dist/cli/markdown-renderer.js.map +0 -1
  105. package/dist/cli/markdown-renderer.test.d.ts +0 -1
  106. package/dist/cli/markdown-renderer.test.js +0 -105
  107. package/dist/cli/markdown-renderer.test.js.map +0 -1
  108. package/dist/commands/init.d.ts +0 -9
  109. package/dist/commands/init.js +0 -43
  110. package/dist/commands/init.js.map +0 -1
  111. package/dist/commands/spawn-worktree.d.ts +0 -25
  112. package/dist/commands/spawn-worktree.js +0 -139
  113. package/dist/commands/spawn-worktree.js.map +0 -1
  114. package/dist/services/agent-config-manager.d.ts +0 -32
  115. package/dist/services/agent-config-manager.js +0 -130
  116. package/dist/services/agent-config-manager.js.map +0 -1
  117. package/dist/services/agent-registry.d.ts +0 -27
  118. package/dist/services/agent-registry.js +0 -89
  119. package/dist/services/agent-registry.js.map +0 -1
  120. package/dist/services/agent-session.d.ts +0 -24
  121. package/dist/services/agent-session.js +0 -107
  122. package/dist/services/agent-session.js.map +0 -1
  123. package/dist/services/agent-task-registry.d.ts +0 -131
  124. package/dist/services/agent-task-registry.js +0 -491
  125. package/dist/services/agent-task-registry.js.map +0 -1
  126. package/dist/services/chat.d.ts +0 -94
  127. package/dist/services/chat.js +0 -241
  128. package/dist/services/chat.js.map +0 -1
  129. package/dist/services/mcp-client.d.ts +0 -38
  130. package/dist/services/mcp-client.js +0 -170
  131. package/dist/services/mcp-client.js.map +0 -1
  132. package/dist/services/mcp-manager.d.ts +0 -28
  133. package/dist/services/mcp-manager.js +0 -157
  134. package/dist/services/mcp-manager.js.map +0 -1
  135. package/dist/services/poe-code.d.ts +0 -7
  136. package/dist/services/poe-code.js +0 -5
  137. package/dist/services/poe-code.js.map +0 -1
  138. package/dist/services/task-logger.d.ts +0 -24
  139. package/dist/services/task-logger.js +0 -73
  140. package/dist/services/task-logger.js.map +0 -1
  141. package/dist/services/task-runner.d.ts +0 -19
  142. package/dist/services/task-runner.js +0 -157
  143. package/dist/services/task-runner.js.map +0 -1
  144. package/dist/services/tools.d.ts +0 -76
  145. package/dist/services/tools.js +0 -870
  146. package/dist/services/tools.js.map +0 -1
  147. package/dist/utils/e2e-flags.d.ts +0 -1
  148. package/dist/utils/e2e-flags.js +0 -9
  149. package/dist/utils/e2e-flags.js.map +0 -1
  150. package/dist/utils/worktree.d.ts +0 -40
  151. package/dist/utils/worktree.js +0 -179
  152. package/dist/utils/worktree.js.map +0 -1
  153. package/shared/conversation-layout.cjs +0 -11
  154. package/shared/conversation-layout.d.ts +0 -7
  155. package/shared/conversation-layout.js +0 -11
  156. 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,6 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { CliContainer } from "../container.js";
3
- export interface TestCommandOptions {
4
- apiKey?: string;
5
- }
6
- export declare function registerTestCommand(program: Command, container: CliContainer): void;
@@ -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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"}
@@ -1,2 +0,0 @@
1
- import type { CliDependencies } from "./program.js";
2
- export declare function launchInteractiveMode(dependencies: CliDependencies): Promise<void>;