ha-ai-mcp-server 0.3.8 → 0.4.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 (60) hide show
  1. package/dist/adapters/addon/addon.adapter.d.ts +13 -2
  2. package/dist/adapters/addon/addon.adapter.d.ts.map +1 -1
  3. package/dist/adapters/addon/addon.adapter.js +86 -4
  4. package/dist/adapters/addon/addon.adapter.js.map +1 -1
  5. package/dist/adapters/ha/ha-rest.adapter.d.ts +3 -1
  6. package/dist/adapters/ha/ha-rest.adapter.d.ts.map +1 -1
  7. package/dist/adapters/ha/ha-rest.adapter.js +6 -2
  8. package/dist/adapters/ha/ha-rest.adapter.js.map +1 -1
  9. package/dist/cli/skills.d.ts +12 -0
  10. package/dist/cli/skills.d.ts.map +1 -0
  11. package/dist/cli/skills.js +556 -0
  12. package/dist/cli/skills.js.map +1 -0
  13. package/dist/core/config.d.ts +8 -0
  14. package/dist/core/config.d.ts.map +1 -1
  15. package/dist/core/config.js +6 -0
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/domain/ports/addon-client.port.d.ts +71 -1
  18. package/dist/domain/ports/addon-client.port.d.ts.map +1 -1
  19. package/dist/domain/ports/ha-client.port.d.ts +3 -1
  20. package/dist/domain/ports/ha-client.port.d.ts.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +29 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/tools/agent.d.ts +18 -0
  26. package/dist/tools/agent.d.ts.map +1 -0
  27. package/dist/tools/agent.js +78 -0
  28. package/dist/tools/agent.js.map +1 -0
  29. package/dist/tools/audit.d.ts +21 -0
  30. package/dist/tools/audit.d.ts.map +1 -0
  31. package/dist/tools/audit.js +60 -0
  32. package/dist/tools/audit.js.map +1 -0
  33. package/dist/tools/automation.d.ts +2 -0
  34. package/dist/tools/automation.d.ts.map +1 -1
  35. package/dist/tools/automation.js +5 -0
  36. package/dist/tools/automation.js.map +1 -1
  37. package/dist/tools/dashboard.d.ts +2 -0
  38. package/dist/tools/dashboard.d.ts.map +1 -1
  39. package/dist/tools/dashboard.js +8 -0
  40. package/dist/tools/dashboard.js.map +1 -1
  41. package/dist/tools/system.d.ts +6 -0
  42. package/dist/tools/system.d.ts.map +1 -1
  43. package/dist/tools/system.js +17 -3
  44. package/dist/tools/system.js.map +1 -1
  45. package/package.json +12 -2
  46. package/src/adapters/addon/addon.adapter.ts +116 -10
  47. package/src/adapters/ha/ha-rest.adapter.ts +6 -2
  48. package/src/cli/skills.ts +575 -0
  49. package/src/core/config.ts +8 -0
  50. package/src/domain/ports/addon-client.port.ts +81 -2
  51. package/src/domain/ports/ha-client.port.ts +1 -1
  52. package/src/index.ts +31 -3
  53. package/src/tools/agent.ts +100 -0
  54. package/src/tools/audit.ts +77 -0
  55. package/src/tools/automation.ts +6 -1
  56. package/src/tools/dashboard.ts +9 -1
  57. package/src/tools/system.ts +19 -5
  58. package/tests/clients.test.ts +181 -2
  59. package/tests/e2e-smoke.test.ts +4 -1
  60. package/tests/tools.test.ts +49 -2
@@ -1,8 +1,10 @@
1
- import { AddonHealthResult, FileReadResult, FileWriteResult, IAddonClient } from "../../domain/ports/addon-client.port.js";
1
+ import { AddonHealthResult, AuditQueryParams, AuditQueryResponse, FileReadResult, FileWriteResult, IAddonClient, IssueTokenParams, IssueTokenResponse, PoliciesResponse } from "../../domain/ports/addon-client.port.js";
2
2
  import { BackupRestoreResult, LogsTailResult, SnapshotInfo } from "../../domain/models/system.js";
3
3
  export interface AddonClientOptions {
4
4
  addonUrl: string;
5
5
  addonKey: string;
6
+ agentKey?: string;
7
+ agentId?: string;
6
8
  timeoutMs?: number;
7
9
  }
