🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@ayo-dev/core

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ayo-dev/core - npm Package Compare versions

Comparing version
0.1.6
to
0.2.0
+149
-2
dist/api.d.ts

@@ -6,3 +6,3 @@ /**

*/
import type { Ayo, AyoContext, AyoKind, AyoSound, Handle, Recipients, Urgency } from "./message.js";
import type { AskAnswer, AskMeta, Ayo, AyoContext, AyoKind, AyoSound, Handle, Recipients, Urgency } from "./message.js";
import type { AyoId, TeamId, UserId } from "./ids.js";

@@ -20,3 +20,3 @@ import type { MemberPresence, PresenceStatus } from "./wire.js";

}
export type ApiErrorCode = "unauthorized" | "invalid_token" | "team_not_found" | "not_found" | "not_a_member" | "unknown_recipient" | "bad_request" | "rate_limited" | "payload_too_large" | "internal_error";
export type ApiErrorCode = "unauthorized" | "invalid_token" | "team_not_found" | "not_found" | "not_a_member" | "forbidden" | "unknown_recipient" | "bad_request" | "rate_limited" | "team_full" | "payload_too_large" | "internal_error";
export interface DeviceStartResponse {

@@ -78,3 +78,9 @@ device_code: string;

joinCode?: string;
/** Set when the code came from a handoff link — the joiner lands in a
* relationship, not an empty room ("Maya invited you"). */
invitedBy?: Handle;
}
/** Bounds for an anonymous reply from a handoff share page. */
export declare const MAX_LINK_REPLY_LENGTH = 2000;
export declare const MAX_LINK_REPLY_NAME_LENGTH = 40;
/** `GET /v1/teams/:id/invite` — the active team's shareable invite (members only). */

@@ -84,6 +90,129 @@ export interface InviteResponse {

joinCode: string;
/** ISO timestamp the code expires, or null if it never does. Lets `ayo invite`
* warn instead of pasting a dead code. Optional for backward-compat with an
* older relay that doesn't send it. */
codeExpiresAt?: string | null;
}
/** `POST /v1/teams/:id/rotate-code` — owner rotates the join code (revokes the old
* one); optional expiry. Members cap is server-enforced (see MAX_TEAM_SIZE). */
export interface RotateCodeRequest {
/** Optional: auto-expire the new code after N hours (omit = no expiry). */
expiresInHours?: number;
}
export interface RotateCodeResponse {
joinCode: string;
/** ISO timestamp, or null if the code doesn't expire. */
expiresAt: string | null;
}
/** Max members per team — a leaked, non-rotating code + no cap = a floodable team. */
export declare const MAX_TEAM_SIZE = 50;
/** Default lifetime of a handoff share link. Links are ephemeral by design — a
* handoff is a "pick this up now" artifact, not a permanent document. */
export declare const HANDOFF_LINK_TTL_HOURS: number;
/** Hard cap so a caller can't mint a near-permanent public URL. */
export declare const HANDOFF_LINK_MAX_TTL_HOURS: number;
/** Cap on a serialized share snapshot (guards KV + the public render path). The
* diff alone is already capped at MAX_DIFF_BYTES; this bounds the whole packet. */
export declare const MAX_HANDOFF_SHARE_BYTES: number;
/** `POST /v1/teams/:id/handoff-link` — mint a shareable link for a handoff. */
export interface CreateHandoffLinkRequest {
/** What the recipient needs to pick up (the handoff body). */
blocker: string;
/** Optional summary / next steps. */
note?: string;
/** Curated work context; the caller decides what to include (diff is opt-in). */
context?: AyoContext;
/** Auto-expire after N hours; clamped to [~1 min, HANDOFF_LINK_MAX_TTL_HOURS]. */
expiresInHours?: number;
/** Embed a join code so a non-user installs → joins in one step. Default true.
* The embedded code is PER-LINK (minted fresh, expires with the link, carries
* the inviter) — rotating the team code never kills a live handoff link. */
includeJoinCode?: boolean;
/** The handoff Ayo this link renders — replies from the page thread to it. */
ayoId?: AyoId;
}
export interface CreateHandoffLinkResponse {
token: string;
/** Absolute URL to share. */
url: string;
/** ISO timestamp the link expires. */
expiresAt: string;
}
/** The self-contained snapshot a share link renders. Everything the public page
* needs, so the render path never touches the team DO. `v` guards the shape.
* teamId/fromId/ayoId are ROUTING fields for the reply flow — stored, never
* rendered on the public page. */
export interface HandoffShare {
v: 1;
from: {
handle: Handle;
name: string;
};
/** Routing (reply → the sender's inbox); never rendered. */
teamId: TeamId;
fromId: UserId;
/** The handoff Ayo this link renders; replies thread to it. */
ayoId?: AyoId;
teamName: string;
blocker: string;
note?: string;
context?: AyoContext;
/** Present iff the sender opted to embed it — enables the 1-step join CTA. */
joinCode?: string;
/** The embedded join code's own expiry (codes rotate/expire independently of
* the link) — lets the page flag a stale code instead of a dead command.
* null = the code doesn't expire; absent = no code embedded. */
joinCodeExpiresAt?: string | null;
createdAt: string;
expiresAt: string;
}
export interface MembersResponse {
members: MemberPresence[];
}
/** `POST /v1/teams/:id/hooks` — mint a revocable inbound webhook (member only). */
export interface CreateWebhookRequest {
/** Source name shown on inbound pings, e.g. "ci", "github". */
label: string;
/** Default recipient handle; omit to broadcast to the team. */
to?: Handle;
/** Mint a GitHub webhook: HMAC-verified, POSTed to /v1/gh/<token>, and routed
* by event (review requests, @mentions, review submissions) rather than `to`.
* The response carries a one-time `secret` to paste into GitHub. */
github?: boolean;
}
/** A minted/listed webhook. `token` is a bearer secret. On CREATE the creator
* always gets it. On LIST, only the creator sees the token/url of their own
* hooks — for others' hooks `token`/`url` are empty strings (metadata only), so
* a member can't lift a teammate's URL and spoof pings as them. */
export interface WebhookInfo {
token: string;
/** The full curl-able URL: `<relay>/v1/hooks/<token>` (empty if not yours). */
url: string;
label: string;
to?: Handle;
createdAt: string;
/** Handle of the member who created the hook (present on LIST). */
createdBy?: Handle;
/** "github" for a GitHub webhook (routes by event); absent = generic. */
kind?: "github";
/** The HMAC secret to paste into GitHub — returned ONCE on create for a github
* hook, never on list. */
secret?: string;
}
export type CreateWebhookResponse = WebhookInfo;
export interface ListWebhooksResponse {
hooks: WebhookInfo[];
}
/** Body a caller POSTs to `/v1/hooks/:token`. Only `text` is required (one curl).
* `urgency` is capped at "normal" server-side — inbound automation never breaks
* through a recipient's heads-down/dnd focus (suppression is first-class). */
export interface WebhookPingRequest {
text: string;
/** Override the hook's default recipient(s); `["*"]` broadcasts. */
to?: Recipients;
/** "low" | "normal" only; "urgent" is coerced to "normal". */
urgency?: Urgency;
/** Optional headline shown above the text. */
title?: string;
}
/** Body of `POST /v1/teams/:id/ayo` — the server fills id/from/createdAt. */

@@ -97,4 +226,22 @@ export interface SendAyoRequest {

replyTo?: AyoId | null;
/** Required semantics when kind === "ask" (options optional). */
ask?: AskMeta;
expiresAt?: string | null;
}
/** Bounds for an ask's suggested options (rendered as ready-made commands). */
export declare const MAX_ASK_OPTIONS = 8;
export declare const MAX_ASK_OPTION_LENGTH = 80;
/** `POST /v1/ayo/:id/answer` — answer an ask addressed to you. */
export interface AnswerAskRequest {
answer: string;
}
/** `GET /v1/ayo/:id/answer` — poll an ask's state (the asking agent long-polls
* this until answered or its own deadline passes). */
export interface AskStateResponse {
answered: boolean;
/** Present iff answered. */
answer?: AskAnswer;
/** True once the ask's expiresAt has passed unanswered. */
expired: boolean;
}
export interface SendAyoResponse {

@@ -101,0 +248,0 @@ id: AyoId;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}

