@jam-nodes/core 0.1.2 → 0.2.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/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { NodeExecutionContext, NodeExecutionResult, NodeExecutor, NodeApprovalRequest, NodeCapabilities, NodeCategory, NodeMetadata, NodeDefinition, NodeApprovalConfig, NodeNotificationConfig, BaseNodeConfig, } from './types/index.js';
1
+ export type { NodeExecutionContext, NodeExecutionResult, NodeExecutor, NodeApprovalRequest, NodeCapabilities, NodeCategory, NodeMetadata, NodeDefinition, NodeApprovalConfig, NodeNotificationConfig, BaseNodeConfig, NodeServices, ApolloClient, ApolloContact, DataForSeoClient, DataForSeoAuditResult, DataForSeoKeyword, TwitterClient, TwitterPost, ForumScoutClient, LinkedInPost, OpenAIClient, AnthropicClient, NotificationService, StorageService, CacheService, EmailDraftsService, EmailDraft, AnalyzedPostsStorage, AnalyzedPostData, } from './types/index.js';
2
2
  export { ExecutionContext, createExecutionContext, prepareNodeInput, } from './execution/index.js';
3
3
  export { NodeRegistry, createRegistry } from './registry/index.js';
4
4
  export { defineNode } from './utils/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EAEd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmCA,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export type { NodeExecutionContext, NodeExecutionResult, NodeExecutor, NodeApprovalRequest, NodeCapabilities, NodeCategory, NodeMetadata, NodeDefinition, } from './node.js';
2
2
  export type { NodeApprovalConfig, NodeNotificationConfig, BaseNodeConfig, } from './config.js';
3
+ export type { NodeServices, ApolloClient, ApolloContact, DataForSeoClient, DataForSeoAuditResult, DataForSeoKeyword, TwitterClient, TwitterPost, ForumScoutClient, LinkedInPost, OpenAIClient, AnthropicClient, NotificationService, StorageService, CacheService, EmailDraftsService, EmailDraft, AnalyzedPostsStorage, AnalyzedPostData, } from './services.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { z } from 'zod';
2
+ import type { NodeServices } from './services';
2
3
  /**
3
4
  * Base execution context passed to all node executors.
4
5
  * Provides access to workflow state and utilities.
@@ -14,6 +15,8 @@ export interface NodeExecutionContext {
14
15
  variables: Record<string, unknown>;
15
16
  /** Resolve nested path like "contact.email" or "data[0].name" */
16
17
  resolveNestedPath: (path: string) => unknown;
18
+ /** Optional services injected by host application */
19
+ services?: NodeServices;
17
20
  }
