Transcription: OpenAgents Episode 054 - Uploading a Plugin

June 9, 2026 ยท View on GitHub

Source: https://twitter.com/OpenAgentsInc/status/1747994309549318228 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 054: Uploading a Plugin "I'm a developer. I've written an age... Upload date: 20240118 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:12:34Z

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

[00:00] Christopher David: Now we arrive at core functionality.

[00:04] Christopher David: I'm a developer.

[00:05] Christopher David: I've written an agent plugin.

[00:08] Christopher David: Now I want to upload my plugin to open agents and get paid a string of residual revenue.

[00:15] Christopher David: Every time my plugin is used in a paid agent flow.

[00:19] Christopher David: So let's build this out via htmx using our new plugins.

[00:30] Christopher David: Let's get on a new branch.

[00:34] Christopher David: We'll call this upload plugin.

[00:37] Christopher David: And we're going to drive out this entire thing via tests.

[00:41] Christopher David: So let's just take a look at what we have right now.

[00:44] Christopher David: I deleted the featured test because really everything that we did thus far belongs in unit tests.

[00:56] Christopher David: Added those to integration tests because they take a while.

[01:01] Christopher David: These are about one or two seconds each time to load the wasm plugin.

[01:04] Christopher David: So just so we can see if they pass.

[01:07] Christopher David: And let's see.

[01:14] Christopher David: I guess they shouldn't all be integration.

[01:16] Christopher David: This one doesn't need to be.

[01:19] Christopher David: And this one doesn't need to be.

[01:24] Christopher David: Okay, that's good for now.

[01:41] Christopher David: Okay, so what's the first thing we need to do?

[01:47] Christopher David: Let's upload plugin test.

[02:02] Christopher David: Let's see.

[02:05] Christopher David: You know what we're funny?

[02:08] Christopher David: So if I took the quote.

[02:12] Christopher David: Here.

[02:13] Christopher David: Let's see if.

[02:14] Christopher David: Let's see if copilot can help us out with this.

[02:22] Christopher David: I can upload a plugin.

[02:24] Christopher David: March has a good name.

[02:28] Christopher David: Okay, so user can upload.

[02:35] Christopher David: Plug in.

[02:42] Christopher David: Yes, we did have a lifting ourselves.

[02:45] Christopher David: So visit.

[02:55] Christopher David: What's the URL be?

[02:58] Christopher David: Visit the upload plugin page.

[03:01] Christopher David: Yeah, we call that for now.

[03:11] Christopher David: Okay, let's start with the most basic setup of the page.

[03:21] Christopher David: All right, getting a 302 because it does not exist.

[03:38] Christopher David: And I think we will.

[03:52] Christopher David: Do this in a new controller.

[03:57] Christopher David: Do a plugin controller.

[04:05] Christopher David: And I think I want to call this plugins.

[04:17] Christopher David: Let's make the controller.

[04:26] Christopher David: And the view.

[04:45] Christopher David: I'm putting the route file.

[05:11] Christopher David: Okay, I think I'll be there.

[05:21] Christopher David: Okay, I feel I'm starting the high contains upload plugin.

[05:32] Christopher David: Okay, so initial plugin page view test.

[05:39] Christopher David: And we can.

[05:44] Christopher David: Go to openagents.appslash plugins.

[06:02] Christopher David: What am I doing wrong here?

[06:24] Christopher David: That works.

[06:27] Christopher David: Okay, I'm going to add a little bit of the

[06:34] Christopher David: All right, so we got upload plugin.

[06:43] Christopher David: And more, it's also a certain that the view is plugins.

[06:49] Christopher David: Oops.

[06:58] Christopher David: Now we're going to do an HTML form.

[07:10] Christopher David: I want to start that we see a form right.

[07:33] Christopher David: Let's see how close that got.

[07:48] Christopher David: Oops.

[07:57] Christopher David: Oops.

[08:26] Christopher David: Did we do this already.

[08:44] Christopher David: And the player on the.

[09:11] Christopher David: And then I think we're going to do it again.

[09:24] Christopher David: So that's name and description.

[09:28] Christopher David: Yeah, I think I like that.

[09:34] Christopher David: And then I think for now we will only load a plugin from an HTTP and points.

[10:04] Christopher David: Okay, so now I'm going to do this.

[10:25] Christopher David: Now what I don't know is if.

[10:29] Christopher David: Like what's the best practice for testing this endpoint.

[10:43] Christopher David: I guess just the normal hitting the post.

[10:48] Christopher David: Because if it were a desk browser test, we could just have it fill in these fields and click the button.

[11:10] Christopher David: Well, this is a post request to plugins.

[11:37] Christopher David: Right now.

[12:07] Christopher David: Okay.