8
10
  export declare class AddonAdapter implements IAddonClient {
@@ -13,10 +15,19 @@ export declare class AddonAdapter implements IAddonClient {
13
15
  writeFile(path: string, content: string, options?: {
14
16
  validateYaml?: boolean;
15
17
  label?: string;
18
+ rationale?: string;
16
19
  }): Promise<FileWriteResult>;
17
20
  listSnapshots(): Promise<SnapshotInfo[]>;
18
- restoreSnapshot(snapshotId: string): Promise<BackupRestoreResult>;
21
+ restoreSnapshot(snapshotId: string, options?: {
22
+ rationale?: string;
23
+ }): Promise<BackupRestoreResult>;
19
24
  getLogs(lines?: number): Promise<LogsTailResult>;
25
+ getAuditLogs(params?: AuditQueryParams): Promise<AuditQueryResponse>;
26
+ issueAgentToken(params: IssueTokenParams): Promise<IssueTokenResponse>;
27
+ getAgentPolicies(): Promise<PoliciesResponse>;
28
+ authorize(tool: string, target?: string, domain?: string, service?: string, options?: {
29
+ rationale?: string;
30
+ }): Promise<void>;
20
31
  }
21
32
  export { AddonAdapter as AddonClient };
22
33
  //# sourceMappingURL=addon.adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addon.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/addon/addon.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAa,YAAW,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA0B7D,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IASzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS/C,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACvD,OAAO,CAAC,eAAe,CAAC;IAcrB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IASxC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWjE,OAAO,CAAC,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,cAAc,CAAC;CAQ5D;AAGD,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"addon.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/addon/addon.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAa,YAAW,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA0B7D,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IASzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS/C,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3E,OAAO,CAAC,eAAe,CAAC;IAsBrB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IASxC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAenG,OAAO,CAAC,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IASrD,YAAY,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwBxE,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBtE,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS7C,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,IAAI,CAAC;CAyBjB;AAGD,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC"}
@@ -12,7 +12,7 @@ export class AddonAdapter {
12
12
  }
13
13
  else {
14
14
  url = options.addonUrl;
15
- key = options.addonKey;
15
+ key = options.agentKey || options.addonKey;
16
16
  timeout = options.timeoutMs ?? 10000;
17
17
  }
18
18
  const cleanUrl = url.replace(/\/+$/, "");
@@ -45,12 +45,16 @@ export class AddonAdapter {
45
45
  }
46
46
  async writeFile(path, content, options = {}) {
47
47
  try {
48
+ const headers = {};
49
+ if (options.rationale) {
50
+ headers["X-Agent-Rationale"] = options.rationale;
51
+ }
48
52
  const resp = await this.client.post("/api/v1/file/write", {
49
53
  path,
50
54
  content,
51
55
  validate_yaml: options.validateYaml ?? true,
52
56
  label: options.label ?? "",
53
- });
57
+ }, { headers });
54
58
  return resp.data;
55
59
  }
56
60
  catch (err) {
@@ -66,11 +70,15 @@ export class AddonAdapter {
66
70
  throw new ClientError(`Addon listSnapshots failed: ${err.message}`, err.response?.status);
67
71
  }
68
72
  }
69
- async restoreSnapshot(snapshotId) {
73
+ async restoreSnapshot(snapshotId, options) {
70
74
  try {
75
+ const headers = {};
76
+ if (options?.rationale) {
77
+ headers["X-Agent-Rationale"] = options.rationale;
78
+ }
71
79
  const resp = await this.client.post("/api/v1/backup/restore", {
72
80
  snapshot_id: snapshotId,
73
- });
81
+ }, { headers });
74
82
  return resp.data;
75
83
  }
76
84
  catch (err) {
@@ -86,6 +94,80 @@ export class AddonAdapter {
86
94
  throw new ClientError(`Addon getLogs failed: ${err.message}`, err.response?.status);
87
95
  }
88
96
  }
