agentic-pi 0.1.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 +418 -0
- package/dist/args.d.ts +31 -0
- package/dist/args.js +109 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +47 -0
- package/dist/cli.js.map +1 -0
- package/dist/emitter.d.ts +49 -0
- package/dist/emitter.js +67 -0
- package/dist/emitter.js.map +1 -0
- package/dist/extensions/github/auth.d.ts +54 -0
- package/dist/extensions/github/auth.js +116 -0
- package/dist/extensions/github/auth.js.map +1 -0
- package/dist/extensions/github/client.d.ts +6387 -0
- package/dist/extensions/github/client.js +358 -0
- package/dist/extensions/github/client.js.map +1 -0
- package/dist/extensions/github/credentials.d.ts +24 -0
- package/dist/extensions/github/credentials.js +44 -0
- package/dist/extensions/github/credentials.js.map +1 -0
- package/dist/extensions/github/index.d.ts +46 -0
- package/dist/extensions/github/index.js +67 -0
- package/dist/extensions/github/index.js.map +1 -0
- package/dist/extensions/github/profiles.d.ts +17 -0
- package/dist/extensions/github/profiles.js +71 -0
- package/dist/extensions/github/profiles.js.map +1 -0
- package/dist/extensions/github/tools.d.ts +18 -0
- package/dist/extensions/github/tools.js +289 -0
- package/dist/extensions/github/tools.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +13 -0
- package/dist/models.js +31 -0
- package/dist/models.js.map +1 -0
- package/dist/run.d.ts +139 -0
- package/dist/run.js +131 -0
- package/dist/run.js.map +1 -0
- package/dist/runner.d.ts +22 -0
- package/dist/runner.js +143 -0
- package/dist/runner.js.map +1 -0
- package/dist/sandbox/gondolin.d.ts +39 -0
- package/dist/sandbox/gondolin.js +210 -0
- package/dist/sandbox/gondolin.js.map +1 -0
- package/dist/sandbox/index.d.ts +37 -0
- package/dist/sandbox/index.js +55 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/preflight.d.ts +24 -0
- package/dist/sandbox/preflight.js +93 -0
- package/dist/sandbox/preflight.js.map +1 -0
- package/dist/stdin.d.ts +1 -0
- package/dist/stdin.js +11 -0
- package/dist/stdin.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub tool profiles — registration-time gate.
|
|
3
|
+
*
|
|
4
|
+
* Maps the 4 lastlight profile names to the set of Pi tool names allowed
|
|
5
|
+
* in that profile. Tools NOT in the active profile are never registered, so
|
|
6
|
+
* the LLM cannot call them. Combined with the token-scope downscoping
|
|
7
|
+
* lastlight does on the host side, this gives defense-in-depth.
|
|
8
|
+
*
|
|
9
|
+
* Mirrors lastlight's `GITHUB_PERMISSION_PROFILES` token scopes:
|
|
10
|
+
* read → contents:r, issues:r, pull_requests:r, metadata:r
|
|
11
|
+
* issues-write → ditto + issues:w
|
|
12
|
+
* review-write → ditto + pull_requests:w
|
|
13
|
+
* repo-write → ditto + contents:w
|
|
14
|
+
*/
|
|
15
|
+
const READ_TOOLS = [
|
|
16
|
+
// git auth (refresh is read-only — just rotates the token in the file)
|
|
17
|
+
"github_refresh_git_auth",
|
|
18
|
+
// repo read
|
|
19
|
+
"github_get_repository",
|
|
20
|
+
"github_get_file_contents",
|
|
21
|
+
"github_list_branches",
|
|
22
|
+
"github_list_commits",
|
|
23
|
+
// issue read
|
|
24
|
+
"github_list_issues",
|
|
25
|
+
"github_get_issue",
|
|
26
|
+
"github_list_issue_comments",
|
|
27
|
+
"github_list_labels",
|
|
28
|
+
// PR read
|
|
29
|
+
"github_list_pull_requests",
|
|
30
|
+
"github_get_pull_request",
|
|
31
|
+
"github_list_pull_request_files",
|
|
32
|
+
"github_get_pull_request_diff",
|
|
33
|
+
"github_list_pull_request_reviews",
|
|
34
|
+
"github_list_pull_request_review_comments",
|
|
35
|
+
// search
|
|
36
|
+
"github_search_repositories",
|
|
37
|
+
"github_search_issues",
|
|
38
|
+
"github_search_code",
|
|
39
|
+
];
|
|
40
|
+
const ISSUES_WRITE_TOOLS = [
|
|
41
|
+
...READ_TOOLS,
|
|
42
|
+
"github_create_issue",
|
|
43
|
+
"github_update_issue",
|
|
44
|
+
"github_add_issue_comment",
|
|
45
|
+
"github_add_labels",
|
|
46
|
+
"github_remove_label",
|
|
47
|
+
"github_create_label",
|
|
48
|
+
];
|
|
49
|
+
const REVIEW_WRITE_TOOLS = [
|
|
50
|
+
...ISSUES_WRITE_TOOLS,
|
|
51
|
+
"github_create_pull_request",
|
|
52
|
+
"github_create_pull_request_review",
|
|
53
|
+
];
|
|
54
|
+
const REPO_WRITE_TOOLS = [
|
|
55
|
+
...REVIEW_WRITE_TOOLS,
|
|
56
|
+
"github_clone_repo",
|
|
57
|
+
"github_create_or_update_file",
|
|
58
|
+
"github_push_files",
|
|
59
|
+
"github_create_branch",
|
|
60
|
+
"github_merge_pull_request",
|
|
61
|
+
];
|
|
62
|
+
export const PROFILE_TOOLS = {
|
|
63
|
+
"read": READ_TOOLS,
|
|
64
|
+
"issues-write": ISSUES_WRITE_TOOLS,
|
|
65
|
+
"review-write": REVIEW_WRITE_TOOLS,
|
|
66
|
+
"repo-write": REPO_WRITE_TOOLS,
|
|
67
|
+
};
|
|
68
|
+
export function isGitAccessProfile(s) {
|
|
69
|
+
return s in PROFILE_TOOLS;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/extensions/github/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,UAAU,GAAG;IACjB,uEAAuE;IACvE,yBAAyB;IACzB,YAAY;IACZ,uBAAuB;IACvB,0BAA0B;IAC1B,sBAAsB;IACtB,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,kBAAkB;IAClB,4BAA4B;IAC5B,oBAAoB;IACpB,UAAU;IACV,2BAA2B;IAC3B,yBAAyB;IACzB,gCAAgC;IAChC,8BAA8B;IAC9B,kCAAkC;IAClC,0CAA0C;IAC1C,SAAS;IACT,4BAA4B;IAC5B,sBAAsB;IACtB,oBAAoB;CACZ,CAAC;AAEX,MAAM,kBAAkB,GAAG;IACzB,GAAG,UAAU;IACb,qBAAqB;IACrB,qBAAqB;IACrB,0BAA0B;IAC1B,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;CACb,CAAC;AAEX,MAAM,kBAAkB,GAAG;IACzB,GAAG,kBAAkB;IACrB,4BAA4B;IAC5B,mCAAmC;CAC3B,CAAC;AAEX,MAAM,gBAAgB,GAAG;IACvB,GAAG,kBAAkB;IACrB,mBAAmB;IACnB,8BAA8B;IAC9B,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAgD;IACxE,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,kBAAkB;IAClC,cAAc,EAAE,kBAAkB;IAClC,YAAY,EAAE,gBAAgB;CAC/B,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,CAAC,IAAI,aAAa,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub tools as Pi defineTool() registrations.
|
|
3
|
+
*
|
|
4
|
+
* 1:1 with lastlight/mcp-github-app/src/index.js. Tool names are prefixed
|
|
5
|
+
* with `github_` to match opencode's MCP-server-name prefix convention
|
|
6
|
+
* (lastlight's dashboard shim already maps `github_<tool>` → display name).
|
|
7
|
+
*
|
|
8
|
+
* Each tool returns its JSON payload as a single text content block —
|
|
9
|
+
* matching the MCP server's `jsonResult` helper. Errors are surfaced the
|
|
10
|
+
* same way (an object with `error` / `status` / `transient` / `hint` keys)
|
|
11
|
+
* instead of being thrown, so the agent can recover.
|
|
12
|
+
*/
|
|
13
|
+
import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
14
|
+
import type { GitHubAuth } from "./auth.js";
|
|
15
|
+
/**
|
|
16
|
+
* Build the entire GitHub tool set. Caller filters by profile.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildGitHubTools(auth: GitHubAuth): ToolDefinition<any>[];
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub tools as Pi defineTool() registrations.
|
|
3
|
+
*
|
|
4
|
+
* 1:1 with lastlight/mcp-github-app/src/index.js. Tool names are prefixed
|
|
5
|
+
* with `github_` to match opencode's MCP-server-name prefix convention
|
|
6
|
+
* (lastlight's dashboard shim already maps `github_<tool>` → display name).
|
|
7
|
+
*
|
|
8
|
+
* Each tool returns its JSON payload as a single text content block —
|
|
9
|
+
* matching the MCP server's `jsonResult` helper. Errors are surfaced the
|
|
10
|
+
* same way (an object with `error` / `status` / `transient` / `hint` keys)
|
|
11
|
+
* instead of being thrown, so the agent can recover.
|
|
12
|
+
*/
|
|
13
|
+
import { execFileSync } from "node:child_process";
|
|
14
|
+
import { isAbsolute, join } from "node:path";
|
|
15
|
+
import { Type } from "@sinclair/typebox";
|
|
16
|
+
import { defineTool } from "@earendil-works/pi-coding-agent";
|
|
17
|
+
import { GitHubClient } from "./client.js";
|
|
18
|
+
import { writeCredentialsFile } from "./credentials.js";
|
|
19
|
+
function jsonContent(data) {
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
|
|
22
|
+
details: {},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Wrap a handler so errors become structured JSON results instead of throws.
|
|
27
|
+
* Matches mcp-github-app's `run()` helper exactly.
|
|
28
|
+
*/
|
|
29
|
+
async function safeRun(fn) {
|
|
30
|
+
try {
|
|
31
|
+
return jsonContent(await fn());
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
const e = err;
|
|
35
|
+
const status = e.status || e.response?.status;
|
|
36
|
+
const transientStatuses = [408, 429, 500, 502, 503, 504];
|
|
37
|
+
const isTransient = status !== undefined && transientStatuses.includes(status);
|
|
38
|
+
return jsonContent({
|
|
39
|
+
error: e.message,
|
|
40
|
+
status: status ?? null,
|
|
41
|
+
transient: isTransient,
|
|
42
|
+
hint: isTransient
|
|
43
|
+
? "This is a transient error. The request was retried automatically but still failed. Wait and try again."
|
|
44
|
+
: status === 401
|
|
45
|
+
? "Authentication failed. Call github_refresh_git_auth to get a fresh token."
|
|
46
|
+
: null,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build the entire GitHub tool set. Caller filters by profile.
|
|
52
|
+
*/
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
+
export function buildGitHubTools(auth) {
|
|
55
|
+
const gh = new GitHubClient(auth);
|
|
56
|
+
// Helper to keep the defineTool boilerplate tight.
|
|
57
|
+
const tool = (name, description, parameters, handler) => defineTool({
|
|
58
|
+
name,
|
|
59
|
+
label: name,
|
|
60
|
+
description,
|
|
61
|
+
parameters,
|
|
62
|
+
async execute(_id, params) {
|
|
63
|
+
return safeRun(() => handler(params));
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
return [
|
|
67
|
+
// ── Git Auth ──────────────────────────────────────────────────────
|
|
68
|
+
tool("github_clone_repo", "Clone a repository with GitHub App authentication. Sets up credential helper and bot identity automatically. git push/pull/fetch will just work after cloning.", Type.Object({
|
|
69
|
+
owner: Type.String({ description: "Repository owner" }),
|
|
70
|
+
repo: Type.String({ description: "Repository name" }),
|
|
71
|
+
branch: Type.Optional(Type.String({ description: "Branch to checkout (default: repo default branch)" })),
|
|
72
|
+
path: Type.Optional(Type.String({ description: "Local path to clone into (default: repo name)" })),
|
|
73
|
+
}), async ({ owner, repo, branch, path: clonePath }) => {
|
|
74
|
+
const token = await auth.getToken();
|
|
75
|
+
const baseDir = process.env.LASTLIGHT_WORKSPACE || process.cwd();
|
|
76
|
+
const requested = clonePath || repo;
|
|
77
|
+
const dest = isAbsolute(requested) ? requested : join(baseDir, requested);
|
|
78
|
+
const credPath = writeCredentialsFile(token);
|
|
79
|
+
const url = `https://github.com/${owner}/${repo}.git`;
|
|
80
|
+
const branchArgs = branch ? ["--branch", branch] : [];
|
|
81
|
+
execFileSync("git", ["clone", ...branchArgs, url, dest], {
|
|
82
|
+
stdio: "pipe",
|
|
83
|
+
timeout: 120_000,
|
|
84
|
+
env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
|
|
85
|
+
});
|
|
86
|
+
execFileSync("git", ["-C", dest, "config", "credential.helper", `store --file=${credPath}`], { stdio: "pipe" });
|
|
87
|
+
execFileSync("git", ["-C", dest, "config", "user.name", "last-light[bot]"], { stdio: "pipe" });
|
|
88
|
+
execFileSync("git", ["-C", dest, "config", "user.email", "last-light[bot]@users.noreply.github.com"], { stdio: "pipe" });
|
|
89
|
+
return {
|
|
90
|
+
cloned: `${owner}/${repo}`,
|
|
91
|
+
path: dest,
|
|
92
|
+
credentials_file: credPath,
|
|
93
|
+
branch: branch || "(default)",
|
|
94
|
+
expires_at: auth.expiresAt?.toISOString(),
|
|
95
|
+
};
|
|
96
|
+
}),
|
|
97
|
+
tool("github_refresh_git_auth", "Refresh the GitHub App token for an existing git clone. Call this if git push/pull fails with auth errors. Updates the credential helper with a fresh token.", Type.Object({
|
|
98
|
+
path: Type.String({ description: "Path to the git repository" }),
|
|
99
|
+
}), async ({ path }) => {
|
|
100
|
+
const token = await auth.getToken();
|
|
101
|
+
const credPath = writeCredentialsFile(token);
|
|
102
|
+
return {
|
|
103
|
+
refreshed: true,
|
|
104
|
+
path,
|
|
105
|
+
credentials_file: credPath,
|
|
106
|
+
expires_at: auth.expiresAt?.toISOString(),
|
|
107
|
+
};
|
|
108
|
+
}),
|
|
109
|
+
// ── Repository ────────────────────────────────────────────────────
|
|
110
|
+
tool("github_get_repository", "Get repository metadata", Type.Object({ owner: Type.String(), repo: Type.String() }), ({ owner, repo }) => gh.getRepository(owner, repo)),
|
|
111
|
+
tool("github_get_file_contents", "Get contents of a file or directory from a repository", Type.Object({
|
|
112
|
+
owner: Type.String(),
|
|
113
|
+
repo: Type.String(),
|
|
114
|
+
path: Type.String(),
|
|
115
|
+
branch: Type.Optional(Type.String()),
|
|
116
|
+
}), ({ owner, repo, path, branch }) => gh.getFileContents(owner, repo, path, branch)),
|
|
117
|
+
tool("github_create_or_update_file", "Create or update a single file in a repository", Type.Object({
|
|
118
|
+
owner: Type.String(),
|
|
119
|
+
repo: Type.String(),
|
|
120
|
+
path: Type.String(),
|
|
121
|
+
content: Type.String({ description: "File content" }),
|
|
122
|
+
message: Type.String({ description: "Commit message" }),
|
|
123
|
+
branch: Type.Optional(Type.String()),
|
|
124
|
+
sha: Type.Optional(Type.String({ description: "SHA of file being replaced (for updates)" })),
|
|
125
|
+
}), ({ owner, repo, path, content, message, branch, sha }) => gh.createOrUpdateFile(owner, repo, path, content, message, branch, sha)),
|
|
126
|
+
tool("github_push_files", "Push multiple files in a single commit", Type.Object({
|
|
127
|
+
owner: Type.String(),
|
|
128
|
+
repo: Type.String(),
|
|
129
|
+
branch: Type.String(),
|
|
130
|
+
files: Type.Array(Type.Object({ path: Type.String(), content: Type.String() })),
|
|
131
|
+
message: Type.String(),
|
|
132
|
+
}), ({ owner, repo, branch, files, message }) => gh.pushFiles(owner, repo, branch, files, message)),
|
|
133
|
+
tool("github_list_branches", "List branches in a repository", Type.Object({
|
|
134
|
+
owner: Type.String(),
|
|
135
|
+
repo: Type.String(),
|
|
136
|
+
page: Type.Optional(Type.Number()),
|
|
137
|
+
per_page: Type.Optional(Type.Number()),
|
|
138
|
+
}), ({ owner, repo, page, per_page }) => gh.listBranches(owner, repo, page, per_page)),
|
|
139
|
+
tool("github_create_branch", "Create a new branch from an existing branch", Type.Object({
|
|
140
|
+
owner: Type.String(),
|
|
141
|
+
repo: Type.String(),
|
|
142
|
+
branch: Type.String({ description: "New branch name" }),
|
|
143
|
+
from_branch: Type.String({ description: "Source branch" }),
|
|
144
|
+
}), ({ owner, repo, branch, from_branch }) => gh.createBranch(owner, repo, branch, from_branch)),
|
|
145
|
+
// ── Issues ────────────────────────────────────────────────────────
|
|
146
|
+
tool("github_list_issues", "List open issues in a repository", Type.Object({
|
|
147
|
+
owner: Type.String(),
|
|
148
|
+
repo: Type.String(),
|
|
149
|
+
state: Type.Optional(Type.Union([Type.Literal("open"), Type.Literal("closed"), Type.Literal("all")])),
|
|
150
|
+
labels: Type.Optional(Type.String({ description: "Comma-separated label names" })),
|
|
151
|
+
sort: Type.Optional(Type.Union([Type.Literal("created"), Type.Literal("updated"), Type.Literal("comments")])),
|
|
152
|
+
direction: Type.Optional(Type.Union([Type.Literal("asc"), Type.Literal("desc")])),
|
|
153
|
+
page: Type.Optional(Type.Number()),
|
|
154
|
+
per_page: Type.Optional(Type.Number()),
|
|
155
|
+
}), ({ owner, repo, ...opts }) => gh.listIssues(owner, repo, opts)),
|
|
156
|
+
tool("github_get_issue", "Get a specific issue by number", Type.Object({ owner: Type.String(), repo: Type.String(), issue_number: Type.Number() }), ({ owner, repo, issue_number }) => gh.getIssue(owner, repo, issue_number)),
|
|
157
|
+
tool("github_create_issue", "Create a new issue. Only `owner`, `repo`, and `title` are required; `body` and `labels` are optional. The agent should NOT set milestone or assignees — humans manage those.", Type.Object({
|
|
158
|
+
owner: Type.String(),
|
|
159
|
+
repo: Type.String(),
|
|
160
|
+
title: Type.String(),
|
|
161
|
+
body: Type.Optional(Type.String()),
|
|
162
|
+
labels: Type.Optional(Type.Array(Type.String())),
|
|
163
|
+
}), ({ owner, repo, title, body, ...opts }) => gh.createIssue(owner, repo, title, body, opts)),
|
|
164
|
+
tool("github_update_issue", "Update an existing issue (title, body, state, labels, assignees)", Type.Object({
|
|
165
|
+
owner: Type.String(),
|
|
166
|
+
repo: Type.String(),
|
|
167
|
+
issue_number: Type.Number(),
|
|
168
|
+
title: Type.Optional(Type.String()),
|
|
169
|
+
body: Type.Optional(Type.String()),
|
|
170
|
+
state: Type.Optional(Type.Union([Type.Literal("open"), Type.Literal("closed")])),
|
|
171
|
+
labels: Type.Optional(Type.Array(Type.String())),
|
|
172
|
+
assignees: Type.Optional(Type.Array(Type.String())),
|
|
173
|
+
}), ({ owner, repo, issue_number, ...updates }) => gh.updateIssue(owner, repo, issue_number, updates)),
|
|
174
|
+
tool("github_add_issue_comment", "Add a comment to an issue or pull request", Type.Object({
|
|
175
|
+
owner: Type.String(),
|
|
176
|
+
repo: Type.String(),
|
|
177
|
+
issue_number: Type.Number(),
|
|
178
|
+
body: Type.String(),
|
|
179
|
+
}), ({ owner, repo, issue_number, body }) => gh.addIssueComment(owner, repo, issue_number, body)),
|
|
180
|
+
tool("github_list_issue_comments", "List comments on an issue", Type.Object({
|
|
181
|
+
owner: Type.String(),
|
|
182
|
+
repo: Type.String(),
|
|
183
|
+
issue_number: Type.Number(),
|
|
184
|
+
page: Type.Optional(Type.Number()),
|
|
185
|
+
per_page: Type.Optional(Type.Number()),
|
|
186
|
+
}), ({ owner, repo, issue_number, ...opts }) => gh.listIssueComments(owner, repo, issue_number, opts)),
|
|
187
|
+
tool("github_add_labels", "Add labels to an issue or PR", Type.Object({
|
|
188
|
+
owner: Type.String(),
|
|
189
|
+
repo: Type.String(),
|
|
190
|
+
issue_number: Type.Number(),
|
|
191
|
+
labels: Type.Array(Type.String()),
|
|
192
|
+
}), ({ owner, repo, issue_number, labels }) => gh.addLabels(owner, repo, issue_number, labels)),
|
|
193
|
+
tool("github_remove_label", "Remove a label from an issue or PR", Type.Object({
|
|
194
|
+
owner: Type.String(),
|
|
195
|
+
repo: Type.String(),
|
|
196
|
+
issue_number: Type.Number(),
|
|
197
|
+
name: Type.String(),
|
|
198
|
+
}), ({ owner, repo, issue_number, name }) => gh.removeLabel(owner, repo, issue_number, name)),
|
|
199
|
+
tool("github_list_labels", "List all labels in a repository", Type.Object({ owner: Type.String(), repo: Type.String() }), ({ owner, repo }) => gh.listLabels(owner, repo)),
|
|
200
|
+
tool("github_create_label", "Create a new label in a repository", Type.Object({
|
|
201
|
+
owner: Type.String(),
|
|
202
|
+
repo: Type.String(),
|
|
203
|
+
name: Type.String(),
|
|
204
|
+
color: Type.String({ description: "Hex color without #, e.g. 'ff0000'" }),
|
|
205
|
+
description: Type.Optional(Type.String()),
|
|
206
|
+
}), ({ owner, repo, name, color, description }) => gh.createLabel(owner, repo, name, color, description)),
|
|
207
|
+
// ── Pull Requests ─────────────────────────────────────────────────
|
|
208
|
+
tool("github_list_pull_requests", "List pull requests in a repository", Type.Object({
|
|
209
|
+
owner: Type.String(),
|
|
210
|
+
repo: Type.String(),
|
|
211
|
+
state: Type.Optional(Type.Union([Type.Literal("open"), Type.Literal("closed"), Type.Literal("all")])),
|
|
212
|
+
sort: Type.Optional(Type.Union([
|
|
213
|
+
Type.Literal("created"), Type.Literal("updated"),
|
|
214
|
+
Type.Literal("popularity"), Type.Literal("long-running"),
|
|
215
|
+
])),
|
|
216
|
+
direction: Type.Optional(Type.Union([Type.Literal("asc"), Type.Literal("desc")])),
|
|
217
|
+
head: Type.Optional(Type.String({ description: "Filter by head branch (user:branch)" })),
|
|
218
|
+
base: Type.Optional(Type.String({ description: "Filter by base branch" })),
|
|
219
|
+
page: Type.Optional(Type.Number()),
|
|
220
|
+
per_page: Type.Optional(Type.Number()),
|
|
221
|
+
}), ({ owner, repo, ...opts }) => gh.listPullRequests(owner, repo, opts)),
|
|
222
|
+
tool("github_get_pull_request", "Get a specific pull request by number", Type.Object({ owner: Type.String(), repo: Type.String(), pull_number: Type.Number() }), ({ owner, repo, pull_number }) => gh.getPullRequest(owner, repo, pull_number)),
|
|
223
|
+
tool("github_create_pull_request", "Create a new pull request", Type.Object({
|
|
224
|
+
owner: Type.String(),
|
|
225
|
+
repo: Type.String(),
|
|
226
|
+
title: Type.String(),
|
|
227
|
+
body: Type.Optional(Type.String()),
|
|
228
|
+
head: Type.String({ description: "Branch with changes" }),
|
|
229
|
+
base: Type.String({ description: "Branch to merge into" }),
|
|
230
|
+
}), ({ owner, repo, title, body, head, base }) => gh.createPullRequest(owner, repo, title, body, head, base)),
|
|
231
|
+
tool("github_list_pull_request_files", "List files changed in a pull request", Type.Object({ owner: Type.String(), repo: Type.String(), pull_number: Type.Number() }), ({ owner, repo, pull_number }) => gh.listPullRequestFiles(owner, repo, pull_number)),
|
|
232
|
+
tool("github_get_pull_request_diff", "Get the diff of a pull request", Type.Object({ owner: Type.String(), repo: Type.String(), pull_number: Type.Number() }), ({ owner, repo, pull_number }) => gh.getPullRequestDiff(owner, repo, pull_number)),
|
|
233
|
+
tool("github_list_pull_request_reviews", "List submitted reviews on a pull request (each with state APPROVED/CHANGES_REQUESTED/COMMENTED, reviewer login, body, and commit SHA). Use to check whether the bot has already reviewed this PR.", Type.Object({ owner: Type.String(), repo: Type.String(), pull_number: Type.Number() }), ({ owner, repo, pull_number }) => gh.listPullRequestReviews(owner, repo, pull_number)),
|
|
234
|
+
tool("github_list_pull_request_review_comments", "List line-level review comments on a pull request (each with path, line, body, commit_id, reviewer login). Distinct from issue comments — these are anchored to specific diff lines.", Type.Object({ owner: Type.String(), repo: Type.String(), pull_number: Type.Number() }), ({ owner, repo, pull_number }) => gh.listPullRequestReviewComments(owner, repo, pull_number)),
|
|
235
|
+
tool("github_create_pull_request_review", "Create a review on a pull request", Type.Object({
|
|
236
|
+
owner: Type.String(),
|
|
237
|
+
repo: Type.String(),
|
|
238
|
+
pull_number: Type.Number(),
|
|
239
|
+
body: Type.String({ description: "Review summary" }),
|
|
240
|
+
event: Type.Union([
|
|
241
|
+
Type.Literal("APPROVE"),
|
|
242
|
+
Type.Literal("REQUEST_CHANGES"),
|
|
243
|
+
Type.Literal("COMMENT"),
|
|
244
|
+
]),
|
|
245
|
+
comments: Type.Optional(Type.Array(Type.Object({
|
|
246
|
+
path: Type.String(),
|
|
247
|
+
position: Type.Optional(Type.Number()),
|
|
248
|
+
line: Type.Optional(Type.Number()),
|
|
249
|
+
body: Type.String(),
|
|
250
|
+
}))),
|
|
251
|
+
}), ({ owner, repo, pull_number, body, event, comments }) => gh.createPullRequestReview(owner, repo, pull_number, body, event, comments || [])),
|
|
252
|
+
tool("github_merge_pull_request", "Merge a pull request", Type.Object({
|
|
253
|
+
owner: Type.String(),
|
|
254
|
+
repo: Type.String(),
|
|
255
|
+
pull_number: Type.Number(),
|
|
256
|
+
commit_title: Type.Optional(Type.String()),
|
|
257
|
+
commit_message: Type.Optional(Type.String()),
|
|
258
|
+
merge_method: Type.Optional(Type.Union([
|
|
259
|
+
Type.Literal("merge"), Type.Literal("squash"), Type.Literal("rebase"),
|
|
260
|
+
])),
|
|
261
|
+
}), ({ owner, repo, pull_number, ...opts }) => gh.mergePullRequest(owner, repo, pull_number, opts)),
|
|
262
|
+
// ── Commits ───────────────────────────────────────────────────────
|
|
263
|
+
tool("github_list_commits", "List commits on a repository or branch", Type.Object({
|
|
264
|
+
owner: Type.String(),
|
|
265
|
+
repo: Type.String(),
|
|
266
|
+
sha: Type.Optional(Type.String({ description: "Branch name or commit SHA" })),
|
|
267
|
+
path: Type.Optional(Type.String({ description: "Only commits touching this path" })),
|
|
268
|
+
page: Type.Optional(Type.Number()),
|
|
269
|
+
per_page: Type.Optional(Type.Number()),
|
|
270
|
+
}), ({ owner, repo, ...opts }) => gh.listCommits(owner, repo, opts)),
|
|
271
|
+
// ── Search ────────────────────────────────────────────────────────
|
|
272
|
+
tool("github_search_repositories", "Search for GitHub repositories", Type.Object({
|
|
273
|
+
query: Type.String(),
|
|
274
|
+
page: Type.Optional(Type.Number()),
|
|
275
|
+
per_page: Type.Optional(Type.Number()),
|
|
276
|
+
}), ({ query, page, per_page }) => gh.searchRepositories(query, page, per_page)),
|
|
277
|
+
tool("github_search_issues", "Search issues and pull requests across repositories", Type.Object({
|
|
278
|
+
query: Type.String({ description: "GitHub search query (e.g. 'repo:owner/name is:open label:bug')" }),
|
|
279
|
+
page: Type.Optional(Type.Number()),
|
|
280
|
+
per_page: Type.Optional(Type.Number()),
|
|
281
|
+
}), ({ query, page, per_page }) => gh.searchIssues(query, page, per_page)),
|
|
282
|
+
tool("github_search_code", "Search code across repositories", Type.Object({
|
|
283
|
+
query: Type.String({ description: "GitHub code search query" }),
|
|
284
|
+
page: Type.Optional(Type.Number()),
|
|
285
|
+
per_page: Type.Optional(Type.Number()),
|
|
286
|
+
}), ({ query, page, per_page }) => gh.searchCode(query, page, per_page)),
|
|
287
|
+
];
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/extensions/github/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public library API.
|
|
3
|
+
*
|
|
4
|
+
* Two entry points:
|
|
5
|
+
*
|
|
6
|
+
* - `run(options)` — recommended. Runs agentic-pi in-process and returns
|
|
7
|
+
* a structured `RunResult`. Never touches `process.stdout` or `stderr`.
|
|
8
|
+
*
|
|
9
|
+
* - `runOnce(config, prompt, deps)` — lower-level. Use when you need the
|
|
10
|
+
* raw exit-code semantics of the CLI but want to supply your own sink
|
|
11
|
+
* (e.g. a writable stream).
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { run } from "agentic-pi";
|
|
16
|
+
*
|
|
17
|
+
* const result = await run({
|
|
18
|
+
* model: "anthropic/claude-haiku-4-5",
|
|
19
|
+
* prompt: "list the open PRs on owner/repo",
|
|
20
|
+
* profile: "read",
|
|
21
|
+
* noSession: true,
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* if (!result.ok) throw new Error(result.fatalError?.message ?? "agent failed");
|
|
25
|
+
* console.log(result.finalText);
|
|
26
|
+
* console.log("cost", result.stats?.cost);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export { run } from "./run.js";
|
|
30
|
+
export type { RunOptions, RunResult, ThinkingLevel } from "./run.js";
|
|
31
|
+
export { runOnce } from "./runner.js";
|
|
32
|
+
export type { RunOnceDeps, RunOnceExitCode } from "./runner.js";
|
|
33
|
+
export { parseArgs } from "./args.js";
|
|
34
|
+
export type { RunConfig } from "./args.js";
|
|
35
|
+
export { Emitter, StdoutSink, CollectorSink, TeeSink, } from "./emitter.js";
|
|
36
|
+
export type { EmitterSink, EmitterRecord, EmitterContext } from "./emitter.js";
|
|
37
|
+
export { isGitAccessProfile } from "./extensions/github/index.js";
|
|
38
|
+
export type { GitAccessProfile } from "./extensions/github/index.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public library API.
|
|
3
|
+
*
|
|
4
|
+
* Two entry points:
|
|
5
|
+
*
|
|
6
|
+
* - `run(options)` — recommended. Runs agentic-pi in-process and returns
|
|
7
|
+
* a structured `RunResult`. Never touches `process.stdout` or `stderr`.
|
|
8
|
+
*
|
|
9
|
+
* - `runOnce(config, prompt, deps)` — lower-level. Use when you need the
|
|
10
|
+
* raw exit-code semantics of the CLI but want to supply your own sink
|
|
11
|
+
* (e.g. a writable stream).
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { run } from "agentic-pi";
|
|
16
|
+
*
|
|
17
|
+
* const result = await run({
|
|
18
|
+
* model: "anthropic/claude-haiku-4-5",
|
|
19
|
+
* prompt: "list the open PRs on owner/repo",
|
|
20
|
+
* profile: "read",
|
|
21
|
+
* noSession: true,
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* if (!result.ok) throw new Error(result.fatalError?.message ?? "agent failed");
|
|
25
|
+
* console.log(result.finalText);
|
|
26
|
+
* console.log("cost", result.stats?.cost);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export { run } from "./run.js";
|
|
30
|
+
export { runOnce } from "./runner.js";
|
|
31
|
+
export { parseArgs } from "./args.js";
|
|
32
|
+
export { Emitter, StdoutSink, CollectorSink, TeeSink, } from "./emitter.js";
|
|
33
|
+
export { isGitAccessProfile } from "./extensions/github/index.js";
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EACL,OAAO,EACP,UAAU,EACV,aAAa,EACb,OAAO,GACR,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/models.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a "provider/model_id" string to a Pi Model object.
|
|
3
|
+
*
|
|
4
|
+
* Falls back to the ModelRegistry for custom models when a provider/id is not
|
|
5
|
+
* recognised by the built-in registry.
|
|
6
|
+
*/
|
|
7
|
+
import type { Model } from "@earendil-works/pi-ai";
|
|
8
|
+
import { ModelRegistry } from "@earendil-works/pi-coding-agent";
|
|
9
|
+
export declare function parseModelSpec(spec: string): {
|
|
10
|
+
provider: string;
|
|
11
|
+
modelId: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function resolveModel(spec: string, registry: ModelRegistry): Model<any>;
|
package/dist/models.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a "provider/model_id" string to a Pi Model object.
|
|
3
|
+
*
|
|
4
|
+
* Falls back to the ModelRegistry for custom models when a provider/id is not
|
|
5
|
+
* recognised by the built-in registry.
|
|
6
|
+
*/
|
|
7
|
+
import { getModel } from "@earendil-works/pi-ai";
|
|
8
|
+
export function parseModelSpec(spec) {
|
|
9
|
+
const idx = spec.indexOf("/");
|
|
10
|
+
if (idx < 0)
|
|
11
|
+
throw new Error(`model spec must be 'provider/id', got '${spec}'`);
|
|
12
|
+
const provider = spec.slice(0, idx);
|
|
13
|
+
const modelId = spec.slice(idx + 1);
|
|
14
|
+
if (!provider || !modelId) {
|
|
15
|
+
throw new Error(`model spec must be 'provider/id', got '${spec}'`);
|
|
16
|
+
}
|
|
17
|
+
return { provider, modelId };
|
|
18
|
+
}
|
|
19
|
+
export function resolveModel(spec, registry) {
|
|
20
|
+
const { provider, modelId } = parseModelSpec(spec);
|
|
21
|
+
// The types of getModel are narrow keyof MODELS — runtime accepts strings.
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
const builtin = getModel(provider, modelId);
|
|
24
|
+
if (builtin)
|
|
25
|
+
return builtin;
|
|
26
|
+
const custom = registry.find(provider, modelId);
|
|
27
|
+
if (custom)
|
|
28
|
+
return custom;
|
|
29
|
+
throw new Error(`unknown model: ${spec}`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAuB;IAChE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEnD,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,OAAO,GAAI,QAAwE,CACvF,QAAQ,EACR,OAAO,CACR,CAAC;IACF,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC"}
|