MCPcopy Create free account
hub / github.com/compozy/agh / buildTaskBlockRequest

Function buildTaskBlockRequest

internal/cli/task.go:1352–1389  ·  view source on GitHub ↗
(
	cmd *cobra.Command,
	input taskBlockInput,
	now time.Time,
)

Source from the content-addressed store, hash-verified

1350}
1351
1352func buildTaskBlockRequest(
1353 cmd *cobra.Command,
1354 input taskBlockInput,
1355 now time.Time,
1356) (CreateTaskBlockRequest, error) {
1357 kind := taskpkg.BlockKind(strings.TrimSpace(input.KindRaw)).Normalize()
1358 if err := kind.Validate("task_block.kind"); err != nil {
1359 return CreateTaskBlockRequest{}, fmt.Errorf("cli: %w", err)
1360 }
1361 reason := strings.TrimSpace(input.Reason)
1362 if reason == "" {
1363 return CreateTaskBlockRequest{}, errors.New("cli: --reason is required")
1364 }
1365 request := CreateTaskBlockRequest{
1366 Kind: kind,
1367 Reason: reason,
1368 RunID: strings.TrimSpace(input.RunID),
1369 }
1370 if cmd.Flags().Changed("details") {
1371 details, err := parseAgentTaskJSONFlag("details", input.DetailsRaw)
1372 if err != nil {
1373 return CreateTaskBlockRequest{}, err
1374 }
1375 request.Details = details
1376 }
1377 if strings.TrimSpace(input.ExpiresIn) != "" {
1378 duration, err := time.ParseDuration(strings.TrimSpace(input.ExpiresIn))
1379 if err != nil {
1380 return CreateTaskBlockRequest{}, fmt.Errorf("cli: invalid --expires-in duration: %w", err)
1381 }
1382 if duration <= 0 {
1383 return CreateTaskBlockRequest{}, errors.New("cli: --expires-in must be positive")
1384 }
1385 expiresAt := now.Add(duration).UTC()
1386 request.ExpiresAt = &expiresAt
1387 }
1388 return request, nil
1389}
1390
1391func newTaskCancelCommand(deps commandDeps) *cobra.Command {
1392 var (

Callers 1

newTaskBlockCommandFunction · 0.85

Calls 4

parseAgentTaskJSONFlagFunction · 0.85
ValidateMethod · 0.65
NormalizeMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected