@afromero/kin3o 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.
Files changed (45) hide show
  1. package/README.md +204 -0
  2. package/dist/brand.d.ts +39 -0
  3. package/dist/brand.js +63 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +249 -0
  6. package/dist/packager.d.ts +16 -0
  7. package/dist/packager.js +40 -0
  8. package/dist/preview.d.ts +2 -0
  9. package/dist/preview.js +30 -0
  10. package/dist/prompts/examples-interactive.d.ts +339 -0
  11. package/dist/prompts/examples-interactive.js +139 -0
  12. package/dist/prompts/examples-mascot.d.ts +765 -0
  13. package/dist/prompts/examples-mascot.js +319 -0
  14. package/dist/prompts/examples.d.ts +238 -0
  15. package/dist/prompts/examples.js +168 -0
  16. package/dist/prompts/index.d.ts +17 -0
  17. package/dist/prompts/index.js +21 -0
  18. package/dist/prompts/system-interactive.d.ts +2 -0
  19. package/dist/prompts/system-interactive.js +93 -0
  20. package/dist/prompts/system.d.ts +3 -0
  21. package/dist/prompts/system.js +94 -0
  22. package/dist/prompts/tokens.d.ts +6 -0
  23. package/dist/prompts/tokens.js +28 -0
  24. package/dist/providers/anthropic.d.ts +2 -0
  25. package/dist/providers/anthropic.js +25 -0
  26. package/dist/providers/claude.d.ts +2 -0
  27. package/dist/providers/claude.js +47 -0
  28. package/dist/providers/codex.d.ts +2 -0
  29. package/dist/providers/codex.js +60 -0
  30. package/dist/providers/registry.d.ts +18 -0
  31. package/dist/providers/registry.js +62 -0
  32. package/dist/state-machine-validator.d.ts +6 -0
  33. package/dist/state-machine-validator.js +182 -0
  34. package/dist/utils.d.ts +20 -0
  35. package/dist/utils.js +89 -0
  36. package/dist/validator.d.ts +8 -0
  37. package/dist/validator.js +195 -0
  38. package/examples/interactive-button.lottie +0 -0
  39. package/examples/mascot.json +760 -0
  40. package/examples/mascot.lottie +0 -0
  41. package/examples/pulse.json +75 -0
  42. package/examples/waveform.json +179 -0
  43. package/package.json +54 -0
  44. package/preview/template-interactive.html +223 -0
  45. package/preview/template.html +133 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * kin3o mascot — "kinesis orb"
