@agentrysh/mcp 0.0.1
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/LICENSE +21 -0
- package/README.md +41 -0
- package/dist/api.d.ts +227 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +220 -0
- package/dist/api.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/memory.d.ts +24 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +99 -0
- package/dist/memory.js.map +1 -0
- package/dist/onboarding.d.ts +10 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +46 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/tools.d.ts +16 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +1906 -0
- package/dist/tools.js.map +1 -0
- package/package.json +59 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Henrik Harju
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# @agentrysh/mcp
|
|
2
|
+
|
|
3
|
+
The canonical agentry entry point. Drop it into Claude Code, Cursor or any MCP-compatible AI and your assistant can read your app's errors, analytics and deploys directly — no dashboard, no docs, no query language to learn.
|
|
4
|
+
|
|
5
|
+
## Install (Claude Code)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
claude mcp add agentry -- npx -y @agentrysh/mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Then in your session:
|
|
12
|
+
|
|
13
|
+
> set me up with agentry
|
|
14
|
+
|
|
15
|
+
The agent will walk you through the GitHub device-flow login, mint an API key, create an agentry project, and hand you a paste-ready snippet for your app.
|
|
16
|
+
|
|
17
|
+
## What you get
|
|
18
|
+
|
|
19
|
+
Once installed, your AI assistant can:
|
|
20
|
+
|
|
21
|
+
- **Read errors** — `agentry_list_cases`, `agentry_get_case` (with stack, breadcrumbs, deploy attribution)
|
|
22
|
+
- **Run named queries** — `agentry_run_recipe` (14 canonical queries: DAU, funnels, retention, top errors, deploy health, weekly digest)
|
|
23
|
+
- **Ask anything in HogQL** — `agentry_analytics_query`
|
|
24
|
+
- **Send events** — `agentry_capture_test_event`, `agentry_record_deploy`, `agentry_track_test_event`
|
|
25
|
+
- **Manage suppressions, webhooks, alerts** — full CRUD on the QoL layer
|
|
26
|
+
|
|
27
|
+
## What agentry is
|
|
28
|
+
|
|
29
|
+
A small, agent-first observability backend. Three HTTP endpoints, one DSN:
|
|
30
|
+
|
|
31
|
+
- `POST /v1/logs/{project_id}/`
|
|
32
|
+
- `POST /v1/analytics/{project_id}/`
|
|
33
|
+
- `POST /v1/deploys/{project_id}/`
|
|
34
|
+
|
|
35
|
+
Send JSON. Your AI does the rest.
|
|
36
|
+
|
|
37
|
+
See [agentry.sh](https://agentry.sh) for the full pitch.
|
|
38
|
+
|
|
39
|
+
## License
|
|
40
|
+
|
|
41
|
+
MIT
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import type { AgentryConfig, CaseDetail, CaseStatus, CaseSummary, IngestEventPayload, RecordAgentRunRequest, RecordSuppressionRequest } from "@agentrysh/shared";
|
|
2
|
+
export interface ApiError extends Error {
|
|
3
|
+
status: number;
|
|
4
|
+
code: string;
|
|
5
|
+
next_action?: string;
|
|
6
|
+
details?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface LoginResponse {
|
|
9
|
+
status: "ok";
|
|
10
|
+
api_key: string;
|
|
11
|
+
user_id: string;
|
|
12
|
+
prefix: string;
|
|
13
|
+
github?: {
|
|
14
|
+
id: number;
|
|
15
|
+
username: string;
|
|
16
|
+
email: string | null;
|
|
17
|
+
avatar_url: string | null;
|
|
18
|
+
};
|
|
19
|
+
next_action?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DeviceStartResponse {
|
|
22
|
+
device_code: string;
|
|
23
|
+
user_code: string;
|
|
24
|
+
verification_uri: string;
|
|
25
|
+
expires_in: number;
|
|
26
|
+
interval: number;
|
|
27
|
+
next_action?: string;
|
|
28
|
+
}
|
|
29
|
+
export type DevicePollResponse = LoginResponse | {
|
|
30
|
+
status: "pending";
|
|
31
|
+
next_action?: string;
|
|
32
|
+
} | {
|
|
33
|
+
status: "slow_down";
|
|
34
|
+
next_action?: string;
|
|
35
|
+
} | {
|
|
36
|
+
status: "expired";
|
|
37
|
+
next_action?: string;
|
|
38
|
+
} | {
|
|
39
|
+
status: "denied";
|
|
40
|
+
next_action?: string;
|
|
41
|
+
};
|
|
42
|
+
export interface ProjectSummary {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
repo_url: string | null;
|
|
46
|
+
default_branch: string;
|
|
47
|
+
created_at: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ProjectDetail extends ProjectSummary {
|
|
50
|
+
dsn?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface CreateProjectResponse {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
dsn: string;
|
|
56
|
+
sentry_dsn_url?: string;
|
|
57
|
+
logs_url?: string;
|
|
58
|
+
analytics_url?: string;
|
|
59
|
+
deploys_url?: string;
|
|
60
|
+
default_branch?: string;
|
|
61
|
+
install_snippet?: string;
|
|
62
|
+
next_action?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface InstallSnippet {
|
|
65
|
+
language: string;
|
|
66
|
+
code: string;
|
|
67
|
+
env_vars: Record<string, string>;
|
|
68
|
+
}
|
|
69
|
+
interface FetchOpts {
|
|
70
|
+
method?: string;
|
|
71
|
+
body?: unknown;
|
|
72
|
+
dsnAuth?: string;
|
|
73
|
+
skipAuth?: boolean;
|
|
74
|
+
absoluteUrl?: string;
|
|
75
|
+
}
|
|
76
|
+
export declare function apiFetch<T>(cfg: AgentryConfig, pathOrUrl: string, opts?: FetchOpts): Promise<T>;
|
|
77
|
+
export declare const api: {
|
|
78
|
+
startDeviceFlow(cfg: AgentryConfig): Promise<DeviceStartResponse>;
|
|
79
|
+
pollDeviceFlow(cfg: AgentryConfig, deviceCode: string): Promise<DevicePollResponse>;
|
|
80
|
+
testLogin(cfg: AgentryConfig, email: string): Promise<LoginResponse>;
|
|
81
|
+
rotateKey(cfg: AgentryConfig): Promise<LoginResponse>;
|
|
82
|
+
listProjects(cfg: AgentryConfig): Promise<{
|
|
83
|
+
projects: ProjectSummary[];
|
|
84
|
+
}>;
|
|
85
|
+
createProject(cfg: AgentryConfig, body: {
|
|
86
|
+
name: string;
|
|
87
|
+
repo_url?: string;
|
|
88
|
+
default_branch?: string;
|
|
89
|
+
local_path?: string;
|
|
90
|
+
}): Promise<CreateProjectResponse>;
|
|
91
|
+
getProject(cfg: AgentryConfig, id: string): Promise<ProjectDetail>;
|
|
92
|
+
listCases(cfg: AgentryConfig, projectId: string, status?: CaseStatus): Promise<{
|
|
93
|
+
cases: CaseSummary[];
|
|
94
|
+
}>;
|
|
95
|
+
getCase(cfg: AgentryConfig, caseId: string): Promise<CaseDetail>;
|
|
96
|
+
updateCase(cfg: AgentryConfig, caseId: string, body: {
|
|
97
|
+
status?: CaseStatus;
|
|
98
|
+
agent_summary?: string;
|
|
99
|
+
pr_url?: string;
|
|
100
|
+
}): Promise<CaseDetail>;
|
|
101
|
+
recordAgentRun(cfg: AgentryConfig, caseId: string, body: Omit<RecordAgentRunRequest, "case_id">): Promise<{
|
|
102
|
+
id: string;
|
|
103
|
+
}>;
|
|
104
|
+
recordSuppression(cfg: AgentryConfig, projectId: string, body: RecordSuppressionRequest): Promise<{
|
|
105
|
+
id: string;
|
|
106
|
+
}>;
|
|
107
|
+
getInstallSnippet(cfg: AgentryConfig, language: string): Promise<InstallSnippet>;
|
|
108
|
+
storeEvent(cfg: AgentryConfig, projectId: string, publicKey: string, event: IngestEventPayload): Promise<{
|
|
109
|
+
id: string;
|
|
110
|
+
case_id?: string;
|
|
111
|
+
}>;
|
|
112
|
+
recordDeploy(cfg: AgentryConfig, projectId: string, publicKey: string, body: {
|
|
113
|
+
sha: string;
|
|
114
|
+
branch?: string;
|
|
115
|
+
environment?: string;
|
|
116
|
+
message?: string;
|
|
117
|
+
url?: string;
|
|
118
|
+
actor?: string;
|
|
119
|
+
}): Promise<{
|
|
120
|
+
id: string;
|
|
121
|
+
received_at: number;
|
|
122
|
+
}>;
|
|
123
|
+
listDeploys(cfg: AgentryConfig, projectId: string, opts?: {
|
|
124
|
+
limit?: number;
|
|
125
|
+
since?: number;
|
|
126
|
+
}): Promise<{
|
|
127
|
+
deploys: Array<Record<string, unknown>>;
|
|
128
|
+
}>;
|
|
129
|
+
trackEvent(cfg: AgentryConfig, projectId: string, publicKey: string, body: {
|
|
130
|
+
event: string;
|
|
131
|
+
distinct_id?: string;
|
|
132
|
+
properties?: Record<string, unknown>;
|
|
133
|
+
}): Promise<{
|
|
134
|
+
ok: boolean;
|
|
135
|
+
}>;
|
|
136
|
+
analyticsQuery(cfg: AgentryConfig, projectId: string, query: string): Promise<{
|
|
137
|
+
results: unknown[];
|
|
138
|
+
columns: string[] | null;
|
|
139
|
+
types: string[] | null;
|
|
140
|
+
}>;
|
|
141
|
+
getInstallGuide(cfg: AgentryConfig, framework: string): Promise<InstallGuide>;
|
|
142
|
+
listRecipes(cfg: AgentryConfig, category?: string): Promise<{
|
|
143
|
+
count: number;
|
|
144
|
+
categories: string[];
|
|
145
|
+
recipes: Array<Record<string, unknown>>;
|
|
146
|
+
}>;
|
|
147
|
+
getRecipe(cfg: AgentryConfig, id: string): Promise<Record<string, unknown>>;
|
|
148
|
+
runRecipe(cfg: AgentryConfig, projectId: string, recipeId: string, params: Record<string, unknown>): Promise<{
|
|
149
|
+
recipe_id: string;
|
|
150
|
+
title: string;
|
|
151
|
+
backend: "analytics" | "cases";
|
|
152
|
+
rows: Array<Record<string, unknown>>;
|
|
153
|
+
columns: string[];
|
|
154
|
+
render_hint: Record<string, unknown>;
|
|
155
|
+
next_action: string;
|
|
156
|
+
}>;
|
|
157
|
+
getQueryDocs(cfg: AgentryConfig): Promise<string>;
|
|
158
|
+
getNextSteps(cfg: AgentryConfig, projectId: string): Promise<{
|
|
159
|
+
project_state: Record<string, boolean>;
|
|
160
|
+
count: number;
|
|
161
|
+
suggestions: Array<Record<string, unknown>>;
|
|
162
|
+
}>;
|
|
163
|
+
registerWebhook(cfg: AgentryConfig, projectId: string, body: {
|
|
164
|
+
url: string;
|
|
165
|
+
events?: string[];
|
|
166
|
+
description?: string;
|
|
167
|
+
}): Promise<{
|
|
168
|
+
id: string;
|
|
169
|
+
url: string;
|
|
170
|
+
events: string[];
|
|
171
|
+
signing_secret: string;
|
|
172
|
+
signing_secret_prefix: string;
|
|
173
|
+
next_action: string;
|
|
174
|
+
}>;
|
|
175
|
+
listWebhooks(cfg: AgentryConfig, projectId: string): Promise<{
|
|
176
|
+
webhooks: Array<Record<string, unknown>>;
|
|
177
|
+
}>;
|
|
178
|
+
deleteWebhook(cfg: AgentryConfig, projectId: string, id: string): Promise<{
|
|
179
|
+
ok: boolean;
|
|
180
|
+
}>;
|
|
181
|
+
testWebhook(cfg: AgentryConfig, projectId: string, id: string): Promise<{
|
|
182
|
+
ok: boolean;
|
|
183
|
+
}>;
|
|
184
|
+
getAutomationDocs(cfg: AgentryConfig): Promise<string>;
|
|
185
|
+
getProjectHealth(cfg: AgentryConfig, projectId: string): Promise<Record<string, unknown>>;
|
|
186
|
+
createAlert(cfg: AgentryConfig, projectId: string, body: {
|
|
187
|
+
name: string;
|
|
188
|
+
recipe_id: string;
|
|
189
|
+
threshold_column: string;
|
|
190
|
+
threshold_op: string;
|
|
191
|
+
threshold_value: number | string;
|
|
192
|
+
params?: Record<string, unknown>;
|
|
193
|
+
description?: string;
|
|
194
|
+
webhook_id?: string;
|
|
195
|
+
}): Promise<{
|
|
196
|
+
id: string;
|
|
197
|
+
name: string;
|
|
198
|
+
recipe_id: string;
|
|
199
|
+
}>;
|
|
200
|
+
listAlerts(cfg: AgentryConfig, projectId: string): Promise<{
|
|
201
|
+
alerts: Array<Record<string, unknown>>;
|
|
202
|
+
}>;
|
|
203
|
+
deleteAlert(cfg: AgentryConfig, projectId: string, id: string): Promise<{
|
|
204
|
+
ok: boolean;
|
|
205
|
+
}>;
|
|
206
|
+
evaluateAlert(cfg: AgentryConfig, projectId: string, id: string): Promise<Record<string, unknown>>;
|
|
207
|
+
};
|
|
208
|
+
export interface InstallGuideStep {
|
|
209
|
+
id: string;
|
|
210
|
+
title: string;
|
|
211
|
+
why: string;
|
|
212
|
+
action: "run" | "edit" | "verify" | "manual";
|
|
213
|
+
file_hint?: string;
|
|
214
|
+
command?: string;
|
|
215
|
+
code?: string;
|
|
216
|
+
validate: string;
|
|
217
|
+
}
|
|
218
|
+
export interface InstallGuide {
|
|
219
|
+
framework: string;
|
|
220
|
+
signal_types: string[];
|
|
221
|
+
steps: InstallGuideStep[];
|
|
222
|
+
pitfalls: string[];
|
|
223
|
+
signal_health_principles: string[];
|
|
224
|
+
next_action: string;
|
|
225
|
+
}
|
|
226
|
+
export {};
|
|
227
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// Thin HTTP client for the agentry API.
|
|
2
|
+
// All errors propagate the structured `next_action` field so the MCP layer can
|
|
3
|
+
// surface it back to the calling agent verbatim.
|
|
4
|
+
function buildError(status, body) {
|
|
5
|
+
const b = (body ?? {});
|
|
6
|
+
const inner = b.error ?? {};
|
|
7
|
+
const err = new Error(inner.message ?? `HTTP ${status}`);
|
|
8
|
+
err.status = status;
|
|
9
|
+
err.code = inner.code ?? `http_${status}`;
|
|
10
|
+
if (inner.next_action)
|
|
11
|
+
err.next_action = inner.next_action;
|
|
12
|
+
if (inner.details)
|
|
13
|
+
err.details = inner.details;
|
|
14
|
+
return err;
|
|
15
|
+
}
|
|
16
|
+
export async function apiFetch(cfg, pathOrUrl, opts = {}) {
|
|
17
|
+
const url = opts.absoluteUrl ?? `${cfg.server_url.replace(/\/$/, "")}${pathOrUrl}`;
|
|
18
|
+
const headers = {
|
|
19
|
+
"content-type": "application/json",
|
|
20
|
+
"user-agent": "agentry-mcp/0.0.1",
|
|
21
|
+
};
|
|
22
|
+
if (!opts.skipAuth) {
|
|
23
|
+
if (opts.dsnAuth) {
|
|
24
|
+
headers["x-sentry-auth"] =
|
|
25
|
+
`Sentry sentry_version=7, sentry_key=${opts.dsnAuth}, sentry_client=agentry-mcp/0.0.1`;
|
|
26
|
+
}
|
|
27
|
+
else if (cfg.api_key) {
|
|
28
|
+
headers["authorization"] = `Bearer ${cfg.api_key}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const res = await fetch(url, {
|
|
32
|
+
method: opts.method ?? (opts.body ? "POST" : "GET"),
|
|
33
|
+
headers,
|
|
34
|
+
body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,
|
|
35
|
+
});
|
|
36
|
+
const text = await res.text();
|
|
37
|
+
let parsed = undefined;
|
|
38
|
+
if (text) {
|
|
39
|
+
try {
|
|
40
|
+
parsed = JSON.parse(text);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// non-JSON body — leave undefined
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!res.ok)
|
|
47
|
+
throw buildError(res.status, parsed);
|
|
48
|
+
return parsed;
|
|
49
|
+
}
|
|
50
|
+
// Endpoint helpers — keeping the shape narrow so it's obvious from a single
|
|
51
|
+
// reading which routes the MCP server depends on.
|
|
52
|
+
export const api = {
|
|
53
|
+
startDeviceFlow(cfg) {
|
|
54
|
+
return apiFetch(cfg, "/v1/auth/device", {
|
|
55
|
+
method: "POST",
|
|
56
|
+
body: {},
|
|
57
|
+
skipAuth: true,
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
pollDeviceFlow(cfg, deviceCode) {
|
|
61
|
+
return apiFetch(cfg, "/v1/auth/device/poll", {
|
|
62
|
+
method: "POST",
|
|
63
|
+
body: { device_code: deviceCode },
|
|
64
|
+
skipAuth: true,
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
testLogin(cfg, email) {
|
|
68
|
+
return apiFetch(cfg, "/v1/auth/_test/login", {
|
|
69
|
+
method: "POST",
|
|
70
|
+
body: { email },
|
|
71
|
+
skipAuth: true,
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
rotateKey(cfg) {
|
|
75
|
+
return apiFetch(cfg, "/v1/auth/keys/rotate", {
|
|
76
|
+
method: "POST",
|
|
77
|
+
body: {},
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
listProjects(cfg) {
|
|
81
|
+
return apiFetch(cfg, "/v1/projects");
|
|
82
|
+
},
|
|
83
|
+
createProject(cfg, body) {
|
|
84
|
+
return apiFetch(cfg, "/v1/projects", { body });
|
|
85
|
+
},
|
|
86
|
+
getProject(cfg, id) {
|
|
87
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(id)}`);
|
|
88
|
+
},
|
|
89
|
+
listCases(cfg, projectId, status) {
|
|
90
|
+
const qs = status ? `?status=${encodeURIComponent(status)}` : "";
|
|
91
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/cases${qs}`);
|
|
92
|
+
},
|
|
93
|
+
getCase(cfg, caseId) {
|
|
94
|
+
return apiFetch(cfg, `/v1/cases/${encodeURIComponent(caseId)}`);
|
|
95
|
+
},
|
|
96
|
+
updateCase(cfg, caseId, body) {
|
|
97
|
+
return apiFetch(cfg, `/v1/cases/${encodeURIComponent(caseId)}`, {
|
|
98
|
+
method: "PATCH",
|
|
99
|
+
body,
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
recordAgentRun(cfg, caseId, body) {
|
|
103
|
+
return apiFetch(cfg, `/v1/cases/${encodeURIComponent(caseId)}/runs`, { body });
|
|
104
|
+
},
|
|
105
|
+
recordSuppression(cfg, projectId, body) {
|
|
106
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/suppressions`, { body });
|
|
107
|
+
},
|
|
108
|
+
getInstallSnippet(cfg, language) {
|
|
109
|
+
return apiFetch(cfg, `/v1/install/sdk/${encodeURIComponent(language)}`, { skipAuth: true });
|
|
110
|
+
},
|
|
111
|
+
// Log ingest. A log with name/message/stack (or a Sentry-shape exception)
|
|
112
|
+
// gets fingerprinted and rolled into a Case. Uses DSN as auth (Bearer or
|
|
113
|
+
// x-sentry-auth header). /v1/store/ remains as a Sentry-protocol drop-in.
|
|
114
|
+
storeEvent(cfg, projectId, publicKey, event) {
|
|
115
|
+
return apiFetch(cfg, "", {
|
|
116
|
+
absoluteUrl: `${cfg.server_url.replace(/\/$/, "")}/v1/logs/${encodeURIComponent(projectId)}/`,
|
|
117
|
+
method: "POST",
|
|
118
|
+
body: event,
|
|
119
|
+
dsnAuth: publicKey,
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
// Deploys: ingest with DSN auth, list with API-key auth.
|
|
123
|
+
recordDeploy(cfg, projectId, publicKey, body) {
|
|
124
|
+
return apiFetch(cfg, "", {
|
|
125
|
+
absoluteUrl: `${cfg.server_url.replace(/\/$/, "")}/v1/deploys/${encodeURIComponent(projectId)}/`,
|
|
126
|
+
method: "POST",
|
|
127
|
+
body,
|
|
128
|
+
dsnAuth: publicKey,
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
listDeploys(cfg, projectId, opts) {
|
|
132
|
+
const qs = [
|
|
133
|
+
opts?.limit ? `limit=${encodeURIComponent(opts.limit)}` : null,
|
|
134
|
+
opts?.since ? `since=${encodeURIComponent(opts.since)}` : null,
|
|
135
|
+
].filter(Boolean).join("&");
|
|
136
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/deploys${qs ? "?" + qs : ""}`);
|
|
137
|
+
},
|
|
138
|
+
// Analytics: forward an event (DSN-auth, hits PostHog via the agentry proxy).
|
|
139
|
+
// First-party path is /v1/analytics/; /v1/track/ remains a PostHog-shaped alias.
|
|
140
|
+
trackEvent(cfg, projectId, publicKey, body) {
|
|
141
|
+
return apiFetch(cfg, "", {
|
|
142
|
+
absoluteUrl: `${cfg.server_url.replace(/\/$/, "")}/v1/analytics/${encodeURIComponent(projectId)}/`,
|
|
143
|
+
method: "POST",
|
|
144
|
+
body,
|
|
145
|
+
dsnAuth: publicKey,
|
|
146
|
+
});
|
|
147
|
+
},
|
|
148
|
+
// Analytics queries (HogQL passthrough, api-key auth).
|
|
149
|
+
analyticsQuery(cfg, projectId, query) {
|
|
150
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/analytics/query`, { method: "POST", body: { query } });
|
|
151
|
+
},
|
|
152
|
+
// Comprehensive install guide.
|
|
153
|
+
getInstallGuide(cfg, framework) {
|
|
154
|
+
return apiFetch(cfg, `/v1/install/guide?framework=${encodeURIComponent(framework)}`, { skipAuth: true });
|
|
155
|
+
},
|
|
156
|
+
listRecipes(cfg, category) {
|
|
157
|
+
const qs = category ? `?category=${encodeURIComponent(category)}` : "";
|
|
158
|
+
return apiFetch(cfg, `/v1/recipes${qs}`, { skipAuth: true });
|
|
159
|
+
},
|
|
160
|
+
getRecipe(cfg, id) {
|
|
161
|
+
return apiFetch(cfg, `/v1/recipes/${encodeURIComponent(id)}`, { skipAuth: true });
|
|
162
|
+
},
|
|
163
|
+
runRecipe(cfg, projectId, recipeId, params) {
|
|
164
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/recipes/${encodeURIComponent(recipeId)}/run`, { method: "POST", body: { params } });
|
|
165
|
+
},
|
|
166
|
+
getQueryDocs(cfg) {
|
|
167
|
+
// Returns markdown text directly.
|
|
168
|
+
const url = `${cfg.server_url.replace(/\/$/, "")}/v1/docs/query`;
|
|
169
|
+
return fetch(url).then(async (res) => {
|
|
170
|
+
if (!res.ok)
|
|
171
|
+
throw new Error(`docs fetch ${res.status}`);
|
|
172
|
+
return res.text();
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
getNextSteps(cfg, projectId) {
|
|
176
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/next-steps`);
|
|
177
|
+
},
|
|
178
|
+
// Webhooks
|
|
179
|
+
registerWebhook(cfg, projectId, body) {
|
|
180
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/webhooks`, { method: "POST", body });
|
|
181
|
+
},
|
|
182
|
+
listWebhooks(cfg, projectId) {
|
|
183
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/webhooks`);
|
|
184
|
+
},
|
|
185
|
+
deleteWebhook(cfg, projectId, id) {
|
|
186
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/webhooks/${encodeURIComponent(id)}`, { method: "DELETE" });
|
|
187
|
+
},
|
|
188
|
+
testWebhook(cfg, projectId, id) {
|
|
189
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/webhooks/${encodeURIComponent(id)}/test`, { method: "POST", body: {} });
|
|
190
|
+
},
|
|
191
|
+
getAutomationDocs(cfg) {
|
|
192
|
+
const url = `${cfg.server_url.replace(/\/$/, "")}/v1/docs/automation`;
|
|
193
|
+
return fetch(url).then(async (res) => {
|
|
194
|
+
if (!res.ok)
|
|
195
|
+
throw new Error(`docs fetch ${res.status}`);
|
|
196
|
+
return res.text();
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
// Project health
|
|
200
|
+
getProjectHealth(cfg, projectId) {
|
|
201
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/health`);
|
|
202
|
+
},
|
|
203
|
+
// Alerts
|
|
204
|
+
createAlert(cfg, projectId, body) {
|
|
205
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/alerts`, {
|
|
206
|
+
method: "POST",
|
|
207
|
+
body,
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
listAlerts(cfg, projectId) {
|
|
211
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/alerts`);
|
|
212
|
+
},
|
|
213
|
+
deleteAlert(cfg, projectId, id) {
|
|
214
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/alerts/${encodeURIComponent(id)}`, { method: "DELETE" });
|
|
215
|
+
},
|
|
216
|
+
evaluateAlert(cfg, projectId, id) {
|
|
217
|
+
return apiFetch(cfg, `/v1/projects/${encodeURIComponent(projectId)}/alerts/${encodeURIComponent(id)}/evaluate`, { method: "POST", body: {} });
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentryConfig } from "@agentrysh/shared";
|
|
2
|
+
export declare function getConfigPath(): string;
|
|
3
|
+
export declare function defaultConfig(): AgentryConfig;
|
|
4
|
+
export declare function loadConfig(): AgentryConfig;
|
|
5
|
+
export declare function saveConfig(cfg: AgentryConfig): void;
|
|
6
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,aAAa,IAAI,aAAa,CAO7C;AAED,wBAAgB,UAAU,IAAI,aAAa,CAqB1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAkBnD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Local config persistence for the MCP server.
|
|
2
|
+
// Stored at ~/.agentry/config.json (or AGENTRY_CONFIG_PATH if set).
|
|
3
|
+
// Atomic write (tmp + rename), chmod 600 to keep API keys off the prying eyes.
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as os from "node:os";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
const DEFAULT_SERVER_URL = "https://agentry-api.henrikh.workers.dev";
|
|
8
|
+
export function getConfigPath() {
|
|
9
|
+
if (process.env.AGENTRY_CONFIG_PATH)
|
|
10
|
+
return process.env.AGENTRY_CONFIG_PATH;
|
|
11
|
+
return path.join(os.homedir(), ".agentry", "config.json");
|
|
12
|
+
}
|
|
13
|
+
export function defaultConfig() {
|
|
14
|
+
return {
|
|
15
|
+
server_url: process.env.AGENTRY_SERVER_URL ?? DEFAULT_SERVER_URL,
|
|
16
|
+
api_key: null,
|
|
17
|
+
default_project_id: null,
|
|
18
|
+
projects: {},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function loadConfig() {
|
|
22
|
+
const file = getConfigPath();
|
|
23
|
+
try {
|
|
24
|
+
const raw = fs.readFileSync(file, "utf8");
|
|
25
|
+
const parsed = JSON.parse(raw);
|
|
26
|
+
// Merge with defaults — gracefully handle older config shapes.
|
|
27
|
+
return {
|
|
28
|
+
server_url: parsed.server_url ?? defaultConfig().server_url,
|
|
29
|
+
api_key: parsed.api_key ?? null,
|
|
30
|
+
default_project_id: parsed.default_project_id ?? null,
|
|
31
|
+
projects: parsed.projects ?? {},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
const e = err;
|
|
36
|
+
if (e.code === "ENOENT")
|
|
37
|
+
return defaultConfig();
|
|
38
|
+
// Corrupt config — refuse rather than silently overwrite.
|
|
39
|
+
throw new Error(`Failed to read config at ${file}: ${e.message}. ` +
|
|
40
|
+
`Move the file aside if you want a fresh start.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function saveConfig(cfg) {
|
|
44
|
+
const file = getConfigPath();
|
|
45
|
+
const dir = path.dirname(file);
|
|
46
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
47
|
+
// Best-effort restrict the dir too. Users on Windows just get the default.
|
|
48
|
+
try {
|
|
49
|
+
fs.chmodSync(dir, 0o700);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore — non-fatal, especially on Windows / odd FS
|
|
53
|
+
}
|
|
54
|
+
const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
|
|
55
|
+
fs.writeFileSync(tmp, JSON.stringify(cfg, null, 2), { mode: 0o600 });
|
|
56
|
+
fs.renameSync(tmp, file);
|
|
57
|
+
try {
|
|
58
|
+
fs.chmodSync(file, 0o600);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// ignore — non-fatal on platforms that don't honor chmod
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAErE,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,kBAAkB;QAChE,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACzD,+DAA+D;QAC/D,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC,UAAU;YAC3D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;YACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,aAAa,EAAE,CAAC;QAChD,0DAA0D;QAC1D,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI;YAChD,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAkB;IAC3C,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,2EAA2E;IAC3E,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACvD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|