@procedures/cue 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA6C,KAAK,eAAe,EAAuC,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA+HlK;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,eAMR,CAAC;eAEF,SAAS;AAExB;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAsC,GAAG,IAAI,CAE5F"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA+D,KAAK,eAAe,EAAuC,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA4IpL;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,eAMR,CAAC;eAEF,SAAS;AAExB;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAsC,GAAG,IAAI,CAE5F"}
package/dist/module.js CHANGED
@@ -14,6 +14,13 @@ import { cueRemove } from "./procedures/cue/remove.js";
14
14
  import { cueGenerate } from "./procedures/cue/generate.js";
15
15
  import { cueValidate } from "./procedures/cue/validate.js";
16
16
  import { CueInitInputSchema, CueAddInputSchema, CueRemoveInputSchema, CueGenerateInputSchema, CueValidateInputSchema, CueInitOutputSchema, CueAddOutputSchema, CueRemoveOutputSchema, CueGenerateOutputSchema, CueValidateOutputSchema, } from "./types.js";
17
+ /**
18
+ * The rule of each cue procedure under a root of the files (roadmap R33): the folder of the
19
+ * project (`cwd`) must be in the root, and without `cwd` it is the root. The files of the project
20
+ * go through `fs.*`, so the root confines them too. The files of the installed cue package are
21
+ * not paths of the call.
22
+ */
23
+ const CUE_IN_A_ROOT = { cwd: "cwd" };
17
24
  // =============================================================================
18
25
  // Procedure Definitions
19
26
  // =============================================================================
@@ -26,6 +33,7 @@ const cueInitProcedure = createProcedure()
26
33
  calls: ["fs.exists", "fs.read", "fs.write", "fs.mkdir"],
27
34
  // With `force`, it overwrites dependencies.json. A second call writes the same preset again.
28
35
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
36
+ fsRoot: CUE_IN_A_ROOT,
29
37
  args: [],
30
38
  shorts: { preset: "p", force: "f", cwd: "C" },
31
39
  output: "json",
@@ -43,6 +51,7 @@ const cueAddProcedure = createProcedure()
43
51
  calls: ["fs.exists", "fs.read", "fs.write"],
44
52
  // It writes dependencies.json again with only `$schema` and `dependencies`. Other fields go.
45
53
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
54
+ fsRoot: CUE_IN_A_ROOT,
46
55
  args: ["feature"],
47
56
  shorts: { cwd: "C" },
48
57
  output: "json",
@@ -59,6 +68,7 @@ const cueRemoveProcedure = createProcedure()
59
68
  description: "Remove a feature from dependencies.json",
60
69
  calls: ["fs.exists", "fs.read", "fs.write"],
61
70
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
71
+ fsRoot: CUE_IN_A_ROOT,
62
72
  args: ["feature"],
63
73
  shorts: { cwd: "C" },
64
74
  output: "json",
@@ -77,6 +87,7 @@ const cueGenerateProcedure = createProcedure()
77
87
  // The cue program evaluates the CUE files of @mark1russell7/cue, not code of the project.
78
88
  // The procedure rewrites package.json, tsconfig.json and .gitignore.
79
89
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
90
+ fsRoot: CUE_IN_A_ROOT,
80
91
  args: [],
81
92
  shorts: { cwd: "C" },
82
93
  output: "json",
@@ -93,6 +104,7 @@ const cueValidateProcedure = createProcedure()
93
104
  description: "Validate dependencies.json",
94
105
  calls: ["fs.exists", "fs.read"],
95
106
  effects: { reads: ["fs"], writes: [] },
107
+ fsRoot: CUE_IN_A_ROOT,
96
108
  args: [],
97
109
  shorts: { cwd: "C" },
98
110
  output: "json",
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * cue.generate procedure
3
3
  *
4
4
  * Generate config files (package.json, tsconfig.json, .gitignore).