[12:32] Christopher David: Okay.

[13:00] Christopher David: Okay.

[13:25] Christopher David: We'll call this store.

[13:40] Christopher David: That kind of validation does not work.

[14:08] Christopher David: Okay.

[14:33] Christopher David: Okay.

[14:58] Christopher David: Okay.

[15:12] Christopher David: Okay.

[15:25] Christopher David: Okay.

[15:50] Christopher David: Okay.

[16:18] Christopher David: Okay.

[16:33] Christopher David: Yeah, the format already done for this was the profile controller in the current code base.

[16:41] Christopher David: Okay.

[17:06] Christopher David: Okay.

[17:34] Christopher David: Okay.

[17:44] Christopher David: Okay.

[18:09] Christopher David: Okay.

[18:37] Christopher David: It's not a redirect.

[18:48] Christopher David: We're just asserting that we see the message.

[18:59] Christopher David: Okay.

[19:14] Christopher David: Okay.

[19:23] Christopher David: Okay.

[19:33] Christopher David: Okay.

[19:51] Christopher David: Okay.

[19:59] Christopher David: And now, a search that there is one plugin.

[20:15] Christopher David: So now we need to create a plugin.

[20:32] Christopher David: I'm going to skip validation for now.

[20:34] Christopher David: I'm going to drive that out via test in a second.

[20:38] Christopher David: Plug in, create name request name.

[20:42] Christopher David: We also need the WASM URL, but let's just see if this works for now.

[20:47] Christopher David: Okay, we need to allow Master Simon on plugins.

[20:55] Christopher David: Or do it by field, but we'll just do a Master Simon.

[21:03] Christopher David: Okay, that works except I also want the description.

[21:13] Christopher David: Right now is not a field, so we'll drop to our plugin test.

[21:18] Christopher David: Say it has a description.

[21:27] Christopher David: Okay.

[21:33] Christopher David: And I'm going to do that again in the factory.

[22:03] Christopher David: Go.

[22:13] Christopher David: Let's see if our form is hooked up now.

[22:23] Christopher David: I don't know if this is going to check if it's URL.

[22:28] Christopher David: Okay, error 500.

[22:31] Christopher David: No value in column name.

[22:35] Christopher David: Because the fields probably don't match up.

[22:39] Christopher David: Go to plugins.

[22:43] Christopher David: Yeah.

[22:45] Christopher David: So let's replace plugin name.

[22:53] Christopher David: Plug in description.

[23:00] Christopher David: Plug in WASM URL.

[23:03] Christopher David: Let's just WASM URL.

[23:08] Christopher David: Okay, try that again.

[23:14] Christopher David: Okay, we got 200.

[23:16] Christopher David: Plug in upload it successfully.

[23:18] Christopher David: And we'll confirm that in the database.

[23:22] Christopher David: There we go.

[23:23] Christopher David: As does F3434.

[23:26] Christopher David: With the fake URL.

[23:27] Christopher David: Now we can add validation.

[23:32] Christopher David: Should we do that now?

[23:34] Christopher David: I guess we should.

[23:40] Christopher David: Now we can't use the standard request validation helper from LairaVel because that will

[23:47] Christopher David: throw I think like a 422 error.

[23:50] Christopher David: If the validation doesn't return.

[23:52] Christopher David: But HM has its expecting HTML back.

[23:56] Christopher David: So we're going to go back to that tutorial from Andre and we're going to see how he

[24:03] Christopher David: implements the validator.

[24:07] Christopher David: He errors on it.

[24:09] Christopher David: But we don't want that.

[24:10] Christopher David: We want to return our own view with just the errors.

[24:13] Christopher David: So similar to what we have here, but for our errors.

[24:16] Christopher David: So we have to make one small change here and that's to make use of the validator manually.

[24:21] Christopher David: So let's comment this out.

[24:23] Christopher David: Let's say validator equals validator make.

[24:28] Christopher David: Let's pass in request all.

[24:32] Christopher David: And our validation rules in here.

[24:35] Christopher David: So let's do the same thing as this.

[24:38] Christopher David: Let's paste that in.

[24:40] Christopher David: Uncommit that.

[24:41] Christopher David: Make sure to save.

[24:43] Christopher David: Let's import validator.

[24:46] Christopher David: Okay.

[24:47] Christopher David: And now we can check if the validation fails with validator fails.

[24:52] Christopher David: So if.

[24:54] Christopher David: Validator fails.

[24:57] Christopher David: Then we can return a view with the errors.

[25:00] Christopher David: So similar to this.

[25:01] Christopher David: We'll make a new view called.

[25:03] Christopher David: Contact error.

[25:05] Christopher David: Paste that in.

[25:06] Christopher David: But we'll also pass in all of the errors.

