Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42b023cc86 | |||
| 854e3d5e4d | |||
| 5bb1b779a8 |
@@ -5,26 +5,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import * as core from "@actions/core";
|
import * as core from "@actions/core";
|
||||||
import { type } from "arktype";
|
import { type Inputs, main } from "./main.ts";
|
||||||
import { Inputs, main } from "./main.ts";
|
|
||||||
import { createMcpServer } from "./mcp/server.ts";
|
import { createMcpServer } from "./mcp/server.ts";
|
||||||
import packageJson from "./package.json" with { type: "json" };
|
|
||||||
import { log } from "./utils/cli.ts";
|
|
||||||
|
|
||||||
// Export createMcpServer so it can be called from the spawned MCP process
|
// Export createMcpServer so it can be called from the spawned MCP process
|
||||||
export { createMcpServer };
|
export { createMcpServer };
|
||||||
|
|
||||||
async function run(): Promise<void> {
|
async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
log.info(`🐸 Running pullfrog/action@${packageJson.version}...`);
|
const inputs: Inputs = {
|
||||||
|
prompt: core.getInput("prompt", { required: true }),
|
||||||
const inputsJson = process.env.INPUTS_JSON;
|
anthropic_api_key: core.getInput("anthropic_api_key") || undefined,
|
||||||
if (!inputsJson) {
|
};
|
||||||
throw new Error("INPUTS_JSON environment variable not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
const parsed = type("string.json.parse").assert(inputsJson);
|
|
||||||
const inputs = Inputs.assert(parsed);
|
|
||||||
|
|
||||||
const result = await main(inputs);
|
const result = await main(inputs);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { type } from "arktype";
|
import { type } from "arktype";
|
||||||
import { claude } from "./agents/claude.ts";
|
import { claude } from "./agents/claude.ts";
|
||||||
import { createMcpConfigs } from "./mcp/config.ts";
|
import { createMcpConfigs } from "./mcp/config.ts";
|
||||||
|
import packageJson from "./package.json" with { type: "json" };
|
||||||
import { log } from "./utils/cli.ts";
|
import { log } from "./utils/cli.ts";
|
||||||
import { parseRepoContext, setupGitHubInstallationToken } from "./utils/github.ts";
|
import { parseRepoContext, setupGitHubInstallationToken } from "./utils/github.ts";
|
||||||
import { setupGitAuth, setupGitConfig } from "./utils/setup.ts";
|
import { setupGitAuth, setupGitConfig } from "./utils/setup.ts";
|
||||||
@@ -22,7 +23,15 @@ export type PromptJSON = {};
|
|||||||
|
|
||||||
export async function main(inputs: Inputs): Promise<MainResult> {
|
export async function main(inputs: Inputs): Promise<MainResult> {
|
||||||
try {
|
try {
|
||||||
log.info("Starting agent run...");
|
log.info(`🐸 Running pullfrog/action@${packageJson.version}...`);
|
||||||
|
|
||||||
|
// Change to GITHUB_WORKSPACE if set (this is where actions/checkout puts the repo)
|
||||||
|
// JavaScript actions run from the action's directory, not the checked-out repo
|
||||||
|
if (process.env.GITHUB_WORKSPACE && process.cwd() !== process.env.GITHUB_WORKSPACE) {
|
||||||
|
log.debug(`Changing to GITHUB_WORKSPACE: ${process.env.GITHUB_WORKSPACE}`);
|
||||||
|
process.chdir(process.env.GITHUB_WORKSPACE);
|
||||||
|
log.debug(`New working directory: ${process.cwd()}`);
|
||||||
|
}
|
||||||
|
|
||||||
setupGitConfig();
|
setupGitConfig();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pullfrog/action",
|
"name": "@pullfrog/action",
|
||||||
"version": "0.0.77",
|
"version": "0.0.80",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
"index.js",
|
"index.js",
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { fromHere } from "@ark/fs";
|
|||||||
import arg from "arg";
|
import arg from "arg";
|
||||||
import { config } from "dotenv";
|
import { config } from "dotenv";
|
||||||
import { type Inputs, main } from "./main.ts";
|
import { type Inputs, main } from "./main.ts";
|
||||||
import packageJson from "./package.json" with { type: "json" };
|
|
||||||
import { log } from "./utils/cli.ts";
|
import { log } from "./utils/cli.ts";
|
||||||
import { setupTestRepo } from "./utils/setup.ts";
|
import { setupTestRepo } from "./utils/setup.ts";
|
||||||
|
|
||||||
@@ -15,8 +14,6 @@ export async function run(
|
|||||||
prompt: string
|
prompt: string
|
||||||
): Promise<{ success: boolean; output?: string | undefined; error?: string | undefined }> {
|
): Promise<{ success: boolean; output?: string | undefined; error?: string | undefined }> {
|
||||||
try {
|
try {
|
||||||
log.info(`🐸 Running pullfrog/action@${packageJson.version}...`);
|
|
||||||
|
|
||||||
const tempDir = join(process.cwd(), ".temp");
|
const tempDir = join(process.cwd(), ".temp");
|
||||||
setupTestRepo({ tempDir, forceClean: true });
|
setupTestRepo({ tempDir, forceClean: true });
|
||||||
|
|
||||||
|
|||||||
+13
-4
@@ -47,13 +47,22 @@ export function setupGitConfig(): void {
|
|||||||
// Only set up git config in GitHub Actions environment
|
// Only set up git config in GitHub Actions environment
|
||||||
// In local development, use the user's existing git config
|
// In local development, use the user's existing git config
|
||||||
if (!process.env.GITHUB_ACTIONS) {
|
if (!process.env.GITHUB_ACTIONS) {
|
||||||
log.info("⚠️ Skipping git configuration setup (not in GitHub Actions)");
|
log.warning("Skipping git configuration setup (not in GitHub Actions)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("🔧 Setting up git configuration...");
|
log.info("🔧 Setting up git configuration...");
|
||||||
execSync('git config user.email "action@pullfrog.ai"', { stdio: "inherit" });
|
try {
|
||||||
execSync('git config user.name "Pullfrog Action"', { stdio: "inherit" });
|
execSync('git config user.email "action@pullfrog.ai"', { stdio: "pipe" });
|
||||||
|
execSync('git config user.name "Pullfrog Action"', { stdio: "pipe" });
|
||||||
|
log.debug("setupGitConfig: ✓ Git configuration set successfully");
|
||||||
|
} catch (error) {
|
||||||
|
// If git config fails, log warning but don't fail the action
|
||||||
|
// This can happen if we're not in a git repo or git isn't available
|
||||||
|
log.warning(
|
||||||
|
`Failed to set git config: ${error instanceof Error ? error.message : String(error)}`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,7 +73,7 @@ export function setupGitAuth(githubToken: string, repoContext: RepoContext): voi
|
|||||||
// Only set up git auth in GitHub Actions environment
|
// Only set up git auth in GitHub Actions environment
|
||||||
// In local testing, this would overwrite the real git remote with fake credentials
|
// In local testing, this would overwrite the real git remote with fake credentials
|
||||||
if (!process.env.GITHUB_ACTIONS) {
|
if (!process.env.GITHUB_ACTIONS) {
|
||||||
log.info("⚠️ Skipping git authentication setup (not in GitHub Actions)");
|
log.warning("Skipping git authentication setup (not in GitHub Actions)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user