@mp-consulting/homebridge-ai-kit 2.0.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 (118) hide show
  1. package/README.md +273 -0
  2. package/config.schema.json +131 -0
  3. package/dist/agent/run-agent.d.ts +61 -0
  4. package/dist/agent/run-agent.d.ts.map +1 -0
  5. package/dist/agent/run-agent.js +92 -0
  6. package/dist/agent/run-agent.js.map +1 -0
  7. package/dist/bin/homebridge-ai-kit.d.ts +3 -0
  8. package/dist/bin/homebridge-ai-kit.d.ts.map +1 -0
  9. package/dist/bin/homebridge-ai-kit.js +61 -0
  10. package/dist/bin/homebridge-ai-kit.js.map +1 -0
  11. package/dist/bin/homebridge-mcp-server.d.ts +3 -0
  12. package/dist/bin/homebridge-mcp-server.d.ts.map +1 -0
  13. package/dist/bin/homebridge-mcp-server.js +5 -0
  14. package/dist/bin/homebridge-mcp-server.js.map +1 -0
  15. package/dist/index.d.ts +9 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +12 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp/create-server.d.ts +17 -0
  20. package/dist/mcp/create-server.d.ts.map +1 -0
  21. package/dist/mcp/create-server.js +42 -0
  22. package/dist/mcp/create-server.js.map +1 -0
  23. package/dist/mcp/homebridge-client.d.ts +105 -0
  24. package/dist/mcp/homebridge-client.d.ts.map +1 -0
  25. package/dist/mcp/homebridge-client.js +341 -0
  26. package/dist/mcp/homebridge-client.js.map +1 -0
  27. package/dist/mcp/http.d.ts +26 -0
  28. package/dist/mcp/http.d.ts.map +1 -0
  29. package/dist/mcp/http.js +124 -0
  30. package/dist/mcp/http.js.map +1 -0
  31. package/dist/mcp/index.d.ts +12 -0
  32. package/dist/mcp/index.d.ts.map +1 -0
  33. package/dist/mcp/index.js +7 -0
  34. package/dist/mcp/index.js.map +1 -0
  35. package/dist/mcp/live.d.ts +46 -0
  36. package/dist/mcp/live.d.ts.map +1 -0
  37. package/dist/mcp/live.js +105 -0
  38. package/dist/mcp/live.js.map +1 -0
  39. package/dist/mcp/prompts.d.ts +4 -0
  40. package/dist/mcp/prompts.d.ts.map +1 -0
  41. package/dist/mcp/prompts.js +21 -0
  42. package/dist/mcp/prompts.js.map +1 -0
  43. package/dist/mcp/regex-search.d.ts +11 -0
  44. package/dist/mcp/regex-search.d.ts.map +1 -0
  45. package/dist/mcp/regex-search.js +53 -0
  46. package/dist/mcp/regex-search.js.map +1 -0
  47. package/dist/mcp/resources.d.ts +16 -0
  48. package/dist/mcp/resources.d.ts.map +1 -0
  49. package/dist/mcp/resources.js +65 -0
  50. package/dist/mcp/resources.js.map +1 -0
  51. package/dist/mcp/stdio.d.ts +11 -0
  52. package/dist/mcp/stdio.d.ts.map +1 -0
  53. package/dist/mcp/stdio.js +56 -0
  54. package/dist/mcp/stdio.js.map +1 -0
  55. package/dist/mcp/tools/accessories.d.ts +15 -0
  56. package/dist/mcp/tools/accessories.d.ts.map +1 -0
  57. package/dist/mcp/tools/accessories.js +179 -0
  58. package/dist/mcp/tools/accessories.js.map +1 -0
  59. package/dist/mcp/tools/child-bridges.d.ts +3 -0
  60. package/dist/mcp/tools/child-bridges.d.ts.map +1 -0
  61. package/dist/mcp/tools/child-bridges.js +28 -0
  62. package/dist/mcp/tools/child-bridges.js.map +1 -0
  63. package/dist/mcp/tools/config.d.ts +7 -0
  64. package/dist/mcp/tools/config.d.ts.map +1 -0
  65. package/dist/mcp/tools/config.js +111 -0
  66. package/dist/mcp/tools/config.js.map +1 -0
  67. package/dist/mcp/tools/helpers.d.ts +31 -0
  68. package/dist/mcp/tools/helpers.d.ts.map +1 -0
  69. package/dist/mcp/tools/helpers.js +49 -0
  70. package/dist/mcp/tools/helpers.js.map +1 -0
  71. package/dist/mcp/tools/logs.d.ts +7 -0
  72. package/dist/mcp/tools/logs.d.ts.map +1 -0
  73. package/dist/mcp/tools/logs.js +122 -0
  74. package/dist/mcp/tools/logs.js.map +1 -0
  75. package/dist/mcp/tools/plugin-jobs.d.ts +11 -0
  76. package/dist/mcp/tools/plugin-jobs.d.ts.map +1 -0
  77. package/dist/mcp/tools/plugin-jobs.js +75 -0
  78. package/dist/mcp/tools/plugin-jobs.js.map +1 -0
  79. package/dist/mcp/tools/plugins.d.ts +3 -0
  80. package/dist/mcp/tools/plugins.d.ts.map +1 -0
  81. package/dist/mcp/tools/plugins.js +74 -0
  82. package/dist/mcp/tools/plugins.js.map +1 -0
  83. package/dist/mcp/tools/server.d.ts +3 -0
  84. package/dist/mcp/tools/server.d.ts.map +1 -0
  85. package/dist/mcp/tools/server.js +69 -0
  86. package/dist/mcp/tools/server.js.map +1 -0
  87. package/dist/mcp/tools/system.d.ts +3 -0
  88. package/dist/mcp/tools/system.d.ts.map +1 -0
  89. package/dist/mcp/tools/system.js +9 -0
  90. package/dist/mcp/tools/system.js.map +1 -0
  91. package/dist/mcp/types.d.ts +75 -0
  92. package/dist/mcp/types.d.ts.map +1 -0
  93. package/dist/mcp/types.js +2 -0
  94. package/dist/mcp/types.js.map +1 -0
  95. package/dist/plugin/index.d.ts +7 -0
  96. package/dist/plugin/index.d.ts.map +1 -0
  97. package/dist/plugin/index.js +5 -0
  98. package/dist/plugin/index.js.map +1 -0
  99. package/dist/plugin/platform.d.ts +28 -0
  100. package/dist/plugin/platform.d.ts.map +1 -0
  101. package/dist/plugin/platform.js +76 -0
  102. package/dist/plugin/platform.js.map +1 -0
  103. package/dist/plugin/snippets.d.ts +27 -0
  104. package/dist/plugin/snippets.d.ts.map +1 -0
  105. package/dist/plugin/snippets.js +33 -0
  106. package/dist/plugin/snippets.js.map +1 -0
  107. package/homebridge-ui/public/index.html +164 -0
  108. package/homebridge-ui/public/js/app.js +200 -0
  109. package/homebridge-ui/public/lib/ai.css +738 -0
  110. package/homebridge-ui/public/lib/bootstrap-icons.min.css +5 -0
  111. package/homebridge-ui/public/lib/bootstrap.bundle.min.js +6 -0
  112. package/homebridge-ui/public/lib/bootstrap.min.css +5 -0
  113. package/homebridge-ui/public/lib/fonts/bootstrap-icons.woff +0 -0
  114. package/homebridge-ui/public/lib/fonts/bootstrap-icons.woff2 +0 -0
  115. package/homebridge-ui/public/lib/kit.css +994 -0
  116. package/homebridge-ui/public/lib/kit.js +794 -0
  117. package/homebridge-ui/server.js +28 -0
  118. package/package.json +94 -0
