@mkterswingman/5mghost-twinkler 0.1.6 → 0.1.11

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.
package/README.md CHANGED
@@ -17,6 +17,10 @@ was unavailable during install; normal AI workflows should start with
17
17
  Auth defaults to browser OAuth via `twinkler login`. PAT login is an advanced
18
18
  fallback with `twinkler login --pat-stdin`.
19
19
 
20
+ `GET /api/v1/search/advanced` intentionally returns 501 and is not part of the
21
+ public-ready supported surface. Use `/api/v1/search`, rankings, channel, or game
22
+ routes instead.
23
+
20
24
  Watch jobs are remembered locally in `~/.mkterswingman/twinkler/jobs.json` so AI
21
25
  sessions can recover active and recent jobs without making users remember job
22
26
  IDs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mkterswingman/5mghost-twinkler",
3
- "version": "0.1.6",
3
+ "version": "0.1.11",
4
4
  "description": "Lightweight AI helper for the 5mghost Twinkler API",
5
5
  "type": "module",
6
6
  "engines": {
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "repository": {
13
13
  "type": "git",
14
- "url": "https://github.com/5mghost/mcp_projects.git",
14
+ "url": "https://github.com/mkterswingman/mcp_projects.git",
15
15
  "directory": "5mghost-twinkler/client"
16
16
  },
17
17
  "bin": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: use-5mghost-twinkler
3
3
  preamble-tier: 3
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  description: |
6
6
  Use when the user wants Twitch streamer, game, ranking, stream-session, CCV,
7
7
  chat, live-watch, or SullyGnome data through the mkterswingman Twinkler API.
@@ -39,6 +39,58 @@ Read the JSON.
39
39
  Do not use time-based latest-version caches. The preflight checks npm latest on
40
40
  every invocation.
41
41
 
42
+ ## Ambiguity Gate
43
+
44
+ Before choosing an endpoint, decide whether the user's wording identifies all
45
+ result-shaping inputs. Do not guess when a different interpretation would change
46
+ the answer.
47
+
48
+ Ask a short clarification before calling heavy endpoints when any of these are
49
+ missing and not inferable from context:
50
+
51
+ - Target type: channel, game, broad ranking, team/community, stream session, or
52
+ live watch job.
53
+ - Metric: average CCV / average viewers, peak viewers, watched hours, stream
54
+ hours, followers, growth, chat, live CCV, or per-session game splits.
55
+ - Time window: `7/14/30/90/180/365` days or a named month/year.
56
+ - Filters: language, mature content, minimum CCV, minimum stream time, region or
57
+ game/category constraints.
58
+ - Ordering: `watched`, `avgviewers`, `peakviewers`, `streamtime`,
59
+ `mostfollowers`, `followergrowth`, or "latest streams".
60
+
61
+ Use these defaults only for low-risk exploratory asks, and say them briefly in
62
+ the answer: `days=30`, `language=any`, `mature=include`, `page_size=25`.
63
+ Do not default the sort order when the user's wording says only "data",
64
+ "ranking", "creator list", or "主播数据"; ask whether they want watched hours,
65
+ average viewers/CCV, peak viewers, stream time, or followers.
66
+
67
+ Lightweight probes are allowed before asking:
68
+
69
+ - Run `/api/v1/search?q=<term>` when a name could be a game or channel, or when
70
+ a game title may have multiple SullyGnome IDs.
71
+ - Run `/api/v1/meta/languages`, `/api/v1/meta/days-ranges`, or
72
+ `/api/v1/meta/sort-options` when you need exact accepted enum values.
73
+ - If `/search` returns multiple plausible candidates, show the candidate names,
74
+ numeric ids, and `siteurl` values; ask the user to pick one. Do not silently
75
+ choose the first row.
76
+
77
+ Examples:
78
+
79
+ - User: "帮我找找 Delta Force 的主播数据"
80
+ - First run search for `Delta Force`.
81
+ - If multiple games match, show candidates and ask which game.
82
+ - Also ask the missing result shape: time window, language, and sort metric
83
+ (watched hours vs avg CCV vs peak viewers vs stream time).
84
+ - User: "查 ibai 30 天 avg ccv"
85
+ - This is specific enough: call `/channel/ibai/summary?days=30` and report the
86
+ summary-card Average viewers.
87
+ - User: "找英语区近 30 天播过 Tarkov、平均 CCV 1000+ 的主播"
88
+ - Search/resolve the game, use `/game/{id}/channels`, start with
89
+ `sort_by=watched`, then filter rows locally by language and avg viewers.
90
+
91
+ When asking, keep it to at most three user-facing questions in one message. For
92
+ example: "你要哪个 Delta Force 版本?时间窗用 30 天还是 365 天?排序看观看时长还是平均 CCV?"
93
+
42
94
  ## Data Request Layer
43
95
 
44
96
  Use `twinkler call` for one-off hosted API requests:
@@ -46,10 +98,16 @@ Use `twinkler call` for one-off hosted API requests:
46
98
  ```bash
47
99
  twinkler call GET /api/v1/channel/ibai/summary --query days=30
48
100
  twinkler call GET /api/v1/channel/ibai/streams --query days=30 --query sort_by=avgviewers --query page=1 --query page_size=25
49
- twinkler call GET /api/v1/game/Delta%20Force/channels --query days=365 --query sort_by=watched --query page=1 --query page_size=50
101
+ twinkler call GET /api/v1/search --query 'q=Delta Force'
102
+ twinkler call GET /api/v1/game/<selected_sullygnome_game_id>/channels --query days=365 --query sort_by=watched --query page=1 --query page_size=50
50
103
  twinkler call GET /api/v1/rankings/channels --query sort_by=mostfollowers --query days=30 --query page=1 --query page_size=25
51
104
  ```
52
105
 
106
+ Use the numeric `value` from the chosen `/search` game candidate as
107
+ `<selected_sullygnome_game_id>`. Do not use Twitch Helix game ids or URL-encoded
108
+ game names in `/game/{game_identifier}` once search has shown multiple
109
+ candidates.
110
+
53
111
  Pick the smallest API that answers the question:
54
112
 
55
113
  - Channel profile/current history: `/channel/{name}/summary`.
@@ -61,6 +119,8 @@ Pick the smallest API that answers the question:
61
119
  - Broad Twitch leaderboards: `/rankings/channels`, `/rankings/games`,
62
120
  `/rankings/teams`.
63
121
  - Live CCV/chat sampling: create a watch job instead of polling summary pages.
122
+ - Do not use `/search/advanced`; it intentionally returns 501 and is not part
123
+ of the public-ready supported surface.
64
124
 
65
125
  ## Watch Job Layer
66
126