@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.
- package/dist/auto-ui.js +1 -1
- package/dist/auto-ui.js.map +1 -1
- package/dist/base.d.ts +1 -1
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +2 -2
- package/dist/base.js.map +1 -1
- package/dist/cli-ui-renderer.js +1 -1
- package/dist/cli-ui-renderer.js.map +1 -1
- package/dist/design-system/index.d.ts +21 -0
- package/dist/design-system/index.d.ts.map +1 -0
- package/dist/design-system/index.js +27 -0
- package/dist/design-system/index.js.map +1 -0
- package/dist/design-system/tokens.d.ts +149 -0
- package/dist/design-system/tokens.d.ts.map +1 -0
- package/dist/design-system/tokens.js +413 -0
- package/dist/design-system/tokens.js.map +1 -0
- package/dist/design-system/transaction-ui.d.ts +70 -0
- package/dist/design-system/transaction-ui.d.ts.map +1 -0
- package/dist/design-system/transaction-ui.js +982 -0
- package/dist/design-system/transaction-ui.js.map +1 -0
- package/dist/generator.d.ts +56 -6
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -56
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +103 -2
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +37 -1
- package/dist/io.js.map +1 -1
- package/dist/rendering/components.d.ts +29 -0
- package/dist/rendering/components.d.ts.map +1 -0
- package/dist/rendering/components.js +773 -0
- package/dist/rendering/components.js.map +1 -0
- package/dist/rendering/field-analyzer.d.ts +48 -0
- package/dist/rendering/field-analyzer.d.ts.map +1 -0
- package/dist/rendering/field-analyzer.js +270 -0
- package/dist/rendering/field-analyzer.js.map +1 -0
- package/dist/rendering/field-renderers.d.ts +64 -0
- package/dist/rendering/field-renderers.d.ts.map +1 -0
- package/dist/rendering/field-renderers.js +317 -0
- package/dist/rendering/field-renderers.js.map +1 -0
- package/dist/rendering/index.d.ts +28 -0
- package/dist/rendering/index.d.ts.map +1 -0
- package/dist/rendering/index.js +60 -0
- package/dist/rendering/index.js.map +1 -0
- package/dist/rendering/layout-selector.d.ts +48 -0
- package/dist/rendering/layout-selector.d.ts.map +1 -0
- package/dist/rendering/layout-selector.js +347 -0
- package/dist/rendering/layout-selector.js.map +1 -0
- package/dist/rendering/template-engine.d.ts +41 -0
- package/dist/rendering/template-engine.d.ts.map +1 -0
- package/dist/rendering/template-engine.js +236 -0
- package/dist/rendering/template-engine.js.map +1 -0
- package/dist/schema-extractor.d.ts +30 -0
- package/dist/schema-extractor.d.ts.map +1 -1
- package/dist/schema-extractor.js +205 -12
- package/dist/schema-extractor.js.map +1 -1
- package/dist/stateful.js +1 -1
- package/dist/stateful.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ucp/ap2/handlers.d.ts +242 -0
- package/dist/ucp/ap2/handlers.d.ts.map +1 -0
- package/dist/ucp/ap2/handlers.js +482 -0
- package/dist/ucp/ap2/handlers.js.map +1 -0
- package/dist/ucp/ap2/mandates.d.ts +95 -0
- package/dist/ucp/ap2/mandates.d.ts.map +1 -0
- package/dist/ucp/ap2/mandates.js +234 -0
- package/dist/ucp/ap2/mandates.js.map +1 -0
- package/dist/ucp/ap2/types.d.ts +305 -0
- package/dist/ucp/ap2/types.d.ts.map +1 -0
- package/dist/ucp/ap2/types.js +8 -0
- package/dist/ucp/ap2/types.js.map +1 -0
- package/dist/ucp/capabilities/checkout.d.ts +118 -0
- package/dist/ucp/capabilities/checkout.d.ts.map +1 -0
- package/dist/ucp/capabilities/checkout.js +344 -0
- package/dist/ucp/capabilities/checkout.js.map +1 -0
- package/dist/ucp/capabilities/identity.d.ts +130 -0
- package/dist/ucp/capabilities/identity.d.ts.map +1 -0
- package/dist/ucp/capabilities/identity.js +290 -0
- package/dist/ucp/capabilities/identity.js.map +1 -0
- package/dist/ucp/capabilities/order.d.ts +142 -0
- package/dist/ucp/capabilities/order.d.ts.map +1 -0
- package/dist/ucp/capabilities/order.js +383 -0
- package/dist/ucp/capabilities/order.js.map +1 -0
- package/dist/ucp/index.d.ts +18 -0
- package/dist/ucp/index.d.ts.map +1 -0
- package/dist/ucp/index.js +19 -0
- package/dist/ucp/index.js.map +1 -0
- package/dist/ucp/manifest.d.ts +62 -0
- package/dist/ucp/manifest.d.ts.map +1 -0
- package/dist/ucp/manifest.js +180 -0
- package/dist/ucp/manifest.js.map +1 -0
- package/dist/ucp/types.d.ts +327 -0
- package/dist/ucp/types.d.ts.map +1 -0
- package/dist/ucp/types.js +8 -0
- package/dist/ucp/types.js.map +1 -0
- package/package.json +3 -4
- package/src/auto-ui.ts +1 -1
- package/src/base.ts +2 -2
- package/src/cli-ui-renderer.ts +1 -1
- package/src/design-system/index.ts +30 -0
- package/src/design-system/tokens.ts +451 -0
- package/src/design-system/transaction-ui.ts +1038 -0
- package/src/generator.ts +58 -2
- package/src/index.ts +135 -124
- package/src/io.ts +108 -3
- package/src/rendering/components.ts +785 -0
- package/src/rendering/field-analyzer.ts +299 -0
- package/src/rendering/field-renderers.ts +356 -0
- package/src/rendering/index.ts +63 -0
- package/src/rendering/layout-selector.ts +390 -0
- package/src/rendering/template-engine.ts +254 -0
- package/src/schema-extractor.ts +225 -12
- package/src/stateful.ts +1 -1
- package/src/types.ts +10 -1
- package/src/ucp/ap2/handlers.ts +779 -0
- package/src/ucp/ap2/mandates.ts +354 -0
- package/src/ucp/ap2/types.ts +441 -0
- package/src/ucp/capabilities/checkout.ts +497 -0
- package/src/ucp/capabilities/identity.ts +425 -0
- package/src/ucp/capabilities/order.ts +549 -0
- package/src/ucp/index.ts +27 -0
- package/src/ucp/manifest.ts +257 -0
- package/src/ucp/types.ts +454 -0
- package/dist/cli-formatter.d.ts +0 -92
- package/dist/cli-formatter.d.ts.map +0 -1
- package/dist/cli-formatter.js +0 -486
- package/dist/cli-formatter.js.map +0 -1
- package/dist/context.d.ts +0 -6
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -3
- package/dist/context.js.map +0 -1
- package/dist/elicit.d.ts +0 -93
- package/dist/elicit.d.ts.map +0 -1
- package/dist/elicit.js +0 -373
- package/dist/elicit.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -218
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -424
- package/dist/mcp-client.js.map +0 -1
- package/dist/mcp-sdk-transport.d.ts +0 -88
- package/dist/mcp-sdk-transport.d.ts.map +0 -1
- package/dist/mcp-sdk-transport.js +0 -360
- package/dist/mcp-sdk-transport.js.map +0 -1
- package/dist/photon-config.d.ts +0 -86
- package/dist/photon-config.d.ts.map +0 -1
- package/dist/photon-config.js +0 -156
- package/dist/photon-config.js.map +0 -1
- package/dist/progress.d.ts +0 -93
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js +0 -195
- package/dist/progress.js.map +0 -1
- package/src/cli-formatter.ts +0 -579
- package/src/context.ts +0 -7
- package/src/elicit.ts +0 -438
- package/src/mcp-client.ts +0 -561
- package/src/mcp-sdk-transport.ts +0 -449
- package/src/photon-config.ts +0 -201
- package/src/progress.ts +0 -224
package/dist/photon-config.js
DELETED
|
@@ -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":"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"}
|
package/dist/progress.d.ts
DELETED
|
@@ -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
|
package/dist/progress.d.ts.map
DELETED
|
@@ -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
|
package/dist/progress.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
|