Transcription: OpenAgents Episode 039 - Component-Driven Development

June 9, 2026 ยท View on GitHub

Source: https://twitter.com/OpenAgentsInc/status/1742232060821934216 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 039: Component-Driven Development We demonstrate the componen... Upload date: 20240102 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:25:08Z

Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.

[00:00] Christopher David: Let's whip up a quick component using our new storybook component driven development flow.

[00:08] Christopher David: I want to show the basic agent metadata here. We have the steps, that's really cool, but

[00:14] Christopher David: like what's the agent's name, what's the task, what is this? I want to have a component here.

[00:20] Christopher David: So this is the actual agent page that's backing or will be backing this chat, but who is it?

[00:28] Christopher David: So let's show a new component. Let's pop over to our storybook, which is here.

[00:36] Christopher David: So we have Canvas with Node. There's just example Node, reasoned the step nodes,

[00:44] Christopher David: but I kind of want to show what agent metadata. I want it to be a node.

[00:56] Christopher David: So we'll do it as a story here. Let's go into our stories.

[01:06] Christopher David: Agent Graph, Components, Node, Node Stories.

[01:14] Christopher David: So this is the story file. You can see here that the one story that we have,

[01:24] Christopher David: step node, it takes the name of the exported function here, and throws that into there.

[01:32] Christopher David: So if I were to do something called, for now it's just called metadata node.

[01:42] Christopher David: It automatically adds metadata node.

[01:48] Christopher David: And it sees exactly what's happening.

[01:52] Christopher David: So for step node we're passing in a step, from metadata node, what should we pass in?

[02:02] Christopher David: Well I think right now on our agent node screen, we have access to the agent and the task.

[02:10] Christopher David: So maybe we want an agent metadata and task metadata.

[02:18] Christopher David: And maybe we won't even call it metadata. Maybe we'll call it agent node.

[02:24] Christopher David: And then we'll also do one for task node.

[02:36] Christopher David: And we'll do agent at the top, task, and then step.

[02:42] Christopher David: Agent task step.

[02:48] Christopher David: And let's do agent for some of the common outtiles node for now.

[02:54] Christopher David: Well you can envision that instead of passing in a step.

[03:00] Christopher David: We're going to pass in an agent.

[03:10] Christopher David: It's to find a demo agent.

[03:14] Christopher David: We have a node.demodata file here.

[03:18] Christopher David: So we'll do export, const demo agent agent.

[03:24] Christopher David: And do I have that type there?

[03:26] Christopher David: Okay, and then for the information itself, I'm using the exact same data from our seated data.

[03:34] Christopher David: We see the data in Consiers, Cedar, setting up the actual steps for the

[03:42] Christopher David: Consiers agent. Validation embedding, similarity search inference.

[03:48] Christopher David: So to get the easy JavaScript representation of that, let's actually pop over to our agent nodes.

[03:56] Christopher David: Or we have that actual data loaded and being passed the agent node.

[04:00] Christopher David: Page and let's just console dump that to here.

[04:08] Christopher David: All right, there it is.

[04:14] Christopher David: So we have created that.

[04:22] Christopher David: And I'm just going to take the exact same thing there.

[04:26] Christopher David: Boom, ID is one.

[04:30] Christopher David: Name is the Consiers tasks.

[04:36] Christopher David: Leave that empty for now.

[04:38] Christopher David: Update it at.

[04:46] Christopher David: User ID.

[04:52] Christopher David: Oh, it's saying agent type does not have.

[04:54] Christopher David: Oh, we didn't really define anything here.

[04:56] Christopher David: So we needed to create it at is a string.

[04:58] Christopher David: ID is a number.

[05:00] Christopher David: Name is a string.

[05:02] Christopher David: Task is an array of tasks.

[05:04] Christopher David: Update it at string.

[05:06] Christopher David: User ID.

[05:08] Christopher David: Okay.

[05:10] Christopher David: That's the data that we have.

