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

Function newAgentHeartbeatRollbackCommand

internal/cli/authored_context.go:527–591  ·  view source on GitHub ↗
(deps commandDeps)

Source from the content-addressed store, hash-verified

525}
526
527func newAgentHeartbeatRollbackCommand(deps commandDeps) *cobra.Command {
528 var (
529 revisionID string
530 targetDigest string
531 expectedDigest string
532 ifMatchDigest string
533 idempotencyKey string
534 )
535 cmd := &cobra.Command{
536 Use: "rollback <agent>",
537 Short: "Rollback HEARTBEAT.md to a managed revision or snapshot digest",
538 Example: " agh agent heartbeat rollback coder --revision-id rev_123 --expected-digest sha256:old --json",
539 Args: exactOneNonBlankArg(),
540 RunE: func(cmd *cobra.Command, args []string) error {
541 client, err := clientFromDeps(deps)
542 if err != nil {
543 return err
544 }
545 workspace, err := commandWorkspaceFlag(cmd)
546 if err != nil {
547 return err
548 }
549 revisionChanged := cmd.Flags().Changed("revision-id")
550 targetChanged := cmd.Flags().Changed("target-digest")
551 if revisionChanged == targetChanged {
552 return errors.New("cli: exactly one of --revision-id or --target-digest is required")
553 }
554 revision := strings.TrimSpace(revisionID)
555 target := strings.TrimSpace(targetDigest)
556 if revisionChanged {
557 if revision == "" {
558 return errors.New("cli: --revision-id cannot be empty")
559 }
560 }
561 if targetChanged {
562 if target == "" {
563 return errors.New("cli: --target-digest cannot be empty")
564 }
565 }
566 digest, err := changedExpectedDigestFlag(cmd, expectedDigest, ifMatchDigest)
567 if err != nil {
568 return err
569 }
570 record, err := client.RollbackAgentHeartbeat(cmd.Context(), args[0], AgentHeartbeatRollbackRequest{
571 WorkspaceID: workspace,
572 AgentName: args[0],
573 RevisionID: revision,
574 TargetDigest: target,
575 ExpectedDigest: digest,
576 IdempotencyKey: strings.TrimSpace(idempotencyKey),
577 })
578 if err != nil {
579 return err
580 }
581 return writeCommandOutput(cmd, agentHeartbeatMutationBundle(&record))
582 },
583 }
584 addWorkspaceFlag(cmd)

Callers 1

newAgentHeartbeatCommandFunction · 0.85

Calls 8

exactOneNonBlankArgFunction · 0.85
clientFromDepsFunction · 0.85
commandWorkspaceFlagFunction · 0.85
writeCommandOutputFunction · 0.85
addWorkspaceFlagFunction · 0.85

Tested by

no test coverage detected