[25:09] Christopher David: So errors.

[25:10] Christopher David: Is.

[25:12] Christopher David: Validator.

[25:14] Christopher David: Errs.

[25:16] Christopher David: Okay.

[25:17] Christopher David: So let's duplicate this content.

[25:20] Christopher David: Cool.

[25:22] Christopher David: Or now I'll try this out via test.

[25:24] Christopher David: But I'm not sure what to assert.

[25:26] Christopher David: Yes.

[25:28] Christopher David: So to.

[25:30] Christopher David: Validator equals.

[25:32] Christopher David: Validator.

[25:33] Christopher David: Make.

[25:35] Christopher David: Question.

[25:40] Christopher David: All.

[25:41] Christopher David: That should work.

[25:43] Christopher David: Name a choir description of choir.

[25:45] Christopher David: Wasmula are required.

[25:47] Christopher David: Nice.

[25:48] Christopher David: If.

[25:49] Christopher David: Validator fails return.

[25:51] Christopher David: Fun.

[25:52] Christopher David: Fun.

[25:54] Christopher David: Fun.

[25:55] Christopher David: Fun.

[25:56] Christopher David: Fun.

[25:57] Christopher David: Fun.

[25:58] Christopher David: Fun.

[25:59] Christopher David: Fun.

[26:00] Christopher David: Fun.

[26:01] Christopher David: Fun.

[26:03] Christopher David: Fun.

[26:04] Christopher David: Now we're just going to say.

[26:06] Christopher David: Plug it up.

[26:07] Christopher David: Fail.

[26:13] Christopher David: And let's go to.

[26:14] Christopher David: Upload plug and test.

[26:16] Christopher David: And we'll say.

[26:18] Christopher David: Um.

[26:23] Christopher David: Upload requires plugin to have a name.

[26:31] Christopher David: So.

[26:46] Christopher David: So.

[26:48] Christopher David: Note this.

[26:51] Christopher David: We want to assert.

[26:53] Christopher David: I think it's still.

[26:54] Christopher David: Is it still going to come back?

[26:55] Christopher David: Is it 200?

[26:57] Christopher David: I don't know.

[26:59] Christopher David: But we do an assert that we see.

[27:01] Christopher David: Well, we eventually want to assert this.

[27:03] Christopher David: For now, we want to assert that we see.

[27:06] Christopher David: Plug it up.

[27:25] Christopher David: Okay.

[27:27] Christopher David: We need to pull in the Validator.

[27:29] Christopher David: There we go.

[27:58] Christopher David: But what I really want to see is the right error.

[28:04] Christopher David: And right now we do not.

[28:07] Christopher David: So.

[28:18] Christopher David: Let's make a view.

[28:21] Christopher David: We're.

[28:28] Christopher David: Plug it up load failed.

[28:37] Christopher David: So return view.

[28:40] Christopher David: Plug it up load failed.

[28:44] Christopher David: Validator errors.

[28:48] Christopher David: But now contact error.

[28:51] Christopher David: Contact error.

[28:53] Christopher David: Play PHP.

[28:55] Christopher David: Okay.

[28:56] Christopher David: And again, I have a snippet here for errors.

[28:59] Christopher David: I believe it's called Validation errors or error error validation.

[29:03] Christopher David: And we don't need to.

[29:05] Christopher David: I'm guessing that I do not have that.

[29:13] Christopher David: All right. So.

[29:19] Christopher David: If counts.

[29:24] Christopher David: If counts.

[29:31] Christopher David: Count to the errors here because we already.

[29:42] Christopher David: If count errors is zero.

[29:52] Christopher David: My amazing talent.

[29:58] Christopher David: For each error is all as error.

[30:00] Christopher David: Show the error.

[30:02] Christopher David: That might work.

[30:04] Christopher David: It does.

[30:07] Christopher David: Okay.

[30:08] Christopher David: So let's go over here.

[30:11] Christopher David: Okay.

[30:12] Christopher David: Okay.

[30:13] Christopher David: So let's go over here.

[30:17] Christopher David: Okay.

[30:19] Christopher David: Okay.

[30:21] Christopher David: Okay.

[30:23] Christopher David: Okay.

[30:25] Christopher David: Okay.

[30:26] Christopher David: Okay.

[30:27] Christopher David: Okay.

[30:28] Christopher David: Okay.

[30:29] Christopher David: Okay.

[30:30] Christopher David: Okay.

[30:31] Christopher David: Okay.

[30:32] Christopher David: Okay.

[30:33] Christopher David: Okay.

[30:34] Christopher David: Okay.

[30:35] Christopher David: Okay.

[30:36] Christopher David: Okay.

[30:37] Christopher David: Okay.

[30:38] Christopher David: Okay.

