@autohq/cli 0.1.95 → 0.1.96
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 +64 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -17096,6 +17096,59 @@ var init_trigger_router = __esm({
|
|
|
17096
17096
|
});
|
|
17097
17097
|
|
|
17098
17098
|
// ../../packages/schemas/src/sessions.ts
|
|
17099
|
+
function avatarAssetDimensions(bytes) {
|
|
17100
|
+
return pngDimensions(bytes) ?? jpegDimensions(bytes);
|
|
17101
|
+
}
|
|
17102
|
+
function avatarAssetDimensionsProblem(bytes) {
|
|
17103
|
+
const dimensions = avatarAssetDimensions(bytes);
|
|
17104
|
+
if (!dimensions) {
|
|
17105
|
+
return "image dimensions could not be read; asset must be a valid PNG or JPEG";
|
|
17106
|
+
}
|
|
17107
|
+
const { width, height } = dimensions;
|
|
17108
|
+
if (width !== height || width < MIN_AVATAR_ASSET_DIMENSION_PX || width > MAX_AVATAR_ASSET_DIMENSION_PX) {
|
|
17109
|
+
return `asset must be a square between ${MIN_AVATAR_ASSET_DIMENSION_PX}x${MIN_AVATAR_ASSET_DIMENSION_PX} and ${MAX_AVATAR_ASSET_DIMENSION_PX}x${MAX_AVATAR_ASSET_DIMENSION_PX} pixels, got ${width}x${height}`;
|
|
17110
|
+
}
|
|
17111
|
+
return null;
|
|
17112
|
+
}
|
|
17113
|
+
function pngDimensions(bytes) {
|
|
17114
|
+
if (bytes.length < 24) return null;
|
|
17115
|
+
for (let i = 0; i < PNG_SIGNATURE.length; i++) {
|
|
17116
|
+
if (bytes[i] !== PNG_SIGNATURE[i]) return null;
|
|
17117
|
+
}
|
|
17118
|
+
if (bytes[12] !== 73 || bytes[13] !== 72 || bytes[14] !== 68 || bytes[15] !== 82) {
|
|
17119
|
+
return null;
|
|
17120
|
+
}
|
|
17121
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
17122
|
+
return { width: view.getUint32(16), height: view.getUint32(20) };
|
|
17123
|
+
}
|
|
17124
|
+
function jpegDimensions(bytes) {
|
|
17125
|
+
if (bytes.length < 4 || bytes[0] !== 255 || bytes[1] !== 216) return null;
|
|
17126
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
17127
|
+
let offset = 2;
|
|
17128
|
+
while (offset + 4 <= bytes.length) {
|
|
17129
|
+
if (bytes[offset] !== 255) return null;
|
|
17130
|
+
while (bytes[offset + 1] === 255 && offset + 2 < bytes.length) offset++;
|
|
17131
|
+
const marker = bytes[offset + 1] ?? 0;
|
|
17132
|
+
offset += 2;
|
|
17133
|
+
if (marker === 1 || marker >= 208 && marker <= 215) continue;
|
|
17134
|
+
if (marker === 217 || marker === 218) return null;
|
|
17135
|
+
if (offset + 2 > bytes.length) return null;
|
|
17136
|
+
const length = view.getUint16(offset);
|
|
17137
|
+
if (length < 2) return null;
|
|
17138
|
+
const isStartOfFrame = marker >= 192 && marker <= 207 && marker !== 196 && // DHT
|
|
17139
|
+
marker !== 200 && // JPG (reserved)
|
|
17140
|
+
marker !== 204;
|
|
17141
|
+
if (isStartOfFrame) {
|
|
17142
|
+
if (offset + 7 > bytes.length) return null;
|
|
17143
|
+
return {
|
|
17144
|
+
width: view.getUint16(offset + 5),
|
|
17145
|
+
height: view.getUint16(offset + 3)
|
|
17146
|
+
};
|
|
17147
|
+
}
|
|
17148
|
+
offset += length;
|
|
17149
|
+
}
|
|
17150
|
+
return null;
|
|
17151
|
+
}
|
|
17099
17152
|
function sessionIdentityDescriptionLength(value) {
|
|
17100
17153
|
let length = 0;
|
|
17101
17154
|
for (const char of value) {
|
|
@@ -17243,7 +17296,7 @@ function isChatMessageEvent(trigger) {
|
|
|
17243
17296
|
function hasFilterValue(trigger, path2, expected) {
|
|
17244
17297
|
return trigger.where?.[path2] === expected;
|
|
17245
17298
|
}
|
|
17246
|
-
var RESOURCE_KIND_SESSION, TriggerFilterScalarSchema, TriggerFilterPathSchema, TriggerFilterClauseSchema, TriggerFilterSchema, SessionTriggerCheckTimeoutSchema, TriggerEventSchema, TriggerEventsSchema, SessionTriggerSharedFields, SessionTriggerEventSourceFields, SessionTriggerBaseSchema, SessionTriggerDefinitionBaseSchema, SessionTriggerSchema, SessionApplyTriggerSchema, SessionHeartbeatTriggerBaseSchema, SessionHeartbeatTriggerSchema, SessionApplyHeartbeatTriggerSchema, SessionTriggerDefinitionSchema, SessionApplyTriggerDefinitionSchema, SessionTriggersSchema, SessionApplyTriggersSchema, AVATAR_ASSET_EXTENSIONS, MAX_AVATAR_ASSET_BYTES, SESSION_IDENTITY_DESCRIPTION_MAX_LENGTH, SHA256_HEX_PATTERN, SessionIdentitySchema, SessionSpecSchema, SessionApplySpecSchema, SessionStatusSchema, SessionResourceSchema, SessionApplyRequestSchema, SessionApplyTriggerReceiptSchema, SessionApplyResponseSchema, SESSION_TELEGRAM_IDENTITY_STATUSES, SessionTelegramIdentityStatusSchema, SessionPresenceIdentitySchema, SessionPresenceResponseSchema, SessionPresenceConnectRequestSchema, SessionPresenceConnectPendingSchema, SessionPresenceConnectResponseSchema, SessionPresenceIconRequestSchema, SessionPresenceIconResponseSchema, SessionPresenceCompleteResponseSchema;
|
|
17299
|
+
var RESOURCE_KIND_SESSION, TriggerFilterScalarSchema, TriggerFilterPathSchema, TriggerFilterClauseSchema, TriggerFilterSchema, SessionTriggerCheckTimeoutSchema, TriggerEventSchema, TriggerEventsSchema, SessionTriggerSharedFields, SessionTriggerEventSourceFields, SessionTriggerBaseSchema, SessionTriggerDefinitionBaseSchema, SessionTriggerSchema, SessionApplyTriggerSchema, SessionHeartbeatTriggerBaseSchema, SessionHeartbeatTriggerSchema, SessionApplyHeartbeatTriggerSchema, SessionTriggerDefinitionSchema, SessionApplyTriggerDefinitionSchema, SessionTriggersSchema, SessionApplyTriggersSchema, AVATAR_ASSET_EXTENSIONS, MAX_AVATAR_ASSET_BYTES, MIN_AVATAR_ASSET_DIMENSION_PX, MAX_AVATAR_ASSET_DIMENSION_PX, PNG_SIGNATURE, SESSION_IDENTITY_DESCRIPTION_MAX_LENGTH, SHA256_HEX_PATTERN, SessionIdentitySchema, SessionSpecSchema, SessionApplySpecSchema, SessionStatusSchema, SessionResourceSchema, SessionApplyRequestSchema, SessionApplyTriggerReceiptSchema, SessionApplyResponseSchema, SESSION_TELEGRAM_IDENTITY_STATUSES, SessionTelegramIdentityStatusSchema, SessionPresenceIdentitySchema, SessionPresenceResponseSchema, SessionPresenceConnectRequestSchema, SessionPresenceConnectPendingSchema, SessionPresenceConnectResponseSchema, SessionPresenceIconRequestSchema, SessionPresenceIconResponseSchema, SessionPresenceCompleteResponseSchema;
|
|
17247
17300
|
var init_sessions = __esm({
|
|
17248
17301
|
"../../packages/schemas/src/sessions.ts"() {
|
|
17249
17302
|
"use strict";
|
|
@@ -17420,6 +17473,9 @@ var init_sessions = __esm({
|
|
|
17420
17473
|
).transform(expandSessionApplyTriggerDefinitions).superRefine(validateAttributedRunsTriggerPairing);
|
|
17421
17474
|
AVATAR_ASSET_EXTENSIONS = [".png", ".jpg", ".jpeg"];
|
|
17422
17475
|
MAX_AVATAR_ASSET_BYTES = 2 * 1024 * 1024;
|
|
17476
|
+
MIN_AVATAR_ASSET_DIMENSION_PX = 512;
|
|
17477
|
+
MAX_AVATAR_ASSET_DIMENSION_PX = 2e3;
|
|
17478
|
+
PNG_SIGNATURE = [137, 80, 78, 71, 13, 10, 26, 10];
|
|
17423
17479
|
SESSION_IDENTITY_DESCRIPTION_MAX_LENGTH = 140;
|
|
17424
17480
|
SHA256_HEX_PATTERN = /^[a-f0-9]{64}$/;
|
|
17425
17481
|
SessionIdentitySchema = external_exports.object({
|
|
@@ -20838,6 +20894,12 @@ function readApplyAssets(resources, projectRoot) {
|
|
|
20838
20894
|
projectRoot
|
|
20839
20895
|
});
|
|
20840
20896
|
const bytes = readFileSync3(resolvedPath);
|
|
20897
|
+
const dimensionsProblem = avatarAssetDimensionsProblem(bytes);
|
|
20898
|
+
if (dimensionsProblem) {
|
|
20899
|
+
throw new Error(
|
|
20900
|
+
`Invalid session identity avatar asset for "${resource.metadata.name}": ${dimensionsProblem}`
|
|
20901
|
+
);
|
|
20902
|
+
}
|
|
20841
20903
|
assets[avatarAsset] = {
|
|
20842
20904
|
sha256: createHash2("sha256").update(bytes).digest("hex"),
|
|
20843
20905
|
contentType: extname(resolvedPath).toLowerCase() === ".png" ? "image/png" : "image/jpeg",
|
|
@@ -21613,7 +21675,7 @@ var init_package = __esm({
|
|
|
21613
21675
|
"package.json"() {
|
|
21614
21676
|
package_default = {
|
|
21615
21677
|
name: "@autohq/cli",
|
|
21616
|
-
version: "0.1.
|
|
21678
|
+
version: "0.1.96",
|
|
21617
21679
|
license: "SEE LICENSE IN README.md",
|
|
21618
21680
|
publishConfig: {
|
|
21619
21681
|
access: "public"
|