3
+ *
4
+ * A golden circle with three trailing motion arcs, suggesting movement.
5
+ * The orb pulses, arcs stagger-animate via trim paths, and opacity breathes.
6
+ *
7
+ * Static version: continuous loop (logo animation)
8
+ * Interactive version: idle → hover (arcs expand) → click (burst)
9
+ */
10
+ const ease = (from, to, tStart, tEnd, last = false) => {
11
+ const kf = { t: tStart, s: from };
12
+ if (!last) {
13
+ kf['o'] = { x: [0.42], y: [0] };
14
+ kf['i'] = { x: [0.58], y: [1] };
15
+ }
16
+ return last ? { t: tEnd, s: to } : kf;
17
+ };
18
+ // Shared arc shape: a semicircle path at a given radius
19
+ const makeArc = (radius, strokeWidth, opacity, trimDelay, color) => {
20
+ const r = radius;
21
+ return {
22
+ ty: 'gr',
23
+ nm: `Arc r${radius}`,
24
+ it: [
25
+ {
26
+ ty: 'sh',
27
+ nm: 'Arc Path',
28
+ ks: {
29
+ a: 0,
30
+ k: {
31
+ c: false,
32
+ v: [[-r, 0], [0, -r], [r, 0]],
33
+ i: [[0, 0], [-r * 0.552, 0], [0, 0]],
34
+ o: [[0, -r * 0.552], [r * 0.552, 0], [0, 0]],
35
+ },
36
+ },
37
+ },
38
+ {
39
+ ty: 'st',
40
+ nm: 'Stroke',
41
+ c: { a: 0, k: color },
42
+ o: { a: 0, k: opacity },
43
+ w: { a: 0, k: strokeWidth },
44
+ lc: 2,
45
+ lj: 2,
46
+ },
47
+ {
48
+ ty: 'tm',
49
+ nm: 'Trim',
50
+ s: { a: 0, k: 0 },
51
+ e: {
52
+ a: 1,
53
+ k: [
54
+ ease([0], [100], trimDelay, trimDelay + 40),
55
+ { t: trimDelay + 40, s: [100] },
56
+ ],
57
+ },
58
+ o: { a: 0, k: 0 },
59
+ },
60
+ {
61
+ ty: 'tr',
62
+ p: { a: 0, k: [0, 0] },
63
+ a: { a: 0, k: [0, 0] },
64
+ s: { a: 0, k: [100, 100] },
65
+ r: { a: 0, k: -90 },
66
+ o: { a: 0, k: 100 },
67
+ },
68
+ ],
69
+ };
70
+ };
71
+ const ORB_COLOR = [0.839, 0.722, 0.416, 1]; // warm gold
72
+ const ARC_COLOR = [0.839, 0.722, 0.416, 1];
73
+ /** Static mascot — continuous breathing loop */
74
+ export const MASCOT_STATIC = {
75
+ v: '5.5.2',
76
+ fr: 60,
77
+ ip: 0,
78
+ op: 120,
79
+ w: 512,
80
+ h: 512,
81
+ ddd: 0,
82
+ assets: [],
83
+ layers: [
84
+ // Layer 0: The orb (golden circle)
85
+ {
86
+ ty: 4,
87
+ ind: 0,
88
+ nm: 'Orb',
89
+ ip: 0,
90
+ op: 120,
91
+ st: 0,
92
+ ddd: 0,
93
+ ks: {
94
+ a: { a: 0, k: [0, 0] },
95
+ p: { a: 0, k: [256, 256] },
96
+ s: {
97
+ a: 1,
98
+ k: [
99
+ ease([100, 100], [110, 110], 0, 60),
100
+ ease([110, 110], [100, 100], 60, 120, true),
101
+ ],
102
+ },
103
+ r: { a: 0, k: 0 },
104
+ o: {
105
+ a: 1,
106
+ k: [
107
+ ease([80], [100], 0, 60),
108
+ ease([100], [80], 60, 120, true),
109
+ ],
110
+ },
111
+ },
112
+ shapes: [
113
+ {
114
+ ty: 'gr',
115
+ nm: 'Circle',
116
+ it: [
117
+ {
118
+ ty: 'el',
119
+ nm: 'Ellipse',
120
+ p: { a: 0, k: [0, 0] },
121
+ s: { a: 0, k: [80, 80] },
122
+ },
123
+ {
124
+ ty: 'fl',
125
+ nm: 'Fill',
126
+ c: { a: 0, k: ORB_COLOR },
127
+ o: { a: 0, k: 100 },
128
+ r: 1,
129
+ },
130
+ {
131
+ ty: 'tr',
132
+ p: { a: 0, k: [0, 0] },
133
+ a: { a: 0, k: [0, 0] },
134
+ s: { a: 0, k: [100, 100] },
135
+ r: { a: 0, k: 0 },
136
+ o: { a: 0, k: 100 },
137
+ },
138
+ ],
139
+ },
140
+ ],
141
+ bm: 0,
142
+ },
143
+ // Layer 1: Motion arcs
144
+ {
145
+ ty: 4,
146
+ ind: 1,
147
+ nm: 'Arcs',
148
+ ip: 0,
149
+ op: 120,
150
+ st: 0,
151
+ ddd: 0,
152
+ ks: {
153
+ a: { a: 0, k: [0, 0] },
154
+ p: { a: 0, k: [256, 256] },
155
+ s: {
156
+ a: 1,
157
+ k: [
158
+ ease([95, 95], [105, 105], 0, 60),
159
+ ease([105, 105], [95, 95], 60, 120, true),
160
+ ],
161
+ },
162
+ r: {
163
+ a: 1,
164
+ k: [
165
+ ease([0], [8], 0, 60),
166
+ ease([8], [0], 60, 120, true),
167
+ ],
168
+ },
169
+ o: { a: 0, k: 100 },
170
+ },
171
+ shapes: [
172
+ makeArc(70, 4, 70, 0, ARC_COLOR),
173
+ makeArc(95, 3, 50, 10, ARC_COLOR),
174
+ makeArc(120, 2, 30, 20, ARC_COLOR),
175
+ ],
176
+ bm: 0,
177
+ },
178
+ ],
179
+ };
180
+ /** Interactive mascot — idle/hover/active states */
181
+ const MASCOT_IDLE = {
182
+ ...MASCOT_STATIC,
183
+ // Same as static — gentle breathing
184
+ };
185
+ const MASCOT_HOVER = {
186
+ v: '5.5.2',
187
+ fr: 60,
188
+ ip: 0,
189
+ op: 60,
190
+ w: 512,
191
+ h: 512,
192
+ ddd: 0,
193
+ assets: [],
194
+ layers: [
195
+ {
196
+ ty: 4,
197
+ ind: 0,
198
+ nm: 'Orb',
199
+ ip: 0,
200
+ op: 60,
201
+ st: 0,
202
+ ddd: 0,
203
+ ks: {
204
+ a: { a: 0, k: [0, 0] },
205
+ p: { a: 0, k: [256, 256] },
206
+ s: {
207
+ a: 1,
208
+ k: [
209
+ ease([100, 100], [115, 115], 0, 30),
210
+ { t: 30, s: [115, 115] },
211
+ ],
212
+ },
213
+ r: { a: 0, k: 0 },
214
+ o: { a: 0, k: 100 },
215
+ },
216
+ shapes: [
217
+ {
218
+ ty: 'gr',
219
+ nm: 'Circle',
220
+ it: [
221
+ {
222
+ ty: 'el',
223
+ nm: 'Ellipse',
224
+ p: { a: 0, k: [0, 0] },
225
+ s: { a: 0, k: [80, 80] },
226
+ },
227
+ {
228
+ ty: 'fl',
229
+ nm: 'Fill',
230
+ c: { a: 0, k: [0.929, 0.812, 0.502, 1] }, // brighter gold on hover
231
+ o: { a: 0, k: 100 },
232
+ r: 1,
233
+ },
234
+ {
235
+ ty: 'tr',
236
+ p: { a: 0, k: [0, 0] },
237
+ a: { a: 0, k: [0, 0] },
238
+ s: { a: 0, k: [100, 100] },
239
+ r: { a: 0, k: 0 },
240
+ o: { a: 0, k: 100 },
241
+ },
242
+ ],
243
+ },
244
+ ],
245
+ bm: 0,
246
+ },
247
+ {
248
+ ty: 4,
249
+ ind: 1,
250
+ nm: 'Arcs',
251
+ ip: 0,
252
+ op: 60,
253
+ st: 0,
254
+ ddd: 0,
255
+ ks: {
256
+ a: { a: 0, k: [0, 0] },
257
+ p: { a: 0, k: [256, 256] },
258
+ s: {
259
+ a: 1,
260
+ k: [
261
+ ease([100, 100], [120, 120], 0, 30),
262
+ { t: 30, s: [120, 120] },
263
+ ],
264
+ },
265
+ r: {
266
+ a: 1,
267
+ k: [
268
+ ease([0], [15], 0, 30),
269
+ { t: 30, s: [15] },
270
+ ],
271
+ },
272
+ o: { a: 0, k: 100 },
273
+ },
274
+ shapes: [
275
+ makeArc(70, 5, 90, 0, [0.929, 0.812, 0.502, 1]),
276
+ makeArc(95, 4, 70, 5, [0.929, 0.812, 0.502, 1]),
277
+ makeArc(120, 3, 50, 10, [0.929, 0.812, 0.502, 1]),
278
+ ],
279
+ bm: 0,
280
+ },
281
+ ],
282
+ };
283
+ export const MASCOT_INTERACTIVE = {
284
+ animations: {
285
+ idle: MASCOT_IDLE,
286
+ hover: MASCOT_HOVER,
287
+ },
288
+ stateMachine: {
289
+ initial: 'idle_state',
290
+ states: [
291
+ {
292
+ name: 'idle_state',
293
+ type: 'PlaybackState',
294
+ animation: 'idle',
295
+ loop: true,
296
+ autoplay: true,
297
+ transitions: [
298
+ { type: 'Transition', toState: 'hover_state', guards: [{ type: 'Boolean', inputName: 'hovering', conditionType: 'Equal', compareTo: true }] },
299
+ ],
300
+ },
301
+ {
302
+ name: 'hover_state',
303
+ type: 'PlaybackState',
304
+ animation: 'hover',
305
+ autoplay: true,
306
+ transitions: [
307
+ { type: 'Transition', toState: 'idle_state', guards: [{ type: 'Boolean', inputName: 'hovering', conditionType: 'Equal', compareTo: false }] },
308
+ ],
309
+ },
310
+ ],
311
+ interactions: [
312
+ { type: 'PointerEnter', actions: [{ type: 'SetBoolean', inputName: 'hovering', value: true }] },
313
+ { type: 'PointerExit', actions: [{ type: 'SetBoolean', inputName: 'hovering', value: false }] },
314
+ ],
315
+ inputs: [
316
+ { name: 'hovering', type: 'Boolean', value: false },
317
+ ],
318
+ },
319
+ };
@@ -0,0 +1,238 @@
1
+ /** Hand-crafted, validated Lottie JSON examples for few-shot prompting */
2
+ export declare const PULSING_CIRCLE: {
3
+ v: string;
4
+ fr: number;
5
+ ip: number;
6
+ op: number;
7
+ w: number;
8
+ h: number;
9
+ ddd: number;
10
+ assets: never[];
11
+ layers: {
12
+ ty: number;
13
+ ind: number;
14
+ nm: string;
15
+ ip: number;
16
+ op: number;
17
+ st: number;
18
+ ddd: number;
19
+ ks: {
20
+ a: {
21
+ a: number;
22
+ k: number[];
23
+ };
24
+ p: {
25
+ a: number;
26
+ k: number[];
27
+ };
28
+ s: {
29
+ a: number;
30
+ k: ({
31
+ t: number;
32
+ s: number[];
33
+ o: {
34
+ x: number[];
35
+ y: number[];
36
+ };
37
+ i: {
38
+ x: number[];
39
+ y: number[];
40
+ };
41
+ } | {
42
+ t: number;
43
+ s: number[];
44
+ o?: undefined;
45
+ i?: undefined;
46
+ })[];
47
+ };
48
+ r: {
49
+ a: number;
50
+ k: number;
51
+ };
52
+ o: {
53
+ a: number;
54
+ k: number;
55
+ };
56
+ };
57
+ shapes: {
58
+ ty: string;
59
+ nm: string;
60
+ it: ({
61
+ ty: string;
62
+ nm: string;
63
+ p: {
64
+ a: number;
65
+ k: number[];
66
+ };
67
+ s: {
68
+ a: number;
69
+ k: number[];
70
+ };
71
+ c?: undefined;
72
+ o?: undefined;
73
+ r?: undefined;
74
+ a?: undefined;
75
+ } | {
76
+ ty: string;
77
+ nm: string;
78
+ c: {
79
+ a: number;
80
+ k: number[];
81
+ };
82
+ o: {
83
+ a: number;
84
+ k: number;
85
+ };
86
+ r: number;
87
+ p?: undefined;
88
+ s?: undefined;
89
+ a?: undefined;
90
+ } | {
91
+ ty: string;
92
+ p: {
93
+ a: number;
94
+ k: number[];
95
+ };
96
+ a: {
97
+ a: number;
98
+ k: number[];
99
+ };
100
+ s: {
101
+ a: number;
102
+ k: number[];
103
+ };
104
+ r: {
105
+ a: number;
106
+ k: number;
107
+ };
108
+ o: {
109
+ a: number;
110
+ k: number;
111
+ };
112
+ nm?: undefined;
113
+ c?: undefined;
114
+ })[];
115
+ }[];
116
+ bm: number;
117
+ }[];
118
+ };
119
+ export declare const WAVEFORM_BARS: {
120
+ v: string;
121
+ fr: number;
122
+ ip: number;
123
+ op: number;
124
+ w: number;
125
+ h: number;
126
+ ddd: number;
127
+ assets: never[];
128
+ layers: {
129
+ ty: number;
130
+ ind: number;
131
+ nm: string;
132
+ ip: number;
133
+ op: number;
134
+ st: number;
135
+ ddd: number;
136
+ ks: {
137
+ a: {
138
+ a: number;
139
+ k: number[];
140
+ };
141
+ p: {
142
+ a: number;
143
+ k: number[];
144
+ };
145
+ s: {
146
+ a: number;
147
+ k: number[];
148
+ };
149
+ r: {
150
+ a: number;
151
+ k: number;
152
+ };
153
+ o: {
154
+ a: number;
155
+ k: number;
156
+ };
157
+ };
158
+ shapes: {
159
+ ty: string;
160
+ nm: string;
161
+ it: ({
162
+ ty: string;
163
+ nm: string;
164
+ p: {
165
+ a: number;
166
+ k: number[];
167
+ };
168
+ s: {
169
+ a: number;
170
+ k: ({
171
+ t: number;
172
+ s: number[];
173
+ o: {
174
+ x: number[];
175
+ y: number[];
176
+ };
177
+ i: {
178
+ x: number[];
179
+ y: number[];
180
+ };
181
+ } | {
182
+ t: number;
183
+ s: number[];
184
+ o?: undefined;
185
+ i?: undefined;
186
+ })[];
187
+ };
188
+ r: {
189
+ a: number;
190
+ k: number;
191
+ };
192
+ c?: undefined;
193
+ o?: undefined;
194
+ a?: undefined;
195
+ } | {
196
+ ty: string;
197
+ nm: string;
198
+ c: {
199
+ a: number;
200
+ k: number[];
201
+ };
202
+ o: {
203
+ a: number;
204
+ k: number;
205
+ };
206
+ r: number;
207
+ p?: undefined;
208
+ s?: undefined;
209
+ a?: undefined;
210
+ } | {
211
+ ty: string;
212
+ p: {
213
+ a: number;
214
+ k: number[];
215
+ };
216
+ a: {
217
+ a: number;
218
+ k: number[];
219
+ };
220
+ s: {
221
+ a: number;
222
+ k: number[];
223
+ };
224
+ r: {
225
+ a: number;
226
+ k: number;
227
+ };
228
+ o: {
229
+ a: number;
230
+ k: number;
231
+ };
232
+ nm?: undefined;
233
+ c?: undefined;
234
+ })[];
235
+ }[];
236
+ bm: number;
237
+ }[];
238
+ };