[30:39] Christopher David: Okay.

[30:41] Christopher David: Okay.

[30:42] Christopher David: Okay.

[30:43] Christopher David: Okay.

[30:44] Christopher David: Okay.

[30:45] Christopher David: Okay.

[30:46] Christopher David: Okay.

[30:47] Christopher David: Okay.

[30:48] Christopher David: Okay.

[30:49] Christopher David: Okay.

[30:50] Christopher David: Okay.

[30:51] Christopher David: Okay.

[30:52] Christopher David: Okay.

[30:53] Christopher David: Okay.

[30:54] Christopher David: Okay.

[30:55] Christopher David: Okay.

[30:56] Christopher David: Okay.

[30:57] Christopher David: Okay.

[30:58] Christopher David: Okay.

[30:59] Christopher David: Okay.

[31:00] Christopher David: Okay.

[31:01] Christopher David: Okay.

[31:02] Christopher David: Okay.

[31:03] Christopher David: Okay.

[31:04] Christopher David: Okay.

[31:05] Christopher David: Okay.

[31:06] Christopher David: Okay.

[31:07] Christopher David: Okay.

[31:08] Christopher David: Okay.

[31:09] Christopher David: Okay.

[31:10] Christopher David: Okay.

[31:11] Christopher David: Okay.

[31:12] Christopher David: Okay.

[31:13] Christopher David: Okay.

[31:14] Christopher David: Okay.

[31:15] Christopher David: Okay.

[31:16] Christopher David: Okay.

[31:17] Christopher David: Okay.

[31:18] Christopher David: Okay.

[31:19] Christopher David: Okay.

[31:20] Christopher David: Okay.

[31:21] Christopher David: Okay.

[31:22] Christopher David: Okay.

[31:23] Christopher David: Okay.

[31:24] Christopher David: Okay.

[31:25] Christopher David: Okay.

[31:26] Christopher David: Okay.

[31:27] Christopher David: Okay.

[31:28] Christopher David: Okay.

[31:29] Christopher David: Okay.

[31:30] Christopher David: Okay.

[31:31] Christopher David: Okay.

[31:32] Christopher David: Okay.

[31:33] Christopher David: Okay.

[31:34] Christopher David: Okay.

[31:35] Christopher David: Okay.

[31:36] Christopher David: Okay.

[31:37] Christopher David: Okay.

[31:38] Christopher David: Okay.

[31:40] Christopher David: Okay.

[31:41] Christopher David: Let's maybe try URL and active URL.

[31:45] Christopher David: The wasm URL field must be a value URL is what we should be expecting to see.

[32:06] Christopher David: Okay.

[32:07] Christopher David: Okay.

[32:08] Christopher David: Okay.

[32:09] Christopher David: Okay.

[32:10] Christopher David: Okay.

[32:11] Christopher David: Okay.

[32:13] Christopher David: Okay.

[32:14] Christopher David: Okay.

[32:15] Christopher David: Okay.

[32:16] Christopher David: Okay.

[32:17] Christopher David: Okay.

[32:18] Christopher David: Okay.

[32:19] Christopher David: Okay.

[32:20] Christopher David: Okay.

[32:21] Christopher David: Okay.

[32:22] Christopher David: Okay.

[32:23] Christopher David: Okay.

[32:24] Christopher David: Okay.

[32:25] Christopher David: Okay.

[32:26] Christopher David: Okay.

[32:27] Christopher David: Okay.

[32:28] Christopher David: Okay.

[32:29] Christopher David: Okay.

[32:30] Christopher David: Okay.

[32:31] Christopher David: Okay.

[32:32] Christopher David: Okay.

[32:33] Christopher David: Okay.

[32:35] Christopher David: Okay.

[32:36] Christopher David: Okay.

[32:37] Christopher David: Okay.

[32:38] Christopher David: Okay.

[32:39] Christopher David: Okay.

[32:40] Christopher David: Okay.

[32:41] Christopher David: Okay.

[32:42] Christopher David: Okay.

[32:43] Christopher David: Okay.

[32:44] Christopher David: Okay.

[32:45] Christopher David: Okay.

[32:46] Christopher David: Okay.

[32:47] Christopher David: Okay.

[32:48] Christopher David: Okay.

[32:49] Christopher David: Okay.

[32:50] Christopher David: Okay.

[32:51] Christopher David: Okay.

[32:52] Christopher David: Okay.

[32:53] Christopher David: Okay.

[32:54] Christopher David: Okay.

[32:55] Christopher David: Okay.

[32:56] Christopher David: Okay.

[32:57] Christopher David: Okay.

[32:58] Christopher David: Okay.

[32:59] Christopher David: Okay.

[33:00] Christopher David: Okay.

