58 lines
2.3 KiB
Go
58 lines
2.3 KiB
Go
package inbox
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
type rootOptions struct {
|
|
dbPath string
|
|
json bool
|
|
agent string
|
|
}
|
|
|
|
func NewRootCmd() *cobra.Command {
|
|
opts := &rootOptions{}
|
|
|
|
cmd := &cobra.Command{
|
|
Use: "inbox",
|
|
Short: "Worker-facing durable coordination bus",
|
|
Long: helpLong(
|
|
"Use inbox to coordinate durable worker-side execution through SQLite-backed threads, messages, leases, and artifacts.",
|
|
"Workers should use inbox directly to fetch or inspect one assigned thread, claim it, report progress, ask blocked questions, wait for answers, and finish with done or fail.",
|
|
"Leaders usually use orch for planning and dispatch, then use inbox mainly for inspection or manual repair.",
|
|
"fetch does not grant ownership; claim is the step that acquires the active lease.",
|
|
),
|
|
Example: ` inbox --db .agents/coord.db init
|
|
inbox --db .agents/coord.db fetch --agent worker-a --status pending
|
|
inbox --db .agents/coord.db claim --agent worker-a --thread thr_123
|
|
inbox --db .agents/coord.db show --thread thr_123
|
|
inbox --db .agents/coord.db update --agent worker-a --thread thr_123 --status in_progress --summary "Started work"
|
|
inbox --db .agents/coord.db update --agent worker-a --thread thr_123 --status blocked --summary "Need API decision" --payload-json '{"question":"Use v1 or v2?"}'
|
|
inbox --db .agents/coord.db wait-reply --thread thr_123 --after-event 10
|
|
inbox --db .agents/coord.db done --agent worker-a --thread thr_123 --summary "Finished"`,
|
|
SilenceErrors: true,
|
|
SilenceUsage: true,
|
|
}
|
|
|
|
cmd.PersistentFlags().StringVar(&opts.dbPath, "db", ".agents/coord.db", "SQLite database path")
|
|
cmd.PersistentFlags().BoolVar(&opts.json, "json", false, "Emit machine-readable JSON")
|
|
cmd.PersistentFlags().StringVar(&opts.agent, "agent", "", "Agent identity")
|
|
|
|
cmd.AddCommand(newInitCmd(opts))
|
|
cmd.AddCommand(newSendCmd(opts))
|
|
cmd.AddCommand(newFetchCmd(opts))
|
|
cmd.AddCommand(newClaimCmd(opts))
|
|
cmd.AddCommand(newRenewCmd(opts))
|
|
cmd.AddCommand(newUpdateCmd(opts))
|
|
cmd.AddCommand(newReplyCmd(opts))
|
|
cmd.AddCommand(newDoneCmd(opts))
|
|
cmd.AddCommand(newFailCmd(opts))
|
|
cmd.AddCommand(newCancelCmd(opts))
|
|
cmd.AddCommand(newListCmd(opts))
|
|
cmd.AddCommand(newWatchCmd(opts))
|
|
cmd.AddCommand(newWaitReplyCmd(opts))
|
|
cmd.AddCommand(newShowCmd(opts))
|
|
|
|
return cmd
|
|
}
|