@alpic-ai/sdk 0.0.0-dev.g577f4c1 → 0.0.0-dev.ge127a8f

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.
@@ -1,7 +1,15 @@
1
1
  import { type LoginOptions } from "./login.js";
2
2
  import { type Credentials } from "./store.js";
3
3
  export type { Credentials, LoginOptions };
4
+ export type AuthEvents = {
5
+ authenticated: {
6
+ sub: string;
7
+ };
8
+ };
4
9
  export declare class AlpicAuth {
10
+ #private;
11
+ on: <K extends "authenticated">(event: K, listener: import("../lib/emitter.js").Listener<AuthEvents[K]>) => void;
12
+ off: <K extends "authenticated">(event: K, listener: import("../lib/emitter.js").Listener<AuthEvents[K]>) => void;
5
13
  getValidAccessToken(): Promise<Credentials | null>;
6
14
  isAuthenticated(): Promise<boolean>;
7
15
  getToken(): Promise<string | undefined>;
@@ -1,7 +1,11 @@
1
+ import { createEmitter } from "../lib/emitter.js";
1
2
  import { oauthLogin } from "./login.js";
2
3
  import { getOAuthClient } from "./oauth-client.js";
3
4
  import { globalStore } from "./store.js";
4
5
  export class AlpicAuth {
6
+ #events = createEmitter();
7
+ on = this.#events.on;
8
+ off = this.#events.off;
5
9
  async getValidAccessToken() {
6
10
  return getOAuthClient().getValidAccessToken();
7
11
  }
@@ -12,7 +16,9 @@ export class AlpicAuth {
12
16
  return process.env.ALPIC_API_KEY ?? (await getOAuthClient().getValidAccessToken())?.access_token;
13
17
  }
14
18
  async login(opts) {
15
- return oauthLogin(opts);
19
+ const result = await oauthLogin(opts);
20
+ this.#events.emit("authenticated", { sub: result.sub });
21
+ return result;
16
22
  }
17
23
  async logout() {
18
24
  globalStore.clearCredentials();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,mBAAmB;QACvB,OAAO,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAmB;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ3D,MAAM,OAAO,SAAS;IACpB,OAAO,GAA6B,aAAa,EAAc,CAAC;IAEhE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAEvB,KAAK,CAAC,mBAAmB;QACvB,OAAO,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAmB;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;CACF"}
package/dist/client.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type AlpicApi } from "./api/client.js";
2
2
  import { AlpicAuth } from "./auth/index.js";
3
- import { createTunnel, type TunnelHandle } from "./tunnel/tunnel.js";
3
+ import { createTunnel } from "./tunnel/tunnel.js";
4
4
  export type AlpicClientOptions = {
5
5
  apiBaseUrl?: string;
6
6
  };
@@ -10,4 +10,3 @@ export declare class AlpicClient {
10
10
  readonly tunnel: ReturnType<typeof createTunnel>;
11
11
  constructor(opts?: AlpicClientOptions);
12
12
  }
13
- export type { TunnelHandle };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAMrE,MAAM,OAAO,WAAW;IACb,IAAI,CAAY;IAChB,GAAG,CAAW;IACd,MAAM,CAAkC;IAEjD,YAAY,IAAyB;QACnC,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAE9D,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC;YACzB,UAAU;YACV,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;gBACtD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;oBACtC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,KAAK,CAAC,YAAY,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,OAAO,WAAW;IACb,IAAI,CAAY;IAChB,GAAG,CAAW;IACd,MAAM,CAAkC;IAEjD,YAAY,IAAyB;QACnC,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAE9D,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC;YACzB,UAAU;YACV,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;gBACtD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;oBACtC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,KAAK,CAAC,YAAY,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export type { AlpicApi } from "./api/client.js";
2
- export type { Credentials, LoginOptions } from "./auth/index.js";
2
+ export type { AuthEvents, Credentials, LoginOptions } from "./auth/index.js";
3
3
  export { AlpicAuth } from "./auth/index.js";
4
4
  export { getOAuthClient } from "./auth/oauth-client.js";
5
5
  export { GlobalStore, globalStore } from "./auth/store.js";
6
- export type { AlpicClientOptions, TunnelHandle } from "./client.js";
6
+ export type { AlpicClientOptions } from "./client.js";
7
7
  export { AlpicClient } from "./client.js";
8
- export type { OpenTunnelOptions, TunnelRequest } from "./tunnel/tunnel.js";
8
+ export type { OpenTunnelOptions, TunnelHandle, TunnelRequest } from "./tunnel/tunnel.js";
@@ -0,0 +1,7 @@
1
+ export type Listener<T> = (payload: T) => void;
2
+ export type TypedEmitter<EventMap extends Record<string, unknown>> = {
3
+ on<K extends keyof EventMap>(event: K, listener: Listener<EventMap[K]>): void;
4
+ off<K extends keyof EventMap>(event: K, listener: Listener<EventMap[K]>): void;
5
+ emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
6
+ };
7
+ export declare function createEmitter<EventMap extends Record<string, unknown>>(): TypedEmitter<EventMap>;
@@ -0,0 +1,31 @@
1
+ // Minimal typed emitter for SDK lifecycle hooks. Unlike node's EventEmitter it
2
+ // never throws on an unlistened "error" event, and swallows listener errors so
3
+ // observability can never break the operation that emitted the event.
4
+ export function createEmitter() {
5
+ const listeners = new Map();
6
+ return {
7
+ on(event, listener) {
8
+ const set = listeners.get(event) ?? new Set();
9
+ set.add(listener);
10
+ listeners.set(event, set);
11
+ },
12
+ off(event, listener) {
13
+ listeners.get(event)?.delete(listener);
14
+ },
15
+ emit(event, payload) {
16
+ const set = listeners.get(event);
17
+ if (!set) {
18
+ return;
19
+ }
20
+ for (const listener of set) {
21
+ try {
22
+ listener(payload);
23
+ }
24
+ catch {
25
+ // Listener errors must never break the emitting operation.
26
+ }
27
+ }
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/lib/emitter.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,+EAA+E;AAC/E,sEAAsE;AACtE,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0C,CAAC;IAEpE,OAAO;QACL,EAAE,CAAC,KAAK,EAAE,QAAQ;YAChB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAqB,CAAC;YACjE,GAAG,CAAC,GAAG,CAAC,QAA6B,CAAC,CAAC;YACvC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,QAAQ;YACjB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAA6B,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,OAAO;YACjB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAkB,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "@alpic-ai/sdk",
3
- "version": "0.0.0-dev.g577f4c1",
3
+ "version": "0.0.0-dev.ge127a8f",
4
4
  "description": "Programmatic SDK for Alpic (auth, API, tunnel)",
5
+ "homepage": "https://alpic.ai",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/alpic-ai/alpic.git",
9
+ "directory": "packages/sdk"
10
+ },
5
11
  "type": "module",
6
12
  "main": "./dist/index.js",
7
13
  "types": "./dist/index.d.ts",
@@ -28,7 +34,7 @@
28
34
  "open": "^11.0.0",
29
35
  "openid-client": "^6.8.4",
30
36
  "zod": "^4.4.3",
31
- "@alpic-ai/api": "0.0.0-dev.g577f4c1"
37
+ "@alpic-ai/api": "0.0.0-dev.ge127a8f"
32
38
  },
33
39
  "devDependencies": {
34
40
  "@total-typescript/tsconfig": "^1.0.4",