@opentabs-dev/mcp-server 0.0.67 → 0.0.68
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/dist/browser-tools/extension-get-logs.d.ts +2 -2
- package/dist/browser-tools/get-console-logs.d.ts +2 -2
- package/package.json +1 -1
- package/dist/browser-tool-names.d.ts +0 -14
- package/dist/browser-tool-names.d.ts.map +0 -1
- package/dist/browser-tool-names.js +0 -55
- package/dist/browser-tool-names.js.map +0 -1
- package/dist/discovery-legacy.d.ts +0 -32
- package/dist/discovery-legacy.d.ts.map +0 -1
- package/dist/discovery-legacy.js +0 -415
- package/dist/discovery-legacy.js.map +0 -1
- package/dist/manifest-schema.d.ts +0 -14
- package/dist/manifest-schema.d.ts.map +0 -1
- package/dist/manifest-schema.js +0 -51
- package/dist/manifest-schema.js.map +0 -1
- package/dist/mcp-prompts.d.ts +0 -71
- package/dist/mcp-prompts.d.ts.map +0 -1
- package/dist/mcp-prompts.js +0 -248
- package/dist/mcp-prompts.js.map +0 -1
- package/dist/mcp-resources.d.ts +0 -53
- package/dist/mcp-resources.d.ts.map +0 -1
- package/dist/mcp-resources.js +0 -139
- package/dist/mcp-resources.js.map +0 -1
- package/dist/permissions.d.ts +0 -59
- package/dist/permissions.d.ts.map +0 -1
- package/dist/permissions.js +0 -144
- package/dist/permissions.js.map +0 -1
- package/dist/prompts/audit-ai-docs.d.ts +0 -6
- package/dist/prompts/audit-ai-docs.d.ts.map +0 -1
- package/dist/prompts/audit-ai-docs.js +0 -155
- package/dist/prompts/audit-ai-docs.js.map +0 -1
- package/dist/prompts/build-plugin.d.ts +0 -3
- package/dist/prompts/build-plugin.d.ts.map +0 -1
- package/dist/prompts/build-plugin.js +0 -455
- package/dist/prompts/build-plugin.js.map +0 -1
- package/dist/prompts/contribute-learnings.d.ts +0 -12
- package/dist/prompts/contribute-learnings.d.ts.map +0 -1
- package/dist/prompts/contribute-learnings.js +0 -107
- package/dist/prompts/contribute-learnings.js.map +0 -1
- package/dist/prompts/plugin-icon.d.ts +0 -5
- package/dist/prompts/plugin-icon.d.ts.map +0 -1
- package/dist/prompts/plugin-icon.js +0 -147
- package/dist/prompts/plugin-icon.js.map +0 -1
- package/dist/prompts/setup-plugin.d.ts +0 -3
- package/dist/prompts/setup-plugin.d.ts.map +0 -1
- package/dist/prompts/setup-plugin.js +0 -197
- package/dist/prompts/setup-plugin.js.map +0 -1
- package/dist/prompts/troubleshoot.d.ts +0 -3
- package/dist/prompts/troubleshoot.d.ts.map +0 -1
- package/dist/prompts/troubleshoot.js +0 -191
- package/dist/prompts/troubleshoot.js.map +0 -1
- package/dist/resources/browser-tools.d.ts +0 -3
- package/dist/resources/browser-tools.d.ts.map +0 -1
- package/dist/resources/browser-tools.js +0 -100
- package/dist/resources/browser-tools.js.map +0 -1
- package/dist/resources/cli.d.ts +0 -3
- package/dist/resources/cli.d.ts.map +0 -1
- package/dist/resources/cli.js +0 -217
- package/dist/resources/cli.js.map +0 -1
- package/dist/resources/plugin-development.d.ts +0 -3
- package/dist/resources/plugin-development.d.ts.map +0 -1
- package/dist/resources/plugin-development.js +0 -596
- package/dist/resources/plugin-development.js.map +0 -1
- package/dist/resources/quick-start.d.ts +0 -3
- package/dist/resources/quick-start.d.ts.map +0 -1
- package/dist/resources/quick-start.js +0 -210
- package/dist/resources/quick-start.js.map +0 -1
- package/dist/resources/sdk-api.d.ts +0 -3
- package/dist/resources/sdk-api.d.ts.map +0 -1
- package/dist/resources/sdk-api.js +0 -199
- package/dist/resources/sdk-api.js.map +0 -1
- package/dist/resources/self-improvement.d.ts +0 -10
- package/dist/resources/self-improvement.d.ts.map +0 -1
- package/dist/resources/self-improvement.js +0 -91
- package/dist/resources/self-improvement.js.map +0 -1
- package/dist/resources/status.d.ts +0 -5
- package/dist/resources/status.d.ts.map +0 -1
- package/dist/resources/status.js +0 -27
- package/dist/resources/status.js.map +0 -1
- package/dist/resources/troubleshooting.d.ts +0 -3
- package/dist/resources/troubleshooting.d.ts.map +0 -1
- package/dist/resources/troubleshooting.js +0 -167
- package/dist/resources/troubleshooting.js.map +0 -1
- package/dist/sanitize-tool-output.d.ts +0 -20
- package/dist/sanitize-tool-output.d.ts.map +0 -1
- package/dist/sanitize-tool-output.js +0 -52
- package/dist/sanitize-tool-output.js.map +0 -1
- package/dist/skip-confirmation.d.ts +0 -15
- package/dist/skip-confirmation.d.ts.map +0 -1
- package/dist/skip-confirmation.js +0 -16
- package/dist/skip-confirmation.js.map +0 -1
- package/dist/skip-permissions.d.ts +0 -11
- package/dist/skip-permissions.d.ts.map +0 -1
- package/dist/skip-permissions.js +0 -12
- package/dist/skip-permissions.js.map +0 -1
- package/dist/skip-sanitization.d.ts +0 -17
- package/dist/skip-sanitization.d.ts.map +0 -1
- package/dist/skip-sanitization.js +0 -18
- package/dist/skip-sanitization.js.map +0 -1
- package/dist/skip-verification.d.ts +0 -11
- package/dist/skip-verification.d.ts.map +0 -1
- package/dist/skip-verification.js +0 -12
- package/dist/skip-verification.js.map +0 -1
- package/dist/verify-plugin.d.ts +0 -53
- package/dist/verify-plugin.d.ts.map +0 -1
- package/dist/verify-plugin.js +0 -123
- package/dist/verify-plugin.js.map +0 -1
package/dist/permissions.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser tool permission evaluation engine.
|
|
3
|
-
*
|
|
4
|
-
* Classifies browser tools into three security tiers (observe, interact,
|
|
5
|
-
* sensitive) and evaluates whether a tool call should be auto-allowed,
|
|
6
|
-
* require human confirmation, or be denied outright.
|
|
7
|
-
*
|
|
8
|
-
* The evaluation order (first match wins):
|
|
9
|
-
* 1. domainToolPolicy[domain][tool] — per-domain per-tool override
|
|
10
|
-
* 2. sensitiveDomains match → 'ask'
|
|
11
|
-
* 3. toolPolicy[tool] — global per-tool override
|
|
12
|
-
* 4. Tool tier default (observe=allow, interact=ask, sensitive=ask)
|
|
13
|
-
* 5. trustedDomains match → override 'ask' to 'allow' (does NOT override 'deny')
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Browser tool → security tier mapping.
|
|
17
|
-
*
|
|
18
|
-
* - observe: read-only tools that list or inspect without accessing sensitive data
|
|
19
|
-
* - interact: tools that modify page state (click, type, navigate, screenshot)
|
|
20
|
-
* - sensitive: tools that access credentials, execute arbitrary code, or modify auth state
|
|
21
|
-
*/
|
|
22
|
-
const TOOL_TIERS = {
|
|
23
|
-
// Observe tier — read-only, low risk
|
|
24
|
-
browser_list_tabs: 'observe',
|
|
25
|
-
browser_get_tab_info: 'observe',
|
|
26
|
-
browser_query_elements: 'observe',
|
|
27
|
-
browser_wait_for_element: 'observe',
|
|
28
|
-
browser_get_tab_content: 'observe',
|
|
29
|
-
browser_get_console_logs: 'observe',
|
|
30
|
-
browser_list_resources: 'observe',
|
|
31
|
-
browser_get_resource_content: 'observe',
|
|
32
|
-
browser_disable_network_capture: 'observe',
|
|
33
|
-
extension_get_state: 'observe',
|
|
34
|
-
extension_get_logs: 'observe',
|
|
35
|
-
extension_get_side_panel: 'observe',
|
|
36
|
-
extension_check_adapter: 'observe',
|
|
37
|
-
plugin_list_tabs: 'observe',
|
|
38
|
-
// Interact tier — modifies page state or captures content
|
|
39
|
-
browser_clear_console_logs: 'interact',
|
|
40
|
-
browser_click_element: 'interact',
|
|
41
|
-
browser_type_text: 'interact',
|
|
42
|
-
browser_select_option: 'interact',
|
|
43
|
-
browser_hover_element: 'interact',
|
|
44
|
-
browser_press_key: 'interact',
|
|
45
|
-
browser_scroll: 'interact',
|
|
46
|
-
browser_screenshot_tab: 'interact',
|
|
47
|
-
browser_navigate_tab: 'interact',
|
|
48
|
-
browser_open_tab: 'interact',
|
|
49
|
-
browser_close_tab: 'interact',
|
|
50
|
-
browser_focus_tab: 'interact',
|
|
51
|
-
browser_handle_dialog: 'interact',
|
|
52
|
-
browser_get_page_html: 'interact',
|
|
53
|
-
browser_enable_network_capture: 'interact',
|
|
54
|
-
browser_get_network_requests: 'interact',
|
|
55
|
-
browser_get_websocket_frames: 'interact',
|
|
56
|
-
browser_export_har: 'interact',
|
|
57
|
-
extension_force_reconnect: 'interact',
|
|
58
|
-
extension_reload: 'interact',
|
|
59
|
-
plugin_analyze_site: 'interact',
|
|
60
|
-
// Sensitive tier — access credentials, execute arbitrary code, modify auth
|
|
61
|
-
browser_execute_script: 'sensitive',
|
|
62
|
-
browser_get_cookies: 'sensitive',
|
|
63
|
-
browser_set_cookie: 'sensitive',
|
|
64
|
-
browser_delete_cookies: 'sensitive',
|
|
65
|
-
browser_get_storage: 'sensitive',
|
|
66
|
-
};
|
|
67
|
-
/** Default permission for each tier */
|
|
68
|
-
const TIER_DEFAULTS = {
|
|
69
|
-
observe: 'allow',
|
|
70
|
-
interact: 'ask',
|
|
71
|
-
sensitive: 'ask',
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Match a hostname against a domain pattern.
|
|
75
|
-
*
|
|
76
|
-
* Supports:
|
|
77
|
-
* - Exact match: 'example.com' matches 'example.com'
|
|
78
|
-
* - Wildcard prefix: '*.example.com' matches 'sub.example.com' and 'a.b.example.com'
|
|
79
|
-
* but NOT 'example.com' itself
|
|
80
|
-
*/
|
|
81
|
-
const matchDomain = (hostname, pattern) => {
|
|
82
|
-
if (pattern === hostname)
|
|
83
|
-
return true;
|
|
84
|
-
if (pattern.startsWith('*.')) {
|
|
85
|
-
const suffix = pattern.slice(1); // '.example.com'
|
|
86
|
-
return hostname.endsWith(suffix) && hostname.length > suffix.length;
|
|
87
|
-
}
|
|
88
|
-
return false;
|
|
89
|
-
};
|
|
90
|
-
/** Check if a hostname matches any pattern in a domain list */
|
|
91
|
-
const matchesDomainList = (hostname, patterns) => patterns.some(p => matchDomain(hostname, p));
|
|
92
|
-
/**
|
|
93
|
-
* Get the security tier for a browser tool by looking up the TOOL_TIERS map.
|
|
94
|
-
* Tools not in the map default to 'interact' (safe middle ground).
|
|
95
|
-
*
|
|
96
|
-
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
97
|
-
* @returns The tool's security tier: 'observe', 'interact', or 'sensitive'
|
|
98
|
-
*/
|
|
99
|
-
export const getToolTier = (toolName) => TOOL_TIERS[toolName] ?? 'interact';
|
|
100
|
-
/**
|
|
101
|
-
* Evaluate the permission for a browser tool call.
|
|
102
|
-
*
|
|
103
|
-
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
104
|
-
* @param domain - Target domain hostname (e.g., 'mail.google.com'), or null for tools with no target
|
|
105
|
-
* @param state - Server state (for skipPermissions flag and permissions config)
|
|
106
|
-
* @returns 'allow', 'ask', or 'deny'
|
|
107
|
-
*/
|
|
108
|
-
export const evaluatePermission = (toolName, domain, state) => {
|
|
109
|
-
// Bypass: if skipPermissions is active, all tools are auto-allowed
|
|
110
|
-
if (state.skipPermissions)
|
|
111
|
-
return 'allow';
|
|
112
|
-
const permissions = state.permissions;
|
|
113
|
-
// 1. Per-domain per-tool override (most specific)
|
|
114
|
-
if (domain) {
|
|
115
|
-
for (const [pattern, toolPolicies] of Object.entries(permissions.domainToolPolicy)) {
|
|
116
|
-
if (matchDomain(domain, pattern) && toolName in toolPolicies) {
|
|
117
|
-
const policy = toolPolicies[toolName];
|
|
118
|
-
if (policy)
|
|
119
|
-
return policy;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// 2. Sensitive domain check: if the domain matches, force 'ask'
|
|
124
|
-
if (domain && matchesDomainList(domain, permissions.sensitiveDomains)) {
|
|
125
|
-
return 'ask';
|
|
126
|
-
}
|
|
127
|
-
// 3. Global per-tool override
|
|
128
|
-
if (toolName in permissions.toolPolicy) {
|
|
129
|
-
const policy = permissions.toolPolicy[toolName];
|
|
130
|
-
if (policy)
|
|
131
|
-
return policy;
|
|
132
|
-
}
|
|
133
|
-
// 4. Tool tier default
|
|
134
|
-
const tier = getToolTier(toolName);
|
|
135
|
-
const tierDefault = TIER_DEFAULTS[tier];
|
|
136
|
-
// 5. Trusted domain override: if tier default is 'ask' and domain is trusted,
|
|
137
|
-
// upgrade to 'allow'. Does NOT override 'deny'.
|
|
138
|
-
if (tierDefault === 'ask' && domain && matchesDomainList(domain, permissions.trustedDomains)) {
|
|
139
|
-
return 'allow';
|
|
140
|
-
}
|
|
141
|
-
return tierDefault;
|
|
142
|
-
};
|
|
143
|
-
export { TOOL_TIERS, TIER_DEFAULTS, matchDomain, matchesDomainList };
|
|
144
|
-
//# sourceMappingURL=permissions.js.map
|
package/dist/permissions.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* audit_ai_docs prompt — workflow for auditing and improving the AI-facing
|
|
3
|
-
* documentation served by the MCP server (instructions, resources, prompts).
|
|
4
|
-
*/
|
|
5
|
-
export declare const auditAiDocsPromptText: () => string;
|
|
6
|
-
//# sourceMappingURL=audit-ai-docs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-ai-docs.d.ts","sourceRoot":"","sources":["../../src/prompts/audit-ai-docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,QAC5B,MAqJ4E,CAAC"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* audit_ai_docs prompt — workflow for auditing and improving the AI-facing
|
|
3
|
-
* documentation served by the MCP server (instructions, resources, prompts).
|
|
4
|
-
*/
|
|
5
|
-
export const auditAiDocsPromptText = () => `Audit and improve the AI-facing documentation that the OpenTabs MCP server serves to connected AI clients.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Core Philosophy
|
|
10
|
-
|
|
11
|
-
OpenTabs is a platform for AI clients. The MCP server is the primary documentation layer for AI; the docs/ site is the secondary layer for humans. Three MCP mechanisms serve AI clients:
|
|
12
|
-
|
|
13
|
-
| Mechanism | Delivery | Purpose |
|
|
14
|
-
|---|---|---|
|
|
15
|
-
| **Instructions** | Push (initialize) | System prompt. Concise rules, security, capability overview. Always present. |
|
|
16
|
-
| **Resources** | Pull (resources/read) | Detailed guides, API references, live state. Fetched on demand. |
|
|
17
|
-
| **Prompts** | Pull (prompts/get) | Task-oriented workflows invoked by the user. |
|
|
18
|
-
|
|
19
|
-
**Placement rules:** Instructions are expensive (always in context — keep under 120 lines / 6000 chars). Resources are cheap (fetched when needed — can be long). Prompts are workflows (user-triggered — include specific tool calls).
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Phase 1: Audit What Exists
|
|
24
|
-
|
|
25
|
-
Read the current AI-facing documentation layer:
|
|
26
|
-
|
|
27
|
-
1. **Instructions** — read \`platform/mcp-server/src/mcp-setup.ts\`, find the \`SERVER_INSTRUCTIONS\` constant. Assess: concise? covers security? mentions resources and prompts? under 120-line budget?
|
|
28
|
-
|
|
29
|
-
2. **Resources** — read \`platform/mcp-server/src/mcp-resources.ts\` and the files in \`platform/mcp-server/src/resources/\`. List every resource URI, check if content is populated.
|
|
30
|
-
|
|
31
|
-
3. **Prompts** — read \`platform/mcp-server/src/mcp-prompts.ts\` and the files in \`platform/mcp-server/src/prompts/\`. List every prompt, its arguments, and assess quality.
|
|
32
|
-
|
|
33
|
-
4. **Tool descriptions** — sample 5-10 browser tools from \`platform/mcp-server/src/browser-tools/\`. Are descriptions informative enough for AI?
|
|
34
|
-
|
|
35
|
-
5. **Capabilities** — check the \`capabilities\` object in \`createMcpServer\`. What's declared? What's missing?
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Phase 2: Verify Accuracy Against Source Code
|
|
40
|
-
|
|
41
|
-
Every fact in the AI docs must match the actual codebase. Cross-reference:
|
|
42
|
-
|
|
43
|
-
| AI doc claim | Verify against |
|
|
44
|
-
|---|---|
|
|
45
|
-
| CLI command formats | \`platform/cli/src/commands/*.ts\` |
|
|
46
|
-
| Config key formats | \`platform/cli/src/commands/config.ts\` (SUPPORTED_KEYS) |
|
|
47
|
-
| SDK utility functions | \`platform/plugin-sdk/src/sdk.ts\` |
|
|
48
|
-
| ToolError factories | \`platform/plugin-sdk/src/errors.ts\` |
|
|
49
|
-
| Lifecycle hooks | \`platform/plugin-sdk/src/plugin.ts\` |
|
|
50
|
-
| WebSocket methods | \`platform/mcp-server/src/extension-protocol.ts\` |
|
|
51
|
-
| Health endpoint fields | \`platform/mcp-server/src/http-routes.ts\` |
|
|
52
|
-
| Permission model | \`platform/mcp-server/src/state.ts\` |
|
|
53
|
-
| Browser tool count | \`platform/mcp-server/src/browser-tools/index.ts\` |
|
|
54
|
-
| ToolDefinition interface | \`platform/plugin-sdk/src/index.ts\` |
|
|
55
|
-
| PluginPermissionConfig | \`platform/shared/src/index.ts\` |
|
|
56
|
-
|
|
57
|
-
**Common drift patterns:**
|
|
58
|
-
- Permission terminology (enabled/disabled → off/ask/auto)
|
|
59
|
-
- Config key formats (tool.X → tool-permission.X)
|
|
60
|
-
- Health endpoint renames (confirmationBypassed → skipPermissions)
|
|
61
|
-
- WebSocket method renames (setToolEnabled → setToolPermission)
|
|
62
|
-
- New SDK utilities not documented
|
|
63
|
-
- New ToolDefinition fields (summary, group) missing
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Phase 3: Identify Gaps
|
|
68
|
-
|
|
69
|
-
For each actor type, ask: if an AI client connected now and the user asked X, would the AI have enough information?
|
|
70
|
-
|
|
71
|
-
**Normal user:**
|
|
72
|
-
- "Install OpenTabs and set it up" — quick-start resource?
|
|
73
|
-
- "What plugins are available?" — knows about \`opentabs plugin search\`?
|
|
74
|
-
- "This tool isn't working" — troubleshooting resource?
|
|
75
|
-
|
|
76
|
-
**Plugin developer:**
|
|
77
|
-
- "Build a plugin for X" — build_plugin prompt + plugin-development resource?
|
|
78
|
-
- "What SDK utilities exist?" — SDK reference resource?
|
|
79
|
-
- "How do I handle auth?" — plugin-development resource?
|
|
80
|
-
|
|
81
|
-
**Platform contributor:**
|
|
82
|
-
- "How is the codebase structured?" — architecture resource?
|
|
83
|
-
- "How do I run the dev server?" — dev setup covered?
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Phase 4: Write or Update Content
|
|
88
|
-
|
|
89
|
-
**Where content lives:**
|
|
90
|
-
|
|
91
|
-
| Content type | File |
|
|
92
|
-
|---|---|
|
|
93
|
-
| Instructions | \`platform/mcp-server/src/mcp-setup.ts\` (\`SERVER_INSTRUCTIONS\`) |
|
|
94
|
-
| Quick start guide | \`platform/mcp-server/src/resources/quick-start.ts\` |
|
|
95
|
-
| Plugin dev guide | \`platform/mcp-server/src/resources/plugin-development.ts\` |
|
|
96
|
-
| Troubleshooting | \`platform/mcp-server/src/resources/troubleshooting.ts\` |
|
|
97
|
-
| SDK API reference | \`platform/mcp-server/src/resources/sdk-api.ts\` |
|
|
98
|
-
| CLI reference | \`platform/mcp-server/src/resources/cli.ts\` |
|
|
99
|
-
| Browser tools ref | \`platform/mcp-server/src/resources/browser-tools.ts\` |
|
|
100
|
-
| Dynamic status | \`platform/mcp-server/src/resources/status.ts\` |
|
|
101
|
-
| Build plugin prompt | \`platform/mcp-server/src/prompts/build-plugin.ts\` |
|
|
102
|
-
| Troubleshoot prompt | \`platform/mcp-server/src/prompts/troubleshoot.ts\` |
|
|
103
|
-
| Setup plugin prompt | \`platform/mcp-server/src/prompts/setup-plugin.ts\` |
|
|
104
|
-
| This prompt | \`platform/mcp-server/src/prompts/audit-ai-docs.ts\` |
|
|
105
|
-
|
|
106
|
-
**Writing for AI consumption (not humans):**
|
|
107
|
-
|
|
108
|
-
| Human docs | AI docs |
|
|
109
|
-
|---|---|
|
|
110
|
-
| Friendly tone | Direct, information-dense |
|
|
111
|
-
| Progressive disclosure | All facts upfront |
|
|
112
|
-
| Narrative | Structured tables and lists |
|
|
113
|
-
| Screenshots | Code blocks and exact commands |
|
|
114
|
-
| Conceptual overview first | Working example first |
|
|
115
|
-
|
|
116
|
-
**Size guidelines:**
|
|
117
|
-
- Instructions: ≤120 lines / 6000 chars
|
|
118
|
-
- Guides: 150-400 lines
|
|
119
|
-
- References: 100-250 lines
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Phase 5: Verify
|
|
124
|
-
|
|
125
|
-
After making changes:
|
|
126
|
-
|
|
127
|
-
\`\`\`bash
|
|
128
|
-
npm run build # Server must compile
|
|
129
|
-
npm run type-check # TypeScript check
|
|
130
|
-
npm run lint # Biome lint
|
|
131
|
-
npm run knip # Unused code detection
|
|
132
|
-
npm run test # Unit tests
|
|
133
|
-
\`\`\`
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## Phase 6: Write Learnings Back
|
|
138
|
-
|
|
139
|
-
If the audit reveals new drift patterns or common issues, add them to the Common Issues section at the bottom of this prompt (\`platform/mcp-server/src/prompts/audit-ai-docs.ts\`).
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Common Issues to Check
|
|
144
|
-
|
|
145
|
-
1. **Stale permission terminology** — codebase uses \`off/ask/auto\`. Search for \`enabled/disabled\` or \`allow_once/allow_always/deny\`.
|
|
146
|
-
2. **Config key format drift** — actual: \`tool-permission.<plugin>.<tool>\` and \`plugin-permission.<plugin>\`. Search for \`tool.<plugin>_<tool>\`.
|
|
147
|
-
3. **Health endpoint field renames** — \`skipPermissions\` not \`confirmationBypassed\`.
|
|
148
|
-
4. **Missing ToolDefinition fields** — \`summary\`, \`group\`, \`icon\` often omitted.
|
|
149
|
-
5. **WebSocket method renames** — actual: \`config.setToolPermission\`, \`config.setPluginPermission\`, \`config.setSkipPermissions\`.
|
|
150
|
-
6. **SDK utility additions** — new functions in \`plugin-sdk/src/sdk.ts\` not in resource.
|
|
151
|
-
7. **Browser tool count** — currently 40. Check \`browser-tools/index.ts\`.
|
|
152
|
-
8. **\`reviewedVersion\` field** — part of \`PluginPermissionConfig\`, often missing from docs.
|
|
153
|
-
9. **Confirmation response** — \`{ id, decision: 'allow' | 'deny', alwaysAllow?: boolean }\`.
|
|
154
|
-
10. **Resource content accuracy** — resource content drifts just like human docs.`;
|
|
155
|
-
//# sourceMappingURL=audit-ai-docs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-ai-docs.js","sourceRoot":"","sources":["../../src/prompts/audit-ai-docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAChC,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAqJkE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-plugin.d.ts","sourceRoot":"","sources":["../../src/prompts/build-plugin.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,KAAG,MAqcjE,CAAC"}
|