@pome-sh/cli 0.21.12 → 0.21.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  export { SLACK_CHECKS } from './chunk-LH4EGGQW.js';
2
2
  import './chunk-NY55QTVQ.js';
3
+ import { declareRouteInputs, booleanInput, integerInput, mountDeclaredRoute, UndeclaredInputError } from './chunk-4MQULI7E.js';
3
4
  import { loadMcpToolFixture, defineTwin, queryTokenResolver, formTokenResolver, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp } from './chunk-TV5S6WQV.js';
4
5
  import './chunk-VBATFCWR.js';
5
6
  import './chunk-SG6ZTIMT.js';
@@ -246,6 +247,9 @@ function slackError(code, status = 400, extra) {
246
247
  function notFound(code = "not_found") {
247
248
  throw new TwinError(code, 404, code);
248
249
  }
250
+ function validationFailed(code = "invalid_arguments", extra) {
251
+ throw new TwinError(code, 400, code, extra);
252
+ }
249
253
  function isSqliteConstraintError(err) {
250
254
  if (!err || typeof err !== "object")
251
255
  return false;
@@ -305,44 +309,6 @@ function coerceFormValues(raw) {
305
309
  }
306
310
  return out;
307
311
  }
308
- function asString(value, fallback = "") {
309
- if (typeof value === "string")
310
- return value;
311
- if (value === void 0 || value === null)
312
- return fallback;
313
- return String(value);
314
- }
315
- function asOptionalString(value) {
316
- if (typeof value !== "string")
317
- return void 0;
318
- if (value.length === 0)
319
- return void 0;
320
- return value;
321
- }
322
- function asNumber(value, fallback) {
323
- if (typeof value === "number" && Number.isFinite(value))
324
- return value;
325
- if (typeof value === "string" && value.length > 0) {
326
- const parsed = Number(value);
327
- if (Number.isFinite(parsed))
328
- return parsed;
329
- }
330
- return fallback;
331
- }
332
- function asBool(value, fallback = false) {
333
- if (typeof value === "boolean")
334
- return value;
335
- if (typeof value === "string") {
336
- const v = value.toLowerCase().trim();
337
- if (v === "1" || v === "true" || v === "yes")
338
- return true;
339
- if (v === "0" || v === "false" || v === "no")
340
- return false;
341
- }
342
- if (typeof value === "number")
343
- return value !== 0;
344
- return fallback;
345
- }
346
312
  function cursorEncode(payload) {
347
313
  return Buffer.from(JSON.stringify(payload), "utf8").toString("base64url");
348
314
  }
@@ -2285,191 +2251,401 @@ var SlackDomain = class {
2285
2251
  return row?.name ?? id;
2286
2252
  }
2287
2253
  };
