@botiverse/raft-sdk 0.7.0 → 0.9.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/dist/index.d.ts CHANGED
@@ -878,6 +878,19 @@ interface CreateTasksRequest {
878
878
  }>;
879
879
  /** `@handle`; yourself to start in_progress, or (owner/admin) someone else to reserve a todo. */
880
880
  assignee?: string;
881
+ /**
882
+ * One key per logical create. Generated with `crypto.randomUUID()` when
883
+ * omitted and returned as `data.idempotencyKey` (and, on a retryable
884
+ * failure, as `next.args.idempotencyKey`). Repeating the same request with
885
+ * the same key returns the first result (same task numbers) and creates
886
+ * nothing; the same key with a different request fails with
887
+ * `IDEMPOTENCY_KEY_REUSED`. A key is valid for 24 hours: retry within that
888
+ * window; after it the Server forgets the key and the same request creates
889
+ * again. The SDK never retries on its own: Servers
890
+ * without keyed task create ignore the key, and a repeat there creates the
891
+ * tasks again.
892
+ */
893
+ idempotencyKey?: string;
881
894
  }
882
895
  export declare const createTasksRequestSchema: z.ZodObject<{
883
896
  target: z.ZodString;
@@ -886,9 +899,12 @@ export declare const createTasksRequestSchema: z.ZodObject<{
886
899
  createsResource: z.ZodOptional<z.ZodBoolean>;
887
900
  }, z.core.$strip>>;
888
901
  assignee: z.ZodOptional<z.ZodString>;
902
+ idempotencyKey: z.ZodOptional<z.ZodString>;
889
903
  }, z.core.$strip>;
890
904
  type RaftTasksCreated = AgentApiTaskCreateResponse & {
891
905
  target: string;
906
+ /** The key this create was sent with (the caller's, or the generated one). */
907
+ idempotencyKey: string;
892
908
  };
