@12ui/design 0.2.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.
Files changed (157) hide show
  1. package/README.md +484 -0
  2. package/dist/artifact-materializer.d.ts +17 -0
  3. package/dist/artifact-materializer.d.ts.map +1 -0
  4. package/dist/artifact-materializer.js +66 -0
  5. package/dist/artifact-materializer.js.map +1 -0
  6. package/dist/cli-arguments.d.ts +8 -0
  7. package/dist/cli-arguments.d.ts.map +1 -0
  8. package/dist/cli-arguments.js +39 -0
  9. package/dist/cli-arguments.js.map +1 -0
  10. package/dist/cli-auth-command.d.ts +3 -0
  11. package/dist/cli-auth-command.d.ts.map +1 -0
  12. package/dist/cli-auth-command.js +100 -0
  13. package/dist/cli-auth-command.js.map +1 -0
  14. package/dist/cli-corpus-command.d.ts +12 -0
  15. package/dist/cli-corpus-command.d.ts.map +1 -0
  16. package/dist/cli-corpus-command.js +120 -0
  17. package/dist/cli-corpus-command.js.map +1 -0
  18. package/dist/cli-corpus-evidence.d.ts +17 -0
  19. package/dist/cli-corpus-evidence.d.ts.map +1 -0
  20. package/dist/cli-corpus-evidence.js +150 -0
  21. package/dist/cli-corpus-evidence.js.map +1 -0
  22. package/dist/cli-corpus-reference-downloads.d.ts +8 -0
  23. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -0
  24. package/dist/cli-corpus-reference-downloads.js +111 -0
  25. package/dist/cli-corpus-reference-downloads.js.map +1 -0
  26. package/dist/cli-corpus-reference-receipts.d.ts +36 -0
  27. package/dist/cli-corpus-reference-receipts.d.ts.map +1 -0
  28. package/dist/cli-corpus-reference-receipts.js +137 -0
  29. package/dist/cli-corpus-reference-receipts.js.map +1 -0
  30. package/dist/cli-corpus-run.d.ts +17 -0
  31. package/dist/cli-corpus-run.d.ts.map +1 -0
  32. package/dist/cli-corpus-run.js +94 -0
  33. package/dist/cli-corpus-run.js.map +1 -0
  34. package/dist/cli-corpus-types.d.ts +52 -0
  35. package/dist/cli-corpus-types.d.ts.map +1 -0
  36. package/dist/cli-corpus-types.js +6 -0
  37. package/dist/cli-corpus-types.js.map +1 -0
  38. package/dist/cli-export-command.d.ts +3 -0
  39. package/dist/cli-export-command.d.ts.map +1 -0
  40. package/dist/cli-export-command.js +234 -0
  41. package/dist/cli-export-command.js.map +1 -0
  42. package/dist/cli-image-command.d.ts +8 -0
  43. package/dist/cli-image-command.d.ts.map +1 -0
  44. package/dist/cli-image-command.js +193 -0
  45. package/dist/cli-image-command.js.map +1 -0
  46. package/dist/cli-persistence.d.ts +25 -0
  47. package/dist/cli-persistence.d.ts.map +1 -0
  48. package/dist/cli-persistence.js +253 -0
  49. package/dist/cli-persistence.js.map +1 -0
  50. package/dist/cli-skill-command.d.ts +9 -0
  51. package/dist/cli-skill-command.d.ts.map +1 -0
  52. package/dist/cli-skill-command.js +215 -0
  53. package/dist/cli-skill-command.js.map +1 -0
  54. package/dist/cli.d.ts +3 -0
  55. package/dist/cli.d.ts.map +1 -0
  56. package/dist/cli.js +272 -0
  57. package/dist/cli.js.map +1 -0
  58. package/dist/codex-skill-config.d.ts +3 -0
  59. package/dist/codex-skill-config.d.ts.map +1 -0
  60. package/dist/codex-skill-config.js +83 -0
  61. package/dist/codex-skill-config.js.map +1 -0
  62. package/dist/config.d.ts +7 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +34 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/conversion-client.d.ts +264 -0
  67. package/dist/conversion-client.d.ts.map +1 -0
  68. package/dist/conversion-client.js +445 -0
  69. package/dist/conversion-client.js.map +1 -0
  70. package/dist/conversion-models.d.ts +4 -0
  71. package/dist/conversion-models.d.ts.map +1 -0
  72. package/dist/conversion-models.js +3 -0
  73. package/dist/conversion-models.js.map +1 -0
  74. package/dist/conversion-outputs.d.ts +118 -0
  75. package/dist/conversion-outputs.d.ts.map +1 -0
  76. package/dist/conversion-outputs.js +84 -0
  77. package/dist/conversion-outputs.js.map +1 -0
  78. package/dist/conversion-problems.d.ts +3 -0
  79. package/dist/conversion-problems.d.ts.map +1 -0
  80. package/dist/conversion-problems.js +21 -0
  81. package/dist/conversion-problems.js.map +1 -0
  82. package/dist/corpus-client.d.ts +171 -0
  83. package/dist/corpus-client.d.ts.map +1 -0
  84. package/dist/corpus-client.js +85 -0
  85. package/dist/corpus-client.js.map +1 -0
  86. package/dist/credential-setup.d.ts +27 -0
  87. package/dist/credential-setup.d.ts.map +1 -0
  88. package/dist/credential-setup.js +242 -0
  89. package/dist/credential-setup.js.map +1 -0
  90. package/dist/credential-store.d.ts +12 -0
  91. package/dist/credential-store.d.ts.map +1 -0
  92. package/dist/credential-store.js +103 -0
  93. package/dist/credential-store.js.map +1 -0
  94. package/dist/idempotency-key.d.ts +2 -0
  95. package/dist/idempotency-key.d.ts.map +1 -0
  96. package/dist/idempotency-key.js +19 -0
  97. package/dist/idempotency-key.js.map +1 -0
  98. package/dist/image-generation-evidence.d.ts +26 -0
  99. package/dist/image-generation-evidence.d.ts.map +1 -0
  100. package/dist/image-generation-evidence.js +28 -0
  101. package/dist/image-generation-evidence.js.map +1 -0
  102. package/dist/image-output-width.d.ts +11 -0
  103. package/dist/image-output-width.d.ts.map +1 -0
  104. package/dist/image-output-width.js +55 -0
  105. package/dist/image-output-width.js.map +1 -0
  106. package/dist/image-provider-preflight.d.ts +21 -0
  107. package/dist/image-provider-preflight.d.ts.map +1 -0
  108. package/dist/image-provider-preflight.js +184 -0
  109. package/dist/image-provider-preflight.js.map +1 -0
  110. package/dist/index.d.ts +13 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +13 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/legacy-codex-cleanup.d.ts +11 -0
  115. package/dist/legacy-codex-cleanup.d.ts.map +1 -0
  116. package/dist/legacy-codex-cleanup.js +147 -0
  117. package/dist/legacy-codex-cleanup.js.map +1 -0
  118. package/dist/legacy-skill-catalog.d.ts +5 -0
  119. package/dist/legacy-skill-catalog.d.ts.map +1 -0
  120. package/dist/legacy-skill-catalog.js +123 -0
  121. package/dist/legacy-skill-catalog.js.map +1 -0
  122. package/dist/local-conversion-input.d.ts +21 -0
  123. package/dist/local-conversion-input.d.ts.map +1 -0
  124. package/dist/local-conversion-input.js +54 -0
  125. package/dist/local-conversion-input.js.map +1 -0
  126. package/dist/login-auth.d.ts +63 -0
  127. package/dist/login-auth.d.ts.map +1 -0
  128. package/dist/login-auth.js +282 -0
  129. package/dist/login-auth.js.map +1 -0
  130. package/dist/package-client.d.ts +147 -0
  131. package/dist/package-client.d.ts.map +1 -0
  132. package/dist/package-client.js +119 -0
  133. package/dist/package-client.js.map +1 -0
  134. package/dist/project-profiles.d.ts +45 -0
  135. package/dist/project-profiles.d.ts.map +1 -0
  136. package/dist/project-profiles.js +162 -0
  137. package/dist/project-profiles.js.map +1 -0
  138. package/dist/responsive-quality.d.ts +26 -0
  139. package/dist/responsive-quality.d.ts.map +1 -0
  140. package/dist/responsive-quality.js +68 -0
  141. package/dist/responsive-quality.js.map +1 -0
  142. package/dist/server.d.ts +6 -0
  143. package/dist/server.d.ts.map +1 -0
  144. package/dist/server.js +173 -0
  145. package/dist/server.js.map +1 -0
  146. package/dist/skill-installer.d.ts +51 -0
  147. package/dist/skill-installer.d.ts.map +1 -0
  148. package/dist/skill-installer.js +328 -0
  149. package/dist/skill-installer.js.map +1 -0
  150. package/package.json +53 -0
  151. package/skills/design/SKILL.md +156 -0
  152. package/skills/design/agents/openai.yaml +6 -0
  153. package/skills/design/references/selection-contract.md +44 -0
  154. package/skills/design-convert/SKILL.md +118 -0
  155. package/skills/design-convert/agents/openai.yaml +6 -0
  156. package/skills/design-search/SKILL.md +86 -0
  157. package/skills/design-search/agents/openai.yaml +6 -0
