@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
package/src/progress.ts DELETED
@@ -1,224 +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
- import * as readline from 'readline';
13
-
14
- const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
15
-
16
- /**
17
- * Progress renderer that manages ephemeral output
18
- * All progress is shown on stderr and clears when complete
19
- */
20
- export class ProgressRenderer {
21
- private spinnerInterval?: NodeJS.Timeout;
22
- private currentFrame = 0;
23
- private isActive = false;
24
- private lastMessage = '';
25
- private lastLength = 0;
26
-
27
- /**
28
- * Start an indeterminate spinner with auto-animation
29
- * Updates every 80ms until stopped
30
- */
31
- startSpinner(message: string): void {
32
- this.stop(); // Clear any previous progress
33
- this.isActive = true;
34
- this.lastMessage = message;
35
-
36
- // Initial render
37
- this.renderSpinner();
38
-
39
- // Update spinner every 80ms
40
- this.spinnerInterval = setInterval(() => {
41
- this.currentFrame = (this.currentFrame + 1) % SPINNER_FRAMES.length;
42
- this.renderSpinner();
43
- }, 80);
44
- }
45
-
46
- /**
47
- * Show a single frame of spinner (no auto-animation)
48
- * Use this for manual control, or startSpinner() for auto-animation
49
- */
50
- showSpinner(message: string): void {
51
- this.clearLine();
52
- this.isActive = true;
53
- this.lastMessage = message;
54
- this.renderSpinner();
55
- }
56
-
57
- /**
58
- * Show a progress bar with percentage (0-1)
59
- * Use for determinate progress
60
- */
61
- showProgress(value: number, message?: string): void {
62
- this.stop(); // Clear any spinner
63
- this.isActive = true;
64
- this.lastMessage = message || '';
65
- this.renderProgressBar(value);
66
- }
67
-
68
- /**
69
- * Render progress bar with optional spinner animation
70
- * Combines progress bar with spinner for better UX
71
- */
72
- render(value: number, message?: string): void {
73
- this.isActive = true;
74
- this.lastMessage = message || '';
75
- const pct = Math.round(value * 100);
76
- const barWidth = 20;
77
- const filled = Math.round(value * barWidth);
78
- const empty = barWidth - filled;
79
-
80
- const bar = '█'.repeat(filled) + '░'.repeat(empty);
81
- const spinner = pct < 100 ? SPINNER_FRAMES[this.currentFrame++ % SPINNER_FRAMES.length] : '✓';
82
-
83
- const text = `${spinner} [${bar}] ${pct.toString().padStart(3)}%${this.lastMessage ? ` ${this.lastMessage}` : ''}`;
84
-
85
- this.clearLine();
86
- process.stderr.write(text);
87
- this.lastLength = text.length;
88
- }
89
-
90
- /**
91
- * Update message without restarting animation
92
- */
93
- updateMessage(message: string): void {
94
- if (this.isActive) {
95
- this.lastMessage = message;
96
- if (this.spinnerInterval) {
97
- this.renderSpinner();
98
- }
99
- }
100
- }
101
-
102
- /**
103
- * Stop and clear progress display
104
- * Alias for done() for consistency
105
- */
106
- stop(): void {
107
- this.done();
108
- }
109
-
110
- /**
111
- * End progress display (clears the line completely)
112
- */
113
- done(): void {
114
- if (this.spinnerInterval) {
115
- clearInterval(this.spinnerInterval);
116
- this.spinnerInterval = undefined;
117
- }
118
-
119
- if (this.isActive) {
120
- this.clearLine();
121
- this.isActive = false;
122
- }
123
-
124
- this.currentFrame = 0;
125
- this.lastMessage = '';
126
- this.lastLength = 0;
127
- }
128
-
129
- /**
130
- * Print a persistent status message (clears progress first, then prints)
131
- */
132
- status(message: string): void {
133
- this.done();
134
- console.error(`ℹ ${message}`);
135
- }
136
-
137
- /**
138
- * Check if progress is currently active
139
- */
140
- get active(): boolean {
141
- return this.isActive;
142
- }
143
-
144
- /**
145
- * Clear the current progress line
146
- */
147
- private clearLine(): void {
148
- if ((this.lastLength > 0 || this.isActive) && process.stderr.isTTY) {
149
- readline.clearLine(process.stderr, 0);
150
- readline.cursorTo(process.stderr, 0);
151
- this.lastLength = 0;
152
- }
153
- }
154
-
155
- private renderSpinner(): void {
156
- const frame = SPINNER_FRAMES[this.currentFrame];
157
- const text = `${frame} ${this.lastMessage}`;
158
- this.clearLine();
159
- process.stderr.write(text);
160
- this.lastLength = text.length;
161
- }
162
-
163
- private renderProgressBar(value: number): void {
164
- const percentage = Math.round(value * 100);
165
- const barLength = 30;
166
- const filled = Math.round(barLength * value);
167
- const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
168
-
169
- const text = `[${bar}] ${percentage}%${this.lastMessage ? ` ${this.lastMessage}` : ''}`;
170
- this.clearLine();
171
- process.stderr.write(text);
172
- this.lastLength = text.length;
173
- }
174
- }
175
-
176
- /**
177
- * Global progress renderer instance
178
- */
179
- let globalRenderer: ProgressRenderer | null = null;
180
-
181
- /**
182
- * Get or create the global progress renderer
183
- */
184
- export function getProgressRenderer(): ProgressRenderer {
185
- if (!globalRenderer) {
186
- globalRenderer = new ProgressRenderer();
187
- }
188
- return globalRenderer;
189
- }
190
-
191
- /**
192
- * Start a spinner with message
193
- */
194
- export function startSpinner(message: string): void {
195
- getProgressRenderer().startSpinner(message);
196
- }
197
-
198
- /**
199
- * Show progress bar (0-1)
200
- */
201
- export function showProgress(value: number, message?: string): void {
202
- getProgressRenderer().showProgress(value, message);
203
- }
204
-
205
- /**
206
- * Update current progress message
207
- */
208
- export function updateProgressMessage(message: string): void {
209
- getProgressRenderer().updateMessage(message);
210
- }
211
-
212
- /**
213
- * Stop and clear progress display
214
- */
215
- export function stopProgress(): void {
216
- getProgressRenderer().stop();
217
- }
218
-
219
- /**
220
- * Check if progress is active
221
- */
222
- export function isProgressActive(): boolean {
223
- return getProgressRenderer().active;
224
- }