@archastro/sdk 0.6.0 → 0.8.0
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/README.md +25 -0
- package/dist/app-session.d.ts +66 -0
- package/dist/app-session.d.ts.map +1 -0
- package/dist/app-session.js +158 -0
- package/dist/app-session.js.map +1 -0
- package/dist/auth.d.ts +5 -3
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +7 -5
- package/dist/auth.js.map +1 -1
- package/dist/channels/api_activity_feed_channel.js +2 -2
- package/dist/channels/api_activity_feed_channel.js.map +1 -1
- package/dist/channels/api_chat_channel.js +2 -2
- package/dist/channels/api_chat_channel.js.map +1 -1
- package/dist/channels/api_object_channel.d.ts +13 -2
- package/dist/channels/api_object_channel.d.ts.map +1 -1
- package/dist/channels/api_object_channel.js +21 -6
- package/dist/channels/api_object_channel.js.map +1 -1
- package/dist/channels/api_tasks_channel.d.ts +30 -0
- package/dist/channels/api_tasks_channel.d.ts.map +1 -0
- package/dist/channels/api_tasks_channel.js +45 -0
- package/dist/channels/api_tasks_channel.js.map +1 -0
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.native.d.ts +14 -0
- package/dist/index.native.d.ts.map +1 -0
- package/dist/index.native.js +14 -0
- package/dist/index.native.js.map +1 -0
- package/dist/passwordless.d.ts +49 -0
- package/dist/passwordless.d.ts.map +1 -0
- package/dist/passwordless.js +70 -0
- package/dist/passwordless.js.map +1 -0
- package/dist/phx_channel/socket.d.ts.map +1 -1
- package/dist/phx_channel/socket.js +10 -22
- package/dist/phx_channel/socket.js.map +1 -1
- package/dist/phx_channel/websocket.d.ts +19 -0
- package/dist/phx_channel/websocket.d.ts.map +1 -0
- package/dist/phx_channel/websocket.js +28 -0
- package/dist/phx_channel/websocket.js.map +1 -0
- package/dist/phx_channel/websocket.native.d.ts +17 -0
- package/dist/phx_channel/websocket.native.d.ts.map +1 -0
- package/dist/phx_channel/websocket.native.js +16 -0
- package/dist/phx_channel/websocket.native.js.map +1 -0
- package/dist/platform-socket.d.ts +20 -0
- package/dist/platform-socket.d.ts.map +1 -0
- package/dist/platform-socket.js +25 -0
- package/dist/platform-socket.js.map +1 -0
- package/dist/runtime/http-client.d.ts.map +1 -1
- package/dist/runtime/http-client.js +7 -4
- package/dist/runtime/http-client.js.map +1 -1
- package/dist/runtime/url.d.ts +15 -0
- package/dist/runtime/url.d.ts.map +1 -0
- package/dist/runtime/url.js +34 -0
- package/dist/runtime/url.js.map +1 -0
- package/dist/types/ai.d.ts +66 -52
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/ai.js +7 -2
- package/dist/types/ai.js.map +1 -1
- package/dist/types/artifacts.d.ts +8 -8
- package/dist/types/artifacts.js +2 -2
- package/dist/types/artifacts.js.map +1 -1
- package/dist/types/automations.d.ts +68 -10
- package/dist/types/automations.d.ts.map +1 -1
- package/dist/types/automations.js +22 -2
- package/dist/types/automations.js.map +1 -1
- package/dist/types/chat.d.ts +18446 -3559
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/chat.js +2 -2
- package/dist/types/chat.js.map +1 -1
- package/dist/types/common.d.ts +12646 -2316
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +372 -80
- package/dist/types/common.js.map +1 -1
- package/dist/types/config.d.ts +22 -10
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +4 -2
- package/dist/types/config.js.map +1 -1
- package/dist/types/device.d.ts +60 -0
- package/dist/types/device.d.ts.map +1 -0
- package/dist/types/device.js +25 -0
- package/dist/types/device.js.map +1 -0
- package/dist/types/extractions.d.ts +452 -0
- package/dist/types/extractions.d.ts.map +1 -0
- package/dist/types/extractions.js +52 -0
- package/dist/types/extractions.js.map +1 -0
- package/dist/types/image.js +2 -2
- package/dist/types/image.js.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/invites.js +2 -2
- package/dist/types/invites.js.map +1 -1
- package/dist/types/notifications.d.ts +2 -2
- package/dist/types/notifications.js +2 -2
- package/dist/types/notifications.js.map +1 -1
- package/dist/types/oauth.d.ts +117 -0
- package/dist/types/oauth.d.ts.map +1 -0
- package/dist/types/oauth.js +21 -0
- package/dist/types/oauth.js.map +1 -0
- package/dist/types/teams.d.ts +2402 -242
- package/dist/types/teams.d.ts.map +1 -1
- package/dist/types/teams.js +2 -2
- package/dist/types/teams.js.map +1 -1
- package/dist/types/threads.d.ts +1419 -328
- package/dist/types/threads.d.ts.map +1 -1
- package/dist/types/threads.js +18 -17
- package/dist/types/threads.js.map +1 -1
- package/dist/types/users.d.ts +2 -2
- package/dist/types/users.js +2 -2
- package/dist/types/users.js.map +1 -1
- package/dist/v1/resources/activity_feed.d.ts +84 -0
- package/dist/v1/resources/activity_feed.d.ts.map +1 -1
- package/dist/v1/resources/activity_feed.js +2 -2
- package/dist/v1/resources/activity_feed.js.map +1 -1
- package/dist/v1/resources/agent_computers.js +2 -2
- package/dist/v1/resources/agent_computers.js.map +1 -1
- package/dist/v1/resources/agent_env_vars.js +2 -2
- package/dist/v1/resources/agent_env_vars.js.map +1 -1
- package/dist/v1/resources/agent_health_actions.js +2 -2
- package/dist/v1/resources/agent_health_actions.js.map +1 -1
- package/dist/v1/resources/agent_installations.d.ts +2 -2
- package/dist/v1/resources/agent_installations.d.ts.map +1 -1
- package/dist/v1/resources/agent_installations.js +3 -3
- package/dist/v1/resources/agent_installations.js.map +1 -1
- package/dist/v1/resources/agent_routine_runs.d.ts +16 -1
- package/dist/v1/resources/agent_routine_runs.d.ts.map +1 -1
- package/dist/v1/resources/agent_routine_runs.js +16 -2
- package/dist/v1/resources/agent_routine_runs.js.map +1 -1
- package/dist/v1/resources/agent_routines.d.ts +47 -3
- package/dist/v1/resources/agent_routines.d.ts.map +1 -1
- package/dist/v1/resources/agent_routines.js +42 -3
- package/dist/v1/resources/agent_routines.js.map +1 -1
- package/dist/v1/resources/agent_sessions.d.ts +14 -2
- package/dist/v1/resources/agent_sessions.d.ts.map +1 -1
- package/dist/v1/resources/agent_sessions.js +14 -3
- package/dist/v1/resources/agent_sessions.js.map +1 -1
- package/dist/v1/resources/agent_skills.js +2 -2
- package/dist/v1/resources/agent_skills.js.map +1 -1
- package/dist/v1/resources/agent_tools.d.ts +2 -2
- package/dist/v1/resources/agent_tools.d.ts.map +1 -1
- package/dist/v1/resources/agent_tools.js +3 -3
- package/dist/v1/resources/agent_tools.js.map +1 -1
- package/dist/v1/resources/agents.d.ts +152 -35
- package/dist/v1/resources/agents.d.ts.map +1 -1
- package/dist/v1/resources/agents.js +148 -42
- package/dist/v1/resources/agents.js.map +1 -1
- package/dist/v1/resources/ai.d.ts +81 -40
- package/dist/v1/resources/ai.d.ts.map +1 -1
- package/dist/v1/resources/ai.js +52 -17
- package/dist/v1/resources/ai.js.map +1 -1
- package/dist/v1/resources/artifacts.js +2 -2
- package/dist/v1/resources/artifacts.js.map +1 -1
- package/dist/v1/resources/automation_runs.d.ts +41 -6
- package/dist/v1/resources/automation_runs.d.ts.map +1 -1
- package/dist/v1/resources/automation_runs.js +47 -8
- package/dist/v1/resources/automation_runs.js.map +1 -1
- package/dist/v1/resources/automations.d.ts +14 -1
- package/dist/v1/resources/automations.d.ts.map +1 -1
- package/dist/v1/resources/automations.js +15 -3
- package/dist/v1/resources/automations.js.map +1 -1
- package/dist/v1/resources/bug_reports.js +2 -2
- package/dist/v1/resources/bug_reports.js.map +1 -1
- package/dist/v1/resources/config.d.ts +3 -0
- package/dist/v1/resources/config.d.ts.map +1 -1
- package/dist/v1/resources/config.js +2 -2
- package/dist/v1/resources/config.js.map +1 -1
- package/dist/v1/resources/custom_objects.js +2 -2
- package/dist/v1/resources/custom_objects.js.map +1 -1
- package/dist/v1/resources/extractions.d.ts +50 -0
- package/dist/v1/resources/extractions.d.ts.map +1 -0
- package/dist/v1/resources/extractions.js +48 -0
- package/dist/v1/resources/extractions.js.map +1 -0
- package/dist/v1/resources/files.d.ts +88 -1
- package/dist/v1/resources/files.d.ts.map +1 -1
- package/dist/v1/resources/files.js +86 -3
- package/dist/v1/resources/files.js.map +1 -1
- package/dist/v1/resources/index.d.ts +5 -0
- package/dist/v1/resources/index.d.ts.map +1 -1
- package/dist/v1/resources/index.js +7 -2
- package/dist/v1/resources/index.js.map +1 -1
- package/dist/v1/resources/installation_sources.js +2 -2
- package/dist/v1/resources/installation_sources.js.map +1 -1
- package/dist/v1/resources/invites.js +2 -2
- package/dist/v1/resources/invites.js.map +1 -1
- package/dist/v1/resources/knowledge_documents.d.ts +33 -1
- package/dist/v1/resources/knowledge_documents.d.ts.map +1 -1
- package/dist/v1/resources/knowledge_documents.js +25 -2
- package/dist/v1/resources/knowledge_documents.js.map +1 -1
- package/dist/v1/resources/knowledge_ingestions.d.ts +16 -0
- package/dist/v1/resources/knowledge_ingestions.d.ts.map +1 -0
- package/dist/v1/resources/knowledge_ingestions.js +21 -0
- package/dist/v1/resources/knowledge_ingestions.js.map +1 -0
- package/dist/v1/resources/knowledge_sources.d.ts +2 -0
- package/dist/v1/resources/knowledge_sources.d.ts.map +1 -1
- package/dist/v1/resources/knowledge_sources.js +3 -2
- package/dist/v1/resources/knowledge_sources.js.map +1 -1
- package/dist/v1/resources/kv.js +2 -2
- package/dist/v1/resources/kv.js.map +1 -1
- package/dist/v1/resources/notification_preferences.js +2 -2
- package/dist/v1/resources/notification_preferences.js.map +1 -1
- package/dist/v1/resources/notifications.js +2 -2
- package/dist/v1/resources/notifications.js.map +1 -1
- package/dist/v1/resources/oauth.d.ts +115 -0
- package/dist/v1/resources/oauth.d.ts.map +1 -0
- package/dist/v1/resources/oauth.js +112 -0
- package/dist/v1/resources/oauth.js.map +1 -0
- package/dist/v1/resources/orgs.js +2 -2
- package/dist/v1/resources/orgs.js.map +1 -1
- package/dist/v1/resources/slack_channel_bindings.d.ts +25 -0
- package/dist/v1/resources/slack_channel_bindings.d.ts.map +1 -1
- package/dist/v1/resources/slack_channel_bindings.js +24 -2
- package/dist/v1/resources/slack_channel_bindings.js.map +1 -1
- package/dist/v1/resources/solution_categories.js +2 -2
- package/dist/v1/resources/solution_categories.js.map +1 -1
- package/dist/v1/resources/solution_instances.d.ts +26 -0
- package/dist/v1/resources/solution_instances.d.ts.map +1 -0
- package/dist/v1/resources/solution_instances.js +35 -0
- package/dist/v1/resources/solution_instances.js.map +1 -0
- package/dist/v1/resources/solution_tags.js +2 -2
- package/dist/v1/resources/solution_tags.js.map +1 -1
- package/dist/v1/resources/solutions.d.ts +85 -1
- package/dist/v1/resources/solutions.d.ts.map +1 -1
- package/dist/v1/resources/solutions.js +67 -3
- package/dist/v1/resources/solutions.js.map +1 -1
- package/dist/v1/resources/team_memberships.js +2 -2
- package/dist/v1/resources/team_memberships.js.map +1 -1
- package/dist/v1/resources/teams.d.ts +210 -4
- package/dist/v1/resources/teams.d.ts.map +1 -1
- package/dist/v1/resources/teams.js +16 -6
- package/dist/v1/resources/teams.js.map +1 -1
- package/dist/v1/resources/thread_messages.d.ts +24 -4
- package/dist/v1/resources/thread_messages.d.ts.map +1 -1
- package/dist/v1/resources/thread_messages.js +9 -6
- package/dist/v1/resources/thread_messages.js.map +1 -1
- package/dist/v1/resources/threads.d.ts +158 -42
- package/dist/v1/resources/threads.d.ts.map +1 -1
- package/dist/v1/resources/threads.js +121 -32
- package/dist/v1/resources/threads.js.map +1 -1
- package/dist/v1/resources/users.d.ts +132 -1
- package/dist/v1/resources/users.d.ts.map +1 -1
- package/dist/v1/resources/users.js +4 -2
- package/dist/v1/resources/users.js.map +1 -1
- package/dist/v1/resources/work_items.d.ts +78 -0
- package/dist/v1/resources/work_items.d.ts.map +1 -0
- package/dist/v1/resources/work_items.js +86 -0
- package/dist/v1/resources/work_items.js.map +1 -0
- package/dist/v1.d.ts +10 -0
- package/dist/v1.d.ts.map +1 -1
- package/dist/v1.js +17 -2
- package/dist/v1.js.map +1 -1
- package/docs/authentication.md +91 -0
- package/docs/react-native.md +118 -0
- package/docs/scenarios.md +57 -0
- package/package.json +27 -5
package/README.md
CHANGED
|
@@ -61,10 +61,35 @@ const teams = await client.teams.list();
|
|
|
61
61
|
console.log(me.id, me.email, teams);
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
## React Native / Expo
|
|
65
|
+
|
|
66
|
+
Native mobile works out of the box — no Node `ws` / `events` polyfills.
|
|
67
|
+
Use **`PlatformClient.forApp`** so session storage, passwordless OTP, and
|
|
68
|
+
auto-refresh stay behind one client (not a parallel session helper):
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { PlatformClient, ApiChatChannel, type SessionStorage } from "@archastro/sdk";
|
|
72
|
+
|
|
73
|
+
const client = PlatformClient.forApp({
|
|
74
|
+
publishableKey: process.env.EXPO_PUBLIC_PUBLISHABLE_KEY!,
|
|
75
|
+
baseUrl: process.env.EXPO_PUBLIC_API_BASE_URL!,
|
|
76
|
+
storage, // your SessionStorage (SecureStore / AsyncStorage)
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
await client.restore();
|
|
80
|
+
// client.passwordless… → client.signIn(tokens, user)
|
|
81
|
+
await client.agents.list();
|
|
82
|
+
const socket = client.createSocket();
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See [React Native guide](./docs/react-native.md).
|
|
86
|
+
|
|
64
87
|
## Integration Guides
|
|
65
88
|
|
|
66
89
|
- [Authentication](./docs/authentication.md): choose the right token strategy for
|
|
67
90
|
browser sessions, server-side app integrations, and org workers.
|
|
91
|
+
- [React Native / Expo](./docs/react-native.md): session storage, passwordless
|
|
92
|
+
auth, and chat channels without Node polyfills.
|
|
68
93
|
- [Integration scenarios](./docs/scenarios.md): read the current user, list
|
|
69
94
|
teams, and create an agent with snippets that were smoke-tested against the
|
|
70
95
|
local platform dev harness.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable app-session mode for PlatformClient (hand-maintained).
|
|
3
|
+
*
|
|
4
|
+
* **Not a public package export.** The generator wires
|
|
5
|
+
* `PlatformClient.forApp` → `forApp()` from this module. Apps only see:
|
|
6
|
+
* PlatformClient.forApp / AppPlatformClient / SessionStorage / AppSession
|
|
7
|
+
* PasswordlessAuth, free forApp, and createPlatformSocket stay internal.
|
|
8
|
+
*/
|
|
9
|
+
import { type AuthTokens } from "./auth.js";
|
|
10
|
+
import { PlatformClient } from "./client.js";
|
|
11
|
+
import { PasswordlessAuth } from "./passwordless.js";
|
|
12
|
+
import type { Socket, SocketConfig } from "./phx_channel/socket.js";
|
|
13
|
+
export interface AppSession {
|
|
14
|
+
accessToken: string;
|
|
15
|
+
refreshToken?: string;
|
|
16
|
+
accessTokenExpiresAt?: number | null;
|
|
17
|
+
user?: {
|
|
18
|
+
id: string;
|
|
19
|
+
email?: string | null;
|
|
20
|
+
name?: string | null;
|
|
21
|
+
alias?: string | null;
|
|
22
|
+
org?: string | null;
|
|
23
|
+
org_name?: string | null;
|
|
24
|
+
org_role?: string | null;
|
|
25
|
+
} | null;
|
|
26
|
+
}
|
|
27
|
+
export interface SessionStorage {
|
|
28
|
+
load(): Promise<AppSession | null>;
|
|
29
|
+
save(session: AppSession): Promise<void>;
|
|
30
|
+
clear(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export interface ForAppOptions {
|
|
33
|
+
/** Publishable key (pk_...) sent as x-archastro-api-key */
|
|
34
|
+
publishableKey: string;
|
|
35
|
+
/** Platform origin; defaults to production */
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
/** Durable token store (SecureStore, AsyncStorage, memory, …) */
|
|
38
|
+
storage: SessionStorage;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* PlatformClient with app-session capabilities.
|
|
42
|
+
* Still a real PlatformClient — all generated resources work.
|
|
43
|
+
*/
|
|
44
|
+
export type AppPlatformClient = PlatformClient & {
|
|
45
|
+
readonly passwordless: PasswordlessAuth;
|
|
46
|
+
/** Hydrate from storage and wire auto-refresh. Returns session if any. */
|
|
47
|
+
restore(): Promise<AppSession | null>;
|
|
48
|
+
/** Apply tokens from a login/verify response and persist. */
|
|
49
|
+
signIn(tokens: AuthTokens, user?: AppSession["user"]): Promise<AppSession>;
|
|
50
|
+
/** Clear memory + storage + client tokens. */
|
|
51
|
+
signOut(): Promise<void>;
|
|
52
|
+
getSession(): AppSession | null;
|
|
53
|
+
/**
|
|
54
|
+
* Phoenix ApiSocket using the current access token + publishable key.
|
|
55
|
+
* Throws if not signed in.
|
|
56
|
+
*/
|
|
57
|
+
createSocket(socketConfig?: Omit<SocketConfig, "params">): Socket;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Client-side app factory: publishable key + durable session storage.
|
|
61
|
+
*
|
|
62
|
+
* Wires passwordless OTP, restore/signIn/signOut, 401 auto-refresh with
|
|
63
|
+
* rotated-token persistence, and createSocket().
|
|
64
|
+
*/
|
|
65
|
+
export declare function forApp(options: ForAppOptions): AppPlatformClient;
|
|
66
|
+
//# sourceMappingURL=app-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-session.d.ts","sourceRoot":"","sources":["../src/app-session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,0EAA0E;IAC1E,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACtC,6DAA6D;IAC7D,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,8CAA8C;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,UAAU,GAAG,IAAI,CAAC;IAChC;;;OAGG;IACH,YAAY,CACV,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAC1C,MAAM,CAAC;CACX,CAAC;AA2CF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,CA6HhE"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable app-session mode for PlatformClient (hand-maintained).
|
|
3
|
+
*
|
|
4
|
+
* **Not a public package export.** The generator wires
|
|
5
|
+
* `PlatformClient.forApp` → `forApp()` from this module. Apps only see:
|
|
6
|
+
* PlatformClient.forApp / AppPlatformClient / SessionStorage / AppSession
|
|
7
|
+
* PasswordlessAuth, free forApp, and createPlatformSocket stay internal.
|
|
8
|
+
*/
|
|
9
|
+
import { AuthClient } from "./auth.js";
|
|
10
|
+
import { PlatformClient } from "./client.js";
|
|
11
|
+
import { HttpClient } from "./runtime/http-client.js";
|
|
12
|
+
import { PasswordlessAuth } from "./passwordless.js";
|
|
13
|
+
import { createPlatformSocket, } from "./platform-socket.js";
|
|
14
|
+
function wireRefresh(client, publishableKey, baseUrl, onRotated) {
|
|
15
|
+
const refreshHttp = new HttpClient({
|
|
16
|
+
baseUrl,
|
|
17
|
+
defaultHeaders: { "x-archastro-api-key": publishableKey },
|
|
18
|
+
refreshOnly: true,
|
|
19
|
+
});
|
|
20
|
+
const refreshAuth = new AuthClient(refreshHttp);
|
|
21
|
+
client.http.setRefreshHandler(async () => {
|
|
22
|
+
const rt = client.refreshToken;
|
|
23
|
+
if (!rt)
|
|
24
|
+
throw new Error("No refresh token available");
|
|
25
|
+
const refreshed = await refreshAuth.refresh(rt);
|
|
26
|
+
if (!refreshed.accessToken) {
|
|
27
|
+
throw new Error("Refresh did not return an access token");
|
|
28
|
+
}
|
|
29
|
+
// Install the new access token first so a concurrent 401-retry that races
|
|
30
|
+
// past onRotated still sends the fresh bearer.
|
|
31
|
+
client.setAccessToken(refreshed.accessToken);
|
|
32
|
+
if (refreshed.refreshToken)
|
|
33
|
+
client.setRefreshToken(refreshed.refreshToken);
|
|
34
|
+
// onRotated must not throw for persistence blips — callers treat any throw
|
|
35
|
+
// as "refresh failed" and rethrow the original 401.
|
|
36
|
+
await onRotated(refreshed);
|
|
37
|
+
return refreshed.accessToken;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function applyAccessAndRefresh(client, tokens) {
|
|
41
|
+
if (!tokens.accessToken) {
|
|
42
|
+
throw new Error("Missing access token");
|
|
43
|
+
}
|
|
44
|
+
client.setAccessToken(tokens.accessToken);
|
|
45
|
+
if (tokens.refreshToken) {
|
|
46
|
+
client.setRefreshToken(tokens.refreshToken);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Client-side app factory: publishable key + durable session storage.
|
|
51
|
+
*
|
|
52
|
+
* Wires passwordless OTP, restore/signIn/signOut, 401 auto-refresh with
|
|
53
|
+
* rotated-token persistence, and createSocket().
|
|
54
|
+
*/
|
|
55
|
+
export function forApp(options) {
|
|
56
|
+
const { publishableKey, storage } = options;
|
|
57
|
+
const baseUrl = (options.baseUrl ?? "https://platform.archastro.ai").replace(/\/+$/, "");
|
|
58
|
+
let current = null;
|
|
59
|
+
const client = new PlatformClient({
|
|
60
|
+
baseUrl,
|
|
61
|
+
defaultHeaders: { "x-archastro-api-key": publishableKey },
|
|
62
|
+
getAccessToken: () => current?.accessToken,
|
|
63
|
+
});
|
|
64
|
+
const passwordless = new PasswordlessAuth(client.http);
|
|
65
|
+
const persistRotation = async (tokens) => {
|
|
66
|
+
if (!tokens.accessToken)
|
|
67
|
+
return;
|
|
68
|
+
// Rewrite in-memory session first so getAccessToken() returns the rotated
|
|
69
|
+
// bearer for the HttpClient 401-retry, even if storage.save fails.
|
|
70
|
+
const nextExpiresAt = typeof tokens.tokenExpiry === "number"
|
|
71
|
+
? Date.now() + tokens.tokenExpiry * 1000
|
|
72
|
+
: (current?.accessTokenExpiresAt ?? null);
|
|
73
|
+
current = {
|
|
74
|
+
accessToken: tokens.accessToken,
|
|
75
|
+
refreshToken: tokens.refreshToken ?? current?.refreshToken,
|
|
76
|
+
accessTokenExpiresAt: nextExpiresAt,
|
|
77
|
+
user: current?.user ?? null,
|
|
78
|
+
};
|
|
79
|
+
try {
|
|
80
|
+
await storage.save(current);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.warn("[@archastro/sdk] failed to persist rotated session tokens", err);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const enableRefresh = (tokens) => {
|
|
87
|
+
applyAccessAndRefresh(client, tokens);
|
|
88
|
+
wireRefresh(client, publishableKey, baseUrl, persistRotation);
|
|
89
|
+
};
|
|
90
|
+
const app = client;
|
|
91
|
+
Object.defineProperty(app, "passwordless", {
|
|
92
|
+
value: passwordless,
|
|
93
|
+
enumerable: true,
|
|
94
|
+
writable: false,
|
|
95
|
+
});
|
|
96
|
+
app.getSession = () => current;
|
|
97
|
+
app.restore = async () => {
|
|
98
|
+
const stored = await storage.load();
|
|
99
|
+
if (!stored?.accessToken) {
|
|
100
|
+
current = null;
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// Without a refresh token the access token cannot be renewed — drop the
|
|
104
|
+
// half-session so callers re-auth instead of looping 401s with no refresh.
|
|
105
|
+
if (!stored.refreshToken) {
|
|
106
|
+
current = null;
|
|
107
|
+
await storage.clear().catch(() => undefined);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
current = stored;
|
|
111
|
+
enableRefresh({
|
|
112
|
+
accessToken: stored.accessToken,
|
|
113
|
+
refreshToken: stored.refreshToken,
|
|
114
|
+
tokenExpiry: undefined,
|
|
115
|
+
});
|
|
116
|
+
return stored;
|
|
117
|
+
};
|
|
118
|
+
app.signIn = async (tokens, user) => {
|
|
119
|
+
if (!tokens.accessToken)
|
|
120
|
+
throw new Error("Missing access token");
|
|
121
|
+
if (!tokens.refreshToken) {
|
|
122
|
+
throw new Error("Missing refresh token — session cannot auto-renew without one");
|
|
123
|
+
}
|
|
124
|
+
const session = {
|
|
125
|
+
accessToken: tokens.accessToken,
|
|
126
|
+
refreshToken: tokens.refreshToken,
|
|
127
|
+
accessTokenExpiresAt: typeof tokens.tokenExpiry === "number"
|
|
128
|
+
? Date.now() + tokens.tokenExpiry * 1000
|
|
129
|
+
: null,
|
|
130
|
+
user: user ?? current?.user ?? null,
|
|
131
|
+
};
|
|
132
|
+
current = session;
|
|
133
|
+
enableRefresh(tokens);
|
|
134
|
+
await storage.save(session);
|
|
135
|
+
return session;
|
|
136
|
+
};
|
|
137
|
+
app.signOut = async () => {
|
|
138
|
+
current = null;
|
|
139
|
+
client.setAccessToken("");
|
|
140
|
+
client.setRefreshToken("");
|
|
141
|
+
await storage.clear();
|
|
142
|
+
};
|
|
143
|
+
app.createSocket = (socketConfig) => {
|
|
144
|
+
const accessToken = current?.accessToken;
|
|
145
|
+
if (!accessToken) {
|
|
146
|
+
throw new Error("Not signed in — call restore() or signIn() first");
|
|
147
|
+
}
|
|
148
|
+
const opts = {
|
|
149
|
+
apiBaseUrl: baseUrl,
|
|
150
|
+
accessToken,
|
|
151
|
+
publishableKey,
|
|
152
|
+
socketConfig,
|
|
153
|
+
};
|
|
154
|
+
return createPlatformSocket(opts);
|
|
155
|
+
};
|
|
156
|
+
return app;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=app-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-session.js","sourceRoot":"","sources":["../src/app-session.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -146,9 +146,11 @@ export declare class AuthClient {
|
|
|
146
146
|
* login flow (initiated by `/auth/request_login_link`) and the registration flow
|
|
147
147
|
* (initiated by `/auth/request_register_link` or `/auth/request_link`).
|
|
148
148
|
* Extract the token from the `token` query parameter of the magic link redirect URI
|
|
149
|
-
* and POST it here. Expired or already-used tokens return HTTP 401
|
|
150
|
-
*
|
|
151
|
-
*
|
|
149
|
+
* and POST it here. Expired or already-used tokens return HTTP 401 — expired links
|
|
150
|
+
* carry the error code `expired_token`, unknown or already-used tokens carry
|
|
151
|
+
* `invalid_or_expired_token`. If the app has disabled passwordless authentication
|
|
152
|
+
* the request returns HTTP 403. Rate-limited to 10 requests per IP per minute —
|
|
153
|
+
* exceeding this returns HTTP 429.
|
|
152
154
|
*
|
|
153
155
|
* @param token - Single-use magic link token extracted from the redirect URI query parameter.
|
|
154
156
|
* @returns Access token, refresh token, and the authenticated user object.
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;;;;;;;;;;OAYG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQ5D;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBjE;;;;;;;;;;;;;;OAcG;IACG,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnG;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAexD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBrK;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe5J;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAY9F;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB/E
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;;;;;;;;;;OAYG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQ5D;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBjE;;;;;;;;;;;;;;OAcG;IACG,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnG;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAexD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBrK;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe5J;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAY9F;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB/E;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAc3D"}
|
package/dist/auth.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Copyright (c) 2026 ArchAstro Inc.
|
|
1
|
+
// Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License.
|
|
2
2
|
// This file is auto-generated by @archastro/sdk-generator. Do not edit.
|
|
3
|
-
// Content hash:
|
|
3
|
+
// Content hash: 644586c30560
|
|
4
4
|
export class AuthClient {
|
|
5
5
|
http;
|
|
6
6
|
constructor(http) {
|
|
@@ -229,9 +229,11 @@ export class AuthClient {
|
|
|
229
229
|
* login flow (initiated by `/auth/request_login_link`) and the registration flow
|
|
230
230
|
* (initiated by `/auth/request_register_link` or `/auth/request_link`).
|
|
231
231
|
* Extract the token from the `token` query parameter of the magic link redirect URI
|
|
232
|
-
* and POST it here. Expired or already-used tokens return HTTP 401
|
|
233
|
-
*
|
|
234
|
-
*
|
|
232
|
+
* and POST it here. Expired or already-used tokens return HTTP 401 — expired links
|
|
233
|
+
* carry the error code `expired_token`, unknown or already-used tokens carry
|
|
234
|
+
* `invalid_or_expired_token`. If the app has disabled passwordless authentication
|
|
235
|
+
* the request returns HTTP 403. Rate-limited to 10 requests per IP per minute —
|
|
236
|
+
* exceeding this returns HTTP 429.
|
|
235
237
|
*
|
|
236
238
|
* @param token - Single-use magic link token extracted from the redirect URI query parameter.
|
|
237
239
|
* @returns Access token, refresh token, and the authenticated user object.
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Copyright (c) 2026 ArchAstro Inc.
|
|
1
|
+
// Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License.
|
|
2
2
|
// This file is auto-generated by @archastro/sdk-generator. Do not edit.
|
|
3
|
-
// Content hash:
|
|
3
|
+
// Content hash: 922e1bba50a5
|
|
4
4
|
/**
|
|
5
5
|
* Phoenix channel for real-time activity feed updates.
|
|
6
6
|
* Clients join a topic scoped to an agent or org and receive
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_activity_feed_channel.js","sourceRoot":"","sources":["../../src/channels/api_activity_feed_channel.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api_activity_feed_channel.js","sourceRoot":"","sources":["../../src/channels/api_activity_feed_channel.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wEAAwE;AACxE,6BAA6B;AAK7B;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IACb;IAAkC;IAAtD,YAAoB,OAAgB,EAAkB,YAAsB;QAAxD,YAAO,GAAP,OAAO,CAAS;QAAkB,iBAAY,GAAZ,YAAY,CAAU;IAAG,CAAC;IAEhF,yCAAyC;IACzC,MAAM,CAAC,UAAU,CAAC,OAAe;QAC/B,OAAO,2BAA2B,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,OAAe;QACpD,MAAM,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,OAAO,yBAAyB,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,KAAa;QAChD,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,WAAW,CAAC,OAAgC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,QAAoC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Copyright (c) 2026 ArchAstro Inc.
|
|
1
|
+
// Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License.
|
|
2
2
|
// This file is auto-generated by @archastro/sdk-generator. Do not edit.
|
|
3
|
-
// Content hash:
|
|
3
|
+
// Content hash: ddc69631fdba
|
|
4
4
|
/**
|
|
5
5
|
* Channel for real-time chat messaging.
|
|
6
6
|
* Supports team-scoped and user-scoped threads with keyed, transient, and direct
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_chat_channel.js","sourceRoot":"","sources":["../../src/channels/api_chat_channel.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api_chat_channel.js","sourceRoot":"","sources":["../../src/channels/api_chat_channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,25 @@ export declare class ApiObjectChannel {
|
|
|
10
10
|
readonly joinResponse?: unknown | undefined;
|
|
11
11
|
constructor(channel: Channel, joinResponse?: unknown | undefined);
|
|
12
12
|
static topicById(objectId: string): string;
|
|
13
|
-
static joinById(socket: Socket, objectId: string
|
|
13
|
+
static joinById(socket: Socket, objectId: string, payload?: {
|
|
14
|
+
connection_id?: string;
|
|
15
|
+
partial_updates?: boolean;
|
|
16
|
+
}): Promise<ApiObjectChannel>;
|
|
14
17
|
static topicByRowKey(schemaType: string, rowKey: string): string;
|
|
15
|
-
static joinByRowKey(socket: Socket, schemaType: string, rowKey: string
|
|
18
|
+
static joinByRowKey(socket: Socket, schemaType: string, rowKey: string, payload?: {
|
|
19
|
+
connection_id?: string;
|
|
20
|
+
partial_updates?: boolean;
|
|
21
|
+
}): Promise<ApiObjectChannel>;
|
|
16
22
|
/** Leave the underlying channel. */
|
|
17
23
|
leave(): Promise<void>;
|
|
18
24
|
updateFields(payload: Record<string, unknown>): Promise<unknown>;
|
|
19
25
|
save(payload: Record<string, unknown>): Promise<unknown>;
|
|
26
|
+
presenceUpdate(payload: Record<string, unknown>): Promise<unknown>;
|
|
20
27
|
onObjectUpdated(callback: (payload: unknown) => void): () => void;
|
|
21
28
|
onObjectCreated(callback: (payload: unknown) => void): () => void;
|
|
29
|
+
onObjectDeleted(callback: (payload: unknown) => void): () => void;
|
|
30
|
+
onPresenceUpdated(callback: (payload: unknown) => void): () => void;
|
|
31
|
+
onPresenceLeft(callback: (payload: unknown) => void): () => void;
|
|
32
|
+
onAccessRevoked(callback: (payload: unknown) => void): () => void;
|
|
22
33
|
}
|
|
23
34
|
//# sourceMappingURL=api_object_channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_object_channel.d.ts","sourceRoot":"","sources":["../../src/channels/api_object_channel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,OAAO;aAA2B,YAAY,CAAC,EAAE,OAAO;gBAAxD,OAAO,EAAE,OAAO,EAAkB,YAAY,CAAC,EAAE,OAAO,YAAA;IAE5E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;WAI7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"api_object_channel.d.ts","sourceRoot":"","sources":["../../src/channels/api_object_channel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,OAAO;aAA2B,YAAY,CAAC,EAAE,OAAO;gBAAxD,OAAO,EAAE,OAAO,EAAkB,YAAY,CAAC,EAAE,OAAO,YAAA;IAE5E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;WAI7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOnJ,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;WAInD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOzK,oCAAoC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxD,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAInE,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAIhE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAGlE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Copyright (c) 2026 ArchAstro Inc.
|
|
1
|
+
// Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License.
|
|
2
2
|
// This file is auto-generated by @archastro/sdk-generator. Do not edit.
|
|
3
|
-
// Content hash:
|
|
3
|
+
// Content hash: 18db596860cc
|
|
4
4
|
/**
|
|
5
5
|
* Channel for real-time custom object collaboration.
|
|
6
6
|
* Clients join `api:object:{object_id}` to receive the current object state
|
|
@@ -16,19 +16,19 @@ export class ApiObjectChannel {
|
|
|
16
16
|
static topicById(objectId) {
|
|
17
17
|
return `api:object:${objectId}`;
|
|
18
18
|
}
|
|
19
|
-
static async joinById(socket, objectId) {
|
|
19
|
+
static async joinById(socket, objectId, payload) {
|
|
20
20
|
const topic = ApiObjectChannel.topicById(objectId);
|
|
21
21
|
const channel = socket.channel(topic);
|
|
22
|
-
const joinResponse = await channel.join();
|
|
22
|
+
const joinResponse = await channel.join(payload);
|
|
23
23
|
return new ApiObjectChannel(channel, joinResponse);
|
|
24
24
|
}
|
|
25
25
|
static topicByRowKey(schemaType, rowKey) {
|
|
26
26
|
return `api:object:${schemaType}:${rowKey}`;
|
|
27
27
|
}
|
|
28
|
-
static async joinByRowKey(socket, schemaType, rowKey) {
|
|
28
|
+
static async joinByRowKey(socket, schemaType, rowKey, payload) {
|
|
29
29
|
const topic = ApiObjectChannel.topicByRowKey(schemaType, rowKey);
|
|
30
30
|
const channel = socket.channel(topic);
|
|
31
|
-
const joinResponse = await channel.join();
|
|
31
|
+
const joinResponse = await channel.join(payload);
|
|
32
32
|
return new ApiObjectChannel(channel, joinResponse);
|
|
33
33
|
}
|
|
34
34
|
/** Leave the underlying channel. */
|
|
@@ -41,11 +41,26 @@ export class ApiObjectChannel {
|
|
|
41
41
|
async save(payload) {
|
|
42
42
|
return this.channel.push("save", payload);
|
|
43
43
|
}
|
|
44
|
+
async presenceUpdate(payload) {
|
|
45
|
+
return this.channel.push("presence_update", payload);
|
|
46
|
+
}
|
|
44
47
|
onObjectUpdated(callback) {
|
|
45
48
|
return this.channel.on("object_updated", callback);
|
|
46
49
|
}
|
|
47
50
|
onObjectCreated(callback) {
|
|
48
51
|
return this.channel.on("object_created", callback);
|
|
49
52
|
}
|
|
53
|
+
onObjectDeleted(callback) {
|
|
54
|
+
return this.channel.on("object_deleted", callback);
|
|
55
|
+
}
|
|
56
|
+
onPresenceUpdated(callback) {
|
|
57
|
+
return this.channel.on("presence_updated", callback);
|
|
58
|
+
}
|
|
59
|
+
onPresenceLeft(callback) {
|
|
60
|
+
return this.channel.on("presence_left", callback);
|
|
61
|
+
}
|
|
62
|
+
onAccessRevoked(callback) {
|
|
63
|
+
return this.channel.on("access_revoked", callback);
|
|
64
|
+
}
|
|
50
65
|
}
|
|
51
66
|
//# sourceMappingURL=api_object_channel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_object_channel.js","sourceRoot":"","sources":["../../src/channels/api_object_channel.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api_object_channel.js","sourceRoot":"","sources":["../../src/channels/api_object_channel.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wEAAwE;AACxE,6BAA6B;AAK7B;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACP;IAAkC;IAAtD,YAAoB,OAAgB,EAAkB,YAAsB;QAAxD,YAAO,GAAP,OAAO,CAAS;QAAkB,iBAAY,GAAZ,YAAY,CAAU;IAAG,CAAC;IAEhF,MAAM,CAAC,SAAS,CAAC,QAAgB;QAC/B,OAAO,cAAc,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,QAAgB,EAAE,OAA+D;QACrH,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAAkB,EAAE,MAAc;QACrD,OAAO,cAAc,UAAU,IAAI,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,UAAkB,EAAE,MAAc,EAAE,OAA+D;QAC3I,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAgC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAgC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,QAAoC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,QAAoC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,QAAoC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB,CAAC,QAAoC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,QAAoC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,QAAoC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Channel } from "../phx_channel/channel.js";
|
|
2
|
+
import type { Socket } from "../phx_channel/socket.js";
|
|
3
|
+
/**
|
|
4
|
+
* Phoenix channel for live task-record updates.
|
|
5
|
+
* Clients join `api:tasks:thread:{thread_id}` to receive the thread's current
|
|
6
|
+
* event-sourced tasks and subscribe to changes. The join reply carries a full
|
|
7
|
+
* snapshot (`%{tasks: [...]}`), and every subsequent change lands as a
|
|
8
|
+
* `tasks_updated` push carrying a fresh snapshot — the same replace-wholesale
|
|
9
|
+
* contract expected by task-panel clients, so clients need no
|
|
10
|
+
* delta bookkeeping.
|
|
11
|
+
* Change signals originate from `ArchAstro.Tasks.Projectors.TaskProjector`,
|
|
12
|
+
* which broadcasts on `"tasks:thread:{thread_id}"` after each committed
|
|
13
|
+
* projection. Bursts (e.g. a mirror reconcile dispatching several commands)
|
|
14
|
+
* are coalesced: the first signal arms a short timer and the reload happens
|
|
15
|
+
* once, after the burst settles.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ApiTasksChannel {
|
|
18
|
+
private channel;
|
|
19
|
+
readonly joinResponse?: unknown | undefined;
|
|
20
|
+
constructor(channel: Channel, joinResponse?: unknown | undefined);
|
|
21
|
+
/** Join a thread's live task list */
|
|
22
|
+
static topicThread(threadId: string): string;
|
|
23
|
+
/** Join a thread's live task list */
|
|
24
|
+
static joinThread(socket: Socket, threadId: string): Promise<ApiTasksChannel>;
|
|
25
|
+
/** Leave the underlying channel. */
|
|
26
|
+
leave(): Promise<void>;
|
|
27
|
+
/** Broadcast when the thread's task records change; carries a full snapshot */
|
|
28
|
+
onTasksUpdated(callback: (payload: unknown) => void): () => void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=api_tasks_channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api_tasks_channel.d.ts","sourceRoot":"","sources":["../../src/channels/api_tasks_channel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;aAA2B,YAAY,CAAC,EAAE,OAAO;gBAAxD,OAAO,EAAE,OAAO,EAAkB,YAAY,CAAC,EAAE,OAAO,YAAA;IAE5E,qCAAqC;IACrC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,qCAAqC;WACxB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOnF,oCAAoC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,+EAA+E;IAC/E,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAGjE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License.
|
|
2
|
+
// This file is auto-generated by @archastro/sdk-generator. Do not edit.
|
|
3
|
+
// Content hash: 3b7fd8d6eaad
|
|
4
|
+
/**
|
|
5
|
+
* Phoenix channel for live task-record updates.
|
|
6
|
+
* Clients join `api:tasks:thread:{thread_id}` to receive the thread's current
|
|
7
|
+
* event-sourced tasks and subscribe to changes. The join reply carries a full
|
|
8
|
+
* snapshot (`%{tasks: [...]}`), and every subsequent change lands as a
|
|
9
|
+
* `tasks_updated` push carrying a fresh snapshot — the same replace-wholesale
|
|
10
|
+
* contract expected by task-panel clients, so clients need no
|
|
11
|
+
* delta bookkeeping.
|
|
12
|
+
* Change signals originate from `ArchAstro.Tasks.Projectors.TaskProjector`,
|
|
13
|
+
* which broadcasts on `"tasks:thread:{thread_id}"` after each committed
|
|
14
|
+
* projection. Bursts (e.g. a mirror reconcile dispatching several commands)
|
|
15
|
+
* are coalesced: the first signal arms a short timer and the reload happens
|
|
16
|
+
* once, after the burst settles.
|
|
17
|
+
*/
|
|
18
|
+
export class ApiTasksChannel {
|
|
19
|
+
channel;
|
|
20
|
+
joinResponse;
|
|
21
|
+
constructor(channel, joinResponse) {
|
|
22
|
+
this.channel = channel;
|
|
23
|
+
this.joinResponse = joinResponse;
|
|
24
|
+
}
|
|
25
|
+
/** Join a thread's live task list */
|
|
26
|
+
static topicThread(threadId) {
|
|
27
|
+
return `api:tasks:thread:${threadId}`;
|
|
28
|
+
}
|
|
29
|
+
/** Join a thread's live task list */
|
|
30
|
+
static async joinThread(socket, threadId) {
|
|
31
|
+
const topic = ApiTasksChannel.topicThread(threadId);
|
|
32
|
+
const channel = socket.channel(topic);
|
|
33
|
+
const joinResponse = await channel.join();
|
|
34
|
+
return new ApiTasksChannel(channel, joinResponse);
|
|
35
|
+
}
|
|
36
|
+
/** Leave the underlying channel. */
|
|
37
|
+
async leave() {
|
|
38
|
+
await this.channel.leave();
|
|
39
|
+
}
|
|
40
|
+
/** Broadcast when the thread's task records change; carries a full snapshot */
|
|
41
|
+
onTasksUpdated(callback) {
|
|
42
|
+
return this.channel.on("tasks_updated", callback);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=api_tasks_channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api_tasks_channel.js","sourceRoot":"","sources":["../../src/channels/api_tasks_channel.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wEAAwE;AACxE,6BAA6B;AAK7B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,eAAe;IACN;IAAkC;IAAtD,YAAoB,OAAgB,EAAkB,YAAsB;QAAxD,YAAO,GAAP,OAAO,CAAS;QAAkB,iBAAY,GAAZ,YAAY,CAAU;IAAG,CAAC;IAEhF,qCAAqC;IACrC,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,OAAO,oBAAoB,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB;QACtD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,cAAc,CAAC,QAAoC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF"}
|