dailybot-cli 3.14.1__tar.gz → 3.14.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.
Files changed (64) hide show
  1. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/PKG-INFO +2 -2
  2. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/README.md +1 -1
  3. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/api_client.py +9 -1
  4. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/board.py +23 -4
  5. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/public_api_helpers.py +1 -1
  6. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/PKG-INFO +2 -2
  7. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/pyproject.toml +1 -1
  8. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/LICENSE +0 -0
  9. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/__init__.py +0 -0
  10. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/__init__.py +0 -0
  11. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_attachments.py +0 -0
  12. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_beta.py +0 -0
  13. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_destructive.py +0 -0
  14. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_favorites.py +0 -0
  15. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_rollups.py +0 -0
  16. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/_writes.py +0 -0
  17. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/agent.py +0 -0
  18. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/ask.py +0 -0
  19. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/auth.py +0 -0
  20. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/authoring_helpers.py +0 -0
  21. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/channels.py +0 -0
  22. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/chat.py +0 -0
  23. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/checkin.py +0 -0
  24. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/config.py +0 -0
  25. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/conversation.py +0 -0
  26. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/env.py +0 -0
  27. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/featured.py +0 -0
  28. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/form.py +0 -0
  29. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/goal.py +0 -0
  30. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/hook.py +0 -0
  31. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/identity.py +0 -0
  32. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/interactive.py +0 -0
  33. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/interactive_chat.py +0 -0
  34. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/kudos.py +0 -0
  35. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/label.py +0 -0
  36. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/project.py +0 -0
  37. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/query_options.py +0 -0
  38. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/status.py +0 -0
  39. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/task.py +0 -0
  40. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/tasks.py +0 -0
  41. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/team.py +0 -0
  42. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/uninstall.py +0 -0
  43. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/update.py +0 -0
  44. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/upgrade.py +0 -0
  45. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/user.py +0 -0
  46. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/user_scoped_actions.py +0 -0
  47. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/version.py +0 -0
  48. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/commands/workflow.py +0 -0
  49. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/config.py +0 -0
  50. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/display.py +0 -0
  51. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/install_method.py +0 -0
  52. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/ledger.py +0 -0
  53. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/main.py +0 -0
  54. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/tui/__init__.py +0 -0
  55. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/tui/app.py +0 -0
  56. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/tui/commands.py +0 -0
  57. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/tui/conversation.py +0 -0
  58. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli/tui/intents.py +0 -0
  59. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/SOURCES.txt +0 -0
  60. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/dependency_links.txt +0 -0
  61. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/entry_points.txt +0 -0
  62. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/requires.txt +0 -0
  63. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/dailybot_cli.egg-info/top_level.txt +0 -0
  64. {dailybot_cli-3.14.1 → dailybot_cli-3.14.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dailybot-cli
3
- Version: 3.14.1
3
+ Version: 3.14.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
@@ -969,7 +969,7 @@ humans who own them.
969
969
  | `dailybot board view save <board> -f views.json --if-match <etag>` | Replace your saved views (the whole list) — **needs `dailybot login`** |
970
970
  | `dailybot board snapshot <uuid>` | The whole board in one request; carries the `delta_cursor` that `tasks changes` consumes |
971
971
  | `dailybot board update <uuid>` | Name, key (the old key stays reserved), visibility, estimate scale, auto-archive, project |
972
- | `dailybot board create --name <n>` | Create a board — **needs `dailybot login`** |
972
+ | `dailybot board create --name <n> --project <uuid> --key <KEY>` | Create a board in a project; the key prefixes its tasks (`DSN-1`) — **needs `dailybot login` as an admin** |
973
973
  | `dailybot board archive <uuid>` | Archive a board. **Cascade-archives its live tasks**, and restoring does not bring them back |
974
974
  | `dailybot board restore <uuid>` | Restore a board (cascaded tasks stay archived) |
975
975
  | `dailybot project list` | List projects (`--include progress`) |
@@ -930,7 +930,7 @@ humans who own them.
930
930
  | `dailybot board view save <board> -f views.json --if-match <etag>` | Replace your saved views (the whole list) — **needs `dailybot login`** |
931
931
  | `dailybot board snapshot <uuid>` | The whole board in one request; carries the `delta_cursor` that `tasks changes` consumes |
932
932
  | `dailybot board update <uuid>` | Name, key (the old key stays reserved), visibility, estimate scale, auto-archive, project |
933
- | `dailybot board create --name <n>` | Create a board — **needs `dailybot login`** |
933
+ | `dailybot board create --name <n> --project <uuid> --key <KEY>` | Create a board in a project; the key prefixes its tasks (`DSN-1`) — **needs `dailybot login` as an admin** |
934
934
  | `dailybot board archive <uuid>` | Archive a board. **Cascade-archives its live tasks**, and restoring does not bring them back |
935
935
  | `dailybot board restore <uuid>` | Restore a board (cascaded tasks stay archived) |
936
936
  | `dailybot project list` | List projects (`--include progress`) |
@@ -2947,7 +2947,15 @@ class DailyBotClient:
2947
2947
  extra_headers=headers,
2948
2948
  timeout=ATTACHMENT_TRANSFER_TIMEOUT_SECS,
2949
2949
  )
