primitive-admin 1.0.49 → 1.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -2
- package/assets/skill/skills/primitive-platform/SKILL.md +85 -30
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +66 -1
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/apps.d.ts +2 -0
- package/dist/src/commands/apps.js +20 -0
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/blob-buckets.d.ts +2 -0
- package/dist/src/commands/catalog.d.ts +2 -0
- package/dist/src/commands/collection-type-configs.d.ts +2 -0
- package/dist/src/commands/collections.d.ts +2 -0
- package/dist/src/commands/comparisons.d.ts +2 -0
- package/dist/src/commands/cron-triggers.d.ts +2 -0
- package/dist/src/commands/cron-triggers.js +8 -15
- package/dist/src/commands/cron-triggers.js.map +1 -1
- package/dist/src/commands/database-types.d.ts +2 -0
- package/dist/src/commands/databases.d.ts +2 -0
- package/dist/src/commands/databases.js +31 -0
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +2 -0
- package/dist/src/commands/email-templates.d.ts +2 -0
- package/dist/src/commands/env.d.ts +12 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/groups.d.ts +2 -0
- package/dist/src/commands/guides.d.ts +84 -0
- package/dist/src/commands/guides.js +201 -24
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +17 -0
- package/dist/src/commands/init.js +63 -25
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.d.ts +2 -0
- package/dist/src/commands/integrations.js +22 -5
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/llm.d.ts +2 -0
- package/dist/src/commands/prompts.d.ts +2 -0
- package/dist/src/commands/rule-sets.d.ts +2 -0
- package/dist/src/commands/secrets.d.ts +2 -0
- package/dist/src/commands/skill.d.ts +2 -0
- package/dist/src/commands/sync.d.ts +113 -0
- package/dist/src/commands/sync.js +366 -12
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +104 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/waitlist.d.ts +2 -0
- package/dist/src/commands/waitlist.js +1 -1
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +2 -0
- package/dist/src/commands/workflows.d.ts +49 -0
- package/dist/src/commands/workflows.js +74 -21
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +1244 -0
- package/dist/src/lib/api-client.js +30 -0
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/auth-flow.d.ts +8 -0
- package/dist/src/lib/cli-manifest.d.ts +60 -0
- package/dist/src/lib/cli-manifest.js +70 -0
- package/dist/src/lib/cli-manifest.js.map +1 -0
- package/dist/src/lib/config.d.ts +37 -0
- package/dist/src/lib/confirm-prompt.d.ts +66 -0
- package/dist/src/lib/confirm-prompt.js +85 -0
- package/dist/src/lib/confirm-prompt.js.map +1 -0
- package/dist/src/lib/constants.d.ts +2 -0
- package/dist/src/lib/crash-handlers.d.ts +20 -0
- package/dist/src/lib/crash-handlers.js +49 -0
- package/dist/src/lib/crash-handlers.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +79 -0
- package/dist/src/lib/csv.d.ts +48 -0
- package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +111 -0
- package/dist/src/lib/db-codegen/dbNaming.d.ts +45 -0
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +97 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +31 -10
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +78 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js +2 -2
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -1
- package/dist/src/lib/env-resolver.d.ts +62 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/init-config.d.ts +46 -0
- package/dist/src/lib/init-config.js +7 -0
- package/dist/src/lib/init-config.js.map +1 -1
- package/dist/src/lib/migration-nag.d.ts +49 -0
- package/dist/src/lib/output.d.ts +49 -0
- package/dist/src/lib/output.js +25 -1
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/paginate.d.ts +33 -0
- package/dist/src/lib/project-config.d.ts +97 -0
- package/dist/src/lib/refresh-admin-credentials.d.ts +65 -0
- package/dist/src/lib/resolve-platform.d.ts +45 -0
- package/dist/src/lib/resolve-platform.js +43 -0
- package/dist/src/lib/resolve-platform.js.map +1 -0
- package/dist/src/lib/skill-installer.d.ts +23 -0
- package/dist/src/lib/snapshots.d.ts +99 -0
- package/dist/src/lib/snapshots.js +357 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +72 -0
- package/dist/src/lib/sync-paths.js +29 -1
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/template.d.ts +93 -0
- package/dist/src/lib/token-inject.d.ts +56 -0
- package/dist/src/lib/token-inject.js +204 -0
- package/dist/src/lib/token-inject.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +132 -0
- package/dist/src/lib/toml-params-validator.d.ts +95 -0
- package/dist/src/lib/version-check.d.ts +10 -0
- package/dist/src/lib/workflow-fragments.d.ts +41 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +86 -0
- package/dist/src/lib/workflow-toml-validator.js +31 -1
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +513 -0
- package/dist/src/validators.d.ts +64 -0
- package/dist/src/validators.js +63 -0
- package/dist/src/validators.js.map +1 -0
- package/package.json +7 -1
|
@@ -9,6 +9,109 @@ const CACHE_META_FILE = join(GUIDES_CACHE_DIR, "cache-meta.json");
|
|
|
9
9
|
const GITHUB_RAW_BASE = "https://raw.githubusercontent.com/Primitive-Labs/primitive-docs/main/guides";
|
|
10
10
|
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
11
11
|
const CLIENT_PACKAGE_NAME = "js-bao-wss-client";
|
|
12
|
+
// Language aliases — map the agent's natural vocabulary onto canonical values.
|
|
13
|
+
const LANGUAGE_ALIASES = {
|
|
14
|
+
typescript: "ts",
|
|
15
|
+
javascript: "ts",
|
|
16
|
+
js: "ts",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Normalize a `--language` flag value: lowercase, trim, and map known aliases
|
|
20
|
+
* (typescript/javascript/js → ts). Unknown values pass through unchanged.
|
|
21
|
+
*
|
|
22
|
+
* NOTE: guide flags are intentionally NOT validated against a fixed enum. An
|
|
23
|
+
* unknown/typo'd value simply matches no variant and falls back to the guide's
|
|
24
|
+
* default `file` (the "never fail" behavior from #977). This DIVERGES from
|
|
25
|
+
* `init --platform`, which validates and exits for unsupported values
|
|
26
|
+
* (cli/src/commands/init.ts) — that divergence is deliberate and guide-specific.
|
|
27
|
+
*/
|
|
28
|
+
export function normalizeLanguage(value) {
|
|
29
|
+
if (value === undefined)
|
|
30
|
+
return undefined;
|
|
31
|
+
const lower = value.trim().toLowerCase();
|
|
32
|
+
if (lower === "")
|
|
33
|
+
return undefined;
|
|
34
|
+
return LANGUAGE_ALIASES[lower] ?? lower;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Normalize a `--platform` flag value: lowercase + trim. No aliases for now.
|
|
38
|
+
* Like `normalizeLanguage`, unknown values pass through and fall back to the
|
|
39
|
+
* default `file` rather than erroring (guide-specific "never fail" behavior).
|
|
40
|
+
*/
|
|
41
|
+
export function normalizePlatform(value) {
|
|
42
|
+
if (value === undefined)
|
|
43
|
+
return undefined;
|
|
44
|
+
const lower = value.trim().toLowerCase();
|
|
45
|
+
if (lower === "")
|
|
46
|
+
return undefined;
|
|
47
|
+
return lower;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Select the guide variant filename for a requested (language, platform).
|
|
51
|
+
*
|
|
52
|
+
* Implemented as ordered `find()` passes — NOT a wildcard scoring system —
|
|
53
|
+
* with the no-flags case special-cased to the default `file`:
|
|
54
|
+
*
|
|
55
|
+
* 0. No flags at all → guide.file (deterministic "default")
|
|
56
|
+
* 1. Exact pair → variant pins BOTH requested dims
|
|
57
|
+
* 2. Language-only → variant pins language; platform agnostic
|
|
58
|
+
* 3. Platform-only → variant pins platform; language agnostic
|
|
59
|
+
* 4. Default → guide.file
|
|
60
|
+
*
|
|
61
|
+
* An omitted REQUEST dimension acts as a wildcard during matching (a
|
|
62
|
+
* `--language swift` request matches a swift variant regardless of platform).
|
|
63
|
+
* This function NEVER throws — an unknown/typo'd/unavailable combination simply
|
|
64
|
+
* falls through to the guide's default `file`.
|
|
65
|
+
*/
|
|
66
|
+
export function selectVariant(guide, request) {
|
|
67
|
+
const reqLang = request.language;
|
|
68
|
+
const reqPlat = request.platform;
|
|
69
|
+
const variants = guide.variants ?? [];
|
|
70
|
+
// 0. No flags supplied at all → deterministically serve the default file.
|
|
71
|
+
if (reqLang === undefined && reqPlat === undefined) {
|
|
72
|
+
return { file: guide.file, matchedOn: "default" };
|
|
73
|
+
}
|
|
74
|
+
// A variant "matches" a dimension if the request omits it (wildcard) OR the
|
|
75
|
+
// variant pins it to exactly the requested value. A variant that omits a
|
|
76
|
+
// dimension is agnostic and matches any requested value for that dimension.
|
|
77
|
+
const langMatches = (v) => reqLang === undefined || v.language === undefined || v.language === reqLang;
|
|
78
|
+
const platMatches = (v) => reqPlat === undefined || v.platform === undefined || v.platform === reqPlat;
|
|
79
|
+
// 1. Exact pair: variant pins both requested dimensions to the request.
|
|
80
|
+
if (reqLang !== undefined && reqPlat !== undefined) {
|
|
81
|
+
const exact = variants.find((v) => v.language === reqLang && v.platform === reqPlat);
|
|
82
|
+
if (exact)
|
|
83
|
+
return { file: exact.file, matchedOn: "exact" };
|
|
84
|
+
}
|
|
85
|
+
// 2. Language requested. Prefer a platform-agnostic variant that pins the
|
|
86
|
+
// language (reported as "language" — pinned one dim, agnostic on the
|
|
87
|
+
// other). If none exists, honor the omitted-platform wildcard and fall
|
|
88
|
+
// back to a pair-specific variant that still satisfies the request
|
|
89
|
+
// (e.g. only `{swift,ios}` published + `--language swift`). That fallback
|
|
90
|
+
// pins BOTH dimensions to satisfy the request, so it's reported as
|
|
91
|
+
// "exact" — the variant is as specific as an exact-pair hit.
|
|
92
|
+
if (reqLang !== undefined) {
|
|
93
|
+
const langAgnostic = variants.find((v) => v.language === reqLang && v.platform === undefined);
|
|
94
|
+
if (langAgnostic)
|
|
95
|
+
return { file: langAgnostic.file, matchedOn: "language" };
|
|
96
|
+
const langWildcard = variants.find((v) => v.language === reqLang && platMatches(v));
|
|
97
|
+
if (langWildcard)
|
|
98
|
+
return { file: langWildcard.file, matchedOn: "exact" };
|
|
99
|
+
}
|
|
100
|
+
// 3. Platform requested (symmetric to pass 2). Prefer a language-agnostic
|
|
101
|
+
// variant that pins the platform ("platform"); otherwise honor the
|
|
102
|
+
// omitted-language wildcard and fall back to a pair-specific variant
|
|
103
|
+
// satisfying the request, reported as "exact".
|
|
104
|
+
if (reqPlat !== undefined) {
|
|
105
|
+
const platAgnostic = variants.find((v) => v.platform === reqPlat && v.language === undefined);
|
|
106
|
+
if (platAgnostic)
|
|
107
|
+
return { file: platAgnostic.file, matchedOn: "platform" };
|
|
108
|
+
const platWildcard = variants.find((v) => v.platform === reqPlat && langMatches(v));
|
|
109
|
+
if (platWildcard)
|
|
110
|
+
return { file: platWildcard.file, matchedOn: "exact" };
|
|
111
|
+
}
|
|
112
|
+
// 4. Nothing matched → the guide's default file (never throws).
|
|
113
|
+
return { file: guide.file, matchedOn: "default" };
|
|
114
|
+
}
|
|
12
115
|
function detectClientVersion() {
|
|
13
116
|
const clientPkgPath = join(process.cwd(), "node_modules", CLIENT_PACKAGE_NAME, "package.json");
|
|
14
117
|
try {
|
|
@@ -184,26 +287,30 @@ async function fetchManifest(versionInfo, forceRefresh = false) {
|
|
|
184
287
|
}
|
|
185
288
|
throw new Error(`Failed to fetch guides manifest for ${versionInfo.version}`);
|
|
186
289
|
}
|
|
187
|
-
async function fetchGuide(guide, version, forceRefresh = false) {
|
|
290
|
+
async function fetchGuide(guide, version, request = {}, forceRefresh = false) {
|
|
188
291
|
ensureCacheDir(version);
|
|
189
292
|
const meta = loadCacheMeta();
|
|
190
|
-
|
|
293
|
+
// Resolve the variant filename for the requested (language, platform).
|
|
294
|
+
const { file: selectedFile } = selectVariant(guide, request);
|
|
295
|
+
const guideFileName = basename(selectedFile);
|
|
191
296
|
const cachedPath = join(getGuidesCacheDir(version), guideFileName);
|
|
192
|
-
|
|
297
|
+
// Freshness is keyed by the RESOLVED filename (not topic) so a `ts` fetch
|
|
298
|
+
// cannot mark the `swift` variant fresh — and vice versa (#977).
|
|
299
|
+
const fetchedAt = meta.guidesFetchedAt?.[version]?.[guideFileName];
|
|
193
300
|
const cacheExpired = isCacheExpired(fetchedAt);
|
|
194
301
|
const hasCachedGuide = existsSync(cachedPath);
|
|
195
302
|
// If cache is valid and not forcing refresh, use it
|
|
196
303
|
if (!forceRefresh && !cacheExpired && hasCachedGuide) {
|
|
197
304
|
try {
|
|
198
305
|
const content = readFileSync(cachedPath, "utf-8");
|
|
199
|
-
return { content, fromCache: true, stale: false };
|
|
306
|
+
return { content, fromCache: true, stale: false, selectedFile };
|
|
200
307
|
}
|
|
201
308
|
catch {
|
|
202
309
|
// Cache corrupted, will fetch fresh
|
|
203
310
|
}
|
|
204
311
|
}
|
|
205
312
|
// Try to fetch from network
|
|
206
|
-
const guideUrl = getGuideUrl(version,
|
|
313
|
+
const guideUrl = getGuideUrl(version, selectedFile);
|
|
207
314
|
try {
|
|
208
315
|
const response = await fetchWithTimeout(guideUrl);
|
|
209
316
|
if (!response.ok) {
|
|
@@ -214,16 +321,16 @@ async function fetchGuide(guide, version, forceRefresh = false) {
|
|
|
214
321
|
writeFileSync(cachedPath, content);
|
|
215
322
|
meta.guidesFetchedAt = meta.guidesFetchedAt || {};
|
|
216
323
|
meta.guidesFetchedAt[version] = meta.guidesFetchedAt[version] || {};
|
|
217
|
-
meta.guidesFetchedAt[version][
|
|
324
|
+
meta.guidesFetchedAt[version][guideFileName] = new Date().toISOString();
|
|
218
325
|
saveCacheMeta(meta);
|
|
219
|
-
return { content, fromCache: false, stale: false };
|
|
326
|
+
return { content, fromCache: false, stale: false, selectedFile };
|
|
220
327
|
}
|
|
221
328
|
catch (err) {
|
|
222
329
|
// Network failed, try stale cache
|
|
223
330
|
if (hasCachedGuide) {
|
|
224
331
|
try {
|
|
225
332
|
const content = readFileSync(cachedPath, "utf-8");
|
|
226
|
-
return { content, fromCache: true, stale: true };
|
|
333
|
+
return { content, fromCache: true, stale: true, selectedFile };
|
|
227
334
|
}
|
|
228
335
|
catch {
|
|
229
336
|
// Cache corrupted
|
|
@@ -232,21 +339,59 @@ async function fetchGuide(guide, version, forceRefresh = false) {
|
|
|
232
339
|
throw new Error(`Failed to fetch guide "${guide.topic}": ${err.message}`);
|
|
233
340
|
}
|
|
234
341
|
}
|
|
342
|
+
/** Normalize a guide's variants for display / --json output. */
|
|
343
|
+
function normalizeVariants(guide) {
|
|
344
|
+
return (guide.variants ?? []).map((v) => ({
|
|
345
|
+
...(v.language !== undefined ? { language: v.language } : {}),
|
|
346
|
+
...(v.platform !== undefined ? { platform: v.platform } : {}),
|
|
347
|
+
file: v.file,
|
|
348
|
+
}));
|
|
349
|
+
}
|
|
350
|
+
/** Compact human-readable rendering of a guide's available combinations. */
|
|
351
|
+
function formatCombinations(guide) {
|
|
352
|
+
const variants = guide.variants ?? [];
|
|
353
|
+
if (variants.length === 0)
|
|
354
|
+
return "default";
|
|
355
|
+
const parts = variants.map((v) => {
|
|
356
|
+
if (v.language !== undefined && v.platform !== undefined) {
|
|
357
|
+
return `${v.language}_${v.platform}`;
|
|
358
|
+
}
|
|
359
|
+
if (v.language !== undefined)
|
|
360
|
+
return v.language;
|
|
361
|
+
if (v.platform !== undefined)
|
|
362
|
+
return v.platform;
|
|
363
|
+
return "default";
|
|
364
|
+
});
|
|
365
|
+
// De-dupe while preserving order.
|
|
366
|
+
return [...new Set(parts)].join("; ");
|
|
367
|
+
}
|
|
235
368
|
export function registerGuidesCommands(program) {
|
|
236
369
|
const guides = program
|
|
237
370
|
.command("guides")
|
|
238
371
|
.description("Access Primitive how-to guides for building apps")
|
|
239
372
|
.addHelpText("after", `
|
|
240
373
|
Examples:
|
|
241
|
-
$ primitive guides list
|
|
242
|
-
$ primitive guides list --json
|
|
243
|
-
$ primitive guides get documents
|
|
244
|
-
$ primitive guides get
|
|
245
|
-
$ primitive guides
|
|
374
|
+
$ primitive guides list # List available guides + combinations
|
|
375
|
+
$ primitive guides list --json # List as JSON for programmatic use
|
|
376
|
+
$ primitive guides get documents # Fetch the default (TS) documents guide
|
|
377
|
+
$ primitive guides get documents --language swift # Fetch the Swift variant
|
|
378
|
+
$ primitive guides get documents --language swift --platform ios
|
|
379
|
+
$ primitive guides list --guide-version 1 # List guides for client v1
|
|
380
|
+
$ primitive guides list --guide-version latest # List guides for the latest line
|
|
381
|
+
|
|
382
|
+
Language & platform:
|
|
383
|
+
--language <ts|swift|...> and --platform <web|ios|macos|...> let the calling
|
|
384
|
+
agent request a specific guide variant. Aliases: typescript/javascript/js -> ts.
|
|
385
|
+
These flags are guide-specific and NEVER fail: an unknown value or an
|
|
386
|
+
unavailable (language, platform) combination falls back to the guide's default
|
|
387
|
+
variant rather than erroring. (This intentionally differs from 'init --platform',
|
|
388
|
+
which validates and exits.) Run 'guides list' to see available combinations.
|
|
246
389
|
|
|
247
390
|
Versioning:
|
|
248
391
|
By default, guides are fetched for the detected ${CLIENT_PACKAGE_NAME} version.
|
|
249
|
-
Use --version to explicitly request a specific major version.
|
|
392
|
+
Use --guide-version to explicitly request a specific major version (e.g. 1, 2,
|
|
393
|
+
or 'latest'). (The flag is --guide-version, not --version, because the root
|
|
394
|
+
'primitive --version' prints the CLI version and would otherwise swallow it.)
|
|
250
395
|
Falls back to 'latest' if the version is not found.
|
|
251
396
|
|
|
252
397
|
Cache:
|
|
@@ -259,11 +404,17 @@ Cache:
|
|
|
259
404
|
.description("List available guides")
|
|
260
405
|
.option("--json", "Output as JSON")
|
|
261
406
|
.option("--refresh", "Force refresh from network")
|
|
262
|
-
.option("--version <version>", "Fetch guides for a specific major version (e.g., 1, 2, or 'latest')")
|
|
407
|
+
.option("--guide-version <version>", "Fetch guides for a specific major version (e.g., 1, 2, or 'latest')")
|
|
408
|
+
.option("--language <lang>", "Language the agent is targeting (ts, swift, ...; informational here)")
|
|
409
|
+
.option("--platform <platform>", "Platform the agent is targeting (web, ios, macos, ...; informational here)")
|
|
263
410
|
.action(async (options) => {
|
|
264
411
|
try {
|
|
265
|
-
const requestedVersion = resolveVersion(options.
|
|
412
|
+
const requestedVersion = resolveVersion(options.guideVersion);
|
|
266
413
|
const { manifest, stale, versionInfo } = await fetchManifest(requestedVersion, options.refresh);
|
|
414
|
+
// Normalize requested dimensions (informational on `list` — surfaced so
|
|
415
|
+
// the agent can confirm what it asked for; selection happens on `get`).
|
|
416
|
+
const reqLanguage = normalizeLanguage(options.language);
|
|
417
|
+
const reqPlatform = normalizePlatform(options.platform);
|
|
267
418
|
if (stale) {
|
|
268
419
|
warn("Using stale cache (network unavailable)");
|
|
269
420
|
}
|
|
@@ -271,6 +422,9 @@ Cache:
|
|
|
271
422
|
json({
|
|
272
423
|
version: versionInfo.version,
|
|
273
424
|
versionSource: versionInfo.source,
|
|
425
|
+
defaults: manifest.defaults ?? null,
|
|
426
|
+
language: reqLanguage ?? null,
|
|
427
|
+
platform: reqPlatform ?? null,
|
|
274
428
|
guides: manifest.guides.map((g) => ({
|
|
275
429
|
topic: g.topic,
|
|
276
430
|
description: g.description,
|
|
@@ -279,6 +433,7 @@ Cache:
|
|
|
279
433
|
concepts: g.concepts,
|
|
280
434
|
prerequisites: g.prerequisites,
|
|
281
435
|
relatedGuides: g.relatedGuides,
|
|
436
|
+
availableVariants: normalizeVariants(g),
|
|
282
437
|
})),
|
|
283
438
|
});
|
|
284
439
|
return;
|
|
@@ -290,13 +445,19 @@ Cache:
|
|
|
290
445
|
keyValue("Client version", formatClientVersion(versionInfo));
|
|
291
446
|
keyValue("Guides version", formatGuidesVersion(versionInfo));
|
|
292
447
|
console.log("");
|
|
293
|
-
|
|
448
|
+
const rows = manifest.guides.map((g) => ({
|
|
449
|
+
topic: g.topic,
|
|
450
|
+
description: g.description,
|
|
451
|
+
combinations: formatCombinations(g),
|
|
452
|
+
}));
|
|
453
|
+
console.log(formatTable(rows, [
|
|
294
454
|
{ header: "TOPIC", key: "topic" },
|
|
295
|
-
{ header: "DESCRIPTION", key: "description", width:
|
|
455
|
+
{ header: "DESCRIPTION", key: "description", width: 48, truncate: true },
|
|
456
|
+
{ header: "COMBINATIONS", key: "combinations" },
|
|
296
457
|
]));
|
|
297
458
|
console.log("");
|
|
298
459
|
keyValue("Cache location", getVersionCacheDir(versionInfo.version));
|
|
299
|
-
info("Use 'primitive guides get <topic>' to fetch a guide.");
|
|
460
|
+
info("Use 'primitive guides get <topic> [--language <lang>] [--platform <platform>]' to fetch a guide.");
|
|
300
461
|
}
|
|
301
462
|
catch (err) {
|
|
302
463
|
error(err.message);
|
|
@@ -310,10 +471,12 @@ Cache:
|
|
|
310
471
|
.argument("<topic>", "Guide topic (e.g., documents, workflows, prompts)")
|
|
311
472
|
.option("--json", "Output metadata as JSON instead of content")
|
|
312
473
|
.option("--refresh", "Force refresh from network")
|
|
313
|
-
.option("--version <version>", "Fetch guides for a specific major version (e.g., 1, 2, or 'latest')")
|
|
474
|
+
.option("--guide-version <version>", "Fetch guides for a specific major version (e.g., 1, 2, or 'latest')")
|
|
475
|
+
.option("--language <lang>", "Language variant to fetch (ts, swift, ...; aliases typescript/javascript/js -> ts)")
|
|
476
|
+
.option("--platform <platform>", "Platform variant to fetch (web, ios, macos, ...)")
|
|
314
477
|
.action(async (topic, options) => {
|
|
315
478
|
try {
|
|
316
|
-
const requestedVersion = resolveVersion(options.
|
|
479
|
+
const requestedVersion = resolveVersion(options.guideVersion);
|
|
317
480
|
const { manifest, stale: manifestStale, versionInfo } = await fetchManifest(requestedVersion, options.refresh);
|
|
318
481
|
const guide = manifest.guides.find((g) => g.topic.toLowerCase() === topic.toLowerCase());
|
|
319
482
|
if (!guide) {
|
|
@@ -321,8 +484,17 @@ Cache:
|
|
|
321
484
|
error(`Guide "${topic}" not found. Available topics: ${availableTopics}`);
|
|
322
485
|
process.exit(1);
|
|
323
486
|
}
|
|
487
|
+
// Normalize the requested (language, platform). Unknown values pass
|
|
488
|
+
// through and fall back to the default variant (never fail — #977).
|
|
489
|
+
const reqLanguage = normalizeLanguage(options.language);
|
|
490
|
+
const reqPlatform = normalizePlatform(options.platform);
|
|
491
|
+
const selection = selectVariant(guide, {
|
|
492
|
+
language: reqLanguage,
|
|
493
|
+
platform: reqPlatform,
|
|
494
|
+
});
|
|
324
495
|
if (options.json) {
|
|
325
|
-
// Output just metadata
|
|
496
|
+
// Output just metadata — does NOT fetch content. `selectedFile` is the
|
|
497
|
+
// file that WOULD be served for this request (see selection above).
|
|
326
498
|
json({
|
|
327
499
|
version: versionInfo.version,
|
|
328
500
|
versionSource: versionInfo.source,
|
|
@@ -333,11 +505,16 @@ Cache:
|
|
|
333
505
|
concepts: guide.concepts,
|
|
334
506
|
prerequisites: guide.prerequisites,
|
|
335
507
|
relatedGuides: guide.relatedGuides,
|
|
336
|
-
|
|
508
|
+
language: reqLanguage ?? null,
|
|
509
|
+
platform: reqPlatform ?? null,
|
|
510
|
+
selectedFile: selection.file,
|
|
511
|
+
matchedOn: selection.matchedOn,
|
|
512
|
+
availableVariants: normalizeVariants(guide),
|
|
513
|
+
cacheLocation: join(getGuidesCacheDir(versionInfo.version), basename(selection.file)),
|
|
337
514
|
});
|
|
338
515
|
return;
|
|
339
516
|
}
|
|
340
|
-
const { content, stale: guideStale } = await fetchGuide(guide, versionInfo.version, options.refresh);
|
|
517
|
+
const { content, stale: guideStale } = await fetchGuide(guide, versionInfo.version, { language: reqLanguage, platform: reqPlatform }, options.refresh);
|
|
341
518
|
if (manifestStale || guideStale) {
|
|
342
519
|
warn("Using stale cache (network unavailable)");
|
|
343
520
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guides.js","sourceRoot":"","sources":["../../../src/commands/guides.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"guides.js","sourceRoot":"","sources":["../../../src/commands/guides.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB;IACvD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC;IAClD,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAElE,MAAM,eAAe,GAAG,6EAA6E,CAAC;AACtG,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AACrD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAsDhD,+EAA+E;AAC/E,MAAM,gBAAgB,GAA2B;IAC/C,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,EAAE,EAAE,IAAI;CACT,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAY,EACZ,OAAiD;IAEjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEtC,0EAA0E;IAC1E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,WAAW,GAAG,CAAC,CAAe,EAAE,EAAE,CACtC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC9E,MAAM,WAAW,GAAG,CAAC,CAAe,EAAE,EAAE,CACtC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;IAE9E,wEAAwE;IACxE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CACxD,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC7D,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,6EAA6E;IAC7E,sEAAsE;IACtE,gEAAgE;IAChE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAC1D,CAAC;QACF,IAAI,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAE5E,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAChD,CAAC;QACF,IAAI,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,kDAAkD;IAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAC1D,CAAC;QACF,IAAI,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAE5E,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAChD,CAAC;QACF,IAAI,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED,gEAAgE;IAChE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAC/F,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAiB,CAAC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,eAAwB;IAC9C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,6BAA6B;IAC7B,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC;QAChF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,kCAAkC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;YAC7B,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,QAAQ,CAAC,IAAI;SAC7B,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAiB;IAC5C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAiB;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,IAAe;IACpC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,SAA6B;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,YAAY,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,GAAG,eAAe,IAAI,OAAO,cAAc,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,QAAgB;IACpD,OAAO,GAAG,eAAe,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,SAAS,GAAG,KAAK;IAC5D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AASD,KAAK,UAAU,uBAAuB,CACpC,OAAe,EACf,YAAY,GAAG,KAAK;IAEpB,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEnD,oDAAoD;IACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,iBAAiB,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACjE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,CAAC,wBAAwB;QACvC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAc,CAAC;QAEnD,gBAAgB;QAChB,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kCAAkC;QAClC,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAqC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,WAAwB,EACxB,YAAY,GAAG,KAAK;IAEpB,kCAAkC;IAClC,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEhF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,wEAAwE;IACxE,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC7E,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,YAAY,GAAgB;gBAChC,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,YAAY,EAAE,WAAW,CAAC,OAAO;aAClC,CAAC;YACF,OAAO,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,KAAY,EACZ,OAAe,EACf,UAAoD,EAAE,EACtD,YAAY,GAAG,KAAK;IAEpB,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,uEAAuE;IACvE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;IACnE,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE9C,oDAAoD;IACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtC,gBAAgB;QAChB,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxE,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kCAAkC;QAClC,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,KAAK,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;AACN,CAAC;AAED,4EAA4E;AAC5E,SAAS,kBAAkB,CAAC,KAAY;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,kCAAkC;IAClC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;oDAmB0B,mBAAmB;;;;;;;;;CAStE,CAAC,CAAC;IAED,cAAc;IACd,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;SACjD,MAAM,CAAC,2BAA2B,EAAE,qEAAqE,CAAC;SAC1G,MAAM,CAAC,mBAAmB,EAAE,sEAAsE,CAAC;SACnG,MAAM,CAAC,uBAAuB,EAAE,4EAA4E,CAAC;SAC7G,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAEhG,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAExD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,aAAa,EAAE,WAAW,CAAC,MAAM;oBACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;oBACnC,QAAQ,EAAE,WAAW,IAAI,IAAI;oBAC7B,QAAQ,EAAE,WAAW,IAAI,IAAI;oBAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,aAAa,EAAE,CAAC,CAAC,aAAa;wBAC9B,aAAa,EAAE,CAAC,CAAC,aAAa;wBAC9B,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;qBACxC,CAAC,CAAC;iBACJ,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC;aACpC,CAAC,CAAC,CAAC;YAEJ,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,IAAI,EAAE;gBAChB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE;gBACjC,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE;aAChD,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,kGAAkG,CAAC,CAAC;QAC3G,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,uBAAuB;IACvB,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oCAAoC,CAAC;SACjD,QAAQ,CAAC,SAAS,EAAE,mDAAmD,CAAC;SACxE,MAAM,CAAC,QAAQ,EAAE,4CAA4C,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;SACjD,MAAM,CAAC,2BAA2B,EAAE,qEAAqE,CAAC;SAC1G,MAAM,CAAC,mBAAmB,EAAE,oFAAoF,CAAC;SACjH,MAAM,CAAC,uBAAuB,EAAE,kDAAkD,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/G,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CACrD,CAAC;YAEF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvE,KAAK,CAAC,UAAU,KAAK,kCAAkC,eAAe,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oEAAoE;YACpE,oEAAoE;YACpE,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE;gBACrC,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,uEAAuE;gBACvE,oEAAoE;gBACpE,IAAI,CAAC;oBACH,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,aAAa,EAAE,WAAW,CAAC,MAAM;oBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,QAAQ,EAAE,WAAW,IAAI,IAAI;oBAC7B,QAAQ,EAAE,WAAW,IAAI,IAAI;oBAC7B,YAAY,EAAE,SAAS,CAAC,IAAI;oBAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC;oBAC3C,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACtF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CACrD,KAAK,EACL,WAAW,CAAC,OAAO,EACnB,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,EAChD,OAAO,CAAC,OAAO,CAChB,CAAC;YAEF,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;gBAChC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAClD,CAAC;YAED,6CAA6C;YAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* The .gitignore lines `init` writes for Primitive CLI local state.
|
|
4
|
+
*
|
|
5
|
+
* Pre-pull sync snapshots (issue #578) are per-machine local recovery state and
|
|
6
|
+
* must never be committed. They can land in three places depending on how the
|
|
7
|
+
* sync dir resolves (see `resolveSnapshotsRoot` in `lib/sync-paths.ts`):
|
|
8
|
+
* - project mode: `<projectRoot>/.primitive/sync-backups/<env>/<appId>/`
|
|
9
|
+
* - legacy `--dir <p>`: `<p>/.snapshots/` (sibling of the user dir)
|
|
10
|
+
* - no-project fallback: `./config-snapshots/`
|
|
11
|
+
* The bare `.snapshots/` and `config-snapshots/` entries (no leading slash)
|
|
12
|
+
* match those directories wherever `--dir` points, so backup copies — including
|
|
13
|
+
* the restored `.primitive-sync.json` baseline — can never surface as untracked
|
|
14
|
+
* files in a tracked custom config dir.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GITIGNORE_LOCAL_STATE_ENTRIES: readonly [".primitive/credentials.json", ".primitive/sync/**/.primitive-sync.json", ".primitive/sync-backups/", ".snapshots/", "config-snapshots/"];
|
|
17
|
+
export declare function registerInitCommand(program: Command): void;
|
|
@@ -6,9 +6,31 @@ import { ApiClient } from "../lib/api-client.js";
|
|
|
6
6
|
import { browserLogin } from "../lib/auth-flow.js";
|
|
7
7
|
import { loadCredentials, setCurrentApp } from "../lib/config.js";
|
|
8
8
|
import { INIT_CONFIG_FILENAME, loadInitConfig, parseInitConfigToml, validateInitConfig, } from "../lib/init-config.js";
|
|
9
|
+
import { resolvePlatform, } from "../lib/resolve-platform.js";
|
|
9
10
|
import { divider, error, info, keyValue, success, warn, } from "../lib/output.js";
|
|
10
11
|
import { downloadAndExtractTemplate, gitInitialCommit, gitInitRepo, installPnpmGlobally, installPrimitiveCli, isDirectoryEmpty, isPnpmInstalled, isPortFree, isPrimitiveCliInstalled, isXcodeInstalled, IOS_TEMPLATE_URL, runPnpmInstall, runSwiftPackageResolve, updateEnvFile, updateEnvPort, updatePrimitiveJson, updateViteConfig, } from "../lib/template.js";
|
|
11
12
|
const DEFAULT_SERVER_URL = process.env.PRIMITIVE_SERVER_URL || "https://primitiveapi.com";
|
|
13
|
+
/**
|
|
14
|
+
* The .gitignore lines `init` writes for Primitive CLI local state.
|
|
15
|
+
*
|
|
16
|
+
* Pre-pull sync snapshots (issue #578) are per-machine local recovery state and
|
|
17
|
+
* must never be committed. They can land in three places depending on how the
|
|
18
|
+
* sync dir resolves (see `resolveSnapshotsRoot` in `lib/sync-paths.ts`):
|
|
19
|
+
* - project mode: `<projectRoot>/.primitive/sync-backups/<env>/<appId>/`
|
|
20
|
+
* - legacy `--dir <p>`: `<p>/.snapshots/` (sibling of the user dir)
|
|
21
|
+
* - no-project fallback: `./config-snapshots/`
|
|
22
|
+
* The bare `.snapshots/` and `config-snapshots/` entries (no leading slash)
|
|
23
|
+
* match those directories wherever `--dir` points, so backup copies — including
|
|
24
|
+
* the restored `.primitive-sync.json` baseline — can never surface as untracked
|
|
25
|
+
* files in a tracked custom config dir.
|
|
26
|
+
*/
|
|
27
|
+
export const GITIGNORE_LOCAL_STATE_ENTRIES = [
|
|
28
|
+
".primitive/credentials.json",
|
|
29
|
+
".primitive/sync/**/.primitive-sync.json",
|
|
30
|
+
".primitive/sync-backups/",
|
|
31
|
+
".snapshots/",
|
|
32
|
+
"config-snapshots/",
|
|
33
|
+
];
|
|
12
34
|
/**
|
|
13
35
|
* Writes .primitive/config.json into the project directory and ensures the
|
|
14
36
|
* .gitignore entry for local state exists. Safe to call in a directory that
|
|
@@ -66,10 +88,7 @@ async function scaffoldProjectConfig(opts) {
|
|
|
66
88
|
// users who re-run init pick up the fix.
|
|
67
89
|
const gitignorePath = join(opts.targetDir, ".gitignore");
|
|
68
90
|
const LEGACY_SYNC_IGNORE = ".primitive/sync/";
|
|
69
|
-
const gitignoreEntries = [
|
|
70
|
-
".primitive/credentials.json",
|
|
71
|
-
".primitive/sync/**/.primitive-sync.json",
|
|
72
|
-
];
|
|
91
|
+
const gitignoreEntries = [...GITIGNORE_LOCAL_STATE_ENTRIES];
|
|
73
92
|
let linesToAdd = [];
|
|
74
93
|
if (existsSync(gitignorePath)) {
|
|
75
94
|
const existing = readFileSync(gitignorePath, "utf-8");
|
|
@@ -224,7 +243,8 @@ export function registerInitCommand(program) {
|
|
|
224
243
|
.option("--use-existing-app-id <id>", "Use an existing app ID instead of creating a new one")
|
|
225
244
|
.option("-s, --server <url>", "Server URL (default: current CLI server or https://primitiveapi.com)")
|
|
226
245
|
.option("--skip-install", "Skip dependency installation")
|
|
227
|
-
.option("
|
|
246
|
+
.option("--config <path>", `Path to an init config file for non-interactive setup (default: auto-discover ${INIT_CONFIG_FILENAME} in the current directory)`)
|
|
247
|
+
.option("-p, --platform <platform>", "Target platform: web or ios (SwiftUI). Omit to be prompted interactively.")
|
|
228
248
|
.addHelpText("after", `
|
|
229
249
|
Examples:
|
|
230
250
|
$ primitive init my-app # Create web app in ./my-app
|
|
@@ -242,6 +262,7 @@ Non-interactive mode:
|
|
|
242
262
|
app_name = "My App" # Required for action = "create"
|
|
243
263
|
app_id = "01HXY..." # Required for action = "use-existing"
|
|
244
264
|
dir = "my-app" # Project directory (optional)
|
|
265
|
+
platform = "web" # "web" or "ios" (optional, defaults to web)
|
|
245
266
|
access_mode = "invite-only" # "public", "domain", or "invite-only" (optional)
|
|
246
267
|
dev_port = 5173 # Dev server port (optional)
|
|
247
268
|
skip_install = false # Skip pnpm install (optional)
|
|
@@ -259,23 +280,46 @@ This command will:
|
|
|
259
280
|
.action(handleInit);
|
|
260
281
|
}
|
|
261
282
|
async function handleInit(projectDirArg, options) {
|
|
262
|
-
|
|
263
|
-
//
|
|
264
|
-
//
|
|
265
|
-
|
|
283
|
+
// Validate an explicitly-passed `--platform` flag up front. Only `web` and
|
|
284
|
+
// `ios` are supported (#1009 removed `macos`). An omitted flag is
|
|
285
|
+
// `undefined` (the commander default was dropped) and is resolved below.
|
|
286
|
+
if (options.platform !== undefined &&
|
|
287
|
+
options.platform !== "web" &&
|
|
288
|
+
options.platform !== "ios") {
|
|
289
|
+
error(`Unknown platform "${options.platform}". Supported platforms: web, ios`);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
266
292
|
// `initConfig` is the parsed-and-validated `primitive-init.toml` for
|
|
267
293
|
// non-interactive runs (CI, scripted scaffolding). When non-null, the
|
|
268
294
|
// rest of this function uses it to skip prompts.
|
|
269
295
|
const initConfig = loadInitConfigFromOptions(options);
|
|
270
|
-
//
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
296
|
+
// Resolve the target platform per the 4-case interactivity contract:
|
|
297
|
+
// (a) explicit --platform flag -> use it (never prompt)
|
|
298
|
+
// (b) init-config TOML present -> use its platform or fall back to web
|
|
299
|
+
// (c) interactive TTY, no flag/cfg -> prompt
|
|
300
|
+
// (d) non-TTY, no flag/cfg -> fall back to web (no hang/crash)
|
|
301
|
+
// The prompt is TTY-guarded inside `resolvePlatform` so a piped/CI stdin
|
|
302
|
+
// never triggers the `@inquirer/prompts` `ERR_USE_AFTER_CLOSE` crash.
|
|
303
|
+
const platform = await resolvePlatform({
|
|
304
|
+
flag: options.platform,
|
|
305
|
+
configPlatform: initConfig?.platform,
|
|
306
|
+
hasConfig: initConfig != null,
|
|
307
|
+
isTTY: Boolean(process.stdin.isTTY),
|
|
308
|
+
promptFn: () => select({
|
|
309
|
+
message: "What platform are you building for?",
|
|
310
|
+
choices: [
|
|
311
|
+
{ value: "web", name: "web (Vue 3 + TypeScript + Tailwind)" },
|
|
312
|
+
{ value: "ios", name: "ios (Swift + SwiftUI)" },
|
|
313
|
+
],
|
|
314
|
+
default: "web",
|
|
315
|
+
}),
|
|
316
|
+
});
|
|
317
|
+
// iOS shares the SwiftUI template, Xcode toolchain, and primitive.json
|
|
318
|
+
// config path. (macOS was removed in #1009.)
|
|
319
|
+
const isApple = platform === "ios";
|
|
276
320
|
// Apple-family platforms require macOS with Xcode.
|
|
277
321
|
if (isApple && process.platform !== "darwin") {
|
|
278
|
-
error("iOS
|
|
322
|
+
error("iOS apps require macOS with Xcode installed.");
|
|
279
323
|
process.exit(1);
|
|
280
324
|
}
|
|
281
325
|
if (isApple) {
|
|
@@ -383,7 +427,7 @@ async function handleInit(projectDirArg, options) {
|
|
|
383
427
|
}
|
|
384
428
|
}
|
|
385
429
|
// Step 3: Download template
|
|
386
|
-
info(`Setting up your ${platform === "ios" ? "iOS" :
|
|
430
|
+
info(`Setting up your ${platform === "ios" ? "iOS" : "web"} project...`);
|
|
387
431
|
try {
|
|
388
432
|
await downloadAndExtractTemplate({
|
|
389
433
|
targetDir,
|
|
@@ -871,11 +915,7 @@ async function handleInit(projectDirArg, options) {
|
|
|
871
915
|
keyValue("Directory", targetDir);
|
|
872
916
|
keyValue("App Name", appName);
|
|
873
917
|
keyValue("App ID", appId);
|
|
874
|
-
keyValue("Platform", platform === "ios"
|
|
875
|
-
? "iOS (SwiftUI)"
|
|
876
|
-
: platform === "macos"
|
|
877
|
-
? "macOS (SwiftUI)"
|
|
878
|
-
: "Web");
|
|
918
|
+
keyValue("Platform", platform === "ios" ? "iOS (SwiftUI)" : "Web");
|
|
879
919
|
divider();
|
|
880
920
|
info("Next steps:");
|
|
881
921
|
if (projectDir !== ".") {
|
|
@@ -886,9 +926,7 @@ async function handleInit(projectDirArg, options) {
|
|
|
886
926
|
console.log(" swift package resolve");
|
|
887
927
|
}
|
|
888
928
|
console.log(" open *.xcodeproj");
|
|
889
|
-
console.log(
|
|
890
|
-
? " # or: ./run.sh (macOS)"
|
|
891
|
-
: " # or: ./run-ios.sh (iOS Simulator)");
|
|
929
|
+
console.log(" # or: ./run-ios.sh (iOS Simulator)");
|
|
892
930
|
}
|
|
893
931
|
else {
|
|
894
932
|
if (options.skipInstall) {
|