97
+ async getAuditLogs(params = {}) {
98
+ try {
99
+ const queryParams = {};
100
+ if (params.agent_id !== undefined)
101
+ queryParams.agent_id = params.agent_id;
102
+ if (params.role !== undefined)
103
+ queryParams.role = params.role;
104
+ if (params.status !== undefined)
105
+ queryParams.status = params.status;
106
+ if (params.limit !== undefined)
107
+ queryParams.limit = params.limit;
108
+ if (params.since !== undefined)
109
+ queryParams.since = params.since;
110
+ const headers = {};
111
+ if (params.rationale) {
112
+ headers["X-Agent-Rationale"] = params.rationale;
113
+ }
114
+ const resp = await this.client.get("/api/v1/audit/logs", {
115
+ params: queryParams,
116
+ headers,
117
+ });
118
+ return resp.data;
119
+ }
120
+ catch (err) {
121
+ throw new ClientError(`Addon getAuditLogs failed: ${err.message}`, err.response?.status);
122
+ }
123
+ }
124
+ async issueAgentToken(params) {
125
+ try {
126
+ const headers = {};
127
+ if (params.rationale) {
128
+ headers["X-Agent-Rationale"] = params.rationale;
129
+ }
130
+ const resp = await this.client.post("/api/v1/agent/token", {
131
+ agent_id: params.agent_id,
132
+ role: params.role,
133
+ ttl_minutes: params.ttl_minutes ?? 60,
134
+ }, { headers });
135
+ return resp.data;
136
+ }
137
+ catch (err) {
138
+ throw new ClientError(`Addon issueAgentToken failed: ${err.message}`, err.response?.status);
139
+ }
140
+ }
141
+ async getAgentPolicies() {
142
+ try {
143
+ const resp = await this.client.get("/api/v1/agent/policies");
144
+ return resp.data;
145
+ }
146
+ catch (err) {
147
+ throw new ClientError(`Addon getAgentPolicies failed: ${err.message}`, err.response?.status);
148
+ }
149
+ }
150
+ async authorize(tool, target, domain, service, options) {
151
+ try {
152
+ const headers = {};
153
+ if (options?.rationale) {
154
+ headers["X-Agent-Rationale"] = options.rationale;
155
+ }
156
+ await this.client.post("/api/v1/audit/authorize", {
157
+ tool,
158
+ target,
159
+ domain,
160
+ service,
161
+ }, { headers });
162
+ }
163
+ catch (err) {
164
+ let errStr = err.message;
165
+ if (err.response?.data?.detail?.error) {
166
+ errStr = err.response.data.detail.error;
167
+ }
168
+ throw new Error(`Authorization denied for ${tool}: ${errStr}`);
169
+ }
170
+ }
89
171
  }
90
172
  // Backward-compatible alias
91
173
  export { AddonAdapter as AddonClient };
@@ -1 +1 @@
1
- {"version":3,"file":"addon.adapter.js","sourceRoot":"","sources":["../../../src/adapters/addon/addon.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addon.adapter.js","sourceRoot":"","sources":["../../../src/adapters/addon/addon.adapter.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export declare class HARestAdapter implements IHARestClient {
12
12
  message: string;
13
13
  }>;
14
14
  getStates(): Promise<HAEntityState[]>;
15
- callService(domain: string, service: string, serviceData?: Record<string, any>): Promise<any>;
15
+ callService(domain: string, service: string, serviceData?: Record<string, any>, options?: {
16
+ rationale?: string;
17
+ }): Promise<any>;
16
18
  getSupervisorLogs(linesCount?: number): Promise<string[]>;
17
19
  }
18
20
  export { HARestAdapter as HARestClient };
@@ -1 +1 @@
1
- {"version":3,"file":"ha-rest.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/ha/ha-rest.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IA0BvD,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IASxC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IASrC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IASjG,iBAAiB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAW7D;AAGD,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"ha-rest.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/ha/ha-rest.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IA0BvD,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IASxC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IASrC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAanI,iBAAiB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAW7D;AAGD,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC"}
@@ -43,9 +43,13 @@ export class HARestAdapter {
43
43
  throw new ClientError(`Failed to fetch HA states: ${err.message}`, err.response?.status);
44
44
  }
45
45
  }
46
- async callService(domain, service, serviceData = {}) {
46
+ async callService(domain, service, serviceData = {}, options) {
47
47
  try {
48
- const resp = await this.client.post(`/api/services/${domain}/${service}`, serviceData);
48
+ const headers = {};
49
+ if (options?.rationale) {
50
+ headers["X-Agent-Rationale"] = options.rationale;
51
+ }
52
+ const resp = await this.client.post(`/api/services/${domain}/${service}`, serviceData, { headers });
49
53
  return resp.data;
50
54
  }
51
55
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"ha-rest.adapter.js","sourceRoot":"","sources":["../../../src/adapters/ha/ha-rest.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ha-rest.adapter.js","sourceRoot":"","sources":["../../../src/adapters/ha/ha-rest.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface SkillDefinition {
2
+ name: string;
3
+ description: string;
4
+ content: string;
5
+ }
6
+ export declare const EMBEDDED_SKILLS: Record<string, string>;
7
+ export declare function getTargetSkillsDirectories(customDir?: string): string[];
8
+ export declare function syncSkills(customDir?: string, silent?: boolean): {
9
+ installedCount: number;
10
+ targetDirs: string[];
11
+ };
12
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwelD,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAsCvE;AAED,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAkC/G"}