18
21
  /**
19
22
  * Approval request metadata returned by nodes that need user approval.
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/types/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,mCAAmC;IACnC,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CAC9D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iCAAiC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CACjE,SAAQ,YAAY;IACpB,sCAAsC;IACtC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,uCAAuC;IACvC,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,wBAAwB;IACxB,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/types/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Service interfaces for node integrations.
3
+ * These are optional - nodes work without them but can use them when available.
4
+ * Host applications (like Jam) inject implementations via context.
5
+ */
6
+ /**
7
+ * Apollo.io API client for contact search and enrichment.
8
+ */
9
+ export interface ApolloClient {
10
+ searchContacts(params: {
11
+ personTitles?: string[];
12
+ personLocations?: string[];
13
+ organizationLocations?: string[];
14
+ keywords?: string;
15
+ limit?: number;
16
+ personSeniorities?: string[];
17
+ technologies?: string[];
18
+ }): Promise<ApolloContact[]>;
19
+ enrichContact(contactId: string): Promise<ApolloContact>;
20
+ }
21
+ export interface ApolloContact {
22
+ id: string;
23
+ name: string;
24
+ firstName?: string;
25
+ lastName?: string;
26
+ email?: string;
27
+ title?: string;
28
+ company?: string;
29
+ linkedinUrl?: string;
30
+ location?: string;
31
+ }
32
+ /**
33
+ * DataForSEO API client for SEO analysis.
34
+ */
35
+ export interface DataForSeoClient {
36
+ getOnPageInstant(url: string, options?: {
37
+ enableJavascript?: boolean;
38
+ }): Promise<DataForSeoAuditResult>;
39
+ getRelatedKeywords(keywords: string[], options?: {
40
+ locationCode?: number;
41
+ languageCode?: string;
42
+ limit?: number;
43
+ }): Promise<DataForSeoKeyword[]>;
44
+ }
45
+ export interface DataForSeoAuditResult {
46
+ onPageScore: number;
47
+ checks: Record<string, {
48
+ passed: boolean;
49
+ score: number;
50
+ description?: string;
51
+ }>;
52
+ meta?: {
53
+ title?: string;
54
+ description?: string;
55
+ };
56
+ }
57
+ export interface DataForSeoKeyword {
58
+ keyword: string;
59
+ searchVolume: number;
60
+ keywordDifficulty: number;
61
+ cpc: number;
62
+ searchIntent: 'informational' | 'commercial' | 'navigational' | 'transactional';
63
+ }
64
+ /**
65
+ * Twitter/X API client for social monitoring.
66
+ */
67
+ export interface TwitterClient {
68
+ searchTweets(query: string, options?: {
69
+ maxResults?: number;
70
+ sinceDays?: number;
71
+ }): Promise<TwitterPost[]>;
72
+ }
73
+ export interface TwitterPost {
74
+ id: string;
75
+ text: string;
76
+ authorName: string;
77
+ authorHandle: string;
78
+ authorFollowers: number;
79
+ likes: number;
80
+ retweets: number;
81
+ replies: number;
82
+ views?: number;
83
+ createdAt: string;
84
+ url: string;
85
+ }
86
+ /**
87
+ * ForumScout API client for LinkedIn monitoring.
88
+ */
89
+ export interface ForumScoutClient {
90
+ searchLinkedIn(keywords: string[], options?: {
91
+ maxResults?: number;
92
+ timeFilter?: string;
93
+ }): Promise<LinkedInPost[]>;
94
+ }
95
+ export interface LinkedInPost {
96
+ id: string;
97
+ text: string;
98
+ authorName: string;
99
+ authorHeadline?: string;
100
+ authorUrl?: string;
101
+ likes: number;
102
+ comments: number;
103
+ shares?: number;
104
+ createdAt: string;
105
+ url: string;
106
+ hashtags?: string[];
107
+ }
108
+ /**
109
+ * OpenAI API client for AI generation.
110
+ */
111
+ export interface OpenAIClient {
112
+ generateVideo(params: {
113
+ prompt: string;
114
+ model: 'sora-2' | 'sora-2-pro';
115
+ seconds: number;
116
+ size: string;
117
+ }): Promise<{
118
+ url: string;
119
+ durationSeconds: number;
120
+ }>;
121
+ generateImage(params: {
122
+ prompt: string;
123
+ model?: string;
124
+ size?: string;
125
+ }): Promise<{
126
+ url: string;
127
+ }>;
128
+ }
129
+ /**
130
+ * Anthropic Claude API client for AI generation.
131
+ */
132
+ export interface AnthropicClient {
133
+ generateText(params: {
134
+ prompt: string;
135
+ systemPrompt?: string;
136
+ model?: string;
137
+ maxTokens?: number;
138
+ }): Promise<string>;
139
+ generateStructured<T>(params: {
140
+ prompt: string;
141
+ systemPrompt?: string;
142
+ model?: string;
143
+ schema: unknown;
144
+ }): Promise<T>;
145
+ }
146
+ /**
147
+ * Notification service for alerting users.
148
+ */
149
+ export interface NotificationService {
150
+ send(params: {
151
+ userId: string;
152
+ title: string;
153
+ message: string;
154
+ channel?: 'slack' | 'email' | 'in-app';
155
+ data?: Record<string, unknown>;
156
+ }): Promise<void>;
157
+ }
158
+ /**
159
+ * Email drafts service for creating and managing draft emails.
160
+ */
161
+ export interface EmailDraftsService {
162
+ createDraft(params: {
163
+ campaignId: string;
164
+ userId: string;
165
+ toEmail: string;
166
+ toName?: string;
167
+ toCompany?: string;
168
+ toTitle?: string;
169
+ subject: string;
170
+ body: string;
171
+ contactId?: string;
172
+ }): Promise<EmailDraft>;
173
+ }
174
+ export interface EmailDraft {
175
+ id: string;
176
+ toEmail: string;
177
+ toName?: string;
178
+ toCompany?: string;
179
+ toTitle?: string;
180
+ subject: string;
181
+ body: string;
182
+ status: string;
183
+ }
184
+ /**
185
+ * Analyzed posts storage for social monitoring.
186
+ */
187
+ export interface AnalyzedPostsStorage {
188
+ storePosts(params: {
189
+ monitoringConfigId: string;
190
+ posts: AnalyzedPostData[];
191
+ }): Promise<void>;
192
+ }
193
+ export interface AnalyzedPostData {
194
+ platform: 'twitter' | 'reddit' | 'linkedin';
195
+ externalId: string;
196
+ url: string;
197
+ text: string;
198
+ authorName: string;
199
+ authorHandle: string;
200
+ authorUrl: string;
201
+ authorFollowers?: number;
202
+ engagement: {
203
+ likes: number;
204
+ comments: number;
205
+ shares: number;
206
+ views?: number;
207
+ };
208
+ relevanceScore: number;
209
+ sentiment: 'positive' | 'negative' | 'neutral';
210
+ isComplaint: boolean;
211
+ urgencyLevel: 'low' | 'medium' | 'high';
212
+ aiSummary: string;
213
+ matchedKeywords: string[];
214
+ postedAt: Date;
215
+ }
216
+ /**
217
+ * Storage service for persisting data.
218
+ */
219
+ export interface StorageService {
220
+ save<T>(key: string, data: T): Promise<void>;
221
+ get<T>(key: string): Promise<T | null>;
222
+ delete(key: string): Promise<void>;
223
+ }
224
+ /**
225
+ * Cache service for caching API responses.
226
+ */
227
+ export interface CacheService {
228
+ get<T>(key: string): Promise<T | null>;
229
+ set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
230
+ delete(key: string): Promise<void>;
231
+ }
232
+ /**
233
+ * All available services that can be injected into node context.
234
+ * All services are optional - nodes should handle missing services gracefully.
235
+ */
236
+ export interface NodeServices {
237
+ apollo?: ApolloClient;
238
+ dataForSeo?: DataForSeoClient;
239
+ twitter?: TwitterClient;
240
+ forumScout?: ForumScoutClient;
241
+ openai?: OpenAIClient;
242
+ anthropic?: AnthropicClient;
243
+ notifications?: NotificationService;
244
+ storage?: StorageService;
245
+ cache?: CacheService;
246
+ emailDrafts?: EmailDraftsService;
247
+ analyzedPosts?: AnalyzedPostsStorage;
248
+ }
249
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Service interfaces for node integrations.
3
+ * These are optional - nodes work without them but can use them when available.
4
+ * Host applications (like Jam) inject implementations via context.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jam-nodes/core",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "Core framework for building workflow nodes with type-safe executors and Zod validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",