24 Commits

Author SHA1 Message Date
wolfy 2aca1a3aa3 feat: adapt pullfrog for gitea + ollama 2026-05-31 03:16:29 -05:00
Colin McDonnell 57f54e37c5 add bundled git-archaeology skill, auto-installed for opencode and claude (#565)
* add bundled git-archaeology skill, auto-installed for opencode and claude

ships a SKILL.md teaching agents the underused git history primitives
(pickaxe -S/-G, -L for function/line ranges, --reverse blame, deleted-file
recovery) so they stop scrolling git log -p when blame comes up empty.

introduces a lightweight bundled-skill path alongside the existing
addSkill (npx skills add) flow used for external skills like agent-browser.
SKILL.md is inlined into dist/cli.mjs via esbuild's text loader and written
to <home>/.agents/skills/<name>/SKILL.md at runtime — no network, no version
drift, no per-run install cost.

* fix: register vitest plugin to load .md as text for bundled-skill tests

* fix: drop vite type import from vitest plugin (vite isn't a direct dep)

* fix: load bundled skills via readFileSync so source mode works

esbuild's text loader only applies to the npm-bundled dist/cli.mjs path. the
preview / oss path runs cli.ts directly with node (PULLFROG_FORCE_LOCAL_CLI=1
in runCli.ts#runLocalCli), where node has no idea how to import .md files —
ERR_UNKNOWN_FILE_EXTENSION crashes the action before any agent starts.

switch to runtime readFileSync that checks both candidate locations:
- source mode: <actionRoot>/skills/<name>/SKILL.md (relative to utils/skills.ts)
- bundled mode: <distDir>/skills/<name>/SKILL.md (esbuild copies the tree)

drops the no-longer-needed esbuild text loader, vitest .md plugin, and
ambient *.md type declaration. wiki/skills.md updated with the why.

* fix: write bundled skills to per-agent dirs so claude actually registers them
2026-05-04 18:49:50 +00:00
Colin McDonnell 3c2f3722ff fix action package exports and build ESM library entrypoints.
emit real ESM runtime + declaration outputs for programmatic imports, align package exports/types with built files, and add a no-cjs policy note.

Made-with: Cursor
2026-04-12 19:49:21 +00:00
Colin McDonnell 421607cf97 fix push-to-action: use CLI direct invocation for token acquisition
the inline `node -e` + `TOKEN=$(...)` approach broke because
`core.getIDToken()` in @actions/core writes `::debug::` and
`::add-mask::` to stdout, polluting the captured value.

`node cli.ts gha token` uses `core.setOutput()` which writes to
the $GITHUB_OUTPUT file instead of stdout.

Made-with: Cursor
2026-04-12 00:47:41 +00:00
Mateusz Burzyński d5508d99bb Base Cloudflare integration with the codebase (#261)
* Base Cloudflare integration with the codebase

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add a trigger script

* tweak script

* rename dir

* remove preinstallation from Dockerfile

* stream output

* fix type error

* remove redundant waitUntil

* use alarm

* rename to ActionSandbox

* tweak timeouts

* update

* update wrangler types

* fix bad rebase

* update env var name

* rename queues

* add settings to avoid pesky warnings

* add catch

* retry enqueueIndexingJob

* forward to DLQ

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Colin McDonnell <colinmcd94@gmail.com>
2026-02-13 19:17:27 +00:00
Anna Bocharova 60da0e5749 feat(action): Update "Leaping" comment when workflow failed or cancelled early (#230)
* feat(action): Do cleanup when workflow failed or cancelled early.

* fix: avoid naming collision with get-installation-token state.

* tmp: add more logging for debugging purposes.

* fix: rm wasUpdated state.

* FIX: changing approach, separate entrypoint, using db to handle cases when main() never ran.

* fix(cleanup): revert changes to exitHandler.

* FIX: using event payload for issue and comment retrieval instead of DB.

* FIX: use installation token.

* feat(docs): wiki article explaining how it works.

* fix(docs): shortening.

* fix(docs): shortening.

* fix: no console.

* todo: DNRY for findPullfrogComment.

* FIX(DNRY): upgrading octokit/rest and reusing findInitialComment() from triggerWorkflow.ts.

* Revert "FIX(DNRY): upgrading octokit/rest and reusing findInitialComment() from triggerWorkflow.ts."

This reverts commit 7dd239ba0986c5b0aeacb6ddc9f2deddb83aee82.

* fix: rm todo.

* fix(DNRY): shortening early exit logging statements.

* FIX(API): Avoid extra call for comment body.

* feat(DNRY): extracting and reusing buildWorkflowErrorMessage() from exitHandler.ts.

* fix(DNRY): extracting more similarities into buildErrorCommentBody.

* feat: Add conditional reason check.

* fix(merge): replacing resolveInstallationToken with getJobToken.

* fix(debug): using higher severity.

* fix: Adjusting the implementation of getIsCancelled to use job status instead of workflow.

* fix: Take steps conclusion into account when job is in progress.

* fix: generic log msg.

* fix: jsdoc.

* fix(docs): Updating the wiki article according to recent changes.

* fix(post): Handling the case when current job runs within matrix.

* fix: finding the most recent comment that is ours ANS stuck.

* feat(opt): using progressCommentId from object-based prompt when present.

* fix(docs): Shortening the documentation 3 times down.

* FIX: Only using the prompt.progressCommentId but with validation that it is stuck.
2026-02-06 18:10:08 +00:00
Colin McDonnell 9e019d89d2 Clean up actions and payloads (#98)
* Clean up actions and payloads

* Clean up action

* Cleanup
2026-01-16 07:16:25 +00:00
Colin McDonnell 3fa309853b Fix repo slug 2026-01-14 01:44:30 +00:00
Colin McDonnell a57866a8cd Fix CI 2026-01-13 06:02:29 +00:00
Mateusz Burzyński 2bd12b9553 Use await using for installation token cleanup 2026-01-07 19:25:24 +01:00
David Blass 5d88bfce42 switch to http mcp 2025-11-26 13:51:22 -05:00
David Blass 1e8abe442b remove .js 2025-11-19 16:55:39 -05:00
David Blass 5889d20930 switch back to js 2025-11-19 16:31:13 -05:00
David Blass dcc257ff7a remove js suffix 2025-11-19 16:22:01 -05:00
David Blass bac3f3e9c6 bundle mcp-server.js 2025-11-06 20:50:20 -05:00
David Blass c31824144b fix bundle import 2025-11-06 20:32:28 -05:00
David Blass 0a63f3da9d try download claude 2025-11-06 20:28:58 -05:00
David Blass 599264694e try again 2025-11-06 19:08:25 -05:00
Pullfrog Action 7ef44eb254 try esm action 2025-11-06 19:03:19 -05:00
David Blass 5a21d40d27 start mcp server in memory 2025-11-06 17:56:06 -05:00
David Blass 65e3da81e9 revert to js action 2025-11-06 17:35:32 -05:00
David Blass a93c34e61b refactor action to use INPUTS_JSON object 2025-10-13 16:57:02 -04:00
Colin McDonnell 7d633da1be refactor: complete action testing system overhaul
- Removed /scratch directory, now cloning pullfrogai/scratch as needed
- Implemented new play.ts testing system with local and Docker/act modes
- Added environment variable propagation to cloned test repositories
- Created minimal .act-dist approach to avoid pnpm symlink issues with Docker
- Migrated from dist/index.js to entry.cjs bundled output
- Added TypeScript fixture support with MainParams type safety
- Organized all test fixtures in fixtures/ directory
- Updated publish workflow to trigger on package.json changes
- Removed unnecessary INPUT_ANTHROPIC_API_KEY references
- Added comprehensive documentation for new testing system
- Fixed pre-commit hook to use entry.cjs instead of dist/
2025-09-09 16:20:00 -07:00
Colin McDonnell ad2680524d Switch to esbuild 2025-08-27 18:05:17 -07:00