[05:14] Christopher David: And while we're at it, let's build up the type for step or task rather.

[05:20] Christopher David: We have agent ID number.

[05:24] Christopher David: Create it at string.

[05:28] Christopher David: Description string.

[05:30] Christopher David: ID number.

[05:32] Christopher David: Output.

[05:34] Christopher David: We don't know what that's going to be.

[05:36] Christopher David: We're going to say any prompt.

[05:38] Christopher David: I don't think we're using that.

[05:40] Christopher David: I'm going to try leaving that off for now.

[05:42] Christopher David: Steps is an array of steps.

[05:44] Christopher David: And update it at.

[05:46] Christopher David: String.

[05:49] Christopher David: Okay.

[05:50] Christopher David: That was good.

[05:54] Christopher David: And maybe we want to do.

[05:56] Christopher David: Export const demo task.

[06:00] Christopher David: Let's just do this too.

[06:02] Christopher David: Over here.

[06:06] Christopher David: User ID.

[06:08] Christopher David: One.

[06:12] Christopher David: Create it at.

[06:14] Christopher David: Boom.

[06:17] Christopher David: Description.

[06:19] Christopher David: Here's the task.

[06:20] Christopher David: Respond to user chat message after consulting knowledge base.

[06:23] Christopher David: That is the main task of the const yearge.

[06:27] Christopher David: Output is.

[06:30] Christopher David: No.

[06:32] Christopher David: Steps.

[06:34] Christopher David: We'll put demo steps.

[06:37] Christopher David: I need to reorient that to be up there.

[06:46] Christopher David: And what else updated that?

[06:53] Christopher David: How's that look?

[06:56] Christopher David: Our demo steps defined.

[07:00] Christopher David: If something is still expecting the singular demo step.

[07:03] Christopher David: Just use the first one.

[07:05] Christopher David: Demotast demo agent.

[07:10] Christopher David: And for the task of the demo agent, we'll put in the demo task inside your right there.

[07:16] Christopher David: Okay.

[07:17] Christopher David: That looks good.

[07:18] Christopher David: I'll commit that.

[07:20] Christopher David: Right here we are.

[07:23] Christopher David: Metadata.

[07:25] Christopher David: Okay.

[07:26] Christopher David: So say.

[07:27] Christopher David: Update.

[07:29] Christopher David: Consiers.

[07:31] Christopher David: Node.

[07:32] Christopher David: Demot data.

[07:34] Christopher David: Say update.

[07:37] Christopher David: Agent types.

[07:40] Christopher David: We don't need.

[07:45] Christopher David: We don't need to log the console to scar that change.

[07:48] Christopher David: Let's go back to our node.

[07:50] Christopher David: Stories.

[07:52] Christopher David: Okay.

[07:53] Christopher David: So for demo agent, I should be able to just pull that in.

[07:56] Christopher David: So that exists.

[07:59] Christopher David: We might not even need a separate task node.

[08:05] Christopher David: Okay.

[08:06] Christopher David: So it's complaining because there's no where that we're defining that agent is an appropriate

[08:13] Christopher David: org or type.

[08:16] Christopher David: To be passed to the story object, the component for which is node.

[08:21] Christopher David: So a node can take an agent or it can take.

[08:28] Christopher David: It can take a step or it can take an agent.

[08:31] Christopher David: Let's go take a look at our node props.

[08:33] Christopher David: Yeah, we're saying position is optional.

[08:36] Christopher David: Step is optional.

[08:37] Christopher David: If there is a step, it needs to be up type step.

[08:40] Christopher David: If there is an agent, it needs to be up type agent.

[08:46] Christopher David: Now does that make our story stop complaining as it does?

[08:53] Christopher David: Now we just need to implement the functionality for it.

[08:59] Christopher David: Right now in the node, we're saying if there's no step, return nothing.

[09:08] Christopher David: Eventually we'll kind of extract this out with a nicer switch statement with different sub components based on the type of node.

[09:14] Christopher David: But for now, let's just do this.

