@birdapi/velinstyle 1.2.2 → 1.3.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 (109) hide show
  1. package/README.de.md +18 -4
  2. package/README.md +42 -7
  3. package/cli/cli-manifest.json +441 -174
  4. package/cli/docgen/extract-cli.js +2 -1
  5. package/cli/docs-generate.js +9 -0
  6. package/cli/experience.js +173 -0
  7. package/cli/index.js +1294 -417
  8. package/cli/motion.js +738 -0
  9. package/cli/production/extract.js +46 -6
  10. package/cli/production/report.js +104 -14
  11. package/cli/production/run.js +44 -1
  12. package/cli/security.js +190 -0
  13. package/cli/skills.js +53 -10
  14. package/cli/transparency.js +140 -41
  15. package/cli/workflow.js +32 -17
  16. package/components/velin-theme-toggle.js +15 -1
  17. package/core/a11y/component-contracts.json +391 -274
  18. package/core/attributes/registry.js +1 -1
  19. package/core/motion/analyze.js +38 -0
  20. package/core/motion/blueprint.js +51 -0
  21. package/core/motion/composer.js +114 -0
  22. package/core/motion/data/registry.json +352 -0
  23. package/core/motion/effects.js +17 -1
  24. package/core/motion/index.js +112 -9
  25. package/core/motion/optimize.js +44 -0
  26. package/core/motion/policy.js +77 -0
  27. package/core/motion/registry.js +131 -0
  28. package/core/motion/review.js +59 -0
  29. package/core/motion/scan.js +150 -0
  30. package/core/motion/timeline.js +68 -0
  31. package/core/motion/transitions.js +49 -0
  32. package/core/motion/triggers.js +168 -0
  33. package/core/security/checks/fs.js +92 -0
  34. package/core/security/detect.js +35 -0
  35. package/core/security/engine.js +116 -0
  36. package/core/security/index.js +18 -0
  37. package/core/security/registry.js +85 -0
  38. package/core/security/report/report.js +113 -0
  39. package/core/security/rules/ci/index.js +146 -0
  40. package/core/security/rules/consumer/index.js +174 -0
  41. package/core/security/rules/deps/index.js +182 -0
  42. package/core/security/rules/index.js +24 -0
  43. package/core/security/rules/publish/index.js +230 -0
  44. package/core/security/rules/repo/index.js +143 -0
  45. package/core/security/rules/secrets/index.js +133 -0
  46. package/core/security/score/dependency-health.js +53 -0
  47. package/core/security/score/release-health.js +66 -0
  48. package/core/security/score/score.js +102 -0
  49. package/core/security/timeline/timeline.js +76 -0
  50. package/dist/chunks/attributes-HK7VIOLA.js +1080 -0
  51. package/dist/chunks/attributes-VRHHVNDO.js +1080 -0
  52. package/dist/chunks/chunk-MYKUI364.js +116 -0
  53. package/dist/chunks/chunk-NEVBPD5T.js +116 -0
  54. package/dist/chunks/runtime-entry.js +1 -1
  55. package/dist/chunks/velin-theme-toggle-J2NHC7IM.js +304 -0
  56. package/dist/llms.txt +2 -2
  57. package/dist/search-index.json +166 -2
  58. package/dist/velin-agent.json +156 -32
  59. package/dist/velinstyle-components.iife.js +862 -17
  60. package/dist/velinstyle-components.js +862 -17
  61. package/dist/velinstyle-components.min.js +126 -126
  62. package/dist/velinstyle.css +42 -7
  63. package/dist/velinstyle.min.css +1 -1
  64. package/package.json +158 -143
  65. package/packages/velinstyle-cli-core/package.json +11 -0
  66. package/packages/velinstyle-cli-core/src/config.js +84 -0
  67. package/packages/velinstyle-cli-core/src/contract.js +56 -0
  68. package/packages/velinstyle-cli-core/src/event-bus.js +50 -0
  69. package/packages/velinstyle-cli-core/src/index.js +18 -0
  70. package/packages/velinstyle-cli-core/src/lifecycle.js +33 -0
  71. package/packages/velinstyle-cli-core/src/runner.js +129 -0
  72. package/packages/velinstyle-cli-registry/data/commands.json +1216 -0
  73. package/packages/velinstyle-cli-registry/data/layouts.json +33 -0
  74. package/packages/velinstyle-cli-registry/data/widgets.json +35 -0
  75. package/packages/velinstyle-cli-registry/package.json +13 -0
  76. package/packages/velinstyle-cli-registry/src/index.js +88 -0
  77. package/packages/velinstyle-cli-renderer/package.json +8 -0
  78. package/packages/velinstyle-cli-renderer/src/index.js +286 -0
  79. package/packages/velinstyle-cli-theme/package.json +8 -0
  80. package/packages/velinstyle-cli-theme/src/index.js +84 -0
  81. package/packages/velinstyle-cli-ui/package.json +8 -0
  82. package/packages/velinstyle-cli-ui/src/index.js +34 -0
  83. package/packages/velinstyle-motion/README.md +81 -0
  84. package/packages/velinstyle-motion/package.json +37 -0
  85. package/packages/velinstyle-motion/src/ai/mini-prompt.js +119 -0
  86. package/packages/velinstyle-motion/src/ai/provider.js +59 -0
  87. package/packages/velinstyle-motion/src/ai/providers/pixverse-setup.js +402 -0
  88. package/packages/velinstyle-motion/src/ai/providers/pixverse.js +245 -0
  89. package/packages/velinstyle-motion/src/config.js +257 -0
  90. package/packages/velinstyle-motion/src/export/html-clip.js +141 -0
  91. package/packages/velinstyle-motion/src/index.js +304 -0
  92. package/packages/velinstyle-motion/src/jobs/cache.js +30 -0
  93. package/packages/velinstyle-motion/src/jobs/queue.js +69 -0
  94. package/packages/velinstyle-motion/src/jobs/usage.js +53 -0
  95. package/packages/velinstyle-motion/src/local/effects.js +139 -0
  96. package/packages/velinstyle-motion/src/local/engine.js +96 -0
  97. package/packages/velinstyle-motion/src/providers-catalog.js +44 -0
  98. package/packages/velinstyle-motion/src/registry/presets.js +25 -0
  99. package/packages/velinstyle-motion/src/registry/presets.json +85 -0
  100. package/packages/velinstyle-motion/src/ux/cost-gate.js +37 -0
  101. package/packages/velinstyle-motion/src/ux/pixverse-gate.js +153 -0
  102. package/packages/velinstyle-motion/src/ux/wizard.js +171 -0
  103. package/packages/velinstyle-motion/src/validate-image.js +91 -0
  104. package/packages/velinstyle-skills/catalog.json +1 -1
  105. package/packages/velinstyle-skills/registry.json +1 -142
  106. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +1 -1
  107. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +1 -1
  108. package/src/tokens/motion.css +7 -0
  109. package/src/utilities/scroll-animation.css +66 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Experience command runner — lifecycle + bus + contract collection.
