@markusylisiurunen/tau 0.2.49 → 0.2.51

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.
@@ -1,5 +1,7 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, isAbsolute, resolve } from "node:path";
1
+ import { readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ import { parseCronSchedule } from "./cron.js";
3
5
  export class AsyncDaemonConfigError extends Error {
4
6
  constructor(message) {
5
7
  super(message);
@@ -12,6 +14,40 @@ function isRecord(value) {
12
14
  function isPositiveInteger(value) {
13
15
  return (typeof value === "number" && Number.isInteger(value) && Number.isFinite(value) && value > 0);
14
16
  }
17
+ function parseMarkdownWithFrontMatter(content) {
18
+ const lines = content.split("\n");
19
+ if (lines[0]?.trim() !== "---") {
20
+ return { frontMatter: {}, body: content.trim() };
21
+ }
22
+ let endIndex = -1;
23
+ for (let i = 1; i < lines.length; i += 1) {
24
+ if (lines[i]?.trim() === "---") {
25
+ endIndex = i;
26
+ break;
27
+ }
28
+ }
29
+ if (endIndex === -1) {
30
+ return { frontMatter: {}, body: content.trim() };
31
+ }
32
+ const frontMatterLines = lines.slice(1, endIndex);
33
+ const bodyLines = lines.slice(endIndex + 1);
34
+ return {
35
+ frontMatter: parseYamlFrontMatter(frontMatterLines.join("\n")),
36
+ body: bodyLines.join("\n").trim(),
37
+ };
38
+ }
39
+ function parseYamlFrontMatter(yamlText) {
40
+ try {
41
+ const parsed = parseYaml(yamlText);
42
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
43
+ return {};
44
+ }
45
+ return parsed;
46
+ }
47
+ catch {
48
+ return {};
49
+ }
50
+ }
15
51
  function parseAsyncIdList(raw, fieldPath, sourceLabel) {
16
52
  if (!Array.isArray(raw)) {
17
53
  return { errors: [`${sourceLabel}: ${fieldPath} must be an array of integers.`] };
@@ -25,12 +61,33 @@ function parseAsyncIdList(raw, fieldPath, sourceLabel) {
25
61
  }
26
62
  return { values, errors: [] };
27
63
  }
28
- function parseTelegramConfig(raw, sourceLabel) {
29
- if (raw === undefined) {
30
- return { errors: [] };
64
+ function parseAsyncStringList(raw, fieldPath, sourceLabel) {
65
+ if (!Array.isArray(raw)) {
66
+ return { errors: [`${sourceLabel}: ${fieldPath} must be an array of non-empty strings.`] };
31
67
  }
68
+ const values = [];
69
+ for (const entry of raw) {
70
+ if (typeof entry !== "string" || !entry.trim()) {
71
+ return { errors: [`${sourceLabel}: ${fieldPath} must be an array of non-empty strings.`] };
72
+ }
73
+ values.push(entry.trim());
74
+ }
75
+ return { values, errors: [] };
76
+ }
77
+ const TELEGRAM_DEFAULT_BOT_ID = "default";
78
+ const TELEGRAM_BOT_CONFIG_KEYS = new Set([
79
+ "botToken",
80
+ "allowedProjectIds",
81
+ "allowedUserIds",
82
+ "allowedChatIds",
83
+ "defaultProjectId",
84
+ "systemMessage",
85
+ "pollIntervalMs",
86
+ "requestTimeoutSeconds",
87
+ ]);
88
+ function parseTelegramBotConfig(raw, fieldPath, sourceLabel, knownProjectIds) {
32
89
  if (!isRecord(raw)) {
33
- return { errors: [`${sourceLabel}: telegram must be an object.`] };
90
+ return { errors: [`${sourceLabel}: ${fieldPath} must be an object.`] };
34
91
  }
35
92
  const data = raw;
36
93
  const config = {};
@@ -40,18 +97,36 @@ function parseTelegramConfig(raw, sourceLabel) {
40
97
  config.botToken = data.botToken.trim();
41
98
  }
42
99
  else {
43
- errors.push(`${sourceLabel}: telegram.botToken must be a non-empty string.`);
100
+ errors.push(`${sourceLabel}: ${fieldPath}.botToken must be a non-empty string.`);
101
+ }
102
+ }
103
+ if (data.allowedProjectIds !== undefined) {
104
+ const parsed = parseAsyncStringList(data.allowedProjectIds, `${fieldPath}.allowedProjectIds`, sourceLabel);
105
+ if (parsed.values) {
106
+ if (parsed.values.length === 0) {
107
+ errors.push(`${sourceLabel}: ${fieldPath}.allowedProjectIds must not be empty.`);
108
+ }
109
+ else {
110
+ const missingProjectIds = parsed.values.filter((projectId) => !knownProjectIds.has(projectId));
111
+ if (missingProjectIds.length > 0) {
112
+ errors.push(`${sourceLabel}: ${fieldPath}.allowedProjectIds contains unknown project ids: ${missingProjectIds.join(", ")}`);
113
+ }
114
+ else {
115
+ config.allowedProjectIds = parsed.values;
116
+ }
117
+ }
44
118
  }
119
+ errors.push(...parsed.errors);
45
120
  }
46
121
  if (data.allowedUserIds !== undefined) {
47
- const parsed = parseAsyncIdList(data.allowedUserIds, "telegram.allowedUserIds", sourceLabel);
122
+ const parsed = parseAsyncIdList(data.allowedUserIds, `${fieldPath}.allowedUserIds`, sourceLabel);
48
123
  if (parsed.values) {
49
124
  config.allowedUserIds = parsed.values;
50
125
  }
51
126
  errors.push(...parsed.errors);
52
127
  }
53
128
  if (data.allowedChatIds !== undefined) {
54
- const parsed = parseAsyncIdList(data.allowedChatIds, "telegram.allowedChatIds", sourceLabel);
129
+ const parsed = parseAsyncIdList(data.allowedChatIds, `${fieldPath}.allowedChatIds`, sourceLabel);
55
130
  if (parsed.values) {
56
131
  config.allowedChatIds = parsed.values;
57
132
  }
@@ -62,7 +137,7 @@ function parseTelegramConfig(raw, sourceLabel) {
62
137
  config.defaultProjectId = data.defaultProjectId.trim();
63
138
  }
64
139
  else {
65
- errors.push(`${sourceLabel}: telegram.defaultProjectId must be a non-empty string.`);
140
+ errors.push(`${sourceLabel}: ${fieldPath}.defaultProjectId must be a non-empty string.`);
66
141
  }
67
142
  }
68
143
  if (data.systemMessage !== undefined) {
@@ -70,7 +145,7 @@ function parseTelegramConfig(raw, sourceLabel) {
70
145
  config.systemMessage = data.systemMessage.trim();
71
146
  }
72
147
  else {
73
- errors.push(`${sourceLabel}: telegram.systemMessage must be a non-empty string.`);
148
+ errors.push(`${sourceLabel}: ${fieldPath}.systemMessage must be a non-empty string.`);
74
149
  }
75
150
  }
76
151
  if (data.pollIntervalMs !== undefined) {
@@ -78,7 +153,7 @@ function parseTelegramConfig(raw, sourceLabel) {
78
153
  config.pollIntervalMs = data.pollIntervalMs;
79
154
  }
80
155
  else {
81
- errors.push(`${sourceLabel}: telegram.pollIntervalMs must be a positive integer.`);
156
+ errors.push(`${sourceLabel}: ${fieldPath}.pollIntervalMs must be a positive integer.`);
82
157
  }
83
158
  }
84
159
  if (data.requestTimeoutSeconds !== undefined) {
@@ -86,7 +161,91 @@ function parseTelegramConfig(raw, sourceLabel) {
86
161
  config.requestTimeoutSeconds = data.requestTimeoutSeconds;
87
162
  }
88
163
  else {
89
- errors.push(`${sourceLabel}: telegram.requestTimeoutSeconds must be a positive integer.`);
164
+ errors.push(`${sourceLabel}: ${fieldPath}.requestTimeoutSeconds must be a positive integer.`);
165
+ }
166
+ }
167
+ if (config.defaultProjectId && !knownProjectIds.has(config.defaultProjectId)) {
168
+ errors.push(`${sourceLabel}: ${fieldPath}.defaultProjectId '${config.defaultProjectId}' is not configured`);
169
+ }
170
+ if (config.defaultProjectId &&
171
+ config.allowedProjectIds &&
172
+ !config.allowedProjectIds.includes(config.defaultProjectId)) {
173
+ errors.push(`${sourceLabel}: ${fieldPath}.defaultProjectId must be included in ${fieldPath}.allowedProjectIds`);
174
+ }
175
+ if (Object.keys(config).length === 0) {
176
+ return { errors };
177
+ }
178
+ return { config, errors };
179
+ }
180
+ function parseTelegramConfig(raw, sourceLabel, knownProjectIds) {
181
+ if (raw === undefined) {
182
+ return { errors: [] };
183
+ }
184
+ if (!isRecord(raw)) {
185
+ return { errors: [`${sourceLabel}: telegram must be an object.`] };
186
+ }
187
+ const data = raw;
188
+ const entries = Object.entries(data);
189
+ const hasLegacyKeys = entries.some(([key]) => TELEGRAM_BOT_CONFIG_KEYS.has(key));
190
+ const hasNamedBots = entries.some(([key]) => !TELEGRAM_BOT_CONFIG_KEYS.has(key));
191
+ if (hasLegacyKeys && hasNamedBots) {
192
+ return {
193
+ errors: [
194
+ `${sourceLabel}: telegram must be either a single bot config object or a map of bot ids to bot config objects.`,
195
+ ],
196
+ };
197
+ }
198
+ const config = {};
199
+ const errors = [];
200
+ if (hasLegacyKeys || entries.length === 0) {
201
+ const parsed = parseTelegramBotConfig(data, "telegram", sourceLabel, knownProjectIds);
202
+ if (parsed.config) {
203
+ config[TELEGRAM_DEFAULT_BOT_ID] = parsed.config;
204
+ }
205
+ errors.push(...parsed.errors);
206
+ }
207
+ else {
208
+ for (const [botId, botRaw] of entries) {
209
+ if (!botId.trim()) {
210
+ errors.push(`${sourceLabel}: telegram bot id must be a non-empty string.`);
211
+ continue;
212
+ }
213
+ const parsed = parseTelegramBotConfig(botRaw, `telegram.${botId}`, sourceLabel, knownProjectIds);
214
+ if (parsed.config) {
215
+ config[botId] = parsed.config;
216
+ }
217
+ errors.push(...parsed.errors);
218
+ }
219
+ }
220
+ if (Object.keys(config).length === 0) {
221
+ return { errors };
222
+ }
223
+ return { config, errors };
224
+ }
225
+ function parseCronConfig(raw, sourceLabel) {
226
+ if (raw === undefined) {
227
+ return { errors: [] };
228
+ }
229
+ if (!isRecord(raw)) {
230
+ return { errors: [`${sourceLabel}: cron must be an object.`] };
231
+ }
232
+ const data = raw;
233
+ const config = {};
234
+ const errors = [];
235
+ if (data.systemMessage !== undefined) {
236
+ if (typeof data.systemMessage === "string" && data.systemMessage.trim()) {
237
+ config.systemMessage = data.systemMessage.trim();
238
+ }
239
+ else {
240
+ errors.push(`${sourceLabel}: cron.systemMessage must be a non-empty string.`);
241
+ }
242
+ }
243
+ if (data.jobsDir !== undefined) {
244
+ if (typeof data.jobsDir === "string" && data.jobsDir.trim()) {
245
+ config.jobsDir = data.jobsDir.trim();
246
+ }
247
+ else {
248
+ errors.push(`${sourceLabel}: cron.jobsDir must be a non-empty string.`);
90
249
  }
91
250
  }
92
251
  if (Object.keys(config).length === 0) {
@@ -232,6 +391,133 @@ function parseProjects(raw, sourceLabel, configDir) {
232
391
  }
233
392
  return { projects, errors };
234
393
  }
394
+ function parseCronJobMarkdownFile(filePath, projects, sourceLabel) {
395
+ let content;
396
+ try {
397
+ content = readFileSync(filePath, "utf8");
398
+ }
399
+ catch (error) {
400
+ return {
401
+ errors: [
402
+ `${sourceLabel}: failed to read cron job file '${filePath}': ${error instanceof Error ? error.message : String(error)}`,
403
+ ],
404
+ };
405
+ }
406
+ const { frontMatter, body } = parseMarkdownWithFrontMatter(content);
407
+ const fileId = basename(filePath, ".md").trim();
408
+ const errors = [];
409
+ const enabledRaw = frontMatter.enabled;
410
+ if (enabledRaw !== undefined && typeof enabledRaw !== "boolean") {
411
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter enabled must be a boolean when set.`);
412
+ return { errors };
413
+ }
414
+ if (enabledRaw === false) {
415
+ return { errors: [] };
416
+ }
417
+ const idRaw = frontMatter.id;
418
+ const id = typeof idRaw === "string" ? idRaw.trim() : "";
419
+ if (!id) {
420
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter id must be a non-empty string.`);
421
+ return { errors };
422
+ }
423
+ if (id !== fileId) {
424
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter id "${id}" must match file name "${fileId}".`);
425
+ }
426
+ const projectIdRaw = frontMatter.projectId;
427
+ const projectId = typeof projectIdRaw === "string" ? projectIdRaw.trim() : "";
428
+ if (!projectId) {
429
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter projectId must be a non-empty string.`);
430
+ }
431
+ else if (!projects[projectId]) {
432
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter projectId refers to an unknown project.`);
433
+ }
434
+ const scheduleRaw = frontMatter.schedule;
435
+ const schedule = typeof scheduleRaw === "string" ? scheduleRaw.trim() : "";
436
+ if (!schedule) {
437
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter schedule must be a non-empty string.`);
438
+ }
439
+ else {
440
+ try {
441
+ parseCronSchedule(schedule);
442
+ }
443
+ catch (error) {
444
+ errors.push(`${sourceLabel}: ${filePath}: frontmatter schedule is invalid: ${error instanceof Error ? error.message : String(error)}`);
445
+ }
446
+ }
447
+ const prompt = body.trim();
448
+ if (!prompt) {
449
+ errors.push(`${sourceLabel}: ${filePath}: cron job prompt body must be non-empty.`);
450
+ }
451
+ if (errors.length > 0) {
452
+ return { errors };
453
+ }
454
+ return {
455
+ id,
456
+ job: {
457
+ projectId,
458
+ schedule,
459
+ prompt,
460
+ },
461
+ errors: [],
462
+ };
463
+ }
464
+ function parseCronJobsDir(jobsDir, sourceLabel, configDir, projects) {
465
+ if (jobsDir === undefined) {
466
+ return { configured: false, cronJobs: {}, errors: [] };
467
+ }
468
+ const cronJobsDir = resolve(configDir, jobsDir);
469
+ let directoryStat;
470
+ try {
471
+ directoryStat = statSync(cronJobsDir);
472
+ }
473
+ catch (error) {
474
+ return {
475
+ configured: true,
476
+ cronJobs: {},
477
+ errors: [
478
+ `${sourceLabel}: cron.jobsDir does not exist: ${cronJobsDir} (${error instanceof Error ? error.message : String(error)})`,
479
+ ],
480
+ };
481
+ }
482
+ if (!directoryStat.isDirectory()) {
483
+ return {
484
+ configured: true,
485
+ cronJobs: {},
486
+ errors: [`${sourceLabel}: cron.jobsDir is not a directory: ${cronJobsDir}`],
487
+ };
488
+ }
489
+ let fileNames;
490
+ try {
491
+ fileNames = readdirSync(cronJobsDir)
492
+ .filter((name) => name.toLowerCase().endsWith(".md"))
493
+ .sort();
494
+ }
495
+ catch (error) {
496
+ return {
497
+ configured: true,
498
+ cronJobs: {},
499
+ errors: [
500
+ `${sourceLabel}: failed to read cron.jobsDir '${cronJobsDir}': ${error instanceof Error ? error.message : String(error)}`,
501
+ ],
502
+ };
503
+ }
504
+ const errors = [];
505
+ const cronJobs = {};
506
+ for (const fileName of fileNames) {
507
+ const filePath = join(cronJobsDir, fileName);
508
+ const parsed = parseCronJobMarkdownFile(filePath, projects, sourceLabel);
509
+ errors.push(...parsed.errors);
510
+ if (!parsed.id || !parsed.job) {
511
+ continue;
512
+ }
513
+ if (cronJobs[parsed.id]) {
514
+ errors.push(`${sourceLabel}: duplicate cron job id '${parsed.id}'.`);
515
+ continue;
516
+ }
517
+ cronJobs[parsed.id] = parsed.job;
518
+ }
519
+ return { configured: true, cronJobs, errors };
520
+ }
235
521
  export function loadAsyncDaemonConfig(configFilePath) {
236
522
  const resolvedPath = resolve(configFilePath);
237
523
  const sourceLabel = `async daemon config (${resolvedPath})`;
@@ -303,8 +589,10 @@ export function loadAsyncDaemonConfig(configFilePath) {
303
589
  }
304
590
  }
305
591
  const projectsResult = parseProjects(data.projects, sourceLabel, configDir);
306
- const telegramResult = parseTelegramConfig(data.telegram, sourceLabel);
307
- errors.push(...projectsResult.errors, ...telegramResult.errors);
592
+ const telegramResult = parseTelegramConfig(data.telegram, sourceLabel, new Set(Object.keys(projectsResult.projects)));
593
+ const cronResult = parseCronConfig(data.cron, sourceLabel);
594
+ const cronJobsResult = parseCronJobsDir(cronResult.config?.jobsDir, sourceLabel, configDir, projectsResult.projects);
595
+ errors.push(...projectsResult.errors, ...telegramResult.errors, ...cronResult.errors, ...cronJobsResult.errors);
308
596
  if (errors.length > 0) {
309
597
  throw new AsyncDaemonConfigError(errors.join("\n"));
310
598
  }
@@ -316,6 +604,8 @@ export function loadAsyncDaemonConfig(configFilePath) {
316
604
  workspaceRoot,
317
605
  ...(systemMessage ? { systemMessage } : {}),
318
606
  ...(telegramResult.config ? { telegram: telegramResult.config } : {}),
607
+ ...(cronResult.config ? { cron: cronResult.config } : {}),
608
+ ...(cronJobsResult.configured ? { cronJobs: cronJobsResult.cronJobs } : {}),
319
609
  projects: projectsResult.projects,
320
610
  };
321
611
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server_config.js","sourceRoot":"","sources":["../../../src/core/async/server_config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server_config.js","sourceRoot":"","sources":["../../../src/core/async/server_config.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ class AsyncSessionManagerImpl {
50
50
  record: {
51
51
  id,
52
52
  projectId: input.projectId,
53
+ ...(input.ownerId ? { ownerId: input.ownerId } : {}),
53
54
  state: "queued",
54
55
  createdAt: now,
55
56
  updatedAt: now,
@@ -67,7 +68,7 @@ class AsyncSessionManagerImpl {
67
68
  session: this.toRecord(entry),
68
69
  });
69
70
  let initializePromise;
70
- initializePromise = this.initializeSession(entry, input.prompt).finally(() => {
71
+ initializePromise = this.initializeSession(entry, input.prompt, input.additionalSystemMessage).finally(() => {
71
72
  if (entry.initializePromise === initializePromise) {
72
73
  entry.initializePromise = undefined;
73
74
  }
@@ -168,7 +169,7 @@ class AsyncSessionManagerImpl {
168
169
  this.closePromise = this.closeAllSessions();
169
170
  await this.closePromise;
170
171
  }
171
- async initializeSession(entry, prompt) {
172
+ async initializeSession(entry, prompt, additionalSystemMessage) {
172
173
  try {
173
174
  this.setState(entry, "preparing-workspace");
174
175
  this.log(entry, "info", "preparing workspace", {
@@ -217,7 +218,7 @@ class AsyncSessionManagerImpl {
217
218
  this.handleClientEvent(entry, event);
218
219
  });
219
220
  if (prompt?.trim()) {
220
- await this.submitText(entry, prompt.trim(), "initial-prompt");
221
+ await this.submitText(entry, prompt.trim(), "initial-prompt", additionalSystemMessage);
221
222
  }
222
223
  if (!entry.cancelRequested && entry.record.state !== "failed") {
223
224
  this.setState(entry, "waiting-input");
@@ -538,7 +539,110 @@ class AsyncSessionManagerImpl {
538
539
  return { ...entry.record };
539
540
  }
540
541
  }
542
+ const CLOSEABLE_STATES_WITH_CLOSE_ALL = new Set([
543
+ "waiting-input",
544
+ "failed",
545
+ "canceled",
546
+ ]);
547
+ class ScopedAsyncSessionManager {
548
+ sessionManager;
549
+ ownerId;
550
+ allowedProjectIds;
551
+ constructor(options) {
552
+ this.sessionManager = options.sessionManager;
553
+ this.ownerId = options.ownerId;
554
+ this.allowedProjectIds = options.allowedProjectIds;
555
+ }
556
+ async createSession(input) {
557
+ if (!this.allowedProjectIds.has(input.projectId)) {
558
+ throw new AsyncSessionManagerError("invalid_project", `unknown async project '${input.projectId}'`);
559
+ }
560
+ return await this.sessionManager.createSession({
561
+ projectId: input.projectId,
562
+ ownerId: this.ownerId,
563
+ ...(input.prompt ? { prompt: input.prompt } : {}),
564
+ ...(input.additionalSystemMessage
565
+ ? { additionalSystemMessage: input.additionalSystemMessage }
566
+ : {}),
567
+ });
568
+ }
569
+ listSessions() {
570
+ return this.sessionManager.listSessions().filter((session) => this.isVisibleSession(session));
571
+ }
572
+ getSession(sessionId) {
573
+ const session = this.sessionManager.getSession(sessionId);
574
+ if (!session || !this.isVisibleSession(session)) {
575
+ return undefined;
576
+ }
577
+ return session;
578
+ }
579
+ getLogs(sessionId) {
580
+ const session = this.sessionManager.getSession(sessionId);
581
+ if (!session || !this.isVisibleSession(session)) {
582
+ return undefined;
583
+ }
584
+ return this.sessionManager.getLogs(sessionId);
585
+ }
586
+ async sendMessage(sessionId, text, options) {
587
+ this.requireSession(sessionId);
588
+ return await this.sessionManager.sendMessage(sessionId, text, options);
589
+ }
590
+ async interruptSession(sessionId) {
591
+ this.requireSession(sessionId);
592
+ return await this.sessionManager.interruptSession(sessionId);
593
+ }
594
+ async cancelSession(sessionId) {
595
+ this.requireSession(sessionId);
596
+ return await this.sessionManager.cancelSession(sessionId);
597
+ }
598
+ async closeSession(sessionId) {
599
+ this.requireSession(sessionId);
600
+ return await this.sessionManager.closeSession(sessionId);
601
+ }
602
+ async closeInactiveSessions() {
603
+ const closeableSessions = this.listSessions().filter((session) => CLOSEABLE_STATES_WITH_CLOSE_ALL.has(session.state));
604
+ const closed = [];
605
+ for (const session of closeableSessions) {
606
+ closed.push(await this.sessionManager.closeSession(session.id));
607
+ }
608
+ return closed;
609
+ }
610
+ async close() {
611
+ return;
612
+ }
613
+ onEvent(listener) {
614
+ return this.sessionManager.onEvent((event) => {
615
+ if (event.type === "session-created") {
616
+ if (this.isVisibleSession(event.session)) {
617
+ listener(event);
618
+ }
619
+ return;
620
+ }
621
+ const session = this.sessionManager.getSession(event.sessionId);
622
+ if (session && this.isVisibleSession(session)) {
623
+ listener(event);
624
+ }
625
+ });
626
+ }
627
+ requireSession(sessionId) {
628
+ const session = this.sessionManager.getSession(sessionId);
629
+ if (!session || !this.isVisibleSession(session)) {
630
+ throw new AsyncSessionManagerError("not_found", `session '${sessionId}' not found`);
631
+ }
632
+ return session;
633
+ }
634
+ isVisibleSession(session) {
635
+ return this.allowedProjectIds.has(session.projectId) && session.ownerId === this.ownerId;
636
+ }
637
+ }
541
638
  export function createAsyncSessionManager(options) {
542
639
  return new AsyncSessionManagerImpl(options);
543
640
  }
641
+ export function createScopedAsyncSessionManager(options) {
642
+ return new ScopedAsyncSessionManager({
643
+ sessionManager: options.sessionManager,
644
+ ownerId: options.ownerId,
645
+ allowedProjectIds: new Set(options.allowedProjectIds),
646
+ });
647
+ }
544
648
  //# sourceMappingURL=session_manager.js.map