@linkshell/gateway 0.3.9 → 0.3.10
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/Dockerfile +1 -3
- package/README.md +13 -14
- package/dist/gateway/src/agent-permission-http.d.ts +74 -19
- package/dist/gateway/src/agent-permission-http.js +56 -16
- package/dist/gateway/src/agent-permission-http.js.map +1 -1
- package/dist/gateway/src/embedded.js +61 -153
- package/dist/gateway/src/embedded.js.map +1 -1
- package/dist/gateway/src/index.js +98 -193
- package/dist/gateway/src/index.js.map +1 -1
- package/dist/gateway/src/pairings.d.ts +3 -3
- package/dist/gateway/src/pairings.js +5 -4
- package/dist/gateway/src/pairings.js.map +1 -1
- package/dist/gateway/src/relay.d.ts +2 -2
- package/dist/gateway/src/relay.js +78 -156
- package/dist/gateway/src/relay.js.map +1 -1
- package/dist/gateway/src/sessions.d.ts +28 -42
- package/dist/gateway/src/sessions.js +145 -200
- package/dist/gateway/src/sessions.js.map +1 -1
- package/dist/gateway/src/state-store.d.ts +6 -9
- package/dist/gateway/src/state-store.js +19 -26
- package/dist/gateway/src/state-store.js.map +1 -1
- package/dist/gateway/src/tokens.d.ts +7 -27
- package/dist/gateway/src/tokens.js +60 -86
- package/dist/gateway/src/tokens.js.map +1 -1
- package/dist/gateway/src/tunnel.d.ts +13 -11
- package/dist/gateway/src/tunnel.js +36 -36
- package/dist/gateway/src/tunnel.js.map +1 -1
- package/dist/gateway/tsconfig.tsbuildinfo +1 -1
- package/dist/shared-protocol/src/index.d.ts +11940 -3423
- package/dist/shared-protocol/src/index.js +98 -164
- package/dist/shared-protocol/src/index.js.map +1 -1
- package/package.json +11 -11
- package/src/agent-permission-http.ts +63 -20
- package/src/embedded.ts +60 -158
- package/src/index.ts +98 -199
- package/src/pairings.ts +7 -6
- package/src/relay.ts +90 -188
- package/src/sessions.ts +150 -213
- package/src/state-store.ts +25 -41
- package/src/tokens.ts +63 -109
- package/src/tunnel.ts +43 -49
package/Dockerfile
CHANGED
|
@@ -7,13 +7,12 @@ COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
|
|
|
7
7
|
COPY packages/shared-protocol/package.json packages/shared-protocol/
|
|
8
8
|
COPY packages/gateway/package.json packages/gateway/
|
|
9
9
|
|
|
10
|
-
RUN pnpm install --frozen-lockfile --filter @linkshell/
|
|
10
|
+
RUN pnpm install --frozen-lockfile --filter @linkshell/gateway --filter @linkshell/protocol
|
|
11
11
|
|
|
12
12
|
COPY packages/shared-protocol/ packages/shared-protocol/
|
|
13
13
|
COPY packages/gateway/ packages/gateway/
|
|
14
14
|
COPY tsconfig.base.json ./
|
|
15
15
|
|
|
16
|
-
RUN pnpm install --offline --frozen-lockfile --filter @linkshell/protocol... --filter @linkshell/gateway...
|
|
17
16
|
RUN pnpm --filter @linkshell/protocol build && pnpm --filter @linkshell/gateway build
|
|
18
17
|
|
|
19
18
|
# Prune to production deps only
|
|
@@ -46,6 +45,5 @@ USER linkshell
|
|
|
46
45
|
ENV NODE_ENV=production
|
|
47
46
|
ENV PORT=8787
|
|
48
47
|
EXPOSE 8787
|
|
49
|
-
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 CMD wget -qO- "http://127.0.0.1:${PORT:-8787}/healthz" >/dev/null || exit 1
|
|
50
48
|
|
|
51
49
|
CMD ["node", "packages/gateway/dist/gateway/src/index.js"]
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
LinkShell Gateway — WebSocket 消息中转服务,连接 CLI 和手机 App。
|
|
4
4
|
|
|
5
|
-
Gateway
|
|
5
|
+
Gateway 不运行任何终端进程,只负责配对、会话管理和消息路由。
|
|
6
6
|
|
|
7
7
|
## 部署
|
|
8
8
|
|
|
@@ -30,36 +30,35 @@ PORT=8787 node packages/gateway/dist/gateway/src/index.js
|
|
|
30
30
|
| `SUPABASE_URL` | - | Supabase 项目 URL |
|
|
31
31
|
| `SUPABASE_ANON_KEY` | - | Supabase anon key |
|
|
32
32
|
| `SUPABASE_SERVICE_ROLE_KEY` | - | 服务端订阅检查和 Gateway 状态持久化使用 |
|
|
33
|
-
| `
|
|
34
|
-
| `SUPABASE_GATEWAY_PAIRING_TABLE` | `
|
|
33
|
+
| `SUPABASE_GATEWAY_TOKEN_TABLE` | `linkshell_gateway_tokens` | 设备 token 持久化表 |
|
|
34
|
+
| `SUPABASE_GATEWAY_PAIRING_TABLE` | `linkshell_gateway_pairings` | 配对状态持久化表 |
|
|
35
35
|
| `PAIRING_TTL_MS` | `600000` | 配对码有效期,默认 10 分钟 |
|
|
36
36
|
|
|
37
|
-
启用官方服务版部署时,先在 Supabase 执行 `docs/supabase-gateway-state.sql`。表不存在时 Gateway 会退回内存态,但 Docker
|
|
37
|
+
启用官方服务版部署时,先在 Supabase 执行 `docs/supabase-gateway-state.sql`。表不存在时 Gateway 会退回内存态,但 Docker 重启后设备 token 和未过期配对状态不会恢复。
|
|
38
38
|
|
|
39
39
|
## API
|
|
40
40
|
|
|
41
41
|
| 方法 | 路径 | 说明 |
|
|
42
42
|
|------|------|------|
|
|
43
43
|
| `GET` | `/healthz` | 健康检查 |
|
|
44
|
-
| `POST` | `/pairings` |
|
|
45
|
-
| `POST` | `/pairings/claim` |
|
|
44
|
+
| `POST` | `/pairings` | 创建配对(返回 6 位 code,默认 10 分钟有效) |
|
|
45
|
+
| `POST` | `/pairings/claim` | 用 code 换取 sessionId |
|
|
46
46
|
| `GET` | `/pairings/:code/status` | 查询配对状态 |
|
|
47
|
-
| `GET` | `/
|
|
48
|
-
| `GET` | `/
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `WS` | `/tunnel/:hostDeviceId/:port/**` | WebSocket 端口转发(HMR) |
|
|
47
|
+
| `GET` | `/sessions` | 列出活跃会话 |
|
|
48
|
+
| `GET` | `/sessions/:id` | 会话详情 |
|
|
49
|
+
| `WS` | `/ws?sessionId=&role=` | 实时连接(role=host 或 client) |
|
|
50
|
+
| `GET/POST` | `/tunnel/:sessionId/:port/**` | HTTP 端口转发 |
|
|
51
|
+
| `WS` | `/tunnel/:sessionId/:port/**` | WebSocket 端口转发(HMR) |
|
|
53
52
|
|
|
54
53
|
## 特性
|
|
55
54
|
|
|
56
|
-
-
|
|
55
|
+
- 内存态会话管理,可选 Supabase 持久化设备 token 和配对状态
|
|
57
56
|
- ACK 追踪 + 输出缓存(最近 200 条,client 重连时快速重放)
|
|
58
57
|
- 单设备控制权管理(claim/grant/reject/release)
|
|
59
58
|
- Agent Workspace v2 envelope 透传,支持 capabilities、snapshot、event、permission 和 structured input
|
|
60
59
|
- Tunnel proxy 支持 HTTP 与 WebSocket,移动端可预览本地 dev server
|
|
61
60
|
- 心跳 ping/pong 检测死连接(20s 间隔)
|
|
62
|
-
-
|
|
61
|
+
- 会话 TTL(host 断开保留 60s,空闲 30min 清理)
|
|
63
62
|
- IP 限流(配对 30 req/min,WebSocket 20 conn/min)
|
|
64
63
|
- CORS 支持
|
|
65
64
|
- 协议版本协商
|
|
@@ -1,33 +1,88 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type {
|
|
2
|
+
import type { SessionManager } from "./sessions.js";
|
|
3
3
|
import type { TokenManager } from "./tokens.js";
|
|
4
|
-
export declare const agentPermissionHttpBodySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
|
+
export declare const agentPermissionHttpBodySchema: z.ZodDiscriminatedUnion<"protocol", [z.ZodObject<{
|
|
5
5
|
protocol: z.ZodLiteral<"v2">;
|
|
6
|
-
|
|
6
|
+
sessionId: z.ZodString;
|
|
7
7
|
conversationId: z.ZodString;
|
|
8
8
|
requestId: z.ZodString;
|
|
9
|
-
outcome: z.ZodEnum<
|
|
10
|
-
allow: "allow";
|
|
11
|
-
deny: "deny";
|
|
12
|
-
cancelled: "cancelled";
|
|
13
|
-
}>;
|
|
9
|
+
outcome: z.ZodEnum<["allow", "deny", "cancelled"]>;
|
|
14
10
|
optionId: z.ZodOptional<z.ZodString>;
|
|
15
11
|
terminalId: z.ZodOptional<z.ZodString>;
|
|
16
12
|
agentSessionId: z.ZodOptional<z.ZodString>;
|
|
17
|
-
},
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
sessionId: string;
|
|
15
|
+
requestId: string;
|
|
16
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
17
|
+
conversationId: string;
|
|
18
|
+
protocol: "v2";
|
|
19
|
+
terminalId?: string | undefined;
|
|
20
|
+
agentSessionId?: string | undefined;
|
|
21
|
+
optionId?: string | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
sessionId: string;
|
|
24
|
+
requestId: string;
|
|
25
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
26
|
+
conversationId: string;
|
|
27
|
+
protocol: "v2";
|
|
28
|
+
terminalId?: string | undefined;
|
|
29
|
+
agentSessionId?: string | undefined;
|
|
30
|
+
optionId?: string | undefined;
|
|
31
|
+
}>, z.ZodObject<{
|
|
32
|
+
protocol: z.ZodLiteral<"legacy">;
|
|
33
|
+
sessionId: z.ZodString;
|
|
34
|
+
conversationId: z.ZodOptional<z.ZodString>;
|
|
35
|
+
agentSessionId: z.ZodOptional<z.ZodString>;
|
|
36
|
+
requestId: z.ZodString;
|
|
37
|
+
outcome: z.ZodEnum<["allow", "deny", "cancelled"]>;
|
|
38
|
+
optionId: z.ZodOptional<z.ZodString>;
|
|
39
|
+
terminalId: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
sessionId: string;
|
|
42
|
+
requestId: string;
|
|
43
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
44
|
+
protocol: "legacy";
|
|
45
|
+
terminalId?: string | undefined;
|
|
46
|
+
agentSessionId?: string | undefined;
|
|
47
|
+
optionId?: string | undefined;
|
|
48
|
+
conversationId?: string | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
requestId: string;
|
|
52
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
53
|
+
protocol: "legacy";
|
|
54
|
+
terminalId?: string | undefined;
|
|
55
|
+
agentSessionId?: string | undefined;
|
|
56
|
+
optionId?: string | undefined;
|
|
57
|
+
conversationId?: string | undefined;
|
|
58
|
+
}>, z.ZodObject<{
|
|
18
59
|
protocol: z.ZodLiteral<"terminal">;
|
|
19
|
-
|
|
60
|
+
sessionId: z.ZodString;
|
|
20
61
|
conversationId: z.ZodOptional<z.ZodString>;
|
|
21
62
|
requestId: z.ZodString;
|
|
22
|
-
outcome: z.ZodEnum<
|
|
23
|
-
allow: "allow";
|
|
24
|
-
deny: "deny";
|
|
25
|
-
cancelled: "cancelled";
|
|
26
|
-
}>;
|
|
63
|
+
outcome: z.ZodEnum<["allow", "deny", "cancelled"]>;
|
|
27
64
|
optionId: z.ZodOptional<z.ZodString>;
|
|
28
65
|
terminalId: z.ZodOptional<z.ZodString>;
|
|
29
66
|
agentSessionId: z.ZodOptional<z.ZodString>;
|
|
30
|
-
}, z.
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
sessionId: string;
|
|
69
|
+
requestId: string;
|
|
70
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
71
|
+
protocol: "terminal";
|
|
72
|
+
terminalId?: string | undefined;
|
|
73
|
+
agentSessionId?: string | undefined;
|
|
74
|
+
optionId?: string | undefined;
|
|
75
|
+
conversationId?: string | undefined;
|
|
76
|
+
}, {
|
|
77
|
+
sessionId: string;
|
|
78
|
+
requestId: string;
|
|
79
|
+
outcome: "allow" | "deny" | "cancelled";
|
|
80
|
+
protocol: "terminal";
|
|
81
|
+
terminalId?: string | undefined;
|
|
82
|
+
agentSessionId?: string | undefined;
|
|
83
|
+
optionId?: string | undefined;
|
|
84
|
+
conversationId?: string | undefined;
|
|
85
|
+
}>]>;
|
|
31
86
|
export type AgentPermissionHttpBody = z.infer<typeof agentPermissionHttpBodySchema>;
|
|
32
87
|
export type AgentPermissionHttpResult = {
|
|
33
88
|
status: number;
|
|
@@ -38,7 +93,7 @@ export type AgentPermissionHttpResult = {
|
|
|
38
93
|
ack?: AgentPermissionAck;
|
|
39
94
|
body: {
|
|
40
95
|
ok?: true;
|
|
41
|
-
error?: "unauthorized" | "
|
|
96
|
+
error?: "unauthorized" | "session_not_found" | "host_not_connected" | "invalid_payload" | "permission_not_delivered" | "permission_ack_timeout";
|
|
42
97
|
message?: string;
|
|
43
98
|
resolved?: boolean;
|
|
44
99
|
delivered?: boolean;
|
|
@@ -53,12 +108,12 @@ export type AgentPermissionAck = {
|
|
|
53
108
|
message?: string;
|
|
54
109
|
};
|
|
55
110
|
export declare function resolveAgentPermissionHttpAck(input: {
|
|
56
|
-
|
|
111
|
+
sessionId: string;
|
|
57
112
|
ack: AgentPermissionAck;
|
|
58
113
|
}): boolean;
|
|
59
114
|
export declare function forwardAgentPermissionHttp(input: {
|
|
60
115
|
token: string | null;
|
|
61
116
|
body: AgentPermissionHttpBody;
|
|
62
|
-
sessionManager:
|
|
117
|
+
sessionManager: SessionManager;
|
|
63
118
|
tokenManager: TokenManager;
|
|
64
119
|
}): Promise<AgentPermissionHttpResult>;
|
|
@@ -5,7 +5,7 @@ const PERMISSION_ACK_TIMEOUT_MS = 12_000;
|
|
|
5
5
|
export const agentPermissionHttpBodySchema = z.discriminatedUnion("protocol", [
|
|
6
6
|
z.object({
|
|
7
7
|
protocol: z.literal("v2"),
|
|
8
|
-
|
|
8
|
+
sessionId: z.string().min(1),
|
|
9
9
|
conversationId: z.string().min(1),
|
|
10
10
|
requestId: z.string().min(1),
|
|
11
11
|
outcome: permissionOutcomeSchema,
|
|
@@ -13,9 +13,19 @@ export const agentPermissionHttpBodySchema = z.discriminatedUnion("protocol", [
|
|
|
13
13
|
terminalId: z.string().optional(),
|
|
14
14
|
agentSessionId: z.string().optional(),
|
|
15
15
|
}),
|
|
16
|
+
z.object({
|
|
17
|
+
protocol: z.literal("legacy"),
|
|
18
|
+
sessionId: z.string().min(1),
|
|
19
|
+
conversationId: z.string().optional(),
|
|
20
|
+
agentSessionId: z.string().optional(),
|
|
21
|
+
requestId: z.string().min(1),
|
|
22
|
+
outcome: permissionOutcomeSchema,
|
|
23
|
+
optionId: z.string().optional(),
|
|
24
|
+
terminalId: z.string().optional(),
|
|
25
|
+
}),
|
|
16
26
|
z.object({
|
|
17
27
|
protocol: z.literal("terminal"),
|
|
18
|
-
|
|
28
|
+
sessionId: z.string().min(1),
|
|
19
29
|
conversationId: z.string().optional(),
|
|
20
30
|
requestId: z.string().min(1),
|
|
21
31
|
outcome: permissionOutcomeSchema,
|
|
@@ -25,11 +35,11 @@ export const agentPermissionHttpBodySchema = z.discriminatedUnion("protocol", [
|
|
|
25
35
|
}),
|
|
26
36
|
]);
|
|
27
37
|
const pendingAcks = new Map();
|
|
28
|
-
function ackKey(
|
|
29
|
-
return `${
|
|
38
|
+
function ackKey(sessionId, requestId) {
|
|
39
|
+
return `${sessionId}:${requestId}`;
|
|
30
40
|
}
|
|
31
41
|
export function resolveAgentPermissionHttpAck(input) {
|
|
32
|
-
const key = ackKey(input.
|
|
42
|
+
const key = ackKey(input.sessionId, input.ack.requestId);
|
|
33
43
|
const pending = pendingAcks.get(key);
|
|
34
44
|
if (!pending)
|
|
35
45
|
return false;
|
|
@@ -38,8 +48,8 @@ export function resolveAgentPermissionHttpAck(input) {
|
|
|
38
48
|
pending.resolve(input.ack);
|
|
39
49
|
return true;
|
|
40
50
|
}
|
|
41
|
-
function waitForAck(
|
|
42
|
-
const key = ackKey(
|
|
51
|
+
function waitForAck(sessionId, requestId) {
|
|
52
|
+
const key = ackKey(sessionId, requestId);
|
|
43
53
|
const existing = pendingAcks.get(key);
|
|
44
54
|
if (existing) {
|
|
45
55
|
pendingAcks.delete(key);
|
|
@@ -62,8 +72,7 @@ function waitForAck(hostDeviceId, requestId) {
|
|
|
62
72
|
}
|
|
63
73
|
export async function forwardAgentPermissionHttp(input) {
|
|
64
74
|
const { token, body, sessionManager, tokenManager } = input;
|
|
65
|
-
|
|
66
|
-
if (!token || !tokenManager.owns(token, hostDeviceId)) {
|
|
75
|
+
if (!token || !tokenManager.owns(token, body.sessionId)) {
|
|
67
76
|
return {
|
|
68
77
|
status: 401,
|
|
69
78
|
body: {
|
|
@@ -72,13 +81,13 @@ export async function forwardAgentPermissionHttp(input) {
|
|
|
72
81
|
},
|
|
73
82
|
};
|
|
74
83
|
}
|
|
75
|
-
const session = sessionManager.get(
|
|
84
|
+
const session = sessionManager.get(body.sessionId);
|
|
76
85
|
if (!session) {
|
|
77
86
|
return {
|
|
78
87
|
status: 404,
|
|
79
88
|
body: {
|
|
80
|
-
error: "
|
|
81
|
-
message: "
|
|
89
|
+
error: "session_not_found",
|
|
90
|
+
message: "Session not found",
|
|
82
91
|
},
|
|
83
92
|
};
|
|
84
93
|
}
|
|
@@ -94,7 +103,7 @@ export async function forwardAgentPermissionHttp(input) {
|
|
|
94
103
|
try {
|
|
95
104
|
const envelopes = createPermissionEnvelopes(body);
|
|
96
105
|
const waitsForDelivery = envelopes.some((envelope) => envelope.type === "permission.decision");
|
|
97
|
-
const ackPromise = waitsForDelivery ? waitForAck(
|
|
106
|
+
const ackPromise = waitsForDelivery ? waitForAck(body.sessionId, body.requestId) : null;
|
|
98
107
|
for (const envelope of envelopes) {
|
|
99
108
|
session.host.socket.send(serializeEnvelope(envelope));
|
|
100
109
|
}
|
|
@@ -164,7 +173,6 @@ export async function forwardAgentPermissionHttp(input) {
|
|
|
164
173
|
}
|
|
165
174
|
}
|
|
166
175
|
function createPermissionEnvelopes(body) {
|
|
167
|
-
const { hostDeviceId } = body;
|
|
168
176
|
if (body.protocol === "v2") {
|
|
169
177
|
const payload = parseTypedPayload("agent.v2.permission.respond", {
|
|
170
178
|
conversationId: body.conversationId,
|
|
@@ -174,18 +182,50 @@ function createPermissionEnvelopes(body) {
|
|
|
174
182
|
});
|
|
175
183
|
return [createEnvelope({
|
|
176
184
|
type: "agent.v2.permission.respond",
|
|
177
|
-
|
|
185
|
+
sessionId: body.sessionId,
|
|
178
186
|
deviceId: "live-activity",
|
|
179
187
|
payload,
|
|
180
188
|
})];
|
|
181
189
|
}
|
|
190
|
+
if (body.protocol === "legacy") {
|
|
191
|
+
const legacyPayload = parseTypedPayload("agent.permission.response", {
|
|
192
|
+
agentSessionId: body.agentSessionId || undefined,
|
|
193
|
+
requestId: body.requestId,
|
|
194
|
+
outcome: body.outcome,
|
|
195
|
+
optionId: body.optionId || undefined,
|
|
196
|
+
});
|
|
197
|
+
const envelopes = [createEnvelope({
|
|
198
|
+
type: "agent.permission.response",
|
|
199
|
+
sessionId: body.sessionId,
|
|
200
|
+
deviceId: "live-activity",
|
|
201
|
+
payload: legacyPayload,
|
|
202
|
+
})];
|
|
203
|
+
// `pr-*` requests are terminal PermissionRequest hooks surfaced through the
|
|
204
|
+
// legacy Agent UI channel. Send the terminal decision too so older hosts, and
|
|
205
|
+
// hosts that route hook permissions through terminal handling, can resolve it
|
|
206
|
+
// without involving the mobile websocket/controller path.
|
|
207
|
+
if (body.requestId.startsWith("pr-")) {
|
|
208
|
+
const decisionPayload = parseTypedPayload("permission.decision", {
|
|
209
|
+
requestId: body.requestId,
|
|
210
|
+
decision: body.outcome === "allow" ? "allow" : "deny",
|
|
211
|
+
});
|
|
212
|
+
envelopes.push(createEnvelope({
|
|
213
|
+
type: "permission.decision",
|
|
214
|
+
sessionId: body.sessionId,
|
|
215
|
+
terminalId: body.terminalId ?? "default",
|
|
216
|
+
deviceId: "live-activity",
|
|
217
|
+
payload: decisionPayload,
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
return envelopes;
|
|
221
|
+
}
|
|
182
222
|
const payload = parseTypedPayload("permission.decision", {
|
|
183
223
|
requestId: body.requestId,
|
|
184
224
|
decision: body.outcome === "allow" ? "allow" : "deny",
|
|
185
225
|
});
|
|
186
226
|
return [createEnvelope({
|
|
187
227
|
type: "permission.decision",
|
|
188
|
-
|
|
228
|
+
sessionId: body.sessionId,
|
|
189
229
|
terminalId: body.terminalId ?? "default",
|
|
190
230
|
deviceId: "live-activity",
|
|
191
231
|
payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-permission-http.js","sourceRoot":"","sources":["../../../src/agent-permission-http.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACvE,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IAC5E,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACzB,
|
|
1
|
+
{"version":3,"file":"agent-permission-http.js","sourceRoot":"","sources":["../../../src/agent-permission-http.ts"],"names":[],"mappings":"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"}
|