@josephyan/qingflow-app-user-mcp 0.2.0-beta.33 → 0.2.0-beta.35

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
@@ -3,13 +3,13 @@
3
3
  Install:
4
4
 
5
5
  ```bash
6
- npm install @josephyan/qingflow-app-user-mcp@0.2.0-beta.33
6
+ npm install @josephyan/qingflow-app-user-mcp@0.2.0-beta.35
7
7
  ```
8
8
 
9
9
  Run:
10
10
 
11
11
  ```bash
12
- npx -y -p @josephyan/qingflow-app-user-mcp@0.2.0-beta.33 qingflow-app-user-mcp
12
+ npx -y -p @josephyan/qingflow-app-user-mcp@0.2.0-beta.35 qingflow-app-user-mcp
13
13
  ```
14
14
 
15
15
  Environment:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@josephyan/qingflow-app-user-mcp",
3
- "version": "0.2.0-beta.33",
3
+ "version": "0.2.0-beta.35",
4
4
  "description": "Operational end-user MCP for Qingflow records, tasks, comments, and directory workflows.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qingflow-mcp"
7
- version = "0.2.0b33"
7
+ version = "0.2.0b35"
8
8
  description = "User-authenticated MCP server for Qingflow"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -43,6 +43,12 @@ Route to exactly one of these specialized paths:
43
43
  - if the task can stay read-only, do not write or act
44
44
  - if the current MCP capability is unsupported, the workflow is awkward, or the user's need still cannot be satisfied after reasonable use, summarize the gap, ask whether to submit feedback, and call `feedback_submit` only after explicit user confirmation
45
45
 
46
+ ## Shared Helper
47
+
48
+ - `feedback_submit` is a cross-cutting helper for product feedback submission
49
+ - It does not require Qingflow login or workspace selection
50
+ - Use it only after the user explicitly confirms they want to submit feedback
51
+
46
52
  ## Resources
47
53
 
48
54
  - Record CRUD: [$qingflow-record-crud](/Users/yanqidong/Documents/qingflow-next/.codex/skills/qingflow-record-crud/SKILL.md)
@@ -140,6 +140,12 @@ Top-level arguments:
140
140
  - Otherwise → `初步观察`
141
141
  - `rows_truncated=true` → 用 `前 N 个分组`, 不用 `全部`/`所有`
142
142
 
143
+ ## Feedback Escalation
144
+
145
+ - If the desired analysis still cannot be completed because of missing capability, unsupported analysis shape, or an obviously awkward workflow after reasonable attempts, summarize the exact gap.
146
+ - Ask whether the user wants you to submit product feedback.
147
+ - Only after explicit user confirmation, call `feedback_submit`.
148
+
143
149
  ## Resources
144
150
 
145
151
  - DSL templates: [references/dsl-templates.md](references/dsl-templates.md)
@@ -126,6 +126,12 @@ The DSL is clause-shaped like SQL, but it is **not raw SQL text**.
126
126
  - Prefer canonical schema titles and aliases in your final wording
127
127
  - If only part of the requested work is completed, explicitly disclose which parts are done and which are not
128
128
 
129
+ ## Feedback Escalation
130
+
131
+ - If record CRUD still cannot satisfy the request because of missing capability, unsupported field behavior, or an obviously awkward workflow after reasonable attempts, summarize the exact blocker.
132
+ - Ask whether the user wants you to submit product feedback.
133
+ - Only after explicit user confirmation, call `feedback_submit`.
134
+
129
135
  ## Resources
130
136
 
131
137
  - Record operation patterns: [references/record-patterns.md](references/record-patterns.md)
@@ -98,6 +98,12 @@ Use exactly one of these default paths:
98
98
  - Avoid actions on ambiguous tasks or records
99
99
  - Summarize the final action and the exact `app_key / record_id / workflow_node_id`
100
100
 
101
+ ## Feedback Escalation
102
+
103
+ - If task capabilities, associated report detail, workflow log visibility, or action support still cannot satisfy the user's goal after reasonable use of this skill, summarize the exact gap in plain language.
104
+ - Ask whether the user wants you to submit product feedback.
105
+ - Only after explicit user confirmation, call `feedback_submit`.
106
+
101
107
  ## Response Interpretation
102
108
 
103
109
  - `task_list` returns normalized todo rows and is the only default discovery path
@@ -2,4 +2,4 @@ from __future__ import annotations
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.2.0b33"
5
+ __version__ = "0.2.0b35"
@@ -36,6 +36,14 @@ def build_server() -> FastMCP:
36
36
  Use `auth_login` first, then `workspace_list` and `workspace_select`.
37
37
  All resource tools operate with the logged-in user's Qingflow permissions.
38
38
 
39
+ ## Shared Helper
40
+
41
+ `feedback_submit` is always available as a cross-cutting helper.
42
+
43
+ - Use it when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use.
44
+ - It does not require Qingflow login or workspace selection.
45
+ - Call it only after the user explicitly confirms submission.
46
+
39
47
  ## App Discovery
40
48
 
41
49
  If `app_key` is unknown, use `app_list` or `app_search` first.
@@ -17,6 +17,7 @@ def build_builder_server() -> FastMCP:
17
17
  "Qingflow App Builder MCP",
18
18
  instructions=(
19
19
  "Use this server for AI-native Qingflow builder workflows. "
20
+ "`feedback_submit` is always available as a cross-cutting helper when the current capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use; it does not require Qingflow login or workspace selection, and it should be called only after explicit user confirmation. "
20
21
  "Follow the resource path resolve -> summary read -> plan -> apply -> attach -> publish_verify. "
21
22
  "Use builder_tool_contract when you need a machine-readable contract, aliases, allowed enums, or a minimal valid example for a public builder tool. "
22
23
  "If creating a new package may be appropriate, ask the user to confirm package creation before calling package_create; otherwise use package_resolve/package_list and app_resolve to locate resources, "
@@ -28,6 +28,14 @@ def build_user_server() -> FastMCP:
28
28
 
29
29
  If `app_key` is unknown, use `app_list` or `app_search` first.
30
30
 
31
+ ## Shared Helper
32
+
33
+ `feedback_submit` is always available as a cross-cutting helper.
34
+
35
+ - Use it when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use.
36
+ - It does not require Qingflow login or workspace selection.
37
+ - Call it only after the user explicitly confirms submission.
38
+
31
39
  ## Schema-First Rule
32
40
 
33
41
  Always call `record_schema_get` before `record_list`, `record_get`, `record_write`, or `record_analyze`.
@@ -46,6 +46,12 @@ class FeedbackTools:
46
46
  workflow_node_id: str | int | None = None,
47
47
  note: str | None = None,
48
48
  ) -> JSONObject:
49
+ """Submit product feedback to the Qingflow MCP team.
50
+
51
+ Use this when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need
52
+ after reasonable attempts. This helper writes through the internal q-source feedback intake, does not
53
+ require Qingflow login or workspace selection, and should be called only after explicit user confirmation.
54
+ """
49
55
  return self.feedback_submit(
50
56
  category=category,
51
57
  title=title,