@collage-dam/mcp-server 0.1.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/.env.example +56 -0
- package/CHANGELOG.md +90 -0
- package/LICENSE +21 -0
- package/README.md +512 -0
- package/dist/client.d.ts +497 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +1162 -0
- package/dist/client.js.map +1 -0
- package/dist/conventions/confirmation.d.ts +89 -0
- package/dist/conventions/confirmation.d.ts.map +1 -0
- package/dist/conventions/confirmation.js +132 -0
- package/dist/conventions/confirmation.js.map +1 -0
- package/dist/conventions/dry-run/batch-executor.d.ts +36 -0
- package/dist/conventions/dry-run/batch-executor.d.ts.map +1 -0
- package/dist/conventions/dry-run/batch-executor.js +89 -0
- package/dist/conventions/dry-run/batch-executor.js.map +1 -0
- package/dist/conventions/dry-run/diff-renderer.d.ts +34 -0
- package/dist/conventions/dry-run/diff-renderer.d.ts.map +1 -0
- package/dist/conventions/dry-run/diff-renderer.js +158 -0
- package/dist/conventions/dry-run/diff-renderer.js.map +1 -0
- package/dist/conventions/dry-run/index.d.ts +13 -0
- package/dist/conventions/dry-run/index.d.ts.map +1 -0
- package/dist/conventions/dry-run/index.js +10 -0
- package/dist/conventions/dry-run/index.js.map +1 -0
- package/dist/conventions/dry-run/mutating-tool.d.ts +64 -0
- package/dist/conventions/dry-run/mutating-tool.d.ts.map +1 -0
- package/dist/conventions/dry-run/mutating-tool.js +88 -0
- package/dist/conventions/dry-run/mutating-tool.js.map +1 -0
- package/dist/conventions/dry-run/summary.d.ts +66 -0
- package/dist/conventions/dry-run/summary.d.ts.map +1 -0
- package/dist/conventions/dry-run/summary.js +185 -0
- package/dist/conventions/dry-run/summary.js.map +1 -0
- package/dist/conventions/dry-run/types.d.ts +597 -0
- package/dist/conventions/dry-run/types.d.ts.map +1 -0
- package/dist/conventions/dry-run/types.js +108 -0
- package/dist/conventions/dry-run/types.js.map +1 -0
- package/dist/conventions/dry-run/with-dry-run.d.ts +66 -0
- package/dist/conventions/dry-run/with-dry-run.d.ts.map +1 -0
- package/dist/conventions/dry-run/with-dry-run.js +219 -0
- package/dist/conventions/dry-run/with-dry-run.js.map +1 -0
- package/dist/conventions/env.d.ts +49 -0
- package/dist/conventions/env.d.ts.map +1 -0
- package/dist/conventions/env.js +84 -0
- package/dist/conventions/env.js.map +1 -0
- package/dist/conventions/errors.d.ts +68 -0
- package/dist/conventions/errors.d.ts.map +1 -0
- package/dist/conventions/errors.js +81 -0
- package/dist/conventions/errors.js.map +1 -0
- package/dist/conventions/logger.d.ts +28 -0
- package/dist/conventions/logger.d.ts.map +1 -0
- package/dist/conventions/logger.js +105 -0
- package/dist/conventions/logger.js.map +1 -0
- package/dist/conventions/pagination.d.ts +37 -0
- package/dist/conventions/pagination.d.ts.map +1 -0
- package/dist/conventions/pagination.js +53 -0
- package/dist/conventions/pagination.js.map +1 -0
- package/dist/conventions/rate-limiter.d.ts +54 -0
- package/dist/conventions/rate-limiter.d.ts.map +1 -0
- package/dist/conventions/rate-limiter.js +143 -0
- package/dist/conventions/rate-limiter.js.map +1 -0
- package/dist/conventions/response-budget.d.ts +66 -0
- package/dist/conventions/response-budget.d.ts.map +1 -0
- package/dist/conventions/response-budget.js +89 -0
- package/dist/conventions/response-budget.js.map +1 -0
- package/dist/conventions/schema-version.d.ts +27 -0
- package/dist/conventions/schema-version.d.ts.map +1 -0
- package/dist/conventions/schema-version.js +29 -0
- package/dist/conventions/schema-version.js.map +1 -0
- package/dist/conventions/state-store-redis.d.ts +32 -0
- package/dist/conventions/state-store-redis.d.ts.map +1 -0
- package/dist/conventions/state-store-redis.js +77 -0
- package/dist/conventions/state-store-redis.js.map +1 -0
- package/dist/conventions/state-store.d.ts +46 -0
- package/dist/conventions/state-store.d.ts.map +1 -0
- package/dist/conventions/state-store.js +105 -0
- package/dist/conventions/state-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +421 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/collection-audit.d.ts +13 -0
- package/dist/prompts/collection-audit.d.ts.map +1 -0
- package/dist/prompts/collection-audit.js +168 -0
- package/dist/prompts/collection-audit.js.map +1 -0
- package/dist/prompts/create-distribution.d.ts +15 -0
- package/dist/prompts/create-distribution.d.ts.map +1 -0
- package/dist/prompts/create-distribution.js +111 -0
- package/dist/prompts/create-distribution.js.map +1 -0
- package/dist/prompts/helpers.d.ts +20 -0
- package/dist/prompts/helpers.d.ts.map +1 -0
- package/dist/prompts/helpers.js +53 -0
- package/dist/prompts/helpers.js.map +1 -0
- package/dist/prompts/library-health-audit.d.ts +13 -0
- package/dist/prompts/library-health-audit.d.ts.map +1 -0
- package/dist/prompts/library-health-audit.js +131 -0
- package/dist/prompts/library-health-audit.js.map +1 -0
- package/dist/prompts/usage-insights.d.ts +13 -0
- package/dist/prompts/usage-insights.d.ts.map +1 -0
- package/dist/prompts/usage-insights.js +98 -0
- package/dist/prompts/usage-insights.js.map +1 -0
- package/dist/prompts/wrap-prompt-as-tool.d.ts +48 -0
- package/dist/prompts/wrap-prompt-as-tool.d.ts.map +1 -0
- package/dist/prompts/wrap-prompt-as-tool.js +61 -0
- package/dist/prompts/wrap-prompt-as-tool.js.map +1 -0
- package/dist/resources/asset-by-id.d.ts +4 -0
- package/dist/resources/asset-by-id.d.ts.map +1 -0
- package/dist/resources/asset-by-id.js +27 -0
- package/dist/resources/asset-by-id.js.map +1 -0
- package/dist/resources/collections.d.ts +5 -0
- package/dist/resources/collections.d.ts.map +1 -0
- package/dist/resources/collections.js +48 -0
- package/dist/resources/collections.js.map +1 -0
- package/dist/resources/custom-fields.d.ts +4 -0
- package/dist/resources/custom-fields.d.ts.map +1 -0
- package/dist/resources/custom-fields.js +30 -0
- package/dist/resources/custom-fields.js.map +1 -0
- package/dist/resources/folders.d.ts +5 -0
- package/dist/resources/folders.d.ts.map +1 -0
- package/dist/resources/folders.js +73 -0
- package/dist/resources/folders.js.map +1 -0
- package/dist/resources/helpers.d.ts +17 -0
- package/dist/resources/helpers.d.ts.map +1 -0
- package/dist/resources/helpers.js +59 -0
- package/dist/resources/helpers.js.map +1 -0
- package/dist/resources/portals.d.ts +5 -0
- package/dist/resources/portals.d.ts.map +1 -0
- package/dist/resources/portals.js +81 -0
- package/dist/resources/portals.js.map +1 -0
- package/dist/resources/recent-and-dashboard.d.ts +5 -0
- package/dist/resources/recent-and-dashboard.d.ts.map +1 -0
- package/dist/resources/recent-and-dashboard.js +42 -0
- package/dist/resources/recent-and-dashboard.js.map +1 -0
- package/dist/tools/asset-selection.d.ts +102 -0
- package/dist/tools/asset-selection.d.ts.map +1 -0
- package/dist/tools/asset-selection.js +133 -0
- package/dist/tools/asset-selection.js.map +1 -0
- package/dist/tools/audit/audit-folder-structure.d.ts +108 -0
- package/dist/tools/audit/audit-folder-structure.d.ts.map +1 -0
- package/dist/tools/audit/audit-folder-structure.js +260 -0
- package/dist/tools/audit/audit-folder-structure.js.map +1 -0
- package/dist/tools/audit/audit-naming-conventions.d.ts +83 -0
- package/dist/tools/audit/audit-naming-conventions.d.ts.map +1 -0
- package/dist/tools/audit/audit-naming-conventions.js +238 -0
- package/dist/tools/audit/audit-naming-conventions.js.map +1 -0
- package/dist/tools/audit/audit-tagging-hygiene.d.ts +77 -0
- package/dist/tools/audit/audit-tagging-hygiene.d.ts.map +1 -0
- package/dist/tools/audit/audit-tagging-hygiene.js +402 -0
- package/dist/tools/audit/audit-tagging-hygiene.js.map +1 -0
- package/dist/tools/audit/detect-duplicates.d.ts +62 -0
- package/dist/tools/audit/detect-duplicates.d.ts.map +1 -0
- package/dist/tools/audit/detect-duplicates.js +0 -0
- package/dist/tools/audit/detect-duplicates.js.map +1 -0
- package/dist/tools/audit/types.d.ts +526 -0
- package/dist/tools/audit/types.d.ts.map +1 -0
- package/dist/tools/audit/types.js +188 -0
- package/dist/tools/audit/types.js.map +1 -0
- package/dist/tools/bulk-move-assets.d.ts +78 -0
- package/dist/tools/bulk-move-assets.d.ts.map +1 -0
- package/dist/tools/bulk-move-assets.js +122 -0
- package/dist/tools/bulk-move-assets.js.map +1 -0
- package/dist/tools/bulk-normalize-filenames.d.ts +62 -0
- package/dist/tools/bulk-normalize-filenames.d.ts.map +1 -0
- package/dist/tools/bulk-normalize-filenames.js +237 -0
- package/dist/tools/bulk-normalize-filenames.js.map +1 -0
- package/dist/tools/bulk-rename-assets.d.ts +79 -0
- package/dist/tools/bulk-rename-assets.d.ts.map +1 -0
- package/dist/tools/bulk-rename-assets.js +139 -0
- package/dist/tools/bulk-rename-assets.js.map +1 -0
- package/dist/tools/bulk-tags.d.ts +107 -0
- package/dist/tools/bulk-tags.d.ts.map +1 -0
- package/dist/tools/bulk-tags.js +220 -0
- package/dist/tools/bulk-tags.js.map +1 -0
- package/dist/tools/client-adapters.d.ts +76 -0
- package/dist/tools/client-adapters.d.ts.map +1 -0
- package/dist/tools/client-adapters.js +648 -0
- package/dist/tools/client-adapters.js.map +1 -0
- package/dist/tools/collection-membership.d.ts +90 -0
- package/dist/tools/collection-membership.d.ts.map +1 -0
- package/dist/tools/collection-membership.js +195 -0
- package/dist/tools/collection-membership.js.map +1 -0
- package/dist/tools/create-collection.d.ts +63 -0
- package/dist/tools/create-collection.d.ts.map +1 -0
- package/dist/tools/create-collection.js +151 -0
- package/dist/tools/create-collection.js.map +1 -0
- package/dist/tools/create-folder.d.ts +46 -0
- package/dist/tools/create-folder.d.ts.map +1 -0
- package/dist/tools/create-folder.js +83 -0
- package/dist/tools/create-folder.js.map +1 -0
- package/dist/tools/create-share-link.d.ts +107 -0
- package/dist/tools/create-share-link.d.ts.map +1 -0
- package/dist/tools/create-share-link.js +239 -0
- package/dist/tools/create-share-link.js.map +1 -0
- package/dist/tools/get-asset-details.d.ts +401 -0
- package/dist/tools/get-asset-details.d.ts.map +1 -0
- package/dist/tools/get-asset-details.js +56 -0
- package/dist/tools/get-asset-details.js.map +1 -0
- package/dist/tools/get-collection.d.ts +126 -0
- package/dist/tools/get-collection.d.ts.map +1 -0
- package/dist/tools/get-collection.js +52 -0
- package/dist/tools/get-collection.js.map +1 -0
- package/dist/tools/get-embed-code.d.ts +195 -0
- package/dist/tools/get-embed-code.d.ts.map +1 -0
- package/dist/tools/get-embed-code.js +214 -0
- package/dist/tools/get-embed-code.js.map +1 -0
- package/dist/tools/insights/analyze-share-links.d.ts +159 -0
- package/dist/tools/insights/analyze-share-links.d.ts.map +1 -0
- package/dist/tools/insights/analyze-share-links.js +314 -0
- package/dist/tools/insights/analyze-share-links.js.map +1 -0
- package/dist/tools/insights/insight-cache.d.ts +36 -0
- package/dist/tools/insights/insight-cache.d.ts.map +1 -0
- package/dist/tools/insights/insight-cache.js +98 -0
- package/dist/tools/insights/insight-cache.js.map +1 -0
- package/dist/tools/insights/report-asset-activation.d.ts +149 -0
- package/dist/tools/insights/report-asset-activation.d.ts.map +1 -0
- package/dist/tools/insights/report-asset-activation.js +380 -0
- package/dist/tools/insights/report-asset-activation.js.map +1 -0
- package/dist/tools/insights/report-stale-assets.d.ts +120 -0
- package/dist/tools/insights/report-stale-assets.d.ts.map +1 -0
- package/dist/tools/insights/report-stale-assets.js +281 -0
- package/dist/tools/insights/report-stale-assets.js.map +1 -0
- package/dist/tools/insights/report-top-assets.d.ts +139 -0
- package/dist/tools/insights/report-top-assets.d.ts.map +1 -0
- package/dist/tools/insights/report-top-assets.js +407 -0
- package/dist/tools/insights/report-top-assets.js.map +1 -0
- package/dist/tools/list-categories.d.ts +127 -0
- package/dist/tools/list-categories.d.ts.map +1 -0
- package/dist/tools/list-categories.js +68 -0
- package/dist/tools/list-categories.js.map +1 -0
- package/dist/tools/list-collections.d.ts +127 -0
- package/dist/tools/list-collections.d.ts.map +1 -0
- package/dist/tools/list-collections.js +53 -0
- package/dist/tools/list-collections.js.map +1 -0
- package/dist/tools/list-custom-fields.d.ts +125 -0
- package/dist/tools/list-custom-fields.d.ts.map +1 -0
- package/dist/tools/list-custom-fields.js +51 -0
- package/dist/tools/list-custom-fields.js.map +1 -0
- package/dist/tools/list-share-links.d.ts +192 -0
- package/dist/tools/list-share-links.d.ts.map +1 -0
- package/dist/tools/list-share-links.js +92 -0
- package/dist/tools/list-share-links.js.map +1 -0
- package/dist/tools/list-workspaces.d.ts +88 -0
- package/dist/tools/list-workspaces.d.ts.map +1 -0
- package/dist/tools/list-workspaces.js +71 -0
- package/dist/tools/list-workspaces.js.map +1 -0
- package/dist/tools/move-asset.d.ts +48 -0
- package/dist/tools/move-asset.d.ts.map +1 -0
- package/dist/tools/move-asset.js +85 -0
- package/dist/tools/move-asset.js.map +1 -0
- package/dist/tools/rename-asset.d.ts +88 -0
- package/dist/tools/rename-asset.d.ts.map +1 -0
- package/dist/tools/rename-asset.js +100 -0
- package/dist/tools/rename-asset.js.map +1 -0
- package/dist/tools/rename-folder.d.ts +55 -0
- package/dist/tools/rename-folder.d.ts.map +1 -0
- package/dist/tools/rename-folder.js +101 -0
- package/dist/tools/rename-folder.js.map +1 -0
- package/dist/tools/revoke-share-link.d.ts +55 -0
- package/dist/tools/revoke-share-link.d.ts.map +1 -0
- package/dist/tools/revoke-share-link.js +77 -0
- package/dist/tools/revoke-share-link.js.map +1 -0
- package/dist/tools/search/facets.d.ts +34 -0
- package/dist/tools/search/facets.d.ts.map +1 -0
- package/dist/tools/search/facets.js +147 -0
- package/dist/tools/search/facets.js.map +1 -0
- package/dist/tools/search/filter-builder.d.ts +33 -0
- package/dist/tools/search/filter-builder.d.ts.map +1 -0
- package/dist/tools/search/filter-builder.js +111 -0
- package/dist/tools/search/filter-builder.js.map +1 -0
- package/dist/tools/search/search-assets.d.ts +41 -0
- package/dist/tools/search/search-assets.d.ts.map +1 -0
- package/dist/tools/search/search-assets.js +162 -0
- package/dist/tools/search/search-assets.js.map +1 -0
- package/dist/tools/search/search-collections.d.ts +35 -0
- package/dist/tools/search/search-collections.d.ts.map +1 -0
- package/dist/tools/search/search-collections.js +103 -0
- package/dist/tools/search/search-collections.js.map +1 -0
- package/dist/tools/search/types.d.ts +1047 -0
- package/dist/tools/search/types.d.ts.map +1 -0
- package/dist/tools/search/types.js +216 -0
- package/dist/tools/search/types.js.map +1 -0
- package/dist/tools/update-asset-metadata.d.ts +78 -0
- package/dist/tools/update-asset-metadata.d.ts.map +1 -0
- package/dist/tools/update-asset-metadata.js +203 -0
- package/dist/tools/update-asset-metadata.js.map +1 -0
- package/dist/tools/update-collection.d.ts +69 -0
- package/dist/tools/update-collection.d.ts.map +1 -0
- package/dist/tools/update-collection.js +142 -0
- package/dist/tools/update-collection.js.map +1 -0
- package/dist/tools/view-category-contents.d.ts +231 -0
- package/dist/tools/view-category-contents.d.ts.map +1 -0
- package/dist/tools/view-category-contents.js +97 -0
- package/dist/tools/view-category-contents.js.map +1 -0
- package/dist/types.d.ts +1326 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +288 -0
- package/dist/types.js.map +1 -0
- package/dist/typesense.d.ts +84 -0
- package/dist/typesense.d.ts.map +1 -0
- package/dist/typesense.js +243 -0
- package/dist/typesense.js.map +1 -0
- package/docs/api-field-verification.md +244 -0
- package/docs/deployment-runbook.md +446 -0
- package/docs/security-review.md +195 -0
- package/docs/typesense-filter-schema.md +262 -0
- package/docs/verified-endpoints.md +38 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ChangeRecord } from './dry-run/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for a confirmation token returned by dry-run mutating tools.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ConfirmationTokenSchema: z.ZodObject<{
|
|
7
|
+
confirmation_id: z.ZodString;
|
|
8
|
+
signed_token: z.ZodString;
|
|
9
|
+
expires_at: z.ZodString;
|
|
10
|
+
ttl_seconds: z.ZodNumber;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
confirmation_id: string;
|
|
13
|
+
signed_token: string;
|
|
14
|
+
expires_at: string;
|
|
15
|
+
ttl_seconds: number;
|
|
16
|
+
}, {
|
|
17
|
+
confirmation_id: string;
|
|
18
|
+
signed_token: string;
|
|
19
|
+
expires_at: string;
|
|
20
|
+
ttl_seconds: number;
|
|
21
|
+
}>;
|
|
22
|
+
export type ConfirmationToken = z.infer<typeof ConfirmationTokenSchema>;
|
|
23
|
+
/**
|
|
24
|
+
* Default soft TTL for confirmation tokens: 15 minutes. After this window
|
|
25
|
+
* the token's `expires_at` reads as expired and any execute call triggers
|
|
26
|
+
* the auto-refresh path (re-plan, fingerprint-compare, continue or
|
|
27
|
+
* surface CONFIRMATION_STATE_DIVERGED). Bumped from 5 minutes after live
|
|
28
|
+
* QA on 2026-05-01 showed the prior TTL was hostile to normal
|
|
29
|
+
* preview→review→confirm pauses.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_TTL_SECONDS: number;
|
|
32
|
+
export declare const DEFAULT_TTL_MS: number;
|
|
33
|
+
/**
|
|
34
|
+
* Plan-store memo TTL: 60 minutes. The plan record stays in the
|
|
35
|
+
* ephemeral store this long so an expired-token execute call can still
|
|
36
|
+
* recover the prior plan to compare against. After the memo TTL elapses
|
|
37
|
+
* the plan is gone and the user must re-plan from scratch.
|
|
38
|
+
*/
|
|
39
|
+
export declare const MEMO_TTL_SECONDS: number;
|
|
40
|
+
export declare const MEMO_TTL_MS: number;
|
|
41
|
+
/**
|
|
42
|
+
* Generate a 128-bit ULID suitable for use as a confirmation ID.
|
|
43
|
+
*/
|
|
44
|
+
export declare function generateConfirmationId(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Sign a confirmation ID with HMAC-SHA256.
|
|
47
|
+
*
|
|
48
|
+
* @returns `${confirmationId}.${hmacHex}`
|
|
49
|
+
*/
|
|
50
|
+
export declare function signConfirmation(confirmationId: string, secret: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Verify a signed confirmation token using timing-safe comparison.
|
|
53
|
+
*
|
|
54
|
+
* @returns `{ valid: true, confirmationId }` when the HMAC matches,
|
|
55
|
+
* `{ valid: false, confirmationId: null }` otherwise.
|
|
56
|
+
*/
|
|
57
|
+
export declare function verifyConfirmation(signedToken: string, secret: string): {
|
|
58
|
+
valid: boolean;
|
|
59
|
+
confirmationId: string | null;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Read `MCP_CONFIRMATION_SECRET` from the environment.
|
|
63
|
+
*
|
|
64
|
+
* @throws {Error} if the variable is missing or empty.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getConfirmationSecret(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Generate a confirmation ID, sign it, and return a full ConfirmationToken
|
|
69
|
+
* with an ISO-8601 expiry timestamp.
|
|
70
|
+
*
|
|
71
|
+
* @param secret - HMAC signing secret
|
|
72
|
+
* @param ttlMs - Time-to-live in milliseconds (default 5 minutes)
|
|
73
|
+
*/
|
|
74
|
+
export declare function createConfirmationToken(secret: string, ttlMs?: number): ConfirmationToken;
|
|
75
|
+
/**
|
|
76
|
+
* Compute a stable fingerprint over a plan's change list. Order-independent
|
|
77
|
+
* (changes are sorted by id before hashing) and value-equivalent (the same
|
|
78
|
+
* conceptual plan always produces the same digest), so two plans generated
|
|
79
|
+
* minutes apart from the same input — even if change-record arrays
|
|
80
|
+
* iterate in different order — collide as expected.
|
|
81
|
+
*
|
|
82
|
+
* Used by the auto-refresh path: when a token's soft TTL has expired, the
|
|
83
|
+
* execute phase re-runs `plan(input)` and compares the new fingerprint
|
|
84
|
+
* against the prior fingerprint stored alongside the original plan. Match
|
|
85
|
+
* → proceed (intent unchanged). Mismatch → return
|
|
86
|
+
* CONFIRMATION_STATE_DIVERGED so the user can re-confirm.
|
|
87
|
+
*/
|
|
88
|
+
export declare function fingerprintChanges(changes: readonly ChangeRecord[]): string;
|
|
89
|
+
//# sourceMappingURL=confirmation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirmation.d.ts","sourceRoot":"","sources":["../../src/conventions/confirmation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAAU,CAAC;AAC3C,eAAO,MAAM,cAAc,QAA6B,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAU,CAAC;AACxC,eAAO,MAAM,WAAW,QAA0B,CAAC;AAEnD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA0BnD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAuB,GAC7B,iBAAiB,CAWnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAc3E"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { createHash, createHmac, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { ulid } from 'ulid';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
/**
|
|
5
|
+
* Zod schema for a confirmation token returned by dry-run mutating tools.
|
|
6
|
+
*/
|
|
7
|
+
export const ConfirmationTokenSchema = z.object({
|
|
8
|
+
confirmation_id: z.string(),
|
|
9
|
+
signed_token: z.string(),
|
|
10
|
+
expires_at: z.string().datetime(),
|
|
11
|
+
ttl_seconds: z.number().int().positive(),
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Default soft TTL for confirmation tokens: 15 minutes. After this window
|
|
15
|
+
* the token's `expires_at` reads as expired and any execute call triggers
|
|
16
|
+
* the auto-refresh path (re-plan, fingerprint-compare, continue or
|
|
17
|
+
* surface CONFIRMATION_STATE_DIVERGED). Bumped from 5 minutes after live
|
|
18
|
+
* QA on 2026-05-01 showed the prior TTL was hostile to normal
|
|
19
|
+
* preview→review→confirm pauses.
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_TTL_SECONDS = 15 * 60;
|
|
22
|
+
export const DEFAULT_TTL_MS = DEFAULT_TTL_SECONDS * 1000;
|
|
23
|
+
/**
|
|
24
|
+
* Plan-store memo TTL: 60 minutes. The plan record stays in the
|
|
25
|
+
* ephemeral store this long so an expired-token execute call can still
|
|
26
|
+
* recover the prior plan to compare against. After the memo TTL elapses
|
|
27
|
+
* the plan is gone and the user must re-plan from scratch.
|
|
28
|
+
*/
|
|
29
|
+
export const MEMO_TTL_SECONDS = 60 * 60;
|
|
30
|
+
export const MEMO_TTL_MS = MEMO_TTL_SECONDS * 1000;
|
|
31
|
+
/**
|
|
32
|
+
* Generate a 128-bit ULID suitable for use as a confirmation ID.
|
|
33
|
+
*/
|
|
34
|
+
export function generateConfirmationId() {
|
|
35
|
+
return ulid();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sign a confirmation ID with HMAC-SHA256.
|
|
39
|
+
*
|
|
40
|
+
* @returns `${confirmationId}.${hmacHex}`
|
|
41
|
+
*/
|
|
42
|
+
export function signConfirmation(confirmationId, secret) {
|
|
43
|
+
const hmac = createHmac('sha256', secret)
|
|
44
|
+
.update(confirmationId)
|
|
45
|
+
.digest('hex');
|
|
46
|
+
return `${confirmationId}.${hmac}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Verify a signed confirmation token using timing-safe comparison.
|
|
50
|
+
*
|
|
51
|
+
* @returns `{ valid: true, confirmationId }` when the HMAC matches,
|
|
52
|
+
* `{ valid: false, confirmationId: null }` otherwise.
|
|
53
|
+
*/
|
|
54
|
+
export function verifyConfirmation(signedToken, secret) {
|
|
55
|
+
const dotIndex = signedToken.indexOf('.');
|
|
56
|
+
if (dotIndex === -1) {
|
|
57
|
+
return { valid: false, confirmationId: null };
|
|
58
|
+
}
|
|
59
|
+
const confirmationId = signedToken.slice(0, dotIndex);
|
|
60
|
+
const providedHmac = signedToken.slice(dotIndex + 1);
|
|
61
|
+
const expectedHmac = createHmac('sha256', secret)
|
|
62
|
+
.update(confirmationId)
|
|
63
|
+
.digest('hex');
|
|
64
|
+
// Both hex strings must be the same length for timingSafeEqual.
|
|
65
|
+
if (providedHmac.length !== expectedHmac.length) {
|
|
66
|
+
return { valid: false, confirmationId: null };
|
|
67
|
+
}
|
|
68
|
+
const valid = timingSafeEqual(Buffer.from(providedHmac, 'utf8'), Buffer.from(expectedHmac, 'utf8'));
|
|
69
|
+
return valid
|
|
70
|
+
? { valid: true, confirmationId }
|
|
71
|
+
: { valid: false, confirmationId: null };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Read `MCP_CONFIRMATION_SECRET` from the environment.
|
|
75
|
+
*
|
|
76
|
+
* @throws {Error} if the variable is missing or empty.
|
|
77
|
+
*/
|
|
78
|
+
export function getConfirmationSecret() {
|
|
79
|
+
const secret = process.env['MCP_CONFIRMATION_SECRET'];
|
|
80
|
+
if (!secret) {
|
|
81
|
+
throw new Error('MCP_CONFIRMATION_SECRET environment variable is required but not set. ' +
|
|
82
|
+
'Set it to a strong random value (e.g. 32+ hex characters).');
|
|
83
|
+
}
|
|
84
|
+
return secret;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Generate a confirmation ID, sign it, and return a full ConfirmationToken
|
|
88
|
+
* with an ISO-8601 expiry timestamp.
|
|
89
|
+
*
|
|
90
|
+
* @param secret - HMAC signing secret
|
|
91
|
+
* @param ttlMs - Time-to-live in milliseconds (default 5 minutes)
|
|
92
|
+
*/
|
|
93
|
+
export function createConfirmationToken(secret, ttlMs = DEFAULT_TTL_MS) {
|
|
94
|
+
const confirmationId = generateConfirmationId();
|
|
95
|
+
const signedToken = signConfirmation(confirmationId, secret);
|
|
96
|
+
const expiresAt = new Date(Date.now() + ttlMs).toISOString();
|
|
97
|
+
return ConfirmationTokenSchema.parse({
|
|
98
|
+
confirmation_id: confirmationId,
|
|
99
|
+
signed_token: signedToken,
|
|
100
|
+
expires_at: expiresAt,
|
|
101
|
+
ttl_seconds: Math.max(1, Math.round(ttlMs / 1000)),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Compute a stable fingerprint over a plan's change list. Order-independent
|
|
106
|
+
* (changes are sorted by id before hashing) and value-equivalent (the same
|
|
107
|
+
* conceptual plan always produces the same digest), so two plans generated
|
|
108
|
+
* minutes apart from the same input — even if change-record arrays
|
|
109
|
+
* iterate in different order — collide as expected.
|
|
110
|
+
*
|
|
111
|
+
* Used by the auto-refresh path: when a token's soft TTL has expired, the
|
|
112
|
+
* execute phase re-runs `plan(input)` and compares the new fingerprint
|
|
113
|
+
* against the prior fingerprint stored alongside the original plan. Match
|
|
114
|
+
* → proceed (intent unchanged). Mismatch → return
|
|
115
|
+
* CONFIRMATION_STATE_DIVERGED so the user can re-confirm.
|
|
116
|
+
*/
|
|
117
|
+
export function fingerprintChanges(changes) {
|
|
118
|
+
const canonical = [...changes]
|
|
119
|
+
.map((c) => ({
|
|
120
|
+
id: c.id,
|
|
121
|
+
operation: c.operation,
|
|
122
|
+
before: c.before ?? null,
|
|
123
|
+
after: c.after ?? null,
|
|
124
|
+
// metadata is intentionally excluded — it's tool-internal scratch
|
|
125
|
+
// (e.g. RenameAssetTool stuffs the ULID/category_id there) and
|
|
126
|
+
// can vary between re-plans without changing user-facing intent.
|
|
127
|
+
}))
|
|
128
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
129
|
+
const json = JSON.stringify(canonical);
|
|
130
|
+
return createHash('sha256').update(json).digest('hex');
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=confirmation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirmation.js","sourceRoot":"","sources":["../../src/conventions/confirmation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type McpToolError } from '../errors.js';
|
|
2
|
+
import type { ChangeRecord, ItemLedgerEntry, ProgressEvent } from './types.js';
|
|
3
|
+
export declare const DEFAULT_CHUNK_SIZE = 25;
|
|
4
|
+
export declare const MAX_CHUNK_SIZE = 500;
|
|
5
|
+
export interface ApplyResult<TItemResult = unknown> {
|
|
6
|
+
ok: boolean;
|
|
7
|
+
result?: TItemResult;
|
|
8
|
+
error?: McpToolError;
|
|
9
|
+
}
|
|
10
|
+
export type ApplyFn<TItemResult = unknown> = (change: ChangeRecord) => Promise<ApplyResult<TItemResult>>;
|
|
11
|
+
export interface BatchExecuteOptions<TItemResult = unknown> {
|
|
12
|
+
changes: ChangeRecord[];
|
|
13
|
+
apply: ApplyFn<TItemResult>;
|
|
14
|
+
chunkSize?: number;
|
|
15
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface BatchExecuteResult<TItemResult = unknown> {
|
|
18
|
+
ledger: Array<Omit<ItemLedgerEntry, 'result'> & {
|
|
19
|
+
result?: TItemResult;
|
|
20
|
+
}>;
|
|
21
|
+
progress: ProgressEvent[];
|
|
22
|
+
totals: {
|
|
23
|
+
attempted: number;
|
|
24
|
+
succeeded: number;
|
|
25
|
+
failed: number;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Execute a list of changes in fixed-size chunks. Each chunk runs in
|
|
30
|
+
* parallel via `Promise.all`. After every chunk a progress event is emitted
|
|
31
|
+
* (and forwarded to `onProgress` if provided) and recorded in the returned
|
|
32
|
+
* `progress` array. Errors are caught and recorded in the ledger as a
|
|
33
|
+
* structured `McpToolError` — they never reject the returned promise.
|
|
34
|
+
*/
|
|
35
|
+
export declare function batchExecute<TItemResult = unknown>(opts: BatchExecuteOptions<TItemResult>): Promise<BatchExecuteResult<TItemResult>>;
|
|
36
|
+
//# sourceMappingURL=batch-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-executor.d.ts","sourceRoot":"","sources":["../../../src/conventions/dry-run/batch-executor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/E,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,MAAM,WAAW,WAAW,CAAC,WAAW,GAAG,OAAO;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,MAAM,OAAO,CAAC,WAAW,GAAG,OAAO,IAAI,CAC3C,MAAM,EAAE,YAAY,KACjB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAEvC,MAAM,WAAW,mBAAmB,CAAC,WAAW,GAAG,OAAO;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,WAAW,GAAG,OAAO;IACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAC1E,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,WAAW,GAAG,OAAO,EACtD,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAoE1C"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// ── Batch Executor ───────────────────────────────────────────────────
|
|
2
|
+
// Walks a list of `ChangeRecord` in fixed-size chunks, calling the
|
|
3
|
+
// tool-specific applier for each item, and emits progress events. The
|
|
4
|
+
// executor is transport-agnostic: an `onProgress` callback fires per
|
|
5
|
+
// chunk so stdio can stream events while HTTP collates them into a single
|
|
6
|
+
// ledger response.
|
|
7
|
+
import { createToolError } from '../errors.js';
|
|
8
|
+
export const DEFAULT_CHUNK_SIZE = 25;
|
|
9
|
+
export const MAX_CHUNK_SIZE = 500;
|
|
10
|
+
/**
|
|
11
|
+
* Execute a list of changes in fixed-size chunks. Each chunk runs in
|
|
12
|
+
* parallel via `Promise.all`. After every chunk a progress event is emitted
|
|
13
|
+
* (and forwarded to `onProgress` if provided) and recorded in the returned
|
|
14
|
+
* `progress` array. Errors are caught and recorded in the ledger as a
|
|
15
|
+
* structured `McpToolError` — they never reject the returned promise.
|
|
16
|
+
*/
|
|
17
|
+
export async function batchExecute(opts) {
|
|
18
|
+
const chunkSize = clampChunkSize(opts.chunkSize ?? DEFAULT_CHUNK_SIZE);
|
|
19
|
+
const ledger = [];
|
|
20
|
+
const progress = [];
|
|
21
|
+
let succeeded = 0;
|
|
22
|
+
let failed = 0;
|
|
23
|
+
for (let i = 0; i < opts.changes.length; i += chunkSize) {
|
|
24
|
+
const chunk = opts.changes.slice(i, i + chunkSize);
|
|
25
|
+
const results = await Promise.all(chunk.map(async (change) => {
|
|
26
|
+
try {
|
|
27
|
+
return { change, outcome: await opts.apply(change) };
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
31
|
+
return {
|
|
32
|
+
change,
|
|
33
|
+
outcome: {
|
|
34
|
+
ok: false,
|
|
35
|
+
error: createToolError('INTERNAL', `apply threw: ${message}`),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
for (const { change, outcome } of results) {
|
|
41
|
+
if (outcome.ok) {
|
|
42
|
+
succeeded++;
|
|
43
|
+
const entry = {
|
|
44
|
+
id: change.id,
|
|
45
|
+
operation: change.operation,
|
|
46
|
+
ok: true,
|
|
47
|
+
};
|
|
48
|
+
if (outcome.result !== undefined)
|
|
49
|
+
entry.result = outcome.result;
|
|
50
|
+
ledger.push(entry);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
failed++;
|
|
54
|
+
ledger.push({
|
|
55
|
+
id: change.id,
|
|
56
|
+
operation: change.operation,
|
|
57
|
+
ok: false,
|
|
58
|
+
error: outcome.error ??
|
|
59
|
+
createToolError('INTERNAL', 'apply returned ok=false without an error'),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const event = {
|
|
64
|
+
type: 'progress',
|
|
65
|
+
completed: Math.min(i + chunk.length, opts.changes.length),
|
|
66
|
+
total: opts.changes.length,
|
|
67
|
+
ts: new Date().toISOString(),
|
|
68
|
+
};
|
|
69
|
+
progress.push(event);
|
|
70
|
+
opts.onProgress?.(event);
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
ledger,
|
|
74
|
+
progress,
|
|
75
|
+
totals: {
|
|
76
|
+
attempted: opts.changes.length,
|
|
77
|
+
succeeded,
|
|
78
|
+
failed,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function clampChunkSize(requested) {
|
|
83
|
+
if (!Number.isFinite(requested) || requested < 1)
|
|
84
|
+
return DEFAULT_CHUNK_SIZE;
|
|
85
|
+
if (requested > MAX_CHUNK_SIZE)
|
|
86
|
+
return MAX_CHUNK_SIZE;
|
|
87
|
+
return Math.floor(requested);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=batch-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-executor.js","sourceRoot":"","sources":["../../../src/conventions/dry-run/batch-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ChangeRecord } from './types.js';
|
|
2
|
+
/** Default cap on rendered rows so previews stay within token budgets. */
|
|
3
|
+
export declare const DEFAULT_MAX_PREVIEW_ROWS = 100;
|
|
4
|
+
export interface DiffRow {
|
|
5
|
+
id: string;
|
|
6
|
+
operation: 'create' | 'update' | 'delete';
|
|
7
|
+
field: string;
|
|
8
|
+
before: string;
|
|
9
|
+
after: string;
|
|
10
|
+
}
|
|
11
|
+
export interface RenderDiffOptions {
|
|
12
|
+
/** Maximum number of rows in the rendered table. Defaults to 100. */
|
|
13
|
+
maxRows?: number;
|
|
14
|
+
/** Custom string formatter for cell values. */
|
|
15
|
+
formatValue?: (value: unknown) => string;
|
|
16
|
+
}
|
|
17
|
+
export interface RenderDiffResult {
|
|
18
|
+
rows: DiffRow[];
|
|
19
|
+
columns: string[];
|
|
20
|
+
truncated: boolean;
|
|
21
|
+
total_rows: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Render a tabular diff projection from a list of change records.
|
|
25
|
+
*
|
|
26
|
+
* - For `update` operations, emits one row per field where before/after differ.
|
|
27
|
+
* - For `create` operations, emits one row per field in `after`.
|
|
28
|
+
* - For `delete` operations, emits one row per field in `before`.
|
|
29
|
+
*
|
|
30
|
+
* Determinism: keys are sorted alphabetically; rows are emitted in the order
|
|
31
|
+
* changes are received. The same input always produces the same output.
|
|
32
|
+
*/
|
|
33
|
+
export declare function renderDiff(changes: ChangeRecord[], opts?: RenderDiffOptions): RenderDiffResult;
|
|
34
|
+
//# sourceMappingURL=diff-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-renderer.d.ts","sourceRoot":"","sources":["../../../src/conventions/dry-run/diff-renderer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAuBlB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// ── Tabular Diff Renderer ────────────────────────────────────────────
|
|
2
|
+
// Projects an array of `ChangeRecord` into row-level before/after rows for
|
|
3
|
+
// deterministic display. One row per (changeId, field) pair so the user sees
|
|
4
|
+
// each mutating field individually, even when many fields change on one
|
|
5
|
+
// record. Rendering is purely a function of the plan — no I/O.
|
|
6
|
+
/** Default cap on rendered rows so previews stay within token budgets. */
|
|
7
|
+
export const DEFAULT_MAX_PREVIEW_ROWS = 100;
|
|
8
|
+
/**
|
|
9
|
+
* Render a tabular diff projection from a list of change records.
|
|
10
|
+
*
|
|
11
|
+
* - For `update` operations, emits one row per field where before/after differ.
|
|
12
|
+
* - For `create` operations, emits one row per field in `after`.
|
|
13
|
+
* - For `delete` operations, emits one row per field in `before`.
|
|
14
|
+
*
|
|
15
|
+
* Determinism: keys are sorted alphabetically; rows are emitted in the order
|
|
16
|
+
* changes are received. The same input always produces the same output.
|
|
17
|
+
*/
|
|
18
|
+
export function renderDiff(changes, opts = {}) {
|
|
19
|
+
const maxRows = opts.maxRows ?? DEFAULT_MAX_PREVIEW_ROWS;
|
|
20
|
+
const fmt = opts.formatValue ?? defaultFormatValue;
|
|
21
|
+
const rows = [];
|
|
22
|
+
let totalRows = 0;
|
|
23
|
+
for (const change of changes) {
|
|
24
|
+
const fieldRows = projectChange(change, fmt);
|
|
25
|
+
totalRows += fieldRows.length;
|
|
26
|
+
for (const row of fieldRows) {
|
|
27
|
+
if (rows.length < maxRows) {
|
|
28
|
+
rows.push(row);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
rows,
|
|
34
|
+
columns: ['id', 'operation', 'field', 'before', 'after'],
|
|
35
|
+
truncated: totalRows > rows.length,
|
|
36
|
+
total_rows: totalRows,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function projectChange(change, fmt) {
|
|
40
|
+
switch (change.operation) {
|
|
41
|
+
case 'update':
|
|
42
|
+
return projectUpdate(change, fmt);
|
|
43
|
+
case 'create':
|
|
44
|
+
return projectCreate(change, fmt);
|
|
45
|
+
case 'delete':
|
|
46
|
+
return projectDelete(change, fmt);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function projectUpdate(change, fmt) {
|
|
50
|
+
const before = change.before ?? {};
|
|
51
|
+
const after = change.after ?? {};
|
|
52
|
+
const keys = Array.from(new Set([...Object.keys(before), ...Object.keys(after)])).sort();
|
|
53
|
+
const out = [];
|
|
54
|
+
for (const field of keys) {
|
|
55
|
+
const beforeVal = before[field];
|
|
56
|
+
const afterVal = after[field];
|
|
57
|
+
if (deepEqual(beforeVal, afterVal)) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
out.push({
|
|
61
|
+
id: change.id,
|
|
62
|
+
operation: 'update',
|
|
63
|
+
field,
|
|
64
|
+
before: fmt(beforeVal),
|
|
65
|
+
after: fmt(afterVal),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// If nothing actually changed, surface a no-op row so the operator sees it.
|
|
69
|
+
if (out.length === 0) {
|
|
70
|
+
out.push({
|
|
71
|
+
id: change.id,
|
|
72
|
+
operation: 'update',
|
|
73
|
+
field: '(no-op)',
|
|
74
|
+
before: '',
|
|
75
|
+
after: '',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
function projectCreate(change, fmt) {
|
|
81
|
+
const after = change.after ?? {};
|
|
82
|
+
const keys = Object.keys(after).sort();
|
|
83
|
+
if (keys.length === 0) {
|
|
84
|
+
return [{ id: change.id, operation: 'create', field: '(empty)', before: '', after: '' }];
|
|
85
|
+
}
|
|
86
|
+
return keys.map((field) => ({
|
|
87
|
+
id: change.id,
|
|
88
|
+
operation: 'create',
|
|
89
|
+
field,
|
|
90
|
+
before: '',
|
|
91
|
+
after: fmt(after[field]),
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
function projectDelete(change, fmt) {
|
|
95
|
+
const before = change.before ?? {};
|
|
96
|
+
const keys = Object.keys(before).sort();
|
|
97
|
+
if (keys.length === 0) {
|
|
98
|
+
return [{ id: change.id, operation: 'delete', field: '(record)', before: '', after: '' }];
|
|
99
|
+
}
|
|
100
|
+
return keys.map((field) => ({
|
|
101
|
+
id: change.id,
|
|
102
|
+
operation: 'delete',
|
|
103
|
+
field,
|
|
104
|
+
before: fmt(before[field]),
|
|
105
|
+
after: '',
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
function defaultFormatValue(value) {
|
|
109
|
+
if (value === null)
|
|
110
|
+
return 'null';
|
|
111
|
+
if (value === undefined)
|
|
112
|
+
return '';
|
|
113
|
+
if (typeof value === 'string')
|
|
114
|
+
return value;
|
|
115
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
116
|
+
return String(value);
|
|
117
|
+
try {
|
|
118
|
+
return JSON.stringify(value);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return String(value);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function deepEqual(a, b) {
|
|
125
|
+
if (a === b)
|
|
126
|
+
return true;
|
|
127
|
+
if (a === null || b === null)
|
|
128
|
+
return false;
|
|
129
|
+
if (typeof a !== typeof b)
|
|
130
|
+
return false;
|
|
131
|
+
if (typeof a !== 'object')
|
|
132
|
+
return false;
|
|
133
|
+
if (Array.isArray(a)) {
|
|
134
|
+
if (!Array.isArray(b))
|
|
135
|
+
return false;
|
|
136
|
+
if (a.length !== b.length)
|
|
137
|
+
return false;
|
|
138
|
+
for (let i = 0; i < a.length; i++) {
|
|
139
|
+
if (!deepEqual(a[i], b[i]))
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (Array.isArray(b))
|
|
145
|
+
return false;
|
|
146
|
+
const aObj = a;
|
|
147
|
+
const bObj = b;
|
|
148
|
+
const ak = Object.keys(aObj);
|
|
149
|
+
const bk = Object.keys(bObj);
|
|
150
|
+
if (ak.length !== bk.length)
|
|
151
|
+
return false;
|
|
152
|
+
for (const key of ak) {
|
|
153
|
+
if (!deepEqual(aObj[key], bObj[key]))
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=diff-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-renderer.js","sourceRoot":"","sources":["../../../src/conventions/dry-run/diff-renderer.ts"],"names":[],"mappings":"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"}
|