@alook/cli 0.0.23 → 0.0.25
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/index.js +317 -38
- package/dist/meeting-runner.js +562 -0
- package/dist/session-runner.js +112 -6
- package/package.json +3 -2
package/dist/session-runner.js
CHANGED
|
@@ -42,6 +42,18 @@ var TASK_TYPES = {
|
|
|
42
42
|
var POLL_INTERVAL_MS = Number(process.env.POLL_INTERVAL_MS) || 3000;
|
|
43
43
|
var OFFLINE_THRESHOLD_MS = Number(process.env.OFFLINE_THRESHOLD_MS) || 9000;
|
|
44
44
|
var EVENT_POLL_INTERVAL_MS = Number(process.env.EVENT_POLL_INTERVAL_MS) || 2000;
|
|
45
|
+
var MeetingStatus = {
|
|
46
|
+
PENDING: "pending",
|
|
47
|
+
SCHEDULED: "scheduled",
|
|
48
|
+
JOINING: "joining",
|
|
49
|
+
RECORDING: "recording",
|
|
50
|
+
COMPLETED: "completed",
|
|
51
|
+
FAILED: "failed"
|
|
52
|
+
};
|
|
53
|
+
var TERMINAL_MEETING_STATUSES = [
|
|
54
|
+
MeetingStatus.COMPLETED,
|
|
55
|
+
MeetingStatus.FAILED
|
|
56
|
+
];
|
|
45
57
|
var DEV_WEB_URL = process.env.ALOOK_SERVER_URL || "http://localhost:3000";
|
|
46
58
|
var DEV_WS_DO_URL = process.env.DEV_WS_DO_URL || "http://localhost:8789";
|
|
47
59
|
var DEV_EMAIL_WORKER_URL = process.env.DEV_EMAIL_WORKER_URL || "http://localhost:8787";
|
|
@@ -13648,11 +13660,18 @@ var PollRequestSchema = exports_external.object({
|
|
|
13648
13660
|
max_tasks: exports_external.number().int().min(1).default(1),
|
|
13649
13661
|
cli_version: exports_external.string().optional()
|
|
13650
13662
|
});
|
|
13663
|
+
var FileRequestItemSchema = exports_external.object({
|
|
13664
|
+
id: exports_external.string(),
|
|
13665
|
+
agent_id: exports_external.string(),
|
|
13666
|
+
request_type: exports_external.enum(["tree", "read"]),
|
|
13667
|
+
path: exports_external.string()
|
|
13668
|
+
});
|
|
13651
13669
|
var PollResponseSchema = exports_external.object({
|
|
13652
13670
|
tasks: exports_external.array(TaskApiSchema),
|
|
13653
13671
|
evicted: exports_external.boolean().optional(),
|
|
13654
13672
|
pending_update: exports_external.object({ version: exports_external.string() }).optional(),
|
|
13655
|
-
pending_rescan: exports_external.boolean().optional()
|
|
13673
|
+
pending_rescan: exports_external.boolean().optional(),
|
|
13674
|
+
file_requests: exports_external.array(FileRequestItemSchema).optional()
|
|
13656
13675
|
});
|
|
13657
13676
|
var RegisterResponseSchema = exports_external.object({
|
|
13658
13677
|
runtimes: exports_external.array(exports_external.object({ id: exports_external.string() }))
|
|
@@ -13661,7 +13680,6 @@ var DaemonRuntimeItemSchema = exports_external.object({
|
|
|
13661
13680
|
type: exports_external.string().optional(),
|
|
13662
13681
|
provider: exports_external.string().optional(),
|
|
13663
13682
|
runtime_mode: exports_external.string().optional(),
|
|
13664
|
-
name: exports_external.string().optional(),
|
|
13665
13683
|
version: exports_external.string().optional(),
|
|
13666
13684
|
status: exports_external.string().optional(),
|
|
13667
13685
|
model: exports_external.string().optional()
|
|
@@ -13777,7 +13795,8 @@ var UpdateAgentRequestSchema = exports_external.object({
|
|
|
13777
13795
|
visibility: exports_external.enum(["public", "private"]).optional()
|
|
13778
13796
|
}).refine((v) => v.name !== undefined || v.description !== undefined || v.instructions !== undefined || v.runtime_id !== undefined || v.runtime_config !== undefined || v.visibility !== undefined, { message: "at least one field is required" });
|
|
13779
13797
|
var CreateConversationRequestSchema = exports_external.object({
|
|
13780
|
-
agent_id: exports_external.string().min(1, "agent_id is required")
|
|
13798
|
+
agent_id: exports_external.string().min(1, "agent_id is required"),
|
|
13799
|
+
channel: exports_external.string().optional()
|
|
13781
13800
|
});
|
|
13782
13801
|
var CreateMessageRequestSchema = exports_external.object({
|
|
13783
13802
|
content: exports_external.string().min(1, "content is required")
|
|
@@ -13805,6 +13824,13 @@ var SendEmailRequestSchema = exports_external.object({
|
|
|
13805
13824
|
var UpdateEmailStatusRequestSchema = exports_external.object({
|
|
13806
13825
|
status: exports_external.enum(["unread", "read", "archived"])
|
|
13807
13826
|
});
|
|
13827
|
+
var MeetingInfoSchema = exports_external.object({
|
|
13828
|
+
title: exports_external.string(),
|
|
13829
|
+
meetingUrl: exports_external.string(),
|
|
13830
|
+
startTime: exports_external.string().nullable(),
|
|
13831
|
+
endTime: exports_external.string().nullable(),
|
|
13832
|
+
attendees: exports_external.array(exports_external.object({ name: exports_external.string(), email: exports_external.string() }))
|
|
13833
|
+
});
|
|
13808
13834
|
var EmailNotifyRequestSchema = exports_external.object({
|
|
13809
13835
|
agentId: exports_external.string().min(1),
|
|
13810
13836
|
workspaceId: exports_external.string().min(1),
|
|
@@ -13816,7 +13842,8 @@ var EmailNotifyRequestSchema = exports_external.object({
|
|
|
13816
13842
|
forwarded: exports_external.boolean().optional().default(false),
|
|
13817
13843
|
messageId: exports_external.string().optional().default(""),
|
|
13818
13844
|
inReplyTo: exports_external.string().optional().default(""),
|
|
13819
|
-
references: exports_external.string().optional().default("")
|
|
13845
|
+
references: exports_external.string().optional().default(""),
|
|
13846
|
+
meetingInfo: MeetingInfoSchema.nullable().optional()
|
|
13820
13847
|
});
|
|
13821
13848
|
var CreateEmailAccountSchema = exports_external.object({
|
|
13822
13849
|
emailAddress: exports_external.string().email("valid email required"),
|
|
@@ -13877,6 +13904,25 @@ var DeleteWorkspaceRequestSchema = exports_external.object({
|
|
|
13877
13904
|
var GrantAgentAccessRequestSchema = exports_external.object({
|
|
13878
13905
|
user_id: exports_external.string().min(1, "user_id is required")
|
|
13879
13906
|
});
|
|
13907
|
+
var WorkspaceFileBrowseRequestSchema = exports_external.object({
|
|
13908
|
+
request_type: exports_external.enum(["tree", "read"]),
|
|
13909
|
+
path: exports_external.string().default(".")
|
|
13910
|
+
});
|
|
13911
|
+
var WorkspaceFileEntrySchema = exports_external.object({
|
|
13912
|
+
name: exports_external.string(),
|
|
13913
|
+
path: exports_external.string(),
|
|
13914
|
+
isDirectory: exports_external.boolean(),
|
|
13915
|
+
size: exports_external.number(),
|
|
13916
|
+
modifiedAt: exports_external.string()
|
|
13917
|
+
});
|
|
13918
|
+
var WorkspaceFileReportSchema = exports_external.object({
|
|
13919
|
+
request_id: exports_external.string().min(1),
|
|
13920
|
+
entries: exports_external.array(WorkspaceFileEntrySchema).optional(),
|
|
13921
|
+
content: exports_external.string().nullable().optional(),
|
|
13922
|
+
isBinary: exports_external.boolean().optional(),
|
|
13923
|
+
error: exports_external.string().optional(),
|
|
13924
|
+
path: exports_external.string()
|
|
13925
|
+
});
|
|
13880
13926
|
// ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260426.1_@opentelemetry+api@1.9.1_bun-types@1.3.13_kysely@0.28.16/node_modules/drizzle-orm/entity.js
|
|
13881
13927
|
var entityKind = Symbol.for("drizzle:entityKind");
|
|
13882
13928
|
var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
|
|
@@ -15364,7 +15410,6 @@ var agentRuntime = sqliteTable("agent_runtime", {
|
|
|
15364
15410
|
id: text("id").primaryKey().$defaultFn(() => nanoid3()),
|
|
15365
15411
|
workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
|
|
15366
15412
|
daemonId: text("daemon_id").notNull(),
|
|
15367
|
-
name: text("name").notNull().default(""),
|
|
15368
15413
|
runtimeMode: text("runtime_mode").notNull().default("local"),
|
|
15369
15414
|
provider: text("provider").notNull(),
|
|
15370
15415
|
deviceInfo: text("device_info").notNull().default(""),
|
|
@@ -15407,6 +15452,15 @@ var agentWhitelist = sqliteTable("agent_whitelist", {
|
|
|
15407
15452
|
foreignColumns: [agent.id, agent.workspaceId]
|
|
15408
15453
|
}).onDelete("cascade")
|
|
15409
15454
|
]);
|
|
15455
|
+
var channel = sqliteTable("channel", {
|
|
15456
|
+
id: text("id").primaryKey().$defaultFn(() => "ch_" + nanoid3()),
|
|
15457
|
+
workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
|
|
15458
|
+
name: text("name").notNull(),
|
|
15459
|
+
createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
|
|
15460
|
+
}, (t) => [
|
|
15461
|
+
unique("channel_workspace_name").on(t.workspaceId, t.name),
|
|
15462
|
+
index("idx_channel_workspace").on(t.workspaceId)
|
|
15463
|
+
]);
|
|
15410
15464
|
var conversation = sqliteTable("conversation", {
|
|
15411
15465
|
id: text("id").primaryKey().$defaultFn(() => nanoid3()),
|
|
15412
15466
|
workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
|
|
@@ -15414,6 +15468,7 @@ var conversation = sqliteTable("conversation", {
|
|
|
15414
15468
|
userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
|
|
15415
15469
|
title: text("title").notNull().default(""),
|
|
15416
15470
|
type: text("type").notNull().default(TASK_TYPES.USER_DM_MESSAGE),
|
|
15471
|
+
channel: text("channel").notNull().default("default"),
|
|
15417
15472
|
createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
|
|
15418
15473
|
}, (t) => [
|
|
15419
15474
|
foreignKey({
|
|
@@ -15567,6 +15622,33 @@ var agentEmailAccount = sqliteTable("agent_email_account", {
|
|
|
15567
15622
|
foreignColumns: [agent.id, agent.workspaceId]
|
|
15568
15623
|
}).onDelete("cascade")
|
|
15569
15624
|
]);
|
|
15625
|
+
var meetingSession = sqliteTable("meeting_session", {
|
|
15626
|
+
id: text("id").primaryKey().$defaultFn(() => "ms_" + nanoid3()),
|
|
15627
|
+
agentId: text("agent_id").notNull(),
|
|
15628
|
+
workspaceId: text("workspace_id").notNull(),
|
|
15629
|
+
title: text("title").notNull().default(""),
|
|
15630
|
+
meetingUrl: text("meeting_url").notNull(),
|
|
15631
|
+
status: text("status").notNull().default("scheduled"),
|
|
15632
|
+
fromEmail: text("from_email"),
|
|
15633
|
+
isWhitelisted: integer2("is_whitelisted", { mode: "boolean" }).notNull().default(true),
|
|
15634
|
+
participants: text("participants", { mode: "json" }).$type().notNull().default([]),
|
|
15635
|
+
scheduledAt: text("scheduled_at"),
|
|
15636
|
+
startedAt: text("started_at"),
|
|
15637
|
+
completedAt: text("completed_at"),
|
|
15638
|
+
transcriptR2Key: text("transcript_r2_key"),
|
|
15639
|
+
summary: text("summary"),
|
|
15640
|
+
error: text("error"),
|
|
15641
|
+
workerSessionId: text("worker_session_id"),
|
|
15642
|
+
createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
|
|
15643
|
+
updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
|
|
15644
|
+
}, (t) => [
|
|
15645
|
+
index("idx_meeting_session_agent_ws").on(t.agentId, t.workspaceId),
|
|
15646
|
+
index("idx_meeting_session_status").on(t.status),
|
|
15647
|
+
foreignKey({
|
|
15648
|
+
columns: [t.agentId, t.workspaceId],
|
|
15649
|
+
foreignColumns: [agent.id, agent.workspaceId]
|
|
15650
|
+
}).onDelete("cascade")
|
|
15651
|
+
]);
|
|
15570
15652
|
var machineToken = sqliteTable("machine_token", {
|
|
15571
15653
|
id: text("id").primaryKey().$defaultFn(() => nanoid3()),
|
|
15572
15654
|
userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
|
|
@@ -15577,6 +15659,17 @@ var machineToken = sqliteTable("machine_token", {
|
|
|
15577
15659
|
lastUsedAt: text("last_used_at"),
|
|
15578
15660
|
createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
|
|
15579
15661
|
}, (t) => [index("idx_machine_token").on(t.token)]);
|
|
15662
|
+
var workspaceFileRequest = sqliteTable("workspace_file_request", {
|
|
15663
|
+
id: text("id").primaryKey().$defaultFn(() => "wfr_" + nanoid3()),
|
|
15664
|
+
workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
|
|
15665
|
+
agentId: text("agent_id").notNull(),
|
|
15666
|
+
requestType: text("request_type").notNull(),
|
|
15667
|
+
path: text("path").notNull().default("."),
|
|
15668
|
+
status: text("status").notNull().default("pending"),
|
|
15669
|
+
result: text("result"),
|
|
15670
|
+
createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
|
|
15671
|
+
updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
|
|
15672
|
+
}, (t) => [index("idx_wfr_workspace_status").on(t.workspaceId, t.status)]);
|
|
15580
15673
|
// ../shared/src/db/queries/task.ts
|
|
15581
15674
|
var DEFAULT_STALE_SECONDS = Number(process.env.ALOOK_STALE_DISPATCH_TIMEOUT_S) || 20;
|
|
15582
15675
|
var DEFAULT_STALE_RUNNING_SECONDS = Number(process.env.ALOOK_STALE_RUNNING_TIMEOUT_S) || 3600;
|
|
@@ -15657,7 +15750,8 @@ class DaemonClient {
|
|
|
15657
15750
|
tasks: resp.tasks,
|
|
15658
15751
|
evicted: resp.evicted ?? false,
|
|
15659
15752
|
pending_update: resp.pending_update,
|
|
15660
|
-
pending_rescan: resp.pending_rescan
|
|
15753
|
+
pending_rescan: resp.pending_rescan,
|
|
15754
|
+
file_requests: resp.file_requests
|
|
15661
15755
|
};
|
|
15662
15756
|
}
|
|
15663
15757
|
startTask(token, taskId) {
|
|
@@ -15704,6 +15798,18 @@ class DaemonClient {
|
|
|
15704
15798
|
reportMessages(token, taskId, messages) {
|
|
15705
15799
|
return this.request("POST", `/api/daemon/tasks/${taskId}/messages`, token, { messages });
|
|
15706
15800
|
}
|
|
15801
|
+
reportFileData(token, body) {
|
|
15802
|
+
return this.request("POST", "/api/daemon/workspace/report", token, body);
|
|
15803
|
+
}
|
|
15804
|
+
async claimMeetings(token, daemonId) {
|
|
15805
|
+
const raw = await this.request("POST", "/api/daemon/meetings/claim", token, { daemon_id: daemonId });
|
|
15806
|
+
return raw.map((m) => ({
|
|
15807
|
+
id: m.id,
|
|
15808
|
+
meetingUrl: m.meeting_url,
|
|
15809
|
+
participants: m.participants,
|
|
15810
|
+
workspaceId: m.workspace_id
|
|
15811
|
+
}));
|
|
15812
|
+
}
|
|
15707
15813
|
}
|
|
15708
15814
|
|
|
15709
15815
|
// daemon/agent/claude.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alook/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "Alook CLI — Enable Your Person Colleague",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/alookai/alook#readme",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"dev": "bun run src/index.ts",
|
|
41
|
-
"build": "bun build src/index.ts --outdir dist --target node --format esm --external citty --external commander --external postal-mime && bun build daemon/session-runner.ts --outdir dist --target node --format esm --external citty --external commander --external postal-mime && node scripts/prepare-dist.mjs",
|
|
41
|
+
"build": "bun build src/index.ts --outdir dist --target node --format esm --external citty --external commander --external postal-mime --external playwright-core && bun build daemon/session-runner.ts --outdir dist --target node --format esm --external citty --external commander --external postal-mime && bun build daemon/meeting-runner.ts --outdir dist --target node --format esm --external playwright-core && node scripts/prepare-dist.mjs",
|
|
42
42
|
"prepack": "pnpm run build",
|
|
43
43
|
"test": "vitest run",
|
|
44
44
|
"typecheck": "tsc --noEmit -p tsconfig.build.json"
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"citty": "^0.2.2",
|
|
48
48
|
"commander": "^14.0.3",
|
|
49
|
+
"playwright-core": "^1.59.1",
|
|
49
50
|
"postal-mime": "^2.7.4"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|