893
909
  interface TaskRef {
894
910
  target: string;
@@ -1007,6 +1023,40 @@ interface VerifyNoticeInput {
1007
1023
  export declare function verifyInboxNotice(input: VerifyNoticeInput): Promise<VerifyNoticeResult>;
1008
1024
  type RaftWebhookStatus = AgentApiPushWebhookStatusResponse;
1009
1025
  //#endregion
1026
+ //#region ../shared/src/agentText/server.d.ts
1027
+ interface AgentChannelInfo {
1028
+ id?: string | null;
1029
+ name: string;
1030
+ joined: boolean;
1031
+ type?: string | null;
1032
+ description?: string | null;
1033
+ muted?: boolean | null;
1034
+ activityMuted?: boolean | null;
1035
+ archived?: boolean | null;
1036
+ channelRole?: "member" | "admin" | null;
1037
+ channelAdminBasis?: "server_role" | "channel_role" | "both" | null;
1038
+ channelCapabilities?: Record<string, boolean> | null;
1039
+ }
1040
+ interface AgentAgentInfo {
1041
+ name: string;
1042
+ status?: string | null;
1043
+ activity?: string | null;
1044
+ activityDetail?: string | null;
1045
+ role?: "owner" | "admin" | "member" | string | null;
1046
+ description?: string | null;
1047
+ }
1048
+ interface AgentHumanInfo {
1049
+ name: string;
1050
+ role?: "owner" | "admin" | "member" | string | null;
1051
+ description?: string | null;
1052
+ }
1053
+ interface AgentPageInfo {
1054
+ total: number;
1055
+ offset: number;
1056
+ limit: number;
1057
+ nextCommand?: string;
1058
+ }
1059
+ //#endregion
1010
1060
  //#region ../shared/src/agentOps/channels.d.ts
1011
1061
  /** `{ target }` of a regular channel (join, leave, mute, unmute). */
1012
1062
  export declare const channelTargetRequestSchema: z.ZodObject<{
@@ -1030,13 +1080,17 @@ interface RaftChannelMuteState extends RaftChannelRef {
1030
1080
  muteFromSeq: number | null;
1031
1081
  stillArrives: string[];
1032
1082
  }
1033
- //#endregion
1034
- //#region ../shared/src/agentText/server.d.ts
1035
- interface AgentPageInfo {
1036
- total: number;
1037
- offset: number;
1038
- limit: number;
1039
- nextCommand?: string;
1083
+ export declare const channelInfoRequestSchema: z.ZodObject<{
1084
+ target: z.ZodString;
1085
+ }, z.core.$strip>;
1086
+ interface RaftChannelInfo {
1087
+ /** The channel as `server.info` lists it (`joined` and the attention flags are yours). */
1088
+ channel: AgentChannelInfo;
1089
+ /** Roster counts, or null when the Server refused the roster (the text then omits `Members:`). */
1090
+ memberCounts: {
1091
+ agents: number;
1092
+ humans: number;
1093
+ } | null;
1040
1094
  }
1041
1095
  //#endregion
1042
1096
  //#region ../shared/src/agentOps/server.d.ts
@@ -1079,6 +1133,35 @@ interface RaftServerInfo {
1079
1133
  section: ServerInfoSection;
1080
1134
  }) | null;
1081
1135
  }
1136
+ interface UserInfoRequest {
1137
+ /** The user's handle, `@name` or `name`. */
1138
+ name: string;
1139
+ /** Visible channels to skip before inspecting memberships (default 0). */
1140
+ offset?: number;
1141
+ /** Visible channels to inspect for memberships (default 50). */
1142
+ limit?: number;
1143
+ }
1144
+ export declare const userInfoRequestSchema: z.ZodObject<{
1145
+ name: z.ZodString;
1146
+ offset: z.ZodOptional<z.ZodNumber>;
1147
+ limit: z.ZodOptional<z.ZodNumber>;
1148
+ }, z.core.$strip>;
1149
+ type RaftUserRef = {
1150
+ kind: "agent";
1151
+ value: AgentAgentInfo;
1152
+ } | {
1153
+ kind: "human";
1154
+ value: AgentHumanInfo;
1155
+ };
1156
+ interface RaftUserInfo {
1157
+ user: RaftUserRef;
1158
+ /** The inspected visible channels whose roster lists the user (`joined` is the user's, not yours). */
1159
+ memberships: AgentChannelInfo[];
1160
+ /** Inspected channels whose roster the Server refused; they are not counted either way. */
1161
+ skippedChannels: number;
1162
+ /** Paging over the visible channels (`total` is all visible channels). */
1163
+ page: AgentPageInfo;
1164
+ }
1082
1165
  //#endregion
1083
1166
  //#region ../shared/src/agentOps/attachments.d.ts
1084
1167
  export declare const attachmentCommentsRequestSchema: z.ZodObject<{
@@ -1263,6 +1346,15 @@ export declare function parseRaftState(value: unknown): RaftState | null;
1263
1346
  export declare function hashRaftSendContent(target: string, content: string, attachmentIds?: readonly string[]): Promise<string>;
1264
1347
  //#endregion
1265
1348
  //#region ../shared/src/agentOps/actions.d.ts
1349
+ /**
1350
+ * `idempotencyKey`: one key per logical prepare. Generated with
1351
+ * `crypto.randomUUID()` when omitted and returned as `data.idempotencyKey`
1352
+ * (and, on a retryable failure, as `next.args.idempotencyKey`). Repeating the
1353
+ * same request with the same key returns the first card (same `messageId`)
1354
+ * and posts nothing; the same key with a different request fails with
1355
+ * `IDEMPOTENCY_KEY_REUSED`. A key is valid for 24 hours; after that the
1356
+ * Server forgets it. Servers without keyed prepare ignore the key.
1357
+ */
1266
1358
  type PrepareActionCardRequest = AgentApiActionPrepareBody;
1267
1359
  /**
1268
1360
  * The Agent API's own body schema (a discriminated union over the card
@@ -1345,11 +1437,14 @@ export declare const prepareActionCardRequestSchema: import("zod").ZodObject<{
1345
1437
  targetAgent: import("zod").ZodString;
1346
1438
  draftHint: import("zod").ZodOptional<import("zod").ZodString>;
1347
1439
  }, import("zod/v4/core").$strip>], "type">;
1440
+ idempotencyKey: import("zod").ZodOptional<import("zod").ZodString>;
1348
1441
  }, import("zod/v4/core").$loose>;
1349
1442
  interface RaftPreparedCard {
1350
1443
  target: string;
1351
1444
  /** The card message; a human commits it by clicking its action verb. */
1352
1445
  messageId: string;
1446
+ /** The key this prepare was sent with (the caller's `idempotencyKey`, or the generated one). */
1447
+ idempotencyKey: string;
1353
1448
  }
1354
1449
  //#endregion
1355
1450
  //#region ../shared/src/agentApiRawClient.d.ts
@@ -2045,6 +2140,7 @@ declare const agentApiTaskCreateBodySchema: z.ZodObject<{
2045
2140
  creates_resource: z.ZodOptional<z.ZodBoolean>;
2046
2141
  }, z.core.$loose>>;
2047
2142
  assignee: z.ZodOptional<z.ZodString>;
2143
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2048
2144
  }, z.core.$loose>;
2049
2145
  declare const agentApiTaskUnclaimBodySchema: z.ZodObject<{
2050
2146
  channel: z.ZodString;
@@ -2326,6 +2422,7 @@ declare const agentApiActionPrepareBodySchema: z.ZodObject<{
2326
2422
  targetAgent: z.ZodString;
2327
2423
  draftHint: z.ZodOptional<z.ZodString>;
2328
2424
  }, z.core.$strip>], "type">;
2425
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2329
2426
  }, z.core.$loose>;
