@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 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, {
@@ -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, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alook/cli",
3
- "version": "0.0.155",
3
+ "version": "0.0.157",
4
4
  "description": "Alook CLI — Enable Your Person Colleague",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/alookai/alook#readme",