@@ -0,0 +1,28 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { HomebridgePluginUiServer } from '@homebridge/plugin-ui-utils';
3
+ import { mcpClientSnippets, registerAiRoutes, testAiConnection } from '../dist/plugin/index.js';
4
+
5
+ /**
6
+ * Custom settings UI server for the AI Kit platform. Exposes the shared
7
+ * Assistant routes (/ai/status, /ai/ask, …) plus routes for the settings page.
8
+ */
9
+ class AiKitUiServer extends HomebridgePluginUiServer {
10
+ constructor() {
11
+ super();
12
+
13
+ registerAiRoutes(this, { pluginName: '@mp-consulting/homebridge-ai-kit' });
14
+
15
+ // Tests the provider settings currently in the form, saved or not.
16
+ this.onRequest('/ai/test', (block) => testAiConnection(block));
17
+
18
+ // A random bearer token for the HTTP MCP server.
19
+ this.onRequest('/mcp/token', () => ({ token: randomBytes(24).toString('base64url') }));
20
+
21
+ // Config snippets for Claude Desktop, Claude Code and Cursor.
22
+ this.onRequest('/mcp/snippets', (body) => mcpClientSnippets(body));
23
+
24
+ this.ready();
25
+ }
26
+ }
27
+
28
+ (() => new AiKitUiServer())();
package/package.json ADDED
@@ -0,0 +1,94 @@
1
+ {
2
+ "name": "@mp-consulting/homebridge-ai-kit",
3
+ "displayName": "Homebridge AI Kit",
4
+ "version": "2.0.0",
5
+ "description": "AI toolkit for Homebridge — an MCP server that lets AI assistants control accessories, manage plugins and monitor Homebridge, plus the shared AI building blocks used by Homebridge Glass UI and MP Consulting plugins.",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./mcp": {
15
+ "types": "./dist/mcp/index.d.ts",
16
+ "default": "./dist/mcp/index.js"
17
+ },
18
+ "./plugin": {
19
+ "types": "./dist/plugin/index.d.ts",
20
+ "default": "./dist/plugin/index.js"
21
+ },
22
+ "./package.json": "./package.json"
23
+ },
24
+ "bin": {
25
+ "homebridge-ai-kit": "dist/bin/homebridge-ai-kit.js",
26
+ "homebridge-mcp-server": "dist/bin/homebridge-mcp-server.js"
27
+ },
28
+ "scripts": {
29
+ "build": "npm run build:core && npm run copy:ui-assets && tsc",
30
+ "build:core": "npm run build -w packages/ai-core",
31
+ "dev": "tsx src/bin/homebridge-ai-kit.ts mcp",
32
+ "test": "npm test -w packages/ai-core && vitest run",
33
+ "test:watch": "vitest",
34
+ "test:coverage": "npm run test:coverage -w packages/ai-core && vitest run --coverage",
35
+ "lint": "eslint . --max-warnings=0",
36
+ "typecheck": "npm run typecheck -w packages/ai-core && npm run build:core && tsc -p tsconfig.test.json",
37
+ "prepublishOnly": "npm run build",
38
+ "copy:ui-assets": "mp-ui-kit-copy --vendor"
39
+ },
40
+ "keywords": [
41
+ "homebridge",
42
+ "homebridge-plugin",
43
+ "homekit",
44
+ "smart-home",
45
+ "ai",
46
+ "llm",
47
+ "mcp",
48
+ "model-context-protocol",
49
+ "claude",
50
+ "anthropic"
51
+ ],
52
+ "author": "MP Consulting",
53
+ "license": "MIT",
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/mp-consulting/homebridge-ai-kit.git"
57
+ },
58
+ "funding": {
59
+ "type": "paypal",
60
+ "url": "https://paypal.me/mickaelpalma"
61
+ },
62
+ "files": [
63
+ "dist",
64
+ "config.schema.json",
65
+ "homebridge-ui"
66
+ ],
67
+ "workspaces": [
68
+ "packages/*"
69
+ ],
70
+ "dependencies": {
71
+ "@homebridge/plugin-ui-utils": "^2.2.6",
72
+ "@modelcontextprotocol/sdk": "^1.30.0",
73
+ "@mp-consulting/homebridge-ai-core": "^2.0.0",
74
+ "socket.io-client": "^4.8.4",
75
+ "zod": "^4.5.4"
76
+ },
77
+ "devDependencies": {
78
+ "@eslint/js": "^10.0.1",
79
+ "@mp-consulting/homebridge-ui-kit": "file:../homebridge-ui-kit",
80
+ "@types/node": "^26.5.0",
81
+ "@vitest/coverage-v8": "^5.0.0",
82
+ "bootstrap": "^5.3.8",
83
+ "bootstrap-icons": "^1.13.1",
84
+ "eslint": "^10.10.0",
85
+ "tsx": "^4.23.13",
86
+ "typescript": "^6.0.3",
87
+ "typescript-eslint": "^8.70.0",
88
+ "vitest": "^5.0.0"
89
+ },
90
+ "engines": {
91
+ "node": "^22.10.0 || ^24.0.0 || ^26.0.0",
92
+ "homebridge": "^1.8.0 || ^2.0.0"
93
+ }
94
+ }