@elizaos/plugin-farcaster 1.0.5 → 1.7.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.
Files changed (78) hide show
  1. package/README.md +42 -1
  2. package/dist/__tests__/e2e/scenarios.d.ts +4 -0
  3. package/dist/__tests__/e2e/scenarios.d.ts.map +1 -0
  4. package/dist/__tests__/suite.d.ts +117 -0
  5. package/dist/__tests__/suite.d.ts.map +1 -0
  6. package/dist/__tests__/test-utils.d.ts +29 -0
  7. package/dist/__tests__/test-utils.d.ts.map +1 -0
  8. package/dist/__tests__/types.d.ts +88 -0
  9. package/dist/__tests__/types.d.ts.map +1 -0
  10. package/dist/actions/index.d.ts +4 -0
  11. package/dist/actions/index.d.ts.map +1 -0
  12. package/dist/actions/replyCast.d.ts +3 -0
  13. package/dist/actions/replyCast.d.ts.map +1 -0
  14. package/dist/actions/sendCast.d.ts +3 -0
  15. package/dist/actions/sendCast.d.ts.map +1 -0
  16. package/dist/client.d.ts +26 -0
  17. package/dist/client.d.ts.map +1 -0
  18. package/dist/common/asyncqueue.d.ts +13 -0
  19. package/dist/common/asyncqueue.d.ts.map +1 -0
  20. package/dist/common/callbacks.d.ts +14 -0
  21. package/dist/common/callbacks.d.ts.map +1 -0
  22. package/dist/common/config.d.ts +15 -0
  23. package/dist/common/config.d.ts.map +1 -0
  24. package/dist/common/constants.d.ts +9 -0
  25. package/dist/common/constants.d.ts.map +1 -0
  26. package/dist/common/prompts.d.ts +5 -0
  27. package/dist/common/prompts.d.ts.map +1 -0
  28. package/dist/common/types.d.ts +80 -0
  29. package/dist/common/types.d.ts.map +1 -0
  30. package/dist/common/utils.d.ts +24 -0
  31. package/dist/common/utils.d.ts.map +1 -0
  32. package/dist/events/messageHandler.d.ts +29 -0
  33. package/dist/events/messageHandler.d.ts.map +1 -0
  34. package/dist/index.d.ts +7 -500
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +1050 -739
  37. package/dist/index.js.map +35 -1
  38. package/dist/managers/agent.d.ts +21 -0
  39. package/dist/managers/agent.d.ts.map +1 -0
  40. package/dist/managers/interaction-processor.d.ts +12 -0
  41. package/dist/managers/interaction-processor.d.ts.map +1 -0
  42. package/dist/managers/interaction-source.d.ts +50 -0
  43. package/dist/managers/interaction-source.d.ts.map +1 -0
  44. package/dist/managers/interactions.d.ts +49 -0
  45. package/dist/managers/interactions.d.ts.map +1 -0
  46. package/dist/managers/post.d.ts +24 -0
  47. package/dist/managers/post.d.ts.map +1 -0
  48. package/dist/providers/index.d.ts +5 -0
  49. package/dist/providers/index.d.ts.map +1 -0
  50. package/dist/providers/profileProvider.d.ts +3 -0
  51. package/dist/providers/profileProvider.d.ts.map +1 -0
  52. package/dist/providers/threadProvider.d.ts +3 -0
  53. package/dist/providers/threadProvider.d.ts.map +1 -0
  54. package/dist/providers/timelineProvider.d.ts +3 -0
  55. package/dist/providers/timelineProvider.d.ts.map +1 -0
  56. package/dist/routes/webhook.d.ts +3 -0
  57. package/dist/routes/webhook.d.ts.map +1 -0
  58. package/dist/service.d.ts +31 -0
  59. package/dist/service.d.ts.map +1 -0
  60. package/dist/services/CastService.d.ts +142 -0
  61. package/dist/services/CastService.d.ts.map +1 -0
  62. package/dist/services/MessageService.d.ts +50 -0
  63. package/dist/services/MessageService.d.ts.map +1 -0
  64. package/package.json +5 -6
  65. package/dist/chunk-FNDASAYG.js +0 -83
  66. package/dist/chunk-FNDASAYG.js.map +0 -1
  67. package/dist/chunk-IOTLJXKN.js +0 -72
  68. package/dist/chunk-IOTLJXKN.js.map +0 -1
  69. package/dist/chunk-OAXQ6Z2Q.js +0 -105
  70. package/dist/chunk-OAXQ6Z2Q.js.map +0 -1
  71. package/dist/chunk-Y2URJ4EZ.js +0 -21
  72. package/dist/chunk-Y2URJ4EZ.js.map +0 -1
  73. package/dist/profileProvider-TNRU42OO.js +0 -8
  74. package/dist/profileProvider-TNRU42OO.js.map +0 -1
  75. package/dist/sendCast-OW6DBKQB.js +0 -8
  76. package/dist/sendCast-OW6DBKQB.js.map +0 -1
  77. package/dist/timelineProvider-GPRPFEVJ.js +0 -8
  78. package/dist/timelineProvider-GPRPFEVJ.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { type IAgentRuntime } from '@elizaos/core';
