@mhosaic/feedback-cli 0.48.0 → 0.49.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mhosaic/feedback-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "CLI to install @mhosaic/feedback into a host app, verify the integration, and drop a guided Claude Code skill (/integrate-feedback) into ~/.claude/skills.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -29,20 +29,30 @@ Load via `ToolSearch`: `project_list`, `project_get_info`,
|
|
|
29
29
|
answers `insufficient_level`).
|
|
30
30
|
- The project has « Saisie au nom des clients (MCP) » on:
|
|
31
31
|
`project_get_info` returns `allow_proxy_recording: true`. When it is
|
|
32
|
-
false, stop:
|
|
33
|
-
around it with `feedback_create`.
|
|
32
|
+
false, stop: a project manager turns it on in the project settings.
|
|
33
|
+
Never work around it with `feedback_create`. The people lookup is
|
|
34
|
+
refused too while it is off.
|
|
35
|
+
- The project's widget can show « Noté par l'équipe Mhosaic »:
|
|
36
|
+
`project_get_info` returns `proxy_recording_blocker: null`. Otherwise
|
|
37
|
+
it holds the reason (for example an environment still serving a widget
|
|
38
|
+
older than 0.53.0), and every row in a person's name would be refused:
|
|
39
|
+
stop and show that reason. The operator either deploys 0.53.0 or later
|
|
40
|
+
to the project first (admin → Versions → Déployer vers…) or chooses to
|
|
41
|
+
file the whole batch "as me".
|
|
34
42
|
- Notes are available: a file path, pasted text, or a transcript.
|
|
35
43
|
|
|
36
44
|
## Steps
|
|
37
45
|
|
|
38
46
|
1. **Project.** `project_list` / `project_get_info` to pick the project,
|
|
39
|
-
check `allow_proxy_recording
|
|
47
|
+
check `allow_proxy_recording` and `proxy_recording_blocker`, and note
|
|
48
|
+
`peer_validation` (step 4).
|
|
40
49
|
2. **People.** For each speaker in the notes,
|
|
41
50
|
`project_people_list(project_slug, query=<name>)`. Prefer rows with
|
|
42
51
|
`has_widget: true`. If a name matches several people or none, put it in
|
|
43
52
|
the "to confirm" list of step 5; never guess. Note each person's
|
|
44
|
-
`widget_version
|
|
45
|
-
|
|
53
|
+
`widget_version`. On a project whose host app bundles the widget, the
|
|
54
|
+
platform also refuses anyone whose own widget is unknown or older than
|
|
55
|
+
0.53.0; plan those items "as me" and warn at the gate.
|
|
46
56
|
3. **Items.** Extract each piece of feedback: speaker, what they said (keep
|
|
47
57
|
their words and their language; light cleanup only, it goes out under
|
|
48
58
|
their name), type (`bug` / `feature` / `question` / `praise` / `typo`),
|
|
@@ -66,12 +76,14 @@ Load via `ToolSearch`: `project_list`, `project_get_info`,
|
|
|
66
76
|
A person can reply on or validate a report only when it is theirs
|
|
67
77
|
(its `submitter.person_id` is their `person_id`), or any report of the
|
|
68
78
|
project when `peer_validation` is true. Otherwise the tools answer
|
|
69
|
-
"Report not found".
|
|
79
|
+
"Report not found". A report with no `submitter` (filed by the team or
|
|
80
|
+
by a server) takes no reply or validation in anyone's name: plan a
|
|
81
|
+
team note on it.
|
|
70
82
|
|
|
71
83
|
- Open report that says the same thing and is theirs (or
|
|
72
84
|
`peer_validation`): plan a reply in their name on it.
|
|
73
|
-
- Same thing, but someone else's report and `peer_validation` false
|
|
74
|
-
plan a team note on it (an internal `feedback_comment`, step 6), and
|
|
85
|
+
- Same thing, but someone else's report and `peer_validation` false,
|
|
86
|
+
or a report with no submitter: plan a team note on it (an internal `feedback_comment`, step 6), and
|
|
75
87
|
flag it "not theirs: team note, not in their widget". The operator may
|
|
76
88
|
switch it to a new report in their name at the gate.
|
|
77
89
|
- A verdict: `feedback_get` the report. A validation needs the same
|
|
@@ -84,17 +96,18 @@ Load via `ToolSearch`: `project_list`, `project_get_info`,
|
|
|
84
96
|
| --- | ------ | ------ | ------ | ---- | ----------- | -------- |
|
|
85
97
|
|
|
86
98
|
Action is one of: new report, reply on #N, validated #N, reopened #N
|
|
87
|
-
(with their reason), team note on #N. Warnings: "widget
|
|
88
|
-
|
|
99
|
+
(with their reason), team note on #N. Warnings: "widget version unknown: « Noté
|
|
100
|
+
par » shows once they open an up-to-date widget", "known only by email, won't
|
|
89
101
|
appear in their widget" (`has_widget: false`), "name matches several
|
|
90
|
-
people", "not awaiting validation"
|
|
102
|
+
people", "not awaiting validation", "widget too old for « Noté par »:
|
|
103
|
+
filed as me". List the items you are NOT recording
|
|
91
104
|
and why. Proceed only on the operator's explicit approval of this table
|
|
92
105
|
(they may edit rows first).
|
|
93
106
|
|
|
94
107
|
6. **Execute.** Generate one batch UUID (`uuidgen`). Before any write,
|
|
95
108
|
save the approved table with it, as the operator approved it, to
|
|
96
109
|
`meeting-batch-<first 8 characters of the UUID>.md` next to the notes
|
|
97
|
-
file: the UUID, then one numbered row per action with every argument
|
|
110
|
+
file (in the current directory when the notes were pasted): the UUID, then one numbered row per action with every argument
|
|
98
111
|
below (screenshots as file paths: upload ids are minted per run). That
|
|
99
112
|
file is the batch; `<n>` below is its row number and never changes.
|
|
100
113
|
|