@@ -10,2 +10,21 @@ /**

export const DEFAULT_RELAY_URL = "https://ayo-relay.wkoverfield.workers.dev";
/** Bounds for an anonymous reply from a handoff share page. */
export const MAX_LINK_REPLY_LENGTH = 2000;
export const MAX_LINK_REPLY_NAME_LENGTH = 40;
/** Max members per team — a leaked, non-rotating code + no cap = a floodable team. */
export const MAX_TEAM_SIZE = 50;
// ── Handoff share links ("Loom mechanic": a public, expiring URL that renders a
// handoff's context to a NON-user and converts them) ───────────────────────
/** Default lifetime of a handoff share link. Links are ephemeral by design — a
* handoff is a "pick this up now" artifact, not a permanent document. */
export const HANDOFF_LINK_TTL_HOURS = 7 * 24;
/** Hard cap so a caller can't mint a near-permanent public URL. */
export const HANDOFF_LINK_MAX_TTL_HOURS = 30 * 24;
/** Cap on a serialized share snapshot (guards KV + the public render path). The
* diff alone is already capped at MAX_DIFF_BYTES; this bounds the whole packet. */
export const MAX_HANDOFF_SHARE_BYTES = 128 * 1024;
// ── Asks (blocking agent questions; see AskMeta/AskAnswer in message.ts) ─────
/** Bounds for an ask's suggested options (rendered as ready-made commands). */
export const MAX_ASK_OPTIONS = 8;
export const MAX_ASK_OPTION_LENGTH = 80;
//# sourceMappingURL=api.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC;iFACiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,2CAA2C,CAAC"}
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC;iFACiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAuF7E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAwB7C,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,iFAAiF;AACjF,gFAAgF;AAEhF;0EAC0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7C,mEAAmE;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,CAAC;AAClD;oFACoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,CAAC;AA6HlD,gFAAgF;AAEhF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}

@@ -6,3 +6,16 @@ /**

export type Urgency = "low" | "normal" | "urgent";
export type AyoKind = "ping" | "handoff";
export type AyoKind = "ping" | "handoff" | "ask";
/** Ask-specific payload (`kind: "ask"`): a blocking question from an agent that
* stays pinned until answered. Options are suggestions — free text always works. */
export interface AskMeta {
/** Suggested answers, rendered as ready-made `ayo answer` commands. */
options?: string[];
}
/** The recorded answer to an ask (stored by the team DO, joined into inbox reads). */
export interface AskAnswer {
answer: string;
by: Handle;
/** ISO timestamp. */
at: string;
}
/** A handle is a per-team display name; defaults to GitHub login, aliasable. */

@@ -63,3 +76,9 @@ export type Handle = string;

replyTo?: AyoId | null;
/** ISO timestamp; null = never expires. */
/** Present iff kind === "ask". */
ask?: AskMeta;
/** Denormalized read-model field: the DO stamps this onto kind==="ask" items
* when serving the inbox (null = unanswered ask; absent = not an ask). The
* authoritative record lives in DO storage. */
askAnswer?: AskAnswer | null;
/** ISO timestamp; null = never expires. For asks this is the answer deadline. */
expiresAt?: string | null;

@@ -66,0 +85,0 @@ /** The sender's chosen sound, stamped by the relay. null/absent = recipient default. */

@@ -1,1 +0,1 @@

{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAmDrG,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AA0BxC,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,MAAM;IACN,MAAM;IACN,WAAW;IACX,UAAU;IACV,MAAM;IACN,UAAU;CACF,CAAC;AAEX,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,IAAmB;IACjE,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC"}
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkCH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAyDrG,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AA0BxC,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,MAAM;IACN,MAAM;IACN,WAAW;IACX,UAAU;IACV,MAAM;IACN,UAAU;CACF,CAAC;AAEX,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,IAAmB;IACjE,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC"}
{
"name": "@ayo-dev/core",
"version": "0.1.6",
"version": "0.2.0",
"description": "Shared message schema, wire protocol, and types for Ayo.",

@@ -5,0 +5,0 @@ "license": "MIT",