@embeddables/cli 0.8.2 → 0.8.3
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/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +9 -2
- package/dist/helpers/utils.d.ts +5 -0
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js +13 -4
- package/dist/prompts/embeddables.d.ts.map +1 -1
- package/dist/prompts/embeddables.js +4 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAiIA,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iHAAiH;IACjH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAiIA,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iHAAiH;IACjH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,iBAoVjD"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -254,8 +254,15 @@ export async function runPull(opts) {
|
|
|
254
254
|
}
|
|
255
255
|
// Persist _version and _branch_id in config.json immediately so they survive reverseCompile
|
|
256
256
|
writePullMetadataToConfig(embeddableId, version, effectiveBranch, effectiveBranchName);
|
|
257
|
-
// Fetch and save flow metadata from DB (title, archived, created_at)
|
|
258
|
-
|
|
257
|
+
// Fetch and save flow metadata from DB (title, archived, created_at).
|
|
258
|
+
// The engine can resolve project slugs (e.g. "cursor-telehealth") to actual flows,
|
|
259
|
+
// so the flow.id from the response may differ from the user-provided embeddableId.
|
|
260
|
+
// Try the engine-reported flow ID first, then fall back to the user-provided ID.
|
|
261
|
+
const flowIdFromEngine = flow.id;
|
|
262
|
+
let metadata = await fetchEmbeddableMetadata(embeddableId);
|
|
263
|
+
if (!metadata && typeof flowIdFromEngine === 'string' && flowIdFromEngine !== embeddableId) {
|
|
264
|
+
metadata = await fetchEmbeddableMetadata(flowIdFromEngine);
|
|
265
|
+
}
|
|
259
266
|
if (metadata) {
|
|
260
267
|
const metadataPath = path.join('embeddables', embeddableId, 'metadata.json');
|
|
261
268
|
fs.mkdirSync(path.dirname(metadataPath), { recursive: true });
|
package/dist/helpers/utils.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ export declare function generateId(prefix: string): string;
|
|
|
3
3
|
* If the current working directory is inside embeddables/<id>/ (or a subfolder),
|
|
4
4
|
* returns that embeddable id and the project root (the directory containing the
|
|
5
5
|
* embeddables/ folder). Otherwise returns null.
|
|
6
|
+
*
|
|
7
|
+
* To avoid false positives (e.g. the user has a personal folder called "embeddables"
|
|
8
|
+
* containing multiple project directories), we verify that the candidate project root
|
|
9
|
+
* contains an embeddables.json config file — the canonical marker of an Embeddables project.
|
|
10
|
+
*
|
|
6
11
|
* When using the inferred id, callers should chdir(projectRoot) so relative
|
|
7
12
|
* paths like embeddables/<id>/... resolve correctly.
|
|
8
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,UAIxC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB7F"}
|
package/dist/helpers/utils.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
export function generateId(prefix) {
|
|
3
4
|
const randomString = Math.random().toString(20).slice(2) + Math.random().toString(20).slice(2);
|
|
@@ -7,6 +8,11 @@ export function generateId(prefix) {
|
|
|
7
8
|
* If the current working directory is inside embeddables/<id>/ (or a subfolder),
|
|
8
9
|
* returns that embeddable id and the project root (the directory containing the
|
|
9
10
|
* embeddables/ folder). Otherwise returns null.
|
|
11
|
+
*
|
|
12
|
+
* To avoid false positives (e.g. the user has a personal folder called "embeddables"
|
|
13
|
+
* containing multiple project directories), we verify that the candidate project root
|
|
14
|
+
* contains an embeddables.json config file — the canonical marker of an Embeddables project.
|
|
15
|
+
*
|
|
10
16
|
* When using the inferred id, callers should chdir(projectRoot) so relative
|
|
11
17
|
* paths like embeddables/<id>/... resolve correctly.
|
|
12
18
|
*/
|
|
@@ -17,10 +23,13 @@ export function inferEmbeddableFromCwd() {
|
|
|
17
23
|
if (parent === current)
|
|
18
24
|
break;
|
|
19
25
|
if (path.basename(parent) === 'embeddables') {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
const projectRoot = path.dirname(parent);
|
|
27
|
+
if (fs.existsSync(path.join(projectRoot, 'embeddables.json'))) {
|
|
28
|
+
return {
|
|
29
|
+
embeddableId: path.basename(current),
|
|
30
|
+
projectRoot,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
24
33
|
}
|
|
25
34
|
current = parent;
|
|
26
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddables.d.ts","sourceRoot":"","sources":["../../src/prompts/embeddables.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kFAAkF;IAClF,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqC1F;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"embeddables.d.ts","sourceRoot":"","sources":["../../src/prompts/embeddables.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kFAAkF;IAClF,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqC1F;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+BpC;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqExB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAqC3E;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgCxB"}
|
|
@@ -57,11 +57,14 @@ export async function fetchEmbeddableMetadata(embeddableId) {
|
|
|
57
57
|
.from('flows')
|
|
58
58
|
.select('title, archived, created_at')
|
|
59
59
|
.eq('id', embeddableId)
|
|
60
|
-
.
|
|
60
|
+
.maybeSingle();
|
|
61
61
|
if (error) {
|
|
62
62
|
stdout.warn(pc.yellow(`Could not fetch embeddable metadata: ${error.message}`));
|
|
63
63
|
return null;
|
|
64
64
|
}
|
|
65
|
+
if (!data) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
65
68
|
return {
|
|
66
69
|
title: data.title || null,
|
|
67
70
|
archived: data.archived ?? false,
|