@extenshi/mcp 0.7.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 +4 -3
- package/dist/bff.d.ts +5 -0
- package/dist/bff.d.ts.map +1 -1
- package/dist/bff.js +1 -0
- package/dist/bff.js.map +1 -1
- package/dist/development-guide.d.ts +108 -78
- package/dist/development-guide.d.ts.map +1 -1
- package/dist/development-guide.js +123 -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 +6 -1
- package/dist/localize-workflow.d.ts.map +1 -1
- package/dist/localize-workflow.js +65 -47
- package/dist/localize-workflow.js.map +1 -1
- package/dist/pay.d.ts +1 -1
- package/dist/pay.d.ts.map +1 -1
- package/dist/pay.js +11 -11
- package/dist/pay.js.map +1 -1
- 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 +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +199 -111
- 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 +3 -2
package/dist/docs.js
CHANGED
|
@@ -156,30 +156,175 @@ export function rankSections(full, query, limit) {
|
|
|
156
156
|
.sort((a, b) => b.score - a.score);
|
|
157
157
|
return scored.slice(0, Math.max(1, limit)).map((s) => s.section);
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
function
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
const SOURCE_LINE = /^\*Source:\s*(\S+?)\*\s*$/m;
|
|
160
|
+
/** Split `llms-full.txt` into `##`-level passages, fence-aware, carrying the page source URL. */
|
|
161
|
+
export function splitPassages(full) {
|
|
162
|
+
const passages = [];
|
|
163
|
+
const urlByTitle = new Map();
|
|
164
|
+
for (const section of splitSections(full)) {
|
|
165
|
+
// The export sometimes repeats a page's H1 after its source line; the
|
|
166
|
+
// repeat inherits the URL recorded for the same title.
|
|
167
|
+
const url = SOURCE_LINE.exec(section.body)?.[1] ?? urlByTitle.get(section.title);
|
|
168
|
+
if (url)
|
|
169
|
+
urlByTitle.set(section.title, url);
|
|
170
|
+
const body = section.body.replace(SOURCE_LINE, '').trim();
|
|
171
|
+
let heading;
|
|
172
|
+
let lines = [];
|
|
173
|
+
let inFence = false;
|
|
174
|
+
const flush = () => {
|
|
175
|
+
const text = lines.join('\n').trim();
|
|
176
|
+
if (text || heading)
|
|
177
|
+
passages.push({ page: section.title, heading, url, body: text });
|
|
178
|
+
};
|
|
179
|
+
for (const line of body.split('\n')) {
|
|
180
|
+
if (/^\s*```/.test(line))
|
|
181
|
+
inFence = !inFence;
|
|
182
|
+
const h2 = !inFence ? /^##\s+(.+)$/.exec(line) : null;
|
|
183
|
+
if (h2) {
|
|
184
|
+
flush();
|
|
185
|
+
heading = h2[1].trim();
|
|
186
|
+
lines = [];
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
lines.push(line);
|
|
190
|
+
}
|
|
191
|
+
flush();
|
|
192
|
+
}
|
|
193
|
+
return passages;
|
|
194
|
+
}
|
|
195
|
+
/** Passages returned from one page at most, so a single long page cannot crowd out the rest. */
|
|
196
|
+
const MAX_PASSAGES_PER_PAGE = 2;
|
|
197
|
+
/** BM25 parameters: term-frequency saturation and length normalisation. */
|
|
198
|
+
const BM25_K1 = 1.2;
|
|
199
|
+
const BM25_B = 0.75;
|
|
200
|
+
function wordCounts(text) {
|
|
201
|
+
const counts = new Map();
|
|
202
|
+
for (const token of text.toLowerCase().split(/[^a-z0-9]+/)) {
|
|
203
|
+
if (token)
|
|
204
|
+
counts.set(token, (counts.get(token) ?? 0) + 1);
|
|
205
|
+
}
|
|
206
|
+
return counts;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Rank passages against a query with BM25 over passage bodies, so a long
|
|
210
|
+
* passage that merely repeats common words does not outrank a short one that
|
|
211
|
+
* answers the question. Heading and page-title matches add a bonus; hyphenated
|
|
212
|
+
* or long tokens (command and flag names) get a phrase boost. Pure (no I/O) so
|
|
213
|
+
* it is unit-testable with a fixture.
|
|
214
|
+
*/
|
|
215
|
+
export function rankPassages(full, query, limit) {
|
|
216
|
+
const { words, phrases } = tokenize(query);
|
|
217
|
+
if (words.length === 0)
|
|
218
|
+
return [];
|
|
219
|
+
const indexed = splitPassages(full).map((passage, index) => {
|
|
220
|
+
const body = passage.body.toLowerCase();
|
|
221
|
+
const tf = wordCounts(body);
|
|
222
|
+
let len = 0;
|
|
223
|
+
for (const n of tf.values())
|
|
224
|
+
len += n;
|
|
225
|
+
return {
|
|
226
|
+
passage,
|
|
227
|
+
index,
|
|
228
|
+
body,
|
|
229
|
+
heading: (passage.heading ?? '').toLowerCase(),
|
|
230
|
+
headingWords: wordCounts(passage.heading ?? ''),
|
|
231
|
+
pageWords: wordCounts(passage.page),
|
|
232
|
+
tf,
|
|
233
|
+
len,
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
if (indexed.length === 0)
|
|
237
|
+
return [];
|
|
238
|
+
const avgLen = indexed.reduce((sum, d) => sum + d.len, 0) / indexed.length || 1;
|
|
239
|
+
const n = indexed.length;
|
|
240
|
+
const idf = (df) => Math.log(1 + (n - df + 0.5) / (df + 0.5));
|
|
241
|
+
const saturate = (tf, len) => (tf * (BM25_K1 + 1)) / (tf + BM25_K1 * (1 - BM25_B + (BM25_B * len) / avgLen));
|
|
242
|
+
const wordIdf = new Map(words.map((w) => [w, idf(indexed.filter((d) => d.tf.has(w) || d.headingWords.has(w)).length)]));
|
|
243
|
+
const phraseIdf = new Map(phrases.map((p) => [p, idf(indexed.filter((d) => d.body.includes(p) || d.heading.includes(p)).length)]));
|
|
244
|
+
const scored = indexed
|
|
245
|
+
.map((d) => {
|
|
246
|
+
let score = 0;
|
|
247
|
+
for (const w of words) {
|
|
248
|
+
const weight = wordIdf.get(w) ?? 0;
|
|
249
|
+
const tf = d.tf.get(w) ?? 0;
|
|
250
|
+
if (tf > 0)
|
|
251
|
+
score += weight * saturate(tf, d.len);
|
|
252
|
+
if (d.headingWords.has(w))
|
|
253
|
+
score += weight * 2;
|
|
254
|
+
if (d.pageWords.has(w))
|
|
255
|
+
score += weight;
|
|
256
|
+
}
|
|
257
|
+
for (const p of phrases) {
|
|
258
|
+
const weight = phraseIdf.get(p) ?? 0;
|
|
259
|
+
const count = countOccurrences(d.body, p);
|
|
260
|
+
if (count > 0)
|
|
261
|
+
score += weight * 1.5 * saturate(count, d.len);
|
|
262
|
+
if (d.heading.includes(p))
|
|
263
|
+
score += weight * 3;
|
|
264
|
+
}
|
|
265
|
+
return { passage: d.passage, score, index: d.index };
|
|
266
|
+
})
|
|
267
|
+
.filter((s) => s.score > 0)
|
|
268
|
+
.sort((a, b) => b.score - a.score || a.index - b.index);
|
|
269
|
+
const perPage = new Map();
|
|
270
|
+
const picked = [];
|
|
271
|
+
for (const { passage } of scored) {
|
|
272
|
+
if (picked.length >= Math.max(1, limit))
|
|
273
|
+
break;
|
|
274
|
+
const seen = perPage.get(passage.page) ?? 0;
|
|
275
|
+
if (seen >= MAX_PASSAGES_PER_PAGE)
|
|
276
|
+
continue;
|
|
277
|
+
perPage.set(passage.page, seen + 1);
|
|
278
|
+
picked.push(passage);
|
|
279
|
+
}
|
|
280
|
+
return picked;
|
|
281
|
+
}
|
|
282
|
+
/** Default and bounds for the per-result excerpt length (characters). */
|
|
283
|
+
export const DEFAULT_EXCERPT_CHARS = 1500;
|
|
284
|
+
export const MIN_EXCERPT_CHARS = 200;
|
|
285
|
+
export const MAX_EXCERPT_CHARS = 8000;
|
|
286
|
+
/**
|
|
287
|
+
* Cut a passage to `maxChars` on a line boundary. An unterminated code fence is
|
|
288
|
+
* closed so the rest of the response still renders as prose.
|
|
289
|
+
*/
|
|
290
|
+
export function excerpt(body, maxChars) {
|
|
291
|
+
if (body.length <= maxChars)
|
|
292
|
+
return { text: body, truncated: false };
|
|
293
|
+
let cut = body.slice(0, maxChars);
|
|
294
|
+
const lastBreak = cut.lastIndexOf('\n');
|
|
295
|
+
if (lastBreak > maxChars / 2)
|
|
296
|
+
cut = cut.slice(0, lastBreak);
|
|
297
|
+
cut = cut.trimEnd();
|
|
298
|
+
const fences = cut.split('\n').filter((line) => /^\s*```/.test(line)).length;
|
|
299
|
+
if (fences % 2 === 1)
|
|
300
|
+
cut += '\n```';
|
|
301
|
+
return { text: cut, truncated: true };
|
|
165
302
|
}
|
|
166
303
|
/** Fetch the docs index (`llms.txt`) — the page list returned when no query is given. */
|
|
167
304
|
export async function getDocsIndex(docsUrl) {
|
|
168
305
|
return fetchCached(`${docsUrl}/llms.txt`);
|
|
169
306
|
}
|
|
307
|
+
/** Render ranked passages: page › heading, source URL, bounded excerpt. Pure. */
|
|
308
|
+
export function renderPassages(query, matches, maxChars) {
|
|
309
|
+
if (matches.length === 0) {
|
|
310
|
+
return `No documentation passage matched "${query}". The full page index is returned when the query is omitted.`;
|
|
311
|
+
}
|
|
312
|
+
const blocks = matches.map((m) => {
|
|
313
|
+
const title = [m.page || 'Untitled', m.heading].filter(Boolean).join(' › ');
|
|
314
|
+
const { text, truncated } = excerpt(m.body, maxChars);
|
|
315
|
+
const source = m.url ? `Source: ${m.url}\n\n` : '';
|
|
316
|
+
const more = truncated ? `\n\n…(excerpt truncated${m.url ? `; full page: ${m.url}` : ''})` : '';
|
|
317
|
+
return `## ${title}\n${source}${text}${more}`;
|
|
318
|
+
});
|
|
319
|
+
return `Top ${matches.length} documentation passage(s) for "${query}":\n\n${blocks.join('\n\n---\n\n')}`;
|
|
320
|
+
}
|
|
170
321
|
/**
|
|
171
|
-
* Search the docs and return
|
|
172
|
-
*
|
|
173
|
-
* note pointing at the index.
|
|
322
|
+
* Search the docs and return the top matching passages, each with its source
|
|
323
|
+
* link and a bounded excerpt. Falls back to a "nothing matched" note.
|
|
174
324
|
*/
|
|
175
|
-
export async function searchDocs(docsUrl, query,
|
|
325
|
+
export async function searchDocs(docsUrl, query, options) {
|
|
176
326
|
const full = await fetchCached(`${docsUrl}/llms-full.txt`);
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
return (`No documentation section matched "${query}". ` +
|
|
180
|
-
'Call search_docs with no query to list every available page, then read the relevant one.');
|
|
181
|
-
}
|
|
182
|
-
const blocks = matches.map((m) => `## ${m.title || 'Untitled'}\n\n${clampSection(m.body)}`);
|
|
183
|
-
return `Top ${matches.length} documentation section(s) for "${query}":\n\n${blocks.join('\n\n---\n\n')}`;
|
|
327
|
+
const maxChars = Math.min(MAX_EXCERPT_CHARS, Math.max(MIN_EXCERPT_CHARS, options.maxChars ?? DEFAULT_EXCERPT_CHARS));
|
|
328
|
+
return renderPassages(query, rankPassages(full, query, options.limit), maxChars);
|
|
184
329
|
}
|
|
185
330
|
//# sourceMappingURL=docs.js.map
|
package/dist/docs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}
|
package/dist/icon-workflow.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Static content for the free `generate_icon_workflow` MCP tool.
|
|
3
3
|
*
|
|
4
|
-
* The free icon path
|
|
5
|
-
*
|
|
4
|
+
* The free icon path spends ZERO Extenshi tokens and touches no Extenshi
|
|
5
|
+
* infrastructure: the SVG master is authored locally, and
|
|
6
6
|
* `@extenshi/cli icon preview` renders the verification page fully offline.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* The tool returns the icon specification and the exact commands as reference
|
|
8
|
+
* material — requirements, file formats and a process description — written so
|
|
9
|
+
* a developer could read it on its own.
|
|
9
10
|
*
|
|
10
11
|
* Kept as a template function (not a docs fetch) so the tool works without
|
|
11
12
|
* network access and never fails on a docs outage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-workflow.d.ts","sourceRoot":"","sources":["../src/icon-workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"icon-workflow.d.ts","sourceRoot":"","sources":["../src/icon-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA0DjE"}
|
package/dist/icon-workflow.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Static content for the free `generate_icon_workflow` MCP tool.
|
|
3
3
|
*
|
|
4
|
-
* The free icon path
|
|
5
|
-
*
|
|
4
|
+
* The free icon path spends ZERO Extenshi tokens and touches no Extenshi
|
|
5
|
+
* infrastructure: the SVG master is authored locally, and
|
|
6
6
|
* `@extenshi/cli icon preview` renders the verification page fully offline.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* The tool returns the icon specification and the exact commands as reference
|
|
8
|
+
* material — requirements, file formats and a process description — written so
|
|
9
|
+
* a developer could read it on its own.
|
|
9
10
|
*
|
|
10
11
|
* Kept as a template function (not a docs fetch) so the tool works without
|
|
11
12
|
* network access and never fails on a docs outage.
|
|
@@ -13,44 +14,44 @@
|
|
|
13
14
|
export function renderIconWorkflow(args) {
|
|
14
15
|
const name = args.extensionName?.trim() || 'My Extension';
|
|
15
16
|
const iconFile = 'icon.svg';
|
|
16
|
-
return `# Browser-extension icon —
|
|
17
|
+
return `# Browser-extension icon — specification and local workflow
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
Cost and access: free and fully local. The SVG master is authored in the project, and the
|
|
19
20
|
Extenshi CLI renders an offline verification page. No API key, no credits, no uploads.
|
|
20
21
|
|
|
21
|
-
## Icon requirements (
|
|
22
|
+
## Icon requirements (Chrome, Firefox, Edge)
|
|
22
23
|
|
|
23
24
|
- Deliverables: PNG at 16, 32, 48 and 128 px (128 px is the store-listing size), plus the
|
|
24
25
|
SVG master. Chrome Web Store also uses a 440×280 promo tile.
|
|
25
|
-
- The 16 px toolbar render is
|
|
26
|
+
- The 16 px toolbar render is the most-seen size, so the design targets it:
|
|
26
27
|
- one bold silhouette, minimal interior detail, generous negative space;
|
|
27
|
-
- no text
|
|
28
|
-
-
|
|
28
|
+
- no text and no thin outlines (below 1.5 px at 16 px they dissolve);
|
|
29
|
+
- about 1 px of breathing room to the edges (toolbar buttons crop nothing, but
|
|
29
30
|
adjacent icons sit 8–12 px away).
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
flat shapes, no embedded rasters, no scripts, no external references.
|
|
31
|
+
- Legible on light AND dark toolbars: mid-gray fills (around #7a7a7a) melt into both
|
|
32
|
+
themes; a saturated brand color or a contrasting outline/backdrop shape holds up.
|
|
33
|
+
- File format: a single \`<svg>\` element, square viewBox (e.g. \`viewBox="0 0 24 24"\` or
|
|
34
|
+
\`0 0 128 128\`), flat shapes, no embedded rasters, no scripts, no external references.
|
|
34
35
|
|
|
35
|
-
##
|
|
36
|
+
## Process
|
|
36
37
|
|
|
37
|
-
1. **
|
|
38
|
-
|
|
38
|
+
1. **Author the SVG master** — saved as \`${iconFile}\` in the project. The silhouette is
|
|
39
|
+
settled at conceptual 16 px scale before any detail is added.
|
|
39
40
|
2. **Render the verification page** (free, offline):
|
|
40
41
|
|
|
41
42
|
\`\`\`bash
|
|
42
43
|
npx @extenshi/cli@latest icon preview ${iconFile} --name "${name}"
|
|
43
44
|
\`\`\`
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
mockups with the icon pinned in place, switchable palettes (light, tinted, dark,
|
|
47
|
-
saturated
|
|
48
|
-
store-size matrix, and an 8× pixel magnifier of the 16 px render.
|
|
49
|
-
3. **
|
|
50
|
-
(
|
|
51
|
-
4. **Export**
|
|
52
|
-
\`icons/{16,32,48,128}.png\`, the SVG master and \`manifest-icons.json
|
|
53
|
-
|
|
46
|
+
The command writes a self-contained HTML file and opens it: Chrome / Firefox / Edge
|
|
47
|
+
toolbar mockups with the icon pinned in place, switchable palettes (light, tinted, dark,
|
|
48
|
+
black, saturated, plus a custom color picker) with an automatic contrast warning per
|
|
49
|
+
palette, a store-size matrix, and an 8× pixel magnifier of the 16 px render.
|
|
50
|
+
3. **Review and iterate.** The developer reviews the page; after each edit to \`${iconFile}\`
|
|
51
|
+
the same command re-renders it (\`--no-open\` on re-runs; refreshing the open tab is enough).
|
|
52
|
+
4. **Export** from the page buttons: per-size PNGs, or a ZIP containing
|
|
53
|
+
\`icons/{16,32,48,128}.png\`, the SVG master and \`manifest-icons.json\`. The page also shows
|
|
54
|
+
this manifest snippet:
|
|
54
55
|
|
|
55
56
|
\`\`\`json
|
|
56
57
|
{
|
|
@@ -58,15 +59,15 @@ Extenshi CLI renders an offline verification page. No API key, no credits, no up
|
|
|
58
59
|
"action": { "default_icon": { "16": "icons/16.png", "32": "icons/32.png" } }
|
|
59
60
|
}
|
|
60
61
|
\`\`\`
|
|
61
|
-
5.
|
|
62
|
-
\`manifest.json\` as above.
|
|
62
|
+
5. **Install** — the exported \`icons/\` folder is unpacked into the extension and referenced
|
|
63
|
+
from \`manifest.json\` as above.
|
|
63
64
|
|
|
64
65
|
## Related
|
|
65
66
|
|
|
66
|
-
- Hosted AI icon generation (no local
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
- Hosted AI icon generation (no local tooling needed): https://dojo.extenshi.io/tools/icon-generator
|
|
68
|
+
- Uploading a finished icon into a dojo project is planned and not available yet; there is
|
|
69
|
+
no upload API.
|
|
70
|
+
- Documentation: https://docs.extenshi.io/developers/icon-generator
|
|
70
71
|
`;
|
|
71
72
|
}
|
|
72
73
|
//# sourceMappingURL=icon-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-workflow.js","sourceRoot":"","sources":["../src/icon-workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"icon-workflow.js","sourceRoot":"","sources":["../src/icon-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,cAAc,CAAA;IACzD,MAAM,QAAQ,GAAG,UAAU,CAAA;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;4CAqBoC,QAAQ;;;;;2CAKT,QAAQ,YAAY,IAAI;;;;;;;kFAOe,QAAQ;;;;;;;;;;;;;;;;;;;;;CAqBzF,CAAA;AACD,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Static reference for the free `localize_workflow` MCP tool: the local
|
|
3
|
+
* localization process, the translation-bundle file format and the release
|
|
4
|
+
* checks. Written as documentation a developer can read on its own — it
|
|
5
|
+
* describes the process and its constraints, it does not address the reader.
|
|
6
|
+
*/
|
|
2
7
|
export declare function renderLocalizeWorkflow(): string;
|
|
3
8
|
//# sourceMappingURL=localize-workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localize-workflow.d.ts","sourceRoot":"","sources":["../src/localize-workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"localize-workflow.d.ts","sourceRoot":"","sources":["../src/localize-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAiG/C"}
|
|
@@ -1,35 +1,45 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Static reference for the free `localize_workflow` MCP tool: the local
|
|
3
|
+
* localization process, the translation-bundle file format and the release
|
|
4
|
+
* checks. Written as documentation a developer can read on its own — it
|
|
5
|
+
* describes the process and its constraints, it does not address the reader.
|
|
6
|
+
*/
|
|
2
7
|
export function renderLocalizeWorkflow() {
|
|
3
|
-
return `# Local extension localization
|
|
8
|
+
return `# Local extension localization — reference
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
Cost and access: free. No Extenshi credits and no API key. Translation happens with
|
|
11
|
+
whichever translation provider the developer already uses; the Extenshi CLI prepares
|
|
12
|
+
and validates the local files offline.
|
|
8
13
|
|
|
9
14
|
## Availability
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
\`yarn workspace @extenshi/cli build\` and
|
|
15
|
-
\`node tools/extenshi-cli/dist/cli.js\`
|
|
16
|
+
The \`localize\` command ships in recent \`@extenshi/cli\` releases; \`extenshi localize --help\`
|
|
17
|
+
shows whether the installed version includes it. A merged change is not the same as an
|
|
18
|
+
npm release — the npm \`latest\` tag is the reference for what is installable. Inside the
|
|
19
|
+
Extenshi repository the CLI is built with \`yarn workspace @extenshi/cli build\` and run as
|
|
20
|
+
\`node tools/extenshi-cli/dist/cli.js\` from the repository root in place of \`extenshi\`.
|
|
16
21
|
|
|
17
|
-
##
|
|
22
|
+
## Scope
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
Input: \`manifest.json\` with \`default_locale\`, plus \`_locales/<default_locale>/messages.json\`.
|
|
25
|
+
Covered: those messages, including the manifest name/description references.
|
|
26
|
+
Not covered: full store descriptions and hardcoded UI strings — they need separate
|
|
27
|
+
extraction and review.
|
|
28
|
+
|
|
29
|
+
## Step 1 — Prepare
|
|
23
30
|
|
|
24
31
|
\`\`\`bash
|
|
25
32
|
extenshi localize prepare ./extension --lang fr,de,es --output ./localization --protect MyBrand
|
|
26
33
|
\`\`\`
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
locale.
|
|
30
|
-
When localization.json supplies targetLocales
|
|
31
|
-
are combined with
|
|
32
|
-
|
|
35
|
+
Output: \`localization-request.json\`, listing missing, stale or untracked messages grouped
|
|
36
|
+
by locale. Each run needs a fresh output directory; prepare does not overwrite an existing
|
|
37
|
+
request. When \`localization.json\` supplies \`targetLocales\`, \`--lang\` is optional, and its
|
|
38
|
+
\`protectedTerms\` are combined with \`--protect\`.
|
|
39
|
+
|
|
40
|
+
The fields \`version\`, \`sourceLocale\`, the locale keys and \`sourceHashes\` are part of the
|
|
41
|
+
contract and stay unchanged. Per-locale structure (the hash is illustrative; the real
|
|
42
|
+
prepared hash is kept):
|
|
33
43
|
|
|
34
44
|
\`\`\`json
|
|
35
45
|
{
|
|
@@ -44,42 +54,50 @@ locale has this structure (the hash shown is illustrative; retain the actual pre
|
|
|
44
54
|
}
|
|
45
55
|
\`\`\`
|
|
46
56
|
|
|
47
|
-
## Translate and review
|
|
57
|
+
## Step 2 — Translate and review
|
|
58
|
+
|
|
59
|
+
Translation rules:
|
|
48
60
|
|
|
49
|
-
|
|
50
|
-
names and definitions, positional substitutions, escaped dollar signs
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
deleted. Review these removals together with the translated messages. A removal-only
|
|
55
|
-
locale has empty messages and sourceHashes objects and still requires reviewed: true.
|
|
61
|
+
- Only message text is translated into each target language.
|
|
62
|
+
- Keys, placeholder names and definitions, positional substitutions, escaped dollar signs
|
|
63
|
+
and protected terms are preserved exactly.
|
|
64
|
+
- Descriptions stay as translator context.
|
|
65
|
+
- Copy reflects the actual product: no new features, guarantees or marketing claims.
|
|
56
66
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
The edited bundle is saved as \`./localization/translations.json\`. A \`removeKeys\` array, when
|
|
68
|
+
present, lists translations whose source keys were deleted; it is preserved and reviewed
|
|
69
|
+
together with the translated messages. A removal-only locale has empty \`messages\` and
|
|
70
|
+
\`sourceHashes\` objects and still carries the review marker.
|
|
61
71
|
|
|
62
|
-
|
|
72
|
+
Review covers meaning, tone, brand spelling and truthful claims. Each reviewed locale object
|
|
73
|
+
gets \`"reviewed": true\` next to \`sourceHashes\` and \`messages\`; apply rejects a locale without
|
|
74
|
+
this marker. Source hashes detect source edits made while translation was in progress — when
|
|
75
|
+
the source changed, a fresh prepare and re-translation of the changed entries is required.
|
|
76
|
+
|
|
77
|
+
## Step 3 — Apply and validate
|
|
63
78
|
|
|
64
79
|
\`\`\`bash
|
|
65
80
|
extenshi localize apply ./extension --translations ./localization/translations.json --protect MyBrand
|
|
66
81
|
extenshi localize check ./extension --protect MyBrand
|
|
67
82
|
\`\`\`
|
|
68
83
|
|
|
69
|
-
Apply validates the bundle before
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
Apply validates the bundle before it updates \`_locales\`. \`.extenshi-localization.json\` belongs
|
|
85
|
+
in the project: it records source and reviewed target hashes for incremental updates. Direct
|
|
86
|
+
edits to target files require re-review, and changed source messages require a new prepare.
|
|
87
|
+
Validation errors (placeholders, protected terms, listing risks) are resolved in the copy;
|
|
88
|
+
they are not bypassed to reach a passing result.
|
|
89
|
+
|
|
90
|
+
## Release checks
|
|
91
|
+
|
|
92
|
+
- \`review-risk\` runs for every target locale (exact syntax: the installed CLI's help); listing
|
|
93
|
+
risks are resolved against the real build and the reports are kept.
|
|
94
|
+
- A fluent reviewer inspects the copy, full store descriptions and screenshots.
|
|
95
|
+
- The packaged extension is loaded under each target language: popup/options, long strings,
|
|
96
|
+
truncation and keyboard accessibility. Arabic/Hebrew additionally need RTL direction,
|
|
97
|
+
layout and mixed text/number checks — a locale file or a passing CLI check does not prove
|
|
98
|
+
RTL UI support.
|
|
99
|
+
- Every browser artifact is rebuilt and checked. Publication stays within the developer's
|
|
100
|
+
authorization.
|
|
83
101
|
|
|
84
102
|
Documentation: https://docs.extenshi.io/developers/localization
|
|
85
103
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localize-workflow.js","sourceRoot":"","sources":["../src/localize-workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"localize-workflow.js","sourceRoot":"","sources":["../src/localize-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FP,CAAA;AACD,CAAC"}
|
package/dist/pay.d.ts
CHANGED
|
@@ -208,7 +208,7 @@ export type PayMethod = keyof typeof paySchemas;
|
|
|
208
208
|
export type PayBff = {
|
|
209
209
|
[M in PayMethod]: (input: z.infer<(typeof paySchemas)[M]>) => Promise<unknown>;
|
|
210
210
|
};
|
|
211
|
-
export declare const PAY_OPERATIONS: readonly [readonly ["listPayApps", "list_pay_apps", "list", "payApp.list", false, "List your independent Pay applications. No development project required.
|
|
211
|
+
export declare const PAY_OPERATIONS: readonly [readonly ["listPayApps", "list_pay_apps", "list", "payApp.list", false, "List your independent Pay applications. No development project required. Paginated: nextCursor is set while more results exist."], readonly ["createPayApp", "create_pay_app", "create", "payApp.create", true, "Create an independent Pay application; linking a development project is optional. Not idempotent: each call creates a new application, including a call repeated after a timeout."], readonly ["getPayApp", "get_pay_app", "get", "payApp.get", false, "Read your Pay application and optional project link."], readonly ["getPayReadiness", "get_pay_readiness", "readiness", "payApp.readiness", false, "Check current checkout and launch prerequisites. A passing checkout check does not prove a live external purchase or SDK publication."], readonly ["linkPayApp", "link_pay_app", "link", "payApp.link", true, "Link your Pay application to your development project. Existing purchases remain attached to the Pay application."], readonly ["unlinkPayApp", "unlink_pay_app", "unlink", "payApp.unlink", true, "Remove the optional development-project link without deleting Pay data."], readonly ["archivePayApp", "archive_pay_app", "archive", "payApp.archive", true, "Archive your application and stop new checkout. Payment records and existing entitlements are preserved."], readonly ["exportPayData", "export_pay_data", "export", "payApp.export", false, "Export one page of one resource (offers, payments, subscriptions, entitlements or customers). nextCursor is null on the last page. The output contains sensitive customer and payment data."], readonly ["getPaySeller", "get_pay_seller", "seller", "paySeller.get", false, "Read seller connection, public profile, offers, the publishable SDK key and the public entitlement verification key. Those two keys are the ones meant to be embedded in extension code; secret keys are not part of the response. Agreement signing and KYC take place in the browser."], readonly ["connectPaySeller", "connect_pay_seller", "connect", "paySeller.connect", true, "Start Stripe Connect onboarding and return a browser action URL. KYC and legal acceptance are completed by the author at that URL; this tool does not perform them."], readonly ["refreshPaySeller", "refresh_pay_seller", "refresh", "paySeller.refreshStatus", true, "Refresh current payment-provider onboarding status. This does not complete KYC or accept agreements."], readonly ["setPaySellerProfile", "set_pay_seller_profile", "profile", "paySeller.setPublicProfile", true, "Save the public seller profile: display name, support URL or email, and terms URL. The values are stored as provided and are publicly visible."], readonly ["upsertPayOffer", "upsert_pay_offer", "offer-upsert", "paySeller.upsertOffer", true, "Create or update an offer keyed by a stable SKU. Price is in minor currency units. Subscriptions keep the given billing interval; one-time and lifetime offers store no interval. Price and features are stored as provided."], readonly ["archivePayOffer", "archive_pay_offer", "offer-archive", "paySeller.archiveOffer", true, "Stop offering a SKU for new checkout; historical purchases are preserved."], readonly ["setPayEnabled", "set_pay_enabled", "enable", "paySeller.setEnabled", true, "Enable or disable new payments for the application; requires a connected payment provider. Enabling re-reads the seller status from the provider (charges and payouts). It does not verify the public profile, agreement or offer sync: buyers can check out only when every readiness check reported by get_pay_readiness passes. Enabling is a live commerce change."], readonly ["rotatePayKey", "rotate_pay_key", "rotate-key", "paySeller.rotatePublishableKey", true, "Generate a new publishable SDK key. Not idempotent: each call issues another key. Prior keys remain accepted for installed extension builds; this does not revoke any secret."]];
|
|
212
212
|
/** The legacy seller API uses projectId as the payment namespace. Never substitute a linked project ID. */
|
|
213
213
|
export declare function payWireInput(method: PayMethod, input: Record<string, unknown>): Record<string, unknown>;
|
|
214
214
|
//# sourceMappingURL=pay.d.ts.map
|
package/dist/pay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDb,CAAA;AACV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAA;AAC/C,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAAE,CAAA;AACvG,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDb,CAAA;AACV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAA;AAC/C,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAAE,CAAA;AACvG,eAAO,MAAM,cAAc,m1HAiIjB,CAAA;AAEV,2GAA2G;AAC3G,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIvG"}
|