@echothink-ui/skills 0.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/src/index.tsx ADDED
@@ -0,0 +1,871 @@
1
+ import type { EthSkillDefinition, SkillRegistry } from "@echothink-ui/runtime";
2
+
3
+ export const echoThinkSkillCatalog: EthSkillDefinition[] = [
4
+ {
5
+ id: "eth.layout.page_header",
6
+ version: "1.0.0",
7
+ name: "Page Header",
8
+ category: "eth.layout",
9
+ outputSurfaceType: "panel",
10
+ requiredPermissions: [{ action: "layout.read", mode: "read" }],
11
+ events: ["eth.layout.page_header.open"],
12
+ load: async () => ({ default: (await import("@echothink-ui/layouts")).PageHeader })
13
+ },
14
+ {
15
+ id: "eth.layout.split_inspector",
16
+ version: "1.0.0",
17
+ name: "Split Inspector Layout",
18
+ category: "eth.layout",
19
+ outputSurfaceType: "panel",
20
+ requiredPermissions: [{ action: "layout.read", mode: "read" }],
21
+ events: ["eth.layout.split_inspector.open"],
22
+ load: async () => ({ default: (await import("@echothink-ui/layouts")).SplitPane })
23
+ },
24
+ {
25
+ id: "eth.layout.workspace_canvas",
26
+ version: "1.0.0",
27
+ name: "Workspace Canvas",
28
+ category: "eth.layout",
29
+ outputSurfaceType: "panel",
30
+ requiredPermissions: [{ action: "layout.read", mode: "read" }],
31
+ events: ["eth.layout.workspace_canvas.open"],
32
+ load: async () => ({ default: (await import("@echothink-ui/layouts")).WorkspaceCanvas })
33
+ },
34
+ {
35
+ id: "eth.project.dashboard",
36
+ version: "1.0.0",
37
+ name: "Project Dashboard",
38
+ category: "eth.project",
39
+ outputSurfaceType: "panel",
40
+ requiredPermissions: [{ action: "project.read", mode: "read" }],
41
+ events: ["eth.project.dashboard.open"],
42
+ load: async () => ({
43
+ default: (await import("@echothink-ui/project")).ProjectDashboardTemplate
44
+ })
45
+ },
46
+ {
47
+ id: "eth.project.scope_selector",
48
+ version: "1.0.0",
49
+ name: "Project Scope Selector",
50
+ category: "eth.project",
51
+ outputSurfaceType: "panel",
52
+ requiredPermissions: [{ action: "project.read", mode: "read" }],
53
+ events: ["eth.project.scope_selector.open"],
54
+ load: async () => ({ default: (await import("@echothink-ui/project")).ProjectScopeSelector })
55
+ },
56
+ {
57
+ id: "eth.project.resources",
58
+ version: "1.0.0",
59
+ name: "Project Resources",
60
+ category: "eth.project",
61
+ outputSurfaceType: "panel",
62
+ requiredPermissions: [{ action: "project.read", mode: "read" }],
63
+ events: ["eth.project.resources.open"],
64
+ load: async () => ({ default: (await import("@echothink-ui/project")).ProjectResourcePanel })
65
+ },
66
+ {
67
+ id: "eth.project.members",
68
+ version: "1.0.0",
69
+ name: "Project Members",
70
+ category: "eth.project",
71
+ outputSurfaceType: "panel",
72
+ requiredPermissions: [{ action: "project.read", mode: "read" }],
73
+ events: ["eth.project.members.open"],
74
+ load: async () => ({ default: (await import("@echothink-ui/project")).ProjectMembersPanel })
75
+ },
76
+ {
77
+ id: "eth.project.settings",
78
+ version: "1.0.0",
79
+ name: "Project Settings",
80
+ category: "eth.project",
81
+ outputSurfaceType: "panel",
82
+ requiredPermissions: [{ action: "project.read", mode: "read" }],
83
+ events: ["eth.project.settings.open"],
84
+ load: async () => ({ default: (await import("@echothink-ui/project")).ProjectSettingsPanel })
85
+ },
86
+ {
87
+ id: "eth.app_domain.market",
88
+ version: "1.0.0",
89
+ name: "App Domain Market",
90
+ category: "eth.app_domain",
91
+ outputSurfaceType: "panel",
92
+ requiredPermissions: [{ action: "app-domain.read", mode: "read" }],
93
+ events: ["eth.app_domain.market.open"],
94
+ load: async () => ({ default: (await import("@echothink-ui/app-domain")).AppDomainMarket })
95
+ },
96
+ {
97
+ id: "eth.app_domain.detail",
98
+ version: "1.0.0",
99
+ name: "App Domain Detail",
100
+ category: "eth.app_domain",
101
+ outputSurfaceType: "panel",
102
+ requiredPermissions: [{ action: "app-domain.read", mode: "read" }],
103
+ events: ["eth.app_domain.detail.open"],
104
+ load: async () => ({ default: (await import("@echothink-ui/app-domain")).AppDomainDetailPage })
105
+ },
106
+ {
107
+ id: "eth.app_domain.install_stepper",
108
+ version: "1.0.0",
109
+ name: "App Domain Install Stepper",
110
+ category: "eth.app_domain",
111
+ outputSurfaceType: "panel",
112
+ requiredPermissions: [{ action: "app-domain.read", mode: "read" }],
113
+ events: ["eth.app_domain.install_stepper.open"],
114
+ load: async () => ({
115
+ default: (await import("@echothink-ui/app-domain")).AppDomainInstallStepper
116
+ })
117
+ },
118
+ {
119
+ id: "eth.app_domain.instance_panel",
120
+ version: "1.0.0",
121
+ name: "App Domain Instance Panel",
122
+ category: "eth.app_domain",
123
+ outputSurfaceType: "panel",
124
+ requiredPermissions: [{ action: "app-domain.read", mode: "read" }],
125
+ events: ["eth.app_domain.instance_panel.open"],
126
+ load: async () => ({
127
+ default: (await import("@echothink-ui/app-domain")).AppDomainInstancePanel
128
+ })
129
+ },
130
+ {
131
+ id: "eth.app_domain.health",
132
+ version: "1.0.0",
133
+ name: "App Domain Health",
134
+ category: "eth.app_domain",
135
+ outputSurfaceType: "panel",
136
+ requiredPermissions: [{ action: "app-domain.read", mode: "read" }],
137
+ events: ["eth.app_domain.health.open"],
138
+ load: async () => ({ default: (await import("@echothink-ui/app-domain")).AppDomainHealthPanel })
139
+ },
140
+ {
141
+ id: "eth.task.decision_gate",
142
+ version: "1.0.0",
143
+ name: "Task Decision Gate",
144
+ category: "eth.task",
145
+ outputSurfaceType: "panel",
146
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
147
+ events: ["eth.task.decision_gate.open"],
148
+ load: async () => ({ default: (await import("@echothink-ui/task")).DecisionRequiredPanel })
149
+ },
150
+ {
151
+ id: "eth.task.approval_panel",
152
+ version: "1.0.0",
153
+ name: "Task Approval Panel",
154
+ category: "eth.task",
155
+ outputSurfaceType: "panel",
156
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
157
+ events: ["eth.task.approval_panel.open"],
158
+ load: async () => ({ default: (await import("@echothink-ui/task")).TaskApprovalPanel })
159
+ },
160
+ {
161
+ id: "eth.task.wave_table",
162
+ version: "1.0.0",
163
+ name: "Task Wave Table",
164
+ category: "eth.task",
165
+ outputSurfaceType: "panel",
166
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
167
+ events: ["eth.task.wave_table.open"],
168
+ load: async () => ({ default: (await import("@echothink-ui/task")).TaskWaveTable })
169
+ },
170
+ {
171
+ id: "eth.task.wave_dag",
172
+ version: "1.0.0",
173
+ name: "Task Wave DAG",
174
+ category: "eth.task",
175
+ outputSurfaceType: "panel",
176
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
177
+ events: ["eth.task.wave_dag.open"],
178
+ load: async () => ({ default: (await import("@echothink-ui/task")).TaskWaveDAG })
179
+ },
180
+ {
181
+ id: "eth.task.run_log",
182
+ version: "1.0.0",
183
+ name: "Task Run Log",
184
+ category: "eth.task",
185
+ outputSurfaceType: "panel",
186
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
187
+ events: ["eth.task.run_log.open"],
188
+ load: async () => ({ default: (await import("@echothink-ui/task")).TaskRunLog })
189
+ },
190
+ {
191
+ id: "eth.task.retry_panel",
192
+ version: "1.0.0",
193
+ name: "Task Retry Panel",
194
+ category: "eth.task",
195
+ outputSurfaceType: "panel",
196
+ requiredPermissions: [{ action: "task.read", mode: "read" }],
197
+ events: ["eth.task.retry_panel.open"],
198
+ load: async () => ({ default: (await import("@echothink-ui/task")).TaskRetryPanel })
199
+ },
200
+ {
201
+ id: "eth.workflow.pipeline_view",
202
+ version: "1.0.0",
203
+ name: "Workflow Pipeline View",
204
+ category: "eth.workflow",
205
+ outputSurfaceType: "panel",
206
+ requiredPermissions: [{ action: "workflow.read", mode: "read" }],
207
+ events: ["eth.workflow.pipeline_view.open"],
208
+ load: async () => ({ default: (await import("@echothink-ui/workflow")).WorkflowPipelineView })
209
+ },
210
+ {
211
+ id: "eth.workflow.process_designer",
212
+ version: "1.0.0",
213
+ name: "Process Designer",
214
+ category: "eth.workflow",
215
+ outputSurfaceType: "panel",
216
+ requiredPermissions: [{ action: "workflow.read", mode: "read" }],
217
+ events: ["eth.workflow.process_designer.open"],
218
+ load: async () => ({ default: (await import("@echothink-ui/workflow")).ProcessDesigner })
219
+ },
220
+ {
221
+ id: "eth.workflow.rule_builder",
222
+ version: "1.0.0",
223
+ name: "Workflow Rule Builder",
224
+ category: "eth.workflow",
225
+ outputSurfaceType: "panel",
226
+ requiredPermissions: [{ action: "workflow.read", mode: "read" }],
227
+ events: ["eth.workflow.rule_builder.open"],
228
+ load: async () => ({ default: (await import("@echothink-ui/workflow")).RuleBuilder })
229
+ },
230
+ {
231
+ id: "eth.workflow.rule_simulation",
232
+ version: "1.0.0",
233
+ name: "Rule Simulation Panel",
234
+ category: "eth.workflow",
235
+ outputSurfaceType: "panel",
236
+ requiredPermissions: [{ action: "workflow.read", mode: "read" }],
237
+ events: ["eth.workflow.rule_simulation.open"],
238
+ load: async () => ({ default: (await import("@echothink-ui/workflow")).RuleSimulationPanel })
239
+ },
240
+ {
241
+ id: "eth.workflow.handoff_panel",
242
+ version: "1.0.0",
243
+ name: "Workflow Handoff Panel",
244
+ category: "eth.workflow",
245
+ outputSurfaceType: "panel",
246
+ requiredPermissions: [{ action: "workflow.read", mode: "read" }],
247
+ events: ["eth.workflow.handoff_panel.open"],
248
+ load: async () => ({ default: (await import("@echothink-ui/workflow")).WorkflowHandoffPanel })
249
+ },
250
+ {
251
+ id: "eth.agent.thinking_chain",
252
+ version: "1.0.0",
253
+ name: "Agent Thinking Chain",
254
+ category: "eth.agent",
255
+ outputSurfaceType: "panel",
256
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
257
+ events: ["eth.agent.thinking_chain.open"],
258
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentThinkingChain })
259
+ },
260
+ {
261
+ id: "eth.agent.tool_call_log",
262
+ version: "1.0.0",
263
+ name: "Agent Tool Call Log",
264
+ category: "eth.agent",
265
+ outputSurfaceType: "panel",
266
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
267
+ events: ["eth.agent.tool_call_log.open"],
268
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentToolCallLog })
269
+ },
270
+ {
271
+ id: "eth.agent.approval_gate",
272
+ version: "1.0.0",
273
+ name: "Agent Approval Gate",
274
+ category: "eth.agent",
275
+ outputSurfaceType: "panel",
276
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
277
+ events: ["eth.agent.approval_gate.open"],
278
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentApprovalGate })
279
+ },
280
+ {
281
+ id: "eth.agent.plan_preview",
282
+ version: "1.0.0",
283
+ name: "Agent Plan Preview",
284
+ category: "eth.agent",
285
+ outputSurfaceType: "panel",
286
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
287
+ events: ["eth.agent.plan_preview.open"],
288
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentPlanPreview })
289
+ },
290
+ {
291
+ id: "eth.agent.plan_diff",
292
+ version: "1.0.0",
293
+ name: "Agent Plan Diff",
294
+ category: "eth.agent",
295
+ outputSurfaceType: "panel",
296
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
297
+ events: ["eth.agent.plan_diff.open"],
298
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentPlanDiff })
299
+ },
300
+ {
301
+ id: "eth.agent.memory_panel",
302
+ version: "1.0.0",
303
+ name: "Agent Memory Panel",
304
+ category: "eth.agent",
305
+ outputSurfaceType: "panel",
306
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
307
+ events: ["eth.agent.memory_panel.open"],
308
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentMemoryPanel })
309
+ },
310
+ {
311
+ id: "eth.agent.trace_viewer",
312
+ version: "1.0.0",
313
+ name: "Agent Trace Viewer",
314
+ category: "eth.agent",
315
+ outputSurfaceType: "panel",
316
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
317
+ events: ["eth.agent.trace_viewer.open"],
318
+ load: async () => ({ default: (await import("@echothink-ui/agent")).AgentTraceViewer })
319
+ },
320
+ {
321
+ id: "eth.agent.generated_artifacts",
322
+ version: "1.0.0",
323
+ name: "Agent Generated Artifacts",
324
+ category: "eth.agent",
325
+ outputSurfaceType: "panel",
326
+ requiredPermissions: [{ action: "agent.read", mode: "read" }],
327
+ events: ["eth.agent.generated_artifacts.open"],
328
+ load: async () => ({
329
+ default: (await import("@echothink-ui/agent")).AgentGeneratedArtifactPanel
330
+ })
331
+ },
332
+ {
333
+ id: "eth.document.editor_shell",
334
+ version: "1.0.0",
335
+ name: "Document Editor Shell",
336
+ category: "eth.document",
337
+ outputSurfaceType: "panel",
338
+ requiredPermissions: [{ action: "document.read", mode: "read" }],
339
+ events: ["eth.document.editor_shell.open"],
340
+ load: async () => ({ default: (await import("@echothink-ui/documents")).DocumentEditorShell })
341
+ },
342
+ {
343
+ id: "eth.document.viewer",
344
+ version: "1.0.0",
345
+ name: "Document Viewer",
346
+ category: "eth.document",
347
+ outputSurfaceType: "panel",
348
+ requiredPermissions: [{ action: "document.read", mode: "read" }],
349
+ events: ["eth.document.viewer.open"],
350
+ load: async () => ({ default: (await import("@echothink-ui/documents")).DocumentViewer })
351
+ },
352
+ {
353
+ id: "eth.document.lock_panel",
354
+ version: "1.0.0",
355
+ name: "Document Lock Panel",
356
+ category: "eth.document",
357
+ outputSurfaceType: "panel",
358
+ requiredPermissions: [{ action: "document.read", mode: "read" }],
359
+ events: ["eth.document.lock_panel.open"],
360
+ load: async () => ({
361
+ default: (await import("@echothink-ui/documents")).AgentLockedDocumentPanel
362
+ })
363
+ },
364
+ {
365
+ id: "eth.document.diff_viewer",
366
+ version: "1.0.0",
367
+ name: "Document Diff Viewer",
368
+ category: "eth.document",
369
+ outputSurfaceType: "panel",
370
+ requiredPermissions: [{ action: "document.read", mode: "read" }],
371
+ events: ["eth.document.diff_viewer.open"],
372
+ load: async () => ({ default: (await import("@echothink-ui/resources")).ResourceDiffViewer })
373
+ },
374
+ {
375
+ id: "eth.document.outline",
376
+ version: "1.0.0",
377
+ name: "Document Outline",
378
+ category: "eth.document",
379
+ outputSurfaceType: "panel",
380
+ requiredPermissions: [{ action: "document.read", mode: "read" }],
381
+ events: ["eth.document.outline.open"],
382
+ load: async () => ({ default: (await import("@echothink-ui/documents")).DocumentOutline })
383
+ },
384
+ {
385
+ id: "eth.resource.inspector",
386
+ version: "1.0.0",
387
+ name: "Resource Inspector",
388
+ category: "eth.resource",
389
+ outputSurfaceType: "panel",
390
+ requiredPermissions: [{ action: "resource.read", mode: "read" }],
391
+ events: ["eth.resource.inspector.open"],
392
+ load: async () => ({ default: (await import("@echothink-ui/resources")).ResourceInspector })
393
+ },
394
+ {
395
+ id: "eth.resource.change_table",
396
+ version: "1.0.0",
397
+ name: "Resource Change Table",
398
+ category: "eth.resource",
399
+ outputSurfaceType: "panel",
400
+ requiredPermissions: [{ action: "resource.read", mode: "read" }],
401
+ events: ["eth.resource.change_table.open"],
402
+ load: async () => ({ default: (await import("@echothink-ui/resources")).ResourceChangeTable })
403
+ },
404
+ {
405
+ id: "eth.resource.dependency_panel",
406
+ version: "1.0.0",
407
+ name: "Resource Dependency Panel",
408
+ category: "eth.resource",
409
+ outputSurfaceType: "panel",
410
+ requiredPermissions: [{ action: "resource.read", mode: "read" }],
411
+ events: ["eth.resource.dependency_panel.open"],
412
+ load: async () => ({
413
+ default: (await import("@echothink-ui/resources")).ResourceDependencyPanel
414
+ })
415
+ },
416
+ {
417
+ id: "eth.resource.version_history",
418
+ version: "1.0.0",
419
+ name: "Resource Version History",
420
+ category: "eth.resource",
421
+ outputSurfaceType: "panel",
422
+ requiredPermissions: [{ action: "resource.read", mode: "read" }],
423
+ events: ["eth.resource.version_history.open"],
424
+ load: async () => ({
425
+ default: (await import("@echothink-ui/resources")).ResourceVersionHistory
426
+ })
427
+ },
428
+ {
429
+ id: "eth.resource.file_browser",
430
+ version: "1.0.0",
431
+ name: "File Browser",
432
+ category: "eth.resource",
433
+ outputSurfaceType: "panel",
434
+ requiredPermissions: [{ action: "resource.read", mode: "read" }],
435
+ events: ["eth.resource.file_browser.open"],
436
+ load: async () => ({ default: (await import("@echothink-ui/resources")).FileBrowser })
437
+ },
438
+ {
439
+ id: "eth.chart.chart_block",
440
+ version: "1.0.0",
441
+ name: "Chart Block",
442
+ category: "eth.chart",
443
+ outputSurfaceType: "panel",
444
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
445
+ events: ["eth.chart.chart_block.open"],
446
+ load: async () => ({ default: (await import("@echothink-ui/charts")).ChartBlock })
447
+ },
448
+ {
449
+ id: "eth.chart.time_series",
450
+ version: "1.0.0",
451
+ name: "Time Series Chart",
452
+ category: "eth.chart",
453
+ outputSurfaceType: "panel",
454
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
455
+ events: ["eth.chart.time_series.open"],
456
+ load: async () => ({ default: (await import("@echothink-ui/charts")).TimeSeriesChart })
457
+ },
458
+ {
459
+ id: "eth.chart.dashboard_grid",
460
+ version: "1.0.0",
461
+ name: "Dashboard Grid",
462
+ category: "eth.chart",
463
+ outputSurfaceType: "panel",
464
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
465
+ events: ["eth.chart.dashboard_grid.open"],
466
+ load: async () => ({ default: (await import("@echothink-ui/charts")).DashboardGrid })
467
+ },
468
+ {
469
+ id: "eth.chart.query_result",
470
+ version: "1.0.0",
471
+ name: "Query Result Chart",
472
+ category: "eth.chart",
473
+ outputSurfaceType: "panel",
474
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
475
+ events: ["eth.chart.query_result.open"],
476
+ load: async () => ({ default: (await import("@echothink-ui/charts")).QueryResultChart })
477
+ },
478
+ {
479
+ id: "eth.chart.data_preview",
480
+ version: "1.0.0",
481
+ name: "Data Preview Panel",
482
+ category: "eth.chart",
483
+ outputSurfaceType: "panel",
484
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
485
+ events: ["eth.chart.data_preview.open"],
486
+ load: async () => ({ default: (await import("@echothink-ui/charts")).DataPreviewPanel })
487
+ },
488
+ {
489
+ id: "eth.chart.heatmap",
490
+ version: "1.0.0",
491
+ name: "Heatmap",
492
+ category: "eth.chart",
493
+ outputSurfaceType: "panel",
494
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
495
+ events: ["eth.chart.heatmap.open"],
496
+ load: async () => ({ default: (await import("@echothink-ui/charts")).Heatmap })
497
+ },
498
+ {
499
+ id: "eth.chart.sankey",
500
+ version: "1.0.0",
501
+ name: "Sankey Chart",
502
+ category: "eth.chart",
503
+ outputSurfaceType: "panel",
504
+ requiredPermissions: [{ action: "chart.read", mode: "read" }],
505
+ events: ["eth.chart.sankey.open"],
506
+ load: async () => ({ default: (await import("@echothink-ui/charts")).SankeyChart })
507
+ },
508
+ {
509
+ id: "eth.calendar.schedule_view",
510
+ version: "1.0.0",
511
+ name: "Calendar Schedule View",
512
+ category: "eth.calendar",
513
+ outputSurfaceType: "panel",
514
+ requiredPermissions: [{ action: "calendar.read", mode: "read" }],
515
+ events: ["eth.calendar.schedule_view.open"],
516
+ load: async () => ({ default: (await import("@echothink-ui/calendar")).CalendarShell })
517
+ },
518
+ {
519
+ id: "eth.calendar.availability_grid",
520
+ version: "1.0.0",
521
+ name: "Availability Grid",
522
+ category: "eth.calendar",
523
+ outputSurfaceType: "panel",
524
+ requiredPermissions: [{ action: "calendar.read", mode: "read" }],
525
+ events: ["eth.calendar.availability_grid.open"],
526
+ load: async () => ({ default: (await import("@echothink-ui/calendar")).AvailabilityGrid })
527
+ },
528
+ {
529
+ id: "eth.calendar.event_editor",
530
+ version: "1.0.0",
531
+ name: "Event Editor",
532
+ category: "eth.calendar",
533
+ outputSurfaceType: "panel",
534
+ requiredPermissions: [{ action: "calendar.read", mode: "read" }],
535
+ events: ["eth.calendar.event_editor.open"],
536
+ load: async () => ({ default: (await import("@echothink-ui/calendar")).EventEditor })
537
+ },
538
+ {
539
+ id: "eth.calendar.recurrence_editor",
540
+ version: "1.0.0",
541
+ name: "Recurrence Editor",
542
+ category: "eth.calendar",
543
+ outputSurfaceType: "panel",
544
+ requiredPermissions: [{ action: "calendar.read", mode: "read" }],
545
+ events: ["eth.calendar.recurrence_editor.open"],
546
+ load: async () => ({ default: (await import("@echothink-ui/calendar")).RecurrenceEditor })
547
+ },
548
+ {
549
+ id: "eth.calendar.conflict_detector",
550
+ version: "1.0.0",
551
+ name: "Conflict Detector",
552
+ category: "eth.calendar",
553
+ outputSurfaceType: "panel",
554
+ requiredPermissions: [{ action: "calendar.read", mode: "read" }],
555
+ events: ["eth.calendar.conflict_detector.open"],
556
+ load: async () => ({ default: (await import("@echothink-ui/calendar")).ConflictDetector })
557
+ },
558
+ {
559
+ id: "eth.inbox.shell",
560
+ version: "1.0.0",
561
+ name: "Inbox Shell",
562
+ category: "eth.inbox",
563
+ outputSurfaceType: "panel",
564
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
565
+ events: ["eth.inbox.shell.open"],
566
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).InboxShell })
567
+ },
568
+ {
569
+ id: "eth.inbox.thread_list",
570
+ version: "1.0.0",
571
+ name: "Inbox Thread List",
572
+ category: "eth.inbox",
573
+ outputSurfaceType: "panel",
574
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
575
+ events: ["eth.inbox.thread_list.open"],
576
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).MessageList })
577
+ },
578
+ {
579
+ id: "eth.inbox.message_thread",
580
+ version: "1.0.0",
581
+ name: "Message Thread",
582
+ category: "eth.inbox",
583
+ outputSurfaceType: "panel",
584
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
585
+ events: ["eth.inbox.message_thread.open"],
586
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).MessageThread })
587
+ },
588
+ {
589
+ id: "eth.inbox.composer",
590
+ version: "1.0.0",
591
+ name: "Message Composer",
592
+ category: "eth.inbox",
593
+ outputSurfaceType: "panel",
594
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
595
+ events: ["eth.inbox.composer.open"],
596
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).MessageComposer })
597
+ },
598
+ {
599
+ id: "eth.inbox.agent_draft_review",
600
+ version: "1.0.0",
601
+ name: "Agent Draft Review",
602
+ category: "eth.inbox",
603
+ outputSurfaceType: "panel",
604
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
605
+ events: ["eth.inbox.agent_draft_review.open"],
606
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).AgentDraftReviewPanel })
607
+ },
608
+ {
609
+ id: "eth.inbox.approval_to_send",
610
+ version: "1.0.0",
611
+ name: "Approval To Send",
612
+ category: "eth.inbox",
613
+ outputSurfaceType: "panel",
614
+ requiredPermissions: [{ action: "inbox.read", mode: "read" }],
615
+ events: ["eth.inbox.approval_to_send.open"],
616
+ load: async () => ({ default: (await import("@echothink-ui/inbox")).ApprovalToSendPanel })
617
+ },
618
+ {
619
+ id: "eth.todo.board",
620
+ version: "1.0.0",
621
+ name: "To-do Board",
622
+ category: "eth.todo",
623
+ outputSurfaceType: "panel",
624
+ requiredPermissions: [{ action: "todo.read", mode: "read" }],
625
+ events: ["eth.todo.board.open"],
626
+ load: async () => ({ default: (await import("@echothink-ui/todo")).KanbanBoard })
627
+ },
628
+ {
629
+ id: "eth.todo.list",
630
+ version: "1.0.0",
631
+ name: "To-do List",
632
+ category: "eth.todo",
633
+ outputSurfaceType: "panel",
634
+ requiredPermissions: [{ action: "todo.read", mode: "read" }],
635
+ events: ["eth.todo.list.open"],
636
+ load: async () => ({ default: (await import("@echothink-ui/todo")).TodoList })
637
+ },
638
+ {
639
+ id: "eth.todo.task_table",
640
+ version: "1.0.0",
641
+ name: "Task Table",
642
+ category: "eth.todo",
643
+ outputSurfaceType: "panel",
644
+ requiredPermissions: [{ action: "todo.read", mode: "read" }],
645
+ events: ["eth.todo.task_table.open"],
646
+ load: async () => ({ default: (await import("@echothink-ui/todo")).TaskTable })
647
+ },
648
+ {
649
+ id: "eth.todo.dependency_list",
650
+ version: "1.0.0",
651
+ name: "Task Dependency List",
652
+ category: "eth.todo",
653
+ outputSurfaceType: "panel",
654
+ requiredPermissions: [{ action: "todo.read", mode: "read" }],
655
+ events: ["eth.todo.dependency_list.open"],
656
+ load: async () => ({ default: (await import("@echothink-ui/todo")).TaskDependencyList })
657
+ },
658
+ {
659
+ id: "eth.todo.timeline",
660
+ version: "1.0.0",
661
+ name: "Task Timeline",
662
+ category: "eth.todo",
663
+ outputSurfaceType: "panel",
664
+ requiredPermissions: [{ action: "todo.read", mode: "read" }],
665
+ events: ["eth.todo.timeline.open"],
666
+ load: async () => ({ default: (await import("@echothink-ui/todo")).TaskTimeline })
667
+ },
668
+ {
669
+ id: "eth.identity.user_picker",
670
+ version: "1.0.0",
671
+ name: "User Picker",
672
+ category: "eth.identity",
673
+ outputSurfaceType: "panel",
674
+ requiredPermissions: [{ action: "identity.read", mode: "read" }],
675
+ events: ["eth.identity.user_picker.open"],
676
+ load: async () => ({ default: (await import("@echothink-ui/identity")).UserPicker })
677
+ },
678
+ {
679
+ id: "eth.identity.permission_matrix",
680
+ version: "1.0.0",
681
+ name: "Permission Matrix",
682
+ category: "eth.identity",
683
+ outputSurfaceType: "panel",
684
+ requiredPermissions: [{ action: "identity.read", mode: "read" }],
685
+ events: ["eth.identity.permission_matrix.open"],
686
+ load: async () => ({ default: (await import("@echothink-ui/identity")).PermissionMatrix })
687
+ },
688
+ {
689
+ id: "eth.identity.access_review",
690
+ version: "1.0.0",
691
+ name: "Access Review",
692
+ category: "eth.identity",
693
+ outputSurfaceType: "panel",
694
+ requiredPermissions: [{ action: "identity.read", mode: "read" }],
695
+ events: ["eth.identity.access_review.open"],
696
+ load: async () => ({ default: (await import("@echothink-ui/identity")).AccessReviewPanel })
697
+ },
698
+ {
699
+ id: "eth.identity.approval_policy_editor",
700
+ version: "1.0.0",
701
+ name: "Approval Policy Editor",
702
+ category: "eth.identity",
703
+ outputSurfaceType: "panel",
704
+ requiredPermissions: [{ action: "identity.read", mode: "read" }],
705
+ events: ["eth.identity.approval_policy_editor.open"],
706
+ load: async () => ({ default: (await import("@echothink-ui/identity")).ApprovalPolicyEditor })
707
+ },
708
+ {
709
+ id: "eth.admin.system_health",
710
+ version: "1.0.0",
711
+ name: "System Health Dashboard",
712
+ category: "eth.admin",
713
+ outputSurfaceType: "panel",
714
+ requiredPermissions: [{ action: "admin.read", mode: "read" }],
715
+ events: ["eth.admin.system_health.open"],
716
+ load: async () => ({ default: (await import("@echothink-ui/admin")).SystemHealthDashboard })
717
+ },
718
+ {
719
+ id: "eth.admin.job_queue",
720
+ version: "1.0.0",
721
+ name: "Job Queue Panel",
722
+ category: "eth.admin",
723
+ outputSurfaceType: "panel",
724
+ requiredPermissions: [{ action: "admin.read", mode: "read" }],
725
+ events: ["eth.admin.job_queue.open"],
726
+ load: async () => ({ default: (await import("@echothink-ui/admin")).JobQueuePanel })
727
+ },
728
+ {
729
+ id: "eth.admin.audit_log",
730
+ version: "1.0.0",
731
+ name: "Audit Log Viewer",
732
+ category: "eth.admin",
733
+ outputSurfaceType: "panel",
734
+ requiredPermissions: [{ action: "admin.read", mode: "read" }],
735
+ events: ["eth.admin.audit_log.open"],
736
+ load: async () => ({ default: (await import("@echothink-ui/admin")).AuditLogViewer })
737
+ },
738
+ {
739
+ id: "eth.admin.feature_flags",
740
+ version: "1.0.0",
741
+ name: "Feature Flag Panel",
742
+ category: "eth.admin",
743
+ outputSurfaceType: "panel",
744
+ requiredPermissions: [{ action: "admin.read", mode: "read" }],
745
+ events: ["eth.admin.feature_flags.open"],
746
+ load: async () => ({ default: (await import("@echothink-ui/admin")).FeatureFlagPanel })
747
+ },
748
+ {
749
+ id: "eth.admin.billing_usage",
750
+ version: "1.0.0",
751
+ name: "Billing Usage Panel",
752
+ category: "eth.admin",
753
+ outputSurfaceType: "panel",
754
+ requiredPermissions: [{ action: "admin.read", mode: "read" }],
755
+ events: ["eth.admin.billing_usage.open"],
756
+ load: async () => ({ default: (await import("@echothink-ui/admin")).BillingUsagePanel })
757
+ },
758
+ {
759
+ id: "eth.developer.code_editor",
760
+ version: "1.0.0",
761
+ name: "Code Editor",
762
+ category: "eth.developer",
763
+ outputSurfaceType: "panel",
764
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
765
+ events: ["eth.developer.code_editor.open"],
766
+ load: async () => ({ default: (await import("@echothink-ui/developer")).CodeEditor })
767
+ },
768
+ {
769
+ id: "eth.developer.diff_viewer",
770
+ version: "1.0.0",
771
+ name: "Diff Viewer",
772
+ category: "eth.developer",
773
+ outputSurfaceType: "panel",
774
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
775
+ events: ["eth.developer.diff_viewer.open"],
776
+ load: async () => ({ default: (await import("@echothink-ui/developer")).DiffViewer })
777
+ },
778
+ {
779
+ id: "eth.developer.diff_table",
780
+ version: "1.0.0",
781
+ name: "Diff Table",
782
+ category: "eth.developer",
783
+ outputSurfaceType: "panel",
784
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
785
+ events: ["eth.developer.diff_table.open"],
786
+ load: async () => ({ default: (await import("@echothink-ui/developer")).DiffTable })
787
+ },
788
+ {
789
+ id: "eth.developer.api_explorer",
790
+ version: "1.0.0",
791
+ name: "API Explorer",
792
+ category: "eth.developer",
793
+ outputSurfaceType: "panel",
794
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
795
+ events: ["eth.developer.api_explorer.open"],
796
+ load: async () => ({ default: (await import("@echothink-ui/developer")).APIExplorer })
797
+ },
798
+ {
799
+ id: "eth.developer.log_console",
800
+ version: "1.0.0",
801
+ name: "Log Console",
802
+ category: "eth.developer",
803
+ outputSurfaceType: "panel",
804
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
805
+ events: ["eth.developer.log_console.open"],
806
+ load: async () => ({ default: (await import("@echothink-ui/developer")).LogConsole })
807
+ },
808
+ {
809
+ id: "eth.developer.trace_timeline",
810
+ version: "1.0.0",
811
+ name: "Trace Timeline",
812
+ category: "eth.developer",
813
+ outputSurfaceType: "panel",
814
+ requiredPermissions: [{ action: "developer.read", mode: "read" }],
815
+ events: ["eth.developer.trace_timeline.open"],
816
+ load: async () => ({ default: (await import("@echothink-ui/developer")).TraceTimeline })
817
+ },
818
+ {
819
+ id: "eth.motion.progress_transition",
820
+ version: "1.0.0",
821
+ name: "Progress Transition",
822
+ category: "eth.motion",
823
+ outputSurfaceType: "panel",
824
+ requiredPermissions: [{ action: "motion.read", mode: "read" }],
825
+ events: ["eth.motion.progress_transition.open"],
826
+ load: async () => ({ default: (await import("@echothink-ui/motion")).ProgressTransition })
827
+ },
828
+ {
829
+ id: "eth.motion.dag_status_transition",
830
+ version: "1.0.0",
831
+ name: "DAG Status Transition",
832
+ category: "eth.motion",
833
+ outputSurfaceType: "panel",
834
+ requiredPermissions: [{ action: "motion.read", mode: "read" }],
835
+ events: ["eth.motion.dag_status_transition.open"],
836
+ load: async () => ({ default: (await import("@echothink-ui/motion")).DAGStatusTransition })
837
+ },
838
+ {
839
+ id: "eth.motion.attention_pulse",
840
+ version: "1.0.0",
841
+ name: "Attention Pulse",
842
+ category: "eth.motion",
843
+ outputSurfaceType: "panel",
844
+ requiredPermissions: [{ action: "motion.read", mode: "read" }],
845
+ events: ["eth.motion.attention_pulse.open"],
846
+ load: async () => ({ default: (await import("@echothink-ui/motion")).AttentionPulse })
847
+ },
848
+ {
849
+ id: "eth.motion.streaming_text",
850
+ version: "1.0.0",
851
+ name: "Streaming Text",
852
+ category: "eth.motion",
853
+ outputSurfaceType: "panel",
854
+ requiredPermissions: [{ action: "motion.read", mode: "read" }],
855
+ events: ["eth.motion.streaming_text.open"],
856
+ load: async () => ({ default: (await import("@echothink-ui/motion")).StreamingText })
857
+ }
858
+ ];
859
+
860
+ export function registerEchoThinkSkills(registry: SkillRegistry) {
861
+ registry.registerMany(echoThinkSkillCatalog);
862
+ return registry;
863
+ }
864
+
865
+ export function findSkill(id: string) {
866
+ return echoThinkSkillCatalog.find((skill) => skill.id === id);
867
+ }
868
+
869
+ export const skillCategories = Array.from(
870
+ new Set(echoThinkSkillCatalog.map((skill) => skill.category))
871
+ ).sort();