3
+ */
4
+ import { createEventBus } from './event-bus.js';
5
+ import { createEmptyContract, validateContract } from './contract.js';
6
+ import { createLifecycleTracker } from './lifecycle.js';
7
+ import { loadExperienceConfig, recordUsage, suggestFromAnalytics } from './config.js';
8
+
9
+ /**
10
+ * @param {object} opts
11
+ * @param {string} opts.commandId
12
+ * @param {object} [opts.configOverrides]
13
+ * @param {string} [opts.cwd]
14
+ * @param {(ctx: object) => Promise<object>|object} opts.run — returns contract partial or full contract
15
+ */
16
+ export async function runExperienceCommand(opts) {
17
+ const {
18
+ commandId,
19
+ configOverrides = {},
20
+ cwd = process.cwd(),
21
+ run,
22
+ layout = 'standard',
23
+ meta = {},
24
+ } = opts;
25
+
26
+ const config = loadExperienceConfig(cwd, configOverrides);
27
+ const bus = createEventBus();
28
+ const lifecycle = createLifecycleTracker();
29
+ const startedAt = Date.now();
30
+
31
+ const events = [];
32
+ const recordEvent = (type, payload) => {
33
+ events.push({ type, payload, at: new Date().toISOString() });
34
+ };
35
+
36
+ for (const ev of ['onStart', 'onProgress', 'onWarning', 'onSuggestion', 'onResult', 'onFinish', 'onNotification']) {
37
+ bus.on(ev, (payload) => recordEvent(ev, payload));
38
+ }
39
+
40
+ lifecycle.enter('init');
41
+ bus.emit('onStart', { commandId, config });
42
+
43
+ lifecycle.enter('loadConfig');
44
+ lifecycle.enter('environment');
45
+
46
+ if (config.analytics) {
47
+ try {
48
+ recordUsage(commandId, cwd);
49
+ } catch {
50
+ /* ignore analytics failures */
51
+ }
52
+ }
53
+
54
+ let contract = createEmptyContract({
55
+ project: { cwd, commandId },
56
+ meta: { ...meta, layout, commandId, version: meta.version || null },
57
+ });
58
+
59
+ lifecycle.enter('input');
60
+ lifecycle.enter('analysis');
61
+ lifecycle.enter('processing');
62
+
63
+ const ctx = {
64
+ bus,
65
+ config,
66
+ cwd,
67
+ commandId,
68
+ lifecycle,
69
+ contract,
70
+ emitProgress: (label, percent) => bus.emit('onProgress', { label, percent }),
71
+ notify: (message, tone = 'info') => {
72
+ bus.emit('onNotification', { message, tone });
73
+ contract.notifications.push({ message, tone });
74
+ },
75
+ };
76
+
77
+ const result = await run(ctx);
78
+ if (result && typeof result === 'object') {
79
+ contract = {
80
+ ...contract,
81
+ ...result,
82
+ widgets: result.widgets || contract.widgets,
83
+ suggestions: result.suggestions || contract.suggestions,
84
+ diagnostics: result.diagnostics || contract.diagnostics,
85
+ notifications: result.notifications || contract.notifications,
86
+ project: { ...contract.project, ...(result.project || {}) },
87
+ stats: { ...contract.stats, ...(result.stats || {}) },
88
+ result: result.result || contract.result,
89
+ meta: { ...contract.meta, ...(result.meta || {}) },
90
+ };
91
+ }
92
+
93
+ lifecycle.enter('validation');
94
+ const validation = validateContract(contract);
95
+ if (!validation.ok) {
96
+ contract.diagnostics.push({
97
+ severity: 'warning',
98
+ message: `Contract validation: ${validation.problems.join('; ')}`,
99
+ });
100
+ }
101
+
102
+ lifecycle.enter('hints');
103
+ if (config.analytics) {
104
+ const tip = suggestFromAnalytics(cwd);
105
+ if (tip) {
106
+ contract.suggestions.push({ text: tip, source: 'analytics' });
107
+ bus.emit('onSuggestion', { text: tip });
108
+ }
109
+ }
110
+
111
+ lifecycle.enter('result');
112
+ contract.lifecycle = lifecycle.snapshot();
113
+ bus.emit('onResult', { result: contract.result });
114
+
115
+ lifecycle.enter('summary');
116
+ contract.meta = {
117
+ ...contract.meta,
118
+ durationMs: Date.now() - startedAt,
119
+ layout: contract.meta.layout || layout,
120
+ };
121
+ bus.emit('onFinish', { contract, durationMs: contract.meta.durationMs });
122
+
123
+ return {
124
+ contract,
125
+ config,
126
+ events,
127
+ bus,
128
+ };
129
+ }