@extenshi/mcp 0.6.0 → 0.8.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/README.md +35 -3
- package/dist/bff.d.ts +35 -5
- package/dist/bff.d.ts.map +1 -1
- package/dist/bff.js +15 -0
- package/dist/bff.js.map +1 -1
- package/dist/development-guide.d.ts +118 -76
- package/dist/development-guide.d.ts.map +1 -1
- package/dist/development-guide.js +151 -44
- package/dist/development-guide.js.map +1 -1
- package/dist/docs.d.ts +45 -4
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.js +162 -17
- package/dist/docs.js.map +1 -1
- package/dist/icon-workflow.d.ts +5 -4
- package/dist/icon-workflow.d.ts.map +1 -1
- package/dist/icon-workflow.js +33 -32
- package/dist/icon-workflow.js.map +1 -1
- package/dist/localize-workflow.d.ts +8 -0
- package/dist/localize-workflow.d.ts.map +1 -0
- package/dist/localize-workflow.js +105 -0
- package/dist/localize-workflow.js.map +1 -0
- package/dist/pay.d.ts +214 -0
- package/dist/pay.d.ts.map +1 -0
- package/dist/pay.js +202 -0
- package/dist/pay.js.map +1 -0
- package/dist/search-filters.js +1 -1
- package/dist/search-filters.js.map +1 -1
- package/dist/shape.d.ts +34 -0
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +150 -3
- package/dist/shape.js.map +1 -1
- package/dist/templates.js +5 -5
- package/dist/templates.js.map +1 -1
- package/dist/tools.d.ts +2 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +333 -106
- package/dist/tools.js.map +1 -1
- package/dist/welcome-agent-brief.d.ts +9 -9
- package/dist/welcome-agent-brief.d.ts.map +1 -1
- package/dist/welcome-agent-brief.js +32 -32
- package/dist/welcome-agent-brief.js.map +1 -1
- package/dist/welcome-workflow.d.ts +5 -5
- package/dist/welcome-workflow.d.ts.map +1 -1
- package/dist/welcome-workflow.js +13 -14
- package/dist/welcome-workflow.js.map +1 -1
- package/package.json +10 -8
- package/dist/project-workspace.d.ts +0 -1976
- package/dist/project-workspace.d.ts.map +0 -1
- package/dist/project-workspace.js +0 -350
- package/dist/project-workspace.js.map +0 -1
|
@@ -4,21 +4,21 @@ export const DEVELOPMENT_GUIDE_URL = docs('development-workflow');
|
|
|
4
4
|
export const DEVELOPMENT_SERVICES = [
|
|
5
5
|
{
|
|
6
6
|
id: 'documentation',
|
|
7
|
-
purpose: '
|
|
7
|
+
purpose: 'Capabilities, extension shapes, exact CLI commands and reusable skill packages.',
|
|
8
8
|
tools: ['get_development_guide', 'search_docs', 'list_extension_templates'],
|
|
9
|
-
access: 'Free
|
|
9
|
+
access: 'Free reference; no API key. Hosted transport still requires connector sign-in.',
|
|
10
10
|
urls: [docs('mcp'), DEVELOPMENT_GUIDE_URL, docs('agent-skills')],
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
id: 'account',
|
|
14
|
-
purpose: 'Sign
|
|
14
|
+
purpose: 'Sign-in, API keys for local tools and credit-pool balances ahead of paid work.',
|
|
15
15
|
tools: ['get_credit_balance', 'connection_diagnostics'],
|
|
16
16
|
access: 'Balance lookup is free and requires identity; catalog reads and scans use credit pools.',
|
|
17
17
|
urls: [docs('scan-credits'), 'https://dojo.extenshi.io/api-keys', 'https://dojo.extenshi.io/billing'],
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
id: 'research',
|
|
21
|
-
purpose: '
|
|
21
|
+
purpose: 'Demand, competitors, user complaints, permissions and existing security findings.',
|
|
22
22
|
tools: [
|
|
23
23
|
'search_extensions',
|
|
24
24
|
'get_extension',
|
|
@@ -27,12 +27,12 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
27
27
|
'get_risk_by_store_ids',
|
|
28
28
|
'market_overview',
|
|
29
29
|
],
|
|
30
|
-
access: 'Identity required. Catalog tools cost 1 read per call; get_security costs 3. Bulk risk: up to 40 per call. Chrome review text is unavailable;
|
|
30
|
+
access: 'Identity required. Catalog tools cost 1 read per call; get_security costs 3. Bulk risk: up to 40 per call. Chrome review text is unavailable; its aggregate rating is available.',
|
|
31
31
|
urls: [docs('mcp'), 'https://catalog.extenshi.io'],
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
id: 'projects',
|
|
35
|
-
purpose: '
|
|
35
|
+
purpose: 'Existing projects: selected browser types, manifests, repository binding, saved tool state, hosted URLs and starter files.',
|
|
36
36
|
tools: [
|
|
37
37
|
'list_my_projects',
|
|
38
38
|
'get_project_state',
|
|
@@ -42,9 +42,14 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
42
42
|
'diff_project_state',
|
|
43
43
|
'apply_project_patch',
|
|
44
44
|
'record_project_evidence',
|
|
45
|
+
'create_ci_ingest_secret',
|
|
46
|
+
'upsert_hosted_page',
|
|
47
|
+
'verify_hosted_artifact',
|
|
48
|
+
'remove_hosted_page',
|
|
49
|
+
'list_hosted_pages',
|
|
45
50
|
'get_release_readiness',
|
|
46
51
|
],
|
|
47
|
-
access: 'Own-project MCP reads are free and require identity.
|
|
52
|
+
access: 'Own-project MCP reads are free and require identity. Projects are created in the cabinet. Repository metadata, source/built manifests and scope synchronize through typed revisioned patches. project.write, evidence.write and hosted.write require explicit OAuth consent. Repository metadata does not grant GitHub access. CI evidence (source=ci) is written only by the verified ingest endpoint, which authenticates with a secret from create_ci_ingest_secret. Automated release-readiness access requires a Pro project.',
|
|
48
53
|
urls: [
|
|
49
54
|
DEVELOPMENT_GUIDE_URL,
|
|
50
55
|
'https://dojo.extenshi.io/projects',
|
|
@@ -53,21 +58,28 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
53
58
|
},
|
|
54
59
|
{
|
|
55
60
|
id: 'manifest',
|
|
56
|
-
purpose: '
|
|
61
|
+
purpose: 'Minimum permissions, target browsers and manifest entries, with every referenced file present.',
|
|
57
62
|
tools: ['list_extension_templates', 'get_project_state', 'get_project_scaffold'],
|
|
58
|
-
access: 'Free template
|
|
63
|
+
access: 'Free template reference; project reads require identity. The cabinet also has a manifest editor.',
|
|
59
64
|
urls: [docs('manifest-generator'), toolPage('manifest-generator')],
|
|
60
65
|
},
|
|
66
|
+
{
|
|
67
|
+
id: 'localization',
|
|
68
|
+
purpose: 'Local translation of extension messages and validation of the resulting locales.',
|
|
69
|
+
tools: ['localize_workflow'],
|
|
70
|
+
access: "Free static reference; local CLI validation requires no key or Extenshi credits. Translation uses the developer's own provider. CLI release availability is part of the reference.",
|
|
71
|
+
urls: [docs('localization')],
|
|
72
|
+
},
|
|
61
73
|
{
|
|
62
74
|
id: 'icons',
|
|
63
|
-
purpose: '
|
|
75
|
+
purpose: 'SVG icon design, toolbar-size preview and store-asset export with the local CLI.',
|
|
64
76
|
tools: ['generate_icon_workflow'],
|
|
65
|
-
access: 'Free
|
|
77
|
+
access: 'Free. Drawing, browser preview and file export happen locally; the cabinet offers its own icon generator subject to availability and credits.',
|
|
66
78
|
urls: [docs('icon-generator'), toolPage('icon-generator')],
|
|
67
79
|
},
|
|
68
80
|
{
|
|
69
81
|
id: 'privacy',
|
|
70
|
-
purpose: '
|
|
82
|
+
purpose: 'A policy that reflects actual data practices: generated and exported, or hosted with version history.',
|
|
71
83
|
tools: [
|
|
72
84
|
'list_privacy_policy_versions',
|
|
73
85
|
'get_privacy_policy_version',
|
|
@@ -79,9 +91,9 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
79
91
|
},
|
|
80
92
|
{
|
|
81
93
|
id: 'onboarding',
|
|
82
|
-
purpose: '
|
|
94
|
+
purpose: 'Welcome page, pin guide, install instructions and uninstall survey, with verified URLs wired into the extension.',
|
|
83
95
|
tools: ['generate_welcome_page_workflow', 'get_project_state'],
|
|
84
|
-
access: 'Free welcome-page
|
|
96
|
+
access: 'Free welcome-page specification. Editing, hosting and responses live in the cabinet where enabled; account/project limits apply. MCP returns specifications and saved state; it has no page-publishing tool.',
|
|
85
97
|
urls: [
|
|
86
98
|
DEVELOPMENT_GUIDE_URL,
|
|
87
99
|
docs('pin-guide'),
|
|
@@ -94,9 +106,9 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
94
106
|
},
|
|
95
107
|
{
|
|
96
108
|
id: 'listing-and-marketing',
|
|
97
|
-
purpose: '
|
|
109
|
+
purpose: 'Listing copy, screenshots, landing page, support links and AI discovery assets.',
|
|
98
110
|
tools: [],
|
|
99
|
-
access: '
|
|
111
|
+
access: 'Covered by CLI generate-listing / review-risk and cabinet tools where enabled. MCP has no listing, landing-page or SEO execution tool.',
|
|
100
112
|
urls: [
|
|
101
113
|
docs('cli'),
|
|
102
114
|
docs('ai-visibility'),
|
|
@@ -108,23 +120,23 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
108
120
|
},
|
|
109
121
|
{
|
|
110
122
|
id: 'verification-and-ci',
|
|
111
|
-
purpose: '
|
|
123
|
+
purpose: 'Testing the built extension in each target browser, store-risk review, final package scan and CI report retention.',
|
|
112
124
|
tools: ['scan_extension'],
|
|
113
|
-
access: 'Scan requires a local artifact and API key, and spends 1 scan credit. CLI review-risk is local.
|
|
125
|
+
access: 'Scan requires a local artifact and API key, and spends 1 scan credit. CLI review-risk is local. GitHub Actions is configured in the repository; browser tests run in the local environment.',
|
|
114
126
|
urls: [docs('cli'), docs('cli-github-actions'), docs('store-policies')],
|
|
115
127
|
},
|
|
116
128
|
{
|
|
117
129
|
id: 'publishing',
|
|
118
|
-
purpose: '
|
|
130
|
+
purpose: 'Store credential validation, submission of the exact tested package, and verification of review status and the public listing.',
|
|
119
131
|
tools: ['publish_extension'],
|
|
120
132
|
access: 'Local stdio or CLI with local store credentials; publishing access is checked. Store registration, disclosures and review are separate steps. Upload success alone does not establish a live release.',
|
|
121
133
|
urls: [docs('cli'), docs('publish-to-chrome-web-store'), toolPage('publish')],
|
|
122
134
|
},
|
|
123
135
|
{
|
|
124
136
|
id: 'maintenance',
|
|
125
|
-
purpose: '
|
|
137
|
+
purpose: 'Listing claims, finding responses, reviews and uninstall feedback, policy updates and ongoing releases.',
|
|
126
138
|
tools: ['get_reviews', 'get_security', 'get_project_state'],
|
|
127
|
-
access: 'Catalog reads are metered. Ownership, declarations, responses, badges and feedback management
|
|
139
|
+
access: 'Catalog reads are metered. Ownership, declarations, responses, badges and feedback management live in the cabinet and depend on account access.',
|
|
128
140
|
urls: [
|
|
129
141
|
docs('claim-your-extension'),
|
|
130
142
|
docs('respond-to-findings'),
|
|
@@ -136,64 +148,126 @@ export const DEVELOPMENT_SERVICES = [
|
|
|
136
148
|
{
|
|
137
149
|
id: 'monetization',
|
|
138
150
|
purpose: 'Optional paid-feature integration: seller setup, offers, checkout, signed entitlements and purchase verification.',
|
|
139
|
-
tools: [
|
|
140
|
-
|
|
141
|
-
|
|
151
|
+
tools: [
|
|
152
|
+
'list_pay_apps',
|
|
153
|
+
'create_pay_app',
|
|
154
|
+
'get_pay_app',
|
|
155
|
+
'get_pay_readiness',
|
|
156
|
+
'link_pay_app',
|
|
157
|
+
'unlink_pay_app',
|
|
158
|
+
'archive_pay_app',
|
|
159
|
+
'export_pay_data',
|
|
160
|
+
'get_pay_seller',
|
|
161
|
+
'connect_pay_seller',
|
|
162
|
+
'refresh_pay_seller',
|
|
163
|
+
'set_pay_seller_profile',
|
|
164
|
+
'upsert_pay_offer',
|
|
165
|
+
'archive_pay_offer',
|
|
166
|
+
'set_pay_enabled',
|
|
167
|
+
'rotate_pay_key',
|
|
168
|
+
],
|
|
169
|
+
access: 'Pay applications work independently of development projects. Explicit pay.read/pay.write permission is required; older connections and API keys have no Pay grant. Readiness (get_pay_readiness) and the actual SDK distribution determine whether integration is possible. The author completes the seller agreement and Stripe KYC in the browser. Checkout is enabled only after offers and profile are configured, and only with explicit authorization. Registration does not prove production deployment or npm publication.',
|
|
170
|
+
urls: [docs('pay-sdk'), 'https://dojo.extenshi.io/payments'],
|
|
142
171
|
},
|
|
143
172
|
];
|
|
173
|
+
/**
|
|
174
|
+
* The development lifecycle as a process description. `actions` describes what
|
|
175
|
+
* the stage consists of; `relatedTools` is a factual list of the tools that
|
|
176
|
+
* cover it (not an instruction to call them); `doneWhen` is the exit criterion.
|
|
177
|
+
*/
|
|
144
178
|
const WORKFLOW = [
|
|
145
179
|
{
|
|
146
180
|
id: 'scope',
|
|
147
|
-
actions: '
|
|
181
|
+
actions: 'Stage 1 — Scope: the user problem, target sites and browsers, MVP, permissions/data needs, acceptance criteria, distribution and optional monetization are written down. Deferred features stay out of release promises.',
|
|
182
|
+
relatedTools: ['get_development_guide', 'search_docs'],
|
|
148
183
|
doneWhen: 'A written scope and acceptance checklist cover implementation, testing, assets, release and maintenance.',
|
|
149
184
|
},
|
|
150
185
|
{
|
|
151
186
|
id: 'research',
|
|
152
|
-
actions: '
|
|
153
|
-
|
|
187
|
+
actions: 'Stage 2 — Research (optional): demand, competitors, user complaints and security findings for a small relevant set of existing extensions; gaps and constraints are recorded. Catalog reads are metered, so the credit balance matters here.',
|
|
188
|
+
relatedTools: [
|
|
189
|
+
'get_credit_balance',
|
|
190
|
+
'search_extensions',
|
|
191
|
+
'market_overview',
|
|
192
|
+
'get_extension',
|
|
193
|
+
'get_reviews',
|
|
194
|
+
'get_security',
|
|
195
|
+
'get_risk_by_store_ids',
|
|
196
|
+
],
|
|
197
|
+
doneWhen: 'The chosen feature and supported surfaces have evidence; skipped research is recorded as skipped with a reason.',
|
|
154
198
|
},
|
|
155
199
|
{
|
|
156
200
|
id: 'project-and-repository',
|
|
157
|
-
actions: '
|
|
201
|
+
actions: 'Stage 3 — Project and repository: an existing dojo project and its bound repository are reused. Without a project, one is created in dojo where available, or work continues locally with integration recorded as pending. A Git remote (GitHub preferred) exists before substantial implementation.',
|
|
202
|
+
relatedTools: ['list_my_projects', 'get_project_state'],
|
|
158
203
|
doneWhen: 'Project ID (or explicit pending status), repository URL, branch, README, build commands and release checklist are recorded.',
|
|
159
204
|
},
|
|
160
205
|
{
|
|
161
206
|
id: 'architecture-and-scaffold',
|
|
162
|
-
actions: '
|
|
207
|
+
actions: 'Stage 4 — Architecture and scaffold: extension types, minimum permissions and browser-specific files are chosen. A new project gets one scaffold per browser in separate outputs; an existing repository keeps its code. Tool states are read only for the keys the extension needs. integration.file is written verbatim to integration.path, integration.unwired lists what is still unconnected, and project state is re-read after cabinet changes.',
|
|
208
|
+
relatedTools: ['list_extension_templates', 'get_project_scaffold', 'get_project_state'],
|
|
163
209
|
doneWhen: 'Each manifest references real packaged files; browser variants and the project integration contract are preserved.',
|
|
164
210
|
},
|
|
165
211
|
{
|
|
166
212
|
id: 'implementation',
|
|
167
|
-
actions: '
|
|
213
|
+
actions: 'Stage 5 — Implementation: the MVP, accessible popup/options, storage and error handling, tested on the actual target sites and across the extension lifecycle, including service-worker restart and permission denial. Localization covers message translation, structural validation and manual language/RTL review. Payments or user accounts depend on a verified supported integration with its prerequisites complete.',
|
|
214
|
+
relatedTools: ['localize_workflow'],
|
|
168
215
|
doneWhen: 'Acceptance criteria pass on real target surfaces; optional integrations have end-to-end evidence or remain explicit blockers.',
|
|
169
216
|
},
|
|
170
217
|
{
|
|
171
218
|
id: 'assets-and-hosted-pages',
|
|
172
|
-
actions: "
|
|
219
|
+
actions: "Stage 6 — Assets and hosted pages: icon, welcome page, screenshots, pin/install instructions, privacy policy, uninstall feedback, support and landing URLs. An existing Pro policy is updated as a reviewed proposal (proposedMarkdown) and published within the author's authorization. Returned URLs are verified against project state.",
|
|
220
|
+
relatedTools: [
|
|
221
|
+
'generate_icon_workflow',
|
|
222
|
+
'generate_welcome_page_workflow',
|
|
223
|
+
'list_privacy_policy_versions',
|
|
224
|
+
'get_privacy_policy_version',
|
|
225
|
+
'update_privacy_policy_with_ai',
|
|
226
|
+
'publish_privacy_policy',
|
|
227
|
+
'get_project_state',
|
|
228
|
+
],
|
|
173
229
|
doneWhen: 'Assets show the real product; hosted links load and match actual data practices; installation/uninstallation flows work.',
|
|
174
230
|
},
|
|
175
231
|
{
|
|
176
232
|
id: 'quality-and-listing',
|
|
177
|
-
actions: '
|
|
233
|
+
actions: 'Stage 7 — Quality and listing: each browser package is built; unit/integration checks and manual browser scenarios run. Disclosures, permission justifications, listing copy and screenshots are reviewed against the build (CLI review-risk and generate-listing; exact commands in the CLI docs). The final package is scanned, and CI follows the cli-github-actions docs.',
|
|
234
|
+
relatedTools: ['search_docs', 'scan_extension'],
|
|
178
235
|
doneWhen: 'The exact versioned artifact has passing checks, retained scan/review reports and truthful store materials; unresolved findings have a disposition.',
|
|
179
236
|
},
|
|
180
237
|
{
|
|
181
238
|
id: 'release',
|
|
182
|
-
actions: "
|
|
239
|
+
actions: "Stage 8 — Release: store accounts, credentials and submission access are verified; a validate-only run precedes submission where available. The tested artifact is submitted within the user's publishing authorization through local MCP, CLI or the store console. Upload, submission, approval and public-listing status are recorded separately.",
|
|
240
|
+
relatedTools: ['publish_extension'],
|
|
183
241
|
doneWhen: 'Store status and installed version are verified; pending store review is reported as pending, with artifact and source commit recorded.',
|
|
184
242
|
},
|
|
185
243
|
{
|
|
186
244
|
id: 'operate',
|
|
187
|
-
actions: '
|
|
245
|
+
actions: 'Stage 9 — Operate: catalog listing claim, declarations and security badge, findings and uninstall feedback, optional purchase/license flow checks, and planned updates. Later versions repeat the build, review, scan, policy and release checks.',
|
|
246
|
+
relatedTools: ['get_reviews', 'get_security', 'get_project_state'],
|
|
188
247
|
doneWhen: 'A handoff records repository/commit, artifacts, URLs, checks, remaining blockers, support owner and follow-up work.',
|
|
189
248
|
},
|
|
190
249
|
];
|
|
191
|
-
|
|
250
|
+
/** Top-level sections of the full guide, selectable via the `sections` parameter. */
|
|
251
|
+
export const GUIDE_SECTIONS = [
|
|
252
|
+
'tools',
|
|
253
|
+
'localActions',
|
|
254
|
+
'services',
|
|
255
|
+
'repository',
|
|
256
|
+
'workflow',
|
|
257
|
+
'handoff',
|
|
258
|
+
];
|
|
259
|
+
const SECTION_SUMMARIES = {
|
|
260
|
+
tools: 'Every tool registered on this connection: description, read-only/destructive hints and docs links.',
|
|
261
|
+
localActions: 'Artifact scan and store publishing: availability on this connection and the local fallback.',
|
|
262
|
+
services: 'Service directory: purpose, related tools, access requirements and URLs per lifecycle area.',
|
|
263
|
+
repository: 'Git repository recommendation, setup, layout and secret-handling practice.',
|
|
264
|
+
workflow: 'The nine lifecycle stages with descriptions, related tools and exit criteria.',
|
|
265
|
+
handoff: 'Items a completed handoff records.',
|
|
266
|
+
};
|
|
267
|
+
const AVAILABILITY = 'Tool lists describe the tools registered on THIS connection. Registration does not prove account access, remaining credits or local prerequisites. Service URLs describe where work happens; account/project access is checked live. Exact input schemas come from MCP tools/list. This guide makes no network calls.';
|
|
268
|
+
function buildSections(registeredTools) {
|
|
192
269
|
const names = new Set(registeredTools.map((tool) => tool.name));
|
|
193
270
|
return {
|
|
194
|
-
schemaVersion: 1,
|
|
195
|
-
documentation: DEVELOPMENT_GUIDE_URL,
|
|
196
|
-
availability: 'tools lists the tools registered on THIS connection. Registration does not prove account access, remaining credits or local prerequisites. Service URLs describe where work happens; check live account/project access. Use MCP tools/list for the exact input schemas. This guide makes no network calls.',
|
|
197
271
|
tools: registeredTools.map((tool) => ({
|
|
198
272
|
...tool,
|
|
199
273
|
docs: [
|
|
@@ -203,7 +277,7 @@ export function buildDevelopmentGuide(registeredTools) {
|
|
|
203
277
|
localActions: ['scan_extension', 'publish_extension'].map((name) => ({
|
|
204
278
|
name,
|
|
205
279
|
availableInThisConnection: names.has(name),
|
|
206
|
-
fallback: '
|
|
280
|
+
fallback: 'Available through local @extenshi/mcp (stdio), or npx @extenshi/cli@latest on the machine holding the artifact. Exact commands and prerequisites: the CLI documentation.',
|
|
207
281
|
docs: docs('cli'),
|
|
208
282
|
})),
|
|
209
283
|
services: DEVELOPMENT_SERVICES.map(({ tools, ...service }) => ({
|
|
@@ -211,18 +285,18 @@ export function buildDevelopmentGuide(registeredTools) {
|
|
|
211
285
|
toolsInThisConnection: tools.filter((name) => names.has(name)),
|
|
212
286
|
})),
|
|
213
287
|
repository: {
|
|
214
|
-
recommendation: '
|
|
215
|
-
setup: "
|
|
288
|
+
recommendation: 'Source lives in a developer-owned Git repository; GitHub fits the existing dojo integration and GitHub Actions. An already-bound repository is reused. GitLab, Bitbucket or self-hosted Git also work with local code and CI; automatic dojo binding for them is not provided by these MCP tools.',
|
|
289
|
+
setup: "Repository owner and visibility are the developer's choice; private unless public source is intended. GitHub connects at https://dojo.extenshi.io/integrations, and the repository is selected in the project where enabled. Repository creation and writes go through GitHub, its connector/CLI or the cabinet, with the user's authorization.",
|
|
216
290
|
layout: [
|
|
217
291
|
'README.md: setup, target browsers, build/test/release commands',
|
|
218
292
|
'src/: extension logic and extenshi.config.js at the path supplied by the project',
|
|
219
|
-
'assets/ and _locales/: icons and translations (
|
|
293
|
+
'assets/ and _locales/: icons and translations (following the chosen framework layout)',
|
|
220
294
|
'tests/: behavior and browser scenarios',
|
|
221
295
|
'docs/: privacy source, listing copy, support and release checklist',
|
|
222
296
|
'.github/workflows/: build, tests and artifact scan',
|
|
223
|
-
'dist/: generated per-browser packages;
|
|
297
|
+
'dist/: generated per-browser packages; versioned artifacts attached to CI/releases',
|
|
224
298
|
],
|
|
225
|
-
practice: '
|
|
299
|
+
practice: 'Committed: source, dependency lockfile and .env.example with placeholders. Kept in local/CI secret storage: tokens, store credentials, signing keys, .env and user data. Changes go through branches and reviewable pull requests; release artifacts are associated with a source commit/tag.',
|
|
226
300
|
docs: [
|
|
227
301
|
'https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories',
|
|
228
302
|
docs('cli-github-actions'),
|
|
@@ -242,4 +316,37 @@ export function buildDevelopmentGuide(registeredTools) {
|
|
|
242
316
|
],
|
|
243
317
|
};
|
|
244
318
|
}
|
|
319
|
+
/** Normalise a caller's `sections` argument: unknown ids are dropped, `all` expands. */
|
|
320
|
+
export function resolveGuideSections(requested) {
|
|
321
|
+
if (!requested || requested.length === 0)
|
|
322
|
+
return [];
|
|
323
|
+
if (requested.includes('all'))
|
|
324
|
+
return [...GUIDE_SECTIONS];
|
|
325
|
+
return GUIDE_SECTIONS.filter((section) => requested.includes(section));
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Build the guide. With no `sections`, returns the compact overview: tool names,
|
|
329
|
+
* workflow stage ids with exit criteria, and a table of contents. Listed
|
|
330
|
+
* sections (or `all`) are returned in full.
|
|
331
|
+
*/
|
|
332
|
+
export function buildDevelopmentGuide(registeredTools, requested) {
|
|
333
|
+
const sections = resolveGuideSections(requested);
|
|
334
|
+
const full = buildSections(registeredTools);
|
|
335
|
+
const base = { schemaVersion: 2, documentation: DEVELOPMENT_GUIDE_URL, availability: AVAILABILITY };
|
|
336
|
+
if (sections.length > 0) {
|
|
337
|
+
return { ...base, ...Object.fromEntries(sections.map((section) => [section, full[section]])) };
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
...base,
|
|
341
|
+
overview: 'Extenshi development lifecycle reference: idea and research, project and repository, scaffold, implementation, assets and hosted pages, quality and listing, store release, maintenance.',
|
|
342
|
+
toolNames: registeredTools.map((tool) => tool.name),
|
|
343
|
+
workflowStages: WORKFLOW.map(({ id, doneWhen }) => ({ id, doneWhen })),
|
|
344
|
+
contents: GUIDE_SECTIONS.map((id) => ({
|
|
345
|
+
section: id,
|
|
346
|
+
summary: SECTION_SUMMARIES[id],
|
|
347
|
+
entries: Array.isArray(full[id]) ? full[id].length : undefined,
|
|
348
|
+
})),
|
|
349
|
+
sectionsParameter: 'Full sections are included when named in the `sections` argument (e.g. ["workflow", "services"]); "all" returns every section.',
|
|
350
|
+
};
|
|
351
|
+
}
|
|
245
352
|
//# sourceMappingURL=development-guide.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"development-guide.js","sourceRoot":"","sources":["../src/development-guide.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"development-guide.js","sourceRoot":"","sources":["../src/development-guide.ts"],"names":[],"mappings":"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"}
|
package/dist/docs.d.ts
CHANGED
|
@@ -38,12 +38,53 @@ export declare function splitSections(full: string): DocSection[];
|
|
|
38
38
|
* the body. Pure (no I/O) so it is unit-testable with a fixture.
|
|
39
39
|
*/
|
|
40
40
|
export declare function rankSections(full: string, query: string, limit: number): DocSection[];
|
|
41
|
+
/**
|
|
42
|
+
* One searchable passage: a `##` subsection of a docs page (or the page intro
|
|
43
|
+
* before its first `##`). Returning passages instead of whole pages keeps a
|
|
44
|
+
* search result proportional to the question — a page can run to 8k+ chars,
|
|
45
|
+
* while the answer usually lives in one subsection.
|
|
46
|
+
*/
|
|
47
|
+
export interface DocPassage {
|
|
48
|
+
page: string;
|
|
49
|
+
heading?: string;
|
|
50
|
+
url?: string;
|
|
51
|
+
body: string;
|
|
52
|
+
}
|
|
53
|
+
/** Split `llms-full.txt` into `##`-level passages, fence-aware, carrying the page source URL. */
|
|
54
|
+
export declare function splitPassages(full: string): DocPassage[];
|
|
55
|
+
/**
|
|
56
|
+
* Rank passages against a query with BM25 over passage bodies, so a long
|
|
57
|
+
* passage that merely repeats common words does not outrank a short one that
|
|
58
|
+
* answers the question. Heading and page-title matches add a bonus; hyphenated
|
|
59
|
+
* or long tokens (command and flag names) get a phrase boost. Pure (no I/O) so
|
|
60
|
+
* it is unit-testable with a fixture.
|
|
61
|
+
*/
|
|
62
|
+
export declare function rankPassages(full: string, query: string, limit: number): DocPassage[];
|
|
63
|
+
/** Default and bounds for the per-result excerpt length (characters). */
|
|
64
|
+
export declare const DEFAULT_EXCERPT_CHARS = 1500;
|
|
65
|
+
export declare const MIN_EXCERPT_CHARS = 200;
|
|
66
|
+
export declare const MAX_EXCERPT_CHARS = 8000;
|
|
67
|
+
/**
|
|
68
|
+
* Cut a passage to `maxChars` on a line boundary. An unterminated code fence is
|
|
69
|
+
* closed so the rest of the response still renders as prose.
|
|
70
|
+
*/
|
|
71
|
+
export declare function excerpt(body: string, maxChars: number): {
|
|
72
|
+
text: string;
|
|
73
|
+
truncated: boolean;
|
|
74
|
+
};
|
|
41
75
|
/** Fetch the docs index (`llms.txt`) — the page list returned when no query is given. */
|
|
42
76
|
export declare function getDocsIndex(docsUrl: string): Promise<string>;
|
|
77
|
+
export interface SearchDocsOptions {
|
|
78
|
+
/** Max passages returned. */
|
|
79
|
+
limit: number;
|
|
80
|
+
/** Max characters per passage excerpt. */
|
|
81
|
+
maxChars?: number;
|
|
82
|
+
}
|
|
83
|
+
/** Render ranked passages: page › heading, source URL, bounded excerpt. Pure. */
|
|
84
|
+
export declare function renderPassages(query: string, matches: DocPassage[], maxChars: number): string;
|
|
43
85
|
/**
|
|
44
|
-
* Search the docs and return
|
|
45
|
-
*
|
|
46
|
-
* note pointing at the index.
|
|
86
|
+
* Search the docs and return the top matching passages, each with its source
|
|
87
|
+
* link and a bounded excerpt. Falls back to a "nothing matched" note.
|
|
47
88
|
*/
|
|
48
|
-
export declare function searchDocs(docsUrl: string, query: string,
|
|
89
|
+
export declare function searchDocs(docsUrl: string, query: string, options: SearchDocsOptions): Promise<string>;
|
|
49
90
|
//# sourceMappingURL=docs.d.ts.map
|
package/dist/docs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qEAAqE;AACrE,qBAAa,SAAU,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ;AAkDD,mEAAmE;AACnE,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAyBxD;AAoCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAwBrF;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qEAAqE;AACrE,qBAAa,SAAU,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ;AAkDD,mEAAmE;AACnE,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAyBxD;AAoCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAwBrF;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACZ;AAID,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CA8BxD;AAiBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAiErF;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAS5F;AAED,yFAAyF;AACzF,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,MAAM,WAAW,iBAAiB;IACjC,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7F;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,CAOjB"}
|