@portel/photon 1.4.1 → 1.5.1

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 (379) hide show
  1. package/README.md +287 -1160
  2. package/dist/auto-ui/beam.d.ts +9 -0
  3. package/dist/auto-ui/beam.d.ts.map +1 -0
  4. package/dist/auto-ui/beam.js +2381 -0
  5. package/dist/auto-ui/beam.js.map +1 -0
  6. package/dist/auto-ui/components/card.d.ts +13 -0
  7. package/dist/auto-ui/components/card.d.ts.map +1 -0
  8. package/dist/auto-ui/components/card.js +64 -0
  9. package/dist/auto-ui/components/card.js.map +1 -0
  10. package/dist/auto-ui/components/form.d.ts +15 -0
  11. package/dist/auto-ui/components/form.d.ts.map +1 -0
  12. package/dist/auto-ui/components/form.js +72 -0
  13. package/dist/auto-ui/components/form.js.map +1 -0
  14. package/dist/auto-ui/components/list.d.ts +13 -0
  15. package/dist/auto-ui/components/list.d.ts.map +1 -0
  16. package/dist/auto-ui/components/list.js +58 -0
  17. package/dist/auto-ui/components/list.js.map +1 -0
  18. package/dist/auto-ui/components/progress.d.ts +18 -0
  19. package/dist/auto-ui/components/progress.d.ts.map +1 -0
  20. package/dist/auto-ui/components/progress.js +125 -0
  21. package/dist/auto-ui/components/progress.js.map +1 -0
  22. package/dist/auto-ui/components/table.d.ts +13 -0
  23. package/dist/auto-ui/components/table.d.ts.map +1 -0
  24. package/dist/auto-ui/components/table.js +82 -0
  25. package/dist/auto-ui/components/table.js.map +1 -0
  26. package/dist/auto-ui/components/tree.d.ts +13 -0
  27. package/dist/auto-ui/components/tree.d.ts.map +1 -0
  28. package/dist/auto-ui/components/tree.js +61 -0
  29. package/dist/auto-ui/components/tree.js.map +1 -0
  30. package/dist/auto-ui/daemon-tools.d.ts +45 -0
  31. package/dist/auto-ui/daemon-tools.d.ts.map +1 -0
  32. package/dist/auto-ui/daemon-tools.js +580 -0
  33. package/dist/auto-ui/daemon-tools.js.map +1 -0
  34. package/dist/auto-ui/design-system/index.d.ts +21 -0
  35. package/dist/auto-ui/design-system/index.d.ts.map +1 -0
  36. package/dist/auto-ui/design-system/index.js +27 -0
  37. package/dist/auto-ui/design-system/index.js.map +1 -0
  38. package/dist/auto-ui/design-system/tokens.d.ts +9 -0
  39. package/dist/auto-ui/design-system/tokens.d.ts.map +1 -0
  40. package/dist/auto-ui/design-system/tokens.js +27 -0
  41. package/dist/auto-ui/design-system/tokens.js.map +1 -0
  42. package/dist/auto-ui/design-system/transaction-ui.d.ts +70 -0
  43. package/dist/auto-ui/design-system/transaction-ui.d.ts.map +1 -0
  44. package/dist/auto-ui/design-system/transaction-ui.js +982 -0
  45. package/dist/auto-ui/design-system/transaction-ui.js.map +1 -0
  46. package/dist/auto-ui/frontend/index.html +84 -0
  47. package/dist/auto-ui/index.d.ts +21 -0
  48. package/dist/auto-ui/index.d.ts.map +1 -0
  49. package/dist/auto-ui/index.js +25 -0
  50. package/dist/auto-ui/index.js.map +1 -0
  51. package/dist/auto-ui/openapi-generator.d.ts +71 -0
  52. package/dist/auto-ui/openapi-generator.d.ts.map +1 -0
  53. package/dist/auto-ui/openapi-generator.js +223 -0
  54. package/dist/auto-ui/openapi-generator.js.map +1 -0
  55. package/dist/auto-ui/photon-bridge.d.ts +159 -0
  56. package/dist/auto-ui/photon-bridge.d.ts.map +1 -0
  57. package/dist/auto-ui/photon-bridge.js +262 -0
  58. package/dist/auto-ui/photon-bridge.js.map +1 -0
  59. package/dist/auto-ui/photon-host.d.ts +113 -0
  60. package/dist/auto-ui/photon-host.d.ts.map +1 -0
  61. package/dist/auto-ui/photon-host.js +284 -0
  62. package/dist/auto-ui/photon-host.js.map +1 -0
  63. package/dist/auto-ui/platform-compat.d.ts +71 -0
  64. package/dist/auto-ui/platform-compat.d.ts.map +1 -0
  65. package/dist/auto-ui/platform-compat.js +574 -0
  66. package/dist/auto-ui/platform-compat.js.map +1 -0
  67. package/dist/auto-ui/playground-html.d.ts +15 -0
  68. package/dist/auto-ui/playground-html.d.ts.map +1 -0
  69. package/dist/auto-ui/playground-html.js +1113 -0
  70. package/dist/auto-ui/playground-html.js.map +1 -0
  71. package/dist/auto-ui/playground-server.d.ts +7 -0
  72. package/dist/auto-ui/playground-server.d.ts.map +1 -0
  73. package/dist/auto-ui/playground-server.js +840 -0
  74. package/dist/auto-ui/playground-server.js.map +1 -0
  75. package/dist/auto-ui/registry.d.ts +13 -0
  76. package/dist/auto-ui/registry.d.ts.map +1 -0
  77. package/dist/auto-ui/registry.js +62 -0
  78. package/dist/auto-ui/registry.js.map +1 -0
  79. package/dist/auto-ui/renderer.d.ts +14 -0
  80. package/dist/auto-ui/renderer.d.ts.map +1 -0
  81. package/dist/auto-ui/renderer.js +88 -0
  82. package/dist/auto-ui/renderer.js.map +1 -0
  83. package/dist/auto-ui/rendering/components.d.ts +29 -0
  84. package/dist/auto-ui/rendering/components.d.ts.map +1 -0
  85. package/dist/auto-ui/rendering/components.js +773 -0
  86. package/dist/auto-ui/rendering/components.js.map +1 -0
  87. package/dist/auto-ui/rendering/field-analyzer.d.ts +48 -0
  88. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +1 -0
  89. package/dist/auto-ui/rendering/field-analyzer.js +270 -0
  90. package/dist/auto-ui/rendering/field-analyzer.js.map +1 -0
  91. package/dist/auto-ui/rendering/field-renderers.d.ts +64 -0
  92. package/dist/auto-ui/rendering/field-renderers.d.ts.map +1 -0
  93. package/dist/auto-ui/rendering/field-renderers.js +317 -0
  94. package/dist/auto-ui/rendering/field-renderers.js.map +1 -0
  95. package/dist/auto-ui/rendering/index.d.ts +28 -0
  96. package/dist/auto-ui/rendering/index.d.ts.map +1 -0
  97. package/dist/auto-ui/rendering/index.js +60 -0
  98. package/dist/auto-ui/rendering/index.js.map +1 -0
  99. package/dist/auto-ui/rendering/layout-selector.d.ts +48 -0
  100. package/dist/auto-ui/rendering/layout-selector.d.ts.map +1 -0
  101. package/dist/auto-ui/rendering/layout-selector.js +352 -0
  102. package/dist/auto-ui/rendering/layout-selector.js.map +1 -0
  103. package/dist/auto-ui/rendering/template-engine.d.ts +41 -0
  104. package/dist/auto-ui/rendering/template-engine.d.ts.map +1 -0
  105. package/dist/auto-ui/rendering/template-engine.js +238 -0
  106. package/dist/auto-ui/rendering/template-engine.js.map +1 -0
  107. package/dist/auto-ui/streamable-http-transport.d.ts +79 -0
  108. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -0
  109. package/dist/auto-ui/streamable-http-transport.js +1314 -0
  110. package/dist/auto-ui/streamable-http-transport.js.map +1 -0
  111. package/dist/auto-ui/types.d.ts +310 -0
  112. package/dist/auto-ui/types.d.ts.map +1 -0
  113. package/dist/auto-ui/types.js +71 -0
  114. package/dist/auto-ui/types.js.map +1 -0
  115. package/dist/beam.bundle.js +13506 -0
  116. package/dist/beam.bundle.js.map +7 -0
  117. package/dist/claude-code-plugin.d.ts.map +1 -1
  118. package/dist/claude-code-plugin.js +30 -30
  119. package/dist/claude-code-plugin.js.map +1 -1
  120. package/dist/cli/commands/info.d.ts +11 -0
  121. package/dist/cli/commands/info.d.ts.map +1 -0
  122. package/dist/cli/commands/info.js +313 -0
  123. package/dist/cli/commands/info.js.map +1 -0
  124. package/dist/cli/commands/marketplace.d.ts +11 -0
  125. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  126. package/dist/cli/commands/marketplace.js +198 -0
  127. package/dist/cli/commands/marketplace.js.map +1 -0
  128. package/dist/cli/commands/package-app.d.ts +9 -0
  129. package/dist/cli/commands/package-app.d.ts.map +1 -0
  130. package/dist/cli/commands/package-app.js +191 -0
  131. package/dist/cli/commands/package-app.js.map +1 -0
  132. package/dist/cli/commands/package.d.ts +11 -0
  133. package/dist/cli/commands/package.d.ts.map +1 -0
  134. package/dist/cli/commands/package.js +573 -0
  135. package/dist/cli/commands/package.js.map +1 -0
  136. package/dist/cli-alias.d.ts.map +1 -1
  137. package/dist/cli-alias.js +30 -28
  138. package/dist/cli-alias.js.map +1 -1
  139. package/dist/cli-formatter.d.ts +8 -24
  140. package/dist/cli-formatter.d.ts.map +1 -1
  141. package/dist/cli-formatter.js +8 -325
  142. package/dist/cli-formatter.js.map +1 -1
  143. package/dist/cli.d.ts +15 -1
  144. package/dist/cli.d.ts.map +1 -1
  145. package/dist/cli.js +1157 -1132
  146. package/dist/cli.js.map +1 -1
  147. package/dist/daemon/client.d.ts +79 -0
  148. package/dist/daemon/client.d.ts.map +1 -1
  149. package/dist/daemon/client.js +532 -8
  150. package/dist/daemon/client.js.map +1 -1
  151. package/dist/daemon/manager.d.ts +46 -12
  152. package/dist/daemon/manager.d.ts.map +1 -1
  153. package/dist/daemon/manager.js +102 -61
  154. package/dist/daemon/manager.js.map +1 -1
  155. package/dist/daemon/protocol.d.ts +62 -6
  156. package/dist/daemon/protocol.d.ts.map +1 -1
  157. package/dist/daemon/protocol.js +76 -1
  158. package/dist/daemon/protocol.js.map +1 -1
  159. package/dist/daemon/server.d.ts +6 -6
  160. package/dist/daemon/server.js +743 -133
  161. package/dist/daemon/server.js.map +1 -1
  162. package/dist/daemon/session-manager.d.ts +8 -1
  163. package/dist/daemon/session-manager.d.ts.map +1 -1
  164. package/dist/daemon/session-manager.js +32 -9
  165. package/dist/daemon/session-manager.js.map +1 -1
  166. package/dist/deploy/cloudflare.d.ts +12 -0
  167. package/dist/deploy/cloudflare.d.ts.map +1 -0
  168. package/dist/deploy/cloudflare.js +216 -0
  169. package/dist/deploy/cloudflare.js.map +1 -0
  170. package/dist/index.d.ts +1 -0
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +3 -0
  173. package/dist/index.js.map +1 -1
  174. package/dist/loader.d.ts +168 -21
  175. package/dist/loader.d.ts.map +1 -1
  176. package/dist/loader.js +1120 -318
  177. package/dist/loader.js.map +1 -1
  178. package/dist/markdown-utils.d.ts +8 -0
  179. package/dist/markdown-utils.d.ts.map +1 -0
  180. package/dist/markdown-utils.js +63 -0
  181. package/dist/markdown-utils.js.map +1 -0
  182. package/dist/marketplace-manager.d.ts +10 -0
  183. package/dist/marketplace-manager.d.ts.map +1 -1
  184. package/dist/marketplace-manager.js +112 -28
  185. package/dist/marketplace-manager.js.map +1 -1
  186. package/dist/mcp-client.d.ts +9 -0
  187. package/dist/mcp-client.d.ts.map +1 -0
  188. package/dist/mcp-client.js +11 -0
  189. package/dist/mcp-client.js.map +1 -0
  190. package/dist/mcp-elicitation.d.ts +32 -0
  191. package/dist/mcp-elicitation.d.ts.map +1 -0
  192. package/dist/mcp-elicitation.js +26 -0
  193. package/dist/mcp-elicitation.js.map +1 -0
  194. package/dist/path-resolver.d.ts +9 -12
  195. package/dist/path-resolver.d.ts.map +1 -1
  196. package/dist/path-resolver.js +13 -43
  197. package/dist/path-resolver.js.map +1 -1
  198. package/dist/photon-cli-runner.d.ts.map +1 -1
  199. package/dist/photon-cli-runner.js +202 -77
  200. package/dist/photon-cli-runner.js.map +1 -1
  201. package/dist/photon-doc-extractor.d.ts +88 -0
  202. package/dist/photon-doc-extractor.d.ts.map +1 -1
  203. package/dist/photon-doc-extractor.js +536 -27
  204. package/dist/photon-doc-extractor.js.map +1 -1
  205. package/dist/photons/maker.photon.d.ts +182 -0
  206. package/dist/photons/maker.photon.d.ts.map +1 -0
  207. package/dist/photons/maker.photon.js +504 -0
  208. package/dist/photons/maker.photon.js.map +1 -0
  209. package/dist/photons/maker.photon.ts +626 -0
  210. package/dist/photons/marketplace.photon.d.ts +110 -0
  211. package/dist/photons/marketplace.photon.d.ts.map +1 -0
  212. package/dist/photons/marketplace.photon.js +260 -0
  213. package/dist/photons/marketplace.photon.js.map +1 -0
  214. package/dist/photons/marketplace.photon.ts +378 -0
  215. package/dist/photons/tunnel.photon.d.ts +80 -0
  216. package/dist/photons/tunnel.photon.d.ts.map +1 -0
  217. package/dist/photons/tunnel.photon.js +269 -0
  218. package/dist/photons/tunnel.photon.js.map +1 -0
  219. package/dist/photons/tunnel.photon.ts +345 -0
  220. package/dist/security-scanner.d.ts.map +1 -1
  221. package/dist/security-scanner.js +18 -15
  222. package/dist/security-scanner.js.map +1 -1
  223. package/dist/serv/auth/jwt.d.ts +89 -0
  224. package/dist/serv/auth/jwt.d.ts.map +1 -0
  225. package/dist/serv/auth/jwt.js +239 -0
  226. package/dist/serv/auth/jwt.js.map +1 -0
  227. package/dist/serv/auth/oauth.d.ts +117 -0
  228. package/dist/serv/auth/oauth.d.ts.map +1 -0
  229. package/dist/serv/auth/oauth.js +395 -0
  230. package/dist/serv/auth/oauth.js.map +1 -0
  231. package/dist/serv/auth/well-known.d.ts +60 -0
  232. package/dist/serv/auth/well-known.d.ts.map +1 -0
  233. package/dist/serv/auth/well-known.js +154 -0
  234. package/dist/serv/auth/well-known.js.map +1 -0
  235. package/dist/serv/db/d1-client.d.ts +65 -0
  236. package/dist/serv/db/d1-client.d.ts.map +1 -0
  237. package/dist/serv/db/d1-client.js +137 -0
  238. package/dist/serv/db/d1-client.js.map +1 -0
  239. package/dist/serv/db/d1-stores.d.ts +62 -0
  240. package/dist/serv/db/d1-stores.d.ts.map +1 -0
  241. package/dist/serv/db/d1-stores.js +307 -0
  242. package/dist/serv/db/d1-stores.js.map +1 -0
  243. package/dist/serv/index.d.ts +114 -0
  244. package/dist/serv/index.d.ts.map +1 -0
  245. package/dist/serv/index.js +172 -0
  246. package/dist/serv/index.js.map +1 -0
  247. package/dist/serv/local.d.ts +118 -0
  248. package/dist/serv/local.d.ts.map +1 -0
  249. package/dist/serv/local.js +392 -0
  250. package/dist/serv/local.js.map +1 -0
  251. package/dist/serv/middleware/auth.d.ts +66 -0
  252. package/dist/serv/middleware/auth.d.ts.map +1 -0
  253. package/dist/serv/middleware/auth.js +178 -0
  254. package/dist/serv/middleware/auth.js.map +1 -0
  255. package/dist/serv/middleware/tenant.d.ts +94 -0
  256. package/dist/serv/middleware/tenant.d.ts.map +1 -0
  257. package/dist/serv/middleware/tenant.js +152 -0
  258. package/dist/serv/middleware/tenant.js.map +1 -0
  259. package/dist/serv/runtime/executor.d.ts +76 -0
  260. package/dist/serv/runtime/executor.d.ts.map +1 -0
  261. package/dist/serv/runtime/executor.js +105 -0
  262. package/dist/serv/runtime/executor.js.map +1 -0
  263. package/dist/serv/runtime/index.d.ts +8 -0
  264. package/dist/serv/runtime/index.d.ts.map +1 -0
  265. package/dist/serv/runtime/index.js +10 -0
  266. package/dist/serv/runtime/index.js.map +1 -0
  267. package/dist/serv/runtime/oauth-context.d.ts +121 -0
  268. package/dist/serv/runtime/oauth-context.d.ts.map +1 -0
  269. package/dist/serv/runtime/oauth-context.js +153 -0
  270. package/dist/serv/runtime/oauth-context.js.map +1 -0
  271. package/dist/serv/session/kv-store.d.ts +54 -0
  272. package/dist/serv/session/kv-store.d.ts.map +1 -0
  273. package/dist/serv/session/kv-store.js +149 -0
  274. package/dist/serv/session/kv-store.js.map +1 -0
  275. package/dist/serv/session/store.d.ts +113 -0
  276. package/dist/serv/session/store.d.ts.map +1 -0
  277. package/dist/serv/session/store.js +284 -0
  278. package/dist/serv/session/store.js.map +1 -0
  279. package/dist/serv/types/index.d.ts +147 -0
  280. package/dist/serv/types/index.d.ts.map +1 -0
  281. package/dist/serv/types/index.js +8 -0
  282. package/dist/serv/types/index.js.map +1 -0
  283. package/dist/serv/vault/token-vault.d.ts +102 -0
  284. package/dist/serv/vault/token-vault.d.ts.map +1 -0
  285. package/dist/serv/vault/token-vault.js +177 -0
  286. package/dist/serv/vault/token-vault.js.map +1 -0
  287. package/dist/server.d.ts +173 -0
  288. package/dist/server.d.ts.map +1 -1
  289. package/dist/server.js +1622 -86
  290. package/dist/server.js.map +1 -1
  291. package/dist/shared/cli-sections.d.ts +6 -0
  292. package/dist/shared/cli-sections.d.ts.map +1 -0
  293. package/dist/shared/cli-sections.js +16 -0
  294. package/dist/shared/cli-sections.js.map +1 -0
  295. package/dist/shared/cli-utils.d.ts +81 -0
  296. package/dist/shared/cli-utils.d.ts.map +1 -0
  297. package/dist/shared/cli-utils.js +174 -0
  298. package/dist/shared/cli-utils.js.map +1 -0
  299. package/dist/shared/config-docs.d.ts +6 -0
  300. package/dist/shared/config-docs.d.ts.map +1 -0
  301. package/dist/shared/config-docs.js +6 -0
  302. package/dist/shared/config-docs.js.map +1 -0
  303. package/dist/shared/error-handler.d.ts +128 -0
  304. package/dist/shared/error-handler.d.ts.map +1 -0
  305. package/dist/shared/error-handler.js +342 -0
  306. package/dist/shared/error-handler.js.map +1 -0
  307. package/dist/shared/logger.d.ts +42 -0
  308. package/dist/shared/logger.d.ts.map +1 -0
  309. package/dist/shared/logger.js +123 -0
  310. package/dist/shared/logger.js.map +1 -0
  311. package/dist/shared/performance.d.ts +65 -0
  312. package/dist/shared/performance.d.ts.map +1 -0
  313. package/dist/shared/performance.js +136 -0
  314. package/dist/shared/performance.js.map +1 -0
  315. package/dist/shared/task-runner.d.ts +2 -0
  316. package/dist/shared/task-runner.d.ts.map +1 -0
  317. package/dist/shared/task-runner.js +16 -0
  318. package/dist/shared/task-runner.js.map +1 -0
  319. package/dist/shared/validation.d.ts +6 -0
  320. package/dist/shared/validation.d.ts.map +1 -0
  321. package/dist/shared/validation.js +6 -0
  322. package/dist/shared/validation.js.map +1 -0
  323. package/dist/shared-utils.d.ts +63 -0
  324. package/dist/shared-utils.d.ts.map +1 -0
  325. package/dist/shared-utils.js +123 -0
  326. package/dist/shared-utils.js.map +1 -0
  327. package/dist/template-manager.d.ts +23 -2
  328. package/dist/template-manager.d.ts.map +1 -1
  329. package/dist/template-manager.js +175 -86
  330. package/dist/template-manager.js.map +1 -1
  331. package/dist/test-client.d.ts.map +1 -1
  332. package/dist/test-client.js +10 -8
  333. package/dist/test-client.js.map +1 -1
  334. package/dist/test-runner.d.ts +52 -0
  335. package/dist/test-runner.d.ts.map +1 -0
  336. package/dist/test-runner.js +785 -0
  337. package/dist/test-runner.js.map +1 -0
  338. package/dist/testing.d.ts +103 -0
  339. package/dist/testing.d.ts.map +1 -0
  340. package/dist/testing.js +163 -0
  341. package/dist/testing.js.map +1 -0
  342. package/dist/version-checker.d.ts.map +1 -1
  343. package/dist/version-checker.js +2 -2
  344. package/dist/version-checker.js.map +1 -1
  345. package/dist/version.d.ts +2 -0
  346. package/dist/version.d.ts.map +1 -0
  347. package/dist/version.js +5 -0
  348. package/dist/version.js.map +1 -0
  349. package/dist/watcher.d.ts +6 -3
  350. package/dist/watcher.d.ts.map +1 -1
  351. package/dist/watcher.js +49 -10
  352. package/dist/watcher.js.map +1 -1
  353. package/package.json +47 -7
  354. package/templates/cloudflare/worker.ts.template +381 -0
  355. package/templates/cloudflare/wrangler.toml.template +9 -0
  356. package/dist/base.d.ts +0 -58
  357. package/dist/base.d.ts.map +0 -1
  358. package/dist/base.js +0 -92
  359. package/dist/base.js.map +0 -1
  360. package/dist/dependency-manager.d.ts +0 -49
  361. package/dist/dependency-manager.d.ts.map +0 -1
  362. package/dist/dependency-manager.js +0 -165
  363. package/dist/dependency-manager.js.map +0 -1
  364. package/dist/registry-manager.d.ts +0 -76
  365. package/dist/registry-manager.d.ts.map +0 -1
  366. package/dist/registry-manager.js +0 -220
  367. package/dist/registry-manager.js.map +0 -1
  368. package/dist/schema-extractor.d.ts +0 -110
  369. package/dist/schema-extractor.d.ts.map +0 -1
  370. package/dist/schema-extractor.js +0 -727
  371. package/dist/schema-extractor.js.map +0 -1
  372. package/dist/test-marketplace-sources.d.ts +0 -5
  373. package/dist/test-marketplace-sources.d.ts.map +0 -1
  374. package/dist/test-marketplace-sources.js +0 -53
  375. package/dist/test-marketplace-sources.js.map +0 -1
  376. package/dist/types.d.ts +0 -109
  377. package/dist/types.d.ts.map +0 -1
  378. package/dist/types.js +0 -12
  379. package/dist/types.js.map +0 -1
