@ambasada/sdk 0.8.2 → 0.8.4
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/define.d.ts +22 -1
- package/dist/errors.d.ts +1 -0
- package/dist/platform.d.ts +2 -1
- package/dist/platform.js +13 -0
- package/package.json +2 -2
package/dist/define.d.ts
CHANGED
|
@@ -2,18 +2,39 @@
|
|
|
2
2
|
* `ambasada.config.ts` (docs/PLATFORM.md §3). Types and checks only; the CLI reads the values
|
|
3
3
|
* (`ambasada dev`, `deploy`, `link`, `check`). Add-ons add their own keys (the village: `idea`, `offerings`, `agent`).
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* The app's Ambasada mini app (docs/MINI-APPS.md §15, decision 15.6): optional. With it, `ambasada dev` and `deploy`
|
|
7
|
+
* serve /.well-known/ambasada.json (from this and `id`, `name`, `description`), `ambasada check` runs the mini-app
|
|
8
|
+
* rules on the entry, and the deploy registers the app with the Ambasada app. `ambasada miniapp enable` adds it.
|
|
9
|
+
*/
|
|
10
|
+
export interface MiniAppConfig {
|
|
11
|
+
/** The path the Ambasada app opens: "/app" (the in-app layout under it), or "/" for the whole site. */
|
|
12
|
+
entry: string;
|
|
13
|
+
/** A 1024×1024 opaque PNG, a path on the app (default "/icon.png"). */
|
|
14
|
+
icon?: string;
|
|
15
|
+
/** Manifest fields beyond the defaults (docs/MINI-APPS.md §2). */
|
|
16
|
+
category?: "shopping" | "food" | "events" | "tools" | "learning" | "community" | "games" | "finance" | "other";
|
|
17
|
+
accent?: string;
|
|
18
|
+
/** What the app asks the shell for (default: identity and notifications, which the templates' routes serve). */
|
|
19
|
+
scopes?: ("identity" | "notifications")[];
|
|
20
|
+
visibility?: "public" | "builders" | "unlisted" | `event:${string}`;
|
|
21
|
+
}
|
|
5
22
|
export interface AppConfig {
|
|
6
23
|
/** The app's slug (lowercase): it lives at https://<id>.ambasada.dev. */
|
|
7
24
|
id: string;
|
|
8
25
|
/** Display name. */
|
|
9
26
|
name: string;
|
|
10
|
-
/** One line about the app
|
|
27
|
+
/** One line about the app (the mini app's subtitle and description, when there is one). */
|
|
11
28
|
description?: string;
|
|
12
29
|
/** Where the app runs; `ambasada link` sets it when you host elsewhere. */
|
|
13
30
|
product?: {
|
|
14
31
|
url?: string;
|
|
15
32
|
};
|
|
33
|
+
/** The mini app inside the Ambasada app, at a path of this one. Off without it. */
|
|
34
|
+
miniapp?: MiniAppConfig;
|
|
16
35
|
/** Add-ons to load besides the ones found in node_modules (package names, e.g. "@ambasada/village"). */
|
|
17
36
|
addons?: string[];
|
|
18
37
|
}
|
|
38
|
+
/** A path the mini app may open at: absolute, no query, hash, `..` or `//`. */
|
|
39
|
+
export declare const MINIAPP_ENTRY: RegExp;
|
|
19
40
|
export declare function defineApp<T extends AppConfig>(config: T): T;
|
package/dist/errors.d.ts
CHANGED
package/dist/platform.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ export type * from "./types.js";
|
|
|
10
10
|
export { getHeader } from "./headers.js";
|
|
11
11
|
export type { HeaderSource } from "./headers.js";
|
|
12
12
|
export { defineApp } from "./define.js";
|
|
13
|
-
export
|
|
13
|
+
export { MINIAPP_ENTRY } from "./define.js";
|
|
14
|
+
export type { AppConfig, MiniAppConfig } from "./define.js";
|
|
14
15
|
export { AmbasadaAuth, AUTH_PATHS, JWKS_TTL_MS, SESSION_TTL_S } from "./auth.js";
|
|
15
16
|
export type { AmbasadaUser, AuthConfig, LoginOptions, ShellUser, WithHeaders } from "./auth.js";
|
|
16
17
|
export { AmbasadaApps, APP_SIGNATURE_HEADER, APP_TIMESTAMP_HEADER, appWebhookHeaders, signAppWebhook } from "./apps.js";
|
package/dist/platform.js
CHANGED
|
@@ -173,6 +173,8 @@ var ERROR_STATUS = {
|
|
|
173
173
|
FROZEN: 403,
|
|
174
174
|
// Exchange stream: an agent sent too many inbox messages
|
|
175
175
|
CAP_INBOX_RATE: 429,
|
|
176
|
+
// The CEO chat: too many turns for one company
|
|
177
|
+
CAP_CHAT_RATE: 429,
|
|
176
178
|
// SDK-side
|
|
177
179
|
NETWORK: 0,
|
|
178
180
|
CONFIG: 0,
|
|
@@ -777,8 +779,18 @@ function getHeader(headers, name) {
|
|
|
777
779
|
}
|
|
778
780
|
|
|
779
781
|
// src/define.ts
|
|
782
|
+
var MINIAPP_ENTRY = /^\/(?:[A-Za-z0-9._~-]+(?:\/[A-Za-z0-9._~-]+)*)?$/;
|
|
780
783
|
function defineApp(config) {
|
|
781
784
|
if (typeof config.id !== "string" || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(config.id)) throw new Error(`app id "${String(config.id)}" must be a lowercase slug (a-z, 0-9, -)`);
|
|
785
|
+
const m = config.miniapp;
|
|
786
|
+
if (m !== void 0) {
|
|
787
|
+
if (!m || typeof m !== "object") throw new Error(`${config.id}: miniapp must be { entry: "/app" }`);
|
|
788
|
+
if (typeof m.entry !== "string" || !MINIAPP_ENTRY.test(m.entry) || m.entry.split("/").includes("..")) {
|
|
789
|
+
throw new Error(`${config.id}: miniapp.entry must be a path like "/app" or "/" (got ${JSON.stringify(m.entry)})`);
|
|
790
|
+
}
|
|
791
|
+
if (m.icon !== void 0 && (typeof m.icon !== "string" || !m.icon.startsWith("/"))) throw new Error(`${config.id}: miniapp.icon must be a path like "/icon.png"`);
|
|
792
|
+
if (m.accent !== void 0 && !/^#[0-9a-fA-F]{6}$/.test(m.accent)) throw new Error(`${config.id}: miniapp.accent must be a #RRGGBB colour`);
|
|
793
|
+
}
|
|
782
794
|
return config;
|
|
783
795
|
}
|
|
784
796
|
|
|
@@ -796,6 +808,7 @@ export {
|
|
|
796
808
|
DEFAULT_API_URL,
|
|
797
809
|
ERROR_STATUS,
|
|
798
810
|
JWKS_TTL_MS,
|
|
811
|
+
MINIAPP_ENTRY,
|
|
799
812
|
SESSION_TTL_S,
|
|
800
813
|
WebhookInvalidError,
|
|
801
814
|
ambasada,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ambasada/sdk",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "The Ambasada platform SDK: Sign in with Ambasada, mini-app notifications, the project store, files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"node": ">=22"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ambasada/village": "^0.8.
|
|
30
|
+
"@ambasada/village": "^0.8.4"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^22.20.5",
|