[33:01] Christopher David: Okay.

[33:02] Christopher David: Okay.

[33:04] Christopher David: Okay.

[33:05] Christopher David: Okay.

[33:06] Christopher David: Okay.

[33:07] Christopher David: Okay.

[33:08] Christopher David: Okay.

[33:09] Christopher David: Okay.

[33:10] Christopher David: Okay.

[33:11] Christopher David: Okay.

[33:12] Christopher David: Okay.

[33:13] Christopher David: Okay.

[33:14] Christopher David: Okay.

[33:15] Christopher David: Okay.

[33:16] Christopher David: Okay.

[33:17] Christopher David: Okay.

[33:18] Christopher David: Okay.

[33:19] Christopher David: Okay.

[33:20] Christopher David: Okay.

[33:21] Christopher David: Okay.

[33:22] Christopher David: Okay.

[33:23] Christopher David: Okay.

[33:24] Christopher David: Okay.

[33:25] Christopher David: Okay.

[33:26] Christopher David: Okay.

[33:27] Christopher David: Okay.

[33:28] Christopher David: Okay.

[33:29] Christopher David: Okay.

[33:30] Christopher David: Okay.

[33:31] Christopher David: Okay.

[33:33] Christopher David: Okay.

[33:34] Christopher David: Okay.

[33:35] Christopher David: Okay.

[33:36] Christopher David: Okay.

[33:37] Christopher David: Okay.

[33:38] Christopher David: Okay.

[33:39] Christopher David: Okay.

[33:40] Christopher David: Okay.

[33:41] Christopher David: Okay.

[33:42] Christopher David: Okay.

[33:43] Christopher David: Okay.

[33:44] Christopher David: Okay.

[33:45] Christopher David: Okay.

[33:46] Christopher David: Okay.

[33:47] Christopher David: Okay.

[33:48] Christopher David: Okay.

[33:49] Christopher David: Okay.

[33:50] Christopher David: Okay.

[33:51] Christopher David: Okay.

[33:52] Christopher David: Okay.

[33:53] Christopher David: Okay.

[33:54] Christopher David: Okay.

[33:55] Christopher David: Okay.

[33:56] Christopher David: Okay.

[33:57] Christopher David: Okay.

[33:58] Christopher David: Okay.

[33:59] Christopher David: Okay.

[34:00] Christopher David: Okay.

[34:02] Christopher David: Okay.

[34:03] Christopher David: Okay.

[34:04] Christopher David: Okay.

[34:05] Christopher David: Okay.

[34:06] Christopher David: Okay.

[34:07] Christopher David: Okay.

[34:08] Christopher David: Okay.

[34:09] Christopher David: Okay.

[34:10] Christopher David: Okay.

[34:11] Christopher David: Okay.

[34:12] Christopher David: Okay.

[34:13] Christopher David: Okay.

[34:14] Christopher David: Okay.

[34:15] Christopher David: Okay.

[34:16] Christopher David: Okay.

[34:17] Christopher David: Okay.

[34:18] Christopher David: Okay.

[34:19] Christopher David: Okay.

[34:20] Christopher David: Okay.

[34:21] Christopher David: Okay.

[34:22] Christopher David: Okay.

[34:23] Christopher David: Okay.

[34:24] Christopher David: Okay.

[34:25] Christopher David: Okay.

[34:26] Christopher David: Okay.

[34:27] Christopher David: Okay.

[34:28] Christopher David: Okay.

[34:29] Christopher David: Okay.

[34:30] Christopher David: Okay.

[34:31] Christopher David: Okay.

[34:32] Christopher David: Okay.

[34:33] Christopher David: Okay.

[34:34] Christopher David: Okay.

[34:35] Christopher David: Okay.

[34:36] Christopher David: Okay.

[34:37] Christopher David: Okay.

[34:38] Christopher David: Okay.

[34:39] Christopher David: Okay.

[34:40] Christopher David: Okay.

[34:41] Christopher David: Okay.

[34:42] Christopher David: Okay.

[34:43] Christopher David: Okay.

[34:44] Christopher David: Okay.

[34:45] Christopher David: Okay.

[34:46] Christopher David: Okay.

[34:47] Christopher David: Okay.

[34:48] Christopher David: Okay.

[34:49] Christopher David: Okay.

[34:50] Christopher David: Okay.

[34:51] Christopher David: Okay.

[34:52] Christopher David: Okay.

[34:53] Christopher David: Okay.

[34:54] Christopher David: Okay.

[34:55] Christopher David: Okay.

[34:56] Christopher David: Okay.

[34:57] Christopher David: Okay.

[34:58] Christopher David: Okay.

[34:59] Christopher David: Okay.

[35:00] Christopher David: Okay.

