@autohq/cli 0.1.95 → 0.1.97
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 +67 -6
- package/package.json +2 -3
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({
|
|
@@ -19155,7 +19211,7 @@ function createApiClient(input) {
|
|
|
19155
19211
|
const organizationId = input.env.AUTO_ORGANIZATION_ID?.trim() || config2.organizationId;
|
|
19156
19212
|
if (!organizationId) {
|
|
19157
19213
|
throw new Error(
|
|
19158
|
-
"No active organization. Run `auto login`
|
|
19214
|
+
"No active organization. Run `auto auth login` to sign in, then `auto orgs use <organization>` to select one."
|
|
19159
19215
|
);
|
|
19160
19216
|
}
|
|
19161
19217
|
return { organizationId };
|
|
@@ -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.97",
|
|
21617
21679
|
license: "SEE LICENSE IN README.md",
|
|
21618
21680
|
publishConfig: {
|
|
21619
21681
|
access: "public"
|
|
@@ -21628,8 +21690,7 @@ var init_package = __esm({
|
|
|
21628
21690
|
},
|
|
21629
21691
|
type: "module",
|
|
21630
21692
|
bin: {
|
|
21631
|
-
auto: "./dist/index.js"
|
|
21632
|
-
"auto-agent-bridge": "./dist/agent-bridge.js"
|
|
21693
|
+
auto: "./dist/index.js"
|
|
21633
21694
|
},
|
|
21634
21695
|
files: ["dist"],
|
|
21635
21696
|
scripts: {
|
|
@@ -30136,7 +30197,7 @@ function registerProjectCommands(program, context) {
|
|
|
30136
30197
|
).option("--api-url <url>", "Auto API base URL").option("--server <url>", "Auto web server URL").action(async (options) => {
|
|
30137
30198
|
await handleProjectsList(context, options);
|
|
30138
30199
|
});
|
|
30139
|
-
projects.command("create").description("Create a project in the active organization.").requiredOption("--name <name>", "Project name").option("--api-url <url>", "Auto API base URL").option("--server <url>", "Auto web server URL").option("--use", "Set the new project as active").action(async (options) => {
|
|
30200
|
+
projects.command("create").description("Create a project in the active organization.").requiredOption("--name <name>", "Project name").option("--api-url <url>", "Auto API base URL").option("--server <url>", "Auto web server URL").option("--use", "Set the new project as active", true).option("--no-use", "Keep the current active project").action(async (options) => {
|
|
30140
30201
|
const response = await createDirectoryClient(context).createProject({
|
|
30141
30202
|
projectName: options.name,
|
|
30142
30203
|
apiBaseUrl: apiUrlFromOptions(context, options)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autohq/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.97",
|
|
4
4
|
"license": "SEE LICENSE IN README.md",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"bin": {
|
|
18
|
-
"auto": "./dist/index.js"
|
|
19
|
-
"auto-agent-bridge": "./dist/agent-bridge.js"
|
|
18
|
+
"auto": "./dist/index.js"
|
|
20
19
|
},
|
|
21
20
|
"files": ["dist"],
|
|
22
21
|
"scripts": {
|