@pellux/goodvibes-sdk 0.25.11 → 0.25.12

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 (39) hide show
  1. package/dist/_internal/contracts/artifacts/operator-contract.json +1 -1
  2. package/dist/_internal/contracts/generated/foundation-metadata.d.ts +1 -1
  3. package/dist/_internal/contracts/generated/foundation-metadata.js +1 -1
  4. package/dist/_internal/contracts/generated/operator-contract.js +1 -1
  5. package/dist/_internal/platform/adapters/homeassistant/index.d.ts.map +1 -1
  6. package/dist/_internal/platform/adapters/homeassistant/index.js +9 -1
  7. package/dist/_internal/platform/channels/builtin/accounts.d.ts.map +1 -1
  8. package/dist/_internal/platform/channels/builtin/accounts.js +1 -0
  9. package/dist/_internal/platform/channels/builtin/homeassistant.d.ts.map +1 -1
  10. package/dist/_internal/platform/channels/builtin/homeassistant.js +11 -0
  11. package/dist/_internal/platform/channels/builtin/rendering.d.ts.map +1 -1
  12. package/dist/_internal/platform/channels/builtin/rendering.js +7 -0
  13. package/dist/_internal/platform/channels/builtin/setup-schema.d.ts.map +1 -1
  14. package/dist/_internal/platform/channels/builtin/setup-schema.js +7 -0
  15. package/dist/_internal/platform/channels/delivery/strategies-core.d.ts.map +1 -1
  16. package/dist/_internal/platform/channels/delivery/strategies-core.js +19 -0
  17. package/dist/_internal/platform/channels/delivery/types.d.ts +2 -0
  18. package/dist/_internal/platform/channels/delivery/types.d.ts.map +1 -1
  19. package/dist/_internal/platform/config/schema-domain-surfaces.d.ts +1 -0
  20. package/dist/_internal/platform/config/schema-domain-surfaces.d.ts.map +1 -1
  21. package/dist/_internal/platform/config/schema-domain-surfaces.js +8 -0
  22. package/dist/_internal/platform/config/schema-types.d.ts +3 -2
  23. package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
  24. package/dist/_internal/platform/control-plane/session-types.d.ts +2 -1
  25. package/dist/_internal/platform/control-plane/session-types.d.ts.map +1 -1
  26. package/dist/_internal/platform/daemon/http/homeassistant-routes.d.ts +40 -0
  27. package/dist/_internal/platform/daemon/http/homeassistant-routes.d.ts.map +1 -0
  28. package/dist/_internal/platform/daemon/http/homeassistant-routes.js +468 -0
  29. package/dist/_internal/platform/daemon/http/router.d.ts +2 -0
  30. package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
  31. package/dist/_internal/platform/daemon/http/router.js +21 -0
  32. package/dist/_internal/platform/daemon/surface-delivery.d.ts.map +1 -1
  33. package/dist/_internal/platform/daemon/surface-delivery.js +14 -0
  34. package/dist/_internal/platform/daemon/types.d.ts +1 -1
  35. package/dist/_internal/platform/daemon/types.d.ts.map +1 -1
  36. package/dist/_internal/platform/integrations/homeassistant.d.ts +4 -0
  37. package/dist/_internal/platform/integrations/homeassistant.d.ts.map +1 -1
  38. package/dist/_internal/platform/version.js +1 -1
  39. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/session-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/session-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { AutomationRouteBinding } from '../../automation/routes.js';
