-
Notifications
You must be signed in to change notification settings - Fork 44
fix: docs-mcp corrections and minor code cleanup #67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -27,10 +27,9 @@ jam-nodes is an extensible, type-safe workflow node framework for building autom | |||||
| \`\`\` | ||||||
| @jam-nodes/core → Types, NodeRegistry, ExecutionContext, defineNode utility | ||||||
| @jam-nodes/nodes → Built-in node definitions (logic, transform, AI, integrations) | ||||||
| @jam-nodes/editor → React visual editor, WorkflowRunner, schema introspection | ||||||
| \`\`\` | ||||||
|
|
||||||
| **core** is dependency-free (except Zod + jsonpath-plus). **nodes** depends on core. **editor** depends on core + React + @xyflow/react. | ||||||
| **core** is dependency-free (except Zod + jsonpath-plus). **nodes** depends on core. | ||||||
|
|
||||||
| ## Quick Start | ||||||
|
|
||||||
|
|
@@ -729,19 +728,67 @@ export interface NodeInfo { | |||||
| } | ||||||
|
|
||||||
| const NODE_TYPES: NodeInfo[] = [ | ||||||
| // Logic | ||||||
| { type: 'conditional', name: 'Conditional', category: 'logic', description: 'Branch workflow based on a condition', fullDoc: '' }, | ||||||
| { type: 'end', name: 'End', category: 'logic', description: 'Mark the end of a workflow branch', fullDoc: '' }, | ||||||
| { type: 'delay', name: 'Delay', category: 'logic', description: 'Pause workflow execution for a specified duration', fullDoc: '' }, | ||||||
| { type: 'webhook_trigger', name: 'Webhook Trigger', category: 'logic', description: 'Receive and validate incoming webhook payloads', fullDoc: '' }, | ||||||
| // Transform | ||||||
| { type: 'map', name: 'Map', category: 'transform', description: 'Extract a property from each item in an array', fullDoc: '' }, | ||||||
| { type: 'filter', name: 'Filter', category: 'transform', description: 'Filter items in an array based on a condition', fullDoc: '' }, | ||||||
| { type: 'sort', name: 'Sort', category: 'transform', description: 'Sort array items by a property', fullDoc: '' }, | ||||||
| // Examples | ||||||
| { type: 'http_request', name: 'HTTP Request', category: 'integration', description: 'Make HTTP requests to external APIs', fullDoc: '' }, | ||||||
| { type: 'bread', name: 'Bread', category: 'integration', description: 'Simple demo node returning a greeting', fullDoc: '' }, | ||||||
| // Social | ||||||
| { type: 'reddit_monitor', name: 'Reddit Monitor', category: 'integration', description: 'Search Reddit for posts matching keywords', fullDoc: '' }, | ||||||
| { type: 'twitter_monitor', name: 'Twitter Monitor', category: 'integration', description: 'Search Twitter/X for posts matching keywords', fullDoc: '' }, | ||||||
| { type: 'twitter_create_tweet', name: 'Twitter Create Tweet', category: 'integration', description: 'Post a new tweet on Twitter/X', fullDoc: '' }, | ||||||
| { type: 'twitter_delete_tweet', name: 'Twitter Delete Tweet', category: 'integration', description: 'Delete a tweet by ID', fullDoc: '' }, | ||||||
| { type: 'twitter_like_tweet', name: 'Twitter Like Tweet', category: 'integration', description: 'Like a tweet by ID', fullDoc: '' }, | ||||||
| { type: 'twitter_retweet', name: 'Twitter Retweet', category: 'integration', description: 'Retweet a tweet by ID', fullDoc: '' }, | ||||||
| { type: 'twitter_search_tweets', name: 'Twitter Search Tweets', category: 'integration', description: 'Search tweets by query', fullDoc: '' }, | ||||||
| { type: 'twitter_send_dm', name: 'Twitter Send DM', category: 'integration', description: 'Send a direct message on Twitter/X', fullDoc: '' }, | ||||||
| { type: 'twitter_get_user_by_username', name: 'Twitter Get User', category: 'integration', description: 'Look up a Twitter/X user by username', fullDoc: '' }, | ||||||
|
||||||
| { type: 'twitter_get_user_by_username', name: 'Twitter Get User', category: 'integration', description: 'Look up a Twitter/X user by username', fullDoc: '' }, | |
| { type: 'twitter_get_user_by_username', name: 'Twitter Get User By Username', category: 'integration', description: 'Get a Twitter/X user profile by username', fullDoc: '' }, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -36,15 +36,15 @@ export const TOOLS: Tool[] = [ | |
| }, | ||
| { | ||
| name: 'list_nodes', | ||
| description: 'List all 16 built-in jam-nodes nodes with their type, name, category, and brief description.', | ||
| description: 'List all built-in jam-nodes nodes with their type, name, category, and brief description.', | ||
| inputSchema: { | ||
| type: 'object', | ||
| properties: {}, | ||
| }, | ||
| }, | ||
| { | ||
| name: 'get_api_reference', | ||
| description: 'Get jam-nodes API reference for a specific area. Areas: "core", "types", "registry", "execution-context", "editor", "workflow-runner", "schema-introspector", "nodes".', | ||
| description: 'Get jam-nodes API reference for a specific area. Areas: "core", "types", "registry", "execution-context", "nodes".', | ||
| inputSchema: { | ||
|
Comment on lines
46
to
48
|
||
| type: 'object', | ||
| properties: { | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -194,7 +194,6 @@ export const seoKeywordResearchNode = defineNode({ | |
| } | ||
| } catch (kwError) { | ||
| // Continue with other keywords on individual failures | ||
| console.warn(`Error researching keyword "${seedKeyword}":`, kwError); | ||
| } | ||
|
Comment on lines
195
to
197
|
||
| } | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
breadnode metadata here doesn’t match the actual node definition: inpackages/nodes/src/examples/bread.tsit’s categorized asactionand described as always outputting "bread". Sincelist_nodesrelies on this list, please update this entry’s category/description (and any other mismatches) to reflect the real node metadata.