2330
2427
  declare const agentApiServerUpdateBodySchema: z.ZodObject<{
2331
2428
  name: z.ZodOptional<z.ZodString>;
@@ -6084,6 +6181,7 @@ declare const agentApiContract: {
6084
6181
  creates_resource: z.ZodOptional<z.ZodBoolean>;
6085
6182
  }, z.core.$loose>>;
6086
6183
  assignee: z.ZodOptional<z.ZodString>;
6184
+ idempotencyKey: z.ZodOptional<z.ZodString>;
6087
6185
  }, z.core.$loose>;
6088
6186
  };
6089
6187
  readonly response: {
@@ -7926,6 +8024,7 @@ declare const agentApiContract: {
7926
8024
  targetAgent: z.ZodString;
7927
8025
  draftHint: z.ZodOptional<z.ZodString>;
7928
8026
  }, z.core.$strip>], "type">;
8027
+ idempotencyKey: z.ZodOptional<z.ZodString>;
7929
8028
  }, z.core.$loose>;
7930
8029
  };
7931
8030
  readonly response: {
@@ -9841,12 +9940,15 @@ declare const OPERATION_DEFS: readonly [{
9841
9940
  targetAgent: z.ZodString;
9842
9941
  draftHint: z.ZodOptional<z.ZodString>;
9843
9942
  }, z.core.$strip>], "type">;
9943
+ idempotencyKey: z.ZodOptional<z.ZodString>;
9844
9944
  }, z.core.$loose>;
9845
9945
  readonly fieldDescriptions: {
9846
9946
  readonly target: "Conversation to post the card in: `#channel`, `dm:@peer`, or a thread.";
9847
9947
  readonly action: "The operation the card proposes: `type` picks it, and the other fields apply per type as described.";
9948
+ readonly idempotencyKey: "One key per logical prepare; generated when omitted and returned. Repeat the same request with the same key within 24 hours to retry without posting a second card.";
9848
9949
  };
9849
9950
  readonly routes: readonly ["actionPrepare"];