2254
+ var AMBIENT_INPUTS = { token: z.string().optional() };
2255
+ function slackRead(path, args) {
2256
+ const shape = { ...AMBIENT_INPUTS, ...args };
2257
+ return {
2258
+ get: declareRouteInputs({ method: "GET", path, query: shape }),
2259
+ post: declareRouteInputs({ method: "POST", path, body: shape, bodyEncoding: "form" })
2260
+ };
2261
+ }
2262
+ function slackWrite(path, args) {
2263
+ const shape = { ...AMBIENT_INPUTS, ...args };
2264
+ return declareRouteInputs({ method: "POST", path, body: shape, bodyEncoding: "form" });
2265
+ }
2266
+ var emptyIfAbsent = () => z.string().default("");
2267
+ var absentIfEmpty = () => z.string().optional().transform((value) => value ? value : void 0);
2268
+ var falseIfAbsent = () => booleanInput.default(false);
2269
+ var optionalInteger = () => integerInput().optional();
2270
+ var zeroIfAbsent = () => integerInput().default(0);
2271
+ var opaque = () => z.unknown().optional();
2272
+ var SLACK_READS = {
2273
+ authTest: slackRead("/auth.test", {}),
2274
+ conversationsList: slackRead("/conversations.list", {
2275
+ types: absentIfEmpty(),
2276
+ exclude_archived: falseIfAbsent(),
2277
+ limit: optionalInteger(),
2278
+ cursor: absentIfEmpty(),
2279
+ team_id: absentIfEmpty()
2280
+ }),
2281
+ // `channel` is read with `asOptionalString` and the handler raises Slack's own
2282
+ // `channel_not_found` when it is absent, so the schema stays optional.
2283
+ conversationsInfo: slackRead("/conversations.info", {
2284
+ channel: absentIfEmpty(),
2285
+ include_num_members: falseIfAbsent()
2286
+ }),
2287
+ conversationsMembers: slackRead("/conversations.members", {
2288
+ channel: emptyIfAbsent(),
2289
+ limit: optionalInteger(),
2290
+ cursor: absentIfEmpty()
2291
+ }),
2292
+ conversationsHistory: slackRead("/conversations.history", {
2293
+ channel: emptyIfAbsent(),
2294
+ cursor: absentIfEmpty(),
2295
+ inclusive: falseIfAbsent(),
2296
+ latest: absentIfEmpty(),
2297
+ limit: optionalInteger(),
2298
+ oldest: absentIfEmpty()
2299
+ }),
2300
+ conversationsReplies: slackRead("/conversations.replies", {
2301
+ channel: emptyIfAbsent(),
2302
+ ts: emptyIfAbsent(),
2303
+ cursor: absentIfEmpty(),
2304
+ inclusive: falseIfAbsent(),
2305
+ latest: absentIfEmpty(),
2306
+ limit: optionalInteger(),
2307
+ oldest: absentIfEmpty()
2308
+ }),
2309
+ reactionsGet: slackRead("/reactions.get", {
2310
+ channel: emptyIfAbsent(),
2311
+ timestamp: emptyIfAbsent(),
2312
+ full: falseIfAbsent()
2313
+ }),
2314
+ usersList: slackRead("/users.list", {
2315
+ cursor: absentIfEmpty(),
2316
+ limit: optionalInteger(),
2317
+ include_locale: falseIfAbsent(),
2318
+ team_id: absentIfEmpty()
2319
+ }),
2320
+ usersInfo: slackRead("/users.info", {
2321
+ user: emptyIfAbsent(),
2322
+ include_locale: falseIfAbsent()
2323
+ }),
2324
+ usersLookupByEmail: slackRead("/users.lookupByEmail", { email: emptyIfAbsent() }),
2325
+ usersProfileGet: slackRead("/users.profile.get", {
2326
+ user: absentIfEmpty(),
2327
+ include_labels: falseIfAbsent()
2328
+ }),
2329
+ pinsList: slackRead("/pins.list", { channel: emptyIfAbsent() }),
2330
+ searchMessages: slackRead("/search.messages", {
2331
+ query: emptyIfAbsent(),
2332
+ count: optionalInteger(),
2333
+ page: optionalInteger(),
2334
+ sort: absentIfEmpty(),
2335
+ sort_dir: absentIfEmpty(),
2336
+ highlight: falseIfAbsent()
2337
+ }),
2338
+ filesInfo: slackRead("/files.info", { file: emptyIfAbsent() }),
2339
+ filesList: slackRead("/files.list", {
2340
+ channel: absentIfEmpty(),
2341
+ user: absentIfEmpty(),
2342
+ count: optionalInteger(),
2343
+ page: optionalInteger(),
2344
+ types: absentIfEmpty()
2345
+ }),
2346
+ bookmarksList: slackRead("/bookmarks.list", { channel_id: emptyIfAbsent() }),
2347
+ teamInfo: slackRead("/team.info", { team: absentIfEmpty() }),
2348
+ // `domain.emojiList` reads no argument at all, and the pre-F-1179 handler
2349
+ // forwarded the whole merged bag — the silent hole this ticket exists to
2350
+ // close. `include_categories` is what Slack's `emoji.list` declares beyond
2351
+ // `token`, so that is the surface, and an unnamed argument is now refused.
2352
+ emojiList: slackRead("/emoji.list", { include_categories: falseIfAbsent() })
2353
+ };
2354
+ var SLACK_WRITES = {
2355
+ conversationsCreate: slackWrite("/conversations.create", {
2356
+ name: emptyIfAbsent(),
2357
+ is_private: falseIfAbsent(),
2358
+ team_id: absentIfEmpty()
2359
+ }),
2360
+ conversationsArchive: slackWrite("/conversations.archive", { channel: emptyIfAbsent() }),
2361
+ conversationsInvite: slackWrite("/conversations.invite", {
2362
+ channel: emptyIfAbsent(),
2363
+ users: emptyIfAbsent()
2364
+ }),
2365
+ conversationsJoin: slackWrite("/conversations.join", { channel: emptyIfAbsent() }),
2366
+ conversationsLeave: slackWrite("/conversations.leave", { channel: emptyIfAbsent() }),
2367
+ conversationsKick: slackWrite("/conversations.kick", {
2368
+ channel: emptyIfAbsent(),
2369
+ user: emptyIfAbsent()
2370
+ }),
2371
+ conversationsOpen: slackWrite("/conversations.open", {
2372
+ users: absentIfEmpty(),
2373
+ channel: absentIfEmpty(),
2374
+ return_im: falseIfAbsent()
2375
+ }),
2376
+ conversationsSetTopic: slackWrite("/conversations.setTopic", {
2377
+ channel: emptyIfAbsent(),
2378
+ topic: emptyIfAbsent()
2379
+ }),
2380
+ conversationsSetPurpose: slackWrite("/conversations.setPurpose", {
2381
+ channel: emptyIfAbsent(),
2382
+ purpose: emptyIfAbsent()
2383
+ }),
2384
+ chatPostMessage: slackWrite("/chat.postMessage", {
2385
+ channel: emptyIfAbsent(),
2386
+ text: absentIfEmpty(),
2387
+ blocks: absentIfEmpty(),
2388
+ attachments: absentIfEmpty(),
2389
+ thread_ts: absentIfEmpty(),
2390
+ reply_broadcast: falseIfAbsent(),
2391
+ icon_emoji: absentIfEmpty(),
2392
+ icon_url: absentIfEmpty(),
2393
+ username: absentIfEmpty(),
2394
+ as_user: falseIfAbsent()
2395
+ }),
2396
+ chatUpdate: slackWrite("/chat.update", {
2397
+ channel: emptyIfAbsent(),
2398
+ ts: emptyIfAbsent(),
2399
+ text: absentIfEmpty(),
2400
+ blocks: absentIfEmpty(),
2401
+ attachments: absentIfEmpty()
2402
+ }),
2403
+ chatDelete: slackWrite("/chat.delete", {
2404
+ channel: emptyIfAbsent(),
2405
+ ts: emptyIfAbsent()
2406
+ }),
2407
+ chatScheduleMessage: slackWrite("/chat.scheduleMessage", {
2408
+ channel: emptyIfAbsent(),
2409
+ text: emptyIfAbsent(),
2410
+ post_at: zeroIfAbsent(),
2411
+ thread_ts: absentIfEmpty(),
2412
+ blocks: absentIfEmpty()
2413
+ }),
2414
+ chatDeleteScheduledMessage: slackWrite("/chat.deleteScheduledMessage", {
2415
+ channel: emptyIfAbsent(),
2416
+ scheduled_message_id: emptyIfAbsent()
2417
+ }),
2418
+ reactionsAdd: slackWrite("/reactions.add", {
2419
+ channel: emptyIfAbsent(),
2420
+ timestamp: emptyIfAbsent(),
2421
+ name: emptyIfAbsent()
2422
+ }),
2423
+ reactionsRemove: slackWrite("/reactions.remove", {
2424
+ channel: emptyIfAbsent(),
2425
+ timestamp: emptyIfAbsent(),
2426
+ name: emptyIfAbsent()
2427
+ }),
2428
+ usersProfileSet: slackWrite("/users.profile.set", {
2429
+ user: absentIfEmpty(),
2430
+ profile: absentIfEmpty(),
2431
+ name: absentIfEmpty(),
2432
+ value: absentIfEmpty()
2433
+ }),
2434
+ pinsAdd: slackWrite("/pins.add", {
2435
+ channel: emptyIfAbsent(),
2436
+ timestamp: emptyIfAbsent()
2437
+ }),
2438
+ pinsRemove: slackWrite("/pins.remove", {
2439
+ channel: emptyIfAbsent(),
2440
+ timestamp: emptyIfAbsent()
2441
+ }),
2442
+ filesUpload: slackWrite("/files.upload", {
2443
+ channels: absentIfEmpty(),
2444
+ channel: absentIfEmpty(),
2445
+ filename: absentIfEmpty(),
2446
+ title: absentIfEmpty(),
2447
+ filetype: absentIfEmpty(),
2448
+ content: absentIfEmpty(),
2449
+ initial_comment: absentIfEmpty(),
2450
+ thread_ts: absentIfEmpty()
2451
+ }),
2452
+ filesDelete: slackWrite("/files.delete", { file: emptyIfAbsent() }),
2453
+ bookmarksAdd: slackWrite("/bookmarks.add", {
2454
+ channel_id: emptyIfAbsent(),
2455
+ title: emptyIfAbsent(),
2456
+ type: absentIfEmpty(),
2457
+ link: absentIfEmpty(),
2458
+ emoji: absentIfEmpty(),
2459
+ entity_id: absentIfEmpty()
2460
+ }),
2461
+ bookmarksRemove: slackWrite("/bookmarks.remove", {
2462
+ channel_id: emptyIfAbsent(),
2463
+ bookmark_id: emptyIfAbsent()
2464
+ }),
2465
+ canvasesCreate: slackWrite("/canvases.create", {
2466
+ title: absentIfEmpty(),
2467
+ document_content: opaque(),
2468
+ channel_id: absentIfEmpty()
2469
+ }),
2470
+ canvasesEdit: slackWrite("/canvases.edit", {
2471
+ canvas_id: emptyIfAbsent(),
2472
+ changes: opaque()
2473
+ }),
2474
+ canvasesDelete: slackWrite("/canvases.delete", { canvas_id: emptyIfAbsent() })
2475
+ };
2476
+ [
2477
+ ...Object.values(SLACK_READS).flatMap((surfaces) => [surfaces.get, surfaces.post]),
2478
+ ...Object.values(SLACK_WRITES)
2479
+ ];
2288
2480
 
