freeturtle 0.1.0 → 0.1.2
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 +80 -31
- package/dist/bin/freeturtle.js +10 -2
- package/dist/bin/freeturtle.js.map +1 -1
- package/dist/src/cli/init.js +152 -2
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/cli/update.js +1 -1
- package/dist/src/cli/update.js.map +1 -1
- package/dist/src/cli/webhooks.d.ts +1 -0
- package/dist/src/cli/webhooks.js +242 -0
- package/dist/src/cli/webhooks.js.map +1 -0
- package/dist/src/daemon.d.ts +1 -0
- package/dist/src/daemon.js +29 -1
- package/dist/src/daemon.js.map +1 -1
- package/dist/src/modules/loader.d.ts +1 -1
- package/dist/src/modules/loader.js +14 -1
- package/dist/src/modules/loader.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +20 -0
- package/dist/src/modules/workspace/index.js +115 -0
- package/dist/src/modules/workspace/index.js.map +1 -0
- package/dist/src/modules/workspace/tools.d.ts +2 -0
- package/dist/src/modules/workspace/tools.js +71 -0
- package/dist/src/modules/workspace/tools.js.map +1 -0
- package/dist/src/policy.d.ts +1 -0
- package/dist/src/policy.js +7 -0
- package/dist/src/policy.js.map +1 -1
- package/dist/src/runner.js +1 -1
- package/dist/src/runner.js.map +1 -1
- package/dist/src/webhooks/neynar.d.ts +29 -0
- package/dist/src/webhooks/neynar.js +65 -0
- package/dist/src/webhooks/neynar.js.map +1 -0
- package/dist/src/webhooks/server.d.ts +32 -0
- package/dist/src/webhooks/server.js +206 -0
- package/dist/src/webhooks/server.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export const workspaceTools = [
|
|
2
|
+
{
|
|
3
|
+
name: "read_file",
|
|
4
|
+
description: "Read a file from your workspace. Use this to read your own soul.md, config.md, memory files, or any other workspace file. Paths are relative to the workspace root (~/.freeturtle/).",
|
|
5
|
+
input_schema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
path: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Relative path to read (e.g. 'soul.md', 'config.md', 'workspace/memory/posting-log.json')",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
required: ["path"],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "write_file",
|
|
18
|
+
description: "Write or overwrite a file in your workspace. Use this to modify your own soul.md (identity, voice, goals), config.md (modules, cron schedules, channels), memory files, or create new files. Paths are relative to the workspace root (~/.freeturtle/). Writing to soul.md, config.md, or .env requires founder approval.",
|
|
19
|
+
input_schema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
path: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Relative path to write (e.g. 'soul.md', 'config.md', 'workspace/notes.md')",
|
|
25
|
+
},
|
|
26
|
+
content: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "The full content to write to the file",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ["path", "content"],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "edit_file",
|
|
36
|
+
description: "Edit a file by replacing a specific string with new content. More precise than write_file when you only need to change part of a file. Paths are relative to the workspace root (~/.freeturtle/). Editing soul.md, config.md, or .env requires founder approval.",
|
|
37
|
+
input_schema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
path: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Relative path to edit",
|
|
43
|
+
},
|
|
44
|
+
old_text: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "The exact text to find and replace",
|
|
47
|
+
},
|
|
48
|
+
new_text: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "The replacement text",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ["path", "old_text", "new_text"],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "list_files",
|
|
58
|
+
description: "List files and directories in your workspace. Paths are relative to the workspace root (~/.freeturtle/).",
|
|
59
|
+
input_schema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
path: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "Relative directory path to list (default: root). e.g. 'workspace/memory'",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: [],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/modules/workspace/tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,sLAAsL;QACxL,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,0FAA0F;iBAC7F;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,2TAA2T;QAC7T,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4EAA4E;iBAC/E;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;iBACrD;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;SAC9B;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,kQAAkQ;QACpQ,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sBAAsB;iBACpC;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC;SAC3C;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,0GAA0G;QAC5G,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,0EAA0E;iBAC7E;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC"}
|
package/dist/src/policy.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare function assertOnchainScopeAllowed(policy: PolicyConfig | undefin
|
|
|
34
34
|
* Determines whether a tool call requires human approval before execution.
|
|
35
35
|
* - delete_cast => always true
|
|
36
36
|
* - commit_file => true if branch is in approval_required_branches (default ["main"])
|
|
37
|
+
* - write_file / edit_file => true if path is a protected file (soul.md, config.md, .env)
|
|
37
38
|
* - everything else => false
|
|
38
39
|
*/
|
|
39
40
|
export declare function requiresApproval(policy: PolicyConfig | undefined, toolName: string, input: Record<string, unknown>): boolean;
|
package/dist/src/policy.js
CHANGED
|
@@ -60,10 +60,13 @@ export function assertOnchainScopeAllowed(policy, contract, fn) {
|
|
|
60
60
|
assertAllowed(policy.onchain?.allowed_read_functions, fn, "ONCHAIN_FUNCTION_DENIED", "Onchain function");
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
/** Files that require founder approval to modify */
|
|
64
|
+
const PROTECTED_WORKSPACE_FILES = ["soul.md", "config.md", ".env"];
|
|
63
65
|
/**
|
|
64
66
|
* Determines whether a tool call requires human approval before execution.
|
|
65
67
|
* - delete_cast => always true
|
|
66
68
|
* - commit_file => true if branch is in approval_required_branches (default ["main"])
|
|
69
|
+
* - write_file / edit_file => true if path is a protected file (soul.md, config.md, .env)
|
|
67
70
|
* - everything else => false
|
|
68
71
|
*/
|
|
69
72
|
export function requiresApproval(policy, toolName, input) {
|
|
@@ -74,6 +77,10 @@ export function requiresApproval(policy, toolName, input) {
|
|
|
74
77
|
const approvalBranches = policy?.github?.approval_required_branches ?? ["main"];
|
|
75
78
|
return approvalBranches.some((b) => b.toLowerCase() === branch.toLowerCase());
|
|
76
79
|
}
|
|
80
|
+
if (toolName === "write_file" || toolName === "edit_file") {
|
|
81
|
+
const path = input.path ?? "";
|
|
82
|
+
return PROTECTED_WORKSPACE_FILES.some((f) => path === f || path.endsWith(`/${f}`));
|
|
83
|
+
}
|
|
77
84
|
return false;
|
|
78
85
|
}
|
|
79
86
|
export function getDefaultPolicy() {
|
package/dist/src/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/src/runner.js
CHANGED
|
@@ -152,7 +152,7 @@ export class TaskRunner {
|
|
|
152
152
|
if (heartbeatChecklist) {
|
|
153
153
|
parts.push("### Heartbeat Checklist\n" + heartbeatChecklist + "\n");
|
|
154
154
|
}
|
|
155
|
-
parts.push("---\n", "## Instructions\n", "- You are an autonomous AI CEO. You act on behalf of the project described in your identity.", "- When you post, match the voice and style described in your identity.", "- Log important actions and observations.", "- If you are unsure about something, say so rather than guessing.", `- The current date and time is: ${new Date().toISOString()}
|
|
155
|
+
parts.push("---\n", "## Instructions\n", "- You are an autonomous AI CEO. You act on behalf of the project described in your identity.", "- When you post, match the voice and style described in your identity.", "- Log important actions and observations.", "- If you are unsure about something, say so rather than guessing.", `- The current date and time is: ${new Date().toISOString()}`, "", "## Self-Modification", "- You can read and modify your own files using read_file, write_file, edit_file, and list_files.", "- Your identity is in soul.md — you can update your voice, goals, knowledge, and values.", "- Your configuration is in config.md — you can change cron schedules, enable/disable modules and channels.", "- Your memory is in workspace/memory/ — you can write persistent notes, logs, and data.", "- Changes to soul.md, config.md, and .env require founder approval. Memory writes do not.", "- When the founder asks you to change your behavior, update the relevant file so the change persists.", "- Config changes (cron, modules, channels) take effect on next restart.");
|
|
156
156
|
return parts.join("\n");
|
|
157
157
|
}
|
|
158
158
|
collectTools() {
|
package/dist/src/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface NeynarWebhook {
|
|
2
|
+
webhook_id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
url: string;
|
|
5
|
+
active: boolean;
|
|
6
|
+
subscription: {
|
|
7
|
+
"cast.created"?: {
|
|
8
|
+
mentioned_fids?: number[];
|
|
9
|
+
parent_author_fids?: number[];
|
|
10
|
+
author_fids?: number[];
|
|
11
|
+
root_parent_urls?: string[];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface WebhookSubscription {
|
|
16
|
+
/** FIDs to listen for mentions of (someone @'s these accounts) */
|
|
17
|
+
mentionedFids?: number[];
|
|
18
|
+
/** FIDs to listen for replies to (someone replies to these accounts' casts) */
|
|
19
|
+
parentAuthorFids?: number[];
|
|
20
|
+
/** FIDs to listen for any casts from (watch specific users) */
|
|
21
|
+
authorFids?: number[];
|
|
22
|
+
/** Farcaster channel URLs to listen for new casts in */
|
|
23
|
+
channelUrls?: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function createWebhook(apiKey: string, title: string, targetUrl: string, subscription: WebhookSubscription): Promise<NeynarWebhook>;
|
|
26
|
+
export declare function deleteWebhook(apiKey: string, webhookId: string): Promise<void>;
|
|
27
|
+
export declare function listWebhooks(apiKey: string): Promise<NeynarWebhook[]>;
|
|
28
|
+
/** Convert a Farcaster channel name to its parent URL format */
|
|
29
|
+
export declare function channelToUrl(channelId: string): string;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const NEYNAR_BASE = "https://api.neynar.com/v2/farcaster";
|
|
2
|
+
export async function createWebhook(apiKey, title, targetUrl, subscription) {
|
|
3
|
+
const castCreated = {};
|
|
4
|
+
if (subscription.mentionedFids?.length) {
|
|
5
|
+
castCreated.mentioned_fids = subscription.mentionedFids;
|
|
6
|
+
}
|
|
7
|
+
if (subscription.parentAuthorFids?.length) {
|
|
8
|
+
castCreated.parent_author_fids = subscription.parentAuthorFids;
|
|
9
|
+
}
|
|
10
|
+
if (subscription.authorFids?.length) {
|
|
11
|
+
castCreated.author_fids = subscription.authorFids;
|
|
12
|
+
}
|
|
13
|
+
if (subscription.channelUrls?.length) {
|
|
14
|
+
castCreated.root_parent_urls = subscription.channelUrls;
|
|
15
|
+
}
|
|
16
|
+
const res = await fetch(`${NEYNAR_BASE}/webhook`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
"x-api-key": apiKey,
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
name: title,
|
|
24
|
+
url: targetUrl,
|
|
25
|
+
subscription: {
|
|
26
|
+
"cast.created": castCreated,
|
|
27
|
+
},
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
const text = await res.text();
|
|
32
|
+
throw new Error(`Neynar createWebhook failed (${res.status}): ${text}`);
|
|
33
|
+
}
|
|
34
|
+
return (await res.json());
|
|
35
|
+
}
|
|
36
|
+
export async function deleteWebhook(apiKey, webhookId) {
|
|
37
|
+
const res = await fetch(`${NEYNAR_BASE}/webhook`, {
|
|
38
|
+
method: "DELETE",
|
|
39
|
+
headers: {
|
|
40
|
+
"Content-Type": "application/json",
|
|
41
|
+
"x-api-key": apiKey,
|
|
42
|
+
},
|
|
43
|
+
body: JSON.stringify({ webhook_id: webhookId }),
|
|
44
|
+
});
|
|
45
|
+
if (!res.ok) {
|
|
46
|
+
const text = await res.text();
|
|
47
|
+
throw new Error(`Neynar deleteWebhook failed (${res.status}): ${text}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function listWebhooks(apiKey) {
|
|
51
|
+
const res = await fetch(`${NEYNAR_BASE}/webhook`, {
|
|
52
|
+
headers: { "x-api-key": apiKey },
|
|
53
|
+
});
|
|
54
|
+
if (!res.ok) {
|
|
55
|
+
const text = await res.text();
|
|
56
|
+
throw new Error(`Neynar listWebhooks failed (${res.status}): ${text}`);
|
|
57
|
+
}
|
|
58
|
+
const data = (await res.json());
|
|
59
|
+
return data.webhooks;
|
|
60
|
+
}
|
|
61
|
+
/** Convert a Farcaster channel name to its parent URL format */
|
|
62
|
+
export function channelToUrl(channelId) {
|
|
63
|
+
return `https://warpcast.com/~/channel/${channelId}`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=neynar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neynar.js","sourceRoot":"","sources":["../../../src/webhooks/neynar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Logger } from "../logger.js";
|
|
2
|
+
export interface WebhookServerOptions {
|
|
3
|
+
port: number;
|
|
4
|
+
ownFid: number;
|
|
5
|
+
neynarApiKey: string;
|
|
6
|
+
webhookSecret?: string;
|
|
7
|
+
onEvent: (prompt: string) => Promise<string>;
|
|
8
|
+
logger: Logger;
|
|
9
|
+
/** FIDs being watched for any casts */
|
|
10
|
+
watchedFids?: number[];
|
|
11
|
+
/** Minimum Neynar user score to process (default: 0.5) */
|
|
12
|
+
minScore?: number;
|
|
13
|
+
/** Max responses per user per hour (default: 5) */
|
|
14
|
+
maxPerHour?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class WebhookServer {
|
|
17
|
+
private server;
|
|
18
|
+
private options;
|
|
19
|
+
private processedCasts;
|
|
20
|
+
private responseTracker;
|
|
21
|
+
private readonly MAX_PROCESSED;
|
|
22
|
+
constructor(options: WebhookServerOptions);
|
|
23
|
+
start(): Promise<void>;
|
|
24
|
+
stop(): Promise<void>;
|
|
25
|
+
private handleRequest;
|
|
26
|
+
private processCast;
|
|
27
|
+
private buildPrompt;
|
|
28
|
+
private fetchParentCast;
|
|
29
|
+
private isRateLimited;
|
|
30
|
+
private verifySignature;
|
|
31
|
+
private readBody;
|
|
32
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
const NEYNAR_CAST_API = "https://api.neynar.com/v2/farcaster/cast";
|
|
4
|
+
export class WebhookServer {
|
|
5
|
+
server = null;
|
|
6
|
+
options;
|
|
7
|
+
processedCasts = new Set();
|
|
8
|
+
responseTracker = new Map();
|
|
9
|
+
MAX_PROCESSED = 1000;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
async start() {
|
|
14
|
+
this.server = createServer((req, res) => {
|
|
15
|
+
void this.handleRequest(req, res);
|
|
16
|
+
});
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
this.server.listen(this.options.port, () => {
|
|
19
|
+
this.options.logger.info(`Webhook server listening on port ${this.options.port}`);
|
|
20
|
+
resolve();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async stop() {
|
|
25
|
+
if (!this.server)
|
|
26
|
+
return;
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
this.server.close(() => resolve());
|
|
29
|
+
this.server = null;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async handleRequest(req, res) {
|
|
33
|
+
// Health check
|
|
34
|
+
if (req.method === "GET" && req.url === "/health") {
|
|
35
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
36
|
+
res.end(JSON.stringify({ status: "ok", uptime: process.uptime() }));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Only accept POST /webhook
|
|
40
|
+
if (req.method !== "POST" || req.url !== "/webhook") {
|
|
41
|
+
res.writeHead(404);
|
|
42
|
+
res.end();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const body = await this.readBody(req);
|
|
46
|
+
// Verify signature
|
|
47
|
+
if (this.options.webhookSecret) {
|
|
48
|
+
const sig = req.headers["x-neynar-signature"];
|
|
49
|
+
if (!sig || !this.verifySignature(body, sig)) {
|
|
50
|
+
this.options.logger.warn("Webhook: invalid signature");
|
|
51
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
52
|
+
res.end(JSON.stringify({ error: "invalid signature" }));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Respond 200 immediately — process async
|
|
57
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
58
|
+
res.end(JSON.stringify({ ok: true }));
|
|
59
|
+
// Parse and process
|
|
60
|
+
try {
|
|
61
|
+
const payload = JSON.parse(body.toString("utf-8"));
|
|
62
|
+
await this.processCast(payload);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
66
|
+
this.options.logger.error(`Webhook processing error: ${msg}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async processCast(payload) {
|
|
70
|
+
if (payload.type !== "cast.created" || !payload.data)
|
|
71
|
+
return;
|
|
72
|
+
const cast = payload.data;
|
|
73
|
+
const authorFid = cast.author.fid;
|
|
74
|
+
const authorUsername = cast.author.username || "unknown";
|
|
75
|
+
const authorScore = cast.author.experimental?.neynar_user_score ?? null;
|
|
76
|
+
const castText = cast.text || "";
|
|
77
|
+
this.options.logger.info(`Webhook: @${authorUsername} (fid:${authorFid}): "${castText.substring(0, 80)}"`);
|
|
78
|
+
// Skip own casts
|
|
79
|
+
if (authorFid === this.options.ownFid)
|
|
80
|
+
return;
|
|
81
|
+
// Skip duplicates
|
|
82
|
+
if (this.processedCasts.has(cast.hash))
|
|
83
|
+
return;
|
|
84
|
+
this.processedCasts.add(cast.hash);
|
|
85
|
+
if (this.processedCasts.size > this.MAX_PROCESSED) {
|
|
86
|
+
const first = this.processedCasts.values().next().value;
|
|
87
|
+
if (first)
|
|
88
|
+
this.processedCasts.delete(first);
|
|
89
|
+
}
|
|
90
|
+
// Skip spam
|
|
91
|
+
const minScore = this.options.minScore ?? 0.5;
|
|
92
|
+
if (authorScore !== null && authorScore < minScore) {
|
|
93
|
+
this.options.logger.info(`Webhook: skip spam (score: ${authorScore})`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Rate limit per user
|
|
97
|
+
if (this.isRateLimited(authorFid)) {
|
|
98
|
+
this.options.logger.info(`Webhook: rate limited @${authorUsername}`);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Fetch parent context if this is a reply
|
|
102
|
+
const parentContext = cast.parent_hash
|
|
103
|
+
? await this.fetchParentCast(cast.parent_hash)
|
|
104
|
+
: null;
|
|
105
|
+
// Determine event type
|
|
106
|
+
const isMention = cast.mentioned_profiles?.some((p) => p.fid === this.options.ownFid);
|
|
107
|
+
const isWatchedUser = this.options.watchedFids?.includes(authorFid);
|
|
108
|
+
const channelName = cast.channel?.id;
|
|
109
|
+
// Build prompt for the CEO
|
|
110
|
+
const prompt = this.buildPrompt(cast, parentContext, {
|
|
111
|
+
isMention: !!isMention,
|
|
112
|
+
isWatchedUser: !!isWatchedUser,
|
|
113
|
+
channelName,
|
|
114
|
+
});
|
|
115
|
+
// Route through the runner
|
|
116
|
+
try {
|
|
117
|
+
await this.options.onEvent(prompt);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
121
|
+
this.options.logger.error(`Webhook: runner failed: ${msg}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
buildPrompt(cast, parentContext, context) {
|
|
125
|
+
const authorUsername = cast.author.username || "unknown";
|
|
126
|
+
const castText = cast.text || "";
|
|
127
|
+
const castHash = cast.hash;
|
|
128
|
+
// Determine the event label and instructions
|
|
129
|
+
let label;
|
|
130
|
+
let instruction;
|
|
131
|
+
if (context.isMention) {
|
|
132
|
+
label = "FARCASTER MENTION";
|
|
133
|
+
instruction = `Compose a reply and post it as a reply to cast hash ${castHash}.`;
|
|
134
|
+
}
|
|
135
|
+
else if (context.isWatchedUser) {
|
|
136
|
+
label = `FARCASTER WATCHED USER @${authorUsername}`;
|
|
137
|
+
instruction = `This is from a user you're watching. Decide if it's worth replying to. If so, reply to cast hash ${castHash}. If not, just acknowledge you saw it.`;
|
|
138
|
+
}
|
|
139
|
+
else if (context.channelName) {
|
|
140
|
+
label = `FARCASTER CHANNEL /${context.channelName}`;
|
|
141
|
+
instruction = `This was posted in a channel you're watching. Decide if it's relevant and worth replying to. If so, reply to cast hash ${castHash}. If not, just acknowledge you saw it.`;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
label = "FARCASTER REPLY";
|
|
145
|
+
instruction = `Compose a reply and post it as a reply to cast hash ${castHash}.`;
|
|
146
|
+
}
|
|
147
|
+
let prompt = `[${label} — use reply_to_cast tool with parent_hash "${castHash}" if replying]\n\n`;
|
|
148
|
+
if (parentContext) {
|
|
149
|
+
prompt += `Conversation context:\n`;
|
|
150
|
+
prompt += `@${parentContext.username} said: "${parentContext.text}"\n\n`;
|
|
151
|
+
prompt += `@${authorUsername} replied: "${castText}"\n\n`;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
prompt += `@${authorUsername} said: "${castText}"\n\n`;
|
|
155
|
+
}
|
|
156
|
+
prompt += instruction;
|
|
157
|
+
return prompt;
|
|
158
|
+
}
|
|
159
|
+
async fetchParentCast(parentHash) {
|
|
160
|
+
try {
|
|
161
|
+
const res = await fetch(`${NEYNAR_CAST_API}?identifier=${encodeURIComponent(parentHash)}&type=hash`, { headers: { "x-api-key": this.options.neynarApiKey } });
|
|
162
|
+
if (!res.ok)
|
|
163
|
+
return null;
|
|
164
|
+
const data = (await res.json());
|
|
165
|
+
if (data.cast) {
|
|
166
|
+
return {
|
|
167
|
+
text: data.cast.text,
|
|
168
|
+
username: data.cast.author?.username || "unknown",
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
174
|
+
this.options.logger.error(`Webhook: error fetching parent cast: ${msg}`);
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
isRateLimited(authorFid) {
|
|
179
|
+
const now = Date.now();
|
|
180
|
+
const key = String(authorFid);
|
|
181
|
+
const cooldownMs = 60 * 60 * 1000;
|
|
182
|
+
const max = this.options.maxPerHour ?? 5;
|
|
183
|
+
if (!this.responseTracker.has(key))
|
|
184
|
+
this.responseTracker.set(key, []);
|
|
185
|
+
const timestamps = this.responseTracker.get(key).filter((t) => now - t < cooldownMs);
|
|
186
|
+
this.responseTracker.set(key, timestamps);
|
|
187
|
+
if (timestamps.length >= max)
|
|
188
|
+
return true;
|
|
189
|
+
timestamps.push(now);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
verifySignature(body, signature) {
|
|
193
|
+
const hmac = crypto.createHmac("sha512", this.options.webhookSecret);
|
|
194
|
+
hmac.update(body);
|
|
195
|
+
return signature === hmac.digest("hex");
|
|
196
|
+
}
|
|
197
|
+
readBody(req) {
|
|
198
|
+
return new Promise((resolve, reject) => {
|
|
199
|
+
const chunks = [];
|
|
200
|
+
req.on("data", (chunk) => chunks.push(chunk));
|
|
201
|
+
req.on("end", () => resolve(Buffer.concat(chunks)));
|
|
202
|
+
req.on("error", reject);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/webhooks/server.ts"],"names":[],"mappings":"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"}
|