dj-claude 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/bin.mjs +24 -0
- package/dist/App.d.ts +6 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +64 -0
- package/dist/App.js.map +1 -0
- package/dist/audio/engine.d.ts +15 -0
- package/dist/audio/engine.d.ts.map +1 -0
- package/dist/audio/engine.js +117 -0
- package/dist/audio/engine.js.map +1 -0
- package/dist/audio/polyfill.d.ts +2 -0
- package/dist/audio/polyfill.d.ts.map +1 -0
- package/dist/audio/polyfill.js +122 -0
- package/dist/audio/polyfill.js.map +1 -0
- package/dist/components/CodeDisplay.d.ts +7 -0
- package/dist/components/CodeDisplay.d.ts.map +1 -0
- package/dist/components/CodeDisplay.js +12 -0
- package/dist/components/CodeDisplay.js.map +1 -0
- package/dist/components/DancingClaude.d.ts +6 -0
- package/dist/components/DancingClaude.d.ts.map +1 -0
- package/dist/components/DancingClaude.js +26 -0
- package/dist/components/DancingClaude.js.map +1 -0
- package/dist/components/Header.d.ts +8 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +28 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/PromptInput.d.ts +9 -0
- package/dist/components/PromptInput.d.ts.map +1 -0
- package/dist/components/PromptInput.js +7 -0
- package/dist/components/PromptInput.js.map +1 -0
- package/dist/components/SpeechBubble.d.ts +6 -0
- package/dist/components/SpeechBubble.d.ts.map +1 -0
- package/dist/components/SpeechBubble.js +25 -0
- package/dist/components/SpeechBubble.js.map +1 -0
- package/dist/components/StatusBar.d.ts +6 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar.js +6 -0
- package/dist/components/StatusBar.js.map +1 -0
- package/dist/headless.d.ts +2 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +37 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ascii-frames.d.ts +3 -0
- package/dist/lib/ascii-frames.d.ts.map +1 -0
- package/dist/lib/ascii-frames.js +82 -0
- package/dist/lib/ascii-frames.js.map +1 -0
- package/dist/lib/claude.d.ts +3 -0
- package/dist/lib/claude.d.ts.map +1 -0
- package/dist/lib/claude.js +44 -0
- package/dist/lib/claude.js.map +1 -0
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +27 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/parseCode.d.ts +8 -0
- package/dist/lib/parseCode.d.ts.map +1 -0
- package/dist/lib/parseCode.js +94 -0
- package/dist/lib/parseCode.js.map +1 -0
- package/dist/lib/prompts.d.ts +2 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +221 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/reducer.d.ts +4 -0
- package/dist/lib/reducer.d.ts.map +1 -0
- package/dist/lib/reducer.js +79 -0
- package/dist/lib/reducer.js.map +1 -0
- package/dist/lib/session.d.ts +4 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +45 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/types.d.ts +49 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +166 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/state.d.ts +16 -0
- package/dist/mcp/state.d.ts.map +1 -0
- package/dist/mcp/state.js +32 -0
- package/dist/mcp/state.js.map +1 -0
- package/mcp.mjs +15 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,QAAQ;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAWD,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAE7C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAM7C"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// MCP server state — lightweight singleton matching DJState shape.
|
|
2
|
+
const state = {
|
|
3
|
+
engineReady: false,
|
|
4
|
+
isPlaying: false,
|
|
5
|
+
currentCode: '',
|
|
6
|
+
previousCode: '',
|
|
7
|
+
mcCommentary: '',
|
|
8
|
+
messages: [],
|
|
9
|
+
};
|
|
10
|
+
export function getState() {
|
|
11
|
+
return state;
|
|
12
|
+
}
|
|
13
|
+
export function setEngineReady() {
|
|
14
|
+
state.engineReady = true;
|
|
15
|
+
}
|
|
16
|
+
export function updateAfterPlay(code, commentary) {
|
|
17
|
+
state.previousCode = state.currentCode;
|
|
18
|
+
state.currentCode = code;
|
|
19
|
+
state.isPlaying = true;
|
|
20
|
+
state.mcCommentary = commentary;
|
|
21
|
+
}
|
|
22
|
+
export function updateAfterHush() {
|
|
23
|
+
state.isPlaying = false;
|
|
24
|
+
}
|
|
25
|
+
export function addMessage(msg) {
|
|
26
|
+
state.messages.push(msg);
|
|
27
|
+
// Keep last 12 messages (6 exchanges) to match claude.ts behavior
|
|
28
|
+
if (state.messages.length > 12) {
|
|
29
|
+
state.messages = state.messages.slice(-12);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAanE,MAAM,KAAK,GAAa;IACtB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAkB;IAC9D,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IACvC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,kEAAkE;IAClE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC/B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
package/mcp.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// MCP entry point for DJ Claude.
|
|
4
|
+
// CRITICAL: Redirect console.log to stderr FIRST — MCP uses stdout for
|
|
5
|
+
// JSON-RPC and Strudel/cyclist logs write to console.log which would
|
|
6
|
+
// corrupt the protocol.
|
|
7
|
+
const _origLog = console.log;
|
|
8
|
+
console.log = (...args) => console.error(...args);
|
|
9
|
+
|
|
10
|
+
// Polyfill must run before any Strudel imports.
|
|
11
|
+
await import('./dist/audio/polyfill.js');
|
|
12
|
+
|
|
13
|
+
// Start the MCP server.
|
|
14
|
+
const { startServer } = await import('./dist/mcp/server.js');
|
|
15
|
+
await startServer();
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dj-claude",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI-generated music in your terminal — DJ Claude CLI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"dj-claude": "./bin.mjs",
|
|
8
|
+
"dj-claude-mcp": "./mcp.mjs"
|
|
9
|
+
},
|
|
10
|
+
"files": ["dist", "bin.mjs", "mcp.mjs"],
|
|
11
|
+
"homepage": "https://claude.dj",
|
|
12
|
+
"repository": { "type": "git", "url": "https://github.com/p-poss/dj-claude" },
|
|
13
|
+
"author": "p-poss",
|
|
14
|
+
"keywords": ["claude", "music", "mcp", "ai", "dj", "strudel", "live-coding", "claude-code"],
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"start": "node bin.mjs",
|
|
19
|
+
"dev": "tsc && node bin.mjs",
|
|
20
|
+
"mcp": "node mcp.mjs",
|
|
21
|
+
"prepublishOnly": "tsc"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@anthropic-ai/sdk": "^0.71.2",
|
|
25
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
26
|
+
"@strudel/core": "1.1.0",
|
|
27
|
+
"@strudel/mini": "1.1.0",
|
|
28
|
+
"@strudel/webaudio": "1.1.0",
|
|
29
|
+
"dotenv": "^16.4.7",
|
|
30
|
+
"ink": "^5.1.0",
|
|
31
|
+
"ink-text-input": "^6.0.0",
|
|
32
|
+
"node-web-audio-api": "^1.0.8",
|
|
33
|
+
"react": "^18.3.1",
|
|
34
|
+
"superdough": "1.1.0",
|
|
35
|
+
"zod": "^4.3.6"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^20",
|
|
39
|
+
"@types/react": "^18",
|
|
40
|
+
"typescript": "^5"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18"
|
|
44
|
+
}
|
|
45
|
+
}
|