@m8t-stack/api-contract 0.1.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 +9 -0
- package/dist/cjs/a2a-card.js +33 -0
- package/dist/cjs/a2a-card.js.map +1 -0
- package/dist/cjs/binding.js +45 -0
- package/dist/cjs/binding.js.map +1 -0
- package/dist/cjs/brain-eval.js +58 -0
- package/dist/cjs/brain-eval.js.map +1 -0
- package/dist/cjs/brain-link.js +52 -0
- package/dist/cjs/brain-link.js.map +1 -0
- package/dist/cjs/errors.js +57 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/inbound-envelope.js +3 -0
- package/dist/cjs/inbound-envelope.js.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/me.js +3 -0
- package/dist/cjs/me.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/reasons.js +8 -0
- package/dist/cjs/reasons.js.map +1 -0
- package/dist/cjs/response.js +19 -0
- package/dist/cjs/response.js.map +1 -0
- package/dist/cjs/service-bus.js +3 -0
- package/dist/cjs/service-bus.js.map +1 -0
- package/dist/cjs/team.js +13 -0
- package/dist/cjs/team.js.map +1 -0
- package/dist/esm/a2a-card.d.ts +23 -0
- package/dist/esm/a2a-card.d.ts.map +1 -0
- package/dist/esm/a2a-card.js +28 -0
- package/dist/esm/a2a-card.js.map +1 -0
- package/dist/esm/binding.d.ts +106 -0
- package/dist/esm/binding.d.ts.map +1 -0
- package/dist/esm/binding.js +40 -0
- package/dist/esm/binding.js.map +1 -0
- package/dist/esm/brain-eval.d.ts +295 -0
- package/dist/esm/brain-eval.d.ts.map +1 -0
- package/dist/esm/brain-eval.js +54 -0
- package/dist/esm/brain-eval.js.map +1 -0
- package/dist/esm/brain-link.d.ts +49 -0
- package/dist/esm/brain-link.d.ts.map +1 -0
- package/dist/esm/brain-link.js +45 -0
- package/dist/esm/brain-link.js.map +1 -0
- package/dist/esm/errors.d.ts +39 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +45 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/inbound-envelope.d.ts +43 -0
- package/dist/esm/inbound-envelope.d.ts.map +1 -0
- package/dist/esm/inbound-envelope.js +2 -0
- package/dist/esm/inbound-envelope.js.map +1 -0
- package/dist/esm/index.d.ts +14 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/me.d.ts +25 -0
- package/dist/esm/me.d.ts.map +1 -0
- package/dist/esm/me.js +2 -0
- package/dist/esm/me.js.map +1 -0
- package/dist/esm/reasons.d.ts +12 -0
- package/dist/esm/reasons.d.ts.map +1 -0
- package/dist/esm/reasons.js +7 -0
- package/dist/esm/reasons.js.map +1 -0
- package/dist/esm/response.d.ts +27 -0
- package/dist/esm/response.d.ts.map +1 -0
- package/dist/esm/response.js +16 -0
- package/dist/esm/response.js.map +1 -0
- package/dist/esm/service-bus.d.ts +15 -0
- package/dist/esm/service-bus.d.ts.map +1 -0
- package/dist/esm/service-bus.js +2 -0
- package/dist/esm/service-bus.js.map +1 -0
- package/dist/esm/team.d.ts +57 -0
- package/dist/esm/team.d.ts.map +1 -0
- package/dist/esm/team.js +9 -0
- package/dist/esm/team.js.map +1 -0
- package/package.json +42 -0
package/dist/esm/me.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire DTO for `GET /api/me` — echoes back the validated caller identity
|
|
3
|
+
* from the proxy-attached headers.
|
|
4
|
+
*
|
|
5
|
+
* `principalId` is the generic caller id (the token `oid`), present for BOTH
|
|
6
|
+
* interactive users and service principals. `upn` is an optional human label
|
|
7
|
+
* present only on the interactive user path. `principalType` distinguishes the
|
|
8
|
+
* two; `appId` (the token `appid`) is threaded for service callers only.
|
|
9
|
+
*
|
|
10
|
+
* Single-tenant (E1): these fields are exposed, never used to filter. No
|
|
11
|
+
* tenant/owner semantics live here — that is E2.
|
|
12
|
+
*/
|
|
13
|
+
export interface MeResponse {
|
|
14
|
+
/** Generic caller id — the token `oid`. Present for user and service callers. */
|
|
15
|
+
principalId: string;
|
|
16
|
+
/** "user" for an interactive bearer, "service" for an app-only token. */
|
|
17
|
+
principalType?: "user" | "service";
|
|
18
|
+
/** The token `appid` — service callers only. */
|
|
19
|
+
appId?: string;
|
|
20
|
+
/** Human-readable user principal name — interactive user path only. */
|
|
21
|
+
upn?: string;
|
|
22
|
+
oid?: string;
|
|
23
|
+
tenantId?: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=me.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/me.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/esm/me.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/me.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String-literal union types for the `details.reason` field carried in
|
|
3
|
+
* `ApiResponse.error.details`. Centralizing these prevents drift between
|
|
4
|
+
* the backend's throws and the CLI's hint-lookup table.
|
|
5
|
+
*/
|
|
6
|
+
export type BadRequestReason = "body_not_json" | "empty_body" | "empty_patch" | "empty_patch_would_orphan" | "missing_agent_name" | "invalid_agent_name" | "empty_agent_name" | "cross_agent_conversation" | "title_required" | "title_empty" | "title_too_long" | "missing_handle" | "invalid_handle" | "empty_handle" | "handle_too_long" | "missing_display_name" | "invalid_display_name" | "display_name_empty" | "display_name_too_long" | "missing_identities" | "no_identities_provided" | "invalid_identities" | "invalid_channel_id" | "channel_id_too_long" | "channel_id_empty" | "unknown_channel" | "invalid_add_identities" | "invalid_remove_identities" | "missing_channel" | "invalid_channel" | "missing_binding_id" | "invalid_binding_id" | "empty_binding_id" | "binding_id_too_long" | "missing_bot_token" | "bot_token_empty" | "bot_token_too_long" | "no_adapter_registered" | "invalid_status_filter" | "invalid_channel_filter" | "cleanup_active_binding" | "invalid_bot_username" | "bot_username_too_long" | "channel_mismatch" | "webhook_payload_invalid" | "webhook_registration_rejected";
|
|
7
|
+
export type UnauthenticatedReason = "missing_bearer" | "token_decode_failed" | "token_missing_identity" | "header_missing" | "downstream_auth_pattern" | "webhook_signature_invalid";
|
|
8
|
+
export type NotFoundReason = "team_member_not_found" | "agent_not_found" | "conversation_not_found" | "binding_not_found";
|
|
9
|
+
export type ConflictReason = "handle_exists" | "identity_claimed" | "binding_exists";
|
|
10
|
+
export type UpstreamReason = "downstream_auth_pattern" | "table_storage_partial_write" | "table_storage_unavailable" | "key_vault_unavailable" | "kv_secret_malformed" | "cascade_partial_failure" | "service_bus_unavailable" | "webhook_registration_failed";
|
|
11
|
+
export type InternalReason = "config";
|
|
12
|
+
//# sourceMappingURL=reasons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasons.d.ts","sourceRoot":"","sources":["../../src/reasons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,YAAY,GACZ,aAAa,GACb,0BAA0B,GAC1B,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,0BAA0B,GAC1B,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,sBAAsB,GACtB,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,wBAAwB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,wBAAwB,GACxB,2BAA2B,GAC3B,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,GACxB,wBAAwB,GACxB,sBAAsB,GACtB,uBAAuB,GACvB,kBAAkB,GAClB,yBAAyB,GACzB,+BAA+B,CAAC;AAEpC,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,qBAAqB,GACrB,wBAAwB,GACxB,gBAAgB,GAChB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,cAAc,GACtB,uBAAuB,GACvB,iBAAiB,GACjB,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AAErF,MAAM,MAAM,cAAc,GACtB,yBAAyB,GACzB,6BAA6B,GAC7B,2BAA2B,GAC3B,uBAAuB,GACvB,qBAAqB,GACrB,yBAAyB,GACzB,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../src/reasons.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The standard wire envelope every m8t-stack backend route returns.
|
|
3
|
+
* Single source of truth shared between backend (apps/web) and CLI (apps/cli).
|
|
4
|
+
*/
|
|
5
|
+
export type ApiResponse<T> = {
|
|
6
|
+
ok: true;
|
|
7
|
+
data: T;
|
|
8
|
+
} | {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: {
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
details?: unknown;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Type-narrowing extract of the error variant. Useful when you have a known
|
|
18
|
+
* failure envelope and want to dig into the error fields without re-narrowing.
|
|
19
|
+
*/
|
|
20
|
+
export type ApiErrorEnvelope = Extract<ApiResponse<unknown>, {
|
|
21
|
+
ok: false;
|
|
22
|
+
}>["error"];
|
|
23
|
+
/**
|
|
24
|
+
* Type guard for callers that received a parsed JSON of unknown shape.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isApiResponse<T = unknown>(value: unknown): value is ApiResponse<T>;
|
|
27
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACrB;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEN;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAErF;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CASlF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard for callers that received a parsed JSON of unknown shape.
|
|
3
|
+
*/
|
|
4
|
+
export function isApiResponse(value) {
|
|
5
|
+
if (typeof value !== "object" || value === null)
|
|
6
|
+
return false;
|
|
7
|
+
const v = value;
|
|
8
|
+
if (v.ok === true && "data" in v)
|
|
9
|
+
return true;
|
|
10
|
+
if (v.ok === false && typeof v.error === "object" && v.error !== null) {
|
|
11
|
+
const e = v.error;
|
|
12
|
+
return typeof e.code === "string" && typeof e.message === "string";
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAc,KAAc;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAgC,CAAC;QAC7C,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { InboundEnvelope } from "./inbound-envelope.js";
|
|
2
|
+
/**
|
|
3
|
+
* The body of a Service Bus message on the `inbound-messages` queue.
|
|
4
|
+
* Locked per EPIC §14.3. Worker dequeues, deserializes, processes.
|
|
5
|
+
*/
|
|
6
|
+
export type InboundServiceBusMessageBody = InboundEnvelope;
|
|
7
|
+
/**
|
|
8
|
+
* applicationProperties on each Service Bus message — enables cheap
|
|
9
|
+
* filtering at receive time without parsing the body.
|
|
10
|
+
*/
|
|
11
|
+
export interface InboundServiceBusApplicationProperties {
|
|
12
|
+
channel: string;
|
|
13
|
+
bindingId: string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=service-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.d.ts","sourceRoot":"","sources":["../../src/service-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.js","sourceRoot":"","sources":["../../src/service-bus.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire DTOs for the team-management API surface.
|
|
3
|
+
* `/api/team` GET/POST, `/api/team/[handle]` GET/PATCH/DELETE.
|
|
4
|
+
*/
|
|
5
|
+
export type Channel = "telegram" | "slack" | "teams";
|
|
6
|
+
export declare const CHANNELS: readonly Channel[];
|
|
7
|
+
export declare function isChannel(v: unknown): v is Channel;
|
|
8
|
+
export interface TeamMemberIdentities {
|
|
9
|
+
telegram?: string;
|
|
10
|
+
slack?: string;
|
|
11
|
+
teams?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TeamMember {
|
|
14
|
+
handle: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
identities: TeamMemberIdentities;
|
|
17
|
+
/** ISO 8601. Earliest addedAt across rows for this handle. */
|
|
18
|
+
addedAt: string;
|
|
19
|
+
/** Admin UPN who wrote the first row for this handle. */
|
|
20
|
+
addedBy: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ListTeamResponse {
|
|
23
|
+
members: TeamMember[];
|
|
24
|
+
}
|
|
25
|
+
export interface CreateTeamRequest {
|
|
26
|
+
handle: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
identities: TeamMemberIdentities;
|
|
29
|
+
}
|
|
30
|
+
export interface PatchTeamRequest {
|
|
31
|
+
displayName?: string;
|
|
32
|
+
addIdentities?: TeamMemberIdentities;
|
|
33
|
+
removeIdentities?: Channel[];
|
|
34
|
+
}
|
|
35
|
+
export interface DeleteTeamResponse {
|
|
36
|
+
deleted: {
|
|
37
|
+
handle: string;
|
|
38
|
+
rows: number;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Partial-write failure shape returned in `UpstreamError.details.partial`
|
|
43
|
+
* when a multi-identity POST fails after at least one row was already written.
|
|
44
|
+
*
|
|
45
|
+
* `created` is the subset of `TeamMemberIdentities` we successfully persisted.
|
|
46
|
+
* `failed` is the single channel we stopped on (we abort on first failure;
|
|
47
|
+
* see lib/team-members.ts).
|
|
48
|
+
*/
|
|
49
|
+
export interface PartialWriteDetails {
|
|
50
|
+
created: TeamMemberIdentities;
|
|
51
|
+
failed: {
|
|
52
|
+
channel: Channel;
|
|
53
|
+
channelUserId: string;
|
|
54
|
+
originalMessage: string;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/team.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAA4C,CAAC;AAEpF,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,OAAO,CAElD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,oBAAoB,CAAC;IACjC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,oBAAoB,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
|
package/dist/esm/team.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire DTOs for the team-management API surface.
|
|
3
|
+
* `/api/team` GET/POST, `/api/team/[handle]` GET/PATCH/DELETE.
|
|
4
|
+
*/
|
|
5
|
+
export const CHANNELS = ["telegram", "slack", "teams"];
|
|
6
|
+
export function isChannel(v) {
|
|
7
|
+
return v === "telegram" || v === "slack" || v === "teams";
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/team.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAEpF,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,CAAC;AAC5D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@m8t-stack/api-contract",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared gateway HTTP request/response types and error model for the m8t-stack platform.",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/m8t-run/m8t.git",
|
|
12
|
+
"directory": "packages/api-contract"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/m8t-run/m8t/tree/main/packages/api-contract#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/m8t-run/m8t/issues"
|
|
17
|
+
},
|
|
18
|
+
"type": "module",
|
|
19
|
+
"main": "./dist/cjs/index.js",
|
|
20
|
+
"types": "./dist/esm/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/esm/index.d.ts",
|
|
24
|
+
"import": "./dist/esm/index.js",
|
|
25
|
+
"require": "./dist/cjs/index.js",
|
|
26
|
+
"default": "./dist/cjs/index.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
33
|
+
"packageManager": "pnpm@10.33.0",
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
36
|
+
"prepare": "pnpm run build",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"typecheck": "tsc --noEmit -p tsconfig.eslint.json",
|
|
40
|
+
"lint": "eslint ."
|
|
41
|
+
}
|
|
42
|
+
}
|