[35:01] Christopher David: Okay.

[35:02] Christopher David: Okay.

[35:03] Christopher David: Okay.

[35:05] Christopher David: Okay.

[35:06] Christopher David: Okay.

[35:07] Christopher David: Okay.

[35:08] Christopher David: Okay.

[35:09] Christopher David: Okay.

[35:10] Christopher David: Okay.

[35:11] Christopher David: Okay.

[35:12] Christopher David: Okay.

[35:13] Christopher David: Okay.

[35:14] Christopher David: Okay.

[35:15] Christopher David: Okay.

[35:16] Christopher David: Okay.

[35:17] Christopher David: Okay.

[35:18] Christopher David: Okay.

[35:19] Christopher David: Okay.

[35:20] Christopher David: Okay.

[35:21] Christopher David: Okay.

[35:22] Christopher David: Okay.

[35:23] Christopher David: Okay.

[35:24] Christopher David: Okay.

[35:25] Christopher David: Okay.

[35:26] Christopher David: Okay.

[35:27] Christopher David: Okay.

[35:28] Christopher David: Okay.

[35:29] Christopher David: Okay.

[35:30] Christopher David: Okay.

[35:31] Christopher David: Okay.

[35:32] Christopher David: Okay.

[35:33] Christopher David: Okay.

[35:34] Christopher David: Okay.

[35:35] Christopher David: Okay.

[35:36] Christopher David: Okay.

[35:37] Christopher David: Okay.

[35:38] Christopher David: Okay.

[35:39] Christopher David: Okay.

[35:40] Christopher David: Okay.

[35:41] Christopher David: Okay.

[35:42] Christopher David: Okay.

[35:43] Christopher David: Okay.

[35:44] Christopher David: Okay.

[35:45] Christopher David: Okay.

[35:46] Christopher David: Okay.

[35:47] Christopher David: Okay.

[35:48] Christopher David: Okay.

[35:49] Christopher David: Okay.

[35:50] Christopher David: Okay.

[35:51] Christopher David: Okay.

[35:52] Christopher David: Okay.

[35:53] Christopher David: Okay.

[35:54] Christopher David: Okay.

[35:55] Christopher David: Okay.

[35:56] Christopher David: Okay.

[35:57] Christopher David: Okay.

[35:58] Christopher David: Okay.

[35:59] Christopher David: Okay.

[36:00] Christopher David: Okay.

[36:01] Christopher David: Okay.

[36:02] Christopher David: Okay.

[36:03] Christopher David: Okay.

[36:04] Christopher David: Okay.

[36:05] Christopher David: Okay.

[36:06] Christopher David: Okay.

[36:07] Christopher David: Okay.

[36:08] Christopher David: Okay.

[36:09] Christopher David: Okay.

[36:10] Christopher David: Okay.

[36:11] Christopher David: Okay.

[36:12] Christopher David: Okay.

[36:13] Christopher David: Okay.

[36:14] Christopher David: Okay.

[36:15] Christopher David: Okay.

[36:16] Christopher David: Okay.

[36:17] Christopher David: Okay.

[36:18] Christopher David: Okay.

[36:19] Christopher David: Okay.

[36:20] Christopher David: Okay.

[36:21] Christopher David: Okay.

[36:22] Christopher David: Okay.

[36:23] Christopher David: Okay.

[36:24] Christopher David: Okay.

[36:25] Christopher David: Okay.

[36:26] Christopher David: Okay.

[36:27] Christopher David: Okay.

[36:28] Christopher David: Okay.

[36:29] Christopher David: Okay.

[36:30] Christopher David: Okay.

[36:31] Christopher David: Okay.

[36:32] Christopher David: Okay.

[36:33] Christopher David: Okay.

[36:34] Christopher David: Okay.

[36:35] Christopher David: Okay.

[36:36] Christopher David: Okay.

[36:37] Christopher David: Okay.

[36:38] Christopher David: Okay.

[36:39] Christopher David: Okay.

[36:40] Christopher David: Okay.

[36:41] Christopher David: Okay.

[36:42] Christopher David: Okay.

[36:43] Christopher David: Okay.

[36:44] Christopher David: Okay.

[36:45] Christopher David: Okay.

[36:46] Christopher David: Okay.

[36:47] Christopher David: Okay.

[36:48] Christopher David: Okay.

[36:49] Christopher David: Okay.

[36:50] Christopher David: Okay.

[36:51] Christopher David: Okay.

[36:52] Christopher David: Okay.

[36:53] Christopher David: Okay.

[36:54] Christopher David: Okay.

[36:55] Christopher David: Okay.

[36:56] Christopher David: Okay.

[36:57] Christopher David: Okay.

[36:58] Christopher David: Okay.

[36:59] Christopher David: Okay.