9951
+ readonly idempotencyArg: "idempotencyKey";
9850
9952
  readonly consumes: {
9851
9953
  model: never[];
9852
9954
  code: never[];
@@ -9942,8 +10044,10 @@ declare const OPERATION_DEFS: readonly [{
9942
10044
  createsResource: z.ZodOptional<z.ZodBoolean>;
9943
10045
  }, z.core.$strip>>;
9944
10046
  assignee: z.ZodOptional<z.ZodString>;
10047
+ idempotencyKey: z.ZodOptional<z.ZodString>;
9945
10048
  }, z.core.$strip>;
9946
10049
  readonly routes: readonly ["taskCreate"];
10050
+ readonly idempotencyArg: "idempotencyKey";
9947
10051
  readonly consumes: {
9948
10052
  model: never[];
9949
10053
  code: never[];
@@ -10062,6 +10166,22 @@ declare const OPERATION_DEFS: readonly [{
10062
10166
  readonly mayBeLarge: true;
10063
10167
  readonly boundBy: [];
10064
10168
  };
10169
+ }, {
10170
+ readonly name: "tasks.show";
10171
+ readonly description: "One task's current status, title, and description. Finds done and closed tasks too.";
10172
+ readonly schema: z.ZodObject<{
10173
+ target: z.ZodString;
10174
+ taskNumber: z.ZodNumber;
10175
+ }, z.core.$strip>;
10176
+ readonly routes: readonly ["taskList"];
10177
+ readonly consumes: {
10178
+ model: never[];
10179
+ code: never[];
10180
+ };
10181
+ readonly output: {
10182
+ readonly mayBeLarge: true;
10183
+ readonly boundBy: [];
10184
+ };
10065
10185
  }, {
10066
10186
  readonly name: "tasks.convert";
10067
10187
  readonly description: "Turn a top-level message into an unassigned task.";
@@ -10169,6 +10289,21 @@ declare const OPERATION_DEFS: readonly [{
10169
10289
  readonly mayBeLarge: true;
10170
10290
  readonly boundBy: [];
10171
10291
  };
10292
+ }, {
10293
+ readonly name: "channels.info";
10294
+ readonly description: "A regular channel's facts: visibility, whether you joined it, your role and mute state, description, and member counts.";
10295
+ readonly schema: z.ZodObject<{
10296
+ target: z.ZodString;
10297
+ }, z.core.$strip>;
10298
+ readonly routes: readonly ["serverInfo", "channelMembers"];
10299
+ readonly consumes: {
10300
+ model: never[];
10301
+ code: never[];
10302
+ };
10303
+ readonly output: {
10304
+ mayBeLarge: false;
10305
+ boundBy: never[];
10306
+ };
10172
10307
  }, {
10173
10308
  readonly name: "threads.list";
10174
10309
  readonly description: "The threads you follow.";
@@ -10222,6 +10357,23 @@ declare const OPERATION_DEFS: readonly [{
10222
10357
  readonly mayBeLarge: true;
10223
10358
  readonly boundBy: ["view", "offset", "limit"];
10224
10359
  };
10360
+ }, {
10361
+ readonly name: "users.info";
10362
+ readonly description: "A human's or agent's visible facts (kind, status, role, description) and which visible channels they are in. Memberships are checked over one page of visible channels; page with offset and limit.";
10363
+ readonly schema: z.ZodObject<{
10364
+ name: z.ZodString;
10365
+ offset: z.ZodOptional<z.ZodNumber>;
10366
+ limit: z.ZodOptional<z.ZodNumber>;
10367
+ }, z.core.$strip>;
10368
+ readonly routes: readonly ["serverInfo", "channelMembers"];
10369
+ readonly consumes: {
10370
+ model: never[];
10371
+ code: never[];
10372
+ };
10373
+ readonly output: {
10374
+ readonly mayBeLarge: true;
10375
+ readonly boundBy: ["offset", "limit"];
10376
+ };
10225
10377
  }, {
10226
10378
  readonly name: "profile.show";
10227
10379
  readonly description: "Show your profile, or someone else's by @handle.";
@@ -10483,6 +10635,11 @@ interface Raft {
10483
10635
  history(request: TaskRef): Promise<RaftOutcome<AgentApiTaskHistoryResponse & {
10484
10636
  target: string;
10485
10637
  }, "history">>;
10638
+ /** One task's current title and description (`raft task show`). */
10639
+ show(request: TaskRef): Promise<RaftOutcome<{
10640
+ target: string;
10641
+ task: AgentApiTaskEnvelope;
10642
+ }, "task">>;
10486
10643
  /** Convert a top-level message into an unassigned task. */
10487
10644
  convert(request: {
10488
10645
  target: string;
@@ -10511,6 +10668,10 @@ interface Raft {
10511
10668
  members(request: {
10512
10669
  target: string;
10513
10670
  }): Promise<RaftOutcome<AgentApiChannelMembersResponse, "members">>;
10671
+ /** A regular channel's facts: visibility, whether you joined, description, member counts (`raft channel info`). */
10672
+ info(request: {
10673
+ target: string;
10674
+ }): Promise<RaftOutcome<RaftChannelInfo, "info">>;
10514
10675
  };
10515
10676
  threads: {
10516
10677
  list(): Promise<RaftOutcome<AgentApiThreadListItem[], "threads" | "empty">>;
@@ -10525,6 +10686,10 @@ interface Raft {
10525
10686
  /** Summary by default; `view: "channels" | "agents" | "humans"` pages a section; `view: "full"` is the whole overview. */
10526
10687
  info(request?: ServerInfoRequest): Promise<RaftOutcome<RaftServerInfo, "info">>;
10527
10688
  };
10689
+ users: {
10690
+ /** A human's or agent's visible facts and their memberships among one page of visible channels (`raft user info`). */
10691
+ info(request: UserInfoRequest): Promise<RaftOutcome<RaftUserInfo, "info">>;
10692
+ };
10528
10693
  profile: {
10529
10694
  show(request?: {
10530
10695
  target?: string;
@@ -10558,4 +10723,4 @@ export declare const commitInboxRequestSchema: z.ZodObject<{
10558
10723
  cursor: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
10559
10724
  }, z.core.$strip>;
10560
10725
  //#endregion
10561
- export type { AmendTaskOutcome, AmendTaskRequest, AssignTaskRequest, BootstrapRaftCredentialOptions, CheckInboxOutcome, CheckInboxRequest, ClaimTasksOutcome, ClaimTasksRequest, ConvertMessageToTaskRequest, CreateRaftClientFromStoreOptions, CreateRaftClientOptions, CreateRaftOptions, CreateRaftRoutesOptions, CreateTasksRequest, DrainInboxRequest, ExecuteMentionActionRequest, ListInboxRequest, ListTasksRequest, ManualContext, PrepareActionCardRequest, Raft, RaftAckMode, RaftActionPrepareRequest, RaftActionPrepared, RaftApiError, RaftApiResult, RaftAppConfig, RaftAppConfigPatch, RaftAttachmentBytes, RaftAttachmentUploaded, RaftAvatarUpload, RaftChannelJoinClient, RaftChannelJoinClientResult, RaftChannelJoinError, RaftChannelJoinFailure, RaftChannelJoinOperation, RaftChannelJoinRequest, RaftChannelJoinResult, RaftChannelJoinSuccess, RaftChannelJoinTransportError, RaftChannelMuteState, RaftChannelRef, RaftClaimResult, RaftClaimRow, RaftClaimRowState, RaftClient, RaftClientError, RaftClientFailure, RaftClientResult, RaftClientSuccess, RaftClientThrottleOptions, RaftClientTransportRequest, RaftConsumption, RaftContextAgent, RaftContextData, RaftContextError, RaftContextResult, RaftContextServer, RaftCredentialErrorCode, RaftCredentialIdentity, RaftCredentialStore, RaftEvent, RaftEventAttachment, RaftEventExternalMessage, RaftEventsReceiveData, RaftEventsReceiveError, RaftEventsReceiveRequest, RaftEventsReceiveResult, RaftFailure, RaftHistoryPage, RaftInboxBatch, RaftInboxCommitResult, RaftInboxConversation, RaftInboxDrainSummary, RaftInboxDrained, RaftInboxListing, RaftInboxNotice, RaftInterrupt, RaftInterruptCancel, RaftInterruptReason, RaftInterruptResume, RaftInterrupted, RaftInvokeCaller, RaftInvokeResult, RaftJsonSchema, RaftJsonSchemaType, RaftLatestReadThread, RaftManageClient, RaftMessage, RaftMessageAttachment, RaftMessageTask, RaftNextStep, RaftNoticeFlag, RaftNoticeTarget, RaftOpError, RaftOpErrorCode, RaftOperationIdempotency, RaftOperationName, RaftOperationSpec, RaftOperationsDocument, RaftOutcome, RaftPendingMentions, RaftPreparedCard, RaftProfile, RaftProfileUpdate, RaftRouteAnnotations, RaftRouteInfo, RaftRouteKey, RaftRouteMeta, RaftRouteResult, RaftRouteRetryPolicy, RaftRoutes, RaftSdkConfigurationErrorCode, RaftSearchPage, RaftSenderType, RaftSent, RaftServerInfo, RaftServerProfile, RaftServerUpdate, RaftState, RaftStateContinuation, RaftStateSaveErrorHandler, RaftStateStore, RaftTaskBoard, RaftTaskStatus, RaftTasksCreated, RaftWebhookStatus, ReactRequest, ReadHistoryRequest, ReadLatestReadThreadOptions, ReplyToRequest, SearchMessagesRequest, SeenAttestation, SeenFrontierSnapshot, SendMessageOutcome, SendMessageRequest, ServerInfoRequest, ServerInfoSection, StoredRaftCredential, TaskRef, UpdateTaskStatusOutcome, UpdateTaskStatusRequest, UploadAttachmentRequest, VerifyNoticeInput, VerifyNoticeRejection, VerifyNoticeResult };
10726
+ export type { AmendTaskOutcome, AmendTaskRequest, AssignTaskRequest, BootstrapRaftCredentialOptions, CheckInboxOutcome, CheckInboxRequest, ClaimTasksOutcome, ClaimTasksRequest, ConvertMessageToTaskRequest, CreateRaftClientFromStoreOptions, CreateRaftClientOptions, CreateRaftOptions, CreateRaftRoutesOptions, CreateTasksRequest, DrainInboxRequest, ExecuteMentionActionRequest, ListInboxRequest, ListTasksRequest, ManualContext, PrepareActionCardRequest, Raft, RaftAckMode, RaftActionPrepareRequest, RaftActionPrepared, RaftApiError, RaftApiResult, RaftAppConfig, RaftAppConfigPatch, RaftAttachmentBytes, RaftAttachmentUploaded, RaftAvatarUpload, RaftChannelInfo, RaftChannelJoinClient, RaftChannelJoinClientResult, RaftChannelJoinError, RaftChannelJoinFailure, RaftChannelJoinOperation, RaftChannelJoinRequest, RaftChannelJoinResult, RaftChannelJoinSuccess, RaftChannelJoinTransportError, RaftChannelMuteState, RaftChannelRef, RaftClaimResult, RaftClaimRow, RaftClaimRowState, RaftClient, RaftClientError, RaftClientFailure, RaftClientResult, RaftClientSuccess, RaftClientThrottleOptions, RaftClientTransportRequest, RaftConsumption, RaftContextAgent, RaftContextData, RaftContextError, RaftContextResult, RaftContextServer, RaftCredentialErrorCode, RaftCredentialIdentity, RaftCredentialStore, RaftEvent, RaftEventAttachment, RaftEventExternalMessage, RaftEventsReceiveData, RaftEventsReceiveError, RaftEventsReceiveRequest, RaftEventsReceiveResult, RaftFailure, RaftHistoryPage, RaftInboxBatch, RaftInboxCommitResult, RaftInboxConversation, RaftInboxDrainSummary, RaftInboxDrained, RaftInboxListing, RaftInboxNotice, RaftInterrupt, RaftInterruptCancel, RaftInterruptReason, RaftInterruptResume, RaftInterrupted, RaftInvokeCaller, RaftInvokeResult, RaftJsonSchema, RaftJsonSchemaType, RaftLatestReadThread, RaftManageClient, RaftMessage, RaftMessageAttachment, RaftMessageTask, RaftNextStep, RaftNoticeFlag, RaftNoticeTarget, RaftOpError, RaftOpErrorCode, RaftOperationIdempotency, RaftOperationName, RaftOperationSpec, RaftOperationsDocument, RaftOutcome, RaftPendingMentions, RaftPreparedCard, RaftProfile, RaftProfileUpdate, RaftRouteAnnotations, RaftRouteInfo, RaftRouteKey, RaftRouteMeta, RaftRouteResult, RaftRouteRetryPolicy, RaftRoutes, RaftSdkConfigurationErrorCode, RaftSearchPage, RaftSenderType, RaftSent, RaftServerInfo, RaftServerProfile, RaftServerUpdate, RaftState, RaftStateContinuation, RaftStateSaveErrorHandler, RaftStateStore, RaftTaskBoard, RaftTaskStatus, RaftTasksCreated, RaftUserInfo, RaftUserRef, RaftWebhookStatus, ReactRequest, ReadHistoryRequest, ReadLatestReadThreadOptions, ReplyToRequest, SearchMessagesRequest, SeenAttestation, SeenFrontierSnapshot, SendMessageOutcome, SendMessageRequest, ServerInfoRequest, ServerInfoSection, StoredRaftCredential, TaskRef, UpdateTaskStatusOutcome, UpdateTaskStatusRequest, UploadAttachmentRequest, UserInfoRequest, VerifyNoticeInput, VerifyNoticeRejection, VerifyNoticeResult };
package/operations.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "raft-sdk-operations.v1",
3
- "version": "fb1a488b19b73cbc",
3
+ "version": "c2d4e5cdeb300d10",
4
4
  "operations": [
5
5
  {
6
6
  "name": "identity.whoami",
@@ -961,6 +961,10 @@
961
961
  "type"
962
962
  ],
963
963
  "description": "The operation the card proposes: `type` picks it, and the other fields apply per type as described."
964
+ },
965
+ "idempotencyKey": {
966
+ "type": "string",
967
+ "description": "One key per logical prepare; generated when omitted and returned. Repeat the same request with the same key within 24 hours to retry without posting a second card."
964
968
  }
965
969
  },
966
970
  "required": [
@@ -970,7 +974,8 @@
970
974
  },
971
975
  "sideEffect": "write",
972
976
  "idempotency": {
973
- "kind": "none"
977
+ "kind": "key",
978
+ "arg": "idempotencyKey"
974
979
  },
975
980
  "capability": [
976
981
  "tasks"
@@ -1218,6 +1223,10 @@
1218
1223
  "assignee": {
1219
1224
  "type": "string",
1220
1225
  "description": "`@handle`: yourself to start in_progress, or (owner/admin) someone else to reserve a todo."
1226
+ },
1227
+ "idempotencyKey": {
1228
+ "type": "string",
1229
+ "description": "One key per logical create; generated when omitted and returned. Repeat the same request with the same key within 24 hours to retry without creating the tasks twice."
1221
1230
  }
1222
1231
  },
1223
1232
  "required": [
@@ -1227,7 +1236,8 @@
1227
1236
  },
1228
1237
  "sideEffect": "write",
1229
1238
  "idempotency": {
1230
- "kind": "none"
1239
+ "kind": "key",
1240
+ "arg": "idempotencyKey"
1231
1241
  },
1232
1242
  "capability": [
1233
1243
  "tasks"
@@ -1519,6 +1529,46 @@
1519
1529
  "boundBy": []
1520
1530
  }
1521
1531
  },
1532
+ {
1533
+ "name": "tasks.show",
1534
+ "toolName": "tasks_show",
1535
+ "description": "One task's current status, title, and description. Finds done and closed tasks too.",
1536
+ "inputSchema": {
1537
+ "type": "object",
1538
+ "properties": {
1539
+ "target": {
1540
+ "type": "string",
1541
+ "description": "The channel the task board belongs to, for example `#proj-sdk`."
1542
+ },
1543
+ "taskNumber": {
1544
+ "type": "integer",
1545
+ "description": "The task number on that channel's board.",
1546
+ "minimum": 1
1547
+ }
1548
+ },
1549
+ "required": [
1550
+ "target",
1551
+ "taskNumber"
1552
+ ]
1553
+ },
1554
+ "sideEffect": "read",
1555
+ "idempotency": {
1556
+ "kind": "natural"
1557
+ },
1558
+ "capability": [
1559
+ "tasks"
1560
+ ],
1561
+ "modelOnly": false,
1562
+ "mayInterrupt": false,
1563
+ "consumes": {
1564
+ "model": [],
1565
+ "code": []
1566
+ },
1567
+ "output": {
1568
+ "mayBeLarge": true,
1569
+ "boundBy": []
1570
+ }
1571
+ },
1522
1572
  {
1523
1573
  "name": "tasks.convert",
1524
1574
  "toolName": "tasks_convert",
@@ -1772,6 +1822,41 @@
1772
1822
  "boundBy": []
1773
1823
  }
1774
1824
  },
1825
+ {
1826
+ "name": "channels.info",
1827
+ "toolName": "channels_info",
1828
+ "description": "A regular channel's facts: visibility, whether you joined it, your role and mute state, description, and member counts.",
1829
+ "inputSchema": {
1830
+ "type": "object",
1831
+ "properties": {
1832
+ "target": {
1833
+ "type": "string",
1834
+ "description": "A regular channel, `#channel-name` (the `#` may be omitted). DMs and threads are not accepted."
1835
+ }
1836
+ },
1837
+ "required": [
1838
+ "target"
1839
+ ]
1840
+ },
1841
+ "sideEffect": "read",
1842
+ "idempotency": {
1843
+ "kind": "natural"
1844
+ },
1845
+ "capability": [
1846
+ "channels",
1847
+ "read"
1848
+ ],
1849
+ "modelOnly": false,
1850
+ "mayInterrupt": false,
1851
+ "consumes": {
1852
+ "model": [],
1853
+ "code": []
1854
+ },
1855
+ "output": {
1856
+ "mayBeLarge": false,
1857
+ "boundBy": []
1858
+ }
1859
+ },
1775
1860
  {
1776
1861
  "name": "threads.list",
1777
1862
  "toolName": "threads_list",
@@ -1890,6 +1975,54 @@
1890
1975
  ]
1891
1976
  }
1892
1977
  },
1978
+ {
1979
+ "name": "users.info",
1980
+ "toolName": "users_info",
1981
+ "description": "A human's or agent's visible facts (kind, status, role, description) and which visible channels they are in. Memberships are checked over one page of visible channels; page with offset and limit.",
1982
+ "inputSchema": {
1983
+ "type": "object",
1984
+ "properties": {
1985
+ "name": {
1986
+ "type": "string",
1987
+ "description": "The human or agent, `@handle` (or the bare handle)."
1988
+ },
1989
+ "offset": {
1990
+ "type": "integer",
1991
+ "description": "Membership paging: visible channels to skip before inspecting (default 0).",
1992
+ "minimum": 0
1993
+ },
1994
+ "limit": {
1995
+ "type": "integer",
1996
+ "description": "Membership paging: visible channels to inspect (default 50).",
1997
+ "minimum": 1
1998
+ }
1999
+ },
2000
+ "required": [
2001
+ "name"
2002
+ ]
2003
+ },
2004
+ "sideEffect": "read",
2005
+ "idempotency": {
2006
+ "kind": "natural"
2007
+ },
2008
+ "capability": [
2009
+ "channels",
2010
+ "read"
2011
+ ],
2012
+ "modelOnly": false,
2013
+ "mayInterrupt": false,
2014
+ "consumes": {
2015
+ "model": [],
2016
+ "code": []
2017
+ },
2018
+ "output": {
2019
+ "mayBeLarge": true,
2020
+ "boundBy": [
2021
+ "offset",
2022
+ "limit"
2023
+ ]
2024
+ }
2025
+ },
1893
2026
  {
1894
2027
  "name": "profile.show",
1895
2028
  "toolName": "profile_show",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-sdk",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "license": "FSL-1.1-ALv2",
5
5
  "description": "Typed Raft Agent API client for external agents and bots.",
6
6
  "type": "module",