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.
- package/dist/adapters/addon/addon.adapter.d.ts +13 -2
- package/dist/adapters/addon/addon.adapter.d.ts.map +1 -1
- package/dist/adapters/addon/addon.adapter.js +86 -4
- package/dist/adapters/addon/addon.adapter.js.map +1 -1
- package/dist/adapters/ha/ha-rest.adapter.d.ts +3 -1
- package/dist/adapters/ha/ha-rest.adapter.d.ts.map +1 -1
- package/dist/adapters/ha/ha-rest.adapter.js +6 -2
- package/dist/adapters/ha/ha-rest.adapter.js.map +1 -1
- package/dist/cli/skills.d.ts +12 -0
- package/dist/cli/skills.d.ts.map +1 -0
- package/dist/cli/skills.js +556 -0
- package/dist/cli/skills.js.map +1 -0
- package/dist/core/config.d.ts +8 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +6 -0
- package/dist/core/config.js.map +1 -1
- package/dist/domain/ports/addon-client.port.d.ts +71 -1
- package/dist/domain/ports/addon-client.port.d.ts.map +1 -1
- package/dist/domain/ports/ha-client.port.d.ts +3 -1
- package/dist/domain/ports/ha-client.port.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -3
- package/dist/index.js.map +1 -1
- package/dist/tools/agent.d.ts +18 -0
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +78 -0
- package/dist/tools/agent.js.map +1 -0
- package/dist/tools/audit.d.ts +21 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +60 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/automation.d.ts +2 -0
- package/dist/tools/automation.d.ts.map +1 -1
- package/dist/tools/automation.js +5 -0
- package/dist/tools/automation.js.map +1 -1
- package/dist/tools/dashboard.d.ts +2 -0
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +8 -0
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/system.d.ts +6 -0
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +17 -3
- package/dist/tools/system.js.map +1 -1
- package/package.json +12 -2
- package/src/adapters/addon/addon.adapter.ts +116 -10
- package/src/adapters/ha/ha-rest.adapter.ts +6 -2
- package/src/cli/skills.ts +575 -0
- package/src/core/config.ts +8 -0
- package/src/domain/ports/addon-client.port.ts +81 -2
- package/src/domain/ports/ha-client.port.ts +1 -1
- package/src/index.ts +31 -3
- package/src/tools/agent.ts +100 -0
- package/src/tools/audit.ts +77 -0
- package/src/tools/automation.ts +6 -1
- package/src/tools/dashboard.ts +9 -1
- package/src/tools/system.ts +19 -5
- package/tests/clients.test.ts +181 -2
- package/tests/e2e-smoke.test.ts +4 -1
- 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
|
|
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,
|
|
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":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
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
|
|
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;
|
|
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
|
|
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":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQnD,MAAM,OAAO,aAAa;IACP,MAAM,CAAgB;IAEvC,YAAY,OAA+B,EAAE,OAAgB;QAC3D,IAAI,GAAW,CAAC;QAChB,IAAI,KAAa,CAAC;QAClB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,GAAG,OAAO,CAAC;YACd,KAAK,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ;YACjB,OAAO;YACP,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAsB,OAAO,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAkB,aAAa,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,cAAmC,EAAE;
|
|
1
|
+
{"version":3,"file":"ha-rest.adapter.js","sourceRoot":"","sources":["../../../src/adapters/ha/ha-rest.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQnD,MAAM,OAAO,aAAa;IACP,MAAM,CAAgB;IAEvC,YAAY,OAA+B,EAAE,OAAgB;QAC3D,IAAI,GAAW,CAAC;QAChB,IAAI,KAAa,CAAC;QAClB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,GAAG,OAAO,CAAC;YACd,KAAK,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ;YACjB,OAAO;YACP,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAsB,OAAO,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAkB,aAAa,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,cAAmC,EAAE,EAAE,OAAgC;QACxH,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YACnD,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,IAAI,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACpG,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,0BAA0B,MAAM,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAU,GAAG,GAAG;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,6BAA6B,EAAE;gBACxE,YAAY,EAAE,MAAM;aACrB,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,4BAA4B;AAC5B,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -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"}
|