dailybot-cli 3.7.0__tar.gz → 3.7.2__tar.gz
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.
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/PKG-INFO +14 -14
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/README.md +13 -13
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/kudos.py +2 -17
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/display.py +106 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/PKG-INFO +14 -14
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/pyproject.toml +1 -1
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/LICENSE +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/__init__.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/api_client.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/__init__.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/agent.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/ask.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/auth.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/authoring_helpers.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/channels.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/chat.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/checkin.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/config.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/conversation.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/env.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/form.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/hook.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/identity.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/interactive.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/interactive_chat.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/public_api_helpers.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/query_options.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/status.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/team.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/uninstall.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/update.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/upgrade.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/user.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/user_scoped_actions.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/version.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/commands/workflow.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/config.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/install_method.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/ledger.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/main.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/tui/__init__.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/tui/app.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/tui/commands.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/tui/conversation.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli/tui/intents.py +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/SOURCES.txt +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/dependency_links.txt +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/entry_points.txt +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/requires.txt +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/dailybot_cli.egg-info/top_level.txt +0 -0
- {dailybot_cli-3.7.0 → dailybot_cli-3.7.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dailybot-cli
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.2
|
|
4
4
|
Summary: Dailybot CLI - The command-line bridge between humans and agents. Progress reports, observability, and workflow automation for modern teams across Slack, Google Chat, Discord, MS Teams, and more.
|
|
5
5
|
Author-email: Dailybot <support@dailybot.com>
|
|
6
6
|
License: MIT
|
|
@@ -56,8 +56,8 @@ exact release, or `>=` to set a **minimum floor** (installs the newest release a
|
|
|
56
56
|
or above it):
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
pip install dailybot-cli==3.
|
|
60
|
-
pip install "dailybot-cli>=3.
|
|
59
|
+
pip install dailybot-cli==3.7.0 # exactly 3.7.0
|
|
60
|
+
pip install "dailybot-cli>=3.7.0" # 3.7.0 or newer — picks the latest available
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
### Alternative installation methods
|
|
@@ -66,8 +66,8 @@ Every method installs the **latest** release by default. Where a version can be
|
|
|
66
66
|
pinned, the pinned form is shown right below the default one. Two pinning styles
|
|
67
67
|
are supported everywhere `DAILYBOT_VERSION` / `--version` is accepted:
|
|
68
68
|
|
|
69
|
-
- **Exact** — `3.
|
|
70
|
-
- **Minimum floor** — `>=3.
|
|
69
|
+
- **Exact** — `3.7.0` (or `==3.7.0`) installs precisely that release.
|
|
70
|
+
- **Minimum floor** — `>=3.7.0` installs the newest release at or above `3.7.0`,
|
|
71
71
|
so you get any later version automatically while guaranteeing a lower bound.
|
|
72
72
|
|
|
73
73
|
**macOS (Homebrew)**
|
|
@@ -80,7 +80,7 @@ Homebrew always installs the latest published formula. To pin a specific
|
|
|
80
80
|
version, install with pip instead:
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
|
-
pip install dailybot-cli==3.
|
|
83
|
+
pip install dailybot-cli==3.7.0
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
**Linux, WSL2, or Git Bash on Windows (binary or pip fallback)**
|
|
@@ -95,13 +95,13 @@ accepts an exact version or a `>=` minimum floor:
|
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
# exact version, environment variable
|
|
98
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.
|
|
98
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.7.0 bash
|
|
99
99
|
|
|
100
100
|
# exact version, equivalent flag (note the `-s --` that forwards args through bash)
|
|
101
|
-
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.
|
|
101
|
+
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.7.0
|
|
102
102
|
|
|
103
|
-
# minimum floor — installs 3.
|
|
104
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.
|
|
103
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
104
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.7.0' bash
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
An exact pin installs the matching Linux binary when one exists, otherwise falls
|
|
@@ -127,10 +127,10 @@ An exact version or a `>=` minimum floor both work:
|
|
|
127
127
|
|
|
128
128
|
```powershell
|
|
129
129
|
# exact version
|
|
130
|
-
$env:DAILYBOT_VERSION = '3.
|
|
130
|
+
$env:DAILYBOT_VERSION = '3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
131
131
|
|
|
132
|
-
# minimum floor — installs 3.
|
|
133
|
-
$env:DAILYBOT_VERSION = '>=3.
|
|
132
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
133
|
+
$env:DAILYBOT_VERSION = '>=3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
Requires Python 3.10+ on PATH. Wraps `pipx` / `uv tool` / `pip --user`.
|
|
@@ -145,7 +145,7 @@ The CLI exposes two ways to inspect what's installed — a quick one-liner for s
|
|
|
145
145
|
```bash
|
|
146
146
|
# Single-line, scriptable
|
|
147
147
|
dailybot --version
|
|
148
|
-
# → dailybot 3.
|
|
148
|
+
# → dailybot 3.7.0 (Python 3.12.4)
|
|
149
149
|
|
|
150
150
|
# Multi-line panel: version, Python runtime, install path, release notes link
|
|
151
151
|
dailybot version
|
|
@@ -17,8 +17,8 @@ exact release, or `>=` to set a **minimum floor** (installs the newest release a
|
|
|
17
17
|
or above it):
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pip install dailybot-cli==3.
|
|
21
|
-
pip install "dailybot-cli>=3.
|
|
20
|
+
pip install dailybot-cli==3.7.0 # exactly 3.7.0
|
|
21
|
+
pip install "dailybot-cli>=3.7.0" # 3.7.0 or newer — picks the latest available
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
### Alternative installation methods
|
|
@@ -27,8 +27,8 @@ Every method installs the **latest** release by default. Where a version can be
|
|
|
27
27
|
pinned, the pinned form is shown right below the default one. Two pinning styles
|
|
28
28
|
are supported everywhere `DAILYBOT_VERSION` / `--version` is accepted:
|
|
29
29
|
|
|
30
|
-
- **Exact** — `3.
|
|
31
|
-
- **Minimum floor** — `>=3.
|
|
30
|
+
- **Exact** — `3.7.0` (or `==3.7.0`) installs precisely that release.
|
|
31
|
+
- **Minimum floor** — `>=3.7.0` installs the newest release at or above `3.7.0`,
|
|
32
32
|
so you get any later version automatically while guaranteeing a lower bound.
|
|
33
33
|
|
|
34
34
|
**macOS (Homebrew)**
|
|
@@ -41,7 +41,7 @@ Homebrew always installs the latest published formula. To pin a specific
|
|
|
41
41
|
version, install with pip instead:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
pip install dailybot-cli==3.
|
|
44
|
+
pip install dailybot-cli==3.7.0
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
**Linux, WSL2, or Git Bash on Windows (binary or pip fallback)**
|
|
@@ -56,13 +56,13 @@ accepts an exact version or a `>=` minimum floor:
|
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
# exact version, environment variable
|
|
59
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.
|
|
59
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.7.0 bash
|
|
60
60
|
|
|
61
61
|
# exact version, equivalent flag (note the `-s --` that forwards args through bash)
|
|
62
|
-
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.
|
|
62
|
+
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.7.0
|
|
63
63
|
|
|
64
|
-
# minimum floor — installs 3.
|
|
65
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.
|
|
64
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
65
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.7.0' bash
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
An exact pin installs the matching Linux binary when one exists, otherwise falls
|
|
@@ -88,10 +88,10 @@ An exact version or a `>=` minimum floor both work:
|
|
|
88
88
|
|
|
89
89
|
```powershell
|
|
90
90
|
# exact version
|
|
91
|
-
$env:DAILYBOT_VERSION = '3.
|
|
91
|
+
$env:DAILYBOT_VERSION = '3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
92
92
|
|
|
93
|
-
# minimum floor — installs 3.
|
|
94
|
-
$env:DAILYBOT_VERSION = '>=3.
|
|
93
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
94
|
+
$env:DAILYBOT_VERSION = '>=3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
Requires Python 3.10+ on PATH. Wraps `pipx` / `uv tool` / `pip --user`.
|
|
@@ -106,7 +106,7 @@ The CLI exposes two ways to inspect what's installed — a quick one-liner for s
|
|
|
106
106
|
```bash
|
|
107
107
|
# Single-line, scriptable
|
|
108
108
|
dailybot --version
|
|
109
|
-
# → dailybot 3.
|
|
109
|
+
# → dailybot 3.7.0 (Python 3.12.4)
|
|
110
110
|
|
|
111
111
|
# Multi-line panel: version, Python runtime, install path, release notes link
|
|
112
112
|
dailybot version
|
|
@@ -20,10 +20,10 @@ from dailybot_cli.commands.public_api_helpers import (
|
|
|
20
20
|
from dailybot_cli.commands.query_options import build_query_params, query_options, resolve_fetch_all
|
|
21
21
|
from dailybot_cli.display import (
|
|
22
22
|
console,
|
|
23
|
-
print_detail_panel,
|
|
24
23
|
print_error,
|
|
25
24
|
print_kudos_result,
|
|
26
25
|
print_kudos_table,
|
|
26
|
+
print_kudos_wall_of_fame,
|
|
27
27
|
print_pagination_footer,
|
|
28
28
|
)
|
|
29
29
|
|
|
@@ -394,19 +394,4 @@ def kudos_wall_of_fame(limit: int | None, json_mode: bool) -> None:
|
|
|
394
394
|
if json_mode:
|
|
395
395
|
emit_json(data)
|
|
396
396
|
return
|
|
397
|
-
|
|
398
|
-
fields: list[tuple[str, str]] = [
|
|
399
|
-
("Top receiver", "top_receiver"),
|
|
400
|
-
("Top giver", "top_giver"),
|
|
401
|
-
("Leaderboard entries", "leaderboard_summary"),
|
|
402
|
-
]
|
|
403
|
-
summary: dict[str, Any] = {
|
|
404
|
-
"top_receiver": (data.get("top_receiver") or {}).get("full_name")
|
|
405
|
-
if isinstance(data.get("top_receiver"), dict)
|
|
406
|
-
else data.get("top_receiver"),
|
|
407
|
-
"top_giver": (data.get("top_giver") or {}).get("full_name")
|
|
408
|
-
if isinstance(data.get("top_giver"), dict)
|
|
409
|
-
else data.get("top_giver"),
|
|
410
|
-
"leaderboard_summary": len(leaderboard),
|
|
411
|
-
}
|
|
412
|
-
print_detail_panel("Kudos — Wall of Fame", summary, fields)
|
|
397
|
+
print_kudos_wall_of_fame(data)
|
|
@@ -64,6 +64,112 @@ def print_kudos_table(kudos: list[dict[str, Any]]) -> None:
|
|
|
64
64
|
console.print(table)
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
def _kudos_person_name(entry: Any) -> str | None:
|
|
68
|
+
"""Extract a display name from a wall-of-fame person entry.
|
|
69
|
+
|
|
70
|
+
The API nests the person under ``user`` (``{"user": {"full_name": ...},
|
|
71
|
+
"kudos_received": ...}``); a top-level ``full_name`` is accepted as a
|
|
72
|
+
fallback so partial payloads degrade to a dash instead of crashing.
|
|
73
|
+
"""
|
|
74
|
+
if not isinstance(entry, dict):
|
|
75
|
+
return None
|
|
76
|
+
user: Any = entry.get("user")
|
|
77
|
+
if isinstance(user, dict) and user.get("full_name"):
|
|
78
|
+
return str(user["full_name"])
|
|
79
|
+
name: Any = entry.get("full_name")
|
|
80
|
+
return str(name) if name else None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def print_kudos_wall_of_fame(data: dict[str, Any]) -> None:
|
|
84
|
+
"""Render the kudos wall of fame: top receiver/giver, caller position,
|
|
85
|
+
company-values distribution, and the ranked leaderboard.
|
|
86
|
+
|
|
87
|
+
``GET /v1/kudos/wall-of-fame/`` returns ``top_receiver`` / ``top_giver``
|
|
88
|
+
with the person nested under ``user``, the leaderboard wrapped in a
|
|
89
|
+
``{count, next, previous, results}`` envelope, and the caller's own
|
|
90
|
+
standing in ``leaderboard_summary`` (``{position, total}``).
|
|
91
|
+
"""
|
|
92
|
+
top_receiver: Any = data.get("top_receiver")
|
|
93
|
+
top_giver: Any = data.get("top_giver")
|
|
94
|
+
receiver_name: str | None = _kudos_person_name(top_receiver)
|
|
95
|
+
giver_name: str | None = _kudos_person_name(top_giver)
|
|
96
|
+
if receiver_name and isinstance(top_receiver, dict):
|
|
97
|
+
received: Any = top_receiver.get("kudos_received")
|
|
98
|
+
if received is not None:
|
|
99
|
+
receiver_name = f"{receiver_name} ({received} received)"
|
|
100
|
+
if giver_name and isinstance(top_giver, dict):
|
|
101
|
+
given: Any = top_giver.get("kudos_given")
|
|
102
|
+
if given is not None:
|
|
103
|
+
giver_name = f"{giver_name} ({given} given)"
|
|
104
|
+
|
|
105
|
+
summary_raw: Any = data.get("leaderboard_summary")
|
|
106
|
+
position: str | None = None
|
|
107
|
+
if isinstance(summary_raw, dict) and summary_raw.get("position") is not None:
|
|
108
|
+
total_ranked: Any = summary_raw.get("total")
|
|
109
|
+
position = (
|
|
110
|
+
f"{summary_raw['position']} of {total_ranked}"
|
|
111
|
+
if total_ranked
|
|
112
|
+
else str(summary_raw["position"])
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
print_detail_panel(
|
|
116
|
+
"Kudos — Wall of Fame",
|
|
117
|
+
{"top_receiver": receiver_name, "top_giver": giver_name, "position": position},
|
|
118
|
+
[
|
|
119
|
+
("Top receiver", "top_receiver"),
|
|
120
|
+
("Top giver", "top_giver"),
|
|
121
|
+
("Your position", "position"),
|
|
122
|
+
],
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
dna: Any = data.get("dna_distribution")
|
|
126
|
+
if isinstance(dna, list) and dna:
|
|
127
|
+
dna_table: Table = Table(title="Company values (kudos DNA)")
|
|
128
|
+
dna_table.add_column("Value", style="cyan")
|
|
129
|
+
dna_table.add_column("Kudos", justify="right")
|
|
130
|
+
dna_table.add_column("%", justify="right", style="dim")
|
|
131
|
+
for item in dna:
|
|
132
|
+
value_raw: Any = item.get("company_value") if isinstance(item, dict) else None
|
|
133
|
+
value: dict[str, Any] = value_raw if isinstance(value_raw, dict) else {}
|
|
134
|
+
label: str = f"{value.get('emoji', '')} {value.get('value', '—')}".strip()
|
|
135
|
+
dna_table.add_row(label, str(item.get("count", "—")), str(item.get("percentage", "—")))
|
|
136
|
+
console.print(dna_table)
|
|
137
|
+
|
|
138
|
+
board_raw: Any = data.get("leaderboard")
|
|
139
|
+
if isinstance(board_raw, dict):
|
|
140
|
+
entries: list[Any] = list(board_raw.get("results") or [])
|
|
141
|
+
total: int | None = (
|
|
142
|
+
board_raw.get("count") if isinstance(board_raw.get("count"), int) else None
|
|
143
|
+
)
|
|
144
|
+
else:
|
|
145
|
+
entries = list(board_raw or [])
|
|
146
|
+
total = len(entries)
|
|
147
|
+
if not entries:
|
|
148
|
+
console.print("[dim]No leaderboard entries.[/dim]")
|
|
149
|
+
return
|
|
150
|
+
table: Table = Table(title="Leaderboard")
|
|
151
|
+
table.add_column("#", justify="right", style="dim")
|
|
152
|
+
table.add_column("Name", style="cyan")
|
|
153
|
+
table.add_column("Kudos", justify="right")
|
|
154
|
+
table.add_column("+Kudos", justify="right")
|
|
155
|
+
for entry in entries:
|
|
156
|
+
if not isinstance(entry, dict):
|
|
157
|
+
continue
|
|
158
|
+
table.add_row(
|
|
159
|
+
str(entry.get("position", "—")),
|
|
160
|
+
_kudos_person_name(entry) or "—",
|
|
161
|
+
str(entry.get("score", "—")),
|
|
162
|
+
str(entry.get("total_plus_kudos", "—")),
|
|
163
|
+
)
|
|
164
|
+
console.print(table)
|
|
165
|
+
print_pagination_footer(
|
|
166
|
+
len(entries),
|
|
167
|
+
total,
|
|
168
|
+
has_more=total is not None and total > len(entries),
|
|
169
|
+
more_hint="raise --limit to fetch more",
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
|
|
67
173
|
def print_workflows_table(workflows: list[dict[str, Any]]) -> None:
|
|
68
174
|
"""Render a compact table of workflows (name, trigger, active, runs)."""
|
|
69
175
|
if not workflows:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dailybot-cli
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.2
|
|
4
4
|
Summary: Dailybot CLI - The command-line bridge between humans and agents. Progress reports, observability, and workflow automation for modern teams across Slack, Google Chat, Discord, MS Teams, and more.
|
|
5
5
|
Author-email: Dailybot <support@dailybot.com>
|
|
6
6
|
License: MIT
|
|
@@ -56,8 +56,8 @@ exact release, or `>=` to set a **minimum floor** (installs the newest release a
|
|
|
56
56
|
or above it):
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
pip install dailybot-cli==3.
|
|
60
|
-
pip install "dailybot-cli>=3.
|
|
59
|
+
pip install dailybot-cli==3.7.0 # exactly 3.7.0
|
|
60
|
+
pip install "dailybot-cli>=3.7.0" # 3.7.0 or newer — picks the latest available
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
### Alternative installation methods
|
|
@@ -66,8 +66,8 @@ Every method installs the **latest** release by default. Where a version can be
|
|
|
66
66
|
pinned, the pinned form is shown right below the default one. Two pinning styles
|
|
67
67
|
are supported everywhere `DAILYBOT_VERSION` / `--version` is accepted:
|
|
68
68
|
|
|
69
|
-
- **Exact** — `3.
|
|
70
|
-
- **Minimum floor** — `>=3.
|
|
69
|
+
- **Exact** — `3.7.0` (or `==3.7.0`) installs precisely that release.
|
|
70
|
+
- **Minimum floor** — `>=3.7.0` installs the newest release at or above `3.7.0`,
|
|
71
71
|
so you get any later version automatically while guaranteeing a lower bound.
|
|
72
72
|
|
|
73
73
|
**macOS (Homebrew)**
|
|
@@ -80,7 +80,7 @@ Homebrew always installs the latest published formula. To pin a specific
|
|
|
80
80
|
version, install with pip instead:
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
|
-
pip install dailybot-cli==3.
|
|
83
|
+
pip install dailybot-cli==3.7.0
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
**Linux, WSL2, or Git Bash on Windows (binary or pip fallback)**
|
|
@@ -95,13 +95,13 @@ accepts an exact version or a `>=` minimum floor:
|
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
# exact version, environment variable
|
|
98
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.
|
|
98
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION=3.7.0 bash
|
|
99
99
|
|
|
100
100
|
# exact version, equivalent flag (note the `-s --` that forwards args through bash)
|
|
101
|
-
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.
|
|
101
|
+
curl -fsSL https://cli.dailybot.com/install.sh | bash -s -- --version 3.7.0
|
|
102
102
|
|
|
103
|
-
# minimum floor — installs 3.
|
|
104
|
-
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.
|
|
103
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
104
|
+
curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.7.0' bash
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
An exact pin installs the matching Linux binary when one exists, otherwise falls
|
|
@@ -127,10 +127,10 @@ An exact version or a `>=` minimum floor both work:
|
|
|
127
127
|
|
|
128
128
|
```powershell
|
|
129
129
|
# exact version
|
|
130
|
-
$env:DAILYBOT_VERSION = '3.
|
|
130
|
+
$env:DAILYBOT_VERSION = '3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
131
131
|
|
|
132
|
-
# minimum floor — installs 3.
|
|
133
|
-
$env:DAILYBOT_VERSION = '>=3.
|
|
132
|
+
# minimum floor — installs 3.7.0 or the newest release above it
|
|
133
|
+
$env:DAILYBOT_VERSION = '>=3.7.0'; irm https://cli.dailybot.com/install.ps1 | iex
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
Requires Python 3.10+ on PATH. Wraps `pipx` / `uv tool` / `pip --user`.
|
|
@@ -145,7 +145,7 @@ The CLI exposes two ways to inspect what's installed — a quick one-liner for s
|
|
|
145
145
|
```bash
|
|
146
146
|
# Single-line, scriptable
|
|
147
147
|
dailybot --version
|
|
148
|
-
# → dailybot 3.
|
|
148
|
+
# → dailybot 3.7.0 (Python 3.12.4)
|
|
149
149
|
|
|
150
150
|
# Multi-line panel: version, Python runtime, install path, release notes link
|
|
151
151
|
dailybot version
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dailybot-cli"
|
|
7
|
-
version = "3.7.
|
|
7
|
+
version = "3.7.2"
|
|
8
8
|
description = "Dailybot CLI - The command-line bridge between humans and agents. Progress reports, observability, and workflow automation for modern teams across Slack, Google Chat, Discord, MS Teams, and more."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|