makea-cli 0.2.13__tar.gz → 0.2.14__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 (68) hide show
  1. {makea_cli-0.2.13 → makea_cli-0.2.14}/CHANGELOG.md +8 -0
  2. {makea_cli-0.2.13 → makea_cli-0.2.14}/PKG-INFO +2 -2
  3. {makea_cli-0.2.13 → makea_cli-0.2.14}/README.md +1 -1
  4. makea_cli-0.2.14/makea_cli/__init__.py +1 -0
  5. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/api_client.py +2 -6
  6. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/orders/cmd.py +7 -5
  7. {makea_cli-0.2.13 → makea_cli-0.2.14}/pyproject.toml +1 -1
  8. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/golden_manifest.json +3 -3
  9. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_pm_reads.py +14 -3
  10. makea_cli-0.2.13/makea_cli/__init__.py +0 -1
  11. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/create-supplier-profile/SKILL.md +0 -0
  12. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/lark-cli-setup/SKILL.md +0 -0
  13. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/link-supplier-user/SKILL.md +0 -0
  14. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/makea-cli-setup/SKILL.md +0 -0
  15. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/payment-revenue-report/SKILL.md +0 -0
  16. {makea_cli-0.2.13 → makea_cli-0.2.14}/.claude/skills/supplier-user-id-migration/SKILL.md +0 -0
  17. {makea_cli-0.2.13 → makea_cli-0.2.14}/.gitignore +0 -0
  18. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea-collection-upload/SKILL.md +0 -0
  19. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea-collection-upload/scripts/create_products.py +0 -0
  20. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/__main__.py +0 -0
  21. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/auth_pkce.py +0 -0
  22. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/broker.py +0 -0
  23. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/__init__.py +0 -0
  24. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/_util.py +0 -0
  25. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/analytics/__init__.py +0 -0
  26. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/analytics/cmd.py +0 -0
  27. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/auth/__init__.py +0 -0
  28. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/auth/cmd.py +0 -0
  29. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/brand/__init__.py +0 -0
  30. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/brand/cmd.py +0 -0
  31. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/designer/__init__.py +0 -0
  32. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/designer/cmd.py +0 -0
  33. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/directory/__init__.py +0 -0
  34. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/directory/cmd.py +0 -0
  35. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/document/__init__.py +0 -0
  36. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/document/cmd.py +0 -0
  37. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/email/__init__.py +0 -0
  38. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/email/cmd.py +0 -0
  39. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/factory/__init__.py +0 -0
  40. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/factory/cmd.py +0 -0
  41. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/library/__init__.py +0 -0
  42. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/library/cmd.py +0 -0
  43. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/metrics/__init__.py +0 -0
  44. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/metrics/cmd.py +0 -0
  45. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/orders/__init__.py +0 -0
  46. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/product/__init__.py +0 -0
  47. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/product/cmd.py +0 -0
  48. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/production/__init__.py +0 -0
  49. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/production/cmd.py +0 -0
  50. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/production/pricing_spec.py +0 -0
  51. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/supplier/__init__.py +0 -0
  52. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/commands/supplier/cmd.py +0 -0
  53. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/config.py +0 -0
  54. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/errors.py +0 -0
  55. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/identity.py +0 -0
  56. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/main.py +0 -0
  57. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/output.py +0 -0
  58. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/posthog_client.py +0 -0
  59. {makea_cli-0.2.13 → makea_cli-0.2.14}/makea_cli/registry.py +0 -0
  60. {makea_cli-0.2.13 → makea_cli-0.2.14}/npm/makea-cli/README.md +0 -0
  61. {makea_cli-0.2.13 → makea_cli-0.2.14}/npm/makea-cli/makea-cli.mjs +0 -0
  62. {makea_cli-0.2.13 → makea_cli-0.2.14}/npm/makea-cli/package.json +0 -0
  63. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_broker.py +0 -0
  64. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_output_contract.py +0 -0
  65. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_persona_commands.py +0 -0
  66. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_registry.py +0 -0
  67. {makea_cli-0.2.13 → makea_cli-0.2.14}/tests/test_supplier_scorecard.py +0 -0
  68. {makea_cli-0.2.13 → makea_cli-0.2.14}/uv.lock +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.14