5
- * Uses ctx.client.call() for file system operations (dogfooding).
6
- * Runs the cue program through runCommand of client-shell (async, no shell).
5
+ * Uses ctx.client.call() for the files of the project (dogfooding).
6
+ * Runs the cue program through runCommand of client-shell (async, no shell), in a folder of the
7
+ * installed cue package, with the CUE files of that package only. The program reads no path of
8
+ * the call, so a root of the host (roadmap R33) confines only the folder of the project.
7
9
  */
8
10
  import type { ProcedureContext } from "@procedures/client";
9
11
  import type { CueGenerateInput, CueGenerateOutput } from "../../types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/procedures/cue/generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA0I1E;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA0F5B"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/procedures/cue/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA2I1E;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA0F5B"}
@@ -2,11 +2,13 @@
2
2
  * cue.generate procedure
3
3
  *
4
4
  * Generate config files (package.json, tsconfig.json, .gitignore).
5
- * Uses ctx.client.call() for file system operations (dogfooding).
6
- * Runs the cue program through runCommand of client-shell (async, no shell).
5
+ * Uses ctx.client.call() for the files of the project (dogfooding).
6
+ * Runs the cue program through runCommand of client-shell (async, no shell), in a folder of the
7
+ * installed cue package, with the CUE files of that package only. The program reads no path of
8
+ * the call, so a root of the host (roadmap R33) confines only the folder of the project.
7
9
  */
8
10
  import { resolve } from "node:path";
9
- import { loadFeatures, loadDependencies, resolveFeatures, checkCue, runCue, determineTsconfig, featureToFieldName, packageRoot, fileExists, readJson, writeJson, writeFile, mkdir, } from "../../shared.js";
11
+ import { loadFeatures, loadDependencies, resolveFeatures, checkCue, runCue, determineTsconfig, featureToFieldName, packageRoot, fileExists, installedFileExists, readJson, writeJson, writeFile, mkdir, } from "../../shared.js";
10
12
  /**
11
13
  * Keys that describe a package's own entry points. The package owns them: a generated value
12
14
  * is only a default for a package that has none. (BUGS-2026-07 H33: generate replaced a
@@ -24,7 +26,7 @@ async function generatePackageJson(resolvedFeatures, existingPkg, ctx) {
24
26
  for (const feature of resolvedFeatures) {
25
27
  const fieldName = featureToFieldName(feature);
26
28
  const cuePath = resolve(configDir, `${fieldName}.cue`);
27
- if (await fileExists(cuePath, ctx)) {
29
+ if (await installedFileExists(cuePath)) {
28
30
  files.push(`${fieldName}.cue`);
29
31
  }
30
32
  }
@@ -76,7 +78,7 @@ async function generateGitignore(resolvedFeatures, ctx) {
76
78
  const files = ["base.cue"];
77
79
  for (const feature of resolvedFeatures) {
78
80
  const cuePath = resolve(configDir, `${feature}.cue`);
79
- if (await fileExists(cuePath, ctx)) {
81
+ if (await installedFileExists(cuePath)) {
80
82
  files.push(`${feature}.cue`);
81
83
  }
82
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/procedures/cue/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/procedures/cue/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,KAAK,GACN,MAAM,iBAAiB,CAAC;AASzB;;;;;GAKG;AACH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AAE5G;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,gBAA0B,EAC1B,WAA+B,EAC/B,GAAqB;IAErB,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEtD,sCAAsC;IACtC,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;QACvD,IAAI,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAgB,CAAC;IAE3D,mCAAmC;IACnC,MAAM,GAAG,GAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAe,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,kBAAkB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACxF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAI,KAAiC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAA4B,IAAI,EAAE,CAAC,EAAE,CAAC;QACvG,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,CAAC,GAAI,KAAkB,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAa,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAgB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;IACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,gBAA0B,EAC1B,GAAqB;IAErB,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3H,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAa,CAAC;IACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,GAAqB;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,SAAS,CACb,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EACjC;;;;CAIH,EACG,GAAG,CACJ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAuB,EACvB,GAAqB;IAErB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,yBAAyB;IACzB,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,uEAAuE;SAC/E,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,8DAA8D;SACtE,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,iDAAiD;SACzD,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEzD,6BAA6B;IAC7B,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAc,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3F,+EAA+E;IAC/E,6EAA6E;IAC7E,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAClF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YACxE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC;QAED,kDAAkD;QAClD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,uCAAuC;gBAChD,OAAO,EAAE,gCAAgC,YAAY,OAAO;aAC7D,CAAC;YACF,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClC,CAAC;QAED,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAC3E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAED,0CAA0C;QAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,gBAAgB;YAChB,SAAS;YACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,gBAAgB;QAChB,SAAS;QACT,OAAO,EAAE,aAAa,SAAS,CAAC,MAAM,QAAQ;KAC/C,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/procedures/cue/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAU1E;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAsE5B"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/procedures/cue/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAU1E;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
@@ -4,8 +4,8 @@
4
4
  * Validate dependencies.json against schema.
5
5
  * Uses ctx.client.call() for file system operations (dogfooding).
6
6
  */
7
- import { resolve } from "node:path";
8
- import { loadFeatures, loadDependencies, checkCue, runCue, packageRoot, fileExists, } from "../../shared.js";
7
+ import { dirname, resolve } from "node:path";
8
+ import { loadFeatures, loadDependencies, checkCue, runCue, packageRoot, installedFileExists, } from "../../shared.js";
9
9
  /**
10
10
  * Validate dependencies.json
11
11
  */
@@ -50,9 +50,11 @@ export async function cueValidate(input, ctx) {
50
50
  // If CUE is available, validate against schema
51
51
  if (await checkCue(ctx.signal)) {
52
52
  const schemaPath = resolve(packageRoot, "dependencies/schema.cue");
53
- if (await fileExists(schemaPath, ctx)) {
53
+ if (await installedFileExists(schemaPath)) {
54
54
  const depsPath = resolve(projectPath, "dependencies.json");
55
- const result = await runCue(["vet", "-d", "#Dependencies", schemaPath, depsPath], { signal: ctx.signal });
55
+ // cue runs in the folder of the schema: a folder of the installed cue package, not the
56
+ // working folder of the host (roadmap R33)
57
+ const result = await runCue(["vet", "-d", "#Dependencies", schemaPath, depsPath], { cwd: dirname(schemaPath), signal: ctx.signal });
56
58
  if (!result.success) {
57
59
  errors.push(`CUE schema validation failed: ${result.stderr || result.stdout}`);
58
60
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/procedures/cue/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAuB,EACvB,GAAqB;IAErB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,oBAAoB;IACpB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,CAAC,iDAAiD,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,8DAA8D,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM;YACN,OAAO,EAAE,0BAA0B,MAAM,CAAC,MAAM,WAAW;SAC5D,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;QACnE,IAAI,MAAM,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAE1G,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,IAAI;oBACd,MAAM;oBACN,OAAO,EAAE,8BAA8B;iBACxC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,mBAAmB;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/procedures/cue/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAuB,EACvB,GAAqB;IAErB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,oBAAoB;IACpB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,CAAC,iDAAiD,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,8DAA8D,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM;YACN,OAAO,EAAE,0BAA0B,MAAM,CAAC,MAAM,WAAW;SAC5D,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;QACnE,IAAI,MAAM,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC3D,uFAAuF;YACvF,2CAA2C;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAEpI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,IAAI;oBACd,MAAM;oBACN,OAAO,EAAE,8BAA8B;iBACxC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,mBAAmB;KAC7B,CAAC;AACJ,CAAC"}
package/dist/shared.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Shared utilities for cue procedures
3
3
  *
4
- * Uses ctx.client.call() for file system operations (dogfooding).
4
+ * Uses ctx.client.call() for the files of the project (dogfooding). The files of the installed
5
+ * cue package are read with `node:fs` (see `loadFeatures`).
5
6
  *
6
7
  * A file operation that fails is an error of the call. Only a missing file is a normal result.
7
8
  * (Before, each helper turned every error into "missing": with no fs.* procedures in the host,
@@ -20,7 +21,13 @@ export declare function mkdir(path: string, ctx: ProcedureContext): Promise<bool
20
21
  /** The JSON content of a file, or null when the file does not exist. Text that is not JSON throws. */
21
22
  export declare function readJson<T>(path: string, ctx: ProcedureContext): Promise<T | null>;
22
23
  export declare function writeJson<T>(path: string, data: T, ctx: ProcedureContext): Promise<boolean>;
23
- export declare function loadFeatures(ctx: ProcedureContext): Promise<FeaturesManifest | null>;
24
+ /** True when a file of the installed cue package exists. */
25
+ export declare function installedFileExists(path: string): Promise<boolean>;
26
+ /**
27
+ * The feature manifest of the installed cue package, or null when it is missing. Text that is not
28
+ * JSON throws. `root` is the folder of the package: a test gives another folder.
29
+ */
30
+ export declare function loadFeatures(_ctx?: ProcedureContext, root?: string): Promise<FeaturesManifest | null>;
24
31
  export declare function loadDependencies(projectPath: string, ctx: ProcedureContext): Promise<string[] | null>;
25
32
  export declare function saveDependencies(deps: string[], projectPath: string, ctx: ProcedureContext): Promise<boolean>;
26
33
  export declare function resolveFeatures(requested: string[], manifest: FeaturesManifest): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAOrE,eAAO,MAAM,WAAW,EAAE,MAAqE,CAAC;AAGhG,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAyD,CAAC;AA8BzG,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMtF;AAED,yFAAyF;AACzF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO1F;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtG;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjF;AAMD,sGAAsG;AACtG,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAQxF;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjG;AAMD,wBAAsB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAG1F;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAe1B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAqBzF;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D;AAMD;;;GAGG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAO,GAC3E,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,8CAA8C;AAC9C,wBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAErE;AAED,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,CAQpE"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAOrE,eAAO,MAAM,WAAW,EAAE,MAAqE,CAAC;AAGhG,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAyD,CAAC;AA8BzG,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMtF;AAED,yFAAyF;AACzF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO1F;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtG;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjF;AAMD,sGAAsG;AACtG,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAQxF;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjG;AAcD,4DAA4D;AAC5D,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAcxH;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAe1B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAqBzF;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D;AAMD;;;GAGG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAO,GAC3E,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,8CAA8C;AAC9C,wBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAErE;AAED,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,CAQpE"}
package/dist/shared.js CHANGED
@@ -1,12 +1,14 @@
1
1
  /**
2
2
  * Shared utilities for cue procedures
3
3
  *
4
- * Uses ctx.client.call() for file system operations (dogfooding).
4
+ * Uses ctx.client.call() for the files of the project (dogfooding). The files of the installed
5
+ * cue package are read with `node:fs` (see `loadFeatures`).
5
6
  *
6
7
  * A file operation that fails is an error of the call. Only a missing file is a normal result.
7
8
  * (Before, each helper turned every error into "missing": with no fs.* procedures in the host,
8
9
  * cue.validate answered "No dependencies.json found", deep dive WRP-3.)
9
10
  */
11
+ import { access, readFile as readInstalledFile } from "node:fs/promises";
10
12
  import { createRequire } from "node:module";
11
13
  import { dirname, resolve } from "node:path";
12
14
  import { runCommand } from "@procedures/shell/command";
@@ -72,9 +74,43 @@ export async function writeJson(path, data, ctx) {
72
74
  // =============================================================================
73
75
  // Core Functions
74
76
  // =============================================================================
75
- export async function loadFeatures(ctx) {
76
- const featuresPath = resolve(packageRoot, "features.json");
77
- return readJson(featuresPath, ctx);
77
+ // =============================================================================
78
+ // The files of the installed cue package
79
+ // =============================================================================
80
+ // The files of `@mark1russell7/cue` (features.json and its CUE files) are a part of the
81
+ // procedures, as their code is. The procedures read them with `node:fs`, not through `fs.*`. A
82
+ // root of the host (roadmap R33) confines the paths of the project, and these files are outside it.
83
+ /** True when a file of the installed cue package exists. */
84
+ export async function installedFileExists(path) {
85
+ try {
86
+ await access(path);
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ /**
94
+ * The feature manifest of the installed cue package, or null when it is missing. Text that is not
95
+ * JSON throws. `root` is the folder of the package: a test gives another folder.
96
+ */
97
+ export async function loadFeatures(_ctx, root = packageRoot) {
98
+ const featuresPath = resolve(root, "features.json");
99
+ let content;
100
+ try {
101
+ content = await readInstalledFile(featuresPath, "utf8");
102
+ }
103
+ catch (error) {
104
+ if (error.code === "ENOENT")
105
+ return null;
106
+ throw error;
107
+ }
108
+ try {
109
+ return JSON.parse(content);
110
+ }
111
+ catch (error) {
112
+ throw new Error(`${featuresPath} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
113
+ }
78
114
  }
79
115
  export async function loadDependencies(projectPath, ctx) {
80
116
  const depsPath = resolve(projectPath, "dependencies.json");
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/cue",
4
- "version": "0.7.0",
4
+ "version": "0.8.0",
5
5
  "description": "cue-config as procedures: generate package.json, tsconfig.json and .gitignore from CUE feature presets, add and remove features, and validate projects.",
6
6
  "keywords": [
7
7
  "cue",
@@ -62,9 +62,9 @@
62
62
  "procedures": "./dist/register.js"
63
63
  },
64
64
  "dependencies": {
65
- "@procedures/client": "0.7.0",
66
- "@procedures/fs": "0.7.0",
67
- "@procedures/shell": "0.7.0",
65
+ "@procedures/client": "0.8.0",
66
+ "@procedures/fs": "0.8.0",
67
+ "@procedures/shell": "0.8.0",
68
68
  "@mark1russell7/cue": "^1.0.0",
69
69
  "zod": "^4.6.5"
70
70
  },
package/src/module.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * This file is referenced by package.json's client.procedures field.
8
8
  */
9
9
 
10
- import { createProcedure, zodAdapter, defineModule, type ProcedureModule, PROCEDURE_REGISTRY, registerModules, type ProcedureRegistry } from "@procedures/client";
10
+ import { createProcedure, zodAdapter, defineModule, type FsRootRules, type ProcedureModule, PROCEDURE_REGISTRY, registerModules, type ProcedureRegistry } from "@procedures/client";
11
11
  import fsModule from "@procedures/fs/module";
12
12
  import { cueInit } from "./procedures/cue/init.js";
13
13
  import { cueAdd } from "./procedures/cue/add.js";
@@ -37,6 +37,14 @@ import {
37
37
  CueValidateOutputSchema,
38
38
  } from "./types.js";
39
39
 
40
+ /**
41
+ * The rule of each cue procedure under a root of the files (roadmap R33): the folder of the
42
+ * project (`cwd`) must be in the root, and without `cwd` it is the root. The files of the project
43
+ * go through `fs.*`, so the root confines them too. The files of the installed cue package are
44
+ * not paths of the call.
45
+ */
46
+ const CUE_IN_A_ROOT: FsRootRules = { cwd: "cwd" };
47
+
40
48
  // =============================================================================
41
49
  // Procedure Definitions
42
50
  // =============================================================================
@@ -50,6 +58,7 @@ const cueInitProcedure = createProcedure()
50
58
  calls: ["fs.exists", "fs.read", "fs.write", "fs.mkdir"],
51
59
  // With `force`, it overwrites dependencies.json. A second call writes the same preset again.
52
60
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
61
+ fsRoot: CUE_IN_A_ROOT,
53
62
  args: [],
54
63
  shorts: { preset: "p", force: "f", cwd: "C" },
55
64
  output: "json",
@@ -68,6 +77,7 @@ const cueAddProcedure = createProcedure()
68
77
  calls: ["fs.exists", "fs.read", "fs.write"],
69
78
  // It writes dependencies.json again with only `$schema` and `dependencies`. Other fields go.
70
79
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
80
+ fsRoot: CUE_IN_A_ROOT,
71
81
  args: ["feature"],
72
82
  shorts: { cwd: "C" },
73
83
  output: "json",
@@ -85,6 +95,7 @@ const cueRemoveProcedure = createProcedure()
85
95
  description: "Remove a feature from dependencies.json",
86
96
  calls: ["fs.exists", "fs.read", "fs.write"],
87
97
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
98
+ fsRoot: CUE_IN_A_ROOT,
88
99
  args: ["feature"],
89
100
  shorts: { cwd: "C" },
90
101
  output: "json",
@@ -104,6 +115,7 @@ const cueGenerateProcedure = createProcedure()
104
115
  // The cue program evaluates the CUE files of @mark1russell7/cue, not code of the project.
105
116
  // The procedure rewrites package.json, tsconfig.json and .gitignore.
106
117
  effects: { reads: ["fs"], writes: ["fs"], idempotent: true },
118
+ fsRoot: CUE_IN_A_ROOT,
107
119
  args: [],
108
120
  shorts: { cwd: "C" },
109
121
  output: "json",
@@ -121,6 +133,7 @@ const cueValidateProcedure = createProcedure()
121
133
  description: "Validate dependencies.json",
122
134
  calls: ["fs.exists", "fs.read"],
123
135
  effects: { reads: ["fs"], writes: [] },
136
+ fsRoot: CUE_IN_A_ROOT,
124
137
  args: [],
125
138
  shorts: { cwd: "C" },
126
139
  output: "json",
@@ -2,8 +2,10 @@
2
2
  * cue.generate procedure
3
3
  *
4
4
  * Generate config files (package.json, tsconfig.json, .gitignore).
5
- * Uses ctx.client.call() for file system operations (dogfooding).
6
- * Runs the cue program through runCommand of client-shell (async, no shell).
5
+ * Uses ctx.client.call() for the files of the project (dogfooding).
6
+ * Runs the cue program through runCommand of client-shell (async, no shell), in a folder of the
7
+ * installed cue package, with the CUE files of that package only. The program reads no path of
8
+ * the call, so a root of the host (roadmap R33) confines only the folder of the project.
7
9
  */
8
10
 
9
11
  import { resolve } from "node:path";
@@ -19,6 +21,7 @@ import {
19
21
  featureToFieldName,
20
22
  packageRoot,
21
23
  fileExists,
24
+ installedFileExists,
22
25
  readJson,
23
26
  writeJson,
24
27
  writeFile,
@@ -55,7 +58,7 @@ async function generatePackageJson(
55
58
  for (const feature of resolvedFeatures) {
56
59
  const fieldName = featureToFieldName(feature);
57
60
  const cuePath = resolve(configDir, `${fieldName}.cue`);
58
- if (await fileExists(cuePath, ctx)) {
61
+ if (await installedFileExists(cuePath)) {
59
62
  files.push(`${fieldName}.cue`);
60
63
  }
61
64
  }
@@ -111,7 +114,7 @@ async function generateGitignore(
111
114
  const files: string[] = ["base.cue"];
112
115
  for (const feature of resolvedFeatures) {
113
116
  const cuePath = resolve(configDir, `${feature}.cue`);
114
- if (await fileExists(cuePath, ctx)) {
117
+ if (await installedFileExists(cuePath)) {
115
118
  files.push(`${feature}.cue`);
116
119
  }
117
120
  }
@@ -5,7 +5,7 @@
5
5
  * Uses ctx.client.call() for file system operations (dogfooding).
6
6
  */
7
7
 
8
- import { resolve } from "node:path";
8
+ import { dirname, resolve } from "node:path";
9
9
  import type { ProcedureContext } from "@procedures/client";
10
10
  import type { CueValidateInput, CueValidateOutput } from "../../types.js";
11
11
  import {
@@ -14,7 +14,7 @@ import {
14
14
  checkCue,
15
15
  runCue,
16
16
  packageRoot,
17
- fileExists,
17
+ installedFileExists,
18
18
  } from "../../shared.js";
19
19
 
20
20
  /**
@@ -69,9 +69,11 @@ export async function cueValidate(
69
69
  // If CUE is available, validate against schema
70
70
  if (await checkCue(ctx.signal)) {
71
71
  const schemaPath = resolve(packageRoot, "dependencies/schema.cue");
72
- if (await fileExists(schemaPath, ctx)) {
72
+ if (await installedFileExists(schemaPath)) {
73
73
  const depsPath = resolve(projectPath, "dependencies.json");
74
- const result = await runCue(["vet", "-d", "#Dependencies", schemaPath, depsPath], { signal: ctx.signal });
74
+ // cue runs in the folder of the schema: a folder of the installed cue package, not the
75
+ // working folder of the host (roadmap R33)
76
+ const result = await runCue(["vet", "-d", "#Dependencies", schemaPath, depsPath], { cwd: dirname(schemaPath), signal: ctx.signal });
75
77
 
76
78
  if (!result.success) {
77
79
  errors.push(`CUE schema validation failed: ${result.stderr || result.stdout}`);
package/src/shared.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Shared utilities for cue procedures
3
3
  *
4
- * Uses ctx.client.call() for file system operations (dogfooding).
4
+ * Uses ctx.client.call() for the files of the project (dogfooding). The files of the installed
5
+ * cue package are read with `node:fs` (see `loadFeatures`).
5
6
  *
6
7
  * A file operation that fails is an error of the call. Only a missing file is a normal result.
7
8
  * (Before, each helper turned every error into "missing": with no fs.* procedures in the host,
8
9
  * cue.validate answered "No dependencies.json found", deep dive WRP-3.)
9
10
  */
10
11
 
12
+ import { access, readFile as readInstalledFile } from "node:fs/promises";
11
13
  import { createRequire } from "node:module";
12
14
  import { dirname, resolve } from "node:path";
13
15
  import type { ProcedureContext } from "@procedures/client";
@@ -118,9 +120,42 @@ export async function writeJson<T>(path: string, data: T, ctx: ProcedureContext)
118
120
  // Core Functions
119
121
  // =============================================================================
120
122
 
121
- export async function loadFeatures(ctx: ProcedureContext): Promise<FeaturesManifest | null> {
122
- const featuresPath = resolve(packageRoot, "features.json");
123
- return readJson<FeaturesManifest>(featuresPath, ctx);
123
+ // =============================================================================
124
+ // The files of the installed cue package
125
+ // =============================================================================
126
+
127
+ // The files of `@mark1russell7/cue` (features.json and its CUE files) are a part of the
128
+ // procedures, as their code is. The procedures read them with `node:fs`, not through `fs.*`. A
129
+ // root of the host (roadmap R33) confines the paths of the project, and these files are outside it.
130
+
131
+ /** True when a file of the installed cue package exists. */
132
+ export async function installedFileExists(path: string): Promise<boolean> {
133
+ try {
134
+ await access(path);
135
+ return true;
136
+ } catch {
137
+ return false;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * The feature manifest of the installed cue package, or null when it is missing. Text that is not
143
+ * JSON throws. `root` is the folder of the package: a test gives another folder.
144
+ */
145
+ export async function loadFeatures(_ctx?: ProcedureContext, root: string = packageRoot): Promise<FeaturesManifest | null> {
146
+ const featuresPath = resolve(root, "features.json");
147
+ let content: string;
148
+ try {
149
+ content = await readInstalledFile(featuresPath, "utf8");
150
+ } catch (error) {
151
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return null;
152
+ throw error;
153
+ }
154
+ try {
155
+ return JSON.parse(content) as FeaturesManifest;
156
+ } catch (error) {
157
+ throw new Error(`${featuresPath} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
158
+ }
124
159
  }
125
160
 
126
161
  export async function loadDependencies(