@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,378 @@
1
+ /**
2
+ * Marketplace - Search, install, and manage photons
3
+ * @description Browse and manage photon marketplace
4
+ * @internal
5
+ * @icon đŸĒ
6
+ */
7
+
8
+ import * as fs from 'fs/promises';
9
+ import * as path from 'path';
10
+ import * as os from 'os';
11
+
12
+ export default class Marketplace {
13
+ private workingDir: string;
14
+
15
+ constructor(workingDir?: string) {
16
+ this.workingDir = workingDir || process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
17
+ }
18
+
19
+ // ============================================
20
+ // Consumer Methods
21
+ // ============================================
22
+
23
+ /**
24
+ * Search marketplace for photons
25
+ * @param query Search query string
26
+ */
27
+ static async search({ query }: { query: string }): Promise<
28
+ Array<{
29
+ name: string;
30
+ description: string;
31
+ version: string;
32
+ author: string;
33
+ tags: string[];
34
+ marketplace: string;
35
+ installed: boolean;
36
+ }>
37
+ > {
38
+ const { MarketplaceManager } = await import('../marketplace-manager.js');
39
+ const manager = new MarketplaceManager();
40
+ await manager.initialize();
41
+
42
+ const results = await manager.search(query);
43
+ const photonList: Array<{
44
+ name: string;
45
+ description: string;
46
+ version: string;
47
+ author: string;
48
+ tags: string[];
49
+ marketplace: string;
50
+ installed: boolean;
51
+ }> = [];
52
+
53
+ const workingDir = process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
54
+
55
+ for (const [name, sources] of results) {
56
+ const source = sources[0];
57
+ // Check if installed by looking for the file
58
+ let installed = false;
59
+ try {
60
+ await fs.access(path.join(workingDir, `${name}.photon.ts`));
61
+ installed = true;
62
+ } catch {
63
+ // Not installed
64
+ }
65
+
66
+ photonList.push({
67
+ name,
68
+ description: source.metadata?.description || '',
69
+ version: source.metadata?.version || '',
70
+ author: source.metadata?.author || '',
71
+ tags: source.metadata?.tags || [],
72
+ marketplace: source.marketplace.name,
73
+ installed,
74
+ });
75
+ }
76
+
77
+ return photonList;
78
+ }
79
+
80
+ /**
81
+ * Install a photon from marketplace
82
+ * @param name Name of the photon to install
83
+ */
84
+ static async *install({ name }: { name: string }): AsyncGenerator<{
85
+ step: string;
86
+ message?: string;
87
+ name?: string;
88
+ path?: string;
89
+ version?: string;
90
+ }> {
91
+ const { MarketplaceManager } = await import('../marketplace-manager.js');
92
+ const manager = new MarketplaceManager();
93
+ await manager.initialize();
94
+
95
+ const workingDir = process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
96
+
97
+ yield { step: 'searching', message: `Searching for ${name}...` };
98
+
99
+ const result = await manager.fetchMCP(name);
100
+ if (!result) {
101
+ yield { step: 'error', message: `Photon '${name}' not found in marketplace` };
102
+ return;
103
+ }
104
+
105
+ yield { step: 'downloading', message: `Downloading ${name}...` };
106
+
107
+ const targetPath = path.join(workingDir, `${name}.photon.ts`);
108
+ await fs.writeFile(targetPath, result.content, 'utf-8');
109
+
110
+ if (result.metadata) {
111
+ yield { step: 'saving-metadata', message: 'Saving installation metadata...' };
112
+ const { calculateHash } = await import('../marketplace-manager.js');
113
+ const hash = calculateHash(result.content);
114
+ await manager.savePhotonMetadata(
115
+ `${name}.photon.ts`,
116
+ result.marketplace,
117
+ result.metadata,
118
+ hash
119
+ );
120
+ }
121
+
122
+ yield {
123
+ step: 'done',
124
+ message: `Installed ${name}`,
125
+ name,
126
+ path: targetPath,
127
+ version: result.metadata?.version,
128
+ };
129
+ }
130
+
131
+ /**
132
+ * Upgrade an installed photon to latest version
133
+ * @param name Name of the photon to upgrade
134
+ */
135
+ static async *upgrade({ name }: { name: string }): AsyncGenerator<{
136
+ step: string;
137
+ message?: string;
138
+ currentVersion?: string;
139
+ newVersion?: string;
140
+ }> {
141
+ const { MarketplaceManager, readLocalMetadata } = await import('../marketplace-manager.js');
142
+ const manager = new MarketplaceManager();
143
+ await manager.initialize();
144
+
145
+ yield { step: 'checking', message: `Checking current version of ${name}...` };
146
+
147
+ const localMeta = await readLocalMetadata();
148
+ const fileName = `${name}.photon.ts`;
149
+ const currentMeta = localMeta.photons[fileName];
150
+ const currentVersion = currentMeta?.version || 'unknown';
151
+
152
+ yield { step: 'fetching', message: `Fetching latest version...` };
153
+
154
+ const result = await manager.fetchMCP(name);
155
+ if (!result) {
156
+ yield { step: 'error', message: `Photon '${name}' not found in marketplace` };
157
+ return;
158
+ }
159
+
160
+ const workingDir = process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
161
+ const targetPath = path.join(workingDir, fileName);
162
+
163
+ yield { step: 'installing', message: `Upgrading ${name}...` };
164
+
165
+ await fs.writeFile(targetPath, result.content, 'utf-8');
166
+
167
+ if (result.metadata) {
168
+ const { calculateHash } = await import('../marketplace-manager.js');
169
+ const hash = calculateHash(result.content);
170
+ await manager.savePhotonMetadata(fileName, result.marketplace, result.metadata, hash);
171
+ }
172
+
173
+ yield {
174
+ step: 'done',
175
+ message: `Upgraded ${name} from ${currentVersion} to ${result.metadata?.version || 'latest'}`,
176
+ currentVersion,
177
+ newVersion: result.metadata?.version,
178
+ };
179
+ }
180
+
181
+ /**
182
+ * Check all installed photons for available updates
183
+ * @autorun
184
+ */
185
+ static async checkUpdates(): Promise<
186
+ Array<{
187
+ name: string;
188
+ currentVersion: string;
189
+ latestVersion: string;
190
+ marketplace: string;
191
+ }>
192
+ > {
193
+ const { MarketplaceManager, readLocalMetadata } = await import('../marketplace-manager.js');
194
+ const manager = new MarketplaceManager();
195
+ await manager.initialize();
196
+
197
+ const localMeta = await readLocalMetadata();
198
+ const updates: Array<{
199
+ name: string;
200
+ currentVersion: string;
201
+ latestVersion: string;
202
+ marketplace: string;
203
+ }> = [];
204
+
205
+ for (const [fileName, installMeta] of Object.entries(localMeta.photons)) {
206
+ const photonName = fileName.replace(/\.photon\.ts$/, '');
207
+ const latestInfo = await manager.getPhotonMetadata(photonName);
208
+
209
+ if (latestInfo && latestInfo.metadata.version !== installMeta.version) {
210
+ updates.push({
211
+ name: photonName,
212
+ currentVersion: installMeta.version,
213
+ latestVersion: latestInfo.metadata.version,
214
+ marketplace: latestInfo.marketplace.name,
215
+ });
216
+ }
217
+ }
218
+
219
+ return updates;
220
+ }
221
+
222
+ // ============================================
223
+ // Source Management
224
+ // ============================================
225
+
226
+ /**
227
+ * List configured marketplace sources
228
+ * @autorun
229
+ */
230
+ static async listSources(): Promise<
231
+ Array<{
232
+ name: string;
233
+ repo: string;
234
+ source: string;
235
+ sourceType: string;
236
+ enabled: boolean;
237
+ photonCount: number;
238
+ }>
239
+ > {
240
+ const { MarketplaceManager } = await import('../marketplace-manager.js');
241
+ const manager = new MarketplaceManager();
242
+ await manager.initialize();
243
+
244
+ const sources = manager.getAll();
245
+ const result = await Promise.all(
246
+ sources.map(async (s) => {
247
+ const manifest = await manager.getCachedManifest(s.name);
248
+ return {
249
+ name: s.name,
250
+ repo: s.repo,
251
+ source: s.source,
252
+ sourceType: s.sourceType,
253
+ enabled: s.enabled,
254
+ photonCount: manifest?.photons?.length || 0,
255
+ };
256
+ })
257
+ );
258
+
259
+ return result;
260
+ }
261
+
262
+ /**
263
+ * Add a marketplace source
264
+ * @param source Git URL or local path to marketplace
265
+ */
266
+ static async addSource({
267
+ source,
268
+ }: {
269
+ source: string;
270
+ }): Promise<{ name: string; added: boolean }> {
271
+ const { MarketplaceManager } = await import('../marketplace-manager.js');
272
+ const manager = new MarketplaceManager();
273
+ await manager.initialize();
274
+
275
+ const result = await manager.add(source);
276
+
277
+ if (result.added) {
278
+ await manager.updateMarketplaceCache(result.marketplace.name);
279
+ }
280
+
281
+ return { name: result.marketplace.name, added: result.added };
282
+ }
283
+
284
+ /**
285
+ * Remove a marketplace source
286
+ * @param name Name of the marketplace source to remove
287
+ */
288
+ static async removeSource({ name }: { name: string }): Promise<{ removed: boolean }> {
289
+ const { MarketplaceManager } = await import('../marketplace-manager.js');
290
+ const manager = new MarketplaceManager();
291
+ await manager.initialize();
292
+
293
+ const removed = await manager.remove(name);
294
+ return { removed };
295
+ }
296
+
297
+ // ============================================
298
+ // Publishing Methods (moved from maker)
299
+ // ============================================
300
+
301
+ /**
302
+ * Synchronize marketplace manifest and documentation
303
+ */
304
+ static async *sync(): AsyncGenerator<{
305
+ step: string;
306
+ message?: string;
307
+ photon?: string;
308
+ photons?: number;
309
+ manifest?: string;
310
+ }> {
311
+ const workingDir = process.env.PHOTON_DIR || process.cwd();
312
+
313
+ yield { step: 'scanning', message: 'Scanning for photons...' };
314
+
315
+ const files = await fs.readdir(workingDir);
316
+ const photonFiles = files.filter((f) => f.endsWith('.photon.ts'));
317
+
318
+ yield {
319
+ step: 'found',
320
+ message: `Found ${photonFiles.length} photons`,
321
+ photons: photonFiles.length,
322
+ };
323
+
324
+ for (const file of photonFiles) {
325
+ yield { step: 'processing', photon: file, message: `Processing ${file}...` };
326
+ await new Promise((resolve) => setTimeout(resolve, 100));
327
+ }
328
+
329
+ const manifest = path.join(workingDir, '.marketplace', 'photons.json');
330
+ yield { step: 'done', message: 'Sync complete', photons: photonFiles.length, manifest };
331
+ }
332
+
333
+ /**
334
+ * Initialize current directory as a photon marketplace
335
+ */
336
+ static async *init(): AsyncGenerator<{ step: string; message?: string; created?: string }> {
337
+ const workingDir = process.cwd();
338
+
339
+ yield { step: 'starting', message: 'Initializing photon marketplace...' };
340
+
341
+ const marketplaceDir = path.join(workingDir, '.marketplace');
342
+ try {
343
+ await fs.mkdir(marketplaceDir, { recursive: true });
344
+ yield { step: 'created', created: '.marketplace/' };
345
+ } catch {
346
+ // Directory creation failed - continue anyway
347
+ }
348
+
349
+ const manifestPath = path.join(marketplaceDir, 'photons.json');
350
+ try {
351
+ await fs.access(manifestPath);
352
+ yield { step: 'exists', message: '.marketplace/photons.json already exists' };
353
+ } catch {
354
+ await fs.writeFile(manifestPath, JSON.stringify({ photons: [] }, null, 2));
355
+ yield { step: 'created', created: '.marketplace/photons.json' };
356
+ }
357
+
358
+ const gitignorePath = path.join(workingDir, '.gitignore');
359
+ try {
360
+ let gitignore = '';
361
+ try {
362
+ gitignore = await fs.readFile(gitignorePath, 'utf-8');
363
+ } catch {
364
+ // File doesn't exist
365
+ }
366
+
367
+ if (!gitignore.includes('node_modules')) {
368
+ gitignore += '\nnode_modules/\n';
369
+ await fs.writeFile(gitignorePath, gitignore);
370
+ yield { step: 'created', created: '.gitignore (updated)' };
371
+ }
372
+ } catch {
373
+ // gitignore update failed - non-critical
374
+ }
375
+
376
+ yield { step: 'done', message: 'Marketplace initialized' };
377
+ }
378
+ }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Tunnel - Expose local servers to the internet
3
+ * @description Multi-provider tunneling for remote access to Beam and local services
4
+ * @internal
5
+ */
6
+ interface TunnelInfo {
7
+ provider: string;
8
+ port: number;
9
+ url: string;
10
+ pid: number;
11
+ startedAt: Date;
12
+ }
13
+ export default class Tunnel {
14
+ /**
15
+ * Check available tunnel providers
16
+ * @icon 🔍
17
+ */
18
+ status(): Promise<{
19
+ providers: Array<{
20
+ name: string;
21
+ available: boolean;
22
+ install?: string;
23
+ note?: string;
24
+ }>;
25
+ activeTunnels: TunnelInfo[];
26
+ }>;
27
+ /**
28
+ * Start a tunnel to expose Beam to the internet
29
+ * @icon 🚀
30
+ * @param provider Tunnel provider to use
31
+ */
32
+ start({ provider, }?: {
33
+ /** Provider: localtunnel, ngrok, or cloudflared */
34
+ provider?: 'localtunnel' | 'ngrok' | 'cloudflared';
35
+ }): AsyncGenerator<{
36
+ step: string;
37
+ message: string;
38
+ }, {
39
+ message: string;
40
+ url: string;
41
+ link: string;
42
+ provider: string;
43
+ port: number;
44
+ password?: string;
45
+ }>;
46
+ /**
47
+ * Stop a tunnel
48
+ * @icon âšī¸
49
+ * @param port Port of the tunnel to stop
50
+ */
51
+ stop({ port, }: {
52
+ /** Port of the tunnel to stop */
53
+ port: number;
54
+ }): Promise<{
55
+ stopped: boolean;
56
+ message: string;
57
+ }>;
58
+ /**
59
+ * Stop all active tunnels
60
+ * @icon âšī¸
61
+ */
62
+ stopAll(): Promise<{
63
+ stopped: number;
64
+ message: string;
65
+ }>;
66
+ /**
67
+ * List active tunnels
68
+ * @icon 📋
69
+ */
70
+ list(): Promise<{
71
+ tunnels: TunnelInfo[];
72
+ }>;
73
+ private _checkCommand;
74
+ private _getPublicIp;
75
+ private _startLocaltunnel;
76
+ private _startNgrok;
77
+ private _startCloudflared;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=tunnel.photon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.photon.d.ts","sourceRoot":"","sources":["../../src/photons/tunnel.photon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;CACjB;AAKD,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC;QACtB,SAAS,EAAE,KAAK,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,EAAE,UAAU,EAAE,CAAC;KAC7B,CAAC;IA0BF;;;;OAIG;IACI,KAAK,CAAC,EACX,QAAwB,GACzB,GAAE;QACD,mDAAmD;QACnD,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,aAAa,CAAC;KAC/C,GAAG,cAAc,CACrB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EACjC;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CACF;IAuED;;;;OAIG;IACG,IAAI,CAAC,EACT,IAAI,GACL,EAAE;QACD,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBlD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAc9D;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAUhD,OAAO,CAAC,aAAa;YASP,YAAY;YAqBZ,iBAAiB;YA2CjB,WAAW;YAgCX,iBAAiB;CAgChC"}