@extenshi/mcp 0.6.0 → 0.7.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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-workspace.d.ts","sourceRoot":"","sources":["../src/project-workspace.ts"],"names":[],"mappings":"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"}
@@ -1,350 +0,0 @@
1
- /** Versioned metadata contract. Source files, credentials and full logs never belong here. */
2
- import { createHash } from 'node:crypto';
3
- import { z } from 'zod';
4
- export const WORKSPACE_SCHEMA_VERSION = 1;
5
- export const MAX_WORKSPACE_BYTES = 256 * 1024;
6
- const digest = z.string().regex(/^[a-f0-9]{64}$/);
7
- const browser = z.enum(['chrome', 'firefox', 'edge']);
8
- const text = z.string().min(1).max(500);
9
- export const provenanceSchema = z
10
- .object({
11
- source: z.enum(['local', 'agent']),
12
- observedAt: z.string().datetime({ offset: true }),
13
- branch: text.optional(),
14
- commit: z
15
- .string()
16
- .regex(/^[a-f0-9]{40,64}$/)
17
- .optional(),
18
- dirtyTreeDigest: digest.optional(),
19
- toolVersion: text,
20
- })
21
- .strict();
22
- // passthrough is intentional: unknown and browser-specific manifest fields survive round trips.
23
- export const manifestSchema = z
24
- .object({
25
- manifest_version: z.union([z.literal(2), z.literal(3)]),
26
- name: z.string().min(1),
27
- version: z.string().min(1),
28
- })
29
- .passthrough()
30
- .superRefine((value, ctx) => {
31
- if (Buffer.byteLength(JSON.stringify(value)) > 128 * 1024)
32
- ctx.addIssue({ code: 'custom', message: 'Manifest exceeds 128 KiB' });
33
- const visit = (v) => {
34
- if (!v || typeof v !== 'object')
35
- return;
36
- for (const [key, child] of Object.entries(v)) {
37
- if (['__proto__', 'prototype', 'constructor'].includes(key))
38
- ctx.addIssue({ code: 'custom', message: 'Unsafe object key' });
39
- visit(child);
40
- }
41
- };
42
- visit(value);
43
- });
44
- const manifestObservation = z.object({ manifest: manifestSchema, provenance: provenanceSchema }).strict();
45
- const manifestSet = z
46
- .object({
47
- chrome: manifestObservation.optional(),
48
- firefox: manifestObservation.optional(),
49
- edge: manifestObservation.optional(),
50
- })
51
- .strict();
52
- export const releaseSchema = z
53
- .object({
54
- browser,
55
- version: text,
56
- artifactDigest: digest,
57
- commit: z
58
- .string()
59
- .regex(/^[a-f0-9]{40,64}$/)
60
- .optional(),
61
- dirtyTreeDigest: digest.optional(),
62
- locales: z
63
- .array(z.string().regex(/^[a-z]{2,3}(?:[_-][A-Za-z0-9]{2,8})*$/))
64
- .min(1)
65
- .max(100),
66
- manifestDigest: digest,
67
- sourceManifestDigest: digest.optional(),
68
- listingDigest: digest.optional(),
69
- policyDigest: digest.optional(),
70
- paymentDigest: digest.optional(),
71
- paymentRequired: z.boolean(),
72
- })
73
- .strict()
74
- .refine((v) => v.commit || v.dirtyTreeDigest, 'A release must identify its commit or dirty snapshot');
75
- export const specSchema = z
76
- .object({
77
- excludedFeatures: z.array(text).max(100),
78
- targetLocales: z.array(text).max(100),
79
- tasks: z
80
- .array(z
81
- .object({
82
- id: text,
83
- status: z.enum([
84
- 'not_started',
85
- 'in_progress',
86
- 'blocked',
87
- 'completed',
88
- 'deferred',
89
- 'not_applicable',
90
- ]),
91
- assignee: text,
92
- reason: text,
93
- })
94
- .strict())
95
- .max(100),
96
- })
97
- .strict();
98
- export const workspacePatchSchema = z
99
- .object({
100
- projectId: z.string().uuid(),
101
- schemaVersion: z.literal(1),
102
- expectedRevision: z.number().int().nonnegative(),
103
- idempotencyKey: z.string().uuid(),
104
- provenance: provenanceSchema,
105
- patch: z
106
- .object({
107
- repository: z
108
- .object({ repo: z.string().regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/), defaultBranch: text })
109
- .strict()
110
- .optional(),
111
- sourceManifests: manifestSet.optional(),
112
- builtManifests: manifestSet.optional(),
113
- spec: specSchema.optional(),
114
- release: releaseSchema.optional(),
115
- })
116
- .strict(),
117
- // Explicit JSON pointers. Missing properties never delete server data.
118
- tombstones: z.array(z.string().min(1).max(500)).max(100).default([]),
119
- })
120
- .strict();
121
- export const importManifestSchema = z
122
- .object({
123
- projectId: z.string().uuid(),
124
- schemaVersion: z.literal(1),
125
- expectedRevision: z.number().int().nonnegative(),
126
- idempotencyKey: z.string().uuid(),
127
- provenance: provenanceSchema,
128
- browser,
129
- kind: z.enum(['source', 'built']).default('source'),
130
- manifest: manifestSchema,
131
- /** Default-locale messages resolve project labels; the original __MSG_*__ tokens stay intact. */
132
- messages: z.record(z.object({ message: z.string().max(5000) }).passthrough()).optional(),
133
- tombstones: z.array(z.string().min(1).max(500)).max(100).default([]),
134
- dryRun: z.boolean().default(true),
135
- expectedStateHash: digest.optional(),
136
- })
137
- .strict()
138
- .superRefine((value, ctx) => {
139
- const prefix = `/${value.kind === 'source' ? 'sourceManifests' : 'builtManifests'}/${value.browser}/`;
140
- if (value.tombstones.some((pointer) => !pointer.startsWith(`${prefix}manifest/`) && !pointer.startsWith(`${prefix}provenance/`)))
141
- ctx.addIssue({
142
- code: 'custom',
143
- message: 'Import tombstones must address fields of this browser manifest or its provenance.',
144
- });
145
- if (!value.dryRun && !value.expectedStateHash)
146
- ctx.addIssue({
147
- code: 'custom',
148
- message: 'Preview the import and supply expectedStateHash before applying it.',
149
- });
150
- if (Buffer.byteLength(JSON.stringify(value)) > MAX_WORKSPACE_BYTES)
151
- ctx.addIssue({ code: 'custom', message: 'Manifest import exceeds 256 KiB' });
152
- });
153
- export const evidenceSchema = z
154
- .object({
155
- projectId: z.string().uuid(),
156
- idempotencyKey: z.string().uuid(),
157
- kind: z.enum([
158
- 'tests',
159
- 'scan',
160
- 'permissions',
161
- 'privacy',
162
- 'listing',
163
- 'screenshots',
164
- 'payment',
165
- 'installed',
166
- ]),
167
- browser,
168
- locale: z.string().min(2).max(35).optional(),
169
- artifactDigest: digest,
170
- inputDigest: digest,
171
- status: z.enum(['passed', 'failed']),
172
- provenance: provenanceSchema,
173
- // Metadata reference only; the server never fetches this URL.
174
- reportUrl: z
175
- .string()
176
- .url()
177
- .max(2000)
178
- .refine((s) => {
179
- const u = new URL(s);
180
- return u.protocol === 'https:' && !u.username && !u.password && !u.search && !u.hash;
181
- }, 'Use a credential-free HTTPS report URL without query or fragment')
182
- .optional(),
183
- })
184
- .strict();
185
- export function stableJson(value) {
186
- if (Array.isArray(value))
187
- return `[${value.map(stableJson).join(',')}]`;
188
- if (value && typeof value === 'object')
189
- return `{${Object.keys(value)
190
- .sort()
191
- .map((k) => `${JSON.stringify(k)}:${stableJson(value[k])}`)
192
- .join(',')}}`;
193
- return JSON.stringify(value) ?? 'null';
194
- }
195
- export const hashMetadata = (value) => createHash('sha256').update(stableJson(value)).digest('hex');
196
- const object = (v) => Boolean(v) && typeof v === 'object' && !Array.isArray(v);
197
- const equal = (a, b) => a === undefined || b === undefined ? a === b : stableJson(a) === stableJson(b);
198
- const escapePointer = (s) => s.replace(/~/g, '~0').replace(/\//g, '~1');
199
- /** Server-held base revision makes three-way conflict detection authoritative. Arrays are atomic. */
200
- export function mergeWorkspace(base, current, input) {
201
- const merged = structuredClone(current);
202
- const conflicts = [];
203
- const applied = [];
204
- const merge = (b, c, patch, prefix) => {
205
- for (const [key, local] of Object.entries(patch)) {
206
- const pointer = `${prefix}/${escapePointer(key)}`;
207
- if (equal(local, b[key]))
208
- continue;
209
- if (object(local) &&
210
- !(c[key] === undefined && b[key] !== undefined) &&
211
- (c[key] === undefined || object(c[key])) &&
212
- (b[key] === undefined || object(b[key]))) {
213
- const before = applied.length;
214
- const child = object(c[key]) ? structuredClone(c[key]) : {};
215
- merge(object(b[key]) ? b[key] : {}, child, local, pointer);
216
- if (!equal(child, c[key])) {
217
- c[key] = child;
218
- if (applied.length === before)
219
- applied.push(pointer);
220
- }
221
- }
222
- else if (equal(local, c[key]))
223
- continue;
224
- else if (!equal(b[key], c[key]))
225
- conflicts.push({ path: pointer, base: b[key] ?? null, local, server: c[key] ?? null });
226
- else {
227
- c[key] = structuredClone(local);
228
- applied.push(pointer);
229
- }
230
- }
231
- };
232
- merge(base, merged, input.patch, '');
233
- for (const pointer of input.tombstones) {
234
- const keys = pointer
235
- .split('/')
236
- .slice(1)
237
- .map((s) => s.replace(/~1/g, '/').replace(/~0/g, '~'));
238
- if (!pointer.startsWith('/') ||
239
- !keys.length ||
240
- !['repository', 'sourceManifests', 'builtManifests', 'spec', 'release'].includes(keys[0]) ||
241
- keys.some((k) => !k || ['__proto__', 'constructor', 'prototype'].includes(k)))
242
- throw new Error('INVALID_TOMBSTONE');
243
- let b = base, c = merged;
244
- for (const k of keys.slice(0, -1)) {
245
- b = object(b[k]) ? b[k] : {};
246
- c = object(c[k]) ? c[k] : {};
247
- }
248
- const key = keys.at(-1);
249
- if (!key)
250
- throw new Error('INVALID_TOMBSTONE');
251
- if (c[key] === undefined)
252
- continue;
253
- if (!equal(b[key], c[key]))
254
- conflicts.push({ path: pointer, base: b[key] ?? null, local: null, server: c[key] });
255
- else {
256
- delete c[key];
257
- applied.push(pointer);
258
- }
259
- }
260
- if (Buffer.byteLength(stableJson(merged)) > MAX_WORKSPACE_BYTES)
261
- throw new Error('WORKSPACE_TOO_LARGE');
262
- return {
263
- document: conflicts.length ? current : merged,
264
- applied: conflicts.length ? [] : applied,
265
- conflicts,
266
- };
267
- }
268
- /** Evidence is a caller report, never an agent-issued CI attestation. */
269
- export function releaseReadiness(document, evidence) {
270
- const release = document.release;
271
- if (!release)
272
- return {
273
- ready: false,
274
- basis: 'reported-evidence',
275
- ciVerified: false,
276
- blockers: ['RELEASE_NOT_RECORDED'],
277
- checks: [],
278
- nextActions: ['Record the exact browser, version, artifact digest and source revision.'],
279
- };
280
- const inputs = {
281
- tests: release.artifactDigest,
282
- scan: release.artifactDigest,
283
- installed: release.artifactDigest,
284
- permissions: release.manifestDigest,
285
- privacy: release.policyDigest,
286
- listing: release.listingDigest,
287
- screenshots: release.listingDigest,
288
- payment: release.paymentDigest,
289
- };
290
- const required = [
291
- 'tests',
292
- 'scan',
293
- 'permissions',
294
- 'privacy',
295
- 'listing',
296
- 'screenshots',
297
- 'installed',
298
- ...(release.paymentRequired ? ['payment'] : []),
299
- ];
300
- const checks = required.flatMap((kind) => (['listing', 'screenshots'].includes(kind) ? release.locales : [undefined]).map((locale) => {
301
- const candidates = evidence.filter((e) => e.kind === kind && e.browser === release.browser && e.locale === locale);
302
- const current = candidates.filter((e) => e.artifactDigest === release.artifactDigest &&
303
- e.inputDigest === inputs[kind] &&
304
- e.provenance.commit === release.commit &&
305
- e.provenance.dirtyTreeDigest === release.dirtyTreeDigest);
306
- const latest = current.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt))[0];
307
- return {
308
- kind,
309
- locale: locale ?? null,
310
- verification: latest?.status ?? (candidates.length ? 'stale' : 'unknown'),
311
- evidenceId: latest?.id ?? null,
312
- source: latest?.provenance.source ?? null,
313
- ciVerified: false,
314
- };
315
- }));
316
- const blockers = checks
317
- .filter((c) => c.verification !== 'passed')
318
- .map((c) => `${c.kind}${c.locale ? `:${c.locale}` : ''}:${c.verification}`);
319
- const built = document.builtManifests?.[release.browser];
320
- if (!built)
321
- blockers.push('BUILT_MANIFEST_NOT_RECORDED');
322
- else {
323
- if (hashMetadata(built.manifest) !== release.manifestDigest)
324
- blockers.push('BUILT_MANIFEST_CHANGED');
325
- if (built.manifest.version !== release.version)
326
- blockers.push('RELEASE_VERSION_MISMATCH');
327
- if (built.provenance.commit !== release.commit ||
328
- built.provenance.dirtyTreeDigest !== release.dirtyTreeDigest)
329
- blockers.push('BUILD_SOURCE_REVISION_MISMATCH');
330
- }
331
- const source = document.sourceManifests?.[release.browser];
332
- if (source && hashMetadata(source.manifest) !== release.sourceManifestDigest)
333
- blockers.push('SOURCE_MANIFEST_CHANGED_OR_UNBOUND');
334
- for (const locale of document.spec?.targetLocales ?? [])
335
- if (!release.locales.includes(locale))
336
- blockers.push(`LOCALE_NOT_IN_RELEASE:${locale}`);
337
- for (const task of document.spec?.tasks ?? [])
338
- if (task.status === 'blocked')
339
- blockers.push(`TASK_BLOCKED:${task.id}`);
340
- return {
341
- ready: blockers.length === 0,
342
- basis: 'reported-evidence',
343
- ciVerified: false,
344
- release,
345
- checks,
346
- blockers,
347
- nextActions: blockers.map((b) => `Resolve ${b} for this artifact.`),
348
- };
349
- }
350
- //# sourceMappingURL=project-workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-workspace.js","sourceRoot":"","sources":["../src/project-workspace.ts"],"names":[],"mappings":"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"}