@alook/cli 0.0.155 → 0.0.157
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 +30 -2
- package/dist/session-runner.js +30 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -224,6 +224,7 @@ function devWsDoPort() {
|
|
|
224
224
|
return port || DEV_PORTS.wsDo;
|
|
225
225
|
}
|
|
226
226
|
// ../shared/src/constants/community.ts
|
|
227
|
+
var MAX_PROFILE_NAME_LENGTH = 100;
|
|
227
228
|
var MAX_MESSAGE_CONTENT_LENGTH = 4000;
|
|
228
229
|
var MAX_ATTACHMENTS_PER_MESSAGE = 10;
|
|
229
230
|
var MAX_ATTACHMENT_SIZE_BYTES = 25 * 1024 * 1024;
|
|
@@ -14505,6 +14506,21 @@ function date4(params) {
|
|
|
14505
14506
|
|
|
14506
14507
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
14507
14508
|
config(en_default());
|
|
14509
|
+
// ../shared/src/lib/community-name.ts
|
|
14510
|
+
var FORBIDDEN_NAME_CHARS = /[#@\x00-\x1f\x7f-\x9f]/;
|
|
14511
|
+
function validateCommunityName(name) {
|
|
14512
|
+
const trimmed = name.trim();
|
|
14513
|
+
if (!trimmed)
|
|
14514
|
+
return { ok: false, reason: "name cannot be empty" };
|
|
14515
|
+
if (trimmed.length > MAX_PROFILE_NAME_LENGTH) {
|
|
14516
|
+
return { ok: false, reason: `name must be ≤ ${MAX_PROFILE_NAME_LENGTH} characters` };
|
|
14517
|
+
}
|
|
14518
|
+
if (FORBIDDEN_NAME_CHARS.test(trimmed)) {
|
|
14519
|
+
return { ok: false, reason: "name cannot contain #, @, or line breaks" };
|
|
14520
|
+
}
|
|
14521
|
+
return { ok: true };
|
|
14522
|
+
}
|
|
14523
|
+
|
|
14508
14524
|
// ../shared/src/schemas.ts
|
|
14509
14525
|
var TaskStatusSchema = exports_external.enum([
|
|
14510
14526
|
"queued",
|
|
@@ -15064,6 +15080,16 @@ var AgentActivityMessageSchema = exports_external.object({
|
|
|
15064
15080
|
agentId: exports_external.string(),
|
|
15065
15081
|
state: exports_external.enum(["idle", "starting", "running", "stopping"])
|
|
15066
15082
|
});
|
|
15083
|
+
var AgentTypingMessageSchema = exports_external.object({
|
|
15084
|
+
type: exports_external.literal("agent_typing"),
|
|
15085
|
+
agentId: exports_external.string(),
|
|
15086
|
+
dmConversationId: exports_external.string().min(1)
|
|
15087
|
+
});
|
|
15088
|
+
var AgentTypingStopMessageSchema = exports_external.object({
|
|
15089
|
+
type: exports_external.literal("agent_typing_stop"),
|
|
15090
|
+
agentId: exports_external.string(),
|
|
15091
|
+
dmConversationId: exports_external.string().min(1)
|
|
15092
|
+
});
|
|
15067
15093
|
var CommunityPairTokenResponseSchema = exports_external.object({
|
|
15068
15094
|
tokenId: exports_external.string(),
|
|
15069
15095
|
expiresAt: exports_external.string()
|
|
@@ -15088,19 +15114,21 @@ var CommunityDaemonEnrollAgentResponseSchema = exports_external.object({
|
|
|
15088
15114
|
runnerKey: exports_external.string(),
|
|
15089
15115
|
expiresAt: exports_external.string().nullable()
|
|
15090
15116
|
});
|
|
15117
|
+
var isMentionSafeName = (name) => validateCommunityName(name).ok;
|
|
15118
|
+
var MENTION_SAFE_NAME_MSG = "name cannot contain #, @, or line breaks";
|
|
15091
15119
|
var BOT_AVATAR_ROUTE_PATTERN = /^\/api\/community\/bots\/[A-Za-z0-9_-]+\/avatar$/;
|
|
15092
15120
|
var BotImageUrlSchema = exports_external.string().max(COMMUNITY_BOT_IMAGE_URL_MAX).refine((v) => v.startsWith("https://") || v.startsWith("avatar:") || BOT_AVATAR_ROUTE_PATTERN.test(v), {
|
|
15093
15121
|
message: "image must be an https URL, the bot avatar route, or an avatar: config"
|
|
15094
15122
|
});
|
|
15095
15123
|
var CommunityBotCreateRequestSchema = exports_external.object({
|
|
15096
|
-
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX),
|
|
15124
|
+
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }),
|
|
15097
15125
|
description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
|
|
15098
15126
|
machineId: exports_external.string().min(1),
|
|
15099
15127
|
runtime: exports_external.string().min(1),
|
|
15100
15128
|
image: BotImageUrlSchema.optional()
|
|
15101
15129
|
});
|
|
15102
15130
|
var CommunityBotPatchRequestSchema = exports_external.object({
|
|
15103
|
-
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).optional(),
|
|
15131
|
+
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }).optional(),
|
|
15104
15132
|
description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
|
|
15105
15133
|
image: BotImageUrlSchema.nullable().optional()
|
|
15106
15134
|
}).refine((v) => v.name !== undefined || v.description !== undefined || v.image !== undefined, {
|
package/dist/session-runner.js
CHANGED
|
@@ -129,6 +129,7 @@ var DEV_WS_DO_URL = process.env.DEV_WS_DO_URL || `http://localhost:${DEV_PORTS.w
|
|
|
129
129
|
var DEV_EMAIL_WORKER_URL = process.env.DEV_EMAIL_WORKER_URL || `http://localhost:${DEV_PORTS.emailWorker}`;
|
|
130
130
|
var DEV_WAKE_WORKER_URL = process.env.DEV_WAKE_WORKER_URL || `http://localhost:${DEV_PORTS.wakeWorker}`;
|
|
131
131
|
// ../shared/src/constants/community.ts
|
|
132
|
+
var MAX_PROFILE_NAME_LENGTH = 100;
|
|
132
133
|
var MAX_MESSAGE_CONTENT_LENGTH = 4000;
|
|
133
134
|
var MAX_ATTACHMENTS_PER_MESSAGE = 10;
|
|
134
135
|
var MAX_ATTACHMENT_SIZE_BYTES = 25 * 1024 * 1024;
|
|
@@ -14410,6 +14411,21 @@ function date4(params) {
|
|
|
14410
14411
|
|
|
14411
14412
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
14412
14413
|
config(en_default());
|
|
14414
|
+
// ../shared/src/lib/community-name.ts
|
|
14415
|
+
var FORBIDDEN_NAME_CHARS = /[#@\x00-\x1f\x7f-\x9f]/;
|
|
14416
|
+
function validateCommunityName(name) {
|
|
14417
|
+
const trimmed = name.trim();
|
|
14418
|
+
if (!trimmed)
|
|
14419
|
+
return { ok: false, reason: "name cannot be empty" };
|
|
14420
|
+
if (trimmed.length > MAX_PROFILE_NAME_LENGTH) {
|
|
14421
|
+
return { ok: false, reason: `name must be ≤ ${MAX_PROFILE_NAME_LENGTH} characters` };
|
|
14422
|
+
}
|
|
14423
|
+
if (FORBIDDEN_NAME_CHARS.test(trimmed)) {
|
|
14424
|
+
return { ok: false, reason: "name cannot contain #, @, or line breaks" };
|
|
14425
|
+
}
|
|
14426
|
+
return { ok: true };
|
|
14427
|
+
}
|
|
14428
|
+
|
|
14413
14429
|
// ../shared/src/schemas.ts
|
|
14414
14430
|
var TaskStatusSchema = exports_external.enum([
|
|
14415
14431
|
"queued",
|
|
@@ -14969,6 +14985,16 @@ var AgentActivityMessageSchema = exports_external.object({
|
|
|
14969
14985
|
agentId: exports_external.string(),
|
|
14970
14986
|
state: exports_external.enum(["idle", "starting", "running", "stopping"])
|
|
14971
14987
|
});
|
|
14988
|
+
var AgentTypingMessageSchema = exports_external.object({
|
|
14989
|
+
type: exports_external.literal("agent_typing"),
|
|
14990
|
+
agentId: exports_external.string(),
|
|
14991
|
+
dmConversationId: exports_external.string().min(1)
|
|
14992
|
+
});
|
|
14993
|
+
var AgentTypingStopMessageSchema = exports_external.object({
|
|
14994
|
+
type: exports_external.literal("agent_typing_stop"),
|
|
14995
|
+
agentId: exports_external.string(),
|
|
14996
|
+
dmConversationId: exports_external.string().min(1)
|
|
14997
|
+
});
|
|
14972
14998
|
var CommunityPairTokenResponseSchema = exports_external.object({
|
|
14973
14999
|
tokenId: exports_external.string(),
|
|
14974
15000
|
expiresAt: exports_external.string()
|
|
@@ -14993,19 +15019,21 @@ var CommunityDaemonEnrollAgentResponseSchema = exports_external.object({
|
|
|
14993
15019
|
runnerKey: exports_external.string(),
|
|
14994
15020
|
expiresAt: exports_external.string().nullable()
|
|
14995
15021
|
});
|
|
15022
|
+
var isMentionSafeName = (name) => validateCommunityName(name).ok;
|
|
15023
|
+
var MENTION_SAFE_NAME_MSG = "name cannot contain #, @, or line breaks";
|
|
14996
15024
|
var BOT_AVATAR_ROUTE_PATTERN = /^\/api\/community\/bots\/[A-Za-z0-9_-]+\/avatar$/;
|
|
14997
15025
|
var BotImageUrlSchema = exports_external.string().max(COMMUNITY_BOT_IMAGE_URL_MAX).refine((v) => v.startsWith("https://") || v.startsWith("avatar:") || BOT_AVATAR_ROUTE_PATTERN.test(v), {
|
|
14998
15026
|
message: "image must be an https URL, the bot avatar route, or an avatar: config"
|
|
14999
15027
|
});
|
|
15000
15028
|
var CommunityBotCreateRequestSchema = exports_external.object({
|
|
15001
|
-
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX),
|
|
15029
|
+
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }),
|
|
15002
15030
|
description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
|
|
15003
15031
|
machineId: exports_external.string().min(1),
|
|
15004
15032
|
runtime: exports_external.string().min(1),
|
|
15005
15033
|
image: BotImageUrlSchema.optional()
|
|
15006
15034
|
});
|
|
15007
15035
|
var CommunityBotPatchRequestSchema = exports_external.object({
|
|
15008
|
-
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).optional(),
|
|
15036
|
+
name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }).optional(),
|
|
15009
15037
|
description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
|
|
15010
15038
|
image: BotImageUrlSchema.nullable().optional()
|
|
15011
15039
|
}).refine((v) => v.name !== undefined || v.description !== undefined || v.image !== undefined, {
|