@llm4ts/flow 0.8.0 → 0.9.1

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.
@@ -42,6 +42,27 @@ declare const CardStep_base: Schema.Class<CardStep, Schema.Struct<{
42
42
  }>, {}>;
43
43
  export declare class CardStep extends CardStep_base {
44
44
  }
45
+ declare const Message_base: Schema.Class<Message, Schema.Struct<{
46
+ readonly id: Schema.Int;
47
+ readonly title: Schema.String;
48
+ readonly contentHtml: Schema.String;
49
+ readonly createdAt: Schema.String;
50
+ }>, {}>;
51
+ export declare class Message extends Message_base {
52
+ }
53
+ declare const Todolist_base: Schema.Class<Todolist, Schema.Struct<{
54
+ readonly id: Schema.Int;
55
+ readonly title: Schema.String;
56
+ }>, {}>;
57
+ export declare class Todolist extends Todolist_base {
58
+ }
59
+ declare const TodoItem_base: Schema.Class<TodoItem, Schema.Struct<{
60
+ readonly id: Schema.Int;
61
+ readonly title: Schema.String;
62
+ readonly completed: Schema.Boolean;
63
+ }>, {}>;
64
+ export declare class TodoItem extends TodoItem_base {
65
+ }
45
66
  export declare const cardColumnsArgs: (board: BasecampProjectRef) => ReadonlyArray<string>;
46
67
  export declare const cardListArgs: (board: BasecampProjectRef, column: Column) => ReadonlyArray<string>;
47
68
  export declare const cardShowArgs: (board: BasecampProjectRef, cardId: number) => ReadonlyArray<string>;
@@ -52,11 +73,19 @@ export declare const cardCommentsArgs: (cardId: number) => ReadonlyArray<string>
52
73
  export declare const cardCommentCreateArgs: (cardId: number, body: string) => ReadonlyArray<string>;
53
74
  export declare const cardStepsArgs: (board: BasecampProjectRef, cardId: number) => ReadonlyArray<string>;
54
75
  export declare const cardStepCompleteArgs: (board: BasecampProjectRef, stepId: number) => ReadonlyArray<string>;
76
+ export declare const messageListArgs: (board: BasecampProjectRef) => ReadonlyArray<string>;
77
+ export declare const messageCreateArgs: (board: BasecampProjectRef, title: string, body: string) => ReadonlyArray<string>;
78
+ export declare const todolistListArgs: (board: BasecampProjectRef) => ReadonlyArray<string>;
79
+ export declare const todoListArgs: (board: BasecampProjectRef, todolistId: number) => ReadonlyArray<string>;
55
80
  export declare const parseColumns: (json: string) => Effect.Effect<ReadonlyArray<Column>, ProcessError>;
56
81
  export declare const parseCard: (json: string) => Effect.Effect<Card, ProcessError>;
57
82
  export declare const parseCards: (json: string) => Effect.Effect<ReadonlyArray<Card>, ProcessError>;
58
83
  export declare const parseCardComments: (json: string) => Effect.Effect<ReadonlyArray<CardComment>, ProcessError>;
59
84
  export declare const parseCardSteps: (json: string) => Effect.Effect<ReadonlyArray<CardStep>, ProcessError>;
