@useactor/core 0.1.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/ai-sdk-provider.d.ts +54 -0
- package/dist/ai-sdk-provider.d.ts.map +1 -0
- package/dist/ai-sdk-provider.js +335 -0
- package/dist/ai-sdk-provider.js.map +1 -0
- package/dist/app-runtime.d.ts +83 -0
- package/dist/app-runtime.d.ts.map +1 -0
- package/dist/app-runtime.js +504 -0
- package/dist/app-runtime.js.map +1 -0
- package/dist/artifacts.d.ts +49 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +50 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/cli-defined-tools.d.ts +17 -0
- package/dist/cli-defined-tools.d.ts.map +1 -0
- package/dist/cli-defined-tools.js +146 -0
- package/dist/cli-defined-tools.js.map +1 -0
- package/dist/codex-oauth-provider.d.ts +30 -0
- package/dist/codex-oauth-provider.d.ts.map +1 -0
- package/dist/codex-oauth-provider.js +453 -0
- package/dist/codex-oauth-provider.js.map +1 -0
- package/dist/events.d.ts +133 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +46 -0
- package/dist/events.js.map +1 -0
- package/dist/feedback.d.ts +29 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +62 -0
- package/dist/feedback.js.map +1 -0
- package/dist/history.d.ts +34 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +118 -0
- package/dist/history.js.map +1 -0
- package/dist/in-memory-runtime.d.ts +12 -0
- package/dist/in-memory-runtime.d.ts.map +1 -0
- package/dist/in-memory-runtime.js +491 -0
- package/dist/in-memory-runtime.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations.d.ts +37 -0
- package/dist/integrations.d.ts.map +1 -0
- package/dist/integrations.js +48 -0
- package/dist/integrations.js.map +1 -0
- package/dist/local-event-logger.d.ts +19 -0
- package/dist/local-event-logger.d.ts.map +1 -0
- package/dist/local-event-logger.js +163 -0
- package/dist/local-event-logger.js.map +1 -0
- package/dist/local-event-schema.d.ts +99 -0
- package/dist/local-event-schema.d.ts.map +1 -0
- package/dist/local-event-schema.js +43 -0
- package/dist/local-event-schema.js.map +1 -0
- package/dist/local-tools.d.ts +99 -0
- package/dist/local-tools.d.ts.map +1 -0
- package/dist/local-tools.js +418 -0
- package/dist/local-tools.js.map +1 -0
- package/dist/mcp-server-config.d.ts +16 -0
- package/dist/mcp-server-config.d.ts.map +1 -0
- package/dist/mcp-server-config.js +75 -0
- package/dist/mcp-server-config.js.map +1 -0
- package/dist/mock-provider.d.ts +8 -0
- package/dist/mock-provider.d.ts.map +1 -0
- package/dist/mock-provider.js +47 -0
- package/dist/mock-provider.js.map +1 -0
- package/dist/model-catalog.d.ts +24 -0
- package/dist/model-catalog.d.ts.map +1 -0
- package/dist/model-catalog.js +92 -0
- package/dist/model-catalog.js.map +1 -0
- package/dist/monoid-integration.d.ts +33 -0
- package/dist/monoid-integration.d.ts.map +1 -0
- package/dist/monoid-integration.js +184 -0
- package/dist/monoid-integration.js.map +1 -0
- package/dist/openai-oauth.d.ts +69 -0
- package/dist/openai-oauth.d.ts.map +1 -0
- package/dist/openai-oauth.js +127 -0
- package/dist/openai-oauth.js.map +1 -0
- package/dist/permission-grant-store.d.ts +7 -0
- package/dist/permission-grant-store.d.ts.map +1 -0
- package/dist/permission-grant-store.js +77 -0
- package/dist/permission-grant-store.js.map +1 -0
- package/dist/permission-grants.d.ts +38 -0
- package/dist/permission-grants.d.ts.map +1 -0
- package/dist/permission-grants.js +93 -0
- package/dist/permission-grants.js.map +1 -0
- package/dist/personas.d.ts +51 -0
- package/dist/personas.d.ts.map +1 -0
- package/dist/personas.js +137 -0
- package/dist/personas.js.map +1 -0
- package/dist/project-tool-registry.d.ts +16 -0
- package/dist/project-tool-registry.d.ts.map +1 -0
- package/dist/project-tool-registry.js +86 -0
- package/dist/project-tool-registry.js.map +1 -0
- package/dist/projects.d.ts +88 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +243 -0
- package/dist/projects.js.map +1 -0
- package/dist/prompt-context.d.ts +13 -0
- package/dist/prompt-context.d.ts.map +1 -0
- package/dist/prompt-context.js +170 -0
- package/dist/prompt-context.js.map +1 -0
- package/dist/proposed-plan.d.ts +24 -0
- package/dist/proposed-plan.d.ts.map +1 -0
- package/dist/proposed-plan.js +74 -0
- package/dist/proposed-plan.js.map +1 -0
- package/dist/providers.d.ts +53 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +31 -0
- package/dist/providers.js.map +1 -0
- package/dist/question-requests.d.ts +39 -0
- package/dist/question-requests.d.ts.map +1 -0
- package/dist/question-requests.js +135 -0
- package/dist/question-requests.js.map +1 -0
- package/dist/renderer-api.d.ts +52 -0
- package/dist/renderer-api.d.ts.map +1 -0
- package/dist/renderer-api.js +2 -0
- package/dist/renderer-api.js.map +1 -0
- package/dist/runtime-tool-execution.d.ts +22 -0
- package/dist/runtime-tool-execution.d.ts.map +1 -0
- package/dist/runtime-tool-execution.js +245 -0
- package/dist/runtime-tool-execution.js.map +1 -0
- package/dist/runtime.d.ts +154 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +184 -0
- package/dist/runtime.js.map +1 -0
- package/dist/secrets.d.ts +75 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +255 -0
- package/dist/secrets.js.map +1 -0
- package/dist/session-actions.d.ts +45 -0
- package/dist/session-actions.d.ts.map +1 -0
- package/dist/session-actions.js +393 -0
- package/dist/session-actions.js.map +1 -0
- package/dist/skills.d.ts +43 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +333 -0
- package/dist/skills.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +17 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/tool-requests.d.ts +58 -0
- package/dist/tool-requests.d.ts.map +1 -0
- package/dist/tool-requests.js +122 -0
- package/dist/tool-requests.js.map +1 -0
- package/dist/tools.d.ts +45 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +50 -0
- package/dist/tools.js.map +1 -0
- package/dist/wyrdos-integration.d.ts +32 -0
- package/dist/wyrdos-integration.d.ts.map +1 -0
- package/dist/wyrdos-integration.js +183 -0
- package/dist/wyrdos-integration.js.map +1 -0
- package/package.json +51 -0
package/dist/secrets.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
import { readActorConfig, updateActorConfig } from "@useactor/storage";
|
|
5
|
+
function normalizeAvailableModels(modelIds) {
|
|
6
|
+
return [...new Set(modelIds.map((value) => value.trim()).filter(Boolean))];
|
|
7
|
+
}
|
|
8
|
+
function normalizeContextWindows(contextWindowByModelId) {
|
|
9
|
+
return Object.fromEntries(Object.entries(contextWindowByModelId).filter(([modelId, contextWindow]) => modelId.trim().length > 0 &&
|
|
10
|
+
Number.isInteger(contextWindow) &&
|
|
11
|
+
contextWindow > 0));
|
|
12
|
+
}
|
|
13
|
+
function normalizeProviderConfig(input) {
|
|
14
|
+
const availableModelIds = normalizeAvailableModels(input.availableModelIds);
|
|
15
|
+
if (!availableModelIds.includes(input.defaultModelId)) {
|
|
16
|
+
throw new Error(`Default model \"${input.defaultModelId}\" is not in availableModelIds.`);
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
providerId: input.providerId,
|
|
20
|
+
name: input.name,
|
|
21
|
+
authMethod: input.authMethod,
|
|
22
|
+
models: {
|
|
23
|
+
defaultModelId: input.defaultModelId,
|
|
24
|
+
availableModelIds,
|
|
25
|
+
...(input.contextWindowByModelId
|
|
26
|
+
? { contextWindowByModelId: normalizeContextWindows(input.contextWindowByModelId) }
|
|
27
|
+
: {})
|
|
28
|
+
},
|
|
29
|
+
secretRef: {
|
|
30
|
+
secretId: input.secretRef.secretId
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function listProviderConfigsFromConfig(config) {
|
|
35
|
+
const cli = config.cli;
|
|
36
|
+
if (!cli || typeof cli !== "object") {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const providers = cli.providers;
|
|
40
|
+
if (!providers || typeof providers !== "object") {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
return Object.values(providers).filter(Boolean);
|
|
44
|
+
}
|
|
45
|
+
function getProviderConfigsMap(config) {
|
|
46
|
+
const existing = listProviderConfigsFromConfig(config);
|
|
47
|
+
return Object.fromEntries(existing.map((providerConfig) => [providerConfig.providerId, providerConfig]));
|
|
48
|
+
}
|
|
49
|
+
export async function createProviderConfig(options) {
|
|
50
|
+
const nextProviderConfig = normalizeProviderConfig(options.input);
|
|
51
|
+
await updateActorConfig({
|
|
52
|
+
...options,
|
|
53
|
+
update(config) {
|
|
54
|
+
const providerConfigs = getProviderConfigsMap(config);
|
|
55
|
+
if (providerConfigs[nextProviderConfig.providerId]) {
|
|
56
|
+
throw new Error(`Provider config already exists: ${nextProviderConfig.providerId}`);
|
|
57
|
+
}
|
|
58
|
+
providerConfigs[nextProviderConfig.providerId] = nextProviderConfig;
|
|
59
|
+
return {
|
|
60
|
+
...config,
|
|
61
|
+
cli: {
|
|
62
|
+
...(config.cli ?? {}),
|
|
63
|
+
providers: providerConfigs
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return nextProviderConfig;
|
|
69
|
+
}
|
|
70
|
+
export async function listProviderConfigs(options) {
|
|
71
|
+
const config = await readActorConfig(options);
|
|
72
|
+
return [...listProviderConfigsFromConfig(config)].sort((a, b) => a.providerId.localeCompare(b.providerId));
|
|
73
|
+
}
|
|
74
|
+
export async function getProviderConfig(providerId, options) {
|
|
75
|
+
const providers = await listProviderConfigs(options);
|
|
76
|
+
return providers.find((provider) => provider.providerId === providerId);
|
|
77
|
+
}
|
|
78
|
+
export async function updateProviderConfig(options) {
|
|
79
|
+
const updated = await updateActorConfig({
|
|
80
|
+
...options,
|
|
81
|
+
update(config) {
|
|
82
|
+
const providerConfigs = getProviderConfigsMap(config);
|
|
83
|
+
const existing = providerConfigs[options.input.providerId];
|
|
84
|
+
if (!existing) {
|
|
85
|
+
throw new Error(`Provider config not found: ${options.input.providerId}`);
|
|
86
|
+
}
|
|
87
|
+
const availableModelIds = normalizeAvailableModels(options.input.availableModelIds ?? existing.models.availableModelIds);
|
|
88
|
+
const defaultModelId = options.input.defaultModelId ?? existing.models.defaultModelId;
|
|
89
|
+
if (!availableModelIds.includes(defaultModelId)) {
|
|
90
|
+
throw new Error(`Default model \"${defaultModelId}\" is not in availableModelIds.`);
|
|
91
|
+
}
|
|
92
|
+
const next = {
|
|
93
|
+
providerId: existing.providerId,
|
|
94
|
+
name: options.input.name ?? existing.name,
|
|
95
|
+
authMethod: options.input.authMethod ?? existing.authMethod,
|
|
96
|
+
models: {
|
|
97
|
+
defaultModelId,
|
|
98
|
+
availableModelIds,
|
|
99
|
+
...(options.input.contextWindowByModelId ?? existing.models.contextWindowByModelId
|
|
100
|
+
? {
|
|
101
|
+
contextWindowByModelId: normalizeContextWindows(options.input.contextWindowByModelId ?? existing.models.contextWindowByModelId ?? {})
|
|
102
|
+
}
|
|
103
|
+
: {})
|
|
104
|
+
},
|
|
105
|
+
secretRef: options.input.secretRef ?? existing.secretRef
|
|
106
|
+
};
|
|
107
|
+
providerConfigs[existing.providerId] = next;
|
|
108
|
+
return {
|
|
109
|
+
...config,
|
|
110
|
+
cli: {
|
|
111
|
+
...(config.cli ?? {}),
|
|
112
|
+
providers: providerConfigs
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
const provider = listProviderConfigsFromConfig(updated).find((entry) => entry.providerId === options.input.providerId);
|
|
118
|
+
if (!provider) {
|
|
119
|
+
throw new Error(`Provider config not found after update: ${options.input.providerId}`);
|
|
120
|
+
}
|
|
121
|
+
return provider;
|
|
122
|
+
}
|
|
123
|
+
export function createMockSecretStore(now = () => new Date()) {
|
|
124
|
+
const values = new Map();
|
|
125
|
+
const refs = new Map();
|
|
126
|
+
return {
|
|
127
|
+
async setSecret(input) {
|
|
128
|
+
const secretId = input.secretId ?? `secret_${randomUUID()}`;
|
|
129
|
+
const ref = {
|
|
130
|
+
secretId,
|
|
131
|
+
updatedAt: now().toISOString(),
|
|
132
|
+
...(input.providerId ? { providerId: input.providerId } : {}),
|
|
133
|
+
...(input.label ? { label: input.label } : {})
|
|
134
|
+
};
|
|
135
|
+
values.set(secretId, input.value);
|
|
136
|
+
refs.set(secretId, ref);
|
|
137
|
+
return ref;
|
|
138
|
+
},
|
|
139
|
+
async getSecret(secretId) {
|
|
140
|
+
return values.get(secretId);
|
|
141
|
+
},
|
|
142
|
+
async deleteSecret(secretId) {
|
|
143
|
+
const hadValue = values.delete(secretId);
|
|
144
|
+
refs.delete(secretId);
|
|
145
|
+
return hadValue;
|
|
146
|
+
},
|
|
147
|
+
async listSecretRefs() {
|
|
148
|
+
return [...refs.values()].sort((a, b) => a.secretId.localeCompare(b.secretId));
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const execFileAsync = promisify(execFile);
|
|
153
|
+
function isCommandNotFoundError(error) {
|
|
154
|
+
return Boolean(error &&
|
|
155
|
+
typeof error === "object" &&
|
|
156
|
+
"code" in error &&
|
|
157
|
+
(error.code === "ENOENT" ||
|
|
158
|
+
error.code === 127));
|
|
159
|
+
}
|
|
160
|
+
function isSecurityItemNotFoundError(error) {
|
|
161
|
+
return Boolean(error &&
|
|
162
|
+
typeof error === "object" &&
|
|
163
|
+
"code" in error &&
|
|
164
|
+
error.code === 44);
|
|
165
|
+
}
|
|
166
|
+
function redactSecret(value, message) {
|
|
167
|
+
return value ? message.split(value).join("[REDACTED]") : message;
|
|
168
|
+
}
|
|
169
|
+
function normalizeKeychainError(error, action, secretValue) {
|
|
170
|
+
if (isCommandNotFoundError(error)) {
|
|
171
|
+
return new Error("System keychain command not found.");
|
|
172
|
+
}
|
|
173
|
+
const message = error instanceof Error ? error.message : `Failed to ${action} system keychain secret.`;
|
|
174
|
+
return new Error(redactSecret(secretValue ?? "", message));
|
|
175
|
+
}
|
|
176
|
+
export function createSystemKeychainSecretStore(options = {}) {
|
|
177
|
+
const platform = options.platform ?? process.platform;
|
|
178
|
+
const serviceName = options.serviceName ?? "actor";
|
|
179
|
+
const now = options.now ?? (() => new Date());
|
|
180
|
+
const run = options.execFile ??
|
|
181
|
+
(async (file, args) => {
|
|
182
|
+
const result = await execFileAsync(file, [...args]);
|
|
183
|
+
return { stdout: result.stdout, stderr: result.stderr };
|
|
184
|
+
});
|
|
185
|
+
const ensureSupported = async () => {
|
|
186
|
+
if (platform !== "darwin") {
|
|
187
|
+
throw new Error(`System keychain SecretStore is not supported on ${platform}.`);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
async setSecret(input) {
|
|
192
|
+
await ensureSupported();
|
|
193
|
+
const secretId = input.secretId ?? `secret_${randomUUID()}`;
|
|
194
|
+
try {
|
|
195
|
+
await run("security", [
|
|
196
|
+
"add-generic-password",
|
|
197
|
+
"-U",
|
|
198
|
+
"-s",
|
|
199
|
+
serviceName,
|
|
200
|
+
"-a",
|
|
201
|
+
secretId,
|
|
202
|
+
"-w",
|
|
203
|
+
input.value
|
|
204
|
+
]);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
throw normalizeKeychainError(error, "set", input.value);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
secretId,
|
|
211
|
+
updatedAt: now().toISOString(),
|
|
212
|
+
...(input.providerId ? { providerId: input.providerId } : {}),
|
|
213
|
+
...(input.label ? { label: input.label } : {})
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
async getSecret(secretId) {
|
|
217
|
+
await ensureSupported();
|
|
218
|
+
try {
|
|
219
|
+
const result = await run("security", [
|
|
220
|
+
"find-generic-password",
|
|
221
|
+
"-s",
|
|
222
|
+
serviceName,
|
|
223
|
+
"-a",
|
|
224
|
+
secretId,
|
|
225
|
+
"-w"
|
|
226
|
+
]);
|
|
227
|
+
return result.stdout.trim() || undefined;
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (isSecurityItemNotFoundError(error)) {
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
throw normalizeKeychainError(error, "read");
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
async deleteSecret(secretId) {
|
|
237
|
+
await ensureSupported();
|
|
238
|
+
try {
|
|
239
|
+
await run("security", ["delete-generic-password", "-s", serviceName, "-a", secretId]);
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
if (isSecurityItemNotFoundError(error)) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
throw normalizeKeychainError(error, "delete");
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
async listSecretRefs() {
|
|
250
|
+
await ensureSupported();
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type RuntimeEvent } from "./events.js";
|
|
2
|
+
import { type ActorRuntime, type SessionMessage, type SessionRef } from "./runtime.js";
|
|
3
|
+
export interface SessionActionResult {
|
|
4
|
+
readonly session: SessionRef;
|
|
5
|
+
readonly rolloutPath: string;
|
|
6
|
+
readonly events: readonly RuntimeEvent[];
|
|
7
|
+
}
|
|
8
|
+
export interface ExportSessionTranscriptResult {
|
|
9
|
+
readonly filePath: string;
|
|
10
|
+
readonly content: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function renameSession(options: {
|
|
13
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
14
|
+
readonly sessionId: string;
|
|
15
|
+
readonly title: string;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export declare function forkSession(options: {
|
|
18
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
19
|
+
readonly runtime: ActorRuntime;
|
|
20
|
+
readonly sessionId: string;
|
|
21
|
+
}): Promise<SessionActionResult>;
|
|
22
|
+
export declare function compactSession(options: {
|
|
23
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
24
|
+
readonly runtime: ActorRuntime;
|
|
25
|
+
readonly sessionId: string;
|
|
26
|
+
}): Promise<SessionActionResult>;
|
|
27
|
+
export declare function getLastAgentMessage(options: {
|
|
28
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
29
|
+
readonly sessionId: string;
|
|
30
|
+
}): Promise<string>;
|
|
31
|
+
export declare function formatSessionTranscript(options: {
|
|
32
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
33
|
+
readonly sessionId: string;
|
|
34
|
+
}): Promise<string>;
|
|
35
|
+
export declare function exportSessionTranscript(options: {
|
|
36
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
37
|
+
readonly sessionId: string;
|
|
38
|
+
readonly cwd: string;
|
|
39
|
+
}): Promise<ExportSessionTranscriptResult>;
|
|
40
|
+
export declare function readSessionRuntimeEvents(options: {
|
|
41
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
42
|
+
readonly sessionId: string;
|
|
43
|
+
}): Promise<readonly RuntimeEvent[]>;
|
|
44
|
+
export declare function runtimeEventsToSessionMessages(events: readonly RuntimeEvent[]): readonly SessionMessage[];
|
|
45
|
+
//# sourceMappingURL=session-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-actions.d.ts","sourceRoot":"","sources":["../src/session-actions.ts"],"names":[],"mappings":"AAaA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,YAAY,EAIjB,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoB/B;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgD/B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAYzC;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CA4BnC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,SAAS,cAAc,EAAE,CA8F3B"}
|