[37:00] Christopher David: Okay.

[37:01] Christopher David: Okay.

[37:02] Christopher David: Okay.

[37:03] Christopher David: Okay.

[37:04] Christopher David: Okay.

[37:05] Christopher David: Okay.

[37:06] Christopher David: Okay.

[37:07] Christopher David: Okay.

[37:08] Christopher David: Okay.

[37:09] Christopher David: Okay.

[37:10] Christopher David: Okay.

[37:11] Christopher David: Okay.

[37:12] Christopher David: Okay.

[37:13] Christopher David: Okay.

[37:14] Christopher David: Okay.

[37:15] Christopher David: Okay.

[37:16] Christopher David: Okay.

[37:17] Christopher David: Okay.

[37:18] Christopher David: Okay.

[37:19] Christopher David: Okay.

[37:20] Christopher David: Okay.

[37:21] Christopher David: Okay.

[37:22] Christopher David: Okay.

[37:23] Christopher David: Okay.

[37:24] Christopher David: Okay.

[37:25] Christopher David: Okay.

[37:26] Christopher David: Okay.

[37:27] Christopher David: Okay.

[37:28] Christopher David: Okay.

[37:29] Christopher David: Okay.

[37:30] Christopher David: Okay.

[37:31] Christopher David: Okay.

[37:32] Christopher David: Okay.

[37:33] Christopher David: Okay.

[37:34] Christopher David: Okay.

[37:35] Christopher David: Okay.

[37:36] Christopher David: Okay.

[37:37] Christopher David: Okay.

[37:38] Christopher David: Okay.

[37:39] Christopher David: Okay.

[37:40] Christopher David: Okay.

[37:41] Christopher David: Okay.

[37:42] Christopher David: Okay.

[37:43] Christopher David: Okay.

[37:44] Christopher David: Okay.

[37:45] Christopher David: Okay.

[37:46] Christopher David: Okay.

[37:47] Christopher David: Okay.

[37:48] Christopher David: Okay.

[37:49] Christopher David: Okay.

[37:50] Christopher David: Okay.

[37:51] Christopher David: Okay.

[37:52] Christopher David: Okay.

[37:54] Christopher David: Let's think a little bit about.

[38:00] Christopher David: What we want to show here.

[38:07] Christopher David: Because we're going to want to add other features like most importantly, how would

[38:12] Christopher David: developer would monetize their plugin like paper use.

[38:22] Christopher David: Okay.

[38:23] Christopher David: Okay.

[38:24] Christopher David: Okay.

[38:25] Christopher David: Okay.

[38:26] Christopher David: Okay.

[38:27] Christopher David: Okay.

[38:28] Christopher David: Okay.

[38:30] Christopher David: Okay.

[38:31] Christopher David: Okay.

[38:32] Christopher David: Okay.

[38:33] Christopher David: Okay.

[38:34] Christopher David: Okay.

[38:35] Christopher David: Okay.

[38:36] Christopher David: Okay.

[38:37] Christopher David: Okay.

[38:38] Christopher David: Okay.

[38:39] Christopher David: Okay.

[38:40] Christopher David: Okay.

[38:41] Christopher David: Okay.

[38:42] Christopher David: Okay.

[38:43] Christopher David: Okay.

[38:44] Christopher David: Okay.

[38:45] Christopher David: Okay.

[38:46] Christopher David: Okay.

[38:47] Christopher David: Okay.

[38:48] Christopher David: Okay.

[38:49] Christopher David: Okay.

[38:50] Christopher David: Okay.

[38:51] Christopher David: Okay.

[38:52] Christopher David: Okay.

[38:53] Christopher David: Okay.

[38:55] Christopher David: Okay.

[38:56] Christopher David: Okay.

[38:57] Christopher David: Okay.

[38:59] Christopher David: Okay.

[39:00] Christopher David: Okay.

[39:01] Christopher David: Okay.

[39:02] Christopher David: Okay.

[39:03] Christopher David: Okay.

[39:04] Christopher David: Okay.

[39:05] Christopher David: Okay.

[39:06] Christopher David: Okay.

[39:07] Christopher David: Okay.

[39:08] Christopher David: Okay.

[39:09] Christopher David: Okay.

[39:10] Christopher David: Okay.

[39:11] Christopher David: Okay.

[39:12] Christopher David: Okay.

[39:13] Christopher David: Okay.

[39:14] Christopher David: Okay.

[39:15] Christopher David: Okay.

[39:16] Christopher David: Okay.

[39:17] Christopher David: Okay.

[39:18] Christopher David: Okay.

[39:19] Christopher David: Okay.

[39:20] Christopher David: Okay.

[39:21] Christopher David: Okay.

[39:22] Christopher David: Okay.