2950
- if response_same.status_code >= 300:
2950
+ if 300 <= response_same.status_code < 400:
2951
+ # Same rule as the storage branch: an upload is never re-sent anywhere,
2952
+ # and a redirect is not an acceptance, so nothing gets confirmed.
2953
+ raise APIError(
2954
+ response_same.status_code,
2955
+ "The upload target answered with a redirect; it was not followed.",
2956
+ code="attachment_upload_redirected",
2957
+ )
2958
+ if response_same.status_code >= 400:
2951
2959
  return self._handle_response(response_same)
2952
2960
  # Accepted. Like the storage branch, an empty or non-JSON 2xx is success.
2953
2961
  try:
@@ -989,12 +989,29 @@ def _require_person_for_admin(action: str, *, json_mode: bool) -> None:
989
989
  # Boards have no description field (BoardWrite declares none), so the flag the CLI
990
990
  # once offered could only earn a 400. It stays, hidden, to refuse with the reason.
991
991
  @click.option("-d", "--description", default=None, hidden=True)
992
+ @click.option(
993
+ "--project",
994
+ "project_uuid",
995
+ required=True,
996
+ help="The project the board belongs to (uuid).",
997
+ )
998
+ @click.option(
999
+ "--key",
1000
+ "board_key",
1001
+ required=True,
1002
+ help="The board's key prefix, e.g. DSN, so its tasks read DSN-1, DSN-2…",
1003
+ )
992
1004
  @click.option("--idempotency-key", default=None, help="Reuse a key to make a retry safe.")
993
1005
  @click.option("--json", "json_mode", is_flag=True, help="Emit machine-readable JSON to stdout.")
994
1006
  def board_create(
995
- name: str, description: str | None, idempotency_key: str | None, json_mode: bool
1007
+ name: str,
1008
+ description: str | None,
1009
+ project_uuid: str,
1010
+ board_key: str,
1011
+ idempotency_key: str | None,
1012
+ json_mode: bool,
996
1013
  ) -> None:
997
- """Create a board. Needs a signed-in person.
1014
+ """Create a board in a project. Needs a signed-in organization admin.
998
1015
 
999
1016
  \b
1000
1017
  An organization API key cannot do this: the `tasks:admin` scope it requires can
@@ -1002,7 +1019,7 @@ def board_create(
1002
1019
 
1003
1020
  \b
1004
1021
  Examples:
1005
- dailybot board create --name "Design"
1022
+ dailybot board create --name "Design" --project <project-uuid> --key DSN
1006
1023
  """
1007
1024
  if description is not None:
1008
1025
  raise click.UsageError(
@@ -1013,7 +1030,9 @@ def board_create(
1013
1030
  client = require_auth()
1014
1031
  try:
1015
1032
  with console.status("Creating the board..."):
1016
- data: dict[str, Any] = client.create_board(name=name, idempotency_key=idempotency_key)
1033
+ data: dict[str, Any] = client.create_board(
1034
+ name=name, project=project_uuid, key=board_key, idempotency_key=idempotency_key
1035
+ )
1017
1036
  except APIError as exc:
1018
1037
  exit_for_tasks_error(exc, json_mode)
1019
1038
  if json_mode:
@@ -131,7 +131,7 @@ ERROR_CODE_MESSAGES: dict[str, str] = {
131
131
  "now. Nothing was uploaded; try again later or attach from the web app."
132
132
  ),
133
133
  "attachment_upload_redirected": (
134
- "The storage target answered with a redirect, which this CLI never follows for an "
134
+ "The upload target answered with a redirect, which this CLI never follows for an "
135
135
  "upload. Nothing was confirmed; run the command again for a fresh upload target."
136
136
  ),
137
137
  "attachment_upload_target_refused": (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dailybot-cli
3
- Version: 3.14.1
3
+ Version: 3.14.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
@@ -969,7 +969,7 @@ humans who own them.
969
969
  | `dailybot board view save <board> -f views.json --if-match <etag>` | Replace your saved views (the whole list) — **needs `dailybot login`** |
970
970
  | `dailybot board snapshot <uuid>` | The whole board in one request; carries the `delta_cursor` that `tasks changes` consumes |
971
971
  | `dailybot board update <uuid>` | Name, key (the old key stays reserved), visibility, estimate scale, auto-archive, project |
972
- | `dailybot board create --name <n>` | Create a board — **needs `dailybot login`** |
972
+ | `dailybot board create --name <n> --project <uuid> --key <KEY>` | Create a board in a project; the key prefixes its tasks (`DSN-1`) — **needs `dailybot login` as an admin** |
973
973
  | `dailybot board archive <uuid>` | Archive a board. **Cascade-archives its live tasks**, and restoring does not bring them back |
974
974
  | `dailybot board restore <uuid>` | Restore a board (cascaded tasks stay archived) |
975
975
  | `dailybot project list` | List projects (`--include progress`) |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dailybot-cli"
7
- version = "3.14.1"
7
+ version = "3.14.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