@opentabs-dev/mcp-server 0.0.66 → 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.
Files changed (123) hide show
  1. package/dist/browser-tools/analyze-site.d.ts.map +1 -1
  2. package/dist/browser-tools/analyze-site.js +3 -1
  3. package/dist/browser-tools/analyze-site.js.map +1 -1
  4. package/dist/browser-tools/extension-get-logs.d.ts +2 -2
  5. package/dist/browser-tools/get-console-logs.d.ts +2 -2
  6. package/dist/extension-handlers.d.ts +2 -1
  7. package/dist/extension-handlers.d.ts.map +1 -1
  8. package/dist/extension-handlers.js +22 -1
  9. package/dist/extension-handlers.js.map +1 -1
  10. package/dist/extension-protocol.d.ts.map +1 -1
  11. package/dist/extension-protocol.js +6 -1
  12. package/dist/extension-protocol.js.map +1 -1
  13. package/dist/mcp-setup.d.ts +1 -13
  14. package/dist/mcp-setup.d.ts.map +1 -1
  15. package/dist/mcp-setup.js +4 -96
  16. package/dist/mcp-setup.js.map +1 -1
  17. package/dist/reload.js +5 -5
  18. package/dist/reload.js.map +1 -1
  19. package/package.json +3 -1
  20. package/dist/browser-tool-names.d.ts +0 -14
  21. package/dist/browser-tool-names.d.ts.map +0 -1
  22. package/dist/browser-tool-names.js +0 -55
  23. package/dist/browser-tool-names.js.map +0 -1
  24. package/dist/discovery-legacy.d.ts +0 -32
  25. package/dist/discovery-legacy.d.ts.map +0 -1
  26. package/dist/discovery-legacy.js +0 -415
  27. package/dist/discovery-legacy.js.map +0 -1
  28. package/dist/manifest-schema.d.ts +0 -14
  29. package/dist/manifest-schema.d.ts.map +0 -1
  30. package/dist/manifest-schema.js +0 -51
  31. package/dist/manifest-schema.js.map +0 -1
  32. package/dist/mcp-prompts.d.ts +0 -71
  33. package/dist/mcp-prompts.d.ts.map +0 -1
  34. package/dist/mcp-prompts.js +0 -248
  35. package/dist/mcp-prompts.js.map +0 -1
  36. package/dist/mcp-resources.d.ts +0 -53
  37. package/dist/mcp-resources.d.ts.map +0 -1
  38. package/dist/mcp-resources.js +0 -139
  39. package/dist/mcp-resources.js.map +0 -1
  40. package/dist/permissions.d.ts +0 -59
  41. package/dist/permissions.d.ts.map +0 -1
  42. package/dist/permissions.js +0 -144
  43. package/dist/permissions.js.map +0 -1
  44. package/dist/prompts/audit-ai-docs.d.ts +0 -6
  45. package/dist/prompts/audit-ai-docs.d.ts.map +0 -1
  46. package/dist/prompts/audit-ai-docs.js +0 -155
  47. package/dist/prompts/audit-ai-docs.js.map +0 -1
  48. package/dist/prompts/build-plugin.d.ts +0 -3
  49. package/dist/prompts/build-plugin.d.ts.map +0 -1
  50. package/dist/prompts/build-plugin.js +0 -455
  51. package/dist/prompts/build-plugin.js.map +0 -1
  52. package/dist/prompts/contribute-learnings.d.ts +0 -12
  53. package/dist/prompts/contribute-learnings.d.ts.map +0 -1
  54. package/dist/prompts/contribute-learnings.js +0 -107
  55. package/dist/prompts/contribute-learnings.js.map +0 -1
  56. package/dist/prompts/plugin-icon.d.ts +0 -5
  57. package/dist/prompts/plugin-icon.d.ts.map +0 -1
  58. package/dist/prompts/plugin-icon.js +0 -147
  59. package/dist/prompts/plugin-icon.js.map +0 -1
  60. package/dist/prompts/setup-plugin.d.ts +0 -3
  61. package/dist/prompts/setup-plugin.d.ts.map +0 -1
  62. package/dist/prompts/setup-plugin.js +0 -197
  63. package/dist/prompts/setup-plugin.js.map +0 -1
  64. package/dist/prompts/troubleshoot.d.ts +0 -3
  65. package/dist/prompts/troubleshoot.d.ts.map +0 -1
  66. package/dist/prompts/troubleshoot.js +0 -191
  67. package/dist/prompts/troubleshoot.js.map +0 -1
  68. package/dist/resources/browser-tools.d.ts +0 -3
  69. package/dist/resources/browser-tools.d.ts.map +0 -1
  70. package/dist/resources/browser-tools.js +0 -100
  71. package/dist/resources/browser-tools.js.map +0 -1
  72. package/dist/resources/cli.d.ts +0 -3
  73. package/dist/resources/cli.d.ts.map +0 -1
  74. package/dist/resources/cli.js +0 -217
  75. package/dist/resources/cli.js.map +0 -1
  76. package/dist/resources/plugin-development.d.ts +0 -3
  77. package/dist/resources/plugin-development.d.ts.map +0 -1
  78. package/dist/resources/plugin-development.js +0 -596
  79. package/dist/resources/plugin-development.js.map +0 -1
  80. package/dist/resources/quick-start.d.ts +0 -3
  81. package/dist/resources/quick-start.d.ts.map +0 -1
  82. package/dist/resources/quick-start.js +0 -210
  83. package/dist/resources/quick-start.js.map +0 -1
  84. package/dist/resources/sdk-api.d.ts +0 -3
  85. package/dist/resources/sdk-api.d.ts.map +0 -1
  86. package/dist/resources/sdk-api.js +0 -199
  87. package/dist/resources/sdk-api.js.map +0 -1
  88. package/dist/resources/self-improvement.d.ts +0 -10
  89. package/dist/resources/self-improvement.d.ts.map +0 -1
  90. package/dist/resources/self-improvement.js +0 -91
  91. package/dist/resources/self-improvement.js.map +0 -1
  92. package/dist/resources/status.d.ts +0 -5
  93. package/dist/resources/status.d.ts.map +0 -1
  94. package/dist/resources/status.js +0 -27
  95. package/dist/resources/status.js.map +0 -1
  96. package/dist/resources/troubleshooting.d.ts +0 -3
  97. package/dist/resources/troubleshooting.d.ts.map +0 -1
  98. package/dist/resources/troubleshooting.js +0 -167
  99. package/dist/resources/troubleshooting.js.map +0 -1
  100. package/dist/sanitize-tool-output.d.ts +0 -20
  101. package/dist/sanitize-tool-output.d.ts.map +0 -1
  102. package/dist/sanitize-tool-output.js +0 -52
  103. package/dist/sanitize-tool-output.js.map +0 -1
  104. package/dist/skip-confirmation.d.ts +0 -15
  105. package/dist/skip-confirmation.d.ts.map +0 -1
  106. package/dist/skip-confirmation.js +0 -16
  107. package/dist/skip-confirmation.js.map +0 -1
  108. package/dist/skip-permissions.d.ts +0 -11
  109. package/dist/skip-permissions.d.ts.map +0 -1
  110. package/dist/skip-permissions.js +0 -12
  111. package/dist/skip-permissions.js.map +0 -1
  112. package/dist/skip-sanitization.d.ts +0 -17
  113. package/dist/skip-sanitization.d.ts.map +0 -1
  114. package/dist/skip-sanitization.js +0 -18
  115. package/dist/skip-sanitization.js.map +0 -1
  116. package/dist/skip-verification.d.ts +0 -11
  117. package/dist/skip-verification.d.ts.map +0 -1
  118. package/dist/skip-verification.js +0 -12
  119. package/dist/skip-verification.js.map +0 -1
  120. package/dist/verify-plugin.d.ts +0 -53
  121. package/dist/verify-plugin.d.ts.map +0 -1
  122. package/dist/verify-plugin.js +0 -123
  123. package/dist/verify-plugin.js.map +0 -1