4
+
5
+ - `admin update tracking-status`: help text no longer describes it as "the
6
+ 17track webhook path". The 17track integration (registration and webhook)
7
+ was removed from the backend on 2026-10-10; this command, fed by the
8
+ tracking-sweep skill, is now the only way a carrier status reaches an
9
+ order. Behaviour is unchanged.
10
+
3
11
  ## 0.2.13
4
12
 
5
13
  - `designer get supplier-scorecard [SUPPLIER_ID]`: a factory's track record
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: makea-cli
3
- Version: 0.2.13
3
+ Version: 0.2.14
4
4
  Summary: Makea admin CLI (browser login + Makea admin HTTP API)
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: click<9,>=8.1
@@ -131,7 +131,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
131
131
  | `makea-cli admin update quote-request` | write(ask) | `PATCH /admin/quote_requests/{quote_request_id}/update` | set a quote request's stage, status and/or due date. Only what you pass is changed. This is the door that unblocks a … | `update-quote-request` |
132
132
  | `makea-cli admin update supplier` | write(ask) | `PUT /admin/supplier/update_supplier` | update an existing supplier from a JSON file (admin). Run `makea-cli get-supplier-profile-schema` FIRST to get the fi… | `update-supplier` |
133
133
  | `makea-cli admin update tech-spec` | write(ask) | `POST /admin/products/{id}/technical-specifications` | persist specs from a JSON file. | `save-product-tech-spec` |
134
- | `makea-cli admin update tracking-status` | write(ask) | `POST /admin/tracking/carrier_status` | apply a carrier status looked up by hand (tracking-sweep skill) to one order. Runs the 17track webhook path: status, fan-out, delivered emails (--silent: state only). | — |
134
+ | `makea-cli admin update tracking-status` | write(ask) | `POST /admin/tracking/carrier_status` | apply a carrier status looked up by hand (tracking-sweep skill) to one order: status, fan-out, delivered emails (--silent: state only). | — |
135
135
  | `makea-cli admin update user` | write(ask) | `PUT /admin/user-profiles/{user_id}/update` | admin updates DynamoDB user profile fields and/or Cognito custom:userType. Allowed --user-type values: "Fashion brand… | `update-user-profile` |
136
136
  | `makea-cli admin upload financial-document` | write(auto) | `POST /admin/products/{product_id}/financial_documents` | upload one or more files to AWS S3 and return financial document metadata. | `upload-financial-documents` |
137
137
  | `makea-cli admin upload link-document` | write(auto) | `POST /admin/upload_link_document` | upload a file to AWS S3 and return document domain metadata for reuse as input in other commands. | `upload-link-document` |
@@ -119,7 +119,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
119
119
  | `makea-cli admin update quote-request` | write(ask) | `PATCH /admin/quote_requests/{quote_request_id}/update` | set a quote request's stage, status and/or due date. Only what you pass is changed. This is the door that unblocks a … | `update-quote-request` |
120
120
  | `makea-cli admin update supplier` | write(ask) | `PUT /admin/supplier/update_supplier` | update an existing supplier from a JSON file (admin). Run `makea-cli get-supplier-profile-schema` FIRST to get the fi… | `update-supplier` |
121
121
  | `makea-cli admin update tech-spec` | write(ask) | `POST /admin/products/{id}/technical-specifications` | persist specs from a JSON file. | `save-product-tech-spec` |