85
+ export declare const parseMessage: (json: string) => Effect.Effect<Message, ProcessError>;
86
+ export declare const parseMessages: (json: string) => Effect.Effect<ReadonlyArray<Message>, ProcessError>;
87
+ export declare const parseTodolists: (json: string) => Effect.Effect<ReadonlyArray<Todolist>, ProcessError>;
88
+ export declare const parseTodos: (json: string) => Effect.Effect<ReadonlyArray<TodoItem>, ProcessError>;
60
89
  export interface BasecampToolShape {
61
90
  readonly listColumns: Effect.Effect<ReadonlyArray<Column>, FlowError>;
62
91
  readonly resolveColumn: (title: string) => Effect.Effect<Column, FlowError>;
@@ -69,6 +98,10 @@ export interface BasecampToolShape {
69
98
  readonly writeCardComment: (cardId: number, body: string) => Effect.Effect<void, FlowError>;
70
99
  readonly listSteps: (cardId: number) => Effect.Effect<ReadonlyArray<CardStep>, FlowError>;
71
100
  readonly completeStep: (stepId: number) => Effect.Effect<void, FlowError>;
101
+ readonly listMessages: Effect.Effect<ReadonlyArray<Message>, FlowError>;
102
+ readonly createMessage: (title: string, body: string) => Effect.Effect<Message, FlowError>;
103
+ readonly listTodolists: Effect.Effect<ReadonlyArray<Todolist>, FlowError>;
104
+ readonly listTodos: (todolistId: number) => Effect.Effect<ReadonlyArray<TodoItem>, FlowError>;
72
105
  }
73
106
  export declare const makeBasecampTool: (process: ProcessExecutorShape, workDir: string, events: FlowEventsShape, board: BasecampProjectRef) => Effect.Effect<BasecampToolShape, never, never>;
74
107
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"BasecampTool.d.ts","sourceRoot":"","sources":["../src/BasecampTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BasecampTool.d.ts","sourceRoot":"","sources":["../src/BasecampTool.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,24 @@ export class CardStep extends Schema.Class("CardStep")({
41
41
  completed: Schema.Boolean
42
42
  }) {
43
43
  }
44
+ export class Message extends Schema.Class("Message")({
45
+ id: Schema.Int,
46
+ title: Schema.String,
47
+ contentHtml: Schema.String,
48
+ createdAt: Schema.String
49
+ }) {
50
+ }
51
+ export class Todolist extends Schema.Class("Todolist")({
52
+ id: Schema.Int,
53
+ title: Schema.String
54
+ }) {
55
+ }
56
+ export class TodoItem extends Schema.Class("TodoItem")({
57
+ id: Schema.Int,
58
+ title: Schema.String,
59
+ completed: Schema.Boolean
60
+ }) {
61
+ }
44
62
  const projectFlags = (board) => [
45
63
  "--project",
46
64
  board.project,
@@ -128,6 +146,42 @@ export const cardStepCompleteArgs = (board, stepId) => [
128
146
  ...projectFlags(board),
129
147
  "--quiet"
130
148
  ];
149
+ // Messages and todolists commands take --project only: --card-table
150
+ // belongs to the cards subcommands and is rejected elsewhere.
151
+ const projectOnlyFlags = (board) => [
152
+ "--project",
153
+ board.project
154
+ ];
155
+ export const messageListArgs = (board) => [
156
+ "messages",
157
+ "list",
158
+ ...projectOnlyFlags(board),
159
+ ...jsonFlags
160
+ ];
161
+ // --no-subscribe: agent-written memory must not notify humans per post.
162
+ export const messageCreateArgs = (board, title, body) => [
163
+ "messages",
164
+ "create",
165
+ title,
166
+ body,
167
+ "--no-subscribe",
168
+ ...projectOnlyFlags(board),
169
+ ...jsonFlags
170
+ ];
171
+ export const todolistListArgs = (board) => [
172
+ "todolists",
173
+ "list",
174
+ ...projectOnlyFlags(board),
175
+ ...jsonFlags
176
+ ];
177
+ export const todoListArgs = (board, todolistId) => [
178
+ "todos",
179
+ "list",
180
+ "--list",
181
+ String(todolistId),
182
+ ...projectOnlyFlags(board),
183
+ ...jsonFlags
184
+ ];
131
185
  const decodeJson = (operation, schema, json) => Schema.decodeUnknownEffect(schema)(json).pipe(Effect.mapError((error) => ProcessError.make({
132
186
  message: operation,
133
187
  detail: String(error)
@@ -136,7 +190,9 @@ const columnStruct = Schema.Struct({
136
190
  id: Schema.Int,
137
191
  title: Schema.String
138
192
  });
139
- export const parseColumns = (json) => decodeJson("basecamp parse columns", Schema.fromJsonString(Schema.Array(columnStruct)), json).pipe(Effect.map((columns) => columns.map((column) => Column.make(column))));
193
+ // The CLI prints `null` (not `[]`) for every empty listing columns,
194
+ // cards in a column, comments — so all list decoders tolerate it.
195
+ export const parseColumns = (json) => decodeJson("basecamp parse columns", Schema.fromJsonString(Schema.NullOr(Schema.Array(columnStruct))), json).pipe(Effect.map((columns) => (columns ?? []).map((column) => Column.make(column))));
140
196
  const cardStruct = Schema.Struct({
141
197
  id: Schema.Int,
142
198
  title: Schema.String,
@@ -158,14 +214,14 @@ const toCard = (item) => Card.make({
158
214
  url: item.app_url
159
215
  });
160
216
  export const parseCard = (json) => decodeJson("basecamp parse card", Schema.fromJsonString(cardStruct), json).pipe(Effect.map(toCard));
161
- export const parseCards = (json) => decodeJson("basecamp parse cards", Schema.fromJsonString(Schema.Array(cardStruct)), json).pipe(Effect.map((items) => items.map(toCard)));
217
+ export const parseCards = (json) => decodeJson("basecamp parse cards", Schema.fromJsonString(Schema.NullOr(Schema.Array(cardStruct))), json).pipe(Effect.map((items) => (items ?? []).map(toCard)));
162
218
  const commentStruct = Schema.Struct({
163
219
  id: Schema.Int,
164
220
  content: Schema.String,
165
221
  creator: Schema.Struct({ name: Schema.String }),
166
222
  created_at: Schema.String
167
223
  });
168
- export const parseCardComments = (json) => decodeJson("basecamp parse comments", Schema.fromJsonString(Schema.Array(commentStruct)), json).pipe(Effect.map((comments) => comments.map((comment) => CardComment.make({
224
+ export const parseCardComments = (json) => decodeJson("basecamp parse comments", Schema.fromJsonString(Schema.NullOr(Schema.Array(commentStruct))), json).pipe(Effect.map((comments) => (comments ?? []).map((comment) => CardComment.make({
169
225
  id: comment.id,
170
226
  author: comment.creator.name,
171
227
  contentHtml: comment.content,
@@ -178,6 +234,31 @@ const stepStruct = Schema.Struct({
178
234
  });
179
235
  // A card without steps prints `null`, not `[]`.
180
236
  export const parseCardSteps = (json) => decodeJson("basecamp parse steps", Schema.fromJsonString(Schema.NullOr(Schema.Array(stepStruct))), json).pipe(Effect.map((steps) => (steps ?? []).map((step) => CardStep.make(step))));
237
+ const messageStruct = Schema.Struct({
238
+ id: Schema.Int,
239
+ title: Schema.String,
240
+ content: Schema.optionalKey(Schema.NullOr(Schema.String)),
241
+ created_at: Schema.String
242
+ });
243
+ const toMessage = (item) => Message.make({
244
+ id: item.id,
245
+ title: item.title,
246
+ contentHtml: item.content ?? "",
247
+ createdAt: item.created_at
248
+ });
249
+ export const parseMessage = (json) => decodeJson("basecamp parse message", Schema.fromJsonString(messageStruct), json).pipe(Effect.map(toMessage));
250
+ export const parseMessages = (json) => decodeJson("basecamp parse messages", Schema.fromJsonString(Schema.NullOr(Schema.Array(messageStruct))), json).pipe(Effect.map((items) => (items ?? []).map(toMessage)));
251
+ const todolistStruct = Schema.Struct({
252
+ id: Schema.Int,
253
+ title: Schema.String
254
+ });
255
+ export const parseTodolists = (json) => decodeJson("basecamp parse todolists", Schema.fromJsonString(Schema.NullOr(Schema.Array(todolistStruct))), json).pipe(Effect.map((items) => (items ?? []).map((item) => Todolist.make(item))));
256
+ const todoStruct = Schema.Struct({
257
+ id: Schema.Int,
258
+ title: Schema.String,
259
+ completed: Schema.Boolean
260
+ });
261
+ export const parseTodos = (json) => decodeJson("basecamp parse todos", Schema.fromJsonString(Schema.NullOr(Schema.Array(todoStruct))), json).pipe(Effect.map((items) => (items ?? []).map((item) => TodoItem.make(item))));
181
262
  const output = (result) => result.stdout.join("\n").trim();
182
263
  export const makeBasecampTool = Effect.fn("@llm4ts/flow/BasecampTool.make")(function* (process, workDir, events, board) {
183
264
  const columnsCache = yield* Ref.make(undefined);
@@ -216,7 +297,11 @@ export const makeBasecampTool = Effect.fn("@llm4ts/flow/BasecampTool.make")(func
216
297
  readCardComments: (cardId) => read("basecamp comments list", run(cardCommentsArgs(cardId)).pipe(Effect.flatMap((result) => parseCardComments(output(result))))),
217
298
  writeCardComment: (cardId, body) => write("basecamp comments create", run(cardCommentCreateArgs(cardId, body)).pipe(Effect.asVoid)),
218
299
  listSteps: (cardId) => read("basecamp cards steps", run(cardStepsArgs(board, cardId)).pipe(Effect.flatMap((result) => parseCardSteps(output(result))))),
219
- completeStep: (stepId) => write("basecamp cards step complete", run(cardStepCompleteArgs(board, stepId)).pipe(Effect.asVoid))
300
+ completeStep: (stepId) => write("basecamp cards step complete", run(cardStepCompleteArgs(board, stepId)).pipe(Effect.asVoid)),
301
+ listMessages: read("basecamp messages list", run(messageListArgs(board)).pipe(Effect.flatMap((result) => parseMessages(output(result))))),
302
+ createMessage: (title, body) => write("basecamp messages create", run(messageCreateArgs(board, title, body)).pipe(Effect.flatMap((result) => parseMessage(output(result))))),
303
+ listTodolists: read("basecamp todolists list", run(todolistListArgs(board)).pipe(Effect.flatMap((result) => parseTodolists(output(result))))),
304
+ listTodos: (todolistId) => read("basecamp todos list", run(todoListArgs(board, todolistId)).pipe(Effect.flatMap((result) => parseTodos(output(result)))))
220
305
  };
221
306
  });
222
307
  //# sourceMappingURL=BasecampTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BasecampTool.js","sourceRoot":"","sources":["../src/BasecampTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BasecampTool.js","sourceRoot":"","sources":["../src/BasecampTool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/flow",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "Effect-native LLM workflow, persistence, review, and repository automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -81,13 +81,13 @@
81
81
  "typescript"
82
82
  ],
83
83
  "dependencies": {
84
- "@llm4ts/core": "0.8.0"
84
+ "@llm4ts/core": "0.9.1"
85
85
  },
86
86
  "peerDependencies": {
87
- "effect": "^4.0.0-beta.102"
87
+ "effect": "4.0.0-beta.102"
88
88
  },
89
89
  "devDependencies": {
90
- "effect": "^4.0.0-beta.102"
90
+ "effect": "4.0.0-beta.102"
91
91
  },
92
92
  "scripts": {
93
93
  "clean": "tsc -b tsconfig.json --clean",
@@ -44,6 +44,24 @@ export class CardStep extends Schema.Class<CardStep>("CardStep")({
44
44
  completed: Schema.Boolean
45
45
  }) {}
46
46
 
47
+ export class Message extends Schema.Class<Message>("Message")({
48
+ id: Schema.Int,
49
+ title: Schema.String,
50
+ contentHtml: Schema.String,
51
+ createdAt: Schema.String
52
+ }) {}
53
+
54
+ export class Todolist extends Schema.Class<Todolist>("Todolist")({
55
+ id: Schema.Int,
56
+ title: Schema.String
57
+ }) {}
58
+
59
+ export class TodoItem extends Schema.Class<TodoItem>("TodoItem")({
60
+ id: Schema.Int,
61
+ title: Schema.String,
62
+ completed: Schema.Boolean
63
+ }) {}
64
+
47
65
  const projectFlags = (board: BasecampProjectRef): ReadonlyArray<string> => [
48
66
  "--project",
49
67
  board.project,
@@ -160,6 +178,54 @@ export const cardStepCompleteArgs = (
160
178
  "--quiet"
161
179
  ]
162
180
 
181
+ // Messages and todolists commands take --project only: --card-table
182
+ // belongs to the cards subcommands and is rejected elsewhere.
183
+ const projectOnlyFlags = (board: BasecampProjectRef): ReadonlyArray<string> => [
184
+ "--project",
185
+ board.project
186
+ ]
187
+
188
+ export const messageListArgs = (board: BasecampProjectRef): ReadonlyArray<string> => [
189
+ "messages",
190
+ "list",
191
+ ...projectOnlyFlags(board),
192
+ ...jsonFlags
193
+ ]
194
+
195
+ // --no-subscribe: agent-written memory must not notify humans per post.
196
+ export const messageCreateArgs = (
197
+ board: BasecampProjectRef,
198
+ title: string,
199
+ body: string
200
+ ): ReadonlyArray<string> => [
201
+ "messages",
202
+ "create",
203
+ title,
204
+ body,
205
+ "--no-subscribe",
206
+ ...projectOnlyFlags(board),
207
+ ...jsonFlags
208
+ ]
209
+
210
+ export const todolistListArgs = (board: BasecampProjectRef): ReadonlyArray<string> => [
211
+ "todolists",
212
+ "list",
213
+ ...projectOnlyFlags(board),
214
+ ...jsonFlags
215
+ ]
216
+
217
+ export const todoListArgs = (
218
+ board: BasecampProjectRef,
219
+ todolistId: number
220
+ ): ReadonlyArray<string> => [
221
+ "todos",
222
+ "list",
223
+ "--list",
224
+ String(todolistId),
225
+ ...projectOnlyFlags(board),
226
+ ...jsonFlags
227
+ ]
228
+
163
229
  const decodeJson = <A, S extends Schema.Codec<A, string>>(
164
230
  operation: string,
165
231
  schema: S,
@@ -179,12 +245,14 @@ const columnStruct = Schema.Struct({
179
245
  title: Schema.String
180
246
  })
181
247
 
248
+ // The CLI prints `null` (not `[]`) for every empty listing — columns,
249
+ // cards in a column, comments — so all list decoders tolerate it.
182
250
  export const parseColumns = (json: string): Effect.Effect<ReadonlyArray<Column>, ProcessError> =>
183
251
  decodeJson(
184
252
  "basecamp parse columns",
185
- Schema.fromJsonString(Schema.Array(columnStruct)),
253
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(columnStruct))),
186
254
  json
187
- ).pipe(Effect.map((columns) => columns.map((column) => Column.make(column))))
255
+ ).pipe(Effect.map((columns) => (columns ?? []).map((column) => Column.make(column))))
188
256
 
189
257
  const cardStruct = Schema.Struct({
190
258
  id: Schema.Int,
@@ -217,9 +285,11 @@ export const parseCard = (json: string): Effect.Effect<Card, ProcessError> =>
217
285
  )
218
286
 
219
287
  export const parseCards = (json: string): Effect.Effect<ReadonlyArray<Card>, ProcessError> =>
220
- decodeJson("basecamp parse cards", Schema.fromJsonString(Schema.Array(cardStruct)), json).pipe(
221
- Effect.map((items) => items.map(toCard))
222
- )
288
+ decodeJson(
289
+ "basecamp parse cards",
290
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(cardStruct))),
291
+ json
292
+ ).pipe(Effect.map((items) => (items ?? []).map(toCard)))
223
293
 
224
294
  const commentStruct = Schema.Struct({
225
295
  id: Schema.Int,
@@ -233,11 +303,11 @@ export const parseCardComments = (
233
303
  ): Effect.Effect<ReadonlyArray<CardComment>, ProcessError> =>
234
304
  decodeJson(
235
305
  "basecamp parse comments",
236
- Schema.fromJsonString(Schema.Array(commentStruct)),
306
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(commentStruct))),
237
307
  json
238
308
  ).pipe(
239
309
  Effect.map((comments) =>
240
- comments.map((comment) =>
310
+ (comments ?? []).map((comment) =>
241
311
  CardComment.make({
242
312
  id: comment.id,
243
313
  author: comment.creator.name,
@@ -264,6 +334,60 @@ export const parseCardSteps = (
264
334
  json
265
335
  ).pipe(Effect.map((steps) => (steps ?? []).map((step) => CardStep.make(step))))
266
336
 
337
+ const messageStruct = Schema.Struct({
338
+ id: Schema.Int,
339
+ title: Schema.String,
340
+ content: Schema.optionalKey(Schema.NullOr(Schema.String)),
341
+ created_at: Schema.String
342
+ })
343
+
344
+ const toMessage = (item: typeof messageStruct.Type): Message =>
345
+ Message.make({
346
+ id: item.id,
347
+ title: item.title,
348
+ contentHtml: item.content ?? "",
349
+ createdAt: item.created_at
350
+ })
351
+
352
+ export const parseMessage = (json: string): Effect.Effect<Message, ProcessError> =>
353
+ decodeJson("basecamp parse message", Schema.fromJsonString(messageStruct), json).pipe(
354
+ Effect.map(toMessage)
355
+ )
356
+
357
+ export const parseMessages = (json: string): Effect.Effect<ReadonlyArray<Message>, ProcessError> =>
358
+ decodeJson(
359
+ "basecamp parse messages",
360
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(messageStruct))),
361
+ json
362
+ ).pipe(Effect.map((items) => (items ?? []).map(toMessage)))
363
+
364
+ const todolistStruct = Schema.Struct({
365
+ id: Schema.Int,
366
+ title: Schema.String
367
+ })
368
+
369
+ export const parseTodolists = (
370
+ json: string
371
+ ): Effect.Effect<ReadonlyArray<Todolist>, ProcessError> =>
372
+ decodeJson(
373
+ "basecamp parse todolists",
374
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(todolistStruct))),
375
+ json
376
+ ).pipe(Effect.map((items) => (items ?? []).map((item) => Todolist.make(item))))
377
+
378
+ const todoStruct = Schema.Struct({
379
+ id: Schema.Int,
380
+ title: Schema.String,
381
+ completed: Schema.Boolean
382
+ })
383
+
384
+ export const parseTodos = (json: string): Effect.Effect<ReadonlyArray<TodoItem>, ProcessError> =>
385
+ decodeJson(
386
+ "basecamp parse todos",
387
+ Schema.fromJsonString(Schema.NullOr(Schema.Array(todoStruct))),
388
+ json
389
+ ).pipe(Effect.map((items) => (items ?? []).map((item) => TodoItem.make(item))))
390
+
267
391
  export interface BasecampToolShape {
268
392
  readonly listColumns: Effect.Effect<ReadonlyArray<Column>, FlowError>
269
393
  readonly resolveColumn: (title: string) => Effect.Effect<Column, FlowError>
@@ -283,6 +407,10 @@ export interface BasecampToolShape {
283
407
  readonly writeCardComment: (cardId: number, body: string) => Effect.Effect<void, FlowError>
284
408
  readonly listSteps: (cardId: number) => Effect.Effect<ReadonlyArray<CardStep>, FlowError>
285
409
  readonly completeStep: (stepId: number) => Effect.Effect<void, FlowError>
410
+ readonly listMessages: Effect.Effect<ReadonlyArray<Message>, FlowError>
411
+ readonly createMessage: (title: string, body: string) => Effect.Effect<Message, FlowError>
412
+ readonly listTodolists: Effect.Effect<ReadonlyArray<Todolist>, FlowError>
413
+ readonly listTodos: (todolistId: number) => Effect.Effect<ReadonlyArray<TodoItem>, FlowError>
286
414
  }
287
415
 
288
416
  const output = (result: ProcessResult): string => result.stdout.join("\n").trim()
@@ -408,6 +536,28 @@ export const makeBasecampTool = Effect.fn("@llm4ts/flow/BasecampTool.make")(func
408
536
  write(
409
537
  "basecamp cards step complete",
410
538
  run(cardStepCompleteArgs(board, stepId)).pipe(Effect.asVoid)
539
+ ),
540
+ listMessages: read(
541
+ "basecamp messages list",
542
+ run(messageListArgs(board)).pipe(Effect.flatMap((result) => parseMessages(output(result))))
543
+ ),
544
+ createMessage: (title, body) =>
545
+ write(
546
+ "basecamp messages create",
547
+ run(messageCreateArgs(board, title, body)).pipe(
548
+ Effect.flatMap((result) => parseMessage(output(result)))
549
+ )
550
+ ),
551
+ listTodolists: read(
552
+ "basecamp todolists list",
553
+ run(todolistListArgs(board)).pipe(Effect.flatMap((result) => parseTodolists(output(result))))
554
+ ),
555
+ listTodos: (todolistId) =>
556
+ read(
557
+ "basecamp todos list",
558
+ run(todoListArgs(board, todolistId)).pipe(
559
+ Effect.flatMap((result) => parseTodos(output(result)))
560
+ )
411
561
  )
412
562
  }
413
563
  })