@@ -1,59 +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
- import type { ToolPermission } from './config.js';
16
- import type { ServerState } from './state.js';
17
- /** Security tier for browser tools */
18
- type ToolTier = 'observe' | 'interact' | 'sensitive';
19
- /**
20
- * Browser tool → security tier mapping.
21
- *
22
- * - observe: read-only tools that list or inspect without accessing sensitive data
23
- * - interact: tools that modify page state (click, type, navigate, screenshot)
24
- * - sensitive: tools that access credentials, execute arbitrary code, or modify auth state
25
- */
26
- declare const TOOL_TIERS: Record<string, ToolTier>;
27
- /** Default permission for each tier */
28
- declare const TIER_DEFAULTS: Record<ToolTier, ToolPermission>;
29
- /**
30
- * Match a hostname against a domain pattern.
31
- *
32
- * Supports:
33
- * - Exact match: 'example.com' matches 'example.com'
34
- * - Wildcard prefix: '*.example.com' matches 'sub.example.com' and 'a.b.example.com'
35
- * but NOT 'example.com' itself
36
- */
37
- declare const matchDomain: (hostname: string, pattern: string) => boolean;
38
- /** Check if a hostname matches any pattern in a domain list */
39
- declare const matchesDomainList: (hostname: string, patterns: string[]) => boolean;
40
- /**
41
- * Get the security tier for a browser tool by looking up the TOOL_TIERS map.
42
- * Tools not in the map default to 'interact' (safe middle ground).
43
- *
44
- * @param toolName - Browser tool name (e.g., 'browser_execute_script')
45
- * @returns The tool's security tier: 'observe', 'interact', or 'sensitive'
46
- */
47
- export declare const getToolTier: (toolName: string) => ToolTier;
48
- /**
49
- * Evaluate the permission for a browser tool call.
50
- *
51
- * @param toolName - Browser tool name (e.g., 'browser_execute_script')
52
- * @param domain - Target domain hostname (e.g., 'mail.google.com'), or null for tools with no target
53
- * @param state - Server state (for skipPermissions flag and permissions config)
54
- * @returns 'allow', 'ask', or 'deny'
55
- */
56
- export declare const evaluatePermission: (toolName: string, domain: string | null, state: ServerState) => ToolPermission;
57
- export { TOOL_TIERS, TIER_DEFAULTS, matchDomain, matchesDomainList };
58
- export type { ToolTier };
59
- //# sourceMappingURL=permissions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sCAAsC;AACtC,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAErD;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA8CxC,CAAC;AAEF,uCAAuC;AACvC,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAInD,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,WAAW,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,KAAG,OAOxD,CAAC;AAEF,+DAA+D;AAC/D,QAAA,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,OACpB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,QAA8C,CAAC;AAE9F;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,WAAW,KAAG,cAsChG,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;;;;;GAMG;AACH,MAAM,UAAU,GAA6B;IAC3C,qCAAqC;IACrC,iBAAiB,EAAE,SAAS;IAC5B,oBAAoB,EAAE,SAAS;IAC/B,sBAAsB,EAAE,SAAS;IACjC,wBAAwB,EAAE,SAAS;IACnC,uBAAuB,EAAE,SAAS;IAClC,wBAAwB,EAAE,SAAS;IACnC,sBAAsB,EAAE,SAAS;IACjC,4BAA4B,EAAE,SAAS;IACvC,+BAA+B,EAAE,SAAS;IAC1C,mBAAmB,EAAE,SAAS;IAC9B,kBAAkB,EAAE,SAAS;IAC7B,wBAAwB,EAAE,SAAS;IACnC,uBAAuB,EAAE,SAAS;IAClC,gBAAgB,EAAE,SAAS;IAE3B,0DAA0D;IAC1D,0BAA0B,EAAE,UAAU;IACtC,qBAAqB,EAAE,UAAU;IACjC,iBAAiB,EAAE,UAAU;IAC7B,qBAAqB,EAAE,UAAU;IACjC,qBAAqB,EAAE,UAAU;IACjC,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,UAAU;IAC1B,sBAAsB,EAAE,UAAU;IAClC,oBAAoB,EAAE,UAAU;IAChC,gBAAgB,EAAE,UAAU;IAC5B,iBAAiB,EAAE,UAAU;IAC7B,iBAAiB,EAAE,UAAU;IAC7B,qBAAqB,EAAE,UAAU;IACjC,qBAAqB,EAAE,UAAU;IACjC,8BAA8B,EAAE,UAAU;IAC1C,4BAA4B,EAAE,UAAU;IACxC,4BAA4B,EAAE,UAAU;IACxC,kBAAkB,EAAE,UAAU;IAC9B,yBAAyB,EAAE,UAAU;IACrC,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,UAAU;IAE/B,2EAA2E;IAC3E,sBAAsB,EAAE,WAAW;IACnC,mBAAmB,EAAE,WAAW;IAChC,kBAAkB,EAAE,WAAW;IAC/B,sBAAsB,EAAE,WAAW;IACnC,mBAAmB,EAAE,WAAW;CACjC,CAAC;AAEF,uCAAuC;AACvC,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,OAAe,EAAW,EAAE;IACjE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,QAAkB,EAAW,EAAE,CAC1E,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAY,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAE,MAAqB,EAAE,KAAkB,EAAkB,EAAE;IAChH,mEAAmE;IACnE,IAAI,KAAK,CAAC,eAAe;QAAE,OAAO,OAAO,CAAC;IAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAEtC,kDAAkD;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnF,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;gBAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACtC,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAAQ,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAExC,8EAA8E;IAC9E,mDAAmD;IACnD,IAAI,WAAW,KAAK,KAAK,IAAI,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
@@ -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,3 +0,0 @@
1
- /** Prompt text for the `build_plugin` prompt — full plugin development workflow. */
2
- export declare const buildPluginPromptText: (url: string, name: string) => string;
3
- //# sourceMappingURL=build-plugin.d.ts.map
@@ -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"}