@pellux/goodvibes-sdk 0.25.13 → 0.25.15
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/_internal/contracts/artifacts/operator-contract.json +1 -1
- package/dist/_internal/contracts/generated/foundation-metadata.d.ts +1 -1
- package/dist/_internal/contracts/generated/foundation-metadata.js +1 -1
- package/dist/_internal/contracts/generated/operator-contract.js +1 -1
- package/dist/_internal/platform/adapters/homeassistant/index.d.ts.map +1 -1
- package/dist/_internal/platform/adapters/homeassistant/index.js +45 -65
- package/dist/_internal/platform/adapters/types.d.ts +26 -0
- package/dist/_internal/platform/adapters/types.d.ts.map +1 -1
- package/dist/_internal/platform/channels/builtin/homeassistant.d.ts.map +1 -1
- package/dist/_internal/platform/channels/builtin/homeassistant.js +3 -5
- package/dist/_internal/platform/channels/builtin/setup-schema.js +3 -3
- package/dist/_internal/platform/cloudflare/manager.d.ts +1 -1
- package/dist/_internal/platform/cloudflare/manager.d.ts.map +1 -1
- package/dist/_internal/platform/cloudflare/manager.js +4 -5
- package/dist/_internal/platform/cloudflare/utils.d.ts +4 -0
- package/dist/_internal/platform/cloudflare/utils.d.ts.map +1 -1
- package/dist/_internal/platform/cloudflare/utils.js +72 -2
- package/dist/_internal/platform/control-plane/session-types.d.ts +1 -2
- package/dist/_internal/platform/control-plane/session-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/homeassistant-chat.d.ts +61 -0
- package/dist/_internal/platform/daemon/homeassistant-chat.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/homeassistant-chat.js +128 -0
- package/dist/_internal/platform/daemon/http/homeassistant-routes.d.ts +6 -16
- package/dist/_internal/platform/daemon/http/homeassistant-routes.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/homeassistant-routes.js +73 -255
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +6 -4
- package/dist/_internal/platform/daemon/surface-actions.d.ts +2 -0
- package/dist/_internal/platform/daemon/surface-actions.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-actions.js +118 -0
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Synced from packages/contracts/src/generated/foundation-metadata.ts
|
|
2
2
|
export const FOUNDATION_METADATA = {
|
|
3
3
|
"productId": "goodvibes",
|
|
4
|
-
"productVersion": "0.25.
|
|
4
|
+
"productVersion": "0.25.15",
|
|
5
5
|
"operatorMethodCount": 224,
|
|
6
6
|
"operatorEventCount": 30,
|
|
7
7
|
"peerEndpointCount": 6
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/adapters/homeassistant/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQzD,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/adapters/homeassistant/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQzD,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAmInB"}
|
|
@@ -59,25 +59,29 @@ export async function handleHomeAssistantSurfaceWebhook(req, context) {
|
|
|
59
59
|
if (!policy.allowed) {
|
|
60
60
|
return Response.json({ error: `Blocked by channel policy: ${policy.reason}` }, { status: 403 });
|
|
61
61
|
}
|
|
62
|
-
await context.routeBindings.start();
|
|
63
|
-
const binding = await context.routeBindings.upsertBinding({
|
|
64
|
-
kind: threadId ? 'thread' : 'channel',
|
|
65
|
-
surfaceKind: HOME_ASSISTANT_SURFACE,
|
|
66
|
-
surfaceId,
|
|
67
|
-
externalId: conversationId,
|
|
68
|
-
threadId,
|
|
69
|
-
channelId,
|
|
70
|
-
sessionId: readString(body.sessionId ?? body.session_id),
|
|
71
|
-
title: readString(body.title) ?? 'Home Assistant',
|
|
72
|
-
metadata: {
|
|
73
|
-
...body,
|
|
74
|
-
directoryKind: conversationKind === 'direct' ? 'user' : conversationKind,
|
|
75
|
-
source: 'homeassistant',
|
|
76
|
-
messageId,
|
|
77
|
-
conversationId,
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
62
|
if (!text.trim()) {
|
|
63
|
+
await context.routeBindings.start();
|
|
64
|
+
const binding = await context.routeBindings.upsertBinding({
|
|
65
|
+
kind: threadId ? 'thread' : 'channel',
|
|
66
|
+
surfaceKind: HOME_ASSISTANT_SURFACE,
|
|
67
|
+
surfaceId,
|
|
68
|
+
externalId: conversationId,
|
|
69
|
+
threadId,
|
|
70
|
+
channelId,
|
|
71
|
+
title: readString(body.title) ?? 'Home Assistant',
|
|
72
|
+
metadata: {
|
|
73
|
+
...body,
|
|
74
|
+
directoryKind: conversationKind === 'direct' ? 'user' : conversationKind,
|
|
75
|
+
source: 'homeassistant',
|
|
76
|
+
messageId,
|
|
77
|
+
conversationId,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
await context.routeBindings.patchBinding(binding.id, {
|
|
81
|
+
sessionId: null,
|
|
82
|
+
jobId: null,
|
|
83
|
+
runId: null,
|
|
84
|
+
});
|
|
81
85
|
return Response.json({
|
|
82
86
|
acknowledged: true,
|
|
83
87
|
queued: false,
|
|
@@ -85,65 +89,41 @@ export async function handleHomeAssistantSurfaceWebhook(req, context) {
|
|
|
85
89
|
});
|
|
86
90
|
}
|
|
87
91
|
const routing = readRouting(body);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
if (!context.postHomeAssistantChatMessage) {
|
|
93
|
+
return Response.json({ error: 'Home Assistant remote chat is unavailable in this runtime' }, { status: 503 });
|
|
94
|
+
}
|
|
95
|
+
const result = await context.postHomeAssistantChatMessage({
|
|
96
|
+
body: text,
|
|
97
|
+
messageId,
|
|
98
|
+
conversationId,
|
|
92
99
|
surfaceId,
|
|
93
|
-
|
|
94
|
-
threadId,
|
|
95
|
-
userId: readString(body.userId ?? body.user_id),
|
|
96
|
-
displayName: readString(body.displayName ?? body.userName ?? body.user_name),
|
|
100
|
+
channelId,
|
|
101
|
+
...(threadId ? { threadId } : {}),
|
|
102
|
+
...(readString(body.userId ?? body.user_id) ? { userId: readString(body.userId ?? body.user_id) } : {}),
|
|
103
|
+
...(readString(body.displayName ?? body.userName ?? body.user_name) ? { displayName: readString(body.displayName ?? body.userName ?? body.user_name) } : {}),
|
|
97
104
|
title: readString(body.title) ?? 'Home Assistant',
|
|
98
|
-
|
|
99
|
-
|
|
105
|
+
...(routing?.providerId ? { providerId: routing.providerId } : {}),
|
|
106
|
+
...(routing?.modelId ? { modelId: routing.modelId } : {}),
|
|
107
|
+
...(routing?.tools?.length ? { tools: routing.tools } : {}),
|
|
108
|
+
context: {
|
|
109
|
+
...body,
|
|
100
110
|
source: 'homeassistant',
|
|
101
111
|
messageId,
|
|
102
112
|
conversationId,
|
|
103
113
|
deviceId: readString(body.deviceId ?? body.device_id) ?? null,
|
|
104
114
|
entityId: readString(body.entityId ?? body.entity_id) ?? null,
|
|
105
115
|
},
|
|
106
|
-
|
|
107
|
-
});
|
|
108
|
-
if (submission.mode === 'continued-live') {
|
|
109
|
-
return Response.json({
|
|
110
|
-
acknowledged: true,
|
|
111
|
-
queued: true,
|
|
112
|
-
continued: true,
|
|
113
|
-
bindingId: binding.id,
|
|
114
|
-
sessionId: submission.session.id,
|
|
115
|
-
agentId: submission.activeAgentId ?? null,
|
|
116
|
-
messageId,
|
|
117
|
-
conversationId,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
const spawnResult = context.trySpawnAgent({
|
|
121
|
-
mode: 'spawn',
|
|
122
|
-
task: submission.task,
|
|
123
|
-
executionProtocol: 'direct',
|
|
124
|
-
reviewMode: 'none',
|
|
125
|
-
communicationLane: 'direct',
|
|
126
|
-
dangerously_disable_wrfc: true,
|
|
127
|
-
...(routing?.modelId ? { model: routing.modelId } : {}),
|
|
128
|
-
...(routing?.providerId ? { provider: routing.providerId } : {}),
|
|
129
|
-
...(routing?.tools?.length ? { tools: [...routing.tools] } : {}),
|
|
130
|
-
context: `homeassistant:${conversationId}`,
|
|
131
|
-
}, 'handleHomeAssistantSurfaceWebhook', submission.session.id);
|
|
132
|
-
if (spawnResult instanceof Response)
|
|
133
|
-
return spawnResult;
|
|
134
|
-
await context.sessionBroker.bindAgent(submission.session.id, spawnResult.id);
|
|
135
|
-
context.queueSurfaceReplyFromBinding(binding, {
|
|
136
|
-
agentId: spawnResult.id,
|
|
137
|
-
task: text,
|
|
138
|
-
sessionId: submission.session.id,
|
|
116
|
+
publishEvent: true,
|
|
139
117
|
});
|
|
140
118
|
return Response.json({
|
|
141
119
|
acknowledged: true,
|
|
142
|
-
queued:
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
120
|
+
queued: false,
|
|
121
|
+
delivered: result.delivered,
|
|
122
|
+
...(result.routeId ? { bindingId: result.routeId } : {}),
|
|
123
|
+
sessionId: result.sessionId,
|
|
146
124
|
messageId,
|
|
125
|
+
...(result.assistantMessageId ? { assistantMessageId: result.assistantMessageId } : {}),
|
|
126
|
+
...(result.error ? { error: result.error } : {}),
|
|
147
127
|
conversationId,
|
|
148
128
|
});
|
|
149
129
|
}
|
|
@@ -31,6 +31,15 @@ export interface NtfyRemoteChatResult {
|
|
|
31
31
|
readonly delivered: boolean;
|
|
32
32
|
readonly error?: string;
|
|
33
33
|
}
|
|
34
|
+
export interface HomeAssistantRemoteChatResult {
|
|
35
|
+
readonly sessionId: string;
|
|
36
|
+
readonly routeId?: string;
|
|
37
|
+
readonly messageId: string;
|
|
38
|
+
readonly assistantMessageId?: string;
|
|
39
|
+
readonly response?: string;
|
|
40
|
+
readonly delivered: boolean;
|
|
41
|
+
readonly error?: string;
|
|
42
|
+
}
|
|
34
43
|
export type TrySpawnAgentInput = Parameters<AgentManager['spawn']>[0];
|
|
35
44
|
export type TrySpawnAgentResult = AgentRecord | Response;
|
|
36
45
|
export type TrySpawnAgentFn = (input: TrySpawnAgentInput, logLabel: string, sessionId?: string) => TrySpawnAgentResult;
|
|
@@ -68,6 +77,23 @@ export interface SurfaceAdapterContext {
|
|
|
68
77
|
readonly body: string;
|
|
69
78
|
readonly title?: string;
|
|
70
79
|
}) => Promise<NtfyRemoteChatResult>;
|
|
80
|
+
readonly postHomeAssistantChatMessage?: (input: {
|
|
81
|
+
readonly body: string;
|
|
82
|
+
readonly messageId: string;
|
|
83
|
+
readonly conversationId: string;
|
|
84
|
+
readonly surfaceId: string;
|
|
85
|
+
readonly channelId: string;
|
|
86
|
+
readonly threadId?: string;
|
|
87
|
+
readonly userId?: string;
|
|
88
|
+
readonly displayName?: string;
|
|
89
|
+
readonly title: string;
|
|
90
|
+
readonly providerId?: string;
|
|
91
|
+
readonly modelId?: string;
|
|
92
|
+
readonly tools?: readonly string[];
|
|
93
|
+
readonly context?: Record<string, unknown>;
|
|
94
|
+
readonly remoteSessionTtlMs?: number;
|
|
95
|
+
readonly publishEvent?: boolean;
|
|
96
|
+
}) => Promise<HomeAssistantRemoteChatResult>;
|
|
71
97
|
}
|
|
72
98
|
export interface GenericWebhookReplyInput {
|
|
73
99
|
readonly agentId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/adapters/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homeassistant.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/channels/builtin/homeassistant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EACV,+BAA+B,EAE/B,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,sBAAsB,iBAAoD,CAAC;AACxF,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAErE,UAAU,YAAY;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAoBD,UAAU,0BAA0B;IAClC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;KAClD,CAAC;IACF,QAAQ,CAAC,mBAAmB,EAAE,SAAS;QACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,wBAAgB,gCAAgC,IAAI,+BAA+B,EAAE,CAqDpF;AAED,wBAAgB,sBAAsB,IAAI,qBAAqB,EAAE,CAmDhE;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAuBlE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,GAAG,4BAA4B,
|
|
1
|
+
{"version":3,"file":"homeassistant.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/channels/builtin/homeassistant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EACV,+BAA+B,EAE/B,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,sBAAsB,iBAAoD,CAAC;AACxF,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAErE,UAAU,YAAY;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAoBD,UAAU,0BAA0B;IAClC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;KAClD,CAAC;IACF,QAAQ,CAAC,mBAAmB,EAAE,SAAS;QACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,wBAAgB,gCAAgC,IAAI,+BAA+B,EAAE,CAqDpF;AAED,wBAAgB,sBAAsB,IAAI,qBAAqB,EAAE,CAmDhE;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAuBlE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,GAAG,4BAA4B,CA0E/H;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAUlH;AAED,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,YAAY,EAC3B,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAC7C,MAAM,GAAG,IAAI,CAMf;AAED,wBAAsB,+BAA+B,CAAC,IAAI,EAAE;IAC1D,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,eAAe,CAAC,CAAC;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;CACnE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKzB;AAED,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,eAAe,CAAC,CAAC;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;CACnE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKzB"}
|
|
@@ -184,7 +184,6 @@ export function buildHomeAssistantManifest(deps) {
|
|
|
184
184
|
},
|
|
185
185
|
capabilities: [
|
|
186
186
|
'conversation-ingress',
|
|
187
|
-
'agent-task-ingress',
|
|
188
187
|
'daemon-tool-catalog',
|
|
189
188
|
'daemon-agent-tools',
|
|
190
189
|
'session-binding',
|
|
@@ -204,10 +203,9 @@ export function buildHomeAssistantManifest(deps) {
|
|
|
204
203
|
inboundSecretHeaders: ['x-goodvibes-homeassistant-secret', 'authorization'],
|
|
205
204
|
},
|
|
206
205
|
recommendedServices: [
|
|
207
|
-
{ name: 'goodvibes.prompt', target: 'config_entry', description: 'Submit a normal prompt
|
|
208
|
-
{ name: 'goodvibes.
|
|
209
|
-
{ name: 'goodvibes.
|
|
210
|
-
{ name: 'goodvibes.status', target: 'config_entry', description: 'Inspect daemon, session, or agent status.' },
|
|
206
|
+
{ name: 'goodvibes.prompt', target: 'config_entry', description: 'Submit a normal prompt through an isolated daemon chat session.' },
|
|
207
|
+
{ name: 'goodvibes.cancel', target: 'config_entry', description: 'Cancel an active Home Assistant conversation session.' },
|
|
208
|
+
{ name: 'goodvibes.status', target: 'config_entry', description: 'Inspect daemon and Home Assistant conversation status.' },
|
|
211
209
|
],
|
|
212
210
|
metadata: {
|
|
213
211
|
configKeys: [
|
|
@@ -204,11 +204,11 @@ export function getBuiltinSetupSchema(surface) {
|
|
|
204
204
|
'Create the Home Assistant custom integration with config_flow enabled and a single config entry for this daemon.',
|
|
205
205
|
'Configure the integration with the daemon base URL and operator bearer token.',
|
|
206
206
|
'Use /api/homeassistant/conversation for Assist conversation agents that need a final reply in the request/response cycle.',
|
|
207
|
-
'Use /api/homeassistant/conversation/stream when the integration wants
|
|
208
|
-
'Home Assistant-originated
|
|
207
|
+
'Use /api/homeassistant/conversation/stream only when the integration wants an SSE transport for final/error events.',
|
|
208
|
+
'Home Assistant-originated prompts use isolated remote chat sessions and do not use shared TUI sessions, agents, or WRFC review/fix chains.',
|
|
209
209
|
`Send Home Assistant-originated prompts to ${HOME_ASSISTANT_WEBHOOK_PATH} with x-goodvibes-homeassistant-secret or Authorization: Bearer <webhookSecret>.`,
|
|
210
210
|
'Subscribe the Home Assistant integration to the configured GoodVibes event type to update entities and service-call responses.',
|
|
211
|
-
'Use the channel tool catalog endpoints to expose daemon
|
|
211
|
+
'Use the channel tool catalog endpoints to expose daemon and Home Assistant tools as service actions.',
|
|
212
212
|
],
|
|
213
213
|
metadata: {
|
|
214
214
|
protocolVersion: 1,
|
|
@@ -21,7 +21,7 @@ export declare class CloudflareControlPlaneManager {
|
|
|
21
21
|
private resolveSecretRef;
|
|
22
22
|
private storeSecret;
|
|
23
23
|
private requireUserTokens;
|
|
24
|
-
private
|
|
24
|
+
private resolvePermissionGroupIds;
|
|
25
25
|
private createProvisioningContext;
|
|
26
26
|
private fetchWorker;
|
|
27
27
|
private generateToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/manager.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAIV,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAGvB,+BAA+B,EAC/B,gCAAgC,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/manager.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAIV,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAGvB,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EAOzB,gCAAgC,EAChC,iCAAiC,EAEjC,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAiBpB,qBAAa,6BAA6B;IAI5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAEZ,OAAO,EAAE,6BAA6B;IAK7D,cAAc,IAAI,OAAO,CAAC,4BAA4B,CAAC;IA0C7D,iBAAiB,CAAC,KAAK,GAAE,gCAAqC,GAAG,iCAAiC;IAkB5F,sBAAsB,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAyEzG,QAAQ,CAAC,KAAK,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuEhF,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuB3E,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA2S9E,MAAM,CAAC,KAAK,GAAE,qBAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAe1E,OAAO,CAAC,KAAK,GAAE,sBAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BnF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;YAYX,eAAe;YAaf,oBAAoB;YAapB,wBAAwB;YAaxB,gBAAgB;YAahB,WAAW;IAOzB,OAAO,CAAC,iBAAiB;YAOX,yBAAyB;IAQvC,OAAO,CAAC,yBAAyB;YAQnB,WAAW;IAazB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -6,7 +6,7 @@ import { CLOUDFLARE_API_TOKEN_KEY, CLOUDFLARE_WORKER_CLIENT_TOKEN_KEY, CLOUDFLAR
|
|
|
6
6
|
import { discoverZones, resolveZone, selectDiscoveredZone, tryDiscover, } from './discovery.js';
|
|
7
7
|
import { configureDns, configureWorkerSubdomain, ensureAccess, ensureKvNamespace, ensureQueue, ensureQueueConsumer, ensureR2Bucket, ensureSecretsStore, ensureTunnel, findDurableObjectNamespace, uploadWorker, } from './resources.js';
|
|
8
8
|
import { CloudflareControlPlaneError } from './types.js';
|
|
9
|
-
import { buildTokenRequirements, buildTokenResources, clean, collectAsync, collectSingleAccount, hostnameFromUrl, requireKvNamespaceId, requireQueueId, resolveComponents,
|
|
9
|
+
import { buildTokenRequirements, buildTokenResources, clean, collectAsync, collectSingleAccount, hostnameFromUrl, requireKvNamespaceId, requireQueueId, resolveComponents, resolvePermissionGroupIds, safeResponseText, stripTrailingSlash, } from './utils.js';
|
|
10
10
|
export class CloudflareControlPlaneManager {
|
|
11
11
|
options;
|
|
12
12
|
createClient;
|
|
@@ -105,8 +105,7 @@ export class CloudflareControlPlaneManager {
|
|
|
105
105
|
required: components.dns,
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
-
const
|
|
109
|
-
const permissionIds = selectPermissionGroups(requirements, groups);
|
|
108
|
+
const permissionIds = await this.resolvePermissionGroupIds(client, requirements);
|
|
110
109
|
const resources = buildTokenResources(accountId, zone?.id, components);
|
|
111
110
|
const tokenName = clean(input.tokenName) || 'GoodVibes Cloudflare Operational';
|
|
112
111
|
const token = await this.requireUserTokens(client).create({
|
|
@@ -636,9 +635,9 @@ export class CloudflareControlPlaneManager {
|
|
|
636
635
|
}
|
|
637
636
|
return client.user.tokens;
|
|
638
637
|
}
|
|
639
|
-
async
|
|
638
|
+
async resolvePermissionGroupIds(client, requirements) {
|
|
640
639
|
const tokenApi = this.requireUserTokens(client);
|
|
641
|
-
return await
|
|
640
|
+
return await resolvePermissionGroupIds(requirements, (params) => tokenApi.permissionGroups.list(params));
|
|
642
641
|
}
|
|
643
642
|
createProvisioningContext() {
|
|
644
643
|
return {
|
|
@@ -2,6 +2,10 @@ import type { CloudflareAccountLike, CloudflareApiClient, CloudflareComponent, C
|
|
|
2
2
|
export declare function resolveComponents(selection: CloudflareComponentSelection | undefined): Readonly<Record<CloudflareComponent, boolean>>;
|
|
3
3
|
export declare function buildTokenRequirements(components: Readonly<Record<CloudflareComponent, boolean>>, includeBootstrap: boolean): readonly CloudflareTokenPermissionRequirement[];
|
|
4
4
|
export declare function selectPermissionGroups(requirements: readonly CloudflareTokenPermissionRequirement[], groups: readonly CloudflarePermissionGroupLike[]): readonly string[];
|
|
5
|
+
export declare function resolvePermissionGroupIds(requirements: readonly CloudflareTokenPermissionRequirement[], listPermissionGroups: (params?: {
|
|
6
|
+
readonly name?: string;
|
|
7
|
+
readonly scope?: string;
|
|
8
|
+
}) => AsyncIterable<CloudflarePermissionGroupLike>): Promise<readonly string[]>;
|
|
5
9
|
export declare function buildTokenResources(accountId: string, zoneId: string | undefined, components: Readonly<Record<CloudflareComponent, boolean>>): Record<string, string>;
|
|
6
10
|
export declare function collectSingleAccount(client: CloudflareApiClient, accountId: string, warnings: string[]): Promise<readonly CloudflareAccountLike[]>;
|
|
7
11
|
export declare function collectAsync<T>(iterable: AsyncIterable<T>, limit?: number): Promise<readonly T[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAGpB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAKrI;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAC1D,gBAAgB,EAAE,OAAO,GACxB,SAAS,oCAAoC,EAAE,CAiHjD;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,MAAM,EAAE,SAAS,6BAA6B,EAAE,GAC/C,SAAS,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/cloudflare/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAGpB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAKrI;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAC1D,gBAAgB,EAAE,OAAO,GACxB,SAAS,oCAAoC,EAAE,CAiHjD;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,MAAM,EAAE,SAAS,6BAA6B,EAAE,GAC/C,SAAS,MAAM,EAAE,CAmBnB;AAED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,SAAS,oCAAoC,EAAE,EAC7D,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,CAAC,6BAA6B,CAAC,GACnI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAqD5B;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,GACzD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAW3C;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAOpG;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,yBAAyB,GAAG,MAAM,CAGjF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
|
|
@@ -117,8 +117,7 @@ export function selectPermissionGroups(requirements, groups) {
|
|
|
117
117
|
const ids = [];
|
|
118
118
|
const missing = [];
|
|
119
119
|
for (const requirement of requirements) {
|
|
120
|
-
const
|
|
121
|
-
const group = groups.find((entry) => entry.id && entry.name && names.some((name) => normalizePermissionName(entry.name) === normalizePermissionName(name)));
|
|
120
|
+
const group = findPermissionGroup(requirement, groups);
|
|
122
121
|
if (group?.id) {
|
|
123
122
|
ids.push(group.id);
|
|
124
123
|
}
|
|
@@ -131,6 +130,54 @@ export function selectPermissionGroups(requirements, groups) {
|
|
|
131
130
|
}
|
|
132
131
|
return Array.from(new Set(ids));
|
|
133
132
|
}
|
|
133
|
+
export async function resolvePermissionGroupIds(requirements, listPermissionGroups) {
|
|
134
|
+
const ids = [];
|
|
135
|
+
const missing = [];
|
|
136
|
+
let scannedGroups = null;
|
|
137
|
+
let lastError;
|
|
138
|
+
const scanAllGroups = async () => {
|
|
139
|
+
if (scannedGroups)
|
|
140
|
+
return scannedGroups;
|
|
141
|
+
scannedGroups = await collectAsync(listPermissionGroups(), 5_000);
|
|
142
|
+
return scannedGroups;
|
|
143
|
+
};
|
|
144
|
+
for (const requirement of requirements) {
|
|
145
|
+
const scope = cloudflareScopeForRequirement(requirement);
|
|
146
|
+
const names = [requirement.permission, ...(requirement.alternatives ?? [])];
|
|
147
|
+
let group;
|
|
148
|
+
for (const name of names) {
|
|
149
|
+
try {
|
|
150
|
+
const exactMatches = await collectAsync(listPermissionGroups({ name, scope }), 50);
|
|
151
|
+
group = findPermissionGroup(requirement, exactMatches);
|
|
152
|
+
if (group)
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
lastError = error;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!group) {
|
|
161
|
+
try {
|
|
162
|
+
group = findPermissionGroup(requirement, await scanAllGroups());
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
lastError = error;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (group?.id) {
|
|
169
|
+
ids.push(group.id);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
missing.push(`${requirement.permission} (${requirement.component})`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (missing.length > 0) {
|
|
176
|
+
const suffix = lastError ? ` Last Cloudflare permission-group error: ${summarizeError(lastError)}` : '';
|
|
177
|
+
throw new CloudflareControlPlaneError(`Could not resolve Cloudflare permission groups for: ${missing.join(', ')}.${suffix} Use /api/cloudflare/token/requirements to show the exact required token shape and create the operational token manually if this Cloudflare account uses different permission names.`, 'CLOUDFLARE_PERMISSION_GROUPS_MISSING', 400);
|
|
178
|
+
}
|
|
179
|
+
return Array.from(new Set(ids));
|
|
180
|
+
}
|
|
134
181
|
export function buildTokenResources(accountId, zoneId, components) {
|
|
135
182
|
const resources = {
|
|
136
183
|
[`com.cloudflare.api.account.${accountId}`]: '*',
|
|
@@ -211,6 +258,29 @@ function uniqueRequirements(requirements) {
|
|
|
211
258
|
}
|
|
212
259
|
return unique;
|
|
213
260
|
}
|
|
261
|
+
function findPermissionGroup(requirement, groups) {
|
|
262
|
+
const names = [requirement.permission, ...(requirement.alternatives ?? [])].map(normalizePermissionName);
|
|
263
|
+
const scope = cloudflareScopeForRequirement(requirement);
|
|
264
|
+
return groups.find((entry) => entry.id &&
|
|
265
|
+
entry.name &&
|
|
266
|
+
names.includes(normalizePermissionName(entry.name)) &&
|
|
267
|
+
matchesPermissionScope(entry, scope));
|
|
268
|
+
}
|
|
269
|
+
function matchesPermissionScope(group, scope) {
|
|
270
|
+
return !group.scopes || group.scopes.length === 0 || group.scopes.includes(scope);
|
|
271
|
+
}
|
|
272
|
+
function cloudflareScopeForRequirement(requirement) {
|
|
273
|
+
switch (requirement.scope) {
|
|
274
|
+
case 'account':
|
|
275
|
+
return 'com.cloudflare.api.account';
|
|
276
|
+
case 'zone':
|
|
277
|
+
return 'com.cloudflare.api.account.zone';
|
|
278
|
+
case 'user':
|
|
279
|
+
return 'com.cloudflare.api.user';
|
|
280
|
+
case 'r2':
|
|
281
|
+
return 'com.cloudflare.edge.r2.bucket';
|
|
282
|
+
}
|
|
283
|
+
}
|
|
214
284
|
function normalizePermissionName(value) {
|
|
215
285
|
return value.toLowerCase().replace(/[^a-z0-9]+/g, '');
|
|
216
286
|
}
|
|
@@ -31,9 +31,8 @@ export interface SharedSessionMessage {
|
|
|
31
31
|
* - 'tui': created by the operator TUI (default for existing sessions)
|
|
32
32
|
* - 'companion-task': created via task-submit flow (agent spawn)
|
|
33
33
|
* - 'companion-chat': created via companion chat-mode API (no agent spawn; uses per-session orchestrator)
|
|
34
|
-
* - 'homeassistant-remote': created by the Home Assistant daemon surface and closed by an idle TTL
|
|
35
34
|
*/
|
|
36
|
-
export type SharedSessionKind = 'tui' | 'companion-task' | 'companion-chat'
|
|
35
|
+
export type SharedSessionKind = 'tui' | 'companion-task' | 'companion-chat';
|
|
37
36
|
export interface SharedSessionRecord {
|
|
38
37
|
readonly id: string;
|
|
39
38
|
readonly kind: SharedSessionKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/session-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED
|
|
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,61 @@
|
|
|
1
|
+
import type { AutomationRouteBinding } from '../automation/routes.js';
|
|
2
|
+
import type { RouteBindingManager } from '../channels/index.js';
|
|
3
|
+
import type { CompanionChatManager } from '../companion/companion-chat-manager.js';
|
|
4
|
+
import type { CompanionChatSession } from '../companion/companion-chat-types.js';
|
|
5
|
+
import type { ConfigManager } from '../config/manager.js';
|
|
6
|
+
export declare const HOME_ASSISTANT_DEFAULT_REMOTE_SESSION_TTL_MS: number;
|
|
7
|
+
type JsonRecord = Record<string, unknown>;
|
|
8
|
+
interface RouteBindingsLike {
|
|
9
|
+
readonly start: RouteBindingManager['start'];
|
|
10
|
+
readonly upsertBinding: RouteBindingManager['upsertBinding'];
|
|
11
|
+
readonly patchBinding: RouteBindingManager['patchBinding'];
|
|
12
|
+
}
|
|
13
|
+
interface ConfigReader {
|
|
14
|
+
get(key: string): unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface HomeAssistantChatInput {
|
|
17
|
+
readonly text: string;
|
|
18
|
+
readonly messageId: string;
|
|
19
|
+
readonly conversationId: string;
|
|
20
|
+
readonly surfaceId: string;
|
|
21
|
+
readonly channelId: string;
|
|
22
|
+
readonly threadId?: string;
|
|
23
|
+
readonly userId?: string;
|
|
24
|
+
readonly displayName?: string;
|
|
25
|
+
readonly title: string;
|
|
26
|
+
readonly providerId?: string;
|
|
27
|
+
readonly modelId?: string;
|
|
28
|
+
readonly tools?: readonly string[];
|
|
29
|
+
readonly context?: JsonRecord;
|
|
30
|
+
readonly remoteSessionTtlMs: number;
|
|
31
|
+
}
|
|
32
|
+
export interface HomeAssistantChatResolution {
|
|
33
|
+
readonly binding: AutomationRouteBinding;
|
|
34
|
+
readonly session: CompanionChatSession;
|
|
35
|
+
readonly newSession: boolean;
|
|
36
|
+
readonly sessionExpired: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface HomeAssistantChatPostResult extends HomeAssistantChatResolution {
|
|
39
|
+
readonly messageId: string;
|
|
40
|
+
readonly assistantMessageId?: string;
|
|
41
|
+
readonly response?: string;
|
|
42
|
+
readonly error?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface HomeAssistantChatRuntime {
|
|
45
|
+
readonly configManager: Pick<ConfigManager, 'get'> | ConfigReader;
|
|
46
|
+
readonly routeBindings: RouteBindingsLike;
|
|
47
|
+
readonly chatManager: CompanionChatManager;
|
|
48
|
+
readonly resolveDefaultProviderModel?: () => {
|
|
49
|
+
provider: string;
|
|
50
|
+
model: string;
|
|
51
|
+
} | null;
|
|
52
|
+
}
|
|
53
|
+
export declare function postHomeAssistantChatMessage(runtime: HomeAssistantChatRuntime, input: HomeAssistantChatInput, options?: {
|
|
54
|
+
readonly wait?: boolean;
|
|
55
|
+
readonly timeoutMs?: number;
|
|
56
|
+
readonly clientId?: string;
|
|
57
|
+
}): Promise<HomeAssistantChatPostResult>;
|
|
58
|
+
export declare function resolveHomeAssistantChatSession(runtime: HomeAssistantChatRuntime, input: HomeAssistantChatInput): Promise<HomeAssistantChatResolution>;
|
|
59
|
+
export declare function readHomeAssistantRemoteSessionTtlMs(configManager: ConfigReader, value: unknown): number;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=homeassistant-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homeassistant-chat.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/daemon/homeassistant-chat.ts"],"names":[],"mappings":"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"}
|