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,33 @@
|
|
|
1
|
+
import type { CliEnvironment } from "./environment.js";
|
|
2
|
+
import type { CommandContext } from "./context.js";
|
|
3
|
+
import type { ScopedLogger } from "./logger.js";
|
|
4
|
+
import type { ProviderOperation, TelemetryClient } from "./telemetry.js";
|
|
5
|
+
export interface ProviderContext<TPaths = Record<string, string>> {
|
|
6
|
+
env: CliEnvironment;
|
|
7
|
+
paths: TPaths;
|
|
8
|
+
command: CommandContext;
|
|
9
|
+
logger: ScopedLogger;
|
|
10
|
+
}
|
|
11
|
+
export interface ProviderAdapter<TPaths = Record<string, string>, TConfigure = unknown, TRemove = unknown, TSpawn = unknown> {
|
|
12
|
+
name: string;
|
|
13
|
+
label: string;
|
|
14
|
+
supportsSpawn?: boolean;
|
|
15
|
+
resolvePaths(env: CliEnvironment): TPaths;
|
|
16
|
+
registerPrerequisites?: (manager: CommandContext["prerequisites"]) => void;
|
|
17
|
+
install?: (context: ProviderContext<TPaths>) => Promise<void> | void;
|
|
18
|
+
configure?: (context: ProviderContext<TPaths>, options: TConfigure) => Promise<void> | void;
|
|
19
|
+
remove?: (context: ProviderContext<TPaths>, options: TRemove) => Promise<boolean | void> | boolean | void;
|
|
20
|
+
spawn?: (context: ProviderContext<TPaths>, options: TSpawn) => Promise<unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface ServiceRegistry {
|
|
23
|
+
register(adapter: ProviderAdapter): void;
|
|
24
|
+
discover(adapters: ProviderAdapter[]): void;
|
|
25
|
+
get(name: string): ProviderAdapter | undefined;
|
|
26
|
+
require(name: string): ProviderAdapter;
|
|
27
|
+
list(): ProviderAdapter[];
|
|
28
|
+
invoke<T>(serviceName: string, operation: ProviderOperation, runner: (adapter: ProviderAdapter) => Promise<T>): Promise<T>;
|
|
29
|
+
}
|
|
30
|
+
export interface ServiceRegistryInit {
|
|
31
|
+
telemetry?: TelemetryClient;
|
|
32
|
+
}
|
|
33
|
+
export declare function createServiceRegistry(init?: ServiceRegistryInit): ServiceRegistry;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function createServiceRegistry(init = {}) {
|
|
2
|
+
const adapters = new Map();
|
|
3
|
+
const register = (adapter) => {
|
|
4
|
+
if (adapters.has(adapter.name)) {
|
|
5
|
+
throw new Error(`Provider "${adapter.name}" is already registered.`);
|
|
6
|
+
}
|
|
7
|
+
adapters.set(adapter.name, adapter);
|
|
8
|
+
};
|
|
9
|
+
const discover = (candidates) => {
|
|
10
|
+
for (const candidate of candidates) {
|
|
11
|
+
if (adapters.has(candidate.name)) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
adapters.set(candidate.name, candidate);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const get = (name) => adapters.get(name);
|
|
18
|
+
const require = (name) => {
|
|
19
|
+
const adapter = adapters.get(name);
|
|
20
|
+
if (!adapter) {
|
|
21
|
+
throw new Error(`Unknown provider "${name}".`);
|
|
22
|
+
}
|
|
23
|
+
return adapter;
|
|
24
|
+
};
|
|
25
|
+
const list = () => Array.from(adapters.values());
|
|
26
|
+
const invoke = async (serviceName, operation, runner) => {
|
|
27
|
+
const adapter = require(serviceName);
|
|
28
|
+
if (init.telemetry) {
|
|
29
|
+
return await init.telemetry.wrap(serviceName, operation, () => runner(adapter));
|
|
30
|
+
}
|
|
31
|
+
return await runner(adapter);
|
|
32
|
+
};
|
|
33
|
+
return { register, discover, get, require, list, invoke };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=service-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-registry.js","sourceRoot":"","sources":["../../src/cli/service-registry.ts"],"names":[],"mappings":"AAyDA,MAAM,UAAU,qBAAqB,CACnC,OAA4B,EAAE;IAE9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,MAAM,QAAQ,GAAG,CAAC,OAAwB,EAAQ,EAAE;QAClD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,0BAA0B,CAAC,CAAC;QACvE,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,UAA6B,EAAQ,EAAE;QACvD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,IAAY,EAA+B,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE9E,MAAM,OAAO,GAAG,CAAC,IAAY,EAAmB,EAAE;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,KAAK,EAClB,WAAmB,EACnB,SAA4B,EAC5B,MAAgD,EACpC,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAC5D,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ScopedLogger } from "./logger.js";
|
|
2
|
+
export type ProviderOperation = "install" | "configure" | "remove" | "spawn" | "prerequisites";
|
|
3
|
+
export type TelemetryStatus = "success" | "failure";
|
|
4
|
+
export interface TelemetryEvent {
|
|
5
|
+
service: string;
|
|
6
|
+
operation: ProviderOperation;
|
|
7
|
+
status: TelemetryStatus;
|
|
8
|
+
durationMs: number;
|
|
9
|
+
error?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface TelemetryClient {
|
|
12
|
+
record(event: TelemetryEvent): void;
|
|
13
|
+
wrap<T>(service: string, operation: ProviderOperation, task: () => Promise<T>): Promise<T>;
|
|
14
|
+
}
|
|
15
|
+
export declare function createTelemetryClient(logger: ScopedLogger): TelemetryClient;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function createTelemetryClient(logger) {
|
|
2
|
+
const record = (event) => {
|
|
3
|
+
const prefix = `${event.operation}:${event.service}`;
|
|
4
|
+
const suffix = event.status === "success"
|
|
5
|
+
? `completed in ${event.durationMs.toFixed(0)}ms`
|
|
6
|
+
: `failed in ${event.durationMs.toFixed(0)}ms`;
|
|
7
|
+
const message = `${prefix} ${suffix}`;
|
|
8
|
+
if (event.status === "success") {
|
|
9
|
+
logger.verbose(message);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
logger.error(message);
|
|
13
|
+
if (event.error) {
|
|
14
|
+
logger.error(event.error instanceof Error
|
|
15
|
+
? event.error.message
|
|
16
|
+
: String(event.error));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const wrap = async (service, operation, task) => {
|
|
21
|
+
const start = Date.now();
|
|
22
|
+
try {
|
|
23
|
+
const result = await task();
|
|
24
|
+
record({
|
|
25
|
+
service,
|
|
26
|
+
operation,
|
|
27
|
+
status: "success",
|
|
28
|
+
durationMs: Date.now() - start
|
|
29
|
+
});
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
record({
|
|
34
|
+
service,
|
|
35
|
+
operation,
|
|
36
|
+
status: "failure",
|
|
37
|
+
durationMs: Date.now() - start,
|
|
38
|
+
error
|
|
39
|
+
});
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return { record, wrap };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,MAAM,MAAM,GAAG,CAAC,KAAqB,EAAQ,EAAE;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,KAAK,SAAS;YACxB,CAAC,CAAC,gBAAgB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACjD,CAAC,CAAC,aAAa,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CACV,KAAK,CAAC,KAAK,YAAY,KAAK;oBAC1B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;oBACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CACxB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAChB,OAAe,EACf,SAA4B,EAC5B,IAAsB,EACV,EAAE;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC;gBACL,OAAO;gBACP,SAAS;gBACT,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC;gBACL,OAAO;gBACP,SAAS;gBACT,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;gBAC9B,KAAK;aACN,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { renderTemplate } from "../utils/templates.js";
|
|
3
|
+
export async function initProject(options) {
|
|
4
|
+
const { fs, cwd, projectName, apiKey, model } = options;
|
|
5
|
+
const projectDir = path.join(cwd, projectName);
|
|
6
|
+
if (await pathExists(fs, projectDir)) {
|
|
7
|
+
throw new Error(`Project directory "${projectName}" already exists`);
|
|
8
|
+
}
|
|
9
|
+
await fs.mkdir(projectDir, { recursive: true });
|
|
10
|
+
await Promise.all([
|
|
11
|
+
writeTemplate(fs, projectDir, ".env", "python/env.hbs", { apiKey, model }),
|
|
12
|
+
writeTemplate(fs, projectDir, "main.py", "python/main.py.hbs", {
|
|
13
|
+
apiKey,
|
|
14
|
+
model
|
|
15
|
+
}),
|
|
16
|
+
writeTemplate(fs, projectDir, "requirements.txt", "python/requirements.txt.hbs", {})
|
|
17
|
+
]);
|
|
18
|
+
}
|
|
19
|
+
async function writeTemplate(fs, projectDir, filename, templatePath, context) {
|
|
20
|
+
const rendered = await renderTemplate(templatePath, context);
|
|
21
|
+
await fs.writeFile(path.join(projectDir, filename), rendered, {
|
|
22
|
+
encoding: "utf8"
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async function pathExists(fs, target) {
|
|
26
|
+
try {
|
|
27
|
+
await fs.stat(target);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (isNotFound(error)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isNotFound(error) {
|
|
38
|
+
return (typeof error === "object" &&
|
|
39
|
+
error !== null &&
|
|
40
|
+
"code" in error &&
|
|
41
|
+
error.code === "ENOENT");
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE/C,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1E,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE;YAC7D,MAAM;YACN,KAAK;SACN,CAAC;QACF,aAAa,CACX,EAAE,EACF,UAAU,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,EAAE,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,EAAc,EACd,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE;QAC5D,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,MAAc;IACtD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA2B,CAAC,IAAI,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FileSystem } from "../utils/file-system.js";
|
|
2
|
+
export interface PreparePlaceholderPackageOptions {
|
|
3
|
+
fs: FileSystem;
|
|
4
|
+
targetDir: string;
|
|
5
|
+
packageName: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function preparePlaceholderPackage(options: PreparePlaceholderPackageOptions): Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const DEFAULT_VERSION = "0.0.0-placeholder";
|
|
3
|
+
export async function preparePlaceholderPackage(options) {
|
|
4
|
+
const { fs, targetDir, packageName, version = DEFAULT_VERSION } = options;
|
|
5
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
6
|
+
const manifestPath = path.join(targetDir, "package.json");
|
|
7
|
+
const manifest = JSON.stringify(createManifest(packageName, version), null, 2);
|
|
8
|
+
await fs.writeFile(manifestPath, `${manifest}\n`, { encoding: "utf8" });
|
|
9
|
+
const entryPath = path.join(targetDir, "index.js");
|
|
10
|
+
await fs.writeFile(entryPath, createEntryPoint(packageName), {
|
|
11
|
+
encoding: "utf8"
|
|
12
|
+
});
|
|
13
|
+
const readmePath = path.join(targetDir, "README.md");
|
|
14
|
+
await fs.writeFile(readmePath, createReadme(packageName), {
|
|
15
|
+
encoding: "utf8"
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function createManifest(packageName, version) {
|
|
19
|
+
return {
|
|
20
|
+
name: packageName,
|
|
21
|
+
version,
|
|
22
|
+
description: `Placeholder release for ${packageName} to reserve the package name.`,
|
|
23
|
+
bin: {
|
|
24
|
+
[packageName]: "index.js"
|
|
25
|
+
},
|
|
26
|
+
files: ["index.js", "README.md"],
|
|
27
|
+
keywords: ["placeholder"],
|
|
28
|
+
license: "MIT"
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function createEntryPoint(packageName) {
|
|
32
|
+
const message = `Placeholder release for ${packageName}. Full CLI coming soon.`;
|
|
33
|
+
return [
|
|
34
|
+
"#!/usr/bin/env node",
|
|
35
|
+
`'use strict';`,
|
|
36
|
+
"",
|
|
37
|
+
`console.log("${message}");`,
|
|
38
|
+
""
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
function createReadme(packageName) {
|
|
42
|
+
return [
|
|
43
|
+
`# ${packageName}`,
|
|
44
|
+
"",
|
|
45
|
+
`This is a placeholder release published to reserve the \`${packageName}\` package name.`,
|
|
46
|
+
"",
|
|
47
|
+
"The full CLI will be published once it is ready. Stay tuned!"
|
|
48
|
+
].join("\n");
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=publish-placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-placeholder.js","sourceRoot":"","sources":["../../src/commands/publish-placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAyC;IAEzC,MAAM,EACJ,EAAE,EACF,SAAS,EACT,WAAW,EACX,OAAO,GAAG,eAAe,EAC1B,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAC7B,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,EACpC,IAAI,EACJ,CAAC,CACF,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAExE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;QAC3D,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE;QACxD,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB,EAAE,OAAe;IAC1D,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,WAAW,EAAE,2BAA2B,WAAW,+BAA+B;QAClF,GAAG,EAAE;YACH,CAAC,WAAW,CAAC,EAAE,UAAU;SAC1B;QACD,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAChC,QAAQ,EAAE,CAAC,aAAa,CAAC;QACzB,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,OAAO,GAAG,2BAA2B,WAAW,yBAAyB,CAAC;IAChF,OAAO;QACL,qBAAqB;QACrB,eAAe;QACf,EAAE;QACF,gBAAgB,OAAO,KAAK;QAC5B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB;IACvC,OAAO;QACL,KAAK,WAAW,EAAE;QAClB,EAAE;QACF,4DAA4D,WAAW,kBAAkB;QACzF,EAAE;QACF,8DAA8D;KAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CommandRunnerResult } from "../utils/prerequisites.js";
|
|
2
|
+
import { createWorktree as createWorktreeDefault, getChanges as getChangesDefault, isGitRepository as isGitRepositoryDefault, mergeChanges as mergeChangesDefault } from "../utils/worktree.js";
|
|
3
|
+
interface SpawnGitWorktreeDependencies {
|
|
4
|
+
isGitRepository: typeof isGitRepositoryDefault;
|
|
5
|
+
createWorktree: typeof createWorktreeDefault;
|
|
6
|
+
getChanges: typeof getChangesDefault;
|
|
7
|
+
mergeChanges: typeof mergeChangesDefault;
|
|
8
|
+
}
|
|
9
|
+
interface SpawnGitWorktreeOptions {
|
|
10
|
+
agent: string;
|
|
11
|
+
prompt: string;
|
|
12
|
+
agentArgs: string[];
|
|
13
|
+
basePath: string;
|
|
14
|
+
targetBranch: string;
|
|
15
|
+
runAgent: (input: {
|
|
16
|
+
agent: string;
|
|
17
|
+
prompt: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
cwd: string;
|
|
20
|
+
}) => Promise<CommandRunnerResult>;
|
|
21
|
+
logger: (message: string) => void;
|
|
22
|
+
dependencies?: Partial<SpawnGitWorktreeDependencies>;
|
|
23
|
+
}
|
|
24
|
+
export declare function spawnGitWorktree(options: SpawnGitWorktreeOptions): Promise<void>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { createWorktree as createWorktreeDefault, getChanges as getChangesDefault, isGitRepository as isGitRepositoryDefault, mergeChanges as mergeChangesDefault } from "../utils/worktree.js";
|
|
2
|
+
const defaultDependencies = {
|
|
3
|
+
isGitRepository: isGitRepositoryDefault,
|
|
4
|
+
createWorktree: createWorktreeDefault,
|
|
5
|
+
getChanges: getChangesDefault,
|
|
6
|
+
mergeChanges: mergeChangesDefault
|
|
7
|
+
};
|
|
8
|
+
function resolveDependencies(overrides) {
|
|
9
|
+
if (!overrides) {
|
|
10
|
+
return defaultDependencies;
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
isGitRepository: overrides.isGitRepository ?? defaultDependencies.isGitRepository,
|
|
14
|
+
createWorktree: overrides.createWorktree ?? defaultDependencies.createWorktree,
|
|
15
|
+
getChanges: overrides.getChanges ?? defaultDependencies.getChanges,
|
|
16
|
+
mergeChanges: overrides.mergeChanges ?? defaultDependencies.mergeChanges
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export async function spawnGitWorktree(options) {
|
|
20
|
+
const deps = resolveDependencies(options.dependencies);
|
|
21
|
+
const isRepo = await deps.isGitRepository(options.basePath);
|
|
22
|
+
if (!isRepo) {
|
|
23
|
+
throw new Error(`"${options.basePath}" is not a git repository.`);
|
|
24
|
+
}
|
|
25
|
+
const context = await deps.createWorktree(options.basePath);
|
|
26
|
+
let shouldCleanup = false;
|
|
27
|
+
const preserveAndThrow = (message, cause) => {
|
|
28
|
+
options.logger(`Worktree preserved at ${context.path}`);
|
|
29
|
+
const base = cause instanceof Error
|
|
30
|
+
? cause
|
|
31
|
+
: cause
|
|
32
|
+
? new Error(String(cause))
|
|
33
|
+
: undefined;
|
|
34
|
+
const wrapped = new Error(message);
|
|
35
|
+
if (base) {
|
|
36
|
+
wrapped.cause = base;
|
|
37
|
+
}
|
|
38
|
+
wrapped.worktreeLogged = true;
|
|
39
|
+
throw wrapped;
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
const initialResult = await runAgentWithContext({
|
|
43
|
+
...options,
|
|
44
|
+
context
|
|
45
|
+
});
|
|
46
|
+
const trimmedStdout = initialResult.stdout.trim();
|
|
47
|
+
if (trimmedStdout.length > 0) {
|
|
48
|
+
options.logger(trimmedStdout);
|
|
49
|
+
}
|
|
50
|
+
const trimmedStderr = initialResult.stderr.trim();
|
|
51
|
+
if (trimmedStderr.length > 0) {
|
|
52
|
+
options.logger(trimmedStderr);
|
|
53
|
+
}
|
|
54
|
+
if (initialResult.exitCode !== 0) {
|
|
55
|
+
return preserveAndThrow("Agent execution failed", initialResult);
|
|
56
|
+
}
|
|
57
|
+
const mergeResult = await deps.mergeChanges(context.path, options.targetBranch);
|
|
58
|
+
if (mergeResult.outcome === "conflict") {
|
|
59
|
+
await handleConflicts({
|
|
60
|
+
options,
|
|
61
|
+
context,
|
|
62
|
+
mergeResult,
|
|
63
|
+
dependencies: deps
|
|
64
|
+
});
|
|
65
|
+
shouldCleanup = true;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (mergeResult.outcome === "no-changes") {
|
|
69
|
+
options.logger("No changes detected; nothing to merge.");
|
|
70
|
+
shouldCleanup = true;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
shouldCleanup = true;
|
|
74
|
+
options.logger("Worktree changes merged successfully.");
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error instanceof Error &&
|
|
78
|
+
error.worktreeLogged) {
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
preserveAndThrow(error instanceof Error ? error.message : "Unexpected failure", error);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
if (shouldCleanup) {
|
|
85
|
+
await context.cleanup();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function runAgentWithContext(input) {
|
|
90
|
+
const { agent, prompt, agentArgs, runAgent, context } = input;
|
|
91
|
+
const previousCwd = process.cwd();
|
|
92
|
+
let changedDirectory = false;
|
|
93
|
+
try {
|
|
94
|
+
process.chdir(context.path);
|
|
95
|
+
changedDirectory = true;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (!(error instanceof Error) ||
|
|
99
|
+
error.code !== "ERR_WORKER_UNSUPPORTED_OPERATION") {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
return await runAgent({
|
|
105
|
+
agent,
|
|
106
|
+
prompt,
|
|
107
|
+
args: agentArgs,
|
|
108
|
+
cwd: context.path
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
if (changedDirectory) {
|
|
113
|
+
process.chdir(previousCwd);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async function handleConflicts(input) {
|
|
118
|
+
const { options, context, mergeResult, dependencies } = input;
|
|
119
|
+
const files = mergeResult.files.join(", ");
|
|
120
|
+
options.logger(`Merge conflicts detected in: ${files}`);
|
|
121
|
+
options.logger("Attempting automated conflict resolution.");
|
|
122
|
+
const resolutionPrompt = `Merge conflicts in: ${files}. Resolve using git commands.`;
|
|
123
|
+
const resolutionResult = await runAgentWithContext({
|
|
124
|
+
agent: options.agent,
|
|
125
|
+
prompt: resolutionPrompt,
|
|
126
|
+
agentArgs: options.agentArgs,
|
|
127
|
+
runAgent: options.runAgent,
|
|
128
|
+
context
|
|
129
|
+
});
|
|
130
|
+
if (resolutionResult.exitCode !== 0) {
|
|
131
|
+
throw new Error("Agent execution failed during conflict resolution.");
|
|
132
|
+
}
|
|
133
|
+
const finalMerge = await dependencies.mergeChanges(context.path, options.targetBranch);
|
|
134
|
+
if (finalMerge.outcome !== "merged" && finalMerge.outcome !== "no-changes") {
|
|
135
|
+
throw new Error("Merge failed after conflict resolution.");
|
|
136
|
+
}
|
|
137
|
+
options.logger("Conflicts resolved and merged successfully.");
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=spawn-worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-worktree.js","sourceRoot":"","sources":["../../src/commands/spawn-worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as nodeFs from "node:fs/promises";
|
|
3
|
+
import * as nodeFsSync from "node:fs";
|
|
4
|
+
import { realpathSync } from "node:fs";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { pathToFileURL } from "node:url";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import prompts from "prompts";
|
|
9
|
+
import { createProgram } from "./cli/program.js";
|
|
10
|
+
import { ErrorLogger } from "./cli/error-logger.js";
|
|
11
|
+
import { CliError } from "./cli/errors.js";
|
|
12
|
+
const fsAdapter = nodeFs;
|
|
13
|
+
async function main() {
|
|
14
|
+
const homeDir = homedir();
|
|
15
|
+
const logDir = join(homeDir, ".poe-code", "logs");
|
|
16
|
+
// Create global error logger for bootstrapping errors
|
|
17
|
+
const errorLogger = new ErrorLogger({
|
|
18
|
+
fs: nodeFsSync,
|
|
19
|
+
logDir,
|
|
20
|
+
logToStderr: false // Only log to file at this level
|
|
21
|
+
});
|
|
22
|
+
const program = createProgram({
|
|
23
|
+
fs: fsAdapter,
|
|
24
|
+
prompts: (questions) => prompts(questions, {
|
|
25
|
+
onCancel: () => {
|
|
26
|
+
throw new Error("Operation cancelled.");
|
|
27
|
+
}
|
|
28
|
+
}),
|
|
29
|
+
env: {
|
|
30
|
+
cwd: process.cwd(),
|
|
31
|
+
homeDir,
|
|
32
|
+
platform: process.platform,
|
|
33
|
+
variables: process.env
|
|
34
|
+
},
|
|
35
|
+
logger: (message) => {
|
|
36
|
+
console.log(message);
|
|
37
|
+
},
|
|
38
|
+
exitOverride: false
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
await program.parseAsync(process.argv);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof Error) {
|
|
45
|
+
// Log error with full context
|
|
46
|
+
errorLogger.logErrorWithStackTrace(error, "CLI execution", {
|
|
47
|
+
component: "main",
|
|
48
|
+
argv: process.argv
|
|
49
|
+
});
|
|
50
|
+
// Display user-friendly message
|
|
51
|
+
if (error instanceof CliError && error.isUserError) {
|
|
52
|
+
console.error(error.message);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.error(`Error: ${error.message}`);
|
|
56
|
+
console.error(`See logs at ${join(logDir, "errors.log")} for more details.`);
|
|
57
|
+
}
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (isCliInvocation(process.argv, import.meta.url)) {
|
|
64
|
+
void main();
|
|
65
|
+
}
|
|
66
|
+
function isCliInvocation(argv, moduleUrl, realpath = realpathSync) {
|
|
67
|
+
const entry = argv.at(1);
|
|
68
|
+
if (typeof entry !== "string") {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const candidates = [pathToFileURL(entry).href];
|
|
72
|
+
try {
|
|
73
|
+
candidates.push(pathToFileURL(realpath(entry)).href);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Ignore resolution errors; fall back to direct comparison.
|
|
77
|
+
}
|
|
78
|
+
return candidates.includes(moduleUrl);
|
|
79
|
+
}
|
|
80
|
+
export { main, isCliInvocation };
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ProviderAdapter } from "../cli/service-registry.js";
|
|
2
|
+
import type { ServiceMutationHooks } from "../services/service-manifest.js";
|
|
3
|
+
export interface ClaudeCodePaths extends Record<string, string> {
|
|
4
|
+
settingsPath: string;
|
|
5
|
+
keyHelperPath: string;
|
|
6
|
+
credentialsPath: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ClaudeCodeConfigureOptions {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
defaultModel: string;
|
|
11
|
+
mutationHooks?: ServiceMutationHooks;
|
|
12
|
+
}
|
|
13
|
+
export interface ClaudeCodeRemoveOptions {
|
|
14
|
+
mutationHooks?: ServiceMutationHooks;
|
|
15
|
+
}
|
|
16
|
+
export interface ClaudeCodeSpawnOptions {
|
|
17
|
+
prompt: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare const claudeCodeAdapter: ProviderAdapter<ClaudeCodePaths, ClaudeCodeConfigureOptions, ClaudeCodeRemoveOptions, ClaudeCodeSpawnOptions>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { configureClaudeCode, installClaudeCode, registerClaudeCodePrerequisites, removeClaudeCode, spawnClaudeCode } from "../services/claude-code.js";
|
|
2
|
+
export const claudeCodeAdapter = {
|
|
3
|
+
name: "claude-code",
|
|
4
|
+
label: "Claude Code",
|
|
5
|
+
supportsSpawn: true,
|
|
6
|
+
resolvePaths(env) {
|
|
7
|
+
return {
|
|
8
|
+
settingsPath: env.resolveHomePath(".claude", "settings.json"),
|
|
9
|
+
keyHelperPath: env.resolveHomePath(".claude", "anthropic_key.sh"),
|
|
10
|
+
credentialsPath: env.credentialsPath
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
registerPrerequisites(manager) {
|
|
14
|
+
registerClaudeCodePrerequisites(manager);
|
|
15
|
+
},
|
|
16
|
+
async install(context) {
|
|
17
|
+
await installClaudeCode({
|
|
18
|
+
isDryRun: context.logger.context.dryRun,
|
|
19
|
+
runCommand: context.command.runCommand,
|
|
20
|
+
logger: (message) => context.logger.info(message)
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
async configure(context, options) {
|
|
24
|
+
await configureClaudeCode({
|
|
25
|
+
fs: context.command.fs,
|
|
26
|
+
apiKey: options.apiKey,
|
|
27
|
+
settingsPath: context.paths.settingsPath,
|
|
28
|
+
keyHelperPath: context.paths.keyHelperPath,
|
|
29
|
+
credentialsPath: context.paths.credentialsPath,
|
|
30
|
+
defaultModel: options.defaultModel
|
|
31
|
+
}, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
|
|
32
|
+
},
|
|
33
|
+
async remove(context, options) {
|
|
34
|
+
return await removeClaudeCode({
|
|
35
|
+
fs: context.command.fs,
|
|
36
|
+
settingsPath: context.paths.settingsPath,
|
|
37
|
+
keyHelperPath: context.paths.keyHelperPath
|
|
38
|
+
}, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
|
|
39
|
+
},
|
|
40
|
+
async spawn(context, options) {
|
|
41
|
+
return await spawnClaudeCode({
|
|
42
|
+
prompt: options.prompt,
|
|
43
|
+
args: options.args,
|
|
44
|
+
runCommand: context.command.runCommand
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=claude-code-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-adapter.js","sourceRoot":"","sources":["../../src/providers/claude-code-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,gBAAgB,EAChB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAyBpC,MAAM,CAAC,MAAM,iBAAiB,GAK1B;IACF,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,aAAa;IACpB,aAAa,EAAE,IAAI;IACnB,YAAY,CAAC,GAAG;QACd,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC;YAC7D,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC;YACjE,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAC;IACJ,CAAC;IACD,qBAAqB,CAAC,OAAO;QAC3B,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,OAAO;QACnB,MAAM,iBAAiB,CAAC;YACtB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;YACvC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;YACtC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO;QAC9B,MAAM,mBAAmB,CACvB;YACE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;YACxC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa;YAC1C,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,EACD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CACrE,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;QAC3B,OAAO,MAAM,gBAAgB,CAC3B;YACE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YACtB,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;YACxC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa;SAC3C,EACD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CACrE,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO;QAC1B,OAAO,MAAM,eAAe,CAAC;YAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;SACvC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ProviderAdapter } from "../cli/service-registry.js";
|
|
2
|
+
import type { ServiceMutationHooks } from "../services/service-manifest.js";
|
|
3
|
+
export interface CodexPaths extends Record<string, string> {
|
|
4
|
+
configPath: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CodexConfigureOptions {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
model: string;
|
|
9
|
+
reasoningEffort: string;
|
|
10
|
+
mutationHooks?: ServiceMutationHooks;
|
|
11
|
+
}
|
|
12
|
+
export interface CodexSpawnOptions {
|
|
13
|
+
prompt: string;
|
|
14
|
+
args: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface CodexRemoveOptions {
|
|
17
|
+
mutationHooks?: ServiceMutationHooks;
|
|
18
|
+
}
|
|
19
|
+
export declare const codexAdapter: ProviderAdapter<CodexPaths, CodexConfigureOptions, CodexRemoveOptions, CodexSpawnOptions>;
|