memax-sdk 0.7.0-alpha.170 → 0.7.0-alpha.186
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 +48 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/auth.d.ts +55 -5
- package/dist/resources/auth.d.ts.map +1 -1
- package/dist/resources/auth.js +128 -8
- package/dist/resources/auth.js.map +1 -1
- package/dist/transport.d.ts +41 -5
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +166 -0
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +160 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/v2/export.d.ts +310 -0
- package/dist/v2/export.d.ts.map +1 -0
- package/dist/v2/export.js +517 -0
- package/dist/v2/export.js.map +1 -0
- package/dist/v2/resources.d.ts +831 -0
- package/dist/v2/resources.d.ts.map +1 -0
- package/dist/v2/resources.js +1269 -0
- package/dist/v2/resources.js.map +1 -0
- package/dist/v2/schema.gen.d.ts +10594 -0
- package/dist/v2/schema.gen.d.ts.map +1 -0
- package/dist/v2/schema.gen.js +7 -0
- package/dist/v2/schema.gen.js.map +1 -0
- package/dist/v2/sse.d.ts +31 -0
- package/dist/v2/sse.d.ts.map +1 -0
- package/dist/v2/sse.js +151 -0
- package/dist/v2/sse.js.map +1 -0
- package/dist/v2/types.d.ts +375 -0
- package/dist/v2/types.d.ts.map +1 -0
- package/dist/v2/types.js +2 -0
- package/dist/v2/types.js.map +1 -0
- package/dist/v2/verify.d.ts +96 -0
- package/dist/v2/verify.d.ts.map +1 -0
- package/dist/v2/verify.js +375 -0
- package/dist/v2/verify.js.map +1 -0
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -79,6 +79,54 @@ for (const c of citations) {
|
|
|
79
79
|
- **Typed errors** — `MemaxError` with `code`, `status`, `retryable` for clean client handling
|
|
80
80
|
- **Runtime-portable** — works wherever `fetch` works
|
|
81
81
|
|
|
82
|
+
## V2 API (preview)
|
|
83
|
+
|
|
84
|
+
`memax.v2` talks to the `/v2` API, the V2 record: every change is a
|
|
85
|
+
command with a receipt, agents propose and people keep. Its types are
|
|
86
|
+
generated from the API contract and live under the `V2` namespace.
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { Memax, refusalOf, type V2 } from "memax-sdk";
|
|
90
|
+
|
|
91
|
+
const memax = new Memax({ apiKey: process.env.MEMAX_API_KEY });
|
|
92
|
+
|
|
93
|
+
// Commands need an Idempotency-Key: choose one per intent, reuse it on retry.
|
|
94
|
+
const res: V2.CommandResult = await memax.v2.memories.remember(
|
|
95
|
+
"memax-v2", // space id or slug
|
|
96
|
+
{ statement: "River is our queue, not Kafka.", section: "decisions" },
|
|
97
|
+
{ idempotencyKey: crypto.randomUUID() },
|
|
98
|
+
);
|
|
99
|
+
res.outcome; // "applied" for a member or owner, "proposed" for an API key
|
|
100
|
+
|
|
101
|
+
// Display IDs repeat across tenants, so they travel with their space.
|
|
102
|
+
const { memory, versions, receipts } = await memax.v2.memories.get("M-0219", {
|
|
103
|
+
space: "memax-v2",
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Edits send the version they started from; a newer one is 412 edit_clash.
|
|
107
|
+
await memax.v2.memories.edit(
|
|
108
|
+
memory.id,
|
|
109
|
+
{ statement: "River is our only queue." },
|
|
110
|
+
{ idempotencyKey: crypto.randomUUID(), ifMatch: memory.version },
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
await memax.v2.memories.keep(
|
|
115
|
+
"M-0220",
|
|
116
|
+
{},
|
|
117
|
+
{ space: "memax-v2", idempotencyKey: crypto.randomUUID() },
|
|
118
|
+
);
|
|
119
|
+
} catch (err) {
|
|
120
|
+
refusalOf(err)?.code; // "person_must_review": API keys never keep
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const queue = await memax.v2.review.list("memax-v2"); // queue.total waiting
|
|
124
|
+
const activity = await memax.v2.receipts.list("memax-v2", { limit: 50 });
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The types are regenerated from `packages/server/openapi/v2.yaml` with
|
|
128
|
+
`pnpm --filter memax-sdk gen:v2`; `pnpm lint` fails when they are stale.
|
|
129
|
+
|
|
82
130
|
## Authentication
|
|
83
131
|
|
|
84
132
|
Get an API key at [memax.app → Settings → API Keys](https://memax.app/settings/api-keys). For browser / user-session auth (OAuth flow), pass a bearer token instead:
|
package/dist/client.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { AccountResource } from "./resources/account.js";
|
|
|
17
17
|
import { EventsResource } from "./resources/events.js";
|
|
18
18
|
import { BarResource } from "./resources/bar.js";
|
|
19
19
|
import { ChatsResource } from "./resources/chats.js";
|
|
20
|
+
import { V2Resource } from "./v2/resources.js";
|
|
20
21
|
export declare class Memax {
|
|
21
22
|
readonly memories: MemoriesResource;
|
|
22
23
|
readonly configs: ConfigsResource;
|
|
@@ -36,6 +37,11 @@ export declare class Memax {
|
|
|
36
37
|
readonly events: EventsResource;
|
|
37
38
|
readonly bar: BarResource;
|
|
38
39
|
readonly chats: ChatsResource;
|
|
40
|
+
/**
|
|
41
|
+
* The /v2 API: the V2 record (spaces, memories, Review, receipts).
|
|
42
|
+
* Types are under the `V2` namespace export.
|
|
43
|
+
*/
|
|
44
|
+
readonly v2: V2Resource;
|
|
39
45
|
constructor(config: MemaxConfig);
|
|
40
46
|
push(...args: Parameters<MemoriesResource["push"]>): Promise<import("./types.js").Memory>;
|
|
41
47
|
recall(...args: Parameters<MemoriesResource["recall"]>): Promise<import("./types.js").RecallResult>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;gBAEZ,MAAM,EAAE,WAAW;IAgCzB,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAIlD,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAItD,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAGvD"}
|
package/dist/client.js
CHANGED
|
@@ -17,6 +17,7 @@ import { AccountResource } from "./resources/account.js";
|
|
|
17
17
|
import { EventsResource } from "./resources/events.js";
|
|
18
18
|
import { BarResource } from "./resources/bar.js";
|
|
19
19
|
import { ChatsResource } from "./resources/chats.js";
|
|
20
|
+
import { V2Resource } from "./v2/resources.js";
|
|
20
21
|
export class Memax {
|
|
21
22
|
memories;
|
|
22
23
|
configs;
|
|
@@ -36,6 +37,11 @@ export class Memax {
|
|
|
36
37
|
events;
|
|
37
38
|
bar;
|
|
38
39
|
chats;
|
|
40
|
+
/**
|
|
41
|
+
* The /v2 API: the V2 record (spaces, memories, Review, receipts).
|
|
42
|
+
* Types are under the `V2` namespace export.
|
|
43
|
+
*/
|
|
44
|
+
v2;
|
|
39
45
|
constructor(config) {
|
|
40
46
|
const transport = new ApiTransport(config);
|
|
41
47
|
const req = transport.request.bind(transport);
|
|
@@ -49,7 +55,7 @@ export class Memax {
|
|
|
49
55
|
this.memories = new MemoriesResource(req, stream, download);
|
|
50
56
|
this.configs = new ConfigsResource(req);
|
|
51
57
|
this.uploads = new UploadsResource(req);
|
|
52
|
-
this.auth = new AuthResource(req, apiUrl);
|
|
58
|
+
this.auth = new AuthResource(req, apiUrl, transport.form.bind(transport));
|
|
53
59
|
this.account = new AccountResource(req);
|
|
54
60
|
this.hubs = new HubsResource(req);
|
|
55
61
|
this.invites = new InvitesResource(req);
|
|
@@ -64,6 +70,7 @@ export class Memax {
|
|
|
64
70
|
this.events = new EventsResource(stream);
|
|
65
71
|
this.bar = new BarResource(req);
|
|
66
72
|
this.chats = new ChatsResource(req, stream);
|
|
73
|
+
this.v2 = new V2Resource(req, transport.open.bind(transport));
|
|
67
74
|
}
|
|
68
75
|
async push(...args) {
|
|
69
76
|
return this.memories.push(...args);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,15 @@ export type { Item, ChecklistItem, DigestItem, ItemProgress, PinContext, Checkli
|
|
|
6
6
|
export { SUPER_NOTIF_KINDS } from "./notifications/items.js";
|
|
7
7
|
export { actionToResolution, resolveFromAction, } from "./notifications/action-to-resolution.js";
|
|
8
8
|
export { MemaxError } from "./errors.js";
|
|
9
|
-
export
|
|
9
|
+
export * as V2 from "./v2/types.js";
|
|
10
|
+
export { V2Resource, V2SpacesResource, V2MemoriesResource, V2ReviewResource, V2ReceiptsResource, V2ReadsResource, V2AgentsResource, V2BriefsResource, V2TargetsResource, V2GatesResource, V2NoticesResource, V2SessionsResource, V2DreamResource, V2SettingsResource, V2AccountResource, V2PasskeysResource, undoableAction, refusalOf, forgetCarriesOf, askEventOf, } from "./v2/resources.js";
|
|
11
|
+
export { EventStreamParser, readEventStream } from "./v2/sse.js";
|
|
12
|
+
export type { ServerSentEvent } from "./v2/sse.js";
|
|
13
|
+
export { verifyReceiptChain, canonicalReceipt, checkpointStatement, receiptLeaf, genesisHash, merkleRoot, } from "./v2/verify.js";
|
|
14
|
+
export type { ChainReceipt, ChainReport, ChainProblem, ChainProblemKind, ChainCrypto, VerifyChainInput, } from "./v2/verify.js";
|
|
15
|
+
export { EXPORT_FORMAT, ExportFormatError, parseExport, parseFrontmatter, parseReceipts, splitDocument, verifyExport, } from "./v2/export.js";
|
|
16
|
+
export type { ExportFiles, ExportManifest, ExportManifestFile, ExportCheckpoints, ExportReceiptStamp, ExportedMemory, ExportedTombstone, ExportedBrief, ParsedExport, ExportProblem, ExportProblemKind, ExportReport, VerifyExportInput, } from "./v2/export.js";
|
|
17
|
+
export type { CommandOptions as V2CommandOptions, MemoryRefOptions as V2MemoryRefOptions, ReviewOptions as V2ReviewOptions, EditOptions as V2EditOptions, PageOptions as V2PageOptions, VersionedCommandOptions as V2VersionedCommandOptions, ListMemoriesOptions as V2ListMemoriesOptions, ListReceiptsOptions as V2ListReceiptsOptions, GetMemoryOptions as V2GetMemoryOptions, ListGatesOptions as V2ListGatesOptions, GateRefOptions as V2GateRefOptions, GateCommandOptions as V2GateCommandOptions, AskOptions as V2AskOptions, SpaceExport as V2SpaceExport, SettingsEditOptions as V2SettingsEditOptions, SessionCommandOptions as V2SessionCommandOptions, AccountCommandOptions as V2AccountCommandOptions, } from "./v2/resources.js";
|
|
18
|
+
export { passkeyCheckOf, encodePasskeyAnswer } from "./transport.js";
|
|
19
|
+
export type { MemaxConfig, AuthProvider, PasskeyCheck, PasskeyCheckHandler, PushOptions, RecallOptions, AskOptions, ListMemoriesOptions, HubUpdateParams, MemoryKind, MemoryStability, Memory, MemoryAttachment, AttachmentViewURL, MemoryLifecycle, MemoryUpdateInput, DreamActionRef, DreamTopicRef, ShareMemoryResult, BatchMoveResult, BatchAttributeResult, BatchMoveSkippedMemory, BatchMoveSkipReason, BatchDeleteResult, BatchDeleteSkippedMemory, BatchDeleteSkipReason, AgentConfigBatchDeleteResult, AgentConfigDeleteSkippedItem, AgentConfigDeleteSkipReason, RelatedMemory, RecalledMemory, RecallResult, SearchResult, BarSearchResult, BarTopicMatch, BarHubMatch, AskResult, ListMemoriesResult, Scope, AgentConfigClass, AgentConfig, Persona, PersonaRevision, PersonaRestoreResult, BoardKind, BoardStatus, BoardSlotState, BoardSlotAction, BoardFeedbackVerdict, Board, BoardSlotResolution, BoardSlot, BoardSlotVersion, BoardWithSlots, AgentConfigListResult, DeletedAgentConfig, SyncAction, SyncPlanAction, SyncManifestEntry, ConfigSyncRequest, AgentConfigSyncAck, ConfigSyncAckRequest, ConfigLocalDeleteRequest, RestoreDeletedConfigRequest, ConfigUpsertRequest, ConfigMergeRequest, UploadIntent, AuthProviderName, User, MeResponse, WebUi, AuthTokenPair, ExchangedTokens, DeviceSignIn, DeviceSignInOptions, DeviceSignInPoll, ImpersonationResult, AuthIdentity, UnlinkProviderResult, RequestEmailOtpOptions, RequestEmailOtpResponse, VerifyEmailOtpOptions, VerifyEmailOtpResponse, ApiKeyCreateOptions, ApiKey, ApiKeyListItem, UpdateApiKeyPayload, UpdateApiKeyResult, OAuthAutonomy, OAuthDecision, OAuthDecisionInput, OAuthRequest, OAuthRequestSpace, OAuthConsentTarget, UpdateProfileResult, DeleteAllDataResult, Hub, HubSettings, HubSettingsInput, HubWithRole, HubMember, HubInvite, HubInviteeInput, HubOwnershipTransfer, HubDetailResult, HubSummary, HubSummaryStats, HubSummaryHeader, HubSummaryMember, HubAccent, HubRole, HubType, HubHeaderState, HubHeaderAuroraMode, HubTimeBucket, HubGreetingKey, ContributorDeletePolicy, InviteDetails, InviteAcceptResult, DevFlagsSettings, Settings, SettingsUpdateInput, Usage, UsageWithLimits, PlanScope, PlanDefinition, UserLimits, Topic, TopicLifecycle, TopicDeltaSummary, TopicTree, TopicListResponse, TopicArchivedListResponse, TopicArchiveResult, TopicCreateParams, TopicUpdateParams, TopicUpdateErrorCode, TopicReorderOperation, TopicMemoriesResponse, DreamRun, DreamAction, DreamLatestRunSummary, DreamPendingReviewSummary, DreamIntelligenceSummary, DreamReport, DreamRunListOptions, DreamRunListResponse, DreamUsage, DreamUsageOptions, ReviewTopicMergePayload, ReviewTopicRestructurePayload, ReviewTopicRef, Notification, NotificationAudience, NotificationStatus, NotificationResolution, NotificationKind, NeedsActionNotificationKind, UpdateNotificationKind, NotificationKindCount, NotificationSummary, NotificationListQuery, NotificationListResponse, NotificationBulkQuery, NotificationBulkResult, NotificationResolveAction, NotificationResolveResult, ReviewContradictionPayload, ReviewMemoryRef, DreamRunCompletedPayload, DreamRunCounts, HubInvitePayload, HubInviteHubRef, HubInviteInviterRef, HubMemberJoinedPayload, HubMemberRef, HubInviteAcceptedPayload, HubInviteDeclinedPayload, HubInviteDeclinedByYouPayload, HubOwnershipTransferPayload, HubOwnershipTransferredPayload, SystemNoticePayload, GiftInviteLinkPayload, ConnectedAgent, ConnectedAgentWithStats, ConnectedAgentUpdate, DisconnectAgentResult, AgentDisconnectSkipReason, AgentDisconnectSkippedItem, ApiKeyRevokeResult, ApiKeyRevokeSkipReason, ApiKeyRevokeSkippedItem, ChatScopeType, ChatSessionStatus, ChatMessageRole, ChatMessageStatus, ChatSession, ChatMessage, ChatToolDescriptor, CreateChatSessionInput, PatchChatSessionInput, ListChatSessionsOptions, ListChatSessionsResult, ListChatMessagesOptions, ListChatMessagesResult, ChatTurnOutcome, SendChatMessageInput, SendChatMessageResult, CancelChatMessageResult, RegenerateChatMessageResult, DecideApprovalResult, ChatStreamOptions, ChatStreamEventName, } from "./types.js";
|
|
10
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAMjF,YAAY,EACV,IAAI,EACJ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,4 +9,14 @@ export { actionToResolution, resolveFromAction, } from "./notifications/action-t
|
|
|
9
9
|
// Admin APIs are an internal, web-only surface and are intentionally not
|
|
10
10
|
// exported by this public SDK.
|
|
11
11
|
export { MemaxError } from "./errors.js";
|
|
12
|
+
// /v2 — the V2 record. Types are generated from
|
|
13
|
+
// packages/server/openapi/v2.yaml; use them as `V2.Memory`, `V2.PolicyCode`…
|
|
14
|
+
// (`export * as`, not `export type * as`, so the .d.ts parses on
|
|
15
|
+
// TypeScript before 5.0; the module holds only types.)
|
|
16
|
+
export * as V2 from "./v2/types.js";
|
|
17
|
+
export { V2Resource, V2SpacesResource, V2MemoriesResource, V2ReviewResource, V2ReceiptsResource, V2ReadsResource, V2AgentsResource, V2BriefsResource, V2TargetsResource, V2GatesResource, V2NoticesResource, V2SessionsResource, V2DreamResource, V2SettingsResource, V2AccountResource, V2PasskeysResource, undoableAction, refusalOf, forgetCarriesOf, askEventOf, } from "./v2/resources.js";
|
|
18
|
+
export { EventStreamParser, readEventStream } from "./v2/sse.js";
|
|
19
|
+
export { verifyReceiptChain, canonicalReceipt, checkpointStatement, receiptLeaf, genesisHash, merkleRoot, } from "./v2/verify.js";
|
|
20
|
+
export { EXPORT_FORMAT, ExportFormatError, parseExport, parseFrontmatter, parseReceipts, splitDocument, verifyExport, } from "./v2/export.js";
|
|
21
|
+
export { passkeyCheckOf, encodePasskeyAnswer } from "./transport.js";
|
|
12
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,mEAAmE;AACnE,gFAAgF;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAiBpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,yEAAyE;AACzE,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,mEAAmE;AACnE,gFAAgF;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAiBpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,yEAAyE;AACzE,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,gDAAgD;AAChD,6EAA6E;AAC7E,iEAAiE;AACjE,uDAAuD;AACvD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,gBAAgB,CAAC;AASxB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC;AAmCxB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/resources/auth.d.ts
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
|
-
import type { ApiKey, ApiKeyCreateOptions, ApiKeyListItem, ApiKeyRevokeResult, AuthIdentity, AuthProviderName, AuthTokenPair, ImpersonationResult, MeResponse,
|
|
2
|
-
import type { RequestFn } from "../transport.js";
|
|
1
|
+
import type { ApiKey, ApiKeyCreateOptions, ApiKeyListItem, ApiKeyRevokeResult, AuthIdentity, AuthProviderName, AuthTokenPair, DeviceSignIn, DeviceSignInOptions, DeviceSignInPoll, ExchangedTokens, ImpersonationResult, MeResponse, OAuthDecision, OAuthDecisionInput, OAuthRequest, RequestEmailOtpOptions, RequestEmailOtpResponse, UnlinkProviderResult, UpdateApiKeyPayload, UpdateApiKeyResult, UpdateProfileResult, VerifyEmailOtpOptions, VerifyEmailOtpResponse } from "../types.js";
|
|
2
|
+
import type { FormFn, RequestFn } from "../transport.js";
|
|
3
3
|
export declare class AuthResource {
|
|
4
4
|
private readonly req;
|
|
5
5
|
private readonly apiUrl;
|
|
6
|
-
|
|
6
|
+
private readonly form?;
|
|
7
|
+
constructor(req: RequestFn, apiUrl: string, form?: FormFn | undefined);
|
|
8
|
+
/**
|
|
9
|
+
* Ask for a device code (RFC 8628 §3.1), for signing the memax CLI in
|
|
10
|
+
* where no browser can open. Show the person `userCode` and
|
|
11
|
+
* `verificationUri` (or open `verificationUriComplete`), then poll with
|
|
12
|
+
* {@link pollDeviceSignIn} every `interval` seconds until it ends.
|
|
13
|
+
* Throws MemaxError `rate_limited` (too many codes from this address),
|
|
14
|
+
* `invalid_client`, or the network's errors.
|
|
15
|
+
*/
|
|
16
|
+
startDeviceSignIn(options?: DeviceSignInOptions): Promise<DeviceSignIn>;
|
|
17
|
+
/**
|
|
18
|
+
* Poll once for a device code's session (RFC 8628 §3.4). `pending` and
|
|
19
|
+
* `slow_down` mean keep polling (`slow_down`: 5 seconds longer between
|
|
20
|
+
* polls from now on); `signed_in` carries the person's CLI session, which
|
|
21
|
+
* the server issues once; `denied`, `expired` and `invalid` end it.
|
|
22
|
+
*/
|
|
23
|
+
pollDeviceSignIn(deviceCode: string, options?: {
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
}): Promise<DeviceSignInPoll>;
|
|
26
|
+
/**
|
|
27
|
+
* Sign a session out (RFC 7009, `POST /oauth/revoke`): pass its refresh
|
|
28
|
+
* token, which ends the session even if that token was just replaced, or
|
|
29
|
+
* one of its access tokens. Its refresh token stops working at once, and
|
|
30
|
+
* the access tokens it minted within the hour. A token that names nothing
|
|
31
|
+
* succeeds too, so signing out twice is fine. Throws on a network error
|
|
32
|
+
* or a refusal (`invalid_request`, `rate_limited`).
|
|
33
|
+
*/
|
|
34
|
+
revoke(token: string, options?: {
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
private oauthForm;
|
|
7
38
|
me(): Promise<MeResponse>;
|
|
8
39
|
createKey(options: ApiKeyCreateOptions): Promise<ApiKey>;
|
|
9
40
|
listKeys(): Promise<ApiKeyListItem[]>;
|
|
@@ -28,8 +59,27 @@ export declare class AuthResource {
|
|
|
28
59
|
updateKey(id: string, payload: UpdateApiKeyPayload): Promise<UpdateApiKeyResult>;
|
|
29
60
|
updateProfile(displayName: string): Promise<UpdateProfileResult>;
|
|
30
61
|
refresh(refreshToken: string): Promise<AuthTokenPair>;
|
|
31
|
-
|
|
32
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Trades a sign-in's one-time code for its session. A session issued to
|
|
64
|
+
* the web app also says which web UI the person sees (`ui`).
|
|
65
|
+
*/
|
|
66
|
+
exchangeCode(code: string): Promise<ExchangedTokens>;
|
|
67
|
+
/**
|
|
68
|
+
* An MCP client's pending authorization request (OAuthConsent), for the
|
|
69
|
+
* person signed in on the web: the first person to open it is bound to
|
|
70
|
+
* it, and anyone else gets 404. Needs a session the web app was issued.
|
|
71
|
+
*/
|
|
72
|
+
openOAuthRequest(requestId: string): Promise<OAuthRequest>;
|
|
73
|
+
/**
|
|
74
|
+
* The bound person's answer: approve (one space) or deny. Answers where
|
|
75
|
+
* to send the browser: the client's registered redirect_uri with a code,
|
|
76
|
+
* or with access_denied.
|
|
77
|
+
*/
|
|
78
|
+
decideOAuthRequest(requestId: string, decision: OAuthDecisionInput): Promise<OAuthDecision>;
|
|
79
|
+
/** "Not you?": the bound person lets go of the request. */
|
|
80
|
+
releaseOAuthRequest(requestId: string): Promise<{
|
|
81
|
+
released: boolean;
|
|
82
|
+
}>;
|
|
33
83
|
githubLoginURL(redirectURI: string): string;
|
|
34
84
|
googleLoginURL(redirectURI: string): string;
|
|
35
85
|
providerLoginURL(provider: AuthProviderName, redirectURI: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/resources/auth.js
CHANGED
|
@@ -1,9 +1,113 @@
|
|
|
1
|
+
import { MemaxError } from "../errors.js";
|
|
2
|
+
/** An OAuth error answer as a MemaxError (`code` is OAuth's `error`). */
|
|
3
|
+
function oauthFailure(status, body, retryAfter) {
|
|
4
|
+
const code = status === 429
|
|
5
|
+
? "rate_limited"
|
|
6
|
+
: typeof body.error === "string"
|
|
7
|
+
? body.error
|
|
8
|
+
: "invalid_response";
|
|
9
|
+
const message = typeof body.error_description === "string"
|
|
10
|
+
? body.error_description
|
|
11
|
+
: `The sign-in server answered ${status}.`;
|
|
12
|
+
return new MemaxError(message, code, status, undefined, retryAfter);
|
|
13
|
+
}
|
|
14
|
+
/** The memax CLI's OAuth client id; only it signs in with a device code. */
|
|
15
|
+
const DEVICE_CLIENT_ID = "memax-cli";
|
|
16
|
+
const DEVICE_GRANT = "urn:ietf:params:oauth:grant-type:device_code";
|
|
1
17
|
export class AuthResource {
|
|
2
18
|
req;
|
|
3
19
|
apiUrl;
|
|
4
|
-
|
|
20
|
+
form;
|
|
21
|
+
constructor(req, apiUrl, form) {
|
|
5
22
|
this.req = req;
|
|
6
23
|
this.apiUrl = apiUrl;
|
|
24
|
+
this.form = form;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Ask for a device code (RFC 8628 §3.1), for signing the memax CLI in
|
|
28
|
+
* where no browser can open. Show the person `userCode` and
|
|
29
|
+
* `verificationUri` (or open `verificationUriComplete`), then poll with
|
|
30
|
+
* {@link pollDeviceSignIn} every `interval` seconds until it ends.
|
|
31
|
+
* Throws MemaxError `rate_limited` (too many codes from this address),
|
|
32
|
+
* `invalid_client`, or the network's errors.
|
|
33
|
+
*/
|
|
34
|
+
async startDeviceSignIn(options = {}) {
|
|
35
|
+
const { status, body, retryAfter } = await this.oauthForm("/oauth/device_authorization", {
|
|
36
|
+
client_id: DEVICE_CLIENT_ID,
|
|
37
|
+
client_version: options.clientVersion,
|
|
38
|
+
device_name: options.deviceName,
|
|
39
|
+
device_os: options.deviceOs,
|
|
40
|
+
space: options.space,
|
|
41
|
+
}, options.signal);
|
|
42
|
+
if (status !== 200 || typeof body.device_code !== "string") {
|
|
43
|
+
throw oauthFailure(status, body, retryAfter);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
deviceCode: body.device_code,
|
|
47
|
+
userCode: String(body.user_code ?? ""),
|
|
48
|
+
verificationUri: String(body.verification_uri ?? ""),
|
|
49
|
+
verificationUriComplete: typeof body.verification_uri_complete === "string"
|
|
50
|
+
? body.verification_uri_complete
|
|
51
|
+
: undefined,
|
|
52
|
+
expiresIn: Number(body.expires_in ?? 600),
|
|
53
|
+
interval: Math.max(1, Number(body.interval ?? 5)),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Poll once for a device code's session (RFC 8628 §3.4). `pending` and
|
|
58
|
+
* `slow_down` mean keep polling (`slow_down`: 5 seconds longer between
|
|
59
|
+
* polls from now on); `signed_in` carries the person's CLI session, which
|
|
60
|
+
* the server issues once; `denied`, `expired` and `invalid` end it.
|
|
61
|
+
*/
|
|
62
|
+
async pollDeviceSignIn(deviceCode, options = {}) {
|
|
63
|
+
const { status, body, retryAfter } = await this.oauthForm("/oauth/token", {
|
|
64
|
+
grant_type: DEVICE_GRANT,
|
|
65
|
+
client_id: DEVICE_CLIENT_ID,
|
|
66
|
+
device_code: deviceCode,
|
|
67
|
+
}, options.signal);
|
|
68
|
+
if (status === 200 && typeof body.access_token === "string") {
|
|
69
|
+
return {
|
|
70
|
+
status: "signed_in",
|
|
71
|
+
tokens: {
|
|
72
|
+
access_token: body.access_token,
|
|
73
|
+
refresh_token: String(body.refresh_token ?? ""),
|
|
74
|
+
expires_in: Number(body.expires_in ?? 3600),
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
switch (body.error) {
|
|
79
|
+
case "authorization_pending":
|
|
80
|
+
return { status: "pending" };
|
|
81
|
+
case "slow_down":
|
|
82
|
+
return { status: "slow_down" };
|
|
83
|
+
case "access_denied":
|
|
84
|
+
return { status: "denied" };
|
|
85
|
+
case "expired_token":
|
|
86
|
+
return { status: "expired" };
|
|
87
|
+
case "invalid_grant":
|
|
88
|
+
return { status: "invalid" };
|
|
89
|
+
}
|
|
90
|
+
throw oauthFailure(status, body, retryAfter);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sign a session out (RFC 7009, `POST /oauth/revoke`): pass its refresh
|
|
94
|
+
* token, which ends the session even if that token was just replaced, or
|
|
95
|
+
* one of its access tokens. Its refresh token stops working at once, and
|
|
96
|
+
* the access tokens it minted within the hour. A token that names nothing
|
|
97
|
+
* succeeds too, so signing out twice is fine. Throws on a network error
|
|
98
|
+
* or a refusal (`invalid_request`, `rate_limited`).
|
|
99
|
+
*/
|
|
100
|
+
async revoke(token, options = {}) {
|
|
101
|
+
const { status, body, retryAfter } = await this.oauthForm("/oauth/revoke", { token }, options.signal);
|
|
102
|
+
if (status !== 200) {
|
|
103
|
+
throw oauthFailure(status, body, retryAfter);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async oauthForm(path, fields, signal) {
|
|
107
|
+
if (!this.form) {
|
|
108
|
+
throw new MemaxError("This client can't send OAuth forms.", "invalid_request", 0);
|
|
109
|
+
}
|
|
110
|
+
return this.form(path, fields, signal);
|
|
7
111
|
}
|
|
8
112
|
async me() {
|
|
9
113
|
return this.req("GET", "/v1/auth/me");
|
|
@@ -65,18 +169,34 @@ export class AuthResource {
|
|
|
65
169
|
body: { refresh_token: refreshToken },
|
|
66
170
|
});
|
|
67
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Trades a sign-in's one-time code for its session. A session issued to
|
|
174
|
+
* the web app also says which web UI the person sees (`ui`).
|
|
175
|
+
*/
|
|
68
176
|
async exchangeCode(code) {
|
|
69
177
|
return this.req("POST", "/v1/auth/exchange", {
|
|
70
178
|
body: { code },
|
|
71
179
|
});
|
|
72
180
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
181
|
+
/**
|
|
182
|
+
* An MCP client's pending authorization request (OAuthConsent), for the
|
|
183
|
+
* person signed in on the web: the first person to open it is bound to
|
|
184
|
+
* it, and anyone else gets 404. Needs a session the web app was issued.
|
|
185
|
+
*/
|
|
186
|
+
async openOAuthRequest(requestId) {
|
|
187
|
+
return this.req("GET", `/oauth/authorize/requests/${encodeURIComponent(requestId)}`);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* The bound person's answer: approve (one space) or deny. Answers where
|
|
191
|
+
* to send the browser: the client's registered redirect_uri with a code,
|
|
192
|
+
* or with access_denied.
|
|
193
|
+
*/
|
|
194
|
+
async decideOAuthRequest(requestId, decision) {
|
|
195
|
+
return this.req("POST", `/oauth/authorize/requests/${encodeURIComponent(requestId)}/decision`, { body: { ...decision } });
|
|
196
|
+
}
|
|
197
|
+
/** "Not you?": the bound person lets go of the request. */
|
|
198
|
+
async releaseOAuthRequest(requestId) {
|
|
199
|
+
return this.req("POST", `/oauth/authorize/requests/${encodeURIComponent(requestId)}/release`);
|
|
80
200
|
}
|
|
81
201
|
githubLoginURL(redirectURI) {
|
|
82
202
|
return `${this.apiUrl}/v1/auth/github?redirect_uri=${encodeURIComponent(redirectURI)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemaxConfig } from "./types.js";
|
|
1
|
+
import type { MemaxConfig, PasskeyCheck } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* A value that can be serialized into a query string. Arrays produce
|
|
4
4
|
* repeated `?key=a&key=b` pairs — required by the /v1/notifications
|
|
@@ -17,12 +17,9 @@ export interface RequestOptions {
|
|
|
17
17
|
* cancellation; we never wrap them as `network_error`.
|
|
18
18
|
*/
|
|
19
19
|
signal?: AbortSignal;
|
|
20
|
-
}
|
|
21
|
-
export interface StreamOptions extends RequestOptions {
|
|
22
|
-
onEvent: (event: string, data: unknown) => void;
|
|
23
|
-
onClose?: () => void;
|
|
24
20
|
/**
|
|
25
21
|
* Per-call header overrides. Use cases:
|
|
22
|
+
* - /v2 commands send `Idempotency-Key` and `If-Match`.
|
|
26
23
|
* - Chat stream resume sends `Last-Event-ID` so the server
|
|
27
24
|
* replays only events past the last seq the client saw.
|
|
28
25
|
* Static `headers` on `MemaxConfig` are still merged; this map
|
|
@@ -30,6 +27,10 @@ export interface StreamOptions extends RequestOptions {
|
|
|
30
27
|
*/
|
|
31
28
|
extraHeaders?: Record<string, string>;
|
|
32
29
|
}
|
|
30
|
+
export interface StreamOptions extends RequestOptions {
|
|
31
|
+
onEvent: (event: string, data: unknown) => void;
|
|
32
|
+
onClose?: () => void;
|
|
33
|
+
}
|
|
33
34
|
export interface DownloadOptions {
|
|
34
35
|
hubId?: string;
|
|
35
36
|
signal?: AbortSignal;
|
|
@@ -37,6 +38,25 @@ export interface DownloadOptions {
|
|
|
37
38
|
export type RequestFn = <T>(method: string, path: string, options?: RequestOptions) => Promise<T>;
|
|
38
39
|
export type StreamFn = (method: string, path: string, options: StreamOptions) => AbortController;
|
|
39
40
|
export type DownloadFn = (path: string, options?: DownloadOptions) => Promise<Response>;
|
|
41
|
+
/** An OAuth protocol answer: its status and JSON body, unwrapped. */
|
|
42
|
+
export interface FormResult {
|
|
43
|
+
status: number;
|
|
44
|
+
body: Record<string, unknown>;
|
|
45
|
+
/** Seconds, from Retry-After, when the server sent one. */
|
|
46
|
+
retryAfter?: number;
|
|
47
|
+
}
|
|
48
|
+
/** Posts an OAuth form; see {@link ApiTransport.form}. */
|
|
49
|
+
export type FormFn = (path: string, fields: Record<string, string | undefined>, signal?: AbortSignal) => Promise<FormResult>;
|
|
50
|
+
/** Opens an event stream; see {@link ApiTransport.open}. */
|
|
51
|
+
export type OpenFn = (method: string, path: string, options?: RequestOptions) => Promise<Response>;
|
|
52
|
+
/** The challenge a 403 `needs_passkey` carries, when it carries one. */
|
|
53
|
+
export declare function passkeyCheckOf(message: string, details: Record<string, unknown> | undefined): PasskeyCheck | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* A passkey's answer as the `X-Memax-Passkey` header carries it: its JSON
|
|
56
|
+
* (AuthenticationResponseJSON), base64url. The JSON is ASCII (its binary
|
|
57
|
+
* members are base64url already), so btoa takes it as it is.
|
|
58
|
+
*/
|
|
59
|
+
export declare function encodePasskeyAnswer(answer: unknown): string;
|
|
40
60
|
export declare class ApiTransport {
|
|
41
61
|
readonly apiUrl: string;
|
|
42
62
|
private readonly getAuth;
|
|
@@ -45,8 +65,24 @@ export declare class ApiTransport {
|
|
|
45
65
|
private readonly maxRetries;
|
|
46
66
|
private readonly retryDelayMs;
|
|
47
67
|
private readonly onWarning?;
|
|
68
|
+
private readonly passkeyCheck?;
|
|
48
69
|
constructor(config: MemaxConfig);
|
|
49
70
|
request<T>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Posts an OAuth protocol form (`application/x-www-form-urlencoded`) with
|
|
73
|
+
* no credentials and returns its status and JSON body as they are: OAuth
|
|
74
|
+
* answers in its own JSON (`{error, error_description}`), not the
|
|
75
|
+
* `{data}` envelope, and its 400s are expected answers, not failures.
|
|
76
|
+
* Only a network failure or a body that isn't JSON throws.
|
|
77
|
+
*/
|
|
78
|
+
form(path: string, fields: Record<string, string | undefined>, signal?: AbortSignal): Promise<FormResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Opens a server-sent event stream (`Accept: text/event-stream`) and
|
|
81
|
+
* returns the response once its status is a success, body unread. An
|
|
82
|
+
* error response is JSON, as on every other call, and throws the same
|
|
83
|
+
* MemaxError `request` would; an abort throws an AbortError.
|
|
84
|
+
*/
|
|
85
|
+
open(method: string, path: string, options?: RequestOptions): Promise<Response>;
|
|
50
86
|
download(path: string, options?: DownloadOptions): Promise<Response>;
|
|
51
87
|
stream(method: string, path: string, options: StreamOptions): AbortController;
|
|
52
88
|
}
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|