2
+ import { FarcasterClient } from '../client';
3
+ import { type FarcasterConfig } from '../common/types';
4
+ import { FarcasterCastManager } from './post';
5
+ import { FarcasterInteractionManager } from './interactions';
6
+ /**
7
+ * A manager that orchestrates all Farcaster operations:
8
+ * - client: base operations (Neynar client, hub connection, etc.)
9
+ * - posts: autonomous posting logic
10
+ * - interactions: handling mentions, replies, likes, etc.
11
+ */
12
+ export declare class FarcasterAgentManager {
13
+ readonly runtime: IAgentRuntime;
14
+ readonly client: FarcasterClient;
15
+ readonly casts: FarcasterCastManager;
16
+ readonly interactions: FarcasterInteractionManager;
17
+ constructor(runtime: IAgentRuntime, config: FarcasterConfig);
18
+ start(): Promise<void>;
19
+ stop(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/managers/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;gBAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe;IAiBrD,KAAK;IAIL,IAAI;CAGX"}
@@ -0,0 +1,12 @@
1
+ import type { Cast, NeynarWebhookData } from '../common/types';
2
+ import type { Cast as NeynarCast } from '@neynar/nodejs-sdk/build/api';
3
+ /**
4
+ * Interface for interaction processing to break circular dependency
5
+ */
6
+ export interface IInteractionProcessor {
7
+ processMention(cast: NeynarCast): Promise<void>;
8
+ processReply(cast: NeynarCast): Promise<void>;
9
+ ensureCastConnection(cast: Cast): Promise<any>;
10
+ processWebhookData(webhookData: NeynarWebhookData): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=interaction-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-processor.d.ts","sourceRoot":"","sources":["../../src/managers/interaction-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE"}
@@ -0,0 +1,50 @@
1
+ import { type IAgentRuntime } from '@elizaos/core';
2
+ import type { FarcasterClient } from '../client';
3
+ import type { FarcasterConfig, NeynarWebhookData } from '../common/types';
4
+ import type { IInteractionProcessor } from './interaction-processor';
5
+ interface FarcasterInteractionSourceParams {
6
+ client: FarcasterClient;
7
+ runtime: IAgentRuntime;
8
+ config: FarcasterConfig;
9
+ processor: IInteractionProcessor;
10
+ }
11
+ /**
12
+ * Abstract base class for Farcaster interaction sources
13
+ */
14
+ export declare abstract class FarcasterInteractionSource {
15
+ protected client: FarcasterClient;
16
+ protected runtime: IAgentRuntime;
17
+ protected config: FarcasterConfig;
18
+ protected processor: IInteractionProcessor;
19
+ protected isRunning: boolean;
20
+ constructor(params: FarcasterInteractionSourceParams);
21
+ abstract start(): Promise<void>;
22
+ abstract stop(): Promise<void>;
23
+ }
24
+ /**
25
+ * Polling-based interaction source (original behavior)
26
+ */
27
+ export declare class FarcasterPollingSource extends FarcasterInteractionSource {
28
+ private timeout;
29
+ start(): Promise<void>;
30
+ stop(): Promise<void>;
31
+ private runPeriodically;
32
+ private pollForInteractions;
33
+ }
34
+ /**
35
+ * Webhook-based interaction source
36
+ */
37
+ export declare class FarcasterWebhookSource extends FarcasterInteractionSource {
38
+ start(): Promise<void>;
39
+ stop(): Promise<void>;
40
+ /**
41
+ * Process webhook data (called from webhook route handler)
42
+ */
43
+ processWebhookData(webhookData: NeynarWebhookData): Promise<void>;
44
+ }
45
+ /**
46
+ * Factory function to create the appropriate interaction source based on config
47
+ */
48
+ export declare function createFarcasterInteractionSource(params: FarcasterInteractionSourceParams): FarcasterInteractionSource;
49
+ export {};
50
+ //# sourceMappingURL=interaction-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-source.d.ts","sourceRoot":"","sources":["../../src/managers/interaction-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGrE,UAAU,gCAAgC;IACxC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED;;GAEG;AACH,8BAAsB,0BAA0B;IAC9C,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC3C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;gBAEzB,MAAM,EAAE,gCAAgC;IAOpD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,OAAO,CAAC,OAAO,CAA4C;IAErD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMb,eAAe;YAcf,mBAAmB;CAkClC;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAYxE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,gCAAgC,GAAG,0BAA0B,CAUrH"}
@@ -0,0 +1,49 @@
1
+ import { type IAgentRuntime, type Memory } from '@elizaos/core';
2
+ import { Cast as NeynarCast } from '@neynar/nodejs-sdk/build/api';
3
+ import type { FarcasterClient } from '../client';
4
+ import { type Cast, type FarcasterConfig, type NeynarWebhookData } from '../common/types';
5
+ import { type FarcasterInteractionSource } from './interaction-source';
6
+ import type { IInteractionProcessor } from './interaction-processor';
7
+ interface FarcasterInteractionManagerParams {
8
+ client: FarcasterClient;
9
+ runtime: IAgentRuntime;
10
+ config: FarcasterConfig;
11
+ }
12
+ /**
13
+ * Processes Farcaster interactions (mentions, replies) regardless of source (polling/webhook)
14
+ * This class contains the core logic for handling interactions and manages the interaction source
15
+ */
16
+ export declare class FarcasterInteractionManager implements IInteractionProcessor {
17
+ private client;
18
+ private runtime;
19
+ private config;
20
+ private asyncQueue;
21
+ readonly mode: 'polling' | 'webhook';
22
+ readonly source: FarcasterInteractionSource;
23
+ constructor(opts: FarcasterInteractionManagerParams);
24
+ /**
25
+ * Process a mention from any source (webhook or polling)
26
+ */
27
+ processMention(cast: NeynarCast): Promise<void>;
28
+ /**
29
+ * Process a reply from any source (webhook or polling)
30
+ */
31
+ processReply(cast: NeynarCast): Promise<void>;
32
+ /**
33
+ * Process webhook data from Neynar
34
+ */
35
+ processWebhookData(webhookData: NeynarWebhookData): Promise<void>;
36
+ ensureCastConnection(cast: Cast): Promise<Memory>;
37
+ private buildThreadForCast;
38
+ private handleMentionCast;
39
+ /**
40
+ * Start the interaction manager (delegates to the appropriate source)
41
+ */
42
+ start(): Promise<void>;
43
+ /**
44
+ * Stop the interaction manager
45
+ */
46
+ stop(): Promise<void>;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=interactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../src/managers/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,EACL,KAAK,IAAI,EACT,KAAK,eAAe,EAGpB,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAoC,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,UAAU,iCAAiC;IACzC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,qBAAqB;IACvE,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAa;IAG/B,SAAgB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5C,SAAgB,MAAM,EAAE,0BAA0B,CAAC;gBAEvC,IAAI,EAAE,iCAAiC;IAkBnD;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkE1D,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAmDhD,kBAAkB;YA2ClB,iBAAiB;IAsE/B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
@@ -0,0 +1,24 @@
1
+ import { type IAgentRuntime } from '@elizaos/core';
2
+ import type { FarcasterClient } from '../client';
3
+ import { FarcasterConfig } from '../common/types';
4
+ interface FarcasterCastParams {
5
+ client: FarcasterClient;
6
+ runtime: IAgentRuntime;
7
+ config: FarcasterConfig;
8
+ }
9
+ export declare class FarcasterCastManager {
10
+ client: FarcasterClient;
11
+ runtime: IAgentRuntime;
12
+ fid: number;
13
+ private timeout;
14
+ private config;
15
+ private isRunning;
16
+ constructor(opts: FarcasterCastParams);
17
+ start(): Promise<void>;
18
+ stop(): Promise<void>;
19
+ private calculateDelay;
20
+ private runPeriodically;
21
+ private generateNewCast;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/managers/post.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,eAAe,EAAiC,MAAM,iBAAiB,CAAC;AAGjF,UAAU,mBAAmB;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,qBAAa,oBAAoB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,IAAI,EAAE,mBAAmB;IAOxB,KAAK;IAWL,IAAI;IAKjB,OAAO,CAAC,cAAc;YAQR,eAAe;YAuBf,eAAe;CAiC9B"}
@@ -0,0 +1,5 @@
1
+ export { farcasterProfileProvider } from './profileProvider';
2
+ export { farcasterTimelineProvider } from './timelineProvider';
3
+ export { farcasterThreadProvider } from './threadProvider';
4
+ export declare const farcasterProviders: any[];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAO3D,eAAO,MAAM,kBAAkB,OAI9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from '@elizaos/core';
2
+ export declare const farcasterProfileProvider: Provider;
3
+ //# sourceMappingURL=profileProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileProvider.d.ts","sourceRoot":"","sources":["../../src/providers/profileProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAMd,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,wBAAwB,EAAE,QAmEtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from '@elizaos/core';
2
+ export declare const farcasterThreadProvider: Provider;
3
+ //# sourceMappingURL=threadProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadProvider.d.ts","sourceRoot":"","sources":["../../src/providers/threadProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,QAAQ,EAKhB,MAAM,eAAe,CAAC;AAavB,eAAO,MAAM,uBAAuB,EAAE,QA0FrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from '@elizaos/core';
2
+ export declare const farcasterTimelineProvider: Provider;
3
+ //# sourceMappingURL=timelineProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelineProvider.d.ts","sourceRoot":"","sources":["../../src/providers/timelineProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAMd,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,yBAAyB,EAAE,QAmEvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Route } from '@elizaos/core';
2
+ export declare const farcasterWebhookRoutes: Route[];
3
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/routes/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,eAAO,MAAM,sBAAsB,EAAE,KAAK,EAgDzC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Service, UUID, type IAgentRuntime } from '@elizaos/core';
2
+ import { FarcasterAgentManager } from './managers/agent';
3
+ import { FarcasterMessageService } from './services/MessageService';
4
+ import { FarcasterCastService } from './services/CastService';
5
+ export declare class FarcasterService extends Service {
6
+ private static instance?;
7
+ private managers;
8
+ private messageServices;
9
+ private castServices;
10
+ static serviceType: string;
11
+ readonly description = "Farcaster integration service for sending and receiving casts";
12
+ readonly capabilityDescription = "The agent is able to send and receive messages on farcaster";
13
+ private static getInstance;
14
+ initialize(runtime: IAgentRuntime): Promise<void>;
15
+ static start(runtime: IAgentRuntime): Promise<Service>;
16
+ static stop(runtime: IAgentRuntime): Promise<void>;
17
+ stop(): Promise<void>;
18
+ getMessageService(agentId: UUID): FarcasterMessageService | undefined;
19
+ /**
20
+ * Get the PostService for a specific agent (for compatibility)
21
+ * @deprecated Use getCastService() instead. Will be removed in a future major release.
22
+ */
23
+ getPostService(agentId: UUID): FarcasterCastService | undefined;
24
+ getCastService(agentId: UUID): FarcasterCastService | undefined;
25
+ healthCheck(): Promise<{
26
+ healthy: boolean;
27
+ details: Record<string, any>;
28
+ }>;
29
+ getActiveManagers(): Map<UUID, FarcasterAgentManager>;
30
+ }
31
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,YAAY,CAAyC;IAG7D,MAAM,CAAC,WAAW,SAA0B;IAG5C,QAAQ,CAAC,WAAW,mEAAmE;IACvF,QAAQ,CAAC,qBAAqB,iEAAiE;IAE/F,OAAO,CAAC,MAAM,CAAC,WAAW;IAQpB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;WAK1C,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;WAgC/C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAelD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,iBAAiB,CAAC,OAAO,EAAE,IAAI,GAAG,uBAAuB,GAAG,SAAS;IAIrE;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,oBAAoB,GAAG,SAAS;IAK/D,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,oBAAoB,GAAG,SAAS;IAKzD,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;IAkChF,iBAAiB,IAAI,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC;CAGtD"}
@@ -0,0 +1,142 @@
1
+ import { type IAgentRuntime, type UUID } from '@elizaos/core';
2
+ import type { FarcasterClient } from '../client';
3
+ interface FarcasterCast {
4
+ id: string;
5
+ agentId: UUID;
6
+ roomId: UUID;
7
+ userId: string;
8
+ username: string;
9
+ text: string;
10
+ timestamp: number;
11
+ inReplyTo?: string;
12
+ media?: any[];
13
+ metadata?: any;
14
+ }
15
+ export interface CastServiceInterface {
16
+ getCasts(params: {
17
+ agentId: UUID;
18
+ limit?: number;
19
+ cursor?: string;
20
+ }): Promise<FarcasterCast[]>;
21
+ createCast(params: {
22
+ agentId: UUID;
23
+ roomId: UUID;
24
+ text: string;
25
+ media?: string[];
26
+ replyTo?: {
27
+ hash: string;
28
+ fid: number;
29
+ };
30
+ }): Promise<FarcasterCast>;
31
+ deleteCast(params: {
32
+ agentId: UUID;
33
+ castHash: string;
34
+ }): Promise<void>;
35
+ likeCast(params: {
36
+ agentId: UUID;
37
+ castHash: string;
38
+ }): Promise<void>;
39
+ unlikeCast(params: {
40
+ agentId: UUID;
41
+ castHash: string;
42
+ }): Promise<void>;
43
+ recast(params: {
44
+ agentId: UUID;
45
+ castHash: string;
46
+ }): Promise<void>;
47
+ unrecast(params: {
48
+ agentId: UUID;
49
+ castHash: string;
50
+ }): Promise<void>;
51
+ getMentions(params: {
52
+ agentId: UUID;
53
+ limit?: number;
54
+ }): Promise<FarcasterCast[]>;
55
+ }
56
+ export declare class FarcasterCastService implements CastServiceInterface {
57
+ private client;
58
+ private runtime;
59
+ static serviceType: string;
60
+ constructor(client: FarcasterClient, runtime: IAgentRuntime);
61
+ /**
62
+ * Get recent casts from the timeline
63
+ */
64
+ getCasts(params: {
65
+ agentId: UUID;
66
+ limit?: number;
67
+ cursor?: string;
68
+ }): Promise<FarcasterCast[]>;
69
+ /**
70
+ * Create a new cast
71
+ */
72
+ createCast(params: {
73
+ agentId: UUID;
74
+ roomId: UUID;
75
+ text: string;
76
+ media?: string[];
77
+ replyTo?: {
78
+ hash: string;
79
+ fid: number;
80
+ };
81
+ }): Promise<FarcasterCast>;
82
+ /**
83
+ * Delete a cast
84
+ */
85
+ deleteCast(params: {
86
+ agentId: UUID;
87
+ castHash: string;
88
+ }): Promise<void>;
89
+ /**
90
+ * Like a cast
91
+ */
92
+ likeCast(params: {
93
+ agentId: UUID;
94
+ castHash: string;
95
+ }): Promise<void>;
96
+ /**
97
+ * Unlike a cast
98
+ */
99
+ unlikeCast(params: {
100
+ agentId: UUID;
101
+ castHash: string;
102
+ }): Promise<void>;
103
+ /**
104
+ * Recast a cast
105
+ */
106
+ recast(params: {
107
+ agentId: UUID;
108
+ castHash: string;
109
+ }): Promise<void>;
110
+ /**
111
+ * Remove a recast
112
+ */
113
+ unrecast(params: {
114
+ agentId: UUID;
115
+ castHash: string;
116
+ }): Promise<void>;
117
+ /**
118
+ * Get mentions
119
+ */
120
+ getMentions(params: {
121
+ agentId: UUID;
122
+ limit?: number;
123
+ }): Promise<FarcasterCast[]>;
124
+ /**
125
+ * Generate cast content using AI
126
+ */
127
+ private generateCastContent;
128
+ /**
129
+ * Truncate cast to fit character limit
130
+ */
131
+ private truncateCast;
132
+ /**
133
+ * Store cast in agent memory
134
+ */
135
+ private storeCastInMemory;
136
+ /**
137
+ * Convert internal Cast type to FarcasterCast
138
+ */
139
+ private castToFarcasterCast;
140
+ }
141
+ export {};
142
+ //# sourceMappingURL=CastService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CastService.d.ts","sourceRoot":"","sources":["../../src/services/CastService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { type UUID } from '@elizaos/core';
2
+ import type { FarcasterClient } from '../client';
3
+ import { FarcasterMessageType } from '../common/types';
4
+ interface Message {
5
+ id: string;
6
+ agentId: UUID;
7
+ roomId: string;
8
+ userId: string;
9
+ username: string;
10
+ text: string;
11
+ type: FarcasterMessageType;
12
+ timestamp: number;
13
+ inReplyTo?: string;
14
+ metadata?: any;
15
+ }
16
+ interface GetMessagesOptions {
17
+ agentId: UUID;
18
+ roomId?: string;
19
+ limit?: number;
20
+ }
21
+ interface SendMessageOptions {
22
+ agentId: UUID;
23
+ roomId: string;
24
+ text: string;
25
+ type: string;
26
+ replyToId?: string;
27
+ metadata?: any;
28
+ }
29
+ interface IMessageService {
30
+ getMessages(options: GetMessagesOptions): Promise<Message[]>;
31
+ sendMessage(options: SendMessageOptions): Promise<Message>;
32
+ getMessage(messageId: string, agentId: UUID): Promise<Message | null>;
33
+ }
34
+ export declare class FarcasterMessageService implements IMessageService {
35
+ private client;
36
+ private runtime;
37
+ constructor(client: FarcasterClient, runtime: any);
38
+ private castToMessage;
39
+ getMessages(options: GetMessagesOptions): Promise<Message[]>;
40
+ sendMessage(options: SendMessageOptions): Promise<Message>;
41
+ deleteMessage(messageId: string, agentId: UUID): Promise<void>;
42
+ getMessage(messageId: string, agentId: UUID): Promise<Message | null>;
43
+ getThread(params: {
44
+ agentId: UUID;
45
+ castHash: string;
46
+ }): Promise<Message[]>;
47
+ markAsRead(messageIds: string[], agentId: UUID): Promise<void>;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=MessageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageService.d.ts","sourceRoot":"","sources":["../../src/services/MessageService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAoB,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,iBAAiB,CAAC;AAI5E,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACvE;AAED,qBAAa,uBAAwB,YAAW,eAAe;IAE3D,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;gBADP,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,GAAG;IAGtB,OAAO,CAAC,aAAa;IAyBf,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiC5D,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiD1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgBrE,SAAS,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAyB1E,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-farcaster",
3
- "version": "1.0.5",
3
+ "version": "1.7.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -19,19 +19,18 @@
19
19
  "dist"
20
20
  ],
21
21
  "dependencies": {
22
- "@elizaos/core": "^1.0.8",
23
- "@neynar/nodejs-sdk": "^2.0.3",
22
+ "@elizaos/core": "^1.7.0",
23
+ "@neynar/nodejs-sdk": "^3.34.0",
24
24
  "lru-cache": "^11.1.0",
25
25
  "typescript": "5.8.3",
26
26
  "zod": "^3.25.9"
27
27
  },
28
28
  "devDependencies": {
29
- "tsup": "^8.3.5",
30
29
  "vitest": "^3.0.0"
31
30
  },
32
31
  "scripts": {
33
- "build": "tsup",
34
- "dev": "tsup --watch",
32
+ "build": "bun run build.ts",
33
+ "dev": "bun run build.ts --watch",
35
34
  "test": "elizaos test",
36
35
  "test:watch": "vitest watch",
37
36
  "test:unit": "vitest run __tests__/unit",
@@ -1,83 +0,0 @@
1
- import {
2
- FARCASTER_SERVICE_NAME
3
- } from "./chunk-Y2URJ4EZ.js";
4
-
5
- // src/providers/timelineProvider.ts
6
- import {
7
- logger
8
- } from "@elizaos/core";
9
- var farcasterTimelineProvider = {
10
- name: "farcasterTimeline",
11
- description: "Provides recent casts from the agent's Farcaster timeline",
12
- get: async (runtime, message, state) => {
13
- var _a, _b, _c;
14
- try {
15
- const service = runtime.getService(FARCASTER_SERVICE_NAME);
16
- const castService = service == null ? void 0 : service.getCastService(runtime.agentId);
17
- if (!castService) {
18
- return {
19
- text: "Farcaster timeline not available.",
20
- data: { available: false }
21
- };
22
- }
23
- const casts = await castService.getCasts({
24
- agentId: runtime.agentId,
25
- limit: 5
26
- });
27
- if (!casts || casts.length === 0) {
28
- return {
29
- text: "No recent casts in your timeline.",
30
- data: {
31
- available: true,
32
- casts: [],
33
- count: 0
34
- }
35
- };
36
- }
37
- const formattedCasts = casts.map((cast, index) => {
38
- const timeAgo = getTimeAgo(new Date(cast.timestamp));
39
- return `${index + 1}. @${cast.username} (${timeAgo}): ${cast.text}`;
40
- }).join("\n");
41
- return {
42
- text: `Recent casts from your timeline:
43
- ${formattedCasts}`,
44
- data: {
45
- available: true,
46
- casts: casts.map((c) => {
47
- var _a2;
48
- return {
49
- id: c.id,
50
- username: c.username,
51
- text: c.text,
52
- timestamp: c.timestamp,
53
- castHash: (_a2 = c.metadata) == null ? void 0 : _a2.castHash
54
- };
55
- }),
56
- count: casts.length
57
- },
58
- values: {
59
- latestCastHash: (_b = (_a = casts[0]) == null ? void 0 : _a.metadata) == null ? void 0 : _b.castHash,
60
- latestCastText: (_c = casts[0]) == null ? void 0 : _c.text
61
- }
62
- };
63
- } catch (error) {
64
- logger.error("[FarcasterTimelineProvider] Error:", error);
65
- return {
66
- text: "Unable to fetch Farcaster timeline.",
67
- data: { available: false, error: error instanceof Error ? error.message : "Unknown error" }
68
- };
69
- }
70
- }
71
- };
72
- function getTimeAgo(date) {
73
- const seconds = Math.floor(((/* @__PURE__ */ new Date()).getTime() - date.getTime()) / 1e3);
74
- if (seconds < 60) return "just now";
75
- if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;
76
- if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`;
77
- return `${Math.floor(seconds / 86400)}d ago`;
78
- }
79
-
80
- export {
81
- farcasterTimelineProvider
82
- };
83
- //# sourceMappingURL=chunk-FNDASAYG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/providers/timelineProvider.ts"],"sourcesContent":["import {\n type Provider,\n type IAgentRuntime,\n type Memory,\n type State,\n type ProviderResult,\n logger,\n} from '@elizaos/core';\nimport { FARCASTER_SERVICE_NAME } from '../common/constants';\nimport type { FarcasterService } from '../service';\n\nexport const farcasterTimelineProvider: Provider = {\n name: 'farcasterTimeline',\n description: \"Provides recent casts from the agent's Farcaster timeline\",\n\n get: async (runtime: IAgentRuntime, message: Memory, state: State): Promise<ProviderResult> => {\n try {\n const service = runtime.getService(FARCASTER_SERVICE_NAME) as FarcasterService;\n const castService = service?.getCastService(runtime.agentId);\n\n if (!castService) {\n return {\n text: 'Farcaster timeline not available.',\n data: { available: false },\n };\n }\n\n // Get recent casts from timeline\n const casts = await castService.getCasts({\n agentId: runtime.agentId,\n limit: 5,\n });\n\n if (!casts || casts.length === 0) {\n return {\n text: 'No recent casts in your timeline.',\n data: {\n available: true,\n casts: [],\n count: 0,\n },\n };\n }\n\n // Format casts for context\n const formattedCasts = casts\n .map((cast, index) => {\n const timeAgo = getTimeAgo(new Date(cast.timestamp));\n return `${index + 1}. @${cast.username} (${timeAgo}): ${cast.text}`;\n })\n .join('\\n');\n\n return {\n text: `Recent casts from your timeline:\\n${formattedCasts}`,\n data: {\n available: true,\n casts: casts.map((c) => ({\n id: c.id,\n username: c.username,\n text: c.text,\n timestamp: c.timestamp,\n castHash: c.metadata?.castHash,\n })),\n count: casts.length,\n },\n values: {\n latestCastHash: casts[0]?.metadata?.castHash,\n latestCastText: casts[0]?.text,\n },\n };\n } catch (error) {\n logger.error('[FarcasterTimelineProvider] Error:', error);\n return {\n text: 'Unable to fetch Farcaster timeline.',\n data: { available: false, error: error instanceof Error ? error.message : 'Unknown error' },\n };\n }\n },\n};\n\n// Helper function to format time ago\nfunction getTimeAgo(date: Date): string {\n const seconds = Math.floor((new Date().getTime() - date.getTime()) / 1000);\n\n if (seconds < 60) return 'just now';\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`;\n return `${Math.floor(seconds / 86400)}d ago`;\n}\n"],"mappings":";;;;;AAAA;AAAA,EAME;AAAA,OACK;AAIA,IAAM,4BAAsC;AAAA,EACjD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,KAAK,OAAO,SAAwB,SAAiB,UAA0C;AAfjG;AAgBI,QAAI;AACF,YAAM,UAAU,QAAQ,WAAW,sBAAsB;AACzD,YAAM,cAAc,mCAAS,eAAe,QAAQ;AAEpD,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM,EAAE,WAAW,MAAM;AAAA,QAC3B;AAAA,MACF;AAGA,YAAM,QAAQ,MAAM,YAAY,SAAS;AAAA,QACvC,SAAS,QAAQ;AAAA,QACjB,OAAO;AAAA,MACT,CAAC;AAED,UAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,eAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,WAAW;AAAA,YACX,OAAO,CAAC;AAAA,YACR,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAGA,YAAM,iBAAiB,MACpB,IAAI,CAAC,MAAM,UAAU;AACpB,cAAM,UAAU,WAAW,IAAI,KAAK,KAAK,SAAS,CAAC;AACnD,eAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,IAAI;AAAA,MACnE,CAAC,EACA,KAAK,IAAI;AAEZ,aAAO;AAAA,QACL,MAAM;AAAA,EAAqC,cAAc;AAAA,QACzD,MAAM;AAAA,UACJ,WAAW;AAAA,UACX,OAAO,MAAM,IAAI,CAAC,MAAG;AAxD/B,gBAAAA;AAwDmC;AAAA,cACvB,IAAI,EAAE;AAAA,cACN,UAAU,EAAE;AAAA,cACZ,MAAM,EAAE;AAAA,cACR,WAAW,EAAE;AAAA,cACb,WAAUA,MAAA,EAAE,aAAF,gBAAAA,IAAY;AAAA,YACxB;AAAA,WAAE;AAAA,UACF,OAAO,MAAM;AAAA,QACf;AAAA,QACA,QAAQ;AAAA,UACN,iBAAgB,iBAAM,CAAC,MAAP,mBAAU,aAAV,mBAAoB;AAAA,UACpC,iBAAgB,WAAM,CAAC,MAAP,mBAAU;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,sCAAsC,KAAK;AACxD,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,EAAE,WAAW,OAAO,OAAO,iBAAiB,QAAQ,MAAM,UAAU,gBAAgB;AAAA,MAC5F;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,WAAW,MAAoB;AACtC,QAAM,UAAU,KAAK,QAAO,oBAAI,KAAK,GAAE,QAAQ,IAAI,KAAK,QAAQ,KAAK,GAAI;AAEzE,MAAI,UAAU,GAAI,QAAO;AACzB,MAAI,UAAU,KAAM,QAAO,GAAG,KAAK,MAAM,UAAU,EAAE,CAAC;AACtD,MAAI,UAAU,MAAO,QAAO,GAAG,KAAK,MAAM,UAAU,IAAI,CAAC;AACzD,SAAO,GAAG,KAAK,MAAM,UAAU,KAAK,CAAC;AACvC;","names":["_a"]}