2289
2481
  // ../packages/twin-slack/dist/src/routes.js
2290
- async function readArgs(c) {
2291
- const method = c.req.method.toUpperCase();
2292
- if (method === "GET" || method === "HEAD") {
2293
- return { ...c.req.query() };
2294
- }
2295
- const body = await parseFormOrJson(c);
2296
- return { ...c.req.query(), ...body };
2297
- }
2298
2482
  function actorFrom(c) {
2299
2483
  const session = c.get("session");
2300
2484
  return { login: typeof session?.login === "string" ? session.login : void 0 };
2301
2485
  }
2302
- var optNum = (value, fallback) => value === void 0 ? void 0 : asNumber(value, fallback);
2486
+ async function parseDeclared(declaration, c) {
2487
+ try {
2488
+ return await declaration.parse(c.req);
2489
+ } catch (error) {
2490
+ if (error instanceof UndeclaredInputError) {
2491
+ validationFailed("invalid_arguments", {
2492
+ response_metadata: { messages: [error.message] }
2493
+ });
2494
+ }
2495
+ throw error;
2496
+ }
2497
+ }
2303
2498
  function registerSlackRoutes(app, { domain, recorder }) {
2304
- const read = (path, call) => {
2305
- const handler = recorder.handle({ mutation: false }, async (c) => ({
2499
+ const read = (surfaces, call) => {
2500
+ mountDeclaredRoute(app, surfaces.get, recorder.handle({ mutation: false }, async (c) => ({
2306
2501
  status: 200,
2307
- body: slackOk(call(await readArgs(c), actorFrom(c)))
2308
- }));
2309
- app.get(path, handler);
2310
- app.post(path, handler);
2502
+ body: slackOk(call((await parseDeclared(surfaces.get, c)).query, actorFrom(c)))
2503
+ })));
2504
+ mountDeclaredRoute(app, surfaces.post, recorder.handle({ mutation: false }, async (c) => ({
2505
+ status: 200,
2506
+ body: slackOk(call((await parseDeclared(surfaces.post, c)).body, actorFrom(c)))
2507
+ })));
2311
2508
  };
2312
- const write = (path, call, mutated = () => true) => {
2313
- app.post(path, recorder.handle({ mutation: true }, async (c) => {
2509
+ const write = (declaration, call, mutated = () => true) => {
2510
+ mountDeclaredRoute(app, declaration, recorder.handle({ mutation: true }, async (c) => {
2314
2511
  let delta = null;
2315
- const result = call(await readArgs(c), actorFrom(c), (d) => {
2512
+ const inputs = await parseDeclared(declaration, c);
2513
+ const result = call(inputs.body, actorFrom(c), (d) => {
2316
2514
  delta = d;
2317
2515
  });
2318
2516
  return { status: 200, body: slackOk(result), delta, mutation: mutated(result) };
2319
2517
  }));
2320
2518
  };
2321
- read("/auth.test", (_args, actor) => domain.authTest(actor));
2322
- read("/conversations.list", (args) => domain.conversationsList({
2323
- types: asOptionalString(args.types),
2324
- exclude_archived: asBool(args.exclude_archived, false),
2325
- limit: optNum(args.limit, 100),
2326
- cursor: asOptionalString(args.cursor),
2327
- team_id: asOptionalString(args.team_id)
2519
+ read(SLACK_READS.authTest, (_args, actor) => domain.authTest(actor));
2520
+ read(SLACK_READS.conversationsList, (args) => domain.conversationsList({
2521
+ types: args.types,
2522
+ exclude_archived: args.exclude_archived,
2523
+ limit: args.limit,
2524
+ cursor: args.cursor,
2525
+ team_id: args.team_id
2328
2526
  }));
2329
- read("/conversations.info", (args, actor) => {
2330
- const channel = asOptionalString(args.channel);
2331
- if (!channel)
2527
+ read(SLACK_READS.conversationsInfo, (args, actor) => {
2528
+ if (!args.channel)
2332
2529
  throw new TwinError("channel_not_found", 400, "channel_not_found");
2333
- return domain.conversationsInfo({ channel, include_num_members: asBool(args.include_num_members, false) }, actor);
2530
+ return domain.conversationsInfo({ channel: args.channel, include_num_members: args.include_num_members }, actor);
2334
2531
  });
2335
- write("/conversations.create", (args, actor, delta) => domain.conversationsCreate({
2336
- name: asString(args.name),
2337
- is_private: asBool(args.is_private, false),
2338
- team_id: asOptionalString(args.team_id)
2339
- }, actor, delta));
2340
- write("/conversations.archive", (args, actor, delta) => domain.conversationsArchive({ channel: asString(args.channel) }, actor, delta));
2341
- write("/conversations.invite", (args, actor, delta) => domain.conversationsInvite({ channel: asString(args.channel), users: asString(args.users) }, actor, delta));
2342
- write("/conversations.join", (args, actor, delta) => domain.conversationsJoin({ channel: asString(args.channel) }, actor, delta));
2343
- write("/conversations.leave", (args, actor, delta) => domain.conversationsLeave({ channel: asString(args.channel) }, actor, delta));
2344
- write("/conversations.kick", (args, actor, delta) => domain.conversationsKick({ channel: asString(args.channel), user: asString(args.user) }, actor, delta));
2345
- read("/conversations.members", (args, actor) => domain.conversationsMembers({
2346
- channel: asString(args.channel),
2347
- limit: optNum(args.limit, 100),
2348
- cursor: asOptionalString(args.cursor)
2349
- }, actor));
2350
- read("/conversations.history", (args, actor) => domain.conversationsHistory({
2351
- channel: asString(args.channel),
2352
- cursor: asOptionalString(args.cursor),
2353
- inclusive: asBool(args.inclusive, false),
2354
- latest: asOptionalString(args.latest),
2355
- limit: optNum(args.limit, 100),
2356
- oldest: asOptionalString(args.oldest)
2532
+ write(SLACK_WRITES.conversationsCreate, (args, actor, delta) => domain.conversationsCreate({ name: args.name, is_private: args.is_private, team_id: args.team_id }, actor, delta));
2533
+ write(SLACK_WRITES.conversationsArchive, (args, actor, delta) => domain.conversationsArchive({ channel: args.channel }, actor, delta));
2534
+ write(SLACK_WRITES.conversationsInvite, (args, actor, delta) => domain.conversationsInvite({ channel: args.channel, users: args.users }, actor, delta));
2535
+ write(SLACK_WRITES.conversationsJoin, (args, actor, delta) => domain.conversationsJoin({ channel: args.channel }, actor, delta));
2536
+ write(SLACK_WRITES.conversationsLeave, (args, actor, delta) => domain.conversationsLeave({ channel: args.channel }, actor, delta));
2537
+ write(SLACK_WRITES.conversationsKick, (args, actor, delta) => domain.conversationsKick({ channel: args.channel, user: args.user }, actor, delta));
2538
+ read(SLACK_READS.conversationsMembers, (args, actor) => domain.conversationsMembers({ channel: args.channel, limit: args.limit, cursor: args.cursor }, actor));
2539
+ read(SLACK_READS.conversationsHistory, (args, actor) => domain.conversationsHistory({
2540
+ channel: args.channel,
2541
+ cursor: args.cursor,
2542
+ inclusive: args.inclusive,
2543
+ latest: args.latest,
2544
+ limit: args.limit,
2545
+ oldest: args.oldest
2357
2546
  }, actor));
2358
- read("/conversations.replies", (args, actor) => domain.conversationsReplies({
2359
- channel: asString(args.channel),
2360
- ts: asString(args.ts),
2361
- cursor: asOptionalString(args.cursor),
2362
- inclusive: asBool(args.inclusive, false),
2363
- latest: asOptionalString(args.latest),
2364
- limit: optNum(args.limit, 100),
2365
- oldest: asOptionalString(args.oldest)
2547
+ read(SLACK_READS.conversationsReplies, (args, actor) => domain.conversationsReplies({
2548
+ channel: args.channel,
2549
+ ts: args.ts,
2550
+ cursor: args.cursor,
2551
+ inclusive: args.inclusive,
2552
+ latest: args.latest,
2553
+ limit: args.limit,
2554
+ oldest: args.oldest
2366
2555
  }, actor));
2367
- write("/conversations.open", (args, actor, delta) => domain.conversationsOpen({
2368
- users: asOptionalString(args.users),
2369
- channel: asOptionalString(args.channel),
2370
- return_im: asBool(args.return_im, false)
2371
- }, actor, delta), (result) => !result.already_open);
2372
- write("/conversations.setTopic", (args, actor, delta) => domain.conversationsSetTopic({ channel: asString(args.channel), topic: asString(args.topic) }, actor, delta));
2373
- write("/conversations.setPurpose", (args, actor, delta) => domain.conversationsSetPurpose({ channel: asString(args.channel), purpose: asString(args.purpose) }, actor, delta));
2374
- write("/chat.postMessage", (args, actor, delta) => domain.chatPostMessage({
2375
- channel: asString(args.channel),
2376
- text: asOptionalString(args.text),
2377
- blocks: asOptionalString(args.blocks),
2378
- attachments: asOptionalString(args.attachments),
2379
- thread_ts: asOptionalString(args.thread_ts),
2380
- reply_broadcast: asBool(args.reply_broadcast, false),
2381
- icon_emoji: asOptionalString(args.icon_emoji),
2382
- icon_url: asOptionalString(args.icon_url),
2383
- username: asOptionalString(args.username),
2384
- as_user: asBool(args.as_user, false)
2556
+ write(SLACK_WRITES.conversationsOpen, (args, actor, delta) => domain.conversationsOpen({ users: args.users, channel: args.channel, return_im: args.return_im }, actor, delta), (result) => !result.already_open);
2557
+ write(SLACK_WRITES.conversationsSetTopic, (args, actor, delta) => domain.conversationsSetTopic({ channel: args.channel, topic: args.topic }, actor, delta));
2558
+ write(SLACK_WRITES.conversationsSetPurpose, (args, actor, delta) => domain.conversationsSetPurpose({ channel: args.channel, purpose: args.purpose }, actor, delta));
2559
+ write(SLACK_WRITES.chatPostMessage, (args, actor, delta) => domain.chatPostMessage({
2560
+ channel: args.channel,
2561
+ text: args.text,
2562
+ blocks: args.blocks,
2563
+ attachments: args.attachments,
2564
+ thread_ts: args.thread_ts,
2565
+ reply_broadcast: args.reply_broadcast,
2566
+ icon_emoji: args.icon_emoji,
2567
+ icon_url: args.icon_url,
2568
+ username: args.username,
2569
+ as_user: args.as_user
2385
2570
  }, actor, delta));
2386
- write("/chat.update", (args, actor, delta) => domain.chatUpdate({
2387
- channel: asString(args.channel),
2388
- ts: asString(args.ts),
2389
- text: asOptionalString(args.text),
2390
- blocks: asOptionalString(args.blocks),
2391
- attachments: asOptionalString(args.attachments)
2571
+ write(SLACK_WRITES.chatUpdate, (args, actor, delta) => domain.chatUpdate({
2572
+ channel: args.channel,
2573
+ ts: args.ts,
2574
+ text: args.text,
2575
+ blocks: args.blocks,
2576
+ attachments: args.attachments
2392
2577
  }, actor, delta));
2393
- write("/chat.delete", (args, actor, delta) => domain.chatDelete({ channel: asString(args.channel), ts: asString(args.ts) }, actor, delta));
2394
- write("/chat.scheduleMessage", (args, actor, delta) => domain.chatScheduleMessage({
2395
- channel: asString(args.channel),
2396
- text: asString(args.text),
2397
- post_at: asNumber(args.post_at, 0),
2398
- thread_ts: asOptionalString(args.thread_ts),
2399
- blocks: asOptionalString(args.blocks)
2578
+ write(SLACK_WRITES.chatDelete, (args, actor, delta) => domain.chatDelete({ channel: args.channel, ts: args.ts }, actor, delta));
2579
+ write(SLACK_WRITES.chatScheduleMessage, (args, actor, delta) => domain.chatScheduleMessage({
2580
+ channel: args.channel,
2581
+ text: args.text,
2582
+ post_at: args.post_at,
2583
+ thread_ts: args.thread_ts,
2584
+ blocks: args.blocks
2400
2585
  }, actor, delta));
2401
- write("/chat.deleteScheduledMessage", (args, actor, delta) => domain.chatDeleteScheduledMessage({ channel: asString(args.channel), scheduled_message_id: asString(args.scheduled_message_id) }, actor, delta));
2402
- write("/reactions.add", (args, actor, delta) => domain.reactionsAdd({ channel: asString(args.channel), timestamp: asString(args.timestamp), name: asString(args.name) }, actor, delta));
2403
- write("/reactions.remove", (args, actor, delta) => domain.reactionsRemove({ channel: asString(args.channel), timestamp: asString(args.timestamp), name: asString(args.name) }, actor, delta));
2404
- read("/reactions.get", (args, actor) => domain.reactionsGet({
2405
- channel: asString(args.channel),
2406
- timestamp: asString(args.timestamp),
2407
- full: asBool(args.full, false)
2408
- }, actor));
2409
- read("/users.list", (args) => domain.usersList({
2410
- cursor: asOptionalString(args.cursor),
2411
- limit: optNum(args.limit, 100),
2412
- include_locale: asBool(args.include_locale, false),
2413
- team_id: asOptionalString(args.team_id)
2586
+ write(SLACK_WRITES.chatDeleteScheduledMessage, (args, actor, delta) => domain.chatDeleteScheduledMessage({ channel: args.channel, scheduled_message_id: args.scheduled_message_id }, actor, delta));
2587
+ write(SLACK_WRITES.reactionsAdd, (args, actor, delta) => domain.reactionsAdd({ channel: args.channel, timestamp: args.timestamp, name: args.name }, actor, delta));
2588
+ write(SLACK_WRITES.reactionsRemove, (args, actor, delta) => domain.reactionsRemove({ channel: args.channel, timestamp: args.timestamp, name: args.name }, actor, delta));
2589
+ read(SLACK_READS.reactionsGet, (args, actor) => domain.reactionsGet({ channel: args.channel, timestamp: args.timestamp, full: args.full }, actor));
2590
+ read(SLACK_READS.usersList, (args) => domain.usersList({
2591
+ cursor: args.cursor,
2592
+ limit: args.limit,
2593
+ include_locale: args.include_locale,
2594
+ team_id: args.team_id
2414
2595
  }));
2415
- read("/users.info", (args) => domain.usersInfo({ user: asString(args.user), include_locale: asBool(args.include_locale, false) }));
2416
- read("/users.lookupByEmail", (args) => domain.usersLookupByEmail({ email: asString(args.email) }));
2417
- read("/users.profile.get", (args, actor) => domain.usersProfileGet({ user: asOptionalString(args.user), include_labels: asBool(args.include_labels, false) }, actor));
2418
- write("/users.profile.set", (args, actor, delta) => domain.usersProfileSet({
2419
- user: asOptionalString(args.user),
2420
- profile: asOptionalString(args.profile),
2421
- name: asOptionalString(args.name),
2422
- value: asOptionalString(args.value)
2423
- }, actor, delta));
2424
- write("/pins.add", (args, actor, delta) => domain.pinsAdd({ channel: asString(args.channel), timestamp: asString(args.timestamp) }, actor, delta));
2425
- write("/pins.remove", (args, actor, delta) => domain.pinsRemove({ channel: asString(args.channel), timestamp: asString(args.timestamp) }, actor, delta));
2426
- read("/pins.list", (args, actor) => domain.pinsList({ channel: asString(args.channel) }, actor));
2427
- read("/search.messages", (args, actor) => domain.searchMessages({
2428
- query: asString(args.query),
2429
- count: optNum(args.count, 20),
2430
- page: optNum(args.page, 1),
2431
- sort: asOptionalString(args.sort),
2432
- sort_dir: asOptionalString(args.sort_dir),
2433
- highlight: asBool(args.highlight, false)
2596
+ read(SLACK_READS.usersInfo, (args) => domain.usersInfo({ user: args.user, include_locale: args.include_locale }));
2597
+ read(SLACK_READS.usersLookupByEmail, (args) => domain.usersLookupByEmail({ email: args.email }));
2598
+ read(SLACK_READS.usersProfileGet, (args, actor) => domain.usersProfileGet({ user: args.user, include_labels: args.include_labels }, actor));
2599
+ write(SLACK_WRITES.usersProfileSet, (args, actor, delta) => domain.usersProfileSet({ user: args.user, profile: args.profile, name: args.name, value: args.value }, actor, delta));
2600
+ write(SLACK_WRITES.pinsAdd, (args, actor, delta) => domain.pinsAdd({ channel: args.channel, timestamp: args.timestamp }, actor, delta));
2601
+ write(SLACK_WRITES.pinsRemove, (args, actor, delta) => domain.pinsRemove({ channel: args.channel, timestamp: args.timestamp }, actor, delta));
2602
+ read(SLACK_READS.pinsList, (args, actor) => domain.pinsList({ channel: args.channel }, actor));
2603
+ read(SLACK_READS.searchMessages, (args, actor) => domain.searchMessages({
2604
+ query: args.query,
2605
+ count: args.count,
2606
+ page: args.page,
2607
+ sort: args.sort,
2608
+ sort_dir: args.sort_dir,
2609
+ highlight: args.highlight
2434
2610
  }, actor));
2435
- write("/files.upload", (args, actor, delta) => domain.filesUpload({
2436
- channels: asOptionalString(args.channels),
2437
- channel: asOptionalString(args.channel),
2438
- filename: asOptionalString(args.filename),
2439
- title: asOptionalString(args.title),
2440
- filetype: asOptionalString(args.filetype),
2441
- content: asOptionalString(args.content),
2442
- initial_comment: asOptionalString(args.initial_comment),
2443
- thread_ts: asOptionalString(args.thread_ts)
2611
+ write(SLACK_WRITES.filesUpload, (args, actor, delta) => domain.filesUpload({
2612
+ channels: args.channels,
2613
+ channel: args.channel,
2614
+ filename: args.filename,
2615
+ title: args.title,
2616
+ filetype: args.filetype,
2617
+ content: args.content,
2618
+ initial_comment: args.initial_comment,
2619
+ thread_ts: args.thread_ts
2444
2620
  }, actor, delta));
2445
- read("/files.info", (args) => domain.filesInfo({ file: asString(args.file) }));
2446
- read("/files.list", (args) => domain.filesList({
2447
- channel: asOptionalString(args.channel),
2448
- user: asOptionalString(args.user),
2449
- count: optNum(args.count, 100),
2450
- page: optNum(args.page, 1),
2451
- types: asOptionalString(args.types)
2621
+ read(SLACK_READS.filesInfo, (args) => domain.filesInfo({ file: args.file }));
2622
+ read(SLACK_READS.filesList, (args) => domain.filesList({
2623
+ channel: args.channel,
2624
+ user: args.user,
2625
+ count: args.count,
2626
+ page: args.page,
2627
+ types: args.types
2452
2628
  }));
2453
- write("/files.delete", (args, actor, delta) => domain.filesDelete({ file: asString(args.file) }, actor, delta));
2454
- write("/bookmarks.add", (args, actor, delta) => domain.bookmarksAdd({
2455
- channel_id: asString(args.channel_id),
2456
- title: asString(args.title),
2457
- type: asOptionalString(args.type),
2458
- link: asOptionalString(args.link),
2459
- emoji: asOptionalString(args.emoji),
2460
- entity_id: asOptionalString(args.entity_id)
2629
+ write(SLACK_WRITES.filesDelete, (args, actor, delta) => domain.filesDelete({ file: args.file }, actor, delta));
2630
+ write(SLACK_WRITES.bookmarksAdd, (args, actor, delta) => domain.bookmarksAdd({
2631
+ channel_id: args.channel_id,
2632
+ title: args.title,
2633
+ type: args.type,
2634
+ link: args.link,
2635
+ emoji: args.emoji,
2636
+ entity_id: args.entity_id
2461
2637
  }, actor, delta));
2462
- write("/bookmarks.remove", (args, actor, delta) => domain.bookmarksRemove({ channel_id: asString(args.channel_id), bookmark_id: asString(args.bookmark_id) }, actor, delta));
2463
- read("/bookmarks.list", (args) => domain.bookmarksList({ channel_id: asString(args.channel_id) }));
2464
- read("/team.info", (args) => domain.teamInfo({ team: asOptionalString(args.team) }));
2465
- write("/canvases.create", (args, actor, delta) => domain.canvasesCreate({
2466
- title: asOptionalString(args.title),
2638
+ write(SLACK_WRITES.bookmarksRemove, (args, actor, delta) => domain.bookmarksRemove({ channel_id: args.channel_id, bookmark_id: args.bookmark_id }, actor, delta));
2639
+ read(SLACK_READS.bookmarksList, (args) => domain.bookmarksList({ channel_id: args.channel_id }));
2640
+ read(SLACK_READS.teamInfo, (args) => domain.teamInfo({ team: args.team }));
2641
+ write(SLACK_WRITES.canvasesCreate, (args, actor, delta) => domain.canvasesCreate({
2642
+ title: args.title,
2467
2643
  document_content: args.document_content,
2468
- channel_id: asOptionalString(args.channel_id)
2644
+ channel_id: args.channel_id
2469
2645
  }, actor, delta));
2470
- write("/canvases.edit", (args, actor, delta) => domain.canvasesEdit({ canvas_id: asString(args.canvas_id), changes: args.changes }, actor, delta));
2471
- write("/canvases.delete", (args, actor, delta) => domain.canvasesDelete({ canvas_id: asString(args.canvas_id) }, actor, delta));
2472
- read("/emoji.list", (args) => domain.emojiList(args));
2646
+ write(SLACK_WRITES.canvasesEdit, (args, actor, delta) => domain.canvasesEdit({ canvas_id: args.canvas_id, changes: args.changes }, actor, delta));
2647
+ write(SLACK_WRITES.canvasesDelete, (args, actor, delta) => domain.canvasesDelete({ canvas_id: args.canvas_id }, actor, delta));
2648
+ read(SLACK_READS.emojiList, (args) => domain.emojiList({ include_categories: args.include_categories }));
2473
2649
  }
2474
2650
 
2475
2651
  // ../packages/twin-slack/dist/fixtures/mcp-tools-list.meta.json