[39:23] Christopher David: Okay.

[39:24] Christopher David: Okay.

[39:25] Christopher David: Okay.

[39:26] Christopher David: Okay.

[39:27] Christopher David: Okay.

[39:28] Christopher David: Okay.

[39:29] Christopher David: Okay.

[39:30] Christopher David: Okay.

[39:31] Christopher David: Okay.

[39:32] Christopher David: Okay.

[39:33] Christopher David: Okay.

[39:34] Christopher David: Okay.

[39:35] Christopher David: Okay.

[39:36] Christopher David: Okay.

[39:37] Christopher David: Okay.

[39:38] Christopher David: Okay.

[39:39] Christopher David: Okay.

[39:40] Christopher David: Okay.

[39:41] Christopher David: Okay.

[39:42] Christopher David: Okay.

[39:43] Christopher David: Okay.

[39:44] Christopher David: Okay.

[39:45] Christopher David: Okay.

[39:46] Christopher David: Okay.

[39:47] Christopher David: Okay.

[39:48] Christopher David: Okay.

[39:49] Christopher David: Okay.

[39:50] Christopher David: Okay.

[39:51] Christopher David: Okay.

[39:52] Christopher David: Okay.

[39:53] Christopher David: Okay.

[39:54] Christopher David: Okay.

[39:55] Christopher David: Okay.

[39:56] Christopher David: Okay.

[39:57] Christopher David: Okay.

[39:58] Christopher David: Okay.

[39:59] Christopher David: Okay.

[40:00] Christopher David: Okay.

[40:01] Christopher David: Okay.

[40:02] Christopher David: Okay.

[40:03] Christopher David: Okay.

[40:04] Christopher David: Okay.

[40:05] Christopher David: Okay.

[40:06] Christopher David: Okay.

[40:07] Christopher David: Okay.

[40:08] Christopher David: Okay.

[40:09] Christopher David: Okay.

[40:10] Christopher David: Okay.

[40:11] Christopher David: Okay.

[40:12] Christopher David: Okay.

[40:13] Christopher David: Okay.

[40:14] Christopher David: Okay.

[40:15] Christopher David: Okay.

[40:16] Christopher David: Okay.

[40:17] Christopher David: Okay.

[39:59] Christopher David: payments to this. A basic thing would be to say, Sat's per use. Every time you use my plug-in,

[40:09] Christopher David: you pay me one sat. There's another pricing model that will be important that would be

[40:17] Christopher David: flexible because if you're doing a LLM call, for example, where the price is via tokens,

[40:28] Christopher David: if it's a long response, it's a lot like LLM tokens, not shit quanto-cons. Where the flat

[40:37] Christopher David: fee upfront wouldn't really work. So, but that can be something we hand a later.

[40:46] Christopher David: We both could be a flat fee upfront and then additional after the response is paid.

[41:05] Christopher David: I wish we call that like a fee.

[41:24] Christopher David: What if I can do this? Add a slider for a fee.

[41:35] Christopher David: I'm sure the text of the number.

[41:56] Christopher David: I have to do JavaScript.

[42:26] Christopher David: Okay. Let's go back to where unit tests.

[42:49] Christopher David: It has a fee.

[42:57] Christopher David: The fee can be zero.

[43:11] Christopher David: Let me remove this parse.

[43:19] Christopher David: Calm fee of relation plug-ins does not exist.

[43:33] Christopher David: Yeah, this can just be an integer.

[43:44] Christopher David: The fee defaults to zero.

[43:54] Christopher David: Do test plug-in plug-in blah blah blah.

[44:07] Christopher David: Boom.

[44:08] Christopher David: With a fee of 21 sets.

[44:15] Christopher David: No, did not save.

[44:19] Christopher David: Okay.

[44:26] Christopher David: So, fee.

[44:32] Christopher David: No to do.

[44:38] Christopher David: The fee required and numeric.

[44:45] Christopher David: And is it just called fee here? Yes, it is.

[45:04] Christopher David: There we go.

[45:07] Christopher David: That's it folks.

[45:15] Christopher David: That's it.

[45:20] Christopher David: A developer uploads a plug-in that they wrote in any language supported by the plug-in development

[45:26] Christopher David: kits, which is like 10 different languages.

[45:28] Christopher David: And you attach a fee in lightning sets.

[45:31] Christopher David: That's going to be paid to you every time you use it.

[45:41] Christopher David: And then it's on you to create cool plugins.

[45:47] Christopher David: I want to create some plugins.

[45:50] Christopher David: I'm going to create some plugins because I want some sets.

[45:54] Christopher David: Let's place to show off these plugins.

[46:01] Christopher David: We'll do that next.

[46:04] Christopher David: See you soon.