2
+ import type { RouteBindingManager } from '../../channels/index.js';
3
+ import type { ConfigManager } from '../../config/manager.js';
4
+ import type { SharedSessionBroker } from '../../control-plane/index.js';
5
+ import type { AgentManager, AgentRecord } from '../../tools/agent/index.js';
6
+ type JsonRecord = Record<string, unknown>;
7
+ interface HomeAssistantRouteContext {
8
+ readonly configManager: Pick<ConfigManager, 'get'>;
9
+ readonly routeBindings: Pick<RouteBindingManager, 'start' | 'upsertBinding' | 'patchBinding'>;
10
+ readonly sessionBroker: Pick<SharedSessionBroker, 'start' | 'createSession' | 'submitMessage' | 'bindAgent' | 'getSession' | 'closeSession'>;
11
+ readonly agentManager: Pick<AgentManager, 'getStatus' | 'cancel'>;
12
+ readonly parseJsonBody: (req: Request) => Promise<JsonRecord | Response>;
13
+ readonly trySpawnAgent: (input: Parameters<AgentManager['spawn']>[0], logLabel?: string, sessionId?: string) => AgentRecord | Response;
14
+ readonly queueSurfaceReplyFromBinding: (binding: AutomationRouteBinding | undefined, input: {
15
+ readonly agentId: string;
16
+ readonly task: string;
17
+ readonly sessionId?: string;
18
+ }) => void;
19
+ }
20
+ export declare class HomeAssistantConversationRoutes {
21
+ private readonly context;
22
+ private readonly messageIndex;
23
+ constructor(context: HomeAssistantRouteContext);
24
+ handle(req: Request): Promise<Response | null>;
25
+ private describeHealth;
26
+ private submitConversation;
27
+ private respondToSubmit;
28
+ private streamConversation;
29
+ private cancelConversation;
30
+ private parseInput;
31
+ private upsertBinding;
32
+ private resolveRemoteSession;
33
+ private buildRouting;
34
+ private waitForAgent;
35
+ private errorFromSpawnResponse;
36
+ private indexMessage;
37
+ private readRemoteSessionTtlMs;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=homeassistant-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homeassistant-routes.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/homeassistant-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,8BAA8B,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAM5E,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAqC1C,UAAU,yBAAyB;IACjC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;IAC9F,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC1B,mBAAmB,EACnB,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAC1F,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,aAAa,EAAE,CACtB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,KACf,WAAW,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,4BAA4B,EAAE,CACrC,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAC3C,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACpF,IAAI,CAAC;CACX;AAsBD,qBAAa,+BAA+B;IAG9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;gBAEhD,OAAO,EAAE,yBAAyB;IAEzD,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6BpD,OAAO,CAAC,cAAc;YA0BR,kBAAkB;IAsHhC,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,UAAU;YAuCJ,aAAa;YAoBb,oBAAoB;IA+ClC,OAAO,CAAC,YAAY;YASN,YAAY;IAa1B,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,sBAAsB;CAQ/B"}
@@ -0,0 +1,468 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { HOME_ASSISTANT_SURFACE } from '../../channels/builtin/homeassistant.js';
3
+ const DEFAULT_WAIT_TIMEOUT_MS = 120_000;
4
+ const MAX_WAIT_TIMEOUT_MS = 10 * 60_000;
5
+ const DEFAULT_REMOTE_SESSION_TTL_MS = 20 * 60_000;
6
+ export class HomeAssistantConversationRoutes {
7
+ context;
8
+ messageIndex = new Map();
9
+ constructor(context) {
10
+ this.context = context;
11
+ }
12
+ async handle(req) {
13
+ const url = new URL(req.url);
14
+ if (!url.pathname.startsWith('/api/homeassistant'))
15
+ return null;
16
+ if ((url.pathname === '/api/homeassistant' || url.pathname === '/api/homeassistant/health') && req.method === 'GET') {
17
+ return Response.json(this.describeHealth());
18
+ }
19
+ if (url.pathname === '/api/homeassistant/conversation' && req.method === 'POST') {
20
+ const body = await this.context.parseJsonBody(req);
21
+ if (body instanceof Response)
22
+ return body;
23
+ return this.respondToSubmit(await this.submitConversation(body, req.signal));
24
+ }
25
+ if (url.pathname === '/api/homeassistant/conversation/stream' && req.method === 'POST') {
26
+ const body = await this.context.parseJsonBody(req);
27
+ if (body instanceof Response)
28
+ return body;
29
+ return this.streamConversation(body, req.signal);
30
+ }
31
+ if (url.pathname === '/api/homeassistant/conversation/cancel' && req.method === 'POST') {
32
+ const body = await this.context.parseJsonBody(req);
33
+ if (body instanceof Response)
34
+ return body;
35
+ return this.cancelConversation(body);
36
+ }
37
+ return null;
38
+ }
39
+ describeHealth() {
40
+ const enabled = Boolean(this.context.configManager.get('surfaces.homeassistant.enabled'));
41
+ return {
42
+ ok: enabled,
43
+ surface: HOME_ASSISTANT_SURFACE,
44
+ enabled,
45
+ defaultConversationId: String(this.context.configManager.get('surfaces.homeassistant.defaultConversationId') || 'goodvibes'),
46
+ eventType: String(this.context.configManager.get('surfaces.homeassistant.eventType') || 'goodvibes_message'),
47
+ remoteSessionTtlMs: this.readRemoteSessionTtlMs({}),
48
+ endpoints: {
49
+ conversation: '/api/homeassistant/conversation',
50
+ stream: '/api/homeassistant/conversation/stream',
51
+ cancel: '/api/homeassistant/conversation/cancel',
52
+ webhook: '/webhook/homeassistant',
53
+ },
54
+ capabilities: [
55
+ 'conversation-submit-wait',
56
+ 'conversation-stream',
57
+ 'conversation-cancel',
58
+ 'stable-correlation',
59
+ 'remote-session-ttl',
60
+ 'homeassistant-event-delivery',
61
+ ],
62
+ };
63
+ }
64
+ async submitConversation(body, signal) {
65
+ if (!Boolean(this.context.configManager.get('surfaces.homeassistant.enabled'))) {
66
+ return {
67
+ ok: false,
68
+ acknowledged: true,
69
+ messageId: '',
70
+ conversationId: '',
71
+ sessionId: '',
72
+ routeId: '',
73
+ mode: 'rejected',
74
+ newSession: false,
75
+ sessionExpired: false,
76
+ status: 'rejected',
77
+ error: 'Home Assistant surface is disabled.',
78
+ };
79
+ }
80
+ const input = this.parseInput(body);
81
+ if (!input.text) {
82
+ return {
83
+ ok: false,
84
+ acknowledged: true,
85
+ messageId: input.messageId,
86
+ conversationId: input.conversationId,
87
+ sessionId: '',
88
+ routeId: '',
89
+ mode: 'rejected',
90
+ newSession: false,
91
+ sessionExpired: false,
92
+ status: 'rejected',
93
+ error: 'Missing Home Assistant conversation message.',
94
+ };
95
+ }
96
+ await this.context.routeBindings.start();
97
+ await this.context.sessionBroker.start();
98
+ const binding = await this.upsertBinding(input);
99
+ const sessionResolution = await this.resolveRemoteSession(binding, input);
100
+ const routing = this.buildRouting(input);
101
+ const submission = await this.context.sessionBroker.submitMessage({
102
+ sessionId: sessionResolution.session.id,
103
+ routeId: binding.id,
104
+ surfaceKind: HOME_ASSISTANT_SURFACE,
105
+ surfaceId: input.surfaceId,
106
+ externalId: input.conversationId,
107
+ ...(input.threadId ? { threadId: input.threadId } : {}),
108
+ ...(input.userId ? { userId: input.userId } : {}),
109
+ ...(input.displayName ? { displayName: input.displayName } : {}),
110
+ title: input.title,
111
+ body: input.text,
112
+ metadata: {
113
+ source: 'homeassistant',
114
+ messageId: input.messageId,
115
+ conversationId: input.conversationId,
116
+ remoteSessionTtlMs: input.remoteSessionTtlMs,
117
+ ...(input.context ? { homeAssistantContext: input.context } : {}),
118
+ },
119
+ ...(routing ? { routing } : {}),
120
+ });
121
+ let agentId = submission.activeAgentId;
122
+ if (submission.mode === 'spawn') {
123
+ const spawnResult = this.context.trySpawnAgent({
124
+ mode: 'spawn',
125
+ task: submission.task,
126
+ ...(input.modelId ? { model: input.modelId } : {}),
127
+ ...(input.providerId ? { provider: input.providerId } : {}),
128
+ ...(input.tools?.length ? { tools: [...input.tools] } : {}),
129
+ context: `homeassistant:${input.conversationId}`,
130
+ }, 'HomeAssistantConversationRoutes.submitConversation', submission.session.id);
131
+ if (spawnResult instanceof Response) {
132
+ return this.errorFromSpawnResponse(input, sessionResolution, binding, spawnResult);
133
+ }
134
+ agentId = spawnResult.id;
135
+ await this.context.sessionBroker.bindAgent(submission.session.id, spawnResult.id);
136
+ if (input.publishEvent) {
137
+ this.context.queueSurfaceReplyFromBinding(binding, {
138
+ agentId: spawnResult.id,
139
+ task: input.text,
140
+ sessionId: submission.session.id,
141
+ });
142
+ }
143
+ }
144
+ this.indexMessage(input, submission.session.id, binding.id, agentId);
145
+ const base = {
146
+ ok: true,
147
+ acknowledged: true,
148
+ messageId: input.messageId,
149
+ conversationId: input.conversationId,
150
+ sessionId: submission.session.id,
151
+ routeId: binding.id,
152
+ ...(agentId ? { agentId } : {}),
153
+ mode: submission.mode,
154
+ newSession: sessionResolution.newSession,
155
+ sessionExpired: sessionResolution.sessionExpired,
156
+ };
157
+ if (submission.mode === 'rejected') {
158
+ return { ...base, ok: false, status: 'rejected', error: 'Home Assistant conversation was rejected.' };
159
+ }
160
+ if (!agentId || !input.wait) {
161
+ return { ...base, status: agentId ? 'running' : 'queued' };
162
+ }
163
+ const finalRecord = await this.waitForAgent(agentId, input.waitTimeoutMs, signal);
164
+ if (!finalRecord) {
165
+ return { ...base, status: 'timeout', timeoutMs: input.waitTimeoutMs };
166
+ }
167
+ return {
168
+ ...base,
169
+ status: normalizeAgentStatus(finalRecord.status),
170
+ ok: finalRecord.status === 'completed',
171
+ assistant: buildAssistantResult(finalRecord),
172
+ ...(finalRecord.status !== 'completed' ? { error: finalRecord.error ?? finalRecord.status } : {}),
173
+ };
174
+ }
175
+ respondToSubmit(result) {
176
+ if (result.error === 'Home Assistant surface is disabled.')
177
+ return Response.json(result, { status: 503 });
178
+ if (result.status === 'rejected')
179
+ return Response.json(result, { status: result.ok ? 202 : 400 });
180
+ if (result.status === 'timeout')
181
+ return Response.json(result, { status: 202 });
182
+ if (result.status === 'failed')
183
+ return Response.json(result, { status: 500 });
184
+ if (result.status === 'cancelled')
185
+ return Response.json(result, { status: 409 });
186
+ return Response.json(result, { status: result.status === 'completed' ? 200 : 202 });
187
+ }
188
+ streamConversation(body, signal) {
189
+ const encoder = new TextEncoder();
190
+ const stream = new ReadableStream({
191
+ start: async (controller) => {
192
+ const send = (event, data) => {
193
+ controller.enqueue(encoder.encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`));
194
+ };
195
+ try {
196
+ const result = await this.submitConversation({ ...body, wait: false }, signal);
197
+ send('ack', result);
198
+ if (!result.agentId) {
199
+ send('final', result);
200
+ controller.close();
201
+ return;
202
+ }
203
+ let lastProgress = '';
204
+ for (;;) {
205
+ if (signal.aborted)
206
+ return;
207
+ const record = this.context.agentManager.getStatus(result.agentId);
208
+ if (!record) {
209
+ send('error', { ...result, ok: false, error: 'Unknown agent.' });
210
+ controller.close();
211
+ return;
212
+ }
213
+ const progress = record.streamingContent ?? record.progress ?? '';
214
+ if (progress && progress !== lastProgress) {
215
+ lastProgress = progress;
216
+ send('progress', { messageId: result.messageId, agentId: result.agentId, text: progress });
217
+ }
218
+ if (record.status === 'completed' || record.status === 'failed' || record.status === 'cancelled') {
219
+ send('final', {
220
+ ...result,
221
+ ok: record.status === 'completed',
222
+ status: normalizeAgentStatus(record.status),
223
+ assistant: buildAssistantResult(record),
224
+ ...(record.status !== 'completed' ? { error: record.error ?? record.status } : {}),
225
+ });
226
+ controller.close();
227
+ return;
228
+ }
229
+ await delay(250, signal);
230
+ }
231
+ }
232
+ catch (error) {
233
+ if (!signal.aborted) {
234
+ send('error', { ok: false, error: error instanceof Error ? error.message : String(error) });
235
+ controller.close();
236
+ }
237
+ }
238
+ },
239
+ cancel: () => undefined,
240
+ });
241
+ return new Response(stream, {
242
+ headers: {
243
+ 'Content-Type': 'text/event-stream; charset=utf-8',
244
+ 'Cache-Control': 'no-cache, no-transform',
245
+ Connection: 'keep-alive',
246
+ },
247
+ });
248
+ }
249
+ cancelConversation(body) {
250
+ const agentId = readString(body.agentId)
251
+ ?? (readString(body.messageId ?? body.message_id)
252
+ ? this.messageIndex.get(readString(body.messageId ?? body.message_id))?.agentId
253
+ : undefined);
254
+ if (!agentId) {
255
+ return Response.json({ ok: false, error: 'agentId or known messageId is required.' }, { status: 400 });
256
+ }
257
+ const cancelled = this.context.agentManager.cancel(agentId);
258
+ return cancelled
259
+ ? Response.json({ ok: true, agentId, status: 'cancelled' })
260
+ : Response.json({ ok: false, agentId, error: 'Unknown or already finished agent.' }, { status: 404 });
261
+ }
262
+ parseInput(body) {
263
+ const threadId = readString(body.threadId ?? body.thread_id);
264
+ const userId = readString(body.userId ?? body.user_id);
265
+ const displayName = readString(body.displayName ?? body.userName ?? body.user_name);
266
+ const providerId = readString(body.providerId ?? body.provider);
267
+ const modelId = readString(body.modelId ?? body.model);
268
+ const tools = readStringList(body.tools);
269
+ const haContext = readRecord(body.context);
270
+ const conversationId = readString(body.conversationId ?? body.conversation_id)
271
+ ?? threadId
272
+ ?? readString(body.deviceId ?? body.device_id)
273
+ ?? String(this.context.configManager.get('surfaces.homeassistant.defaultConversationId') || 'goodvibes');
274
+ const surfaceId = readString(body.surfaceId ?? body.instanceId ?? body.instance_id)
275
+ ?? readString(body.hassInstanceId ?? body.hass_instance_id)
276
+ ?? 'homeassistant';
277
+ const channelId = readString(body.areaId ?? body.area_id)
278
+ ?? readString(body.entityId ?? body.entity_id)
279
+ ?? conversationId;
280
+ return {
281
+ text: readString(body.body ?? body.message ?? body.text ?? body.prompt ?? body.task) ?? '',
282
+ messageId: readString(body.messageId ?? body.message_id) ?? `ha-${randomUUID()}`,
283
+ conversationId,
284
+ surfaceId,
285
+ channelId,
286
+ ...(threadId ? { threadId } : {}),
287
+ ...(userId ? { userId } : {}),
288
+ ...(displayName ? { displayName } : {}),
289
+ title: readString(body.title) ?? 'Home Assistant',
290
+ ...(providerId ? { providerId } : {}),
291
+ ...(modelId ? { modelId } : {}),
292
+ ...(tools.length ? { tools } : {}),
293
+ ...(haContext ? { context: haContext } : {}),
294
+ publishEvent: body.publishEvent === true,
295
+ wait: body.wait !== false,
296
+ waitTimeoutMs: clampNumber(body.timeoutMs ?? body.waitTimeoutMs, DEFAULT_WAIT_TIMEOUT_MS, 1_000, MAX_WAIT_TIMEOUT_MS),
297
+ remoteSessionTtlMs: this.readRemoteSessionTtlMs(body),
298
+ };
299
+ }
300
+ async upsertBinding(input) {
301
+ return this.context.routeBindings.upsertBinding({
302
+ kind: input.threadId ? 'thread' : 'channel',
303
+ surfaceKind: HOME_ASSISTANT_SURFACE,
304
+ surfaceId: input.surfaceId,
305
+ externalId: input.conversationId,
306
+ ...(input.threadId ? { threadId: input.threadId } : {}),
307
+ channelId: input.channelId,
308
+ title: input.title,
309
+ metadata: {
310
+ source: 'homeassistant',
311
+ directoryKind: input.threadId ? 'thread' : 'user',
312
+ messageId: input.messageId,
313
+ conversationId: input.conversationId,
314
+ remoteSessionTtlMs: input.remoteSessionTtlMs,
315
+ ...(input.context ? { homeAssistantContext: input.context } : {}),
316
+ },
317
+ });
318
+ }
319
+ async resolveRemoteSession(binding, input) {
320
+ const now = Date.now();
321
+ const current = binding.sessionId ? this.context.sessionBroker.getSession(binding.sessionId) : null;
322
+ if (current && current.status !== 'closed' && !isExpiredSession(current, input.remoteSessionTtlMs, now)) {
323
+ return { session: current, newSession: false, sessionExpired: false };
324
+ }
325
+ if (current && current.status !== 'closed' && !current.activeAgentId) {
326
+ await this.context.sessionBroker.closeSession(current.id);
327
+ }
328
+ const session = await this.context.sessionBroker.createSession({
329
+ title: input.title,
330
+ metadata: {
331
+ source: 'homeassistant',
332
+ conversationId: input.conversationId,
333
+ remote: true,
334
+ remoteSessionTtlMs: input.remoteSessionTtlMs,
335
+ },
336
+ routeBinding: binding,
337
+ participant: {
338
+ surfaceKind: HOME_ASSISTANT_SURFACE,
339
+ surfaceId: input.surfaceId,
340
+ externalId: input.conversationId,
341
+ ...(input.userId ? { userId: input.userId } : {}),
342
+ ...(input.displayName ? { displayName: input.displayName } : {}),
343
+ routeId: binding.id,
344
+ lastSeenAt: now,
345
+ },
346
+ kind: 'homeassistant-remote',
347
+ });
348
+ await this.context.routeBindings.patchBinding(binding.id, {
349
+ sessionId: session.id,
350
+ metadata: {
351
+ homeAssistantSessionId: session.id,
352
+ homeAssistantSessionCreatedAt: now,
353
+ remoteSessionTtlMs: input.remoteSessionTtlMs,
354
+ },
355
+ });
356
+ return {
357
+ session,
358
+ newSession: true,
359
+ sessionExpired: Boolean(current),
360
+ };
361
+ }
362
+ buildRouting(input) {
363
+ if (!input.providerId && !input.modelId && !input.tools?.length)
364
+ return undefined;
365
+ return {
366
+ ...(input.providerId ? { providerId: input.providerId } : {}),
367
+ ...(input.modelId ? { modelId: input.modelId } : {}),
368
+ ...(input.tools?.length ? { tools: input.tools } : {}),
369
+ };
370
+ }
371
+ async waitForAgent(agentId, timeoutMs, signal) {
372
+ const startedAt = Date.now();
373
+ while (Date.now() - startedAt < timeoutMs) {
374
+ if (signal.aborted)
375
+ return null;
376
+ const record = this.context.agentManager.getStatus(agentId);
377
+ if (record && (record.status === 'completed' || record.status === 'failed' || record.status === 'cancelled')) {
378
+ return record;
379
+ }
380
+ await delay(200, signal);
381
+ }
382
+ return null;
383
+ }
384
+ errorFromSpawnResponse(input, session, binding, response) {
385
+ return {
386
+ ok: false,
387
+ acknowledged: true,
388
+ messageId: input.messageId,
389
+ conversationId: input.conversationId,
390
+ sessionId: session.session.id,
391
+ routeId: binding.id,
392
+ mode: 'rejected',
393
+ newSession: session.newSession,
394
+ sessionExpired: session.sessionExpired,
395
+ status: 'rejected',
396
+ error: `Agent spawn failed with HTTP ${response.status}.`,
397
+ };
398
+ }
399
+ indexMessage(input, sessionId, routeId, agentId) {
400
+ this.messageIndex.set(input.messageId, {
401
+ messageId: input.messageId,
402
+ ...(agentId ? { agentId } : {}),
403
+ sessionId,
404
+ routeId,
405
+ conversationId: input.conversationId,
406
+ createdAt: Date.now(),
407
+ });
408
+ if (this.messageIndex.size > 500) {
409
+ const oldest = [...this.messageIndex.values()].sort((a, b) => a.createdAt - b.createdAt).slice(0, 100);
410
+ for (const entry of oldest)
411
+ this.messageIndex.delete(entry.messageId);
412
+ }
413
+ }
414
+ readRemoteSessionTtlMs(body) {
415
+ return clampNumber(body.remoteSessionTtlMs, Number(this.context.configManager.get('surfaces.homeassistant.remoteSessionTtlMs') ?? DEFAULT_REMOTE_SESSION_TTL_MS), 60_000, 24 * 60 * 60_000);
416
+ }
417
+ }
418
+ function isExpiredSession(session, ttlMs, now) {
419
+ if (session.activeAgentId)
420
+ return false;
421
+ return now - session.lastActivityAt > ttlMs;
422
+ }
423
+ function buildAssistantResult(record) {
424
+ const text = record.status === 'completed'
425
+ ? (record.fullOutput ?? record.streamingContent ?? record.progress ?? 'Completed')
426
+ : record.error ?? record.status;
427
+ return {
428
+ text,
429
+ speechText: text,
430
+ status: record.status,
431
+ toolCallsMade: record.toolCallCount,
432
+ ...(record.usage ? { usage: record.usage } : {}),
433
+ ...(record.completedAt ? { completedAt: record.completedAt } : {}),
434
+ };
435
+ }
436
+ function normalizeAgentStatus(status) {
437
+ if (status === 'pending' || status === 'running')
438
+ return 'running';
439
+ return status;
440
+ }
441
+ function readString(value) {
442
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
443
+ }
444
+ function readStringList(value) {
445
+ return Array.isArray(value)
446
+ ? value.filter((entry) => typeof entry === 'string' && entry.trim().length > 0).map((entry) => entry.trim())
447
+ : [];
448
+ }
449
+ function readRecord(value) {
450
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
451
+ }
452
+ function clampNumber(value, fallback, min, max) {
453
+ const parsed = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : fallback;
454
+ if (!Number.isFinite(parsed))
455
+ return fallback;
456
+ return Math.max(min, Math.min(max, Math.trunc(parsed)));
457
+ }
458
+ function delay(ms, signal) {
459
+ if (signal.aborted)
460
+ return Promise.resolve();
461
+ return new Promise((resolve) => {
462
+ const timer = setTimeout(resolve, ms);
463
+ signal.addEventListener('abort', () => {
464
+ clearTimeout(timer);
465
+ resolve();
466
+ }, { once: true });
467
+ });
468
+ }
@@ -135,10 +135,12 @@ interface DaemonHttpRouterContext {
135
135
  export declare class DaemonHttpRouter {
136
136
  private readonly context;
137
137
  private readonly telemetryApi;
138
+ private homeAssistantRoutes;
138
139
  constructor(context: DaemonHttpRouterContext);
139
140
  dispose(): void;
140
141
  handleRequest(req: Request): Promise<Response>;
141
142
  dispatchApiRoutes(req: Request): Promise<Response | null>;
143
+ private getHomeAssistantRoutes;
142
144
  parseJsonBody(req: Request): Promise<JsonRecord | Response>;
143
145
  parseOptionalJsonBody(req: Request): Promise<JsonRecord | null | Response>;
144
146
  parseJsonText(rawBody: string): JsonRecord | Response;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/router.ts"],"names":[],"mappings":"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"}
@@ -28,10 +28,12 @@ import { dispatchCompanionChatRoutes } from '../../companion/companion-chat-rout
28
28
  import { dispatchProviderRoutes } from './provider-routes.js';
29
29
  import { dispatchBatchRoutes } from './batch-routes.js';
30
30
  import { dispatchCloudflareRoutes } from './cloudflare-routes.js';
31
+ import { HomeAssistantConversationRoutes } from './homeassistant-routes.js';
31
32
  import { readTextBodyWithinLimit } from '../../utils/request-body.js';
32
33
  export class DaemonHttpRouter {
33
34
  context;
34
35
  telemetryApi;
36
+ homeAssistantRoutes = null;
35
37
  constructor(context) {
36
38
  this.context = context;
37
39
  this.telemetryApi = context.runtimeStore
@@ -146,6 +148,11 @@ export class DaemonHttpRouter {
146
148
  if (cloudflareResponse)
147
149
  return cloudflareResponse;
148
150
  }
151
+ if (url.pathname.startsWith('/api/homeassistant')) {
152
+ const homeAssistantResponse = await this.getHomeAssistantRoutes().handle(req);
153
+ if (homeAssistantResponse)
154
+ return homeAssistantResponse;
155
+ }
149
156
  // Companion chat routes — scoped to /api/companion/chat/..., session-isolated.
150
157
  // Handled before the main API router so they never touch the global control-plane feed.
151
158
  // Provider discovery + model-switching routes
@@ -386,6 +393,20 @@ export class DaemonHttpRouter {
386
393
  }),
387
394
  });
388
395
  }
396
+ getHomeAssistantRoutes() {
397
+ if (!this.homeAssistantRoutes) {
398
+ this.homeAssistantRoutes = new HomeAssistantConversationRoutes({
399
+ configManager: this.context.configManager,
400
+ routeBindings: this.context.routeBindings,
401
+ sessionBroker: this.context.sessionBroker,
402
+ agentManager: this.context.agentManager,
403
+ parseJsonBody: (request) => this.parseJsonBody(request),
404
+ trySpawnAgent: (input, logLabel, sessionId) => this.context.trySpawnAgent(input, logLabel, sessionId),
405
+ queueSurfaceReplyFromBinding: (binding, input) => this.context.queueSurfaceReplyFromBinding(binding, input),
406
+ });
407
+ }
408
+ return this.homeAssistantRoutes;
409
+ }
389
410
  async parseJsonBody(req) {
390
411
  // SEC-05: cap inbound JSON bodies at 1 MiB to prevent memory exhaustion.
391
412
  const MAX_JSON_BYTES = 1 * 1024 * 1024; // 1 MiB
@@ -1 +1 @@
1
- {"version":3,"file":"surface-delivery.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/surface-delivery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK7G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKtD,KAAK,eAAe,GAChB,OAAO,GACP,SAAS,GACT,MAAM,GACN,SAAS,GACT,eAAe,GACf,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,UAAU,GACV,SAAS,GACT,aAAa,GACb,YAAY,GACZ,QAAQ,CAAC;AAEb,KAAK,YAAY,GAAG,OAAO,kDAAkD,EAAE,sBAAsB,CAAC;AAmBtG,UAAU,iBAAiB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;CACvE;AAED,UAAU,4BAA4B;IACpC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,eAAe,CAAC,CAAC;IACxE,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;CACxE;AAED,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,4BAA4B;IAElE,4BAA4B,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAU/F,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAgB3C,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,OAAO,yBAAyB,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDhI,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDrF,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpF,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtF,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnF,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCtF,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzE,kBAAkB,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS;IAS5G,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAKxD,OAAO,CAAC,wBAAwB;IAqE1B,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChG,4BAA4B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBlG,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/F,4BAA4B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YA2B1F,sBAAsB;YAMtB,oBAAoB;YAOpB,mBAAmB;IASjC,OAAO,CAAC,+BAA+B;CAyBxC"}
1
+ {"version":3,"file":"surface-delivery.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/surface-delivery.ts"],"names":[],"mappings":"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"}