122
- | `makea-cli admin update tracking-status` | write(ask) | `POST /admin/tracking/carrier_status` | apply a carrier status looked up by hand (tracking-sweep skill) to one order. Runs the 17track webhook path: status, fan-out, delivered emails (--silent: state only). | — |
122
+ | `makea-cli admin update tracking-status` | write(ask) | `POST /admin/tracking/carrier_status` | apply a carrier status looked up by hand (tracking-sweep skill) to one order: status, fan-out, delivered emails (--silent: state only). | — |
123
123
  | `makea-cli admin update user` | write(ask) | `PUT /admin/user-profiles/{user_id}/update` | admin updates DynamoDB user profile fields and/or Cognito custom:userType. Allowed --user-type values: "Fashion brand… | `update-user-profile` |
124
124
  | `makea-cli admin upload financial-document` | write(auto) | `POST /admin/products/{product_id}/financial_documents` | upload one or more files to AWS S3 and return financial document metadata. | `upload-financial-documents` |
125
125
  | `makea-cli admin upload link-document` | write(auto) | `POST /admin/upload_link_document` | upload a file to AWS S3 and return document domain metadata for reuse as input in other commands. | `upload-link-document` |
@@ -0,0 +1 @@
1
+ __version__ = "0.2.14"
@@ -1576,9 +1576,7 @@ def designer_list_milestones(product_id: str) -> Any:
1576
1576
  params={"type": "PRODUCTION"},
1577
1577
  )
1578
1578
  orders = (
1579
- raw.get("production_orders_details") or raw.get("orders")
1580
- if isinstance(raw, dict)
1581
- else raw
1579
+ raw.get("production_orders_details") or raw.get("orders") if isinstance(raw, dict) else raw
1582
1580
  )
1583
1581
  out = []
1584
1582
  for order in orders or []:
@@ -1604,9 +1602,7 @@ def designer_list_milestones(product_id: str) -> Any:
1604
1602
  return {"product_id": product_id, "milestones": out}
1605
1603
 
1606
1604
 
1607
- def designer_list_notes(
1608
- product_id: str, channel_key: str, *, since: str | None = None
1609
- ) -> Any:
1605
+ def designer_list_notes(product_id: str, channel_key: str, *, since: str | None = None) -> Any:
1610
1606
  """A channel's messages, oldest first, optionally only those after
1611
1607
  ``since`` (ISO date or datetime): what the factory said this week."""
1612
1608
  raw = get_json(f"/designer/products/{product_id}/channels/{channel_key}/notes")
@@ -323,14 +323,14 @@ def register(app: typer.Typer) -> None:
323
323
  api="POST /admin/tracking/carrier_status",
324
324
  side_effects=[
325
325
  "moves the order to delivered when the status says so",
326
- "emails and messages the designer, supplier and admins as the 17track webhook did (none with --silent)",
326
+ "emails and messages the designer, supplier and admins that the parcel arrived (none with --silent)",
327
327
  ],
328
328
  approval="ask",
329
329
  idempotent=True,
330
330
  help=(
331
331
  "POST /admin/tracking/carrier_status — apply a carrier status looked up by hand "
332
- "(the tracking-sweep skill) to one order. Runs the 17track webhook path: status, "
333
- "fan-out to every order sharing the number, and the delivered emails."
332
+ "(the tracking-sweep skill) to one order: status, fan-out to every order "
333
+ "sharing the number, and the delivered emails."
334
334
  ),
335
335
  )