[09:24] Christopher David: Agent does not know return an agent node.

[09:39] Christopher David: And let's first just get this displaying here.

[09:44] Christopher David: The title of the node bar will be agent dot name.

[09:52] Christopher David: Let's see if we see anything here.

[09:55] Christopher David: Okay, look at this.

[09:57] Christopher David: We have a dragable node called the Concierge.

[10:08] Christopher David: For node content, agent description does that work.

[10:16] Christopher David: Does agent have a description?

[10:21] Christopher David: Maybe we should do the first task.

[10:26] Christopher David: Hmm.

[10:29] Christopher David: We're going to give you a step's agent task length.

[10:49] Christopher David: Our agent task steps length does that work.

[10:58] Christopher David: Task zero steps.

[11:00] Christopher David: Steps for nice.

[11:05] Christopher David: Look how easy that looks.

[11:07] Christopher David: Type make things easy.

[11:09] Christopher David: Okay, the Concierge.

[11:15] Christopher David: Then we get out of the things like belongs to etc.

[11:21] Christopher David: Did that mess up anything of our step node?

[11:27] Christopher David: No.

[11:28] Christopher David: Okay, basic agent node.

[11:39] Christopher David: How do you really need the steps count in there?

[11:43] Christopher David: Let's see how looks on our canvas with four nodes.

[11:47] Christopher David: I'm going to go to the canvas stories.

[11:51] Christopher David: And with four nodes, watch this.

[11:54] Christopher David: Let's do a node.

[11:58] Christopher David: Let's say agents is demo agents.

[12:03] Christopher David: And I'll have to read checker the coordinates here.

[12:07] Christopher David: Let's just try the 5050.

[12:14] Christopher David: Let's go that with five nodes.

[12:19] Christopher David: And let's maybe center that.

[12:30] Christopher David: Move down everything else by 100.

[12:40] Christopher David: Okay.

[12:41] Christopher David: Now we got to fix our canvas.

[12:43] Christopher David: It's kind of going off screen there.

[12:50] Christopher David: So look how easy that was to define an agent node.

[12:55] Christopher David: It's easy and isolation.

[12:57] Christopher David: It's not fully done, but it's good enough for now.

[13:00] Christopher David: I just want to be able to start putting it in the flow and starting to reason about that.

[13:05] Christopher David: So add agent node to canvas story.

[13:11] Christopher David: And then there's the last step.

[13:12] Christopher David: Let's go drop it in there.

[13:15] Christopher David: Let's go to our agent nodes.

[13:18] Christopher David: And where we have we're looping through all of the steps.

[13:22] Christopher David: Let's also make a node where we pass in the agent.

[13:27] Christopher David: And we set, oh, thank you co-parlots.

[13:33] Christopher David: Oh, it's behind everything.

[13:38] Christopher David: Let's change the y coordinates of these.

[13:41] Christopher David: Move that down.

[13:42] Christopher David: Let's put that in kind of the center.

[13:44] Christopher David: And then we have the center of the center.

[13:49] Christopher David: And then we have the center of the center.

[13:54] Christopher David: And then we have the center of the center.

[13:59] Christopher David: And then we have the center of the center.

[14:02] Christopher David: And then we have the center of the center.

[14:05] Christopher David: And then we have the center of the center.

[14:08] Christopher David: And then we have the center of the center.

[14:12] Christopher David: Node and say task number agents dot task.

[14:21] Christopher David: Oh, does it have a count?

[14:29] Christopher David: Does not have a count?

[14:31] Christopher David: Is it good to just do task ID?

[14:33] Christopher David: And task number 49.

[14:42] Christopher David: Well, it's the first task.

[14:49] Christopher David: Well, we're hard coding in the first task.

[14:52] Christopher David: I'm just going to say task one.

[15:02] Christopher David: I'm just going to move it for now.

[15:04] Christopher David: Agent can have multiple tasks.

[15:06] Christopher David: Okay, so we can repeat the same process for a task node.

