@portel/photon 1.6.1 โ 1.8.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.
- package/README.md +111 -160
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +218 -106
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/design-system/tokens.d.ts +1 -1
- package/dist/auto-ui/design-system/tokens.d.ts.map +1 -1
- package/dist/auto-ui/design-system/tokens.js +2 -2
- package/dist/auto-ui/design-system/tokens.js.map +1 -1
- package/dist/auto-ui/frontend/index.html +1 -1
- package/dist/auto-ui/platform-compat.d.ts.map +1 -1
- package/dist/auto-ui/platform-compat.js +12 -2
- package/dist/auto-ui/platform-compat.js.map +1 -1
- package/dist/auto-ui/playground-html.js +5 -5
- package/dist/auto-ui/rendering/components.d.ts.map +1 -1
- package/dist/auto-ui/rendering/components.js +568 -0
- package/dist/auto-ui/rendering/components.js.map +1 -1
- package/dist/auto-ui/rendering/field-analyzer.d.ts +56 -0
- package/dist/auto-ui/rendering/field-analyzer.d.ts.map +1 -1
- package/dist/auto-ui/rendering/field-analyzer.js +177 -0
- package/dist/auto-ui/rendering/field-analyzer.js.map +1 -1
- package/dist/auto-ui/rendering/layout-selector.d.ts +14 -2
- package/dist/auto-ui/rendering/layout-selector.d.ts.map +1 -1
- package/dist/auto-ui/rendering/layout-selector.js +125 -1
- package/dist/auto-ui/rendering/layout-selector.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +370 -26
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +7 -1
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam.bundle.js +21932 -3307
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +37 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +16 -0
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +640 -17
- package/dist/cli.js.map +1 -1
- package/dist/context-store.d.ts +79 -0
- package/dist/context-store.d.ts.map +1 -0
- package/dist/context-store.js +210 -0
- package/dist/context-store.js.map +1 -0
- package/dist/daemon/client.d.ts +13 -4
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +138 -77
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +0 -25
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +10 -38
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/protocol.d.ts +7 -2
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/server.js +317 -83
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-manager.d.ts +24 -4
- package/dist/daemon/session-manager.d.ts.map +1 -1
- package/dist/daemon/session-manager.js +62 -12
- package/dist/daemon/session-manager.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +3 -20
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +87 -77
- package/dist/loader.js.map +1 -1
- package/dist/markdown-utils.d.ts.map +1 -1
- package/dist/markdown-utils.js +2 -1
- package/dist/markdown-utils.js.map +1 -1
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +20 -3
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +258 -218
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.d.ts +2 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -1
- package/dist/photon-doc-extractor.js +45 -7
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/photons/maker.photon.d.ts.map +1 -1
- package/dist/photons/maker.photon.js +22 -4
- package/dist/photons/maker.photon.js.map +1 -1
- package/dist/photons/maker.photon.ts +47 -11
- package/dist/security-scanner.d.ts.map +1 -1
- package/dist/security-scanner.js +8 -2
- package/dist/security-scanner.js.map +1 -1
- package/dist/serv/index.d.ts +1 -1
- package/dist/serv/index.d.ts.map +1 -1
- package/dist/serv/index.js +6 -4
- package/dist/serv/index.js.map +1 -1
- package/dist/server.d.ts +32 -15
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +525 -483
- package/dist/server.js.map +1 -1
- package/dist/shared/security.d.ts +79 -0
- package/dist/shared/security.d.ts.map +1 -0
- package/dist/shared/security.js +251 -0
- package/dist/shared/security.js.map +1 -0
- package/dist/shell-completions.d.ts +21 -0
- package/dist/shell-completions.d.ts.map +1 -0
- package/dist/shell-completions.js +102 -0
- package/dist/shell-completions.js.map +1 -0
- package/dist/template-manager.d.ts.map +1 -1
- package/dist/template-manager.js +10 -3
- package/dist/template-manager.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +12 -7
package/README.md
CHANGED
|
@@ -14,7 +14,9 @@ A framework, runtime, and ecosystem. Batteries included.
|
|
|
14
14
|
[](https://nodejs.org)
|
|
15
15
|
[](https://modelcontextprotocol.io)
|
|
16
16
|
|
|
17
|
-
[Quick Start](#quick-start) ยท [
|
|
17
|
+
[Quick Start](#quick-start) ยท [Why Photon](#why-did-we-build-this) ยท [Beam UI](#beam) ยท [How It Works](#how-it-works) ยท [Docs](#documentation)
|
|
18
|
+
|
|
19
|
+
[](https://www.youtube.com/watch?v=FI0M8s6ZKv4)
|
|
18
20
|
|
|
19
21
|
</div>
|
|
20
22
|
|
|
@@ -22,7 +24,7 @@ A framework, runtime, and ecosystem. Batteries included.
|
|
|
22
24
|
|
|
23
25
|
## What Is This Thing?
|
|
24
26
|
|
|
25
|
-
So, here is the situation. You write a single TypeScript file. Just one. And somehow, through some dark magic I don
|
|
27
|
+
So, here is the situation. You write a single TypeScript file. Just one. And somehow, through some dark magic I don't fully understand either, you get three things at once:
|
|
26
28
|
|
|
27
29
|
1. **An MCP server** (so Claude or Cursor can use your tools).
|
|
28
30
|
2. **A CLI tool** (so you can run it from the terminal like a normal human).
|
|
@@ -36,20 +38,6 @@ It looks like this:
|
|
|
36
38
|
|
|
37
39
|
You just write the logic. Photon deals with the protocols, schemas, and the boring stuff that usually makes you question your life choices.
|
|
38
40
|
|
|
39
|
-
### The Basics
|
|
40
|
-
|
|
41
|
-
If you are just skimming, here is what you need to know:
|
|
42
|
-
|
|
43
|
-
| Concept | What it is | Learn more |
|
|
44
|
-
|---------|-----------|------------|
|
|
45
|
-
| **MCP** | A way for AI to use your tools. Itโs a standard. | [modelcontextprotocol.io](https://modelcontextprotocol.io/introduction) |
|
|
46
|
-
| **Photon file** | A `.photon.ts` file. You define tools as methods in a class. | [Guide](./GUIDE.md) |
|
|
47
|
-
| **Beam** | A web dashboard. It shows your tools as forms. | [Beam UI](#beam) |
|
|
48
|
-
| **Marketplace** | A way to get other peopleโs photons. | [Marketplace](#marketplace) |
|
|
49
|
-
| **Daemon** | A background thing that handles messages and jobs. | [Daemon Pub/Sub](./DAEMON-PUBSUB.md) |
|
|
50
|
-
| **Tags** | JSDoc comments that tell Photon what to do. | [Tag Reference](./DOCBLOCK-TAGS.md) |
|
|
51
|
-
| **Custom UI** | When the auto-generated forms aren't enough. | [Custom UI Guide](./CUSTOM-UI.md) |
|
|
52
|
-
|
|
53
41
|
### Who Is This For?
|
|
54
42
|
|
|
55
43
|
* **Developers** who want to give AI access to their database but are too lazy to write a full server.
|
|
@@ -60,6 +48,18 @@ You don't need to know what "MCP" actually stands for. If you can write a TypeSc
|
|
|
60
48
|
|
|
61
49
|
---
|
|
62
50
|
|
|
51
|
+
## Why did we build this?
|
|
52
|
+
|
|
53
|
+
Three reasons, if you want the short version. ([Read the longer version](./WHY-PHOTON.md))
|
|
54
|
+
|
|
55
|
+
**MCP is personal.** The best MCP is the one built for exactly one use case. Yours. Your team's. Your company's. When you stop building for everyone, the code gets absurdly simple. One file. Twelve lines. Not twelve hundred.
|
|
56
|
+
|
|
57
|
+
**Solve once, run forever.** If an LLM figured out your workflow the first time, why ask it to re-derive the same answer from scratch every time? Photon lets you keep the answer. No middleman, no tokens, no latency.
|
|
58
|
+
|
|
59
|
+
**Same door, every key.** AI calls it through MCP. You call it through CLI. You open it in Beam. Same methods, same data, same result. And half the time, you don't need AI at all. You just need the data.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
63
|
## Quick Start
|
|
64
64
|
|
|
65
65
|
If you are the type who likes to just run commands and see what happens:
|
|
@@ -81,11 +81,69 @@ npx @portel/photon
|
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
84
|
+
## Beam
|
|
85
|
+
|
|
86
|
+
Beam is the dashboard. It's where you go to poke your tools and see if they work before you let an AI loose on them.
|
|
87
|
+
|
|
88
|
+
Run `photon`. That's it.
|
|
89
|
+
|
|
90
|
+
<div align="center">
|
|
91
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-dashboard.png" alt="Beam Dashboard" width="100%">
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Connecting to AI
|
|
97
|
+
|
|
98
|
+
If you want to use this with Claude or Cursor, you need the config.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
photon info weather --mcp
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
It spits out some JSON:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"mcpServers": {
|
|
109
|
+
"weather": {
|
|
110
|
+
"command": "photon",
|
|
111
|
+
"args": ["mcp", "weather"]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Copy that. Paste it into your AI client's config file. Done.
|
|
118
|
+
|
|
119
|
+
Works with [Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Cursor](https://cursor.com), and any [MCP-compatible client](https://modelcontextprotocol.io).
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Marketplace
|
|
124
|
+
|
|
125
|
+
We also have a marketplace. 35 photons and counting.
|
|
126
|
+
|
|
127
|
+
<div align="center">
|
|
128
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-marketplace.png" alt="Marketplace" width="100%">
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
photon search postgres
|
|
133
|
+
photon add postgres
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Browse the full catalog and documentation in the [official photons repository](https://github.com/portel-dev/photons).
|
|
137
|
+
|
|
138
|
+
You can also make a private marketplace for your team, so internal tools stay off the public internet.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
84
142
|
## How It Works
|
|
85
143
|
|
|
86
144
|
A photon is just a TypeScript class. The **public methods become tools**. Photon reads your code, looks at the types, reads your comments, and then generates everything else.
|
|
87
145
|
|
|
88
|
-
I
|
|
146
|
+
I'll show you.
|
|
89
147
|
|
|
90
148
|
### Step 1: The Bare Minimum
|
|
91
149
|
|
|
@@ -107,7 +165,7 @@ export default class Weather {
|
|
|
107
165
|
* `photon` (The web UI)
|
|
108
166
|
|
|
109
167
|
<div align="center">
|
|
110
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-1.png" alt="Step 1 โ Bare method in Beam" width="
|
|
168
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-1.png" alt="Step 1 โ Bare method in Beam" width="100%">
|
|
111
169
|
</div>
|
|
112
170
|
|
|
113
171
|
### Step 2: Adding Descriptions
|
|
@@ -134,7 +192,7 @@ export default class Weather {
|
|
|
134
192
|
**What happens:** Now the UI has helpful text. Also, the AI client reads this to understand what the tool does.
|
|
135
193
|
|
|
136
194
|
<div align="center">
|
|
137
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-2.png" alt="Step 2 โ JSDoc descriptions in Beam" width="
|
|
195
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-2.png" alt="Step 2 โ JSDoc descriptions in Beam" width="100%">
|
|
138
196
|
</div>
|
|
139
197
|
|
|
140
198
|
### Step 3: Configuration (The clever bit)
|
|
@@ -160,7 +218,7 @@ export default class Weather {
|
|
|
160
218
|
**What happens:** Beam creates a settings panel. `apiKey` becomes a password field. It also maps to environment variables like `WEATHER_API_KEY`. It just works.
|
|
161
219
|
|
|
162
220
|
<div align="center">
|
|
163
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-3.png" alt="Step 3 โ Configuration panel in Beam" width="
|
|
221
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-3.png" alt="Step 3 โ Configuration panel in Beam" width="100%">
|
|
164
222
|
</div>
|
|
165
223
|
|
|
166
224
|
### Step 4: Validation (Stop bad inputs)
|
|
@@ -220,10 +278,10 @@ VideoProcessor requires the following CLI tools to be installed:
|
|
|
220
278
|
- ffmpeg: Install from https://ffmpeg.org/download.html
|
|
221
279
|
```
|
|
222
280
|
|
|
223
|
-
> See the full [Tag Reference](./DOCBLOCK-TAGS.md) for all available tags. There are 30+ covering validation, UI hints, scheduling, webhooks, and more.
|
|
281
|
+
> See the full [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) for all available tags. There are 30+ covering validation, UI hints, scheduling, webhooks, and more.
|
|
224
282
|
|
|
225
283
|
<div align="center">
|
|
226
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-4.png" alt="Step 4 โ Validation and formatting in Beam" width="
|
|
284
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-4.png" alt="Step 4 โ Validation and formatting in Beam" width="100%">
|
|
227
285
|
</div>
|
|
228
286
|
|
|
229
287
|
### Step 5: Custom UI (When you want to be fancy)
|
|
@@ -264,10 +322,10 @@ export default class Weather {
|
|
|
264
322
|
|
|
265
323
|
**What changes in Beam:** Instead of the auto-generated table, results render inside your custom HTML (a weather dashboard with icons, charts, or any visualization you build). The `window.photon` API bridges your UI to the tool system.
|
|
266
324
|
|
|
267
|
-
> Custom UIs follow the [MCP Apps Extension (SEP-1865)](https://github.com/nicolo-ribaudo/modelcontextprotocol/blob/nicolo/sep-1865/docs/specification/draft/extensions/apps.mdx) standard and work across compatible hosts. See the [Custom UI Guide](./CUSTOM-UI.md).
|
|
325
|
+
> Custom UIs follow the [MCP Apps Extension (SEP-1865)](https://github.com/nicolo-ribaudo/modelcontextprotocol/blob/nicolo/sep-1865/docs/specification/draft/extensions/apps.mdx) standard and work across compatible hosts. See the [Custom UI Guide](./docs/guides/CUSTOM-UI.md).
|
|
268
326
|
|
|
269
327
|
<div align="center">
|
|
270
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-5.png" alt="Step 5 โ Custom UI result in Beam" width="
|
|
328
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/readme-step-5.png" alt="Step 5 โ Custom UI result in Beam" width="100%">
|
|
271
329
|
</div>
|
|
272
330
|
|
|
273
331
|
### In Summary
|
|
@@ -281,129 +339,24 @@ export default class Weather {
|
|
|
281
339
|
| **5. Custom UI** | HTML | A custom app |
|
|
282
340
|
|
|
283
341
|
<div align="center">
|
|
284
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/photon-ecosystem.png" alt="Photon Ecosystem" width="
|
|
285
|
-
</div>
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Beam
|
|
290
|
-
|
|
291
|
-
Beam is the dashboard. Itโs where you go to poke your tools and see if they work before you let an AI loose on them.
|
|
292
|
-
|
|
293
|
-
Run `photon`. Thatโs it.
|
|
294
|
-
|
|
295
|
-
<div align="center">
|
|
296
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-dashboard.png" alt="Beam Dashboard" width="700">
|
|
342
|
+
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/photon-ecosystem.png" alt="Photon Ecosystem" width="100%">
|
|
297
343
|
</div>
|
|
298
344
|
|
|
299
345
|
---
|
|
300
346
|
|
|
301
|
-
##
|
|
302
|
-
|
|
303
|
-
If you want to use this with Claude or Cursor, you need the config.
|
|
304
|
-
|
|
305
|
-
```bash
|
|
306
|
-
photon info weather --mcp
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
It spits out some JSON:
|
|
347
|
+
## The Basics
|
|
310
348
|
|
|
311
|
-
|
|
312
|
-
{
|
|
313
|
-
"mcpServers": {
|
|
314
|
-
"weather": {
|
|
315
|
-
"command": "photon",
|
|
316
|
-
"args": ["mcp", "weather"]
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Copy that. Paste it into your AI clientโs config file. Done.
|
|
323
|
-
|
|
324
|
-
Works with [Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Cursor](https://cursor.com), and any [MCP-compatible client](https://modelcontextprotocol.io).
|
|
325
|
-
|
|
326
|
-
---
|
|
327
|
-
|
|
328
|
-
## Why did we build this?
|
|
329
|
-
|
|
330
|
-
Writing an MCP server usually involves 4 to 6 files and about 150 lines of code before you even start writing the thing you actually wanted to write.
|
|
331
|
-
|
|
332
|
-
With Photon, itโs one file.
|
|
333
|
-
|
|
334
|
-
| | Traditional MCP | Photon |
|
|
335
|
-
|---|---|---|
|
|
336
|
-
| **Files** | 4-6 (server, transport, schemas, types, config) | 1 |
|
|
337
|
-
| **Boilerplate** | 150+ lines | 0 |
|
|
338
|
-
| **Dependencies** | Manual `npm install` | Automatic |
|
|
339
|
-
| **Schema** | Hand-written JSON Schema | Generated from TS types |
|
|
340
|
-
| **Config** | Manual env var parsing | Automatic from Constructor |
|
|
341
|
-
|
|
342
|
-
It is unnecessarily difficult to do it the old way. So we stopped doing it.
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## Marketplace
|
|
347
|
-
|
|
348
|
-
We also have a marketplace. 31 photons and counting.
|
|
349
|
-
|
|
350
|
-
<div align="center">
|
|
351
|
-
<img src="https://raw.githubusercontent.com/portel-dev/photon/main/assets/beam-marketplace.png" alt="Marketplace" width="700">
|
|
352
|
-
</div>
|
|
353
|
-
|
|
354
|
-
```bash
|
|
355
|
-
photon search postgres
|
|
356
|
-
photon add postgres
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Available Photons
|
|
360
|
-
|
|
361
|
-
**Productivity**
|
|
362
|
-
|
|
363
|
-
| Photon | What it does | Tools |
|
|
364
|
-
|--------|-------------|-------|
|
|
365
|
-
| ๐ **kanban** | Multi-tenant task boards for humans and AI | 33 |
|
|
366
|
-
| ๐ฌ **git-box** | Mailbox-style Git interface, manage repos like an inbox | 58 |
|
|
367
|
-
| ๐ฌ **form-inbox** | Webhook-powered form submission collector | 12 |
|
|
368
|
-
| ๐
**google-calendar** | Calendar integration via OAuth | 9 |
|
|
369
|
-
| ๐ซ **jira** | Project management and issue tracking | 10 |
|
|
370
|
-
| ๐ฌ **slack** | Send messages and manage Slack workspaces | 7 |
|
|
371
|
-
| ๐ง **email** | Send and receive via SMTP/IMAP | 8 |
|
|
372
|
-
|
|
373
|
-
**Infrastructure**
|
|
374
|
-
|
|
375
|
-
| Photon | What it does | Tools |
|
|
376
|
-
|--------|-------------|-------|
|
|
377
|
-
| ๐ **filesystem** | Safe, cross-platform file operations | 13 |
|
|
378
|
-
| ๐ **git** | Local git repository operations | 11 |
|
|
379
|
-
| ๐ **github-issues** | Manage GitHub issues and comments | 7 |
|
|
380
|
-
| ๐ณ **docker** | Container and image management | 10 |
|
|
381
|
-
| โ๏ธ **aws-s3** | S3 object storage operations | 11 |
|
|
382
|
-
| ๐ **web** | DuckDuckGo search + Readability extraction | 2 |
|
|
383
|
-
|
|
384
|
-
**Databases**
|
|
385
|
-
|
|
386
|
-
| Photon | What it does | Tools |
|
|
387
|
-
|--------|-------------|-------|
|
|
388
|
-
| ๐ **postgres** | PostgreSQL queries and schema ops | 7 |
|
|
389
|
-
| ๐๏ธ **sqlite** | SQLite database operations | 9 |
|
|
390
|
-
| ๐ **mongodb** | MongoDB document CRUD and aggregation | 13 |
|
|
391
|
-
| โก **redis** | Key-value store, lists, sets, pub/sub | 18 |
|
|
392
|
-
|
|
393
|
-
**Utilities and Demos**
|
|
394
|
-
|
|
395
|
-
| Photon | What it does | Tools |
|
|
396
|
-
|--------|-------------|-------|
|
|
397
|
-
| ๐ **time** | Timezone conversion and queries | 3 |
|
|
398
|
-
| ๐งฎ **math** | Expression evaluator (trig, stats, etc.) | 1 |
|
|
399
|
-
| ๐ **code-diagram** | Generate Mermaid diagrams from code | 3 |
|
|
400
|
-
| ๐ด **connect-four** | Play against AI with distributed locks | 8 |
|
|
401
|
-
| ๐ณ **kitchen-sink** | Every runtime feature in one file | 25 |
|
|
402
|
-
| ๐ **dashboard** | MCP Apps UI demo | 6 |
|
|
403
|
-
| ๐บ **team-dashboard** | TV/monitor-optimized team display | 20 |
|
|
404
|
-
| ๐ญ **mcp-orchestrator** | Combine multiple MCPs into workflows | 10 |
|
|
349
|
+
If you are just skimming, here is what you need to know:
|
|
405
350
|
|
|
406
|
-
|
|
351
|
+
| Concept | What it is | Learn more |
|
|
352
|
+
|---------|-----------|------------|
|
|
353
|
+
| **MCP** | A way for AI to use your tools. It's a standard. | [modelcontextprotocol.io](https://modelcontextprotocol.io/introduction) |
|
|
354
|
+
| **Photon file** | A `.photon.ts` file. You define tools as methods in a class. | [Guide](./docs/GUIDE.md) |
|
|
355
|
+
| **Beam** | A web dashboard. It shows your tools as forms. | [Beam UI](#beam) |
|
|
356
|
+
| **Marketplace** | A way to get other people's photons. | [Marketplace](#marketplace) |
|
|
357
|
+
| **Daemon** | A background thing that handles messages and jobs. | [Daemon Pub/Sub](./docs/core/DAEMON-PUBSUB.md) |
|
|
358
|
+
| **Tags** | JSDoc comments that tell Photon what to do. | [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) |
|
|
359
|
+
| **Custom UI** | When the auto-generated forms aren't enough. | [Custom UI Guide](./docs/guides/CUSTOM-UI.md) |
|
|
407
360
|
|
|
408
361
|
---
|
|
409
362
|
|
|
@@ -424,7 +377,7 @@ photon maker new <name> # Scaffold a new photon
|
|
|
424
377
|
# Manage
|
|
425
378
|
photon info # List all photons
|
|
426
379
|
photon info <name> --mcp # Get MCP client config (paste into Claude/Cursor)
|
|
427
|
-
photon validate <name>
|
|
380
|
+
photon maker validate <name> # Check for errors
|
|
428
381
|
|
|
429
382
|
# Marketplace
|
|
430
383
|
photon add <name> # Install photon
|
|
@@ -433,7 +386,6 @@ photon upgrade # Upgrade all
|
|
|
433
386
|
|
|
434
387
|
# Ops
|
|
435
388
|
photon doctor # Diagnose environment
|
|
436
|
-
photon audit # Security audit
|
|
437
389
|
photon test # Run tests
|
|
438
390
|
```
|
|
439
391
|
|
|
@@ -459,7 +411,7 @@ Tags are JSDoc annotations that control how Photon processes your code. Here are
|
|
|
459
411
|
| `@mcp` | Class | Inject another MCP server as a dependency |
|
|
460
412
|
| `@icon` | Class/Method | Set emoji icon |
|
|
461
413
|
|
|
462
|
-
> This is a subset. See the full [Tag Reference](./DOCBLOCK-TAGS.md) for all 30+ tags with examples.
|
|
414
|
+
> This is a subset. See the full [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) for all 30+ tags with examples.
|
|
463
415
|
|
|
464
416
|
---
|
|
465
417
|
|
|
@@ -469,33 +421,33 @@ Tags are JSDoc annotations that control how Photon processes your code. Here are
|
|
|
469
421
|
|
|
470
422
|
| Guide | |
|
|
471
423
|
|-------|-|
|
|
472
|
-
| [Getting Started](./GUIDE.md) | Create your first photon, step by step |
|
|
473
|
-
| [Tag Reference](./DOCBLOCK-TAGS.md) | Complete JSDoc tag reference with examples |
|
|
474
|
-
| [Naming Conventions](./NAMING-CONVENTIONS.md) | How to name methods so they read naturally as CLI commands |
|
|
475
|
-
| [Troubleshooting](./TROUBLESHOOTING.md) | Common issues and solutions |
|
|
424
|
+
| [Getting Started](./docs/GUIDE.md) | Create your first photon, step by step |
|
|
425
|
+
| [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) | Complete JSDoc tag reference with examples |
|
|
426
|
+
| [Naming Conventions](./docs/guides/NAMING-CONVENTIONS.md) | How to name methods so they read naturally as CLI commands |
|
|
427
|
+
| [Troubleshooting](./docs/TROUBLESHOOTING.md) | Common issues and solutions |
|
|
476
428
|
|
|
477
429
|
**Build more:**
|
|
478
430
|
|
|
479
431
|
| Topic | |
|
|
480
432
|
|-------|-|
|
|
481
|
-
| [Custom UI](./CUSTOM-UI.md) | Build rich interactive interfaces with `window.photon` |
|
|
482
|
-
| [OAuth](./AUTH.md) | Built-in OAuth 2.1 with Google, GitHub, Microsoft |
|
|
483
|
-
| [Daemon Pub/Sub](./DAEMON-PUBSUB.md) | Real-time cross-process messaging |
|
|
484
|
-
| [Webhooks](./WEBHOOKS.md) | HTTP endpoints for external services |
|
|
485
|
-
| [Locks](./LOCKS.md) | Distributed locks for exclusive access |
|
|
486
|
-
| [Advanced Patterns](./ADVANCED.md) | Lifecycle hooks, dependency injection, interactive workflows |
|
|
487
|
-
| [Deployment](./DEPLOYMENT.md) | Docker, Cloudflare Workers, AWS Lambda, Systemd |
|
|
433
|
+
| [Custom UI](./docs/guides/CUSTOM-UI.md) | Build rich interactive interfaces with `window.photon` |
|
|
434
|
+
| [OAuth](./docs/guides/AUTH.md) | Built-in OAuth 2.1 with Google, GitHub, Microsoft |
|
|
435
|
+
| [Daemon Pub/Sub](./docs/core/DAEMON-PUBSUB.md) | Real-time cross-process messaging |
|
|
436
|
+
| [Webhooks](./docs/reference/WEBHOOKS.md) | HTTP endpoints for external services |
|
|
437
|
+
| [Locks](./docs/reference/LOCKS.md) | Distributed locks for exclusive access |
|
|
438
|
+
| [Advanced Patterns](./docs/guides/ADVANCED.md) | Lifecycle hooks, dependency injection, interactive workflows |
|
|
439
|
+
| [Deployment](./docs/guides/DEPLOYMENT.md) | Docker, Cloudflare Workers, AWS Lambda, Systemd |
|
|
488
440
|
|
|
489
441
|
**Operate:**
|
|
490
442
|
|
|
491
443
|
| Topic | |
|
|
492
444
|
|-------|-|
|
|
493
445
|
| [Security](./SECURITY.md) | Best practices and audit checklist |
|
|
494
|
-
| [Marketplace Publishing](./MARKETPLACE-PUBLISHING.md) | Create and share team marketplaces |
|
|
495
|
-
| [Best Practices](./
|
|
496
|
-
| [Comparison](./COMPARISON.md) | Benchmarks vs official MCP implementations |
|
|
446
|
+
| [Marketplace Publishing](./docs/guides/MARKETPLACE-PUBLISHING.md) | Create and share team marketplaces |
|
|
447
|
+
| [Best Practices](./docs/guides/BEST-PRACTICES.md) | Patterns for production photons |
|
|
448
|
+
| [Comparison](./docs/COMPARISON.md) | Benchmarks vs official MCP implementations |
|
|
497
449
|
|
|
498
|
-
**Reference:** [Architecture](./ARCHITECTURE.md) ยท [Changelog](./CHANGELOG.md) ยท [Contributing](./CONTRIBUTING.md)
|
|
450
|
+
**Reference:** [Architecture](./docs/core/ARCHITECTURE.md) ยท [Changelog](./CHANGELOG.md) ยท [Contributing](./CONTRIBUTING.md)
|
|
499
451
|
|
|
500
452
|
---
|
|
501
453
|
|
|
@@ -516,4 +468,3 @@ If you find a bug, or if my code offends you, feel free to open an issue or a PR
|
|
|
516
468
|
Made by [Portel](https://github.com/portel-dev)
|
|
517
469
|
|
|
518
470
|
</div>
|
|
519
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/auto-ui/beam.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/auto-ui/beam.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2xBH,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwkFlF;AAiYD;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAsB9C"}
|