336
336
  def update_tracking_status(
@@ -341,7 +341,9 @@ def register(app: typer.Typer) -> None:
341
341
  order_id: str = typer.Argument(..., help="Order id (product id for reference_sample)."),
342
342
  tracking_number: str = typer.Argument(..., help="The parcel's tracking number."),
343
343
  status: str = typer.Option(
344
- ..., "--status", help="17track status, e.g. Delivered, InTransit."
344
+ ...,
345
+ "--status",
346
+ help="Carrier status as the public 17track page shows it, e.g. Delivered, InTransit.",
345
347
  ),
346
348
  sub_status: str | None = typer.Option(None, "--sub-status"),
347
349
  event: str | None = typer.Option(None, "--event", help="Latest carrier event text."),
@@ -358,7 +360,7 @@ def register(app: typer.Typer) -> None:
358
360
  """
359
361
  Tell Makea what the carrier says about one parcel.
360
362
 
361
- Output: JSON from the webhook path: success, status, and one entry per
363
+ Output: JSON: success, status, and one entry per
362
364
  order the number was fanned out to. Repeating a Delivered update is a
363
365
  no-op (no second email). --silent moves the orders without telling
364
366
  anyone.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "makea-cli"
7
- version = "0.2.13"
7
+ version = "0.2.14"
8
8
  description = "Makea admin CLI (browser login + Makea admin HTTP API)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -3574,14 +3574,14 @@
3574
3574
  "external": null,
3575
3575
  "side_effects": [
3576
3576
  "moves the order to delivered when the status says so",
3577
- "emails and messages the designer, supplier and admins as the 17track webhook did (none with --silent)"
3577
+ "emails and messages the designer, supplier and admins that the parcel arrived (none with --silent)"
3578
3578
  ],
3579
3579
  "approval": "ask",
3580
3580
  "reversible": null,
3581
3581
  "idempotent": true,
3582
3582
  "limit": null,
3583
3583
  "legacy": [],
3584
- "help": "POST /admin/tracking/carrier_status — apply a carrier status looked up by hand (the tracking-sweep skill) to one order. Runs the 17track webhook path: status, fan-out to every order sharing the number, and the delivered emails.",
3584
+ "help": "POST /admin/tracking/carrier_status — apply a carrier status looked up by hand (the tracking-sweep skill) to one order: status, fan-out to every order sharing the number, and the delivered emails.",
3585
3585
  "function": "makea_cli.commands.orders.cmd.register.<locals>.update_tracking_status",
3586
3586
  "flags": [
3587
3587
  {
@@ -3630,7 +3630,7 @@
3630
3630
  "required": true,
3631
3631
  "multiple": false,
3632
3632
  "default": null,
3633
- "help": "17track status, e.g. Delivered, InTransit."
3633
+ "help": "Carrier status as the public 17track page shows it, e.g. Delivered, InTransit."
3634
3634
  },
3635
3635
  {
3636
3636
  "name": "sub_status",
@@ -22,7 +22,11 @@ class PmReadsTest(unittest.TestCase):
22
22
  "progress_type": "During Production",
23
23
  "metadata": {
24
24
  "milestones": [
25
- {"title": "Cutting", "status": "completed", "time_window": ["3", "5"]},
25
+ {
26
+ "title": "Cutting",
27
+ "status": "completed",
28
+ "time_window": ["3", "5"],
29
+ },
26
30
  ]
27
31
  },
28
32
  }
@@ -50,7 +54,12 @@ class PmReadsTest(unittest.TestCase):
50
54
  raw = {
51
55
  "notes": [
52
56
  {"note_id": "a", "created_at": "2026-09-30T10:00:00", "content": "old"},
53
- {"note_id": "b", "created_at": "2026-10-05T10:00:00", "content": "new", "replies": [{}]},
57
+ {
58
+ "note_id": "b",
59
+ "created_at": "2026-10-05T10:00:00",
60
+ "content": "new",
61
+ "replies": [{}],
62
+ },
54
63
  ]
55
64
  }
56
65
  with mock.patch.object(api_client, "get_json", return_value=raw):
@@ -62,7 +71,9 @@ class PmReadsTest(unittest.TestCase):
62
71
  raw = {"packs": [{"product_id": "p1", "pack_label": "v1", "costing": {"make": 50}}]}
63
72
  with mock.patch.object(api_client, "get_json", return_value=raw):
64
73
  out = api_client.designer_get_costing("st1")
65
- self.assertEqual(out["packs"], [{"product_id": "p1", "pack": "v1", "costing": {"make": 50}}])
74
+ self.assertEqual(
75
+ out["packs"], [{"product_id": "p1", "pack": "v1", "costing": {"make": 50}}]
76
+ )
66
77
 
67
78
 
68
79
  class ExamFixesTest(unittest.TestCase):
@@ -1 +0,0 @@
1
- __version__ = "0.2.13"
File without changes
File without changes
File without changes