@kernel.chat/kbot 3.58.1 → 3.60.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/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +14 -8
- package/dist/agent.js.map +1 -1
- package/dist/learning.d.ts.map +1 -1
- package/dist/learning.js +20 -0
- package/dist/learning.js.map +1 -1
- package/dist/memory.d.ts +8 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +42 -23
- package/dist/memory.js.map +1 -1
- package/dist/memory.test.js +83 -2
- package/dist/memory.test.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +8 -0
- package/dist/serve.js.map +1 -1
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js +815 -53
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/dj-set-builder.d.ts +2 -0
- package/dist/tools/dj-set-builder.d.ts.map +1 -0
- package/dist/tools/dj-set-builder.js +432 -0
- package/dist/tools/dj-set-builder.js.map +1 -0
- package/dist/tools/fetch.d.ts.map +1 -1
- package/dist/tools/fetch.js +36 -6
- package/dist/tools/fetch.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +40 -23
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dj-set-builder.d.ts","sourceRoot":"","sources":["../../src/tools/dj-set-builder.ts"],"names":[],"mappings":"AAkSA,wBAAgB,yBAAyB,IAAI,IAAI,CA2NhD"}
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
// kbot DJ Set Builder — Constructs complete DJ sets in Ableton Live
|
|
2
|
+
// Uses M4L devices (genre-morph, hat-machine, dj-fx) + music theory engine
|
|
3
|
+
// to build genre-blending sets from House → Tech House → UK Garage → Trap.
|
|
4
|
+
//
|
|
5
|
+
// Architecture:
|
|
6
|
+
// 1. Creates track layout (drums, hats, bass, pads, fx, master)
|
|
7
|
+
// 2. Programs MIDI clips for each genre section
|
|
8
|
+
// 3. Sets up M4L devices on appropriate tracks
|
|
9
|
+
// 4. Builds arrangement with transitions
|
|
10
|
+
// 5. Configures mixer (volumes, sends, panning)
|
|
11
|
+
import { registerTool } from './index.js';
|
|
12
|
+
import { ensureAbleton } from '../integrations/ableton-osc.js';
|
|
13
|
+
import { parseProgression, } from './music-theory.js';
|
|
14
|
+
const GENRE_SECTIONS = {
|
|
15
|
+
house: {
|
|
16
|
+
name: 'House',
|
|
17
|
+
bpm: 124,
|
|
18
|
+
key: 'C',
|
|
19
|
+
scale: 'natural_minor',
|
|
20
|
+
bars: 128, // ~4 min at 124 BPM
|
|
21
|
+
progression: 'i bVII bVI bVII', // deep house vamp
|
|
22
|
+
bassOctave: 2,
|
|
23
|
+
padVoicing: 'open',
|
|
24
|
+
drumStyle: 'house',
|
|
25
|
+
hatStyle: 0,
|
|
26
|
+
hatDensity: 0.4,
|
|
27
|
+
swing: 0.0,
|
|
28
|
+
},
|
|
29
|
+
tech_house: {
|
|
30
|
+
name: 'Tech House',
|
|
31
|
+
bpm: 126,
|
|
32
|
+
key: 'C',
|
|
33
|
+
scale: 'natural_minor',
|
|
34
|
+
bars: 128, // ~4 min at 126 BPM
|
|
35
|
+
progression: 'i bVII', // minimal two-chord
|
|
36
|
+
bassOctave: 2,
|
|
37
|
+
padVoicing: 'close',
|
|
38
|
+
drumStyle: 'tech_house',
|
|
39
|
+
hatStyle: 1,
|
|
40
|
+
hatDensity: 0.55,
|
|
41
|
+
swing: 0.15,
|
|
42
|
+
},
|
|
43
|
+
uk_garage: {
|
|
44
|
+
name: 'UK Garage',
|
|
45
|
+
bpm: 132,
|
|
46
|
+
key: 'F',
|
|
47
|
+
scale: 'natural_minor',
|
|
48
|
+
bars: 128, // ~4 min at 132 BPM
|
|
49
|
+
progression: 'i bVII bVI V', // garage classic
|
|
50
|
+
bassOctave: 2,
|
|
51
|
+
padVoicing: 'spread',
|
|
52
|
+
drumStyle: 'uk_garage',
|
|
53
|
+
hatStyle: 2,
|
|
54
|
+
hatDensity: 0.5,
|
|
55
|
+
swing: 0.25,
|
|
56
|
+
},
|
|
57
|
+
trap: {
|
|
58
|
+
name: 'Trap',
|
|
59
|
+
bpm: 140,
|
|
60
|
+
key: 'F',
|
|
61
|
+
scale: 'natural_minor',
|
|
62
|
+
bars: 176, // ~5 min at 140 BPM — trap gets the longest section
|
|
63
|
+
progression: 'i bVI bVII i', // dark trap
|
|
64
|
+
bassOctave: 1,
|
|
65
|
+
padVoicing: 'spread',
|
|
66
|
+
drumStyle: 'trap',
|
|
67
|
+
hatStyle: 3,
|
|
68
|
+
hatDensity: 0.7,
|
|
69
|
+
swing: 0.0,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
const TRANSITIONS = {
|
|
73
|
+
house_to_tech: {
|
|
74
|
+
bars: 8,
|
|
75
|
+
technique: 'filter_sweep',
|
|
76
|
+
description: 'LP filter sweep down on house, bring in tech drums, HP filter sweep up to reveal',
|
|
77
|
+
},
|
|
78
|
+
tech_to_garage: {
|
|
79
|
+
bars: 8,
|
|
80
|
+
technique: 'breakdown',
|
|
81
|
+
description: 'Strip to just hats + reverb wash, switch kick pattern to 2-step, drop the bass',
|
|
82
|
+
},
|
|
83
|
+
garage_to_trap: {
|
|
84
|
+
bars: 8,
|
|
85
|
+
technique: 'build_drop',
|
|
86
|
+
description: 'HP riser, snare roll build, silence beat, drop into half-time trap with 808',
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
// ─── Drum Pattern Data ─────────────────────────────────────────────
|
|
90
|
+
// 16-step patterns for each genre (kick, snare/clap, hats)
|
|
91
|
+
const DRUM_PATTERNS = {
|
|
92
|
+
house: {
|
|
93
|
+
kick: makeKickPattern([0, 1, 2, 3], 100), // 4 on the floor
|
|
94
|
+
snare: makeSnarePattern([1, 3], 90), // clap on 2 & 4
|
|
95
|
+
hat: makeHatPattern([0.5, 1.5, 2.5, 3.5], 80), // offbeat 8ths
|
|
96
|
+
},
|
|
97
|
+
tech_house: {
|
|
98
|
+
kick: makeKickPattern([0, 1, 2, 3], 100),
|
|
99
|
+
snare: makeSnarePattern([1, 3], 85, [1.75, 3.75], 45), // with ghosts
|
|
100
|
+
hat: makeHatPattern([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5], 75), // straight 8ths
|
|
101
|
+
},
|
|
102
|
+
uk_garage: {
|
|
103
|
+
kick: makeKickPattern([0, 1.5, 2.5], 100), // 2-step
|
|
104
|
+
snare: makeSnarePattern([1, 3], 95),
|
|
105
|
+
hat: makeHatPattern([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5], 80),
|
|
106
|
+
},
|
|
107
|
+
trap: {
|
|
108
|
+
kick: makeKickPattern([0, 2.75], 110), // sparse 808
|
|
109
|
+
snare: makeSnarePattern([2], 120), // snare on 3 (half-time)
|
|
110
|
+
hat: makeTrapHats(), // 16th rolls with accents
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
// ─── Pattern Builders ──────────────────────────────────────────────
|
|
114
|
+
function makeKickPattern(beats, velocity) {
|
|
115
|
+
return beats.map(b => ({
|
|
116
|
+
pitch: 36, // C1 kick
|
|
117
|
+
start: b,
|
|
118
|
+
duration: 0.25,
|
|
119
|
+
velocity,
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
function makeSnarePattern(beats, velocity, ghosts, ghostVel) {
|
|
123
|
+
const notes = beats.map(b => ({
|
|
124
|
+
pitch: 39, // D#1 clap
|
|
125
|
+
start: b,
|
|
126
|
+
duration: 0.25,
|
|
127
|
+
velocity,
|
|
128
|
+
}));
|
|
129
|
+
if (ghosts && ghostVel) {
|
|
130
|
+
for (const g of ghosts) {
|
|
131
|
+
notes.push({ pitch: 38, start: g, duration: 0.125, velocity: ghostVel });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return notes;
|
|
135
|
+
}
|
|
136
|
+
function makeHatPattern(beats, velocity) {
|
|
137
|
+
return beats.map((b, i) => ({
|
|
138
|
+
pitch: 42, // F#1 closed hat
|
|
139
|
+
start: b,
|
|
140
|
+
duration: 0.125,
|
|
141
|
+
velocity: velocity + (i % 2 === 0 ? 10 : -10), // accent pattern
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
function makeTrapHats() {
|
|
145
|
+
const notes = [];
|
|
146
|
+
// Full 16th notes with velocity variation for trap feel
|
|
147
|
+
for (let i = 0; i < 16; i++) {
|
|
148
|
+
const beat = i * 0.25;
|
|
149
|
+
// Accent on downbeats, medium on upbeats, light on e's and a's
|
|
150
|
+
let vel;
|
|
151
|
+
if (i % 4 === 0)
|
|
152
|
+
vel = 100; // downbeat accent
|
|
153
|
+
else if (i % 4 === 2)
|
|
154
|
+
vel = 85; // upbeat
|
|
155
|
+
else if (i % 2 === 0)
|
|
156
|
+
vel = 75; // "and"
|
|
157
|
+
else
|
|
158
|
+
vel = 65; // "e" and "a"
|
|
159
|
+
notes.push({ pitch: 42, start: beat, duration: 0.0625, velocity: vel });
|
|
160
|
+
}
|
|
161
|
+
// Open hat at end
|
|
162
|
+
notes.push({ pitch: 46, start: 3.75, duration: 0.25, velocity: 80 });
|
|
163
|
+
return notes;
|
|
164
|
+
}
|
|
165
|
+
// ─── Bass Pattern Builders ─────────────────────────────────────────
|
|
166
|
+
function makeBassLine(key, scale, progression, octave, genre) {
|
|
167
|
+
const chords = parseProgression(progression, key, scale, octave);
|
|
168
|
+
const notes = [];
|
|
169
|
+
const beatsPerChord = 4; // 1 bar per chord
|
|
170
|
+
for (let ci = 0; ci < chords.length; ci++) {
|
|
171
|
+
const root = chords[ci][0]; // bass plays root
|
|
172
|
+
const startBeat = ci * beatsPerChord;
|
|
173
|
+
if (genre === 'house' || genre === 'tech_house') {
|
|
174
|
+
// Pumping bass: 8th notes with short-long pattern
|
|
175
|
+
for (let i = 0; i < 8; i++) {
|
|
176
|
+
notes.push({
|
|
177
|
+
pitch: root,
|
|
178
|
+
start: startBeat + i * 0.5,
|
|
179
|
+
duration: i % 2 === 0 ? 0.3 : 0.45,
|
|
180
|
+
velocity: i % 2 === 0 ? 95 : 75,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if (genre === 'uk_garage') {
|
|
185
|
+
// Syncopated garage bass
|
|
186
|
+
notes.push({ pitch: root, start: startBeat, duration: 0.75, velocity: 100 });
|
|
187
|
+
notes.push({ pitch: root, start: startBeat + 1.5, duration: 0.5, velocity: 85 });
|
|
188
|
+
notes.push({ pitch: root + 12, start: startBeat + 2.5, duration: 0.5, velocity: 90 });
|
|
189
|
+
notes.push({ pitch: root, start: startBeat + 3, duration: 0.75, velocity: 80 });
|
|
190
|
+
}
|
|
191
|
+
else if (genre === 'trap') {
|
|
192
|
+
// 808 bass: long sustain, slides
|
|
193
|
+
notes.push({ pitch: root, start: startBeat, duration: 2, velocity: 110 });
|
|
194
|
+
notes.push({ pitch: root + 12, start: startBeat + 2.75, duration: 1, velocity: 95 });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return notes;
|
|
198
|
+
}
|
|
199
|
+
// ─── Pad/Chord Pattern Builder ─────────────────────────────────────
|
|
200
|
+
function makePadChords(key, scale, progression, octave) {
|
|
201
|
+
const chords = parseProgression(progression, key, scale, octave + 1); // pads one octave up
|
|
202
|
+
const notes = [];
|
|
203
|
+
const beatsPerChord = 4;
|
|
204
|
+
for (let ci = 0; ci < chords.length; ci++) {
|
|
205
|
+
const chord = chords[ci];
|
|
206
|
+
const startBeat = ci * beatsPerChord;
|
|
207
|
+
// Whole-note pads
|
|
208
|
+
for (const pitch of chord) {
|
|
209
|
+
notes.push({
|
|
210
|
+
pitch,
|
|
211
|
+
start: startBeat,
|
|
212
|
+
duration: beatsPerChord - 0.1,
|
|
213
|
+
velocity: 70,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return notes;
|
|
218
|
+
}
|
|
219
|
+
function buildSetStructure() {
|
|
220
|
+
// 20-minute set: ~660 bars total across 4 genres + transitions
|
|
221
|
+
// Each genre ~4 min, transitions ~30 sec, intro/outro ~30 sec
|
|
222
|
+
return [
|
|
223
|
+
{ type: 'intro', bars: 16, bpm: 124, description: 'Filtered intro — hats + filter opening (~30 sec)' },
|
|
224
|
+
{ type: 'genre', genre: 'house', bars: 128, bpm: 124, description: 'Classic house — 4-on-floor, deep bass, open pads (~4 min)' },
|
|
225
|
+
{ type: 'transition', transitionId: 'house_to_tech', bars: 16, bpm: 125, description: 'House → Tech House via filter sweep (~30 sec)' },
|
|
226
|
+
{ type: 'genre', genre: 'tech_house', bars: 128, bpm: 126, description: 'Minimal tech — driving, percussive, groovy (~4 min)' },
|
|
227
|
+
{ type: 'transition', transitionId: 'tech_to_garage', bars: 16, bpm: 129, description: 'Tech → Garage via breakdown (~30 sec)' },
|
|
228
|
+
{ type: 'genre', genre: 'uk_garage', bars: 128, bpm: 132, description: 'UK Garage — 2-step, shuffled, deep sub (~4 min)' },
|
|
229
|
+
{ type: 'transition', transitionId: 'garage_to_trap', bars: 16, bpm: 136, description: 'Garage → Trap via build + drop (~30 sec)' },
|
|
230
|
+
{ type: 'genre', genre: 'trap', bars: 176, bpm: 140, description: 'Half-time trap — 808, hat rolls, dark (~5 min)' },
|
|
231
|
+
{ type: 'outro', bars: 16, bpm: 140, description: 'Outro — strip to reverb tail, filter down (~30 sec)' },
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
// ─── Tool Registration ─────────────────────────────────────────────
|
|
235
|
+
export function registerDjSetBuilderTools() {
|
|
236
|
+
registerTool({
|
|
237
|
+
name: 'dj_set_build',
|
|
238
|
+
description: `Build a complete DJ set in Ableton Live that flows through House → Tech House → UK Garage → Trap.
|
|
239
|
+
Creates tracks, programs MIDI clips for drums/bass/pads per genre section, and sets up transitions.
|
|
240
|
+
Requires Ableton Live with AbletonOSC running.`,
|
|
241
|
+
parameters: {
|
|
242
|
+
sections: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
description: 'Comma-separated genre sections to include: "house,tech_house,uk_garage,trap" (default: all)',
|
|
245
|
+
},
|
|
246
|
+
bars_per_section: {
|
|
247
|
+
type: 'number',
|
|
248
|
+
description: 'Bars per genre section (default: 32)',
|
|
249
|
+
},
|
|
250
|
+
key: {
|
|
251
|
+
type: 'string',
|
|
252
|
+
description: 'Musical key for the set (default: "C")',
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
tier: 'free',
|
|
256
|
+
timeout: 60_000,
|
|
257
|
+
async execute(args) {
|
|
258
|
+
const osc = await ensureAbleton();
|
|
259
|
+
const key = String(args.key || 'C');
|
|
260
|
+
const barsPerSection = Number(args.bars_per_section || 32);
|
|
261
|
+
const requestedSections = args.sections
|
|
262
|
+
? String(args.sections).split(',').map(s => s.trim())
|
|
263
|
+
: ['house', 'tech_house', 'uk_garage', 'trap'];
|
|
264
|
+
const results = [];
|
|
265
|
+
results.push(`🎛 Building DJ Set: ${requestedSections.map(s => GENRE_SECTIONS[s]?.name || s).join(' → ')}`);
|
|
266
|
+
results.push(`Key: ${key} minor | Bars/section: ${barsPerSection}`);
|
|
267
|
+
results.push('');
|
|
268
|
+
// 1. Set initial tempo
|
|
269
|
+
const firstGenre = GENRE_SECTIONS[requestedSections[0]];
|
|
270
|
+
if (firstGenre) {
|
|
271
|
+
osc.send('/live/song/set/tempo', firstGenre.bpm);
|
|
272
|
+
results.push(`⏱ Tempo: ${firstGenre.bpm} BPM`);
|
|
273
|
+
}
|
|
274
|
+
// 2. Create tracks
|
|
275
|
+
const trackNames = ['Drums', 'Hi-Hats', 'Bass', 'Pads', 'FX/Riser'];
|
|
276
|
+
results.push('');
|
|
277
|
+
results.push('📐 Track Layout:');
|
|
278
|
+
for (let i = 0; i < trackNames.length; i++) {
|
|
279
|
+
try {
|
|
280
|
+
osc.send('/live/song/create_midi_track', i);
|
|
281
|
+
results.push(` Track ${i + 1}: ${trackNames[i]}`);
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
results.push(` Track ${i + 1}: ${trackNames[i]} (may already exist)`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// 3. Program clips for each section
|
|
288
|
+
results.push('');
|
|
289
|
+
results.push('🎵 Programming clips:');
|
|
290
|
+
let sceneIdx = 0;
|
|
291
|
+
for (const sectionId of requestedSections) {
|
|
292
|
+
const section = GENRE_SECTIONS[sectionId];
|
|
293
|
+
if (!section) {
|
|
294
|
+
results.push(` ⚠ Unknown genre: ${sectionId}`);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
// Override key if specified
|
|
298
|
+
const sectionKey = key || section.key;
|
|
299
|
+
// Get patterns
|
|
300
|
+
const drums = DRUM_PATTERNS[sectionId];
|
|
301
|
+
const bassNotes = makeBassLine(sectionKey, section.scale, section.progression, section.bassOctave, sectionId);
|
|
302
|
+
const padNotes = makePadChords(sectionKey, section.scale, section.progression, 3);
|
|
303
|
+
// Calculate clip length based on chord count
|
|
304
|
+
const chordCount = section.progression.trim().split(/\s+/).length;
|
|
305
|
+
const clipBars = chordCount; // 1 bar per chord
|
|
306
|
+
const clipBeats = clipBars * 4;
|
|
307
|
+
results.push(` ${section.name} (${section.bpm} BPM, ${clipBars} bars):`);
|
|
308
|
+
// Create scene
|
|
309
|
+
try {
|
|
310
|
+
osc.send('/live/song/create_scene', sceneIdx);
|
|
311
|
+
}
|
|
312
|
+
catch { /* scene may exist */ }
|
|
313
|
+
// Drums clip (track 0)
|
|
314
|
+
if (drums) {
|
|
315
|
+
try {
|
|
316
|
+
osc.send('/live/clip_slot/create_clip', 0, sceneIdx, clipBeats);
|
|
317
|
+
// Add drum notes
|
|
318
|
+
const allDrumNotes = [...drums.kick, ...drums.snare, ...drums.hat];
|
|
319
|
+
// Repeat pattern to fill clip
|
|
320
|
+
const repeatedNotes = [];
|
|
321
|
+
for (let bar = 0; bar < clipBars; bar++) {
|
|
322
|
+
for (const note of allDrumNotes) {
|
|
323
|
+
repeatedNotes.push({
|
|
324
|
+
...note,
|
|
325
|
+
start: note.start + bar * 4,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Send notes via OSC
|
|
330
|
+
for (const note of repeatedNotes) {
|
|
331
|
+
osc.send('/live/clip/add/notes', 0, sceneIdx, note.pitch, note.start, note.duration, note.velocity, 0);
|
|
332
|
+
}
|
|
333
|
+
results.push(` Drums: ${repeatedNotes.length} notes (kick + snare + hat)`);
|
|
334
|
+
}
|
|
335
|
+
catch (e) {
|
|
336
|
+
results.push(` Drums: error — ${e}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Bass clip (track 2)
|
|
340
|
+
try {
|
|
341
|
+
osc.send('/live/clip_slot/create_clip', 2, sceneIdx, clipBeats);
|
|
342
|
+
for (const note of bassNotes) {
|
|
343
|
+
osc.send('/live/clip/add/notes', 2, sceneIdx, note.pitch, note.start, note.duration, note.velocity, 0);
|
|
344
|
+
}
|
|
345
|
+
results.push(` Bass: ${bassNotes.length} notes (${sectionId} style)`);
|
|
346
|
+
}
|
|
347
|
+
catch (e) {
|
|
348
|
+
results.push(` Bass: error — ${e}`);
|
|
349
|
+
}
|
|
350
|
+
// Pads clip (track 3)
|
|
351
|
+
try {
|
|
352
|
+
osc.send('/live/clip_slot/create_clip', 3, sceneIdx, clipBeats);
|
|
353
|
+
for (const note of padNotes) {
|
|
354
|
+
osc.send('/live/clip/add/notes', 3, sceneIdx, note.pitch, note.start, note.duration, note.velocity, 0);
|
|
355
|
+
}
|
|
356
|
+
results.push(` Pads: ${padNotes.length} notes (${section.progression})`);
|
|
357
|
+
}
|
|
358
|
+
catch (e) {
|
|
359
|
+
results.push(` Pads: error — ${e}`);
|
|
360
|
+
}
|
|
361
|
+
sceneIdx++;
|
|
362
|
+
}
|
|
363
|
+
// 4. Summary
|
|
364
|
+
const totalBars = requestedSections.reduce((sum, s) => sum + (GENRE_SECTIONS[s]?.bars || 32), 0);
|
|
365
|
+
const startBpm = GENRE_SECTIONS[requestedSections[0]]?.bpm || 124;
|
|
366
|
+
const endBpm = GENRE_SECTIONS[requestedSections[requestedSections.length - 1]]?.bpm || 140;
|
|
367
|
+
results.push('');
|
|
368
|
+
results.push('─'.repeat(50));
|
|
369
|
+
results.push(`✅ DJ Set Built:`);
|
|
370
|
+
results.push(` ${requestedSections.length} genre sections`);
|
|
371
|
+
results.push(` ${totalBars} total bars`);
|
|
372
|
+
results.push(` ${startBpm} → ${endBpm} BPM`);
|
|
373
|
+
results.push(` ${sceneIdx} scenes created`);
|
|
374
|
+
results.push('');
|
|
375
|
+
results.push('🎚 Next steps:');
|
|
376
|
+
results.push(' 1. Load a Drum Rack on track 1 (Drums)');
|
|
377
|
+
results.push(' 2. Add kbot Genre Morph M4L device before the Drum Rack');
|
|
378
|
+
results.push(' 3. Add kbot Hat Machine on track 2 (Hi-Hats)');
|
|
379
|
+
results.push(' 4. Load a bass synth on track 3 (Bass)');
|
|
380
|
+
results.push(' 5. Load a pad synth on track 4 (Pads)');
|
|
381
|
+
results.push(' 6. Add kbot DJ FX on the Master track');
|
|
382
|
+
results.push(' 7. Fire Scene 1 and start morphing!');
|
|
383
|
+
return results.join('\n');
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
registerTool({
|
|
387
|
+
name: 'dj_set_info',
|
|
388
|
+
description: 'Show the DJ set structure and genre flow for a House → Tech House → UK Garage → Trap set.',
|
|
389
|
+
parameters: {},
|
|
390
|
+
tier: 'free',
|
|
391
|
+
timeout: 5_000,
|
|
392
|
+
async execute() {
|
|
393
|
+
const structure = buildSetStructure();
|
|
394
|
+
const lines = [
|
|
395
|
+
'🎛 DJ Set Structure: House → Tech House → UK Garage → Trap',
|
|
396
|
+
'═'.repeat(55),
|
|
397
|
+
'',
|
|
398
|
+
];
|
|
399
|
+
let totalBars = 0;
|
|
400
|
+
for (const section of structure) {
|
|
401
|
+
totalBars += section.bars;
|
|
402
|
+
const icon = section.type === 'genre' ? '🎵'
|
|
403
|
+
: section.type === 'transition' ? '🔀'
|
|
404
|
+
: section.type === 'intro' ? '🎬'
|
|
405
|
+
: '🏁';
|
|
406
|
+
lines.push(`${icon} ${section.description}`);
|
|
407
|
+
lines.push(` ${section.bars} bars @ ${section.bpm} BPM`);
|
|
408
|
+
lines.push('');
|
|
409
|
+
}
|
|
410
|
+
// Calculate total time (approximate, since BPM changes)
|
|
411
|
+
const avgBpm = 131; // rough average
|
|
412
|
+
const totalBeats = totalBars * 4;
|
|
413
|
+
const totalMinutes = totalBeats / avgBpm;
|
|
414
|
+
lines.push('─'.repeat(55));
|
|
415
|
+
lines.push(`Total: ${totalBars} bars | ~${Math.round(totalMinutes)} minutes`);
|
|
416
|
+
lines.push(`BPM range: 124 → 140`);
|
|
417
|
+
lines.push('');
|
|
418
|
+
lines.push('Genre Characteristics:');
|
|
419
|
+
lines.push(' House (124): 4-on-floor, offbeat hats, pumping bass');
|
|
420
|
+
lines.push(' Tech House (126): Minimal, shuffled, percussive');
|
|
421
|
+
lines.push(' UK Garage (132): 2-step, skippy, deep sub');
|
|
422
|
+
lines.push(' Trap (140): Half-time, 808, hat rolls');
|
|
423
|
+
lines.push('');
|
|
424
|
+
lines.push('M4L Devices:');
|
|
425
|
+
lines.push(' kbot-genre-morph: Auto-morphs drum patterns between genres');
|
|
426
|
+
lines.push(' kbot-hat-machine: Genre-specific hat patterns with roll mode');
|
|
427
|
+
lines.push(' kbot-dj-fx: Filter, echo, reverb, stutter, brake/riser');
|
|
428
|
+
return lines.join('\n');
|
|
429
|
+
},
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
//# sourceMappingURL=dj-set-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dj-set-builder.js","sourceRoot":"","sources":["../../src/tools/dj-set-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AA6EA,wBAAgB,kBAAkB,IAAI,IAAI,CAuEzC"}
|
package/dist/tools/fetch.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// kbot Fetch Tool — URL content fetching with SSRF protection
|
|
2
2
|
// Fetches web content and strips HTML → plain text.
|
|
3
|
+
// DNS rebinding defense: resolves hostname → IP before fetching, then checks the IP.
|
|
4
|
+
import { lookup } from 'node:dns/promises';
|
|
3
5
|
import { registerTool } from './index.js';
|
|
4
|
-
/** Private/reserved IP patterns — block SSRF */
|
|
5
|
-
const
|
|
6
|
-
/^localhost$/i,
|
|
6
|
+
/** Private/reserved IP patterns — block SSRF (applied to resolved IPs, not just hostnames) */
|
|
7
|
+
const BLOCKED_IP_PATTERNS = [
|
|
7
8
|
/^127\.\d+\.\d+\.\d+$/,
|
|
8
9
|
/^10\.\d+\.\d+\.\d+$/,
|
|
9
10
|
/^172\.(1[6-9]|2\d|3[01])\.\d+\.\d+$/,
|
|
@@ -13,10 +14,38 @@ const BLOCKED_HOSTS = [
|
|
|
13
14
|
/^fd[0-9a-f]{2}:/i,
|
|
14
15
|
/^fe80:/i,
|
|
15
16
|
/^169\.254\.\d+\.\d+$/,
|
|
17
|
+
];
|
|
18
|
+
const BLOCKED_HOSTNAMES = [
|
|
19
|
+
/^localhost$/i,
|
|
16
20
|
/\.local$/i,
|
|
17
21
|
];
|
|
22
|
+
function isBlockedIP(ip) {
|
|
23
|
+
return BLOCKED_IP_PATTERNS.some(p => p.test(ip));
|
|
24
|
+
}
|
|
18
25
|
function isBlockedHost(hostname) {
|
|
19
|
-
return
|
|
26
|
+
return BLOCKED_HOSTNAMES.some(p => p.test(hostname));
|
|
27
|
+
}
|
|
28
|
+
/** Resolve hostname to IP and check against blocked ranges (DNS rebinding defense) */
|
|
29
|
+
async function checkHostSSRF(hostname) {
|
|
30
|
+
// Check hostname patterns first (localhost, .local)
|
|
31
|
+
if (isBlockedHost(hostname))
|
|
32
|
+
return 'Blocked host (private/reserved)';
|
|
33
|
+
// If it's already an IP literal, check directly
|
|
34
|
+
if (/^\d+\.\d+\.\d+\.\d+$/.test(hostname) || hostname.includes(':')) {
|
|
35
|
+
if (isBlockedIP(hostname))
|
|
36
|
+
return 'Blocked host (private/reserved IP range)';
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Resolve DNS and check the actual IP
|
|
40
|
+
try {
|
|
41
|
+
const { address } = await lookup(hostname);
|
|
42
|
+
if (isBlockedIP(address))
|
|
43
|
+
return `Blocked: ${hostname} resolves to private IP ${address}`;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// DNS resolution failed — let fetch handle it (could be a valid host we can't resolve locally)
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
20
49
|
}
|
|
21
50
|
/** Strip HTML tags and decode entities → plain text */
|
|
22
51
|
function htmlToText(html) {
|
|
@@ -62,8 +91,9 @@ export function registerFetchTools() {
|
|
|
62
91
|
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
63
92
|
return `Error: Only http/https URLs are supported`;
|
|
64
93
|
}
|
|
65
|
-
|
|
66
|
-
|
|
94
|
+
const ssrfBlock = await checkHostSSRF(parsed.hostname);
|
|
95
|
+
if (ssrfBlock) {
|
|
96
|
+
return `Error: ${ssrfBlock}`;
|
|
67
97
|
}
|
|
68
98
|
try {
|
|
69
99
|
const controller = new AbortController();
|
package/dist/tools/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,oDAAoD;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"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"}
|