@@ -0,0 +1,504 @@
1
+ /**
2
+ * Photon Maker - Create and manage photons
3
+ * @description System photon for scaffolding and managing photons
4
+ * @internal
5
+ *
6
+ * ## Method Types
7
+ *
8
+ * This photon demonstrates two patterns for organizing methods:
9
+ *
10
+ * ### Static Methods (Global Actions)
11
+ * - Called on the class itself, no instance needed
12
+ * - In Beam UI: Appear in the Marketplace dropdown menu
13
+ * - In CLI: `photon cli maker <method>`
14
+ * - In MCP: Available as tools without instance context
15
+ * - Use for: Creating new photons, syncing marketplace, validating
16
+ *
17
+ * ### Instance Methods (Contextual Actions)
18
+ * - Called on a specific photon instance
19
+ * - In Beam UI: Appear in the per-photon gear menu
20
+ * - In CLI: Require photon context (future: `photon cli maker rename --photon serum`)
21
+ * - Use for: Renaming, describing, adding methods to a specific photon
22
+ *
23
+ * ### Generator Functions (Progress Streaming)
24
+ * - Use `async *method()` syntax for step-by-step progress
25
+ * - Yield `{ step, message }` objects for UI updates
26
+ * - Final yield should include `{ step: 'done', result }` or `{ type: 'done', result }`
27
+ *
28
+ * ### Wizard Pattern (Multi-Step UI)
29
+ * - Mark with `@wizard` JSDoc tag
30
+ * - Yield step definitions, receive user input via `yield`
31
+ * - Steps: input, select, multi-input, progress, done
32
+ *
33
+ * ## Decorators
34
+ *
35
+ * - `@internal` - Bundled with runtime, special UI treatment
36
+ * - `@wizard` - Renders as multi-step wizard instead of form
37
+ * - `@template` - Returns a prompt string (for MCP prompts)
38
+ * - `@resource` - Exposes as MCP resource with URI
39
+ */
40
+ import * as fs from 'fs/promises';
41
+ import * as path from 'path';
42
+ import * as os from 'os';
43
+ import { exec } from 'child_process';
44
+ import { promisify } from 'util';
45
+ const execAsync = promisify(exec);
46
+ export default class Maker {
47
+ photonPath;
48
+ photonName;
49
+ /**
50
+ * Instance is created with target photon context for per-photon operations
51
+ */
52
+ constructor(photonPath) {
53
+ this.photonPath = photonPath || '';
54
+ this.photonName = photonPath ? path.basename(photonPath, '.photon.ts') : '';
55
+ }
56
+ // ============================================
57
+ // Static Methods → Marketplace Menu
58
+ // ============================================
59
+ /**
60
+ * Create a new photon
61
+ * @param name Name for the new photon (kebab-case recommended)
62
+ * @param methods Tool method names to scaffold (optional)
63
+ * @param prompts Prompt template names to scaffold (optional)
64
+ * @param resources Resource method names to scaffold (optional)
65
+ */
66
+ static async *new({ name, methods = [], prompts = [], resources = [], }) {
67
+ const workingDir = process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
68
+ const fileName = `${name}.photon.ts`;
69
+ const filePath = path.join(workingDir, fileName);
70
+ yield { step: 'checking', message: `Checking if ${fileName} exists...` };
71
+ // Check if exists
72
+ try {
73
+ await fs.access(filePath);
74
+ throw new Error(`Photon already exists: ${filePath}`);
75
+ }
76
+ catch (e) {
77
+ if (e.code !== 'ENOENT')
78
+ throw e;
79
+ }
80
+ yield { step: 'generating', message: 'Generating scaffold...' };
81
+ // Generate class name from kebab-case
82
+ const className = name
83
+ .split(/[-_]/)
84
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
85
+ .join('');
86
+ // Helper to normalize input (handles string or array)
87
+ const toArray = (input) => {
88
+ if (!input)
89
+ return [];
90
+ if (Array.isArray(input))
91
+ return input.filter(Boolean);
92
+ return input
93
+ .split(',')
94
+ .map((s) => s.trim())
95
+ .filter(Boolean);
96
+ };
97
+ // Generate all stubs
98
+ const allStubs = [];
99
+ const methodList = toArray(methods);
100
+ const promptList = toArray(prompts);
101
+ const resourceList = toArray(resources);
102
+ // Tools
103
+ if (methodList.length > 0) {
104
+ allStubs.push(...methodList.map((m) => Maker.generateMethodStub(m, 'tool')));
105
+ }
106
+ // Prompts (templates)
107
+ if (promptList.length > 0) {
108
+ allStubs.push(...promptList.map((p) => Maker.generateMethodStub(p, 'prompt')));
109
+ }
110
+ // Resources
111
+ if (resourceList.length > 0) {
112
+ allStubs.push(...resourceList.map((r) => Maker.generateMethodStub(r, 'resource')));
113
+ }
114
+ // Default if nothing specified
115
+ if (allStubs.length === 0) {
116
+ allStubs.push(Maker.generateMethodStub('example', 'tool'));
117
+ }
118
+ const code = `/**
119
+ * ${className}
120
+ * @description [Add description]
121
+ */
122
+ export default class ${className} {
123
+ ${allStubs.join('\n\n')}
124
+ }
125
+ `;
126
+ yield { step: 'writing', message: `Writing ${fileName}...` };
127
+ await fs.writeFile(filePath, code, 'utf-8');
128
+ yield { step: 'done', message: `Created ${fileName}`, path: filePath, code };
129
+ }
130
+ /**
131
+ * Validate all photons in the current directory
132
+ */
133
+ static async *validate() {
134
+ const workingDir = process.env.PHOTON_DIR || process.cwd();
135
+ yield { step: 'scanning', photon: undefined };
136
+ const files = await fs.readdir(workingDir);
137
+ const photonFiles = files.filter((f) => f.endsWith('.photon.ts'));
138
+ let validCount = 0;
139
+ let errorCount = 0;
140
+ for (const file of photonFiles) {
141
+ try {
142
+ const content = await fs.readFile(path.join(workingDir, file), 'utf-8');
143
+ if (content.includes('export default class')) {
144
+ validCount++;
145
+ yield { step: 'validating', photon: file, status: 'valid' };
146
+ }
147
+ else {
148
+ errorCount++;
149
+ yield {
150
+ step: 'validating',
151
+ photon: file,
152
+ status: 'error',
153
+ error: 'Missing default class export',
154
+ };
155
+ }
156
+ }
157
+ catch (e) {
158
+ errorCount++;
159
+ yield { step: 'validating', photon: file, status: 'error', error: e.message };
160
+ }
161
+ }
162
+ yield { step: 'done', summary: { valid: validCount, errors: errorCount } };
163
+ }
164
+ /**
165
+ * Guided wizard to create a new photon
166
+ * @wizard
167
+ * @param name Photon name in kebab-case (e.g., my-tools, api-wrapper)
168
+ * @returns {@label Create}
169
+ */
170
+ static async *wizard({ name }) {
171
+ if (!name)
172
+ return;
173
+ // Step 1: Description
174
+ const descriptionRaw = yield {
175
+ ask: 'text',
176
+ id: 'description',
177
+ message: 'What does this photon do?',
178
+ label: 'Description',
179
+ placeholder: 'e.g. Fetches and parses web pages',
180
+ hint: 'A short description of what this photon does',
181
+ required: true,
182
+ };
183
+ // Step 2: Icon
184
+ const iconRaw = yield {
185
+ ask: 'text',
186
+ id: 'icon',
187
+ message: 'Pick an emoji icon',
188
+ label: 'Icon',
189
+ placeholder: '⚡',
190
+ hint: 'An emoji icon for your photon (default: ⚡)',
191
+ required: false,
192
+ };
193
+ // Step 3: Methods
194
+ const methodsRaw = yield {
195
+ ask: 'text',
196
+ id: 'methods',
197
+ message: 'Name your tool methods',
198
+ label: 'Methods',
199
+ placeholder: 'e.g. search, fetch, analyze',
200
+ hint: 'Comma-separated method names (default: example)',
201
+ required: false,
202
+ };
203
+ // Step 4: Dependencies
204
+ const depsRaw = yield {
205
+ ask: 'text',
206
+ id: 'dependencies',
207
+ message: 'npm packages to use',
208
+ label: 'Dependencies',
209
+ placeholder: 'e.g. axios, cheerio',
210
+ hint: 'Comma-separated npm package names (optional)',
211
+ required: false,
212
+ };
213
+ // Progress
214
+ yield { emit: 'status', message: 'Creating photon...' };
215
+ const nameStr = String(name);
216
+ const description = typeof descriptionRaw === 'string' && descriptionRaw.trim()
217
+ ? descriptionRaw.trim()
218
+ : '[Add description]';
219
+ const icon = typeof iconRaw === 'string' && iconRaw.trim() ? iconRaw.trim() : '⚡';
220
+ const workingDir = process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
221
+ const fileName = `${nameStr}.photon.ts`;
222
+ const filePath = path.join(workingDir, fileName);
223
+ // Generate class name
224
+ const className = nameStr
225
+ .split(/[-_]/)
226
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
227
+ .join('');
228
+ // Parse comma-separated lists
229
+ const parseCsv = (val) => typeof val === 'string' && val.trim()
230
+ ? val.split(',').map((s) => s.trim()).filter(Boolean)
231
+ : Array.isArray(val) ? val : [];
232
+ const methodList = parseCsv(methodsRaw);
233
+ if (methodList.length === 0)
234
+ methodList.push('example');
235
+ // Validate npm dependencies
236
+ const depsList = parseCsv(depsRaw);
237
+ const validDeps = [];
238
+ for (const pkg of depsList) {
239
+ yield { emit: 'status', message: `Checking ${pkg}...` };
240
+ const result = await Maker.validateNpmPackage(pkg);
241
+ if (result.valid && result.version) {
242
+ validDeps.push({ name: pkg, version: result.version });
243
+ yield { emit: 'status', message: `✓ ${pkg}@${result.version}` };
244
+ }
245
+ else {
246
+ yield { emit: 'status', message: `✗ ${pkg} — not found, skipped` };
247
+ }
248
+ }
249
+ yield { emit: 'status', message: 'Generating scaffold...' };
250
+ // Build imports from valid deps
251
+ const importLines = validDeps.map((d) => Maker.importForPackage(d.name));
252
+ // Build @dependencies tag value
253
+ const depsTag = validDeps.map((d) => `${d.name}@^${d.version}`).join(', ');
254
+ // Generate method stubs
255
+ const allStubs = methodList.map((m) => Maker.generateMethodStub(m, 'tool'));
256
+ // Assemble JSDoc
257
+ const jsdocLines = [
258
+ '/**',
259
+ ` * ${className} - ${description}`,
260
+ ` * @description ${description}`,
261
+ ` * @icon ${icon}`,
262
+ ];
263
+ if (depsTag) {
264
+ jsdocLines.push(` * @dependencies ${depsTag}`);
265
+ }
266
+ jsdocLines.push(' */');
267
+ // Final code assembly: imports first, then JSDoc + class
268
+ const codeParts = [];
269
+ if (importLines.length > 0) {
270
+ codeParts.push(importLines.join('\n'));
271
+ codeParts.push('');
272
+ }
273
+ codeParts.push(jsdocLines.join('\n'));
274
+ codeParts.push(`export default class ${className} {`);
275
+ codeParts.push(allStubs.join('\n\n'));
276
+ codeParts.push('}');
277
+ codeParts.push('');
278
+ const code = codeParts.join('\n');
279
+ await fs.writeFile(filePath, code, 'utf-8');
280
+ // Done
281
+ yield {
282
+ emit: 'result',
283
+ data: { message: `Created ${fileName}`, path: filePath, code },
284
+ };
285
+ }
286
+ // ============================================
287
+ // Instance Methods → Per-Photon Gear Menu
288
+ // ============================================
289
+ /**
290
+ * Rename this photon
291
+ * @param name New name for the photon
292
+ * @param photonPath Path to the photon file (optional, uses instance context if not provided)
293
+ */
294
+ async rename({ name, photonPath, }) {
295
+ const targetPath = photonPath || this.photonPath;
296
+ if (!targetPath)
297
+ throw new Error('No photon context - provide photonPath parameter');
298
+ const dir = path.dirname(targetPath);
299
+ const newPath = path.join(dir, `${name}.photon.ts`);
300
+ // Read content and update class name
301
+ let content = await fs.readFile(targetPath, 'utf-8');
302
+ const newClassName = name
303
+ .split(/[-_]/)
304
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
305
+ .join('');
306
+ const oldPhotonName = path.basename(targetPath, '.photon.ts');
307
+ const oldClassName = oldPhotonName
308
+ .split(/[-_]/)
309
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
310
+ .join('');
311
+ content = content.replace(new RegExp(`class ${oldClassName}`, 'g'), `class ${newClassName}`);
312
+ // Write to new path
313
+ await fs.writeFile(newPath, content, 'utf-8');
314
+ // Remove old file
315
+ await fs.unlink(targetPath);
316
+ return { oldPath: targetPath, newPath };
317
+ }
318
+ /**
319
+ * Update photon description
320
+ * @param description New description
321
+ * @param photonPath Path to the photon file (optional, uses instance context if not provided)
322
+ */
323
+ async describe({ description, photonPath, }) {
324
+ const targetPath = photonPath || this.photonPath;
325
+ if (!targetPath)
326
+ throw new Error('No photon context - provide photonPath parameter');
327
+ let content = await fs.readFile(targetPath, 'utf-8');
328
+ // Update @description in JSDoc
329
+ if (content.includes('@description')) {
330
+ content = content.replace(/@description\s+.*/, `@description ${description}`);
331
+ }
332
+ else {
333
+ // Add description to class JSDoc
334
+ content = content.replace(/(\/\*\*[\s\S]*?)(\s*\*\/\s*export default class)/, `$1\n * @description ${description}$2`);
335
+ }
336
+ await fs.writeFile(targetPath, content, 'utf-8');
337
+ return { updated: true };
338
+ }
339
+ /**
340
+ * Add a new method to this photon
341
+ * @param name Method name
342
+ * @param type Method type
343
+ * @param photonPath Path to the photon file (optional, uses instance context if not provided)
344
+ */
345
+ async addmethod({ name, type = 'tool', photonPath, }) {
346
+ const targetPath = photonPath || this.photonPath;
347
+ if (!targetPath)
348
+ throw new Error('No photon context - provide photonPath parameter');
349
+ let content = await fs.readFile(targetPath, 'utf-8');
350
+ const methodCode = Maker.generateMethodStub(name, type);
351
+ // Insert before the closing brace of the class
352
+ const lastBraceIndex = content.lastIndexOf('}');
353
+ content =
354
+ content.slice(0, lastBraceIndex) + '\n' + methodCode + '\n' + content.slice(lastBraceIndex);
355
+ await fs.writeFile(targetPath, content, 'utf-8');
356
+ return { added: name, type };
357
+ }
358
+ /**
359
+ * Delete this photon
360
+ * @param photonPath Path to the photon file (optional, uses instance context if not provided)
361
+ */
362
+ async delete({ photonPath } = {}) {
363
+ const targetPath = photonPath || this.photonPath;
364
+ if (!targetPath)
365
+ throw new Error('No photon context - provide photonPath parameter');
366
+ await fs.unlink(targetPath);
367
+ return { deleted: targetPath };
368
+ }
369
+ /**
370
+ * View source code of this photon
371
+ * @param photonPath Path to the photon file (optional, uses instance context if not provided)
372
+ */
373
+ async source({ photonPath } = {}) {
374
+ const targetPath = photonPath || this.photonPath;
375
+ if (!targetPath)
376
+ throw new Error('No photon context - provide photonPath parameter');
377
+ const code = await fs.readFile(targetPath, 'utf-8');
378
+ return { path: targetPath, code };
379
+ }
380
+ // ============================================
381
+ // Helper Methods
382
+ // ============================================
383
+ static async validateNpmPackage(name) {
384
+ try {
385
+ const { stdout } = await execAsync(`npm view ${name} version --json`, { timeout: 10000 });
386
+ const version = JSON.parse(stdout.trim());
387
+ if (typeof version === 'string')
388
+ return { valid: true, version };
389
+ return { valid: false };
390
+ }
391
+ catch {
392
+ return { valid: false };
393
+ }
394
+ }
395
+ static importForPackage(pkg) {
396
+ const knownImports = {
397
+ axios: `import axios from 'axios';`,
398
+ cheerio: `import * as cheerio from 'cheerio';`,
399
+ lodash: `import _ from 'lodash';`,
400
+ 'node-fetch': `import fetch from 'node-fetch';`,
401
+ chalk: `import chalk from 'chalk';`,
402
+ dayjs: `import dayjs from 'dayjs';`,
403
+ zod: `import { z } from 'zod';`,
404
+ uuid: `import { v4 as uuid } from 'uuid';`,
405
+ };
406
+ if (knownImports[pkg])
407
+ return knownImports[pkg];
408
+ // Sanitize package name to valid JS identifier
409
+ const alias = pkg.replace(/^@/, '').replace(/[^a-zA-Z0-9]/g, '_');
410
+ return `import * as ${alias} from '${pkg}';`;
411
+ }
412
+ static paramNameForMethod(method) {
413
+ const map = {
414
+ search: 'query',
415
+ fetch: 'url',
416
+ analyze: 'content',
417
+ parse: 'content',
418
+ get: 'url',
419
+ post: 'url',
420
+ create: 'name',
421
+ delete: 'id',
422
+ update: 'id',
423
+ send: 'message',
424
+ read: 'path',
425
+ write: 'path',
426
+ download: 'url',
427
+ upload: 'file',
428
+ translate: 'text',
429
+ summarize: 'text',
430
+ convert: 'input',
431
+ validate: 'input',
432
+ format: 'input',
433
+ };
434
+ return map[method] || 'input';
435
+ }
436
+ static paramDescForMethod(method) {
437
+ const map = {
438
+ search: 'Search query',
439
+ fetch: 'URL to fetch',
440
+ analyze: 'Content to analyze',
441
+ parse: 'Content to parse',
442
+ get: 'URL to request',
443
+ post: 'URL to post to',
444
+ create: 'Name to create',
445
+ delete: 'ID to delete',
446
+ update: 'ID to update',
447
+ send: 'Message to send',
448
+ read: 'File path to read',
449
+ write: 'File path to write',
450
+ download: 'URL to download',
451
+ upload: 'File to upload',
452
+ translate: 'Text to translate',
453
+ summarize: 'Text to summarize',
454
+ convert: 'Input to convert',
455
+ validate: 'Input to validate',
456
+ format: 'Input to format',
457
+ };
458
+ return map[method] || 'Input value';
459
+ }
460
+ static generateMethodStub(name, type) {
461
+ const indent = ' ';
462
+ if (type === 'prompt' || type === 'prompts') {
463
+ return `${indent}/**
464
+ ${indent} * ${name}
465
+ ${indent} * @template
466
+ ${indent} */
467
+ ${indent}async ${name}({
468
+ ${indent} topic
469
+ ${indent}}: {
470
+ ${indent} /** Topic or subject */
471
+ ${indent} topic: string;
472
+ ${indent}}): Promise<string> {
473
+ ${indent} return \`Prompt about: \${topic}\`;
474
+ ${indent}}`;
475
+ }
476
+ if (type === 'resource') {
477
+ return `${indent}/**
478
+ ${indent} * ${name}
479
+ ${indent} * @resource
480
+ ${indent} * @uri ${name}://default
481
+ ${indent} * @mimetype text/plain
482
+ ${indent} */
483
+ ${indent}async ${name}(): Promise<string> {
484
+ ${indent} // Replace with your resource content
485
+ ${indent} return 'Resource content here';
486
+ ${indent}}`;
487
+ }
488
+ // Default: tool
489
+ const paramName = Maker.paramNameForMethod(name);
490
+ const paramDesc = Maker.paramDescForMethod(name);
491
+ return `${indent}/**
492
+ ${indent} * ${name}
493
+ ${indent} * @param ${paramName} ${paramDesc}
494
+ ${indent} */
495
+ ${indent}async ${name}({ ${paramName} }: {
496
+ ${indent} /** ${paramDesc} */
497
+ ${indent} ${paramName}: string;
498
+ ${indent}}): Promise<{ result: string }> {
499
+ ${indent} // Replace with your logic
500
+ ${indent} return { result: ${paramName} };
501
+ ${indent}}`;
502
+ }
503
+ }
504
+ //# sourceMappingURL=maker.photon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maker.photon.js","sourceRoot":"","sources":["../../src/photons/maker.photon.ts"],"names":[],"mappings":"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"}