@@ -0,0 +1,184 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ const execFileAsync = promisify(execFile);
6
+ class CodexUnavailableError extends Error {
7
+ }
8
+ class CodexSignedOutError extends Error {
9
+ }
10
+ export const IMAGE_GENERATION_PROVIDERS = ['auto', 'codex', 'openai'];
11
+ export const isImageGenerationProvider = (value) => (typeof value === 'string'
12
+ && IMAGE_GENERATION_PROVIDERS.includes(value));
13
+ const runCodex = async (args) => {
14
+ const result = await execFileAsync('codex', args, {
15
+ encoding: 'utf8',
16
+ timeout: 15_000,
17
+ windowsHide: true,
18
+ });
19
+ return `${result.stdout}\n${result.stderr}`.trim();
20
+ };
21
+ const commandOutput = (error) => {
22
+ if (error === null || typeof error !== 'object')
23
+ return '';
24
+ const value = error;
25
+ return [value.stdout, value.stderr]
26
+ .filter((entry) => typeof entry === 'string')
27
+ .join('\n')
28
+ .trim();
29
+ };
30
+ const isSignedOutStatus = (value) => (value.split(/\r?\n/u).some((line) => (/^(?:not logged in|not authenticated|logged out)\b/iu.test(line.trim()))));
31
+ const preflightCodex = async (executeCodex = runCodex) => {
32
+ let version;
33
+ try {
34
+ version = await executeCodex(['--version']);
35
+ }
36
+ catch (error) {
37
+ if (error.code === 'ENOENT') {
38
+ throw new CodexUnavailableError('Codex is not installed or is unavailable on PATH');
39
+ }
40
+ throw error;
41
+ }
42
+ if (!version)
43
+ throw new Error('codex --version returned no version');
44
+ let status;
45
+ try {
46
+ status = await executeCodex(['login', 'status']);
47
+ }
48
+ catch (error) {
49
+ if (isSignedOutStatus(commandOutput(error))) {
50
+ throw new CodexSignedOutError('Codex is installed but is not authenticated');
51
+ }
52
+ throw error;
53
+ }
54
+ if (status.split(/\r?\n/u).some((line) => /^(?:logged in|authenticated)\b/iu.test(line.trim()))) {
55
+ return {
56
+ provider: 'codex',
57
+ model: 'codex-gpt-image-2',
58
+ codexVersion: version.split(/\r?\n/u)[0]?.trim() || 'unknown',
59
+ };
60
+ }
61
+ if (isSignedOutStatus(status)) {
62
+ throw new CodexSignedOutError('Codex is installed but is not authenticated');
63
+ }
64
+ throw new Error('codex login status returned an unrecognized authentication state');
65
+ };
66
+ const dotenvValue = (source) => {
67
+ for (const line of source.split(/\r?\n/u)) {
68
+ const match = line.match(/^\s*(?:export\s+)?OPENAI_API_KEY\s*=\s*(.*?)\s*$/u);
69
+ if (!match)
70
+ continue;
71
+ const raw = match[1] ?? '';
72
+ const value = ((raw.startsWith('"') && raw.endsWith('"'))
73
+ || (raw.startsWith("'") && raw.endsWith("'")))
74
+ ? raw.slice(1, -1)
75
+ : raw.replace(/\s+#.*$/u, '');
76
+ return value.trim() || null;
77
+ }
78
+ return null;
79
+ };
80
+ const isTrackedProjectEnv = async (projectRoot) => {
81
+ const gitEnvironment = {
82
+ ...process.env,
83
+ LANG: 'C',
84
+ LC_ALL: 'C',
85
+ };
86
+ try {
87
+ const result = await execFileAsync('git', ['-C', projectRoot, 'rev-parse', '--is-inside-work-tree'], {
88
+ encoding: 'utf8',
89
+ timeout: 10_000,
90
+ windowsHide: true,
91
+ env: gitEnvironment,
92
+ });
93
+ if (result.stdout.trim() !== 'true') {
94
+ throw new Error(`Git did not identify ${projectRoot} as a work tree`);
95
+ }
96
+ }
97
+ catch (error) {
98
+ const code = error.code;
99
+ if (code === 128
100
+ && /not a git repository/iu.test(commandOutput(error))) {
101
+ return false;
102
+ }
103
+ throw error;
104
+ }
105
+ try {
106
+ await execFileAsync('git', ['-C', projectRoot, 'ls-files', '--error-unmatch', '--', '.env'], {
107
+ encoding: 'utf8',
108
+ timeout: 10_000,
109
+ windowsHide: true,
110
+ env: gitEnvironment,
111
+ });
112
+ return true;
113
+ }
114
+ catch (error) {
115
+ const code = error.code;
116
+ if (code === 1)
117
+ return false;
118
+ throw error;
119
+ }
120
+ };
121
+ const preflightOpenAi = async (projectRoot, environment, trackedProjectEnv = isTrackedProjectEnv) => {
122
+ const processKey = environment.OPENAI_API_KEY?.trim();
123
+ if (processKey) {
124
+ return {
125
+ provider: 'openai',
126
+ model: 'gpt-image-2',
127
+ keySource: 'process',
128
+ apiKey: processKey,
129
+ };
130
+ }
131
+ const envFile = path.join(projectRoot, '.env');
132
+ let source;
133
+ try {
134
+ source = await readFile(envFile, 'utf8');
135
+ }
136
+ catch (error) {
137
+ if (error.code === 'ENOENT') {
138
+ throw new Error(`Image generation requires authenticated Codex or OPENAI_API_KEY in the process`
139
+ + ` or ${envFile}. No image request was sent.`);
140
+ }
141
+ throw error;
142
+ }
143
+ if (await trackedProjectEnv(projectRoot)) {
144
+ throw new Error(`Refusing OPENAI_API_KEY from Git-tracked ${envFile}. Remove .env from Git history/index`
145
+ + ' and keep it ignored before generating an image. No image request was sent.');
146
+ }
147
+ const apiKey = dotenvValue(source);
148
+ if (!apiKey) {
149
+ throw new Error(`OPENAI_API_KEY is missing from ${envFile}. Add it without committing the file.`
150
+ + ' No image request was sent.');
151
+ }
152
+ return {
153
+ provider: 'openai',
154
+ model: 'gpt-image-2',
155
+ keySource: 'project-env',
156
+ apiKey,
157
+ };
158
+ };
159
+ export const preflightImageProvider = async (args) => {
160
+ const environment = args.environment ?? process.env;
161
+ const executeCodex = args.runCodex ?? runCodex;
162
+ const trackedProjectEnv = args.isTrackedProjectEnv ?? isTrackedProjectEnv;
163
+ if (args.provider === 'codex') {
164
+ try {
165
+ return await preflightCodex(executeCodex);
166
+ }
167
+ catch (error) {
168
+ throw new Error(`Codex image provider preflight failed: ${error instanceof Error ? error.message : String(error)}. Run codex login before generating an image. No image request was sent.`);
169
+ }
170
+ }
171
+ if (args.provider === 'openai') {
172
+ return preflightOpenAi(args.projectRoot, environment, trackedProjectEnv);
173
+ }
174
+ try {
175
+ return await preflightCodex(executeCodex);
176
+ }
177
+ catch (error) {
178
+ if (!(error instanceof CodexUnavailableError) && !(error instanceof CodexSignedOutError)) {
179
+ throw new Error(`Automatic Codex image provider preflight was ambiguous: ${error instanceof Error ? error.message : String(error)}. OpenAI was not selected and no image request was sent.`, { cause: error });
180
+ }
181
+ return preflightOpenAi(args.projectRoot, environment, trackedProjectEnv);
182
+ }
183
+ };
184
+ //# sourceMappingURL=image-provider-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-provider-preflight.js","sourceRoot":"","sources":["../src/image-provider-preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { CONVERSION_MODELS, isConversionModel, type ConversionModel, } from './conversion-models.js';
2
+ export { LAYERDOC_V2_MEDIA_TYPE, MAX_LAYERDOC_INPUT_BYTES, TwelveUiConversionClient, type ConversionArtifact, type ConversionClientOptions, type ConversionDownload, type ConversionHistory, type ConversionHistoryItem, type ConversionHistoricalPreview, type ConversionPreviewHistory, type ConversionOperation, type ResponsiveConversionPreview, type ResponsiveConversionPreviewFrame, type CreateDerivedResponsiveHtmlConversionInput, type ConversionOutput, type ConversionResult, type ConversionSource, type CreateConversionInput, type CreateImageConversionInput, type CreateLayerDocConversionInput, type PublicLayerDocV2Input, } from './conversion-client.js';
3
+ export { CONVERSION_FIXED_EXPORT_OUTPUTS, CONVERSION_OUTPUT_EXTENSIONS, CONVERSION_OUTPUT_FILENAME_SUFFIXES, CONVERSION_OUTPUT_FORMATS, CONVERSION_OUTPUT_MEDIA_TYPES, CONVERSION_OUTPUTS, LAYERDOC_INPUT_OUTPUTS, isConversionOutput, isLayerDocInputOutput, type ConversionFixedExportOutput, type ConversionOutputFormat, type LayerDocInputOutput, } from './conversion-outputs.js';
4
+ export { APP_PROJECT_CAPABILITIES, APP_PROJECT_FRAMEWORKS, APP_PROJECT_LANGUAGES, APP_PROJECT_PACKAGINGS, APP_PROJECT_STYLINGS, CONVERSION_PROJECT_OUTPUTS, WEB_PROJECT_CAPABILITIES, WEB_PROJECT_FRAMEWORKS, WEB_PROJECT_LANGUAGES, WEB_PROJECT_PACKAGINGS, WEB_PROJECT_STYLINGS, canonicalConversionOutputProfileJson, isProjectConversionOutput, parseConversionOutputProfile, type AppProjectFramework, type AppProjectLanguage, type AppProjectPackaging, type AppProjectProfileV1, type AppProjectStyling, type ConversionOutputProfile, type ConversionProjectOutput, type WebProjectFramework, type WebProjectLanguage, type WebProjectPackaging, type WebProjectProfileV1, type WebProjectStyling, } from './project-profiles.js';
5
+ export { CONVERSION_PROBLEM_CODES, type ConversionProblemCode, } from './conversion-problems.js';
6
+ export { RESPONSIVE_CONVERSION_QUALITIES, PERSISTED_RESPONSIVE_CONVERSION_QUALITIES, RESPONSIVE_ANCHOR_PLAN_REVISION, LOGICAL_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION, RASTER_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION, THREE_TIER_RESPONSIVE_ANCHOR_PLAN_REVISION, LEGACY_RESPONSIVE_ANCHOR_PLAN_REVISION, isResponsiveConversionQuality, isPersistedResponsiveConversionQuality, parseResponsiveConversionPlan, type ResponsiveConversionPlan, type ResponsiveConversionQuality, type PersistedResponsiveConversionQuality, } from './responsive-quality.js';
7
+ export { materializeConversionArtifacts, type MaterializedArtifact, type MaterializedArtifactManifest, } from './artifact-materializer.js';
8
+ export { normalizeConversionOrigin, readConversionConfig, type ConversionConfig } from './config.js';
9
+ export { DEFAULT_TWELVE_UI_DEVICE_SCOPES, DEFAULT_TWELVE_UI_LOGIN_ORIGIN, TWELVE_UI_DEVICE_SCOPES, authenticateTwelveUiDevice, normalizeLoginOrigin, revokeTwelveUiCredential, verifyTwelveUiCredential, type TwelveUiDeviceCredential, type TwelveUiDeviceScope, type VerifiedTwelveUiCredential, } from './login-auth.js';
10
+ export { CONVERSION_PACKAGE_MEDIA_TYPE, CONVERSION_PACKAGE_SITE_MEDIA_TYPE, TwelveUiConversionPackageClient, type ConversionPackageClientOptions, type ConversionPackageFile, type ConversionPackageLegacyManifest, type ConversionPackageManifest, type ConversionPackageOperation, type ConversionPackageSiteManifest, type CreateConversionPackageInput, } from './package-client.js';
11
+ export { startMcpServer, type McpServerOptions } from './server.js';
12
+ export { CORPUS_QUERY_IDEMPOTENCY_REVISION, TwelveUiCorpusClient, type CorpusAspect, type CorpusClientOptions, type CorpusFilters, type CorpusInspirationItem, type CorpusInspirationRequest, type CorpusInspirationResponse, type CorpusMatch, type CorpusPurpose, type CorpusQuality, type CorpusReference, type CorpusRetrievalCluster, type CorpusRetrievalRequest, type CorpusRetrievalResponse, type CorpusStatus, type CorpusTrack, } from './corpus-client.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,0CAA0C,EAC/C,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,mCAAmC,EACnC,yBAAyB,EACzB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oCAAoC,EACpC,yBAAyB,EACzB,4BAA4B,EAC5B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,+BAA+B,EAC/B,yCAAyC,EACzC,+BAA+B,EAC/B,6CAA6C,EAC7C,4CAA4C,EAC5C,0CAA0C,EAC1C,sCAAsC,EACtC,6BAA6B,EAC7B,sCAAsC,EACtC,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,GAC1C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,8BAA8B,EAC9B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,EAClC,+BAA+B,EAC/B,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,iCAAiC,EACjC,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export { CONVERSION_MODELS, isConversionModel, } from './conversion-models.js';
2
+ export { LAYERDOC_V2_MEDIA_TYPE, MAX_LAYERDOC_INPUT_BYTES, TwelveUiConversionClient, } from './conversion-client.js';
3
+ export { CONVERSION_FIXED_EXPORT_OUTPUTS, CONVERSION_OUTPUT_EXTENSIONS, CONVERSION_OUTPUT_FILENAME_SUFFIXES, CONVERSION_OUTPUT_FORMATS, CONVERSION_OUTPUT_MEDIA_TYPES, CONVERSION_OUTPUTS, LAYERDOC_INPUT_OUTPUTS, isConversionOutput, isLayerDocInputOutput, } from './conversion-outputs.js';
4
+ export { APP_PROJECT_CAPABILITIES, APP_PROJECT_FRAMEWORKS, APP_PROJECT_LANGUAGES, APP_PROJECT_PACKAGINGS, APP_PROJECT_STYLINGS, CONVERSION_PROJECT_OUTPUTS, WEB_PROJECT_CAPABILITIES, WEB_PROJECT_FRAMEWORKS, WEB_PROJECT_LANGUAGES, WEB_PROJECT_PACKAGINGS, WEB_PROJECT_STYLINGS, canonicalConversionOutputProfileJson, isProjectConversionOutput, parseConversionOutputProfile, } from './project-profiles.js';
5
+ export { CONVERSION_PROBLEM_CODES, } from './conversion-problems.js';
6
+ export { RESPONSIVE_CONVERSION_QUALITIES, PERSISTED_RESPONSIVE_CONVERSION_QUALITIES, RESPONSIVE_ANCHOR_PLAN_REVISION, LOGICAL_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION, RASTER_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION, THREE_TIER_RESPONSIVE_ANCHOR_PLAN_REVISION, LEGACY_RESPONSIVE_ANCHOR_PLAN_REVISION, isResponsiveConversionQuality, isPersistedResponsiveConversionQuality, parseResponsiveConversionPlan, } from './responsive-quality.js';
7
+ export { materializeConversionArtifacts, } from './artifact-materializer.js';
8
+ export { normalizeConversionOrigin, readConversionConfig } from './config.js';
9
+ export { DEFAULT_TWELVE_UI_DEVICE_SCOPES, DEFAULT_TWELVE_UI_LOGIN_ORIGIN, TWELVE_UI_DEVICE_SCOPES, authenticateTwelveUiDevice, normalizeLoginOrigin, revokeTwelveUiCredential, verifyTwelveUiCredential, } from './login-auth.js';
10
+ export { CONVERSION_PACKAGE_MEDIA_TYPE, CONVERSION_PACKAGE_SITE_MEDIA_TYPE, TwelveUiConversionPackageClient, } from './package-client.js';
11
+ export { startMcpServer } from './server.js';
12
+ export { CORPUS_QUERY_IDEMPOTENCY_REVISION, TwelveUiCorpusClient, } from './corpus-client.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GAmBzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,mCAAmC,EACnC,yBAAyB,EACzB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,GAItB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oCAAoC,EACpC,yBAAyB,EACzB,4BAA4B,GAa7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,GAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,+BAA+B,EAC/B,yCAAyC,EACzC,+BAA+B,EAC/B,6CAA6C,EAC7C,4CAA4C,EAC5C,0CAA0C,EAC1C,sCAAsC,EACtC,6BAA6B,EAC7B,sCAAsC,EACtC,6BAA6B,GAI9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,8BAA8B,GAG/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAyB,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,GAIzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,EAClC,+BAA+B,GAQhC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAyB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,iCAAiC,EACjC,oBAAoB,GAgBrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type LegacyCodexCleanupResult = {
2
+ removed: string[];
3
+ preserved: string[];
4
+ recovery: string[];
5
+ workspaceData: string;
6
+ };
7
+ export declare const cleanupLegacyCodexInstall: (args?: {
8
+ environment?: NodeJS.ProcessEnv;
9
+ homeDirectory?: string;
10
+ }) => Promise<LegacyCodexCleanupResult>;
11
+ //# sourceMappingURL=legacy-codex-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-codex-cleanup.d.ts","sourceRoot":"","sources":["../src/legacy-codex-cleanup.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAiGF,eAAO,MAAM,yBAAyB,GAAU,OAAM;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,KAAG,OAAO,CAAC,wBAAwB,CAwDxC,CAAC"}
@@ -0,0 +1,147 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { lstat, mkdir, readFile, rename, rm, writeFile, } from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ const exists = async (target) => {
6
+ try {
7
+ await lstat(target);
8
+ return true;
9
+ }
10
+ catch (error) {
11
+ if (error.code === 'ENOENT')
12
+ return false;
13
+ throw error;
14
+ }
15
+ };
16
+ const oldVersion = (value) => (typeof value === 'string' && /^0\.1\.(?:[0-9]|10)$/u.test(value));
17
+ const recognizedInstallRoot = async (root) => {
18
+ try {
19
+ const parsed = JSON.parse(await readFile(path.join(root, 'node_modules', '@12ui', 'codex-design', 'package.json'), 'utf8'));
20
+ return parsed.name === '@12ui/codex-design' && oldVersion(parsed.version);
21
+ }
22
+ catch (error) {
23
+ if (error.code === 'ENOENT')
24
+ return false;
25
+ throw error;
26
+ }
27
+ };
28
+ const recognizedLauncher = async (launcher, installRoot) => {
29
+ try {
30
+ const source = await readFile(launcher, 'utf8');
31
+ if (createHash('sha256').update(source).digest('hex')
32
+ === 'e6c65382f4338a0567bd8947710a8cc9e1dfecbbd697962002bf3e0a57ecabcc') {
33
+ return true;
34
+ }
35
+ return source.includes(installRoot)
36
+ && source.includes('@12ui/codex-design')
37
+ && source.includes('codex-design');
38
+ }
39
+ catch (error) {
40
+ if (error.code === 'ENOENT')
41
+ return false;
42
+ throw error;
43
+ }
44
+ };
45
+ const tomlBlocks = (lines) => {
46
+ const headers = lines.flatMap((line, index) => (/^\s*(?:\[\[?[^\]]+\]?\])\s*$/u.test(line)
47
+ ? [{ index, header: line.trim() }]
48
+ : []));
49
+ return headers.map((entry, index) => ({
50
+ start: entry.index,
51
+ end: headers[index + 1]?.index ?? lines.length,
52
+ header: entry.header,
53
+ }));
54
+ };
55
+ const cleanCodexConfig = async (configPath, cacheRoot, marketplaceRoot) => {
56
+ let source;
57
+ try {
58
+ source = await readFile(configPath, 'utf8');
59
+ }
60
+ catch (error) {
61
+ if (error.code === 'ENOENT')
62
+ return false;
63
+ throw error;
64
+ }
65
+ const lines = source.split(/\r?\n/u);
66
+ const removable = tomlBlocks(lines).filter((block) => {
67
+ const body = lines.slice(block.start, block.end).join('\n');
68
+ if (block.header === '[plugins."12ui-design@12ui"]')
69
+ return true;
70
+ if (block.header === '[marketplaces.12ui]') {
71
+ return body.includes(JSON.stringify(marketplaceRoot))
72
+ || body.includes('just-every/12ui-codex');
73
+ }
74
+ return block.header === '[[skills.config]]'
75
+ && body.includes(cacheRoot);
76
+ });
77
+ if (removable.length === 0)
78
+ return false;
79
+ const removedLines = new Set(removable.flatMap((block) => (Array.from({ length: block.end - block.start }, (_, index) => block.start + index))));
80
+ const cleaned = lines.filter((_, index) => !removedLines.has(index)).join('\n')
81
+ .replace(/\n{3,}/gu, '\n\n');
82
+ const temporary = `${configPath}.${randomUUID()}.tmp`;
83
+ try {
84
+ await writeFile(temporary, cleaned, { encoding: 'utf8', flag: 'wx' });
85
+ await rename(temporary, configPath);
86
+ }
87
+ finally {
88
+ await rm(temporary, { force: true });
89
+ }
90
+ return true;
91
+ };
92
+ export const cleanupLegacyCodexInstall = async (args = {}) => {
93
+ const environment = args.environment ?? process.env;
94
+ const homeDirectory = args.homeDirectory ?? os.homedir();
95
+ const dataHome = environment.XDG_DATA_HOME?.trim()
96
+ ? path.resolve(environment.XDG_DATA_HOME)
97
+ : path.join(homeDirectory, '.local', 'share');
98
+ const codexHome = environment.CODEX_HOME?.trim()
99
+ ? path.resolve(environment.CODEX_HOME)
100
+ : path.join(homeDirectory, '.codex');
101
+ const installRoot = path.join(dataHome, '12ui', 'codex-design');
102
+ const launcher = path.join(homeDirectory, '.local', 'bin', 'codex-design');
103
+ const cacheRoot = path.join(codexHome, 'plugins', 'cache', '12ui', '12ui-design');
104
+ const marketplaceRoot = path.join(installRoot, 'marketplace');
105
+ const workspaceData = path.join(homeDirectory, '.12ui', 'codex-design');
106
+ const removed = [];
107
+ const preserved = [];
108
+ const recovery = [];
109
+ const retirementRoot = path.join(dataHome, '12ui', 'retired');
110
+ const retire = async (target, label) => {
111
+ await mkdir(retirementRoot, { recursive: true });
112
+ const destination = path.join(retirementRoot, `${label}-${randomUUID()}`);
113
+ await rename(target, destination);
114
+ removed.push(target);
115
+ recovery.push(destination);
116
+ };
117
+ const installIsRecognized = await recognizedInstallRoot(installRoot);
118
+ if (await exists(installRoot)) {
119
+ if (installIsRecognized) {
120
+ // The old npm tree can contain platform-specific dependency bytes that
121
+ // were never covered by a published content manifest. Remove it from the
122
+ // active path transactionally, but quarantine the bytes for recovery
123
+ // instead of recursively deleting possible local modifications.
124
+ await retire(installRoot, 'codex-design-install');
125
+ }
126
+ else {
127
+ preserved.push(installRoot);
128
+ }
129
+ }
130
+ if (await exists(launcher)) {
131
+ if (installIsRecognized && await recognizedLauncher(launcher, installRoot)) {
132
+ await rm(launcher);
133
+ removed.push(launcher);
134
+ }
135
+ else {
136
+ preserved.push(launcher);
137
+ }
138
+ }
139
+ if (await cleanCodexConfig(path.join(codexHome, 'config.toml'), cacheRoot, marketplaceRoot)) {
140
+ removed.push('12ui-design@12ui Codex config registrations');
141
+ }
142
+ if (await exists(cacheRoot)) {
143
+ await retire(cacheRoot, 'codex-design-cache');
144
+ }
145
+ return { removed, preserved, recovery, workspaceData };
146
+ };
147
+ //# sourceMappingURL=legacy-codex-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-codex-cleanup.js","sourceRoot":"","sources":["../src/legacy-codex-cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const LEGACY_SKILL_NAMES: readonly ["12ui-image-to-code", "12ui-design-to-code", "12ui", "every-design", "design", "design-auto"];
2
+ export type LegacySkillName = typeof LEGACY_SKILL_NAMES[number];
3
+ export declare const matchingLegacySkillFiles: (directory: string) => Promise<string[]>;
4
+ export declare const inspectLegacySkillDirectory: (directory: string) => Promise<"missing" | "recognized" | "unknown">;
5
+ //# sourceMappingURL=legacy-skill-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-skill-catalog.d.ts","sourceRoot":"","sources":["../src/legacy-skill-catalog.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,yGAOrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AA2EhE,eAAO,MAAM,wBAAwB,GACnC,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,EAAE,CAiBlB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,WAAW,MAAM,KAChB,OAAO,CAAC,SAAS,GAAG,YAAY,GAAG,SAAS,CAoB9C,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { lstat, readdir, readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ export const LEGACY_SKILL_NAMES = [
5
+ '12ui-image-to-code',
6
+ '12ui-design-to-code',
7
+ '12ui',
8
+ 'every-design',
9
+ 'design',
10
+ 'design-auto',
11
+ ];
12
+ const variants = {
13
+ '12ui-image-to-code': [{
14
+ 'SKILL.md': '0a4f48a1126346ceaea92d33c31b4d592e2c78119268f80bd78ea7741e0c85d1',
15
+ 'agents/openai.yaml': '4a74c0e26fa539d231d28d75f0d565db3c652dc690b333f6c6acc67a39540188',
16
+ }],
17
+ '12ui-design-to-code': [{
18
+ 'SKILL.md': '1b893f4db1f91206a946504f0bc8641c757038b9499947a02cb646c3e5952883',
19
+ 'agents/openai.yaml': 'b3d39fe45ecd7b2eb70995d4d91ef09f5c95c8e1b83f4c7e8cffa8f2ae49e1fe',
20
+ 'references/selection-rubric.md': 'e12e58608289a3d371ef621e9c4e71821f88894db0afecf77f534cc188f07088',
21
+ }],
22
+ '12ui': [
23
+ {
24
+ 'SKILL.md': '3ec42c9e3fdb83f345b89e8a950e5745ed3a5f62be09a888856c9545c01e1916',
25
+ },
26
+ {
27
+ 'SKILL.md': '3ec42c9e3fdb83f345b89e8a950e5745ed3a5f62be09a888856c9545c01e1916',
28
+ 'agents/openai.yaml': 'ee3bfa5ec29cbd8db920d659eb0af4f8dbdd7ec2b9720d58b6eae488c75be355',
29
+ 'assets/icon-large.png': '3018c8a6745dbe16edc873459e4fb4cc88ba7810f3811b350025d247479eda54',
30
+ 'assets/icon-small.png': '8ba78e67adb7f6bf7dfdb3e5420f0885d28763bf7f25ef4dea96ad3a1a01e6eb',
31
+ },
32
+ ],
33
+ 'every-design': [
34
+ {
35
+ 'SKILL.md': '8fffa3564b50aa03c3654ff33a2558c6c6b8ff8df7b3e6d5f6d27ceff5fd00fc',
36
+ },
37
+ {
38
+ 'SKILL.md': '8fffa3564b50aa03c3654ff33a2558c6c6b8ff8df7b3e6d5f6d27ceff5fd00fc',
39
+ 'agents/openai.yaml': '05faab0fec8353cb084cd1dc09127d13fc73e292232809375d265e1b368f5fbe',
40
+ 'assets/icon-large.png': '3018c8a6745dbe16edc873459e4fb4cc88ba7810f3811b350025d247479eda54',
41
+ 'assets/icon-small.png': '8ba78e67adb7f6bf7dfdb3e5420f0885d28763bf7f25ef4dea96ad3a1a01e6eb',
42
+ },
43
+ ],
44
+ design: [{
45
+ 'SKILL.md': 'ff718dcf62b9c6e7e354863a211a4505af019a9b8c4a07c478d27440447d93ab',
46
+ 'agents/openai.yaml': '0ad4d9d49826738e185cf45cf13d65deda567fd1a1f397884a5ee30cb89c4888',
47
+ }],
48
+ 'design-auto': [{
49
+ 'SKILL.md': '89fb63809f8193b5f4d3283bb24107157166d7068417b3b814bb583f0955b101',
50
+ 'agents/openai.yaml': '7d91a91e40c62a2c10c6cb42c3fe71977ec860663bd19cb62c6b7a0d2bca6e2d',
51
+ }],
52
+ };
53
+ const isRealDirectory = async (target) => {
54
+ try {
55
+ const metadata = await lstat(target);
56
+ return metadata.isDirectory() && !metadata.isSymbolicLink();
57
+ }
58
+ catch (error) {
59
+ if (error.code === 'ENOENT')
60
+ return false;
61
+ throw error;
62
+ }
63
+ };
64
+ const listFiles = async (root, relative = '') => {
65
+ const entries = await readdir(path.join(root, relative), { withFileTypes: true });
66
+ const children = await Promise.all(entries.map(async (entry) => {
67
+ const child = path.join(relative, entry.name);
68
+ return entry.isDirectory() ? listFiles(root, child) : [child];
69
+ }));
70
+ return children.flat().sort();
71
+ };
72
+ const digestsForDirectory = async (directory) => {
73
+ const files = await listFiles(directory);
74
+ return new Map(await Promise.all(files.map(async (file) => [
75
+ file,
76
+ createHash('sha256').update(await readFile(path.join(directory, file))).digest('hex'),
77
+ ])));
78
+ };
79
+ export const matchingLegacySkillFiles = async (directory) => {
80
+ if (!(await isRealDirectory(directory)))
81
+ return [];
82
+ const name = path.basename(directory);
83
+ if (!LEGACY_SKILL_NAMES.includes(name))
84
+ return [];
85
+ const known = variants[name];
86
+ const recognizedDigests = new Map();
87
+ for (const variant of known) {
88
+ for (const [file, digest] of Object.entries(variant)) {
89
+ const fileDigests = recognizedDigests.get(file) ?? new Set();
90
+ fileDigests.add(digest);
91
+ recognizedDigests.set(file, fileDigests);
92
+ }
93
+ }
94
+ const actual = await digestsForDirectory(directory);
95
+ return [...actual.entries()].flatMap(([file, digest]) => (recognizedDigests.get(file)?.has(digest) ? [file] : [])).sort();
96
+ };
97
+ export const inspectLegacySkillDirectory = async (directory) => {
98
+ try {
99
+ const metadata = await lstat(directory);
100
+ if (!metadata.isDirectory() || metadata.isSymbolicLink())
101
+ return 'unknown';
102
+ }
103
+ catch (error) {
104
+ if (error.code === 'ENOENT')
105
+ return 'missing';
106
+ throw error;
107
+ }
108
+ const name = path.basename(directory);
109
+ if (!LEGACY_SKILL_NAMES.includes(name))
110
+ return 'unknown';
111
+ const actual = await digestsForDirectory(directory);
112
+ const files = [...actual.keys()];
113
+ for (const variant of variants[name]) {
114
+ const expected = Object.keys(variant).sort();
115
+ if (expected.length !== files.length || expected.some((file, index) => file !== files[index])) {
116
+ continue;
117
+ }
118
+ if (files.every((file) => actual.get(file) === variant[file]))
119
+ return 'recognized';
120
+ }
121
+ return 'unknown';
122
+ };
123
+ //# sourceMappingURL=legacy-skill-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-skill-catalog.js","sourceRoot":"","sources":["../src/legacy-skill-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CreateImageConversionInput, CreateLayerDocConversionInput } from './conversion-client.js';
2
+ import { type ConversionOutput } from './conversion-outputs.js';
3
+ import { type ConversionOutputProfile } from './project-profiles.js';
4
+ type ImageMediaType = 'image/png' | 'image/jpeg' | 'image/webp';
5
+ export type LocalConversionInput = {
6
+ kind: 'image';
7
+ mediaType: ImageMediaType;
8
+ } | {
9
+ kind: 'layerdoc';
10
+ };
11
+ export type CreateLocalConversionInput = CreateImageConversionInput | CreateLayerDocConversionInput;
12
+ export declare const classifyLocalConversionInput: (filePath: string) => LocalConversionInput;
13
+ export declare const createInputForLocalFile: (args: {
14
+ bytes: Uint8Array;
15
+ filePath: string;
16
+ output: ConversionOutput;
17
+ profile?: ConversionOutputProfile;
18
+ }) => CreateLocalConversionInput;
19
+ export declare const defaultConversionOutputPath: (inputPath: string, output: ConversionOutput) => string;
20
+ export {};
21
+ //# sourceMappingURL=local-conversion-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-conversion-input.d.ts","sourceRoot":"","sources":["../src/local-conversion-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAE/B,KAAK,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG,6BAA6B,CAAC;AASpG,eAAO,MAAM,4BAA4B,GAAI,UAAU,MAAM,KAAG,oBAM/D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC,KAAG,0BAwBH,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,WAAW,MAAM,EACjB,QAAQ,gBAAgB,KACvB,MASF,CAAC"}