[15:08] Christopher David: We want to do everything.

[15:09] Christopher David: Okay, so let's push that up.

[15:12] Christopher David: Make sure our task pass and merge it.

[15:17] Christopher David: And this is what's.

[15:20] Christopher David: Put agent node on agent nodes page.

[15:27] Christopher David: Building worked fine.

[15:28] Christopher David: Publish the branch.

[15:33] Christopher David: Open a PR.

[15:35] Christopher David: See this process that I'm going through.

[15:37] Christopher David: I want other people to be able to go through to.

[15:39] Christopher David: So like add agent node.

[15:44] Christopher David: And story.

[15:46] Christopher David: I'll create the pull request that will have my test start running.

[15:50] Christopher David: I'm going to upload a screenshot of what I built.

[15:55] Christopher David: I'm going to take a picture of it right there.

[16:06] Christopher David: Agent and steps.

[16:21] Christopher David: There.

[16:38] Christopher David: So you're running through our tests.

[16:40] Christopher David: And making sure you can fill our front end.

[16:44] Christopher David: Our test pass there.

[16:45] Christopher David: We didn't make any back end changes.

[16:47] Christopher David: So that is component driven development.

[17:07] Christopher David: Everybody.

[17:08] Christopher David: And encourage you to take a look at this component driven.org to learn about the philosophy there.

[17:13] Christopher David: But this is something that if there's some component that you want to see like a.

[17:18] Christopher David: Lightning, sats, payments.

[17:21] Christopher David: Visualization, even stuff that hasn't been specced out in terms of the actual functionality.

[17:25] Christopher David: To be able to quickly whip up stories and demonstrate how components work.

[17:31] Christopher David: It's that anybody can now make changes to this repo.

[17:35] Christopher David: Very cool.

[17:36] Christopher David: So add agent node and story.

[17:39] Christopher David: School washing merge.

[17:44] Christopher David: Delete that branch.

[17:47] Christopher David: Get check out main and get pull.

[17:53] Christopher David: And I'll go show you in and voice how that deploy is.

[17:58] Christopher David: This is said to auto deploy from main branch.

[18:01] Christopher David: So now that the PR has been merged.

[18:04] Christopher David: And the project is a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a

[18:34] Christopher David: bit of that is maybe done.

[18:37] Christopher David: Straightbooking kind of aggressively cash things sometimes.

[18:42] Christopher David: That should be up in a minute.

[18:49] Christopher David: Oh, I see.

[18:50] Christopher David: It needs to build it and then it deploys it.

[18:56] Christopher David: Seems like that's done.

[19:00] Christopher David: Do a hard refresh.

[19:00] Christopher David: There we go.

[19:01] Christopher David: With five notes.

[19:03] Christopher David: So that is now live at storybook.openagents.com.

[19:07] Christopher David: Anybody can go there, can click canvas, can click.

[19:10] Christopher David: Oh, yeah.

[19:10] Christopher David: So sometimes the like caching hasn't fully auto finished.

[19:15] Christopher David: So you just got to do a hard refresh.

[19:16] Christopher David: That's just a storybook.

[19:18] Christopher David: Get that pages thing.

[19:19] Christopher David: But you see agent node.

[19:20] Christopher David: There's our agent node.

[19:22] Christopher David: Stepnodes still works.

[19:24] Christopher David: I think there's both auto documented now.

[19:25] Christopher David: Yep.

[19:26] Christopher David: We've got node agent node.

[19:28] Christopher David: Stepnode.

[19:29] Christopher David: Well, it's a better containerization for that.

[19:32] Christopher David: Five nodes and has our.

[19:39] Christopher David: Yep, it's deployed live.

[19:40] Christopher David: Open agent.com slash agent slash one.

[19:44] Christopher David: Now, it's our new node.

[19:46] Christopher David: Easy.

[19:47] Christopher David: Now let's just do that for the rest of the whole application.

[19:51] Christopher David: Yeah.