@portel/photon-core 1.5.0 → 2.1.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 (163) hide show
  1. package/dist/auto-ui.js +1 -1
  2. package/dist/auto-ui.js.map +1 -1
  3. package/dist/base.d.ts +1 -1
  4. package/dist/base.d.ts.map +1 -1
  5. package/dist/base.js +2 -2
  6. package/dist/base.js.map +1 -1
  7. package/dist/cli-ui-renderer.js +1 -1
  8. package/dist/cli-ui-renderer.js.map +1 -1
  9. package/dist/design-system/index.d.ts +21 -0
  10. package/dist/design-system/index.d.ts.map +1 -0
  11. package/dist/design-system/index.js +27 -0
  12. package/dist/design-system/index.js.map +1 -0
  13. package/dist/design-system/tokens.d.ts +149 -0
  14. package/dist/design-system/tokens.d.ts.map +1 -0
  15. package/dist/design-system/tokens.js +413 -0
  16. package/dist/design-system/tokens.js.map +1 -0
  17. package/dist/design-system/transaction-ui.d.ts +70 -0
  18. package/dist/design-system/transaction-ui.d.ts.map +1 -0
  19. package/dist/design-system/transaction-ui.js +982 -0
  20. package/dist/design-system/transaction-ui.js.map +1 -0
  21. package/dist/generator.d.ts +56 -6
  22. package/dist/generator.d.ts.map +1 -1
  23. package/dist/generator.js.map +1 -1
  24. package/dist/index.d.ts +6 -7
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +46 -56
  27. package/dist/index.js.map +1 -1
  28. package/dist/io.d.ts +103 -2
  29. package/dist/io.d.ts.map +1 -1
  30. package/dist/io.js +37 -1
  31. package/dist/io.js.map +1 -1
  32. package/dist/rendering/components.d.ts +29 -0
  33. package/dist/rendering/components.d.ts.map +1 -0
  34. package/dist/rendering/components.js +773 -0
  35. package/dist/rendering/components.js.map +1 -0
  36. package/dist/rendering/field-analyzer.d.ts +48 -0
  37. package/dist/rendering/field-analyzer.d.ts.map +1 -0
  38. package/dist/rendering/field-analyzer.js +270 -0
  39. package/dist/rendering/field-analyzer.js.map +1 -0
  40. package/dist/rendering/field-renderers.d.ts +64 -0
  41. package/dist/rendering/field-renderers.d.ts.map +1 -0
  42. package/dist/rendering/field-renderers.js +317 -0
  43. package/dist/rendering/field-renderers.js.map +1 -0
  44. package/dist/rendering/index.d.ts +28 -0
  45. package/dist/rendering/index.d.ts.map +1 -0
  46. package/dist/rendering/index.js +60 -0
  47. package/dist/rendering/index.js.map +1 -0
  48. package/dist/rendering/layout-selector.d.ts +48 -0
  49. package/dist/rendering/layout-selector.d.ts.map +1 -0
  50. package/dist/rendering/layout-selector.js +347 -0
  51. package/dist/rendering/layout-selector.js.map +1 -0
  52. package/dist/rendering/template-engine.d.ts +41 -0
  53. package/dist/rendering/template-engine.d.ts.map +1 -0
  54. package/dist/rendering/template-engine.js +236 -0
  55. package/dist/rendering/template-engine.js.map +1 -0
  56. package/dist/schema-extractor.d.ts +30 -0
  57. package/dist/schema-extractor.d.ts.map +1 -1
  58. package/dist/schema-extractor.js +205 -12
  59. package/dist/schema-extractor.js.map +1 -1
  60. package/dist/stateful.js +1 -1
  61. package/dist/stateful.js.map +1 -1
  62. package/dist/types.d.ts +9 -1
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/types.js.map +1 -1
  65. package/dist/ucp/ap2/handlers.d.ts +242 -0
  66. package/dist/ucp/ap2/handlers.d.ts.map +1 -0
  67. package/dist/ucp/ap2/handlers.js +482 -0
  68. package/dist/ucp/ap2/handlers.js.map +1 -0
  69. package/dist/ucp/ap2/mandates.d.ts +95 -0
  70. package/dist/ucp/ap2/mandates.d.ts.map +1 -0
  71. package/dist/ucp/ap2/mandates.js +234 -0
  72. package/dist/ucp/ap2/mandates.js.map +1 -0
  73. package/dist/ucp/ap2/types.d.ts +305 -0
  74. package/dist/ucp/ap2/types.d.ts.map +1 -0
  75. package/dist/ucp/ap2/types.js +8 -0
  76. package/dist/ucp/ap2/types.js.map +1 -0
  77. package/dist/ucp/capabilities/checkout.d.ts +118 -0
  78. package/dist/ucp/capabilities/checkout.d.ts.map +1 -0
  79. package/dist/ucp/capabilities/checkout.js +344 -0
  80. package/dist/ucp/capabilities/checkout.js.map +1 -0
  81. package/dist/ucp/capabilities/identity.d.ts +130 -0
  82. package/dist/ucp/capabilities/identity.d.ts.map +1 -0
  83. package/dist/ucp/capabilities/identity.js +290 -0
  84. package/dist/ucp/capabilities/identity.js.map +1 -0
  85. package/dist/ucp/capabilities/order.d.ts +142 -0
  86. package/dist/ucp/capabilities/order.d.ts.map +1 -0
  87. package/dist/ucp/capabilities/order.js +383 -0
  88. package/dist/ucp/capabilities/order.js.map +1 -0
  89. package/dist/ucp/index.d.ts +18 -0
  90. package/dist/ucp/index.d.ts.map +1 -0
  91. package/dist/ucp/index.js +19 -0
  92. package/dist/ucp/index.js.map +1 -0
  93. package/dist/ucp/manifest.d.ts +62 -0
  94. package/dist/ucp/manifest.d.ts.map +1 -0
  95. package/dist/ucp/manifest.js +180 -0
  96. package/dist/ucp/manifest.js.map +1 -0
  97. package/dist/ucp/types.d.ts +327 -0
  98. package/dist/ucp/types.d.ts.map +1 -0
  99. package/dist/ucp/types.js +8 -0
  100. package/dist/ucp/types.js.map +1 -0
  101. package/package.json +3 -4
  102. package/src/auto-ui.ts +1 -1
  103. package/src/base.ts +2 -2
  104. package/src/cli-ui-renderer.ts +1 -1
  105. package/src/design-system/index.ts +30 -0
  106. package/src/design-system/tokens.ts +451 -0
  107. package/src/design-system/transaction-ui.ts +1038 -0
  108. package/src/generator.ts +58 -2
  109. package/src/index.ts +135 -124
  110. package/src/io.ts +108 -3
  111. package/src/rendering/components.ts +785 -0
  112. package/src/rendering/field-analyzer.ts +299 -0
  113. package/src/rendering/field-renderers.ts +356 -0
  114. package/src/rendering/index.ts +63 -0
  115. package/src/rendering/layout-selector.ts +390 -0
  116. package/src/rendering/template-engine.ts +254 -0
  117. package/src/schema-extractor.ts +225 -12
  118. package/src/stateful.ts +1 -1
  119. package/src/types.ts +10 -1
  120. package/src/ucp/ap2/handlers.ts +779 -0
  121. package/src/ucp/ap2/mandates.ts +354 -0
  122. package/src/ucp/ap2/types.ts +441 -0
  123. package/src/ucp/capabilities/checkout.ts +497 -0
  124. package/src/ucp/capabilities/identity.ts +425 -0
  125. package/src/ucp/capabilities/order.ts +549 -0
  126. package/src/ucp/index.ts +27 -0
  127. package/src/ucp/manifest.ts +257 -0
  128. package/src/ucp/types.ts +454 -0
  129. package/dist/cli-formatter.d.ts +0 -92
  130. package/dist/cli-formatter.d.ts.map +0 -1
  131. package/dist/cli-formatter.js +0 -486
  132. package/dist/cli-formatter.js.map +0 -1
  133. package/dist/context.d.ts +0 -6
  134. package/dist/context.d.ts.map +0 -1
  135. package/dist/context.js +0 -3
  136. package/dist/context.js.map +0 -1
  137. package/dist/elicit.d.ts +0 -93
  138. package/dist/elicit.d.ts.map +0 -1
  139. package/dist/elicit.js +0 -373
  140. package/dist/elicit.js.map +0 -1
  141. package/dist/mcp-client.d.ts +0 -218
  142. package/dist/mcp-client.d.ts.map +0 -1
  143. package/dist/mcp-client.js +0 -424
  144. package/dist/mcp-client.js.map +0 -1
  145. package/dist/mcp-sdk-transport.d.ts +0 -88
  146. package/dist/mcp-sdk-transport.d.ts.map +0 -1
  147. package/dist/mcp-sdk-transport.js +0 -360
  148. package/dist/mcp-sdk-transport.js.map +0 -1
  149. package/dist/photon-config.d.ts +0 -86
  150. package/dist/photon-config.d.ts.map +0 -1
  151. package/dist/photon-config.js +0 -156
  152. package/dist/photon-config.js.map +0 -1
  153. package/dist/progress.d.ts +0 -93
  154. package/dist/progress.d.ts.map +0 -1
  155. package/dist/progress.js +0 -195
  156. package/dist/progress.js.map +0 -1
  157. package/src/cli-formatter.ts +0 -579
  158. package/src/context.ts +0 -7
  159. package/src/elicit.ts +0 -438
  160. package/src/mcp-client.ts +0 -561
  161. package/src/mcp-sdk-transport.ts +0 -449
  162. package/src/photon-config.ts +0 -201
  163. package/src/progress.ts +0 -224
@@ -1,156 +0,0 @@
1
- /**
2
- * Photon Runtime Configuration
3
- *
4
- * Manages ~/.photon/mcp-servers.json for MCP server configuration.
5
- * Compatible with Claude Desktop's mcpServers format.
6
- */
7
- import * as fs from 'fs/promises';
8
- import * as path from 'path';
9
- import * as os from 'os';
10
- /**
11
- * Default config directory
12
- */
13
- export const PHOTON_CONFIG_DIR = path.join(os.homedir(), '.photon');
14
- /**
15
- * Default MCP servers config file
16
- */
17
- export const MCP_SERVERS_CONFIG_FILE = path.join(PHOTON_CONFIG_DIR, 'mcp-servers.json');
18
- /**
19
- * Load MCP servers configuration from ~/.photon/mcp-servers.json
20
- *
21
- * @param configPath Optional custom config path (defaults to ~/.photon/mcp-servers.json)
22
- * @returns The MCP configuration, or empty config if file doesn't exist
23
- */
24
- export async function loadPhotonMCPConfig(configPath) {
25
- const filePath = configPath || MCP_SERVERS_CONFIG_FILE;
26
- try {
27
- const content = await fs.readFile(filePath, 'utf-8');
28
- const config = JSON.parse(content);
29
- // Validate structure
30
- if (!config.mcpServers || typeof config.mcpServers !== 'object') {
31
- console.error(`Invalid config format in ${filePath}: missing mcpServers`);
32
- return { mcpServers: {} };
33
- }
34
- return config;
35
- }
36
- catch (error) {
37
- if (error.code === 'ENOENT') {
38
- // File doesn't exist - return empty config
39
- return { mcpServers: {} };
40
- }
41
- console.error(`Failed to load config from ${filePath}: ${error.message}`);
42
- return { mcpServers: {} };
43
- }
44
- }
45
- /**
46
- * Save MCP servers configuration to ~/.photon/mcp-servers.json
47
- *
48
- * @param config The configuration to save
49
- * @param configPath Optional custom config path
50
- */
51
- export async function savePhotonMCPConfig(config, configPath) {
52
- const filePath = configPath || MCP_SERVERS_CONFIG_FILE;
53
- const dir = path.dirname(filePath);
54
- // Ensure directory exists
55
- await fs.mkdir(dir, { recursive: true });
56
- // Write config with pretty formatting
57
- await fs.writeFile(filePath, JSON.stringify(config, null, 2), 'utf-8');
58
- }
59
- /**
60
- * Check if an MCP server is configured
61
- *
62
- * @param mcpName The MCP server name to check
63
- * @param config Optional pre-loaded config (loads from file if not provided)
64
- */
65
- export async function isMCPConfigured(mcpName, config) {
66
- const cfg = config || await loadPhotonMCPConfig();
67
- return mcpName in cfg.mcpServers;
68
- }
69
- /**
70
- * Get configuration for a specific MCP server
71
- *
72
- * @param mcpName The MCP server name
73
- * @param config Optional pre-loaded config
74
- * @returns The server config or undefined if not found
75
- */
76
- export async function getMCPServerConfig(mcpName, config) {
77
- const cfg = config || await loadPhotonMCPConfig();
78
- return cfg.mcpServers[mcpName];
79
- }
80
- /**
81
- * Add or update an MCP server configuration
82
- *
83
- * @param mcpName The MCP server name
84
- * @param serverConfig The server configuration
85
- * @param configPath Optional custom config path
86
- */
87
- export async function setMCPServerConfig(mcpName, serverConfig, configPath) {
88
- const config = await loadPhotonMCPConfig(configPath);
89
- config.mcpServers[mcpName] = serverConfig;
90
- await savePhotonMCPConfig(config, configPath);
91
- }
92
- /**
93
- * Remove an MCP server configuration
94
- *
95
- * @param mcpName The MCP server name to remove
96
- * @param configPath Optional custom config path
97
- */
98
- export async function removeMCPServerConfig(mcpName, configPath) {
99
- const config = await loadPhotonMCPConfig(configPath);
100
- delete config.mcpServers[mcpName];
101
- await savePhotonMCPConfig(config, configPath);
102
- }
103
- /**
104
- * List all configured MCP servers
105
- *
106
- * @param configPath Optional custom config path
107
- * @returns Array of MCP server names
108
- */
109
- export async function listMCPServers(configPath) {
110
- const config = await loadPhotonMCPConfig(configPath);
111
- return Object.keys(config.mcpServers);
112
- }
113
- /**
114
- * Convert PhotonMCPConfig to MCPConfig (for SDK transport)
115
- */
116
- export function toMCPConfig(config) {
117
- return {
118
- mcpServers: config.mcpServers,
119
- };
120
- }
121
- /**
122
- * Merge environment variables into MCP server config
123
- * Supports ${VAR_NAME} syntax for env var references
124
- *
125
- * @param serverConfig The server config to process
126
- * @returns Config with env vars resolved
127
- */
128
- export function resolveEnvVars(serverConfig) {
129
- const resolved = { ...serverConfig };
130
- // Process env object if present
131
- if (resolved.env) {
132
- const processedEnv = {};
133
- for (const [key, value] of Object.entries(resolved.env)) {
134
- processedEnv[key] = resolveEnvValue(value);
135
- }
136
- resolved.env = processedEnv;
137
- }
138
- // Process args if present
139
- if (resolved.args) {
140
- resolved.args = resolved.args.map(resolveEnvValue);
141
- }
142
- // Process url if present
143
- if (resolved.url) {
144
- resolved.url = resolveEnvValue(resolved.url);
145
- }
146
- return resolved;
147
- }
148
- /**
149
- * Resolve ${VAR_NAME} references in a string value
150
- */
151
- function resolveEnvValue(value) {
152
- return value.replace(/\$\{([^}]+)\}/g, (_, varName) => {
153
- return process.env[varName] || '';
154
- });
155
- }
156
- //# sourceMappingURL=photon-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"photon-config.js","sourceRoot":"","sources":["../src/photon-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AAUxF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAmB;IAC3D,MAAM,QAAQ,GAAG,UAAU,IAAI,uBAAuB,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;QAEtD,qBAAqB;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,4BAA4B,QAAQ,sBAAsB,CAAC,CAAC;YAC1E,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,2CAA2C;YAC3C,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAuB,EACvB,UAAmB;IAEnB,MAAM,QAAQ,GAAG,UAAU,IAAI,uBAAuB,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,0BAA0B;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,sCAAsC;IACtC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,MAAwB;IAExB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,mBAAmB,EAAE,CAAC;IAClD,OAAO,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,MAAwB;IAExB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,mBAAmB,EAAE,CAAC;IAClD,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,YAA6B,EAC7B,UAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;IAC1C,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAe,EACf,UAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAmB;IACtD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,YAA6B;IAC1D,MAAM,QAAQ,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAErC,gCAAgC;IAChC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,YAAY,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,yBAAyB;IACzB,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,QAAQ,CAAC,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Progress Rendering Utilities
3
- *
4
- * Provides ephemeral progress indicators that clear when done:
5
- * - Spinners for indeterminate progress (EmitStatus)
6
- * - Progress bars for determinate progress (EmitProgress with value)
7
- *
8
- * Used by CLI and other interactive runtimes to show temporary progress.
9
- * Always writes to stderr to avoid interfering with stdout data.
10
- */
11
- /**
12
- * Progress renderer that manages ephemeral output
13
- * All progress is shown on stderr and clears when complete
14
- */
15
- export declare class ProgressRenderer {
16
- private spinnerInterval?;
17
- private currentFrame;
18
- private isActive;
19
- private lastMessage;
20
- private lastLength;
21
- /**
22
- * Start an indeterminate spinner with auto-animation
23
- * Updates every 80ms until stopped
24
- */
25
- startSpinner(message: string): void;
26
- /**
27
- * Show a single frame of spinner (no auto-animation)
28
- * Use this for manual control, or startSpinner() for auto-animation
29
- */
30
- showSpinner(message: string): void;
31
- /**
32
- * Show a progress bar with percentage (0-1)
33
- * Use for determinate progress
34
- */
35
- showProgress(value: number, message?: string): void;
36
- /**
37
- * Render progress bar with optional spinner animation
38
- * Combines progress bar with spinner for better UX
39
- */
40
- render(value: number, message?: string): void;
41
- /**
42
- * Update message without restarting animation
43
- */
44
- updateMessage(message: string): void;
45
- /**
46
- * Stop and clear progress display
47
- * Alias for done() for consistency
48
- */
49
- stop(): void;
50
- /**
51
- * End progress display (clears the line completely)
52
- */
53
- done(): void;
54
- /**
55
- * Print a persistent status message (clears progress first, then prints)
56
- */
57
- status(message: string): void;
58
- /**
59
- * Check if progress is currently active
60
- */
61
- get active(): boolean;
62
- /**
63
- * Clear the current progress line
64
- */
65
- private clearLine;
66
- private renderSpinner;
67
- private renderProgressBar;
68
- }
69
- /**
70
- * Get or create the global progress renderer
71
- */
72
- export declare function getProgressRenderer(): ProgressRenderer;
73
- /**
74
- * Start a spinner with message
75
- */
76
- export declare function startSpinner(message: string): void;
77
- /**
78
- * Show progress bar (0-1)
79
- */
80
- export declare function showProgress(value: number, message?: string): void;
81
- /**
82
- * Update current progress message
83
- */
84
- export declare function updateProgressMessage(message: string): void;
85
- /**
86
- * Stop and clear progress display
87
- */
88
- export declare function stopProgress(): void;
89
- /**
90
- * Check if progress is active
91
- */
92
- export declare function isProgressActive(): boolean;
93
- //# sourceMappingURL=progress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAK;IAEvB;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAenC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAkB7C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpC;;;OAGG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAgBZ;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;CAW1B;AAOD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
package/dist/progress.js DELETED
@@ -1,195 +0,0 @@
1
- /**
2
- * Progress Rendering Utilities
3
- *
4
- * Provides ephemeral progress indicators that clear when done:
5
- * - Spinners for indeterminate progress (EmitStatus)
6
- * - Progress bars for determinate progress (EmitProgress with value)
7
- *
8
- * Used by CLI and other interactive runtimes to show temporary progress.
9
- * Always writes to stderr to avoid interfering with stdout data.
10
- */
11
- import * as readline from 'readline';
12
- const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
13
- /**
14
- * Progress renderer that manages ephemeral output
15
- * All progress is shown on stderr and clears when complete
16
- */
17
- export class ProgressRenderer {
18
- spinnerInterval;
19
- currentFrame = 0;
20
- isActive = false;
21
- lastMessage = '';
22
- lastLength = 0;
23
- /**
24
- * Start an indeterminate spinner with auto-animation
25
- * Updates every 80ms until stopped
26
- */
27
- startSpinner(message) {
28
- this.stop(); // Clear any previous progress
29
- this.isActive = true;
30
- this.lastMessage = message;
31
- // Initial render
32
- this.renderSpinner();
33
- // Update spinner every 80ms
34
- this.spinnerInterval = setInterval(() => {
35
- this.currentFrame = (this.currentFrame + 1) % SPINNER_FRAMES.length;
36
- this.renderSpinner();
37
- }, 80);
38
- }
39
- /**
40
- * Show a single frame of spinner (no auto-animation)
41
- * Use this for manual control, or startSpinner() for auto-animation
42
- */
43
- showSpinner(message) {
44
- this.clearLine();
45
- this.isActive = true;
46
- this.lastMessage = message;
47
- this.renderSpinner();
48
- }
49
- /**
50
- * Show a progress bar with percentage (0-1)
51
- * Use for determinate progress
52
- */
53
- showProgress(value, message) {
54
- this.stop(); // Clear any spinner
55
- this.isActive = true;
56
- this.lastMessage = message || '';
57
- this.renderProgressBar(value);
58
- }
59
- /**
60
- * Render progress bar with optional spinner animation
61
- * Combines progress bar with spinner for better UX
62
- */
63
- render(value, message) {
64
- this.isActive = true;
65
- this.lastMessage = message || '';
66
- const pct = Math.round(value * 100);
67
- const barWidth = 20;
68
- const filled = Math.round(value * barWidth);
69
- const empty = barWidth - filled;
70
- const bar = '█'.repeat(filled) + '░'.repeat(empty);
71
- const spinner = pct < 100 ? SPINNER_FRAMES[this.currentFrame++ % SPINNER_FRAMES.length] : '✓';
72
- const text = `${spinner} [${bar}] ${pct.toString().padStart(3)}%${this.lastMessage ? ` ${this.lastMessage}` : ''}`;
73
- this.clearLine();
74
- process.stderr.write(text);
75
- this.lastLength = text.length;
76
- }
77
- /**
78
- * Update message without restarting animation
79
- */
80
- updateMessage(message) {
81
- if (this.isActive) {
82
- this.lastMessage = message;
83
- if (this.spinnerInterval) {
84
- this.renderSpinner();
85
- }
86
- }
87
- }
88
- /**
89
- * Stop and clear progress display
90
- * Alias for done() for consistency
91
- */
92
- stop() {
93
- this.done();
94
- }
95
- /**
96
- * End progress display (clears the line completely)
97
- */
98
- done() {
99
- if (this.spinnerInterval) {
100
- clearInterval(this.spinnerInterval);
101
- this.spinnerInterval = undefined;
102
- }
103
- if (this.isActive) {
104
- this.clearLine();
105
- this.isActive = false;
106
- }
107
- this.currentFrame = 0;
108
- this.lastMessage = '';
109
- this.lastLength = 0;
110
- }
111
- /**
112
- * Print a persistent status message (clears progress first, then prints)
113
- */
114
- status(message) {
115
- this.done();
116
- console.error(`ℹ ${message}`);
117
- }
118
- /**
119
- * Check if progress is currently active
120
- */
121
- get active() {
122
- return this.isActive;
123
- }
124
- /**
125
- * Clear the current progress line
126
- */
127
- clearLine() {
128
- if ((this.lastLength > 0 || this.isActive) && process.stderr.isTTY) {
129
- readline.clearLine(process.stderr, 0);
130
- readline.cursorTo(process.stderr, 0);
131
- this.lastLength = 0;
132
- }
133
- }
134
- renderSpinner() {
135
- const frame = SPINNER_FRAMES[this.currentFrame];
136
- const text = `${frame} ${this.lastMessage}`;
137
- this.clearLine();
138
- process.stderr.write(text);
139
- this.lastLength = text.length;
140
- }
141
- renderProgressBar(value) {
142
- const percentage = Math.round(value * 100);
143
- const barLength = 30;
144
- const filled = Math.round(barLength * value);
145
- const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
146
- const text = `[${bar}] ${percentage}%${this.lastMessage ? ` ${this.lastMessage}` : ''}`;
147
- this.clearLine();
148
- process.stderr.write(text);
149
- this.lastLength = text.length;
150
- }
151
- }
152
- /**
153
- * Global progress renderer instance
154
- */
155
- let globalRenderer = null;
156
- /**
157
- * Get or create the global progress renderer
158
- */
159
- export function getProgressRenderer() {
160
- if (!globalRenderer) {
161
- globalRenderer = new ProgressRenderer();
162
- }
163
- return globalRenderer;
164
- }
165
- /**
166
- * Start a spinner with message
167
- */
168
- export function startSpinner(message) {
169
- getProgressRenderer().startSpinner(message);
170
- }
171
- /**
172
- * Show progress bar (0-1)
173
- */
174
- export function showProgress(value, message) {
175
- getProgressRenderer().showProgress(value, message);
176
- }
177
- /**
178
- * Update current progress message
179
- */
180
- export function updateProgressMessage(message) {
181
- getProgressRenderer().updateMessage(message);
182
- }
183
- /**
184
- * Stop and clear progress display
185
- */
186
- export function stopProgress() {
187
- getProgressRenderer().stop();
188
- }
189
- /**
190
- * Check if progress is active
191
- */
192
- export function isProgressActive() {
193
- return getProgressRenderer().active;
194
- }
195
- //# sourceMappingURL=progress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,eAAe,CAAkB;IACjC,YAAY,GAAG,CAAC,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,GAAG,EAAE,CAAC;IACjB,UAAU,GAAG,CAAC,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,OAAe;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,8BAA8B;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAE3B,iBAAiB;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,4BAA4B;QAC5B,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;YACpE,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAa,EAAE,OAAgB;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,oBAAoB;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAa,EAAE,OAAgB;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAEhC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE9F,MAAM,IAAI,GAAG,GAAG,OAAO,KAAK,GAAG,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEnH,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxF,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,IAAI,cAAc,GAA4B,IAAI,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAAgB;IAC1D,mBAAmB,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,mBAAmB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,mBAAmB,EAAE,CAAC,MAAM,CAAC;AACtC,CAAC"}