@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.
Files changed (113) hide show
  1. package/README.md +111 -160
  2. package/dist/auto-ui/beam.d.ts.map +1 -1
  3. package/dist/auto-ui/beam.js +218 -106
  4. package/dist/auto-ui/beam.js.map +1 -1
  5. package/dist/auto-ui/design-system/tokens.d.ts +1 -1
  6. package/dist/auto-ui/design-system/tokens.d.ts.map +1 -1
  7. package/dist/auto-ui/design-system/tokens.js +2 -2
  8. package/dist/auto-ui/design-system/tokens.js.map +1 -1
  9. package/dist/auto-ui/frontend/index.html +1 -1
  10. package/dist/auto-ui/platform-compat.d.ts.map +1 -1
  11. package/dist/auto-ui/platform-compat.js +12 -2
  12. package/dist/auto-ui/platform-compat.js.map +1 -1
  13. package/dist/auto-ui/playground-html.js +5 -5
  14. package/dist/auto-ui/rendering/components.d.ts.map +1 -1
  15. package/dist/auto-ui/rendering/components.js +568 -0
  16. package/dist/auto-ui/rendering/components.js.map +1 -1
  17. package/dist/auto-ui/rendering/field-analyzer.d.ts +56 -0
  18. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +1 -1
  19. package/dist/auto-ui/rendering/field-analyzer.js +177 -0
  20. package/dist/auto-ui/rendering/field-analyzer.js.map +1 -1
  21. package/dist/auto-ui/rendering/layout-selector.d.ts +14 -2
  22. package/dist/auto-ui/rendering/layout-selector.d.ts.map +1 -1
  23. package/dist/auto-ui/rendering/layout-selector.js +125 -1
  24. package/dist/auto-ui/rendering/layout-selector.js.map +1 -1
  25. package/dist/auto-ui/streamable-http-transport.d.ts +1 -1
  26. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
  27. package/dist/auto-ui/streamable-http-transport.js +370 -26
  28. package/dist/auto-ui/streamable-http-transport.js.map +1 -1
  29. package/dist/auto-ui/types.d.ts +7 -1
  30. package/dist/auto-ui/types.d.ts.map +1 -1
  31. package/dist/auto-ui/types.js.map +1 -1
  32. package/dist/beam.bundle.js +21932 -3307
  33. package/dist/beam.bundle.js.map +4 -4
  34. package/dist/cli/commands/info.d.ts.map +1 -1
  35. package/dist/cli/commands/info.js +37 -0
  36. package/dist/cli/commands/info.js.map +1 -1
  37. package/dist/cli/commands/package.d.ts.map +1 -1
  38. package/dist/cli/commands/package.js +16 -0
  39. package/dist/cli/commands/package.js.map +1 -1
  40. package/dist/cli.d.ts.map +1 -1
  41. package/dist/cli.js +640 -17
  42. package/dist/cli.js.map +1 -1
  43. package/dist/context-store.d.ts +79 -0
  44. package/dist/context-store.d.ts.map +1 -0
  45. package/dist/context-store.js +210 -0
  46. package/dist/context-store.js.map +1 -0
  47. package/dist/daemon/client.d.ts +13 -4
  48. package/dist/daemon/client.d.ts.map +1 -1
  49. package/dist/daemon/client.js +138 -77
  50. package/dist/daemon/client.js.map +1 -1
  51. package/dist/daemon/manager.d.ts +0 -25
  52. package/dist/daemon/manager.d.ts.map +1 -1
  53. package/dist/daemon/manager.js +10 -38
  54. package/dist/daemon/manager.js.map +1 -1
  55. package/dist/daemon/protocol.d.ts +7 -2
  56. package/dist/daemon/protocol.d.ts.map +1 -1
  57. package/dist/daemon/protocol.js.map +1 -1
  58. package/dist/daemon/server.js +317 -83
  59. package/dist/daemon/server.js.map +1 -1
  60. package/dist/daemon/session-manager.d.ts +24 -4
  61. package/dist/daemon/session-manager.d.ts.map +1 -1
  62. package/dist/daemon/session-manager.js +62 -12
  63. package/dist/daemon/session-manager.js.map +1 -1
  64. package/dist/index.d.ts +0 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +0 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/loader.d.ts +3 -20
  69. package/dist/loader.d.ts.map +1 -1
  70. package/dist/loader.js +87 -77
  71. package/dist/loader.js.map +1 -1
  72. package/dist/markdown-utils.d.ts.map +1 -1
  73. package/dist/markdown-utils.js +2 -1
  74. package/dist/markdown-utils.js.map +1 -1
  75. package/dist/marketplace-manager.d.ts.map +1 -1
  76. package/dist/marketplace-manager.js +20 -3
  77. package/dist/marketplace-manager.js.map +1 -1
  78. package/dist/photon-cli-runner.d.ts.map +1 -1
  79. package/dist/photon-cli-runner.js +258 -218
  80. package/dist/photon-cli-runner.js.map +1 -1
  81. package/dist/photon-doc-extractor.d.ts +2 -0
  82. package/dist/photon-doc-extractor.d.ts.map +1 -1
  83. package/dist/photon-doc-extractor.js +45 -7
  84. package/dist/photon-doc-extractor.js.map +1 -1
  85. package/dist/photons/maker.photon.d.ts.map +1 -1
  86. package/dist/photons/maker.photon.js +22 -4
  87. package/dist/photons/maker.photon.js.map +1 -1
  88. package/dist/photons/maker.photon.ts +47 -11
  89. package/dist/security-scanner.d.ts.map +1 -1
  90. package/dist/security-scanner.js +8 -2
  91. package/dist/security-scanner.js.map +1 -1
  92. package/dist/serv/index.d.ts +1 -1
  93. package/dist/serv/index.d.ts.map +1 -1
  94. package/dist/serv/index.js +6 -4
  95. package/dist/serv/index.js.map +1 -1
  96. package/dist/server.d.ts +32 -15
  97. package/dist/server.d.ts.map +1 -1
  98. package/dist/server.js +525 -483
  99. package/dist/server.js.map +1 -1
  100. package/dist/shared/security.d.ts +79 -0
  101. package/dist/shared/security.d.ts.map +1 -0
  102. package/dist/shared/security.js +251 -0
  103. package/dist/shared/security.js.map +1 -0
  104. package/dist/shell-completions.d.ts +21 -0
  105. package/dist/shell-completions.d.ts.map +1 -0
  106. package/dist/shell-completions.js +102 -0
  107. package/dist/shell-completions.js.map +1 -0
  108. package/dist/template-manager.d.ts.map +1 -1
  109. package/dist/template-manager.js +10 -3
  110. package/dist/template-manager.js.map +1 -1
  111. package/dist/version.d.ts.map +1 -1
  112. package/dist/version.js.map +1 -1
  113. package/package.json +12 -7
package/README.md CHANGED
@@ -14,7 +14,9 @@ A framework, runtime, and ecosystem. Batteries included.
14
14
  [![Node](https://img.shields.io/badge/node-%3E%3D18-43853d.svg)](https://nodejs.org)
15
15
  [![MCP](https://img.shields.io/badge/MCP-compatible-7c3aed.svg)](https://modelcontextprotocol.io)
16
16
 
17
- [Quick Start](#quick-start) ยท [How It Works](#how-it-works) ยท [Beam UI](#beam) ยท [Marketplace](#marketplace) ยท [Docs](#documentation)
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
+ [![Watch: Why Photon? (2 min)](https://img.youtube.com/vi/FI0M8s6ZKv4/maxresdefault.jpg)](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โ€™t fully understand either, you get three things at once:
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โ€™ll show you.
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="600">
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="600">
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="600">
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="600">
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="600">
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="600">
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
- ## Connecting to AI
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
- ```json
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
- You can also make a private marketplace for your team, so internal tools stay off the public internet.
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> # Check for errors
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](./PHOTON_BEST_PRACTICES.md) | Patterns for production photons |
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;AA0xBH,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAs8ElF;AAkYD;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAsB9C"}
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"}