@kindgi/cli 0.1.9 → 0.1.10-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +100 -6
  2. package/dist/build/bundle.d.ts +3 -2
  3. package/dist/build/bundle.d.ts.map +1 -1
  4. package/dist/build/bundle.js +3 -2
  5. package/dist/build/bundle.js.map +1 -1
  6. package/dist/build/computed-imports.d.ts +27 -0
  7. package/dist/build/computed-imports.d.ts.map +1 -0
  8. package/dist/build/computed-imports.js +45 -0
  9. package/dist/build/computed-imports.js.map +1 -0
  10. package/dist/build/containerfile.d.ts +2 -2
  11. package/dist/build/containerfile.d.ts.map +1 -1
  12. package/dist/build/containerfile.js +81 -12
  13. package/dist/build/containerfile.js.map +1 -1
  14. package/dist/build/defaults.d.ts +3 -2
  15. package/dist/build/defaults.d.ts.map +1 -1
  16. package/dist/build/defaults.js +28 -6
  17. package/dist/build/defaults.js.map +1 -1
  18. package/dist/build/host-install.d.ts +39 -7
  19. package/dist/build/host-install.d.ts.map +1 -1
  20. package/dist/build/host-install.js +57 -21
  21. package/dist/build/host-install.js.map +1 -1
  22. package/dist/build/image-config.d.ts +6 -0
  23. package/dist/build/image-config.d.ts.map +1 -1
  24. package/dist/build/image-config.js +43 -4
  25. package/dist/build/image-config.js.map +1 -1
  26. package/dist/build/loaded-install-check.d.ts +22 -0
  27. package/dist/build/loaded-install-check.d.ts.map +1 -0
  28. package/dist/build/loaded-install-check.js +240 -0
  29. package/dist/build/loaded-install-check.js.map +1 -0
  30. package/dist/build/loaded-install.d.ts +78 -0
  31. package/dist/build/loaded-install.d.ts.map +1 -0
  32. package/dist/build/loaded-install.js +791 -0
  33. package/dist/build/loaded-install.js.map +1 -0
  34. package/dist/build/runners.d.ts +17 -0
  35. package/dist/build/runners.d.ts.map +1 -1
  36. package/dist/commands/build.d.ts +33 -1
  37. package/dist/commands/build.d.ts.map +1 -1
  38. package/dist/commands/build.js +132 -6
  39. package/dist/commands/build.js.map +1 -1
  40. package/dist/commands/helpers.d.ts +6 -0
  41. package/dist/commands/helpers.d.ts.map +1 -1
  42. package/dist/commands/helpers.js +14 -0
  43. package/dist/commands/helpers.js.map +1 -1
  44. package/dist/commands/index.d.ts.map +1 -1
  45. package/dist/commands/index.js +4 -0
  46. package/dist/commands/index.js.map +1 -1
  47. package/dist/commands/init.js +2 -2
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/license.d.ts.map +1 -1
  50. package/dist/commands/license.js +12 -7
  51. package/dist/commands/license.js.map +1 -1
  52. package/dist/commands/projects.d.ts.map +1 -1
  53. package/dist/commands/projects.js +1 -15
  54. package/dist/commands/projects.js.map +1 -1
  55. package/dist/commands/sites.d.ts.map +1 -1
  56. package/dist/commands/sites.js +16 -1
  57. package/dist/commands/sites.js.map +1 -1
  58. package/dist/commands/tenant.d.ts +3 -0
  59. package/dist/commands/tenant.d.ts.map +1 -0
  60. package/dist/commands/tenant.js +93 -0
  61. package/dist/commands/tenant.js.map +1 -0
  62. package/dist/commands/usage.d.ts +3 -0
  63. package/dist/commands/usage.d.ts.map +1 -0
  64. package/dist/commands/usage.js +153 -0
  65. package/dist/commands/usage.js.map +1 -0
  66. package/dist/deploy/response.d.ts.map +1 -1
  67. package/dist/deploy/response.js +15 -1
  68. package/dist/deploy/response.js.map +1 -1
  69. package/dist/dev/runtime-image.d.ts +1 -1
  70. package/dist/dev/runtime-image.d.ts.map +1 -1
  71. package/dist/dev/runtime-image.js +1 -1
  72. package/dist/dev/runtime-image.js.map +1 -1
  73. package/dist/exports/plan.d.ts.map +1 -1
  74. package/dist/exports/plan.js +2 -0
  75. package/dist/exports/plan.js.map +1 -1
  76. package/dist/init/dependency-specs.d.ts +3 -1
  77. package/dist/init/dependency-specs.d.ts.map +1 -1
  78. package/dist/init/dependency-specs.js +6 -2
  79. package/dist/init/dependency-specs.js.map +1 -1
  80. package/dist/license/renew.d.ts.map +1 -1
  81. package/dist/license/renew.js +2 -0
  82. package/dist/license/renew.js.map +1 -1
  83. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
  84. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  85. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
  86. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +1 -1
  87. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +92 -39
  88. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +51 -3
  89. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
  90. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +23 -4
  91. package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +4 -2
  92. package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
  93. package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +1 -1
  94. package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +1 -1
  95. package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +6 -3
  96. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
  97. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
  98. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
  99. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +1 -1
  100. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +6 -2
  101. package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +4 -2
  102. package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
  103. package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +1 -1
  104. package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +1 -1
  105. package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +6 -3
  106. package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
  107. package/dist/slug.d.ts +8 -1
  108. package/dist/slug.d.ts.map +1 -1
  109. package/dist/slug.js +8 -1
  110. package/dist/slug.js.map +1 -1
  111. package/package.json +13 -13
@@ -0,0 +1,240 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * The check on a lockfile cut down to what the pack loads
5
+ * (`loaded-install.ts`), against the app's own: the image's install must
6
+ * keep the app's pins. Every entry of the cut-down lockfile must be the
7
+ * app's entry for that package, the same version, resolution and
8
+ * integrity; nothing in it may be missing from the app's. And every
9
+ * package the cut-down manifest installs as a production dependency must
10
+ * be in the app's production graph, so the image never ships what the app
11
+ * has only for development.
12
+ *
13
+ * It reads both lockfiles itself and shares no code with the reducer, so a
14
+ * reducer bug can't pass its own output. The package manager's own
15
+ * supply-chain settings (pnpm's minimumReleaseAge, trustPolicy, allowBuilds)
16
+ * apply to the cut-down install unchanged: the workspace file goes along.
17
+ */
18
+ import { isDeepStrictEqual } from 'node:util';
19
+ import { parseAllDocuments } from 'yaml';
20
+ /** Whether the cut-down lockfile keeps the app's pins (`ReducedLockfileCheck`). */
21
+ export function checkReducedLockfile(check) {
22
+ let manifest;
23
+ try {
24
+ manifest = record(JSON.parse(check.manifest));
25
+ }
26
+ catch {
27
+ return refused("the cut-down package.json isn't JSON");
28
+ }
29
+ switch (check.manager) {
30
+ case 'pnpm':
31
+ return checkPnpm(check, manifest);
32
+ case 'npm':
33
+ return checkNpm(check, manifest);
34
+ case 'yarn':
35
+ return checkYarnClassic(check, manifest);
36
+ }
37
+ }
38
+ // ---------------------------------------------------------------------
39
+ // pnpm
40
+ // ---------------------------------------------------------------------
41
+ function checkPnpm(check, manifest) {
42
+ const app = pnpmDocuments(check.lockfile);
43
+ const cut = pnpmDocuments(check.reduced);
44
+ if (app === undefined || cut === undefined)
45
+ return refused("a lockfile isn't pnpm's YAML");
46
+ if (app.length !== cut.length)
47
+ return refused('the env document differs');
48
+ for (let i = 0; i < app.length - 1; i++) {
49
+ if (!isDeepStrictEqual(app[i], cut[i]))
50
+ return refused('the env document differs');
51
+ }
52
+ const appLock = app[app.length - 1] ?? {};
53
+ const cutLock = cut[cut.length - 1] ?? {};
54
+ for (const key of new Set([...Object.keys(appLock), ...Object.keys(cutLock)])) {
55
+ if (['importers', 'packages', 'snapshots', 'patchedDependencies'].includes(key))
56
+ continue;
57
+ if (!isDeepStrictEqual(appLock[key], cutLock[key]))
58
+ return refused(`its ${key} differs from the app's`);
59
+ }
60
+ for (const section of ['packages', 'snapshots', 'patchedDependencies']) {
61
+ const ours = record(appLock[section]);
62
+ for (const [key, entry] of Object.entries(record(cutLock[section]))) {
63
+ if (!Object.hasOwn(ours, key))
64
+ return refused(`${section} has ${key}, which the app's lockfile doesn't`);
65
+ if (!isDeepStrictEqual(ours[key], entry))
66
+ return refused(`${section} ${key} differs from the app's`);
67
+ }
68
+ }
69
+ const importers = record(cutLock.importers);
70
+ const extra = Object.keys(importers).filter((key) => key !== '.');
71
+ if (extra.length > 0)
72
+ return refused(`it has importer ${extra[0]}, and the image installs one project`);
73
+ const appImporters = record(appLock.importers);
74
+ const packImporters = check.packRel === '' ? ['.'] : [check.packRel, '.'];
75
+ const snapshots = record(appLock.snapshots);
76
+ const keyOf = (name, version) => !/^[a-z+]+:/.test(version) && stem(version).indexOf('@', 1) > 0
77
+ ? version
78
+ : `${name}@${version}`;
79
+ const graph = (fields) => {
80
+ const seen = new Set();
81
+ const todo = packImporters.flatMap((importer) => fields.flatMap((field) => Object.entries(record(record(appImporters[importer])[field])).map(([name, dep]) => keyOf(name, String(record(dep).version)))));
82
+ for (let key = todo.pop(); key !== undefined; key = todo.pop()) {
83
+ if (seen.has(key))
84
+ continue;
85
+ seen.add(key);
86
+ const snapshot = record(snapshots[key]);
87
+ for (const field of ['dependencies', 'optionalDependencies']) {
88
+ for (const [name, version] of Object.entries(record(snapshot[field])))
89
+ todo.push(keyOf(name, String(version)));
90
+ }
91
+ }
92
+ return seen;
93
+ };
94
+ const production = graph(['dependencies', 'optionalDependencies']);
95
+ const everything = graph(['dependencies', 'optionalDependencies', 'devDependencies']);
96
+ const cutImporter = record(importers['.']);
97
+ for (const field of ['dependencies', 'optionalDependencies', 'devDependencies']) {
98
+ const listed = record(manifest[field]);
99
+ const locked = record(cutImporter[field]);
100
+ for (const [name, dep] of Object.entries(locked)) {
101
+ const key = keyOf(name, String(record(dep).version));
102
+ if (listed[name] !== record(dep).specifier)
103
+ return refused(`${name}'s specifier isn't the cut-down package.json's`);
104
+ const allowed = field === 'devDependencies' ? everything : production;
105
+ if (!allowed.has(key)) {
106
+ return refused(field === 'devDependencies'
107
+ ? `${key} isn't in the app's dependency graph`
108
+ : `${key} isn't in the app's production dependencies`);
109
+ }
110
+ }
111
+ for (const name of Object.keys(listed)) {
112
+ if (!Object.hasOwn(locked, name))
113
+ return refused(`the cut-down package.json has ${name}, which its lockfile doesn't`);
114
+ }
115
+ }
116
+ return { kind: 'ok' };
117
+ }
118
+ function pnpmDocuments(text) {
119
+ const docs = parseAllDocuments(text);
120
+ if (!Array.isArray(docs) || docs.some((doc) => doc.errors.length > 0))
121
+ return undefined;
122
+ return docs.map((doc) => record(doc.toJS()));
123
+ }
124
+ /** A snapshot key or version, without its peer and patch suffixes. */
125
+ function stem(value) {
126
+ const paren = value.indexOf('(');
127
+ return paren === -1 ? value : value.slice(0, paren);
128
+ }
129
+ // ---------------------------------------------------------------------
130
+ // npm
131
+ // ---------------------------------------------------------------------
132
+ /** The flags the cut-down lockfile recomputes for its own tree. */
133
+ const NPM_FLAGS = ['dev', 'optional', 'devOptional', 'peer'];
134
+ function checkNpm(check, manifest) {
135
+ let app;
136
+ let cut;
137
+ try {
138
+ app = record(JSON.parse(check.lockfile));
139
+ cut = record(JSON.parse(check.reduced));
140
+ }
141
+ catch {
142
+ return refused("a lockfile isn't JSON");
143
+ }
144
+ if (app.lockfileVersion !== cut.lockfileVersion)
145
+ return refused('its lockfileVersion differs');
146
+ const appEntries = record(app.packages);
147
+ const without = (entry) => Object.fromEntries(Object.entries(record(entry)).filter(([field]) => !NPM_FLAGS.includes(field)));
148
+ for (const [path, entry] of Object.entries(record(cut.packages))) {
149
+ if (path === '')
150
+ continue;
151
+ // A pack in a workspace member: its own nested packages move to the root's node_modules.
152
+ const candidates = [path, ...(check.packRel === '' ? [] : [`${check.packRel}/${path}`])];
153
+ const match = candidates.find((candidate) => Object.hasOwn(appEntries, candidate) &&
154
+ isDeepStrictEqual(without(appEntries[candidate]), without(entry)));
155
+ if (match === undefined) {
156
+ return candidates.some((candidate) => Object.hasOwn(appEntries, candidate))
157
+ ? refused(`${path} differs from the app's`)
158
+ : refused(`it has ${path}, which the app's lockfile doesn't`);
159
+ }
160
+ if (record(entry).dev !== true && record(appEntries[match]).dev === true) {
161
+ return refused(`${match} is only a dev dependency of the app`);
162
+ }
163
+ }
164
+ const root = record(record(cut.packages)['']);
165
+ for (const field of ['dependencies', 'optionalDependencies', 'devDependencies']) {
166
+ if (!isDeepStrictEqual(record(root[field]), record(manifest[field]))) {
167
+ return refused(`its ${field} aren't the cut-down package.json's`);
168
+ }
169
+ }
170
+ return { kind: 'ok' };
171
+ }
172
+ // ---------------------------------------------------------------------
173
+ // yarn 1
174
+ // ---------------------------------------------------------------------
175
+ function checkYarnClassic(check, manifest) {
176
+ const app = yarnEntries(check.lockfile);
177
+ const cut = yarnEntries(check.reduced);
178
+ const appTexts = new Set(app.map((entry) => entry.text));
179
+ for (const entry of cut) {
180
+ if (!appTexts.has(entry.text)) {
181
+ return app.some((ours) => ours.keys.some((key) => entry.keys.includes(key)))
182
+ ? refused(`${entry.keys[0]} differs from the app's`)
183
+ : refused(`it has ${entry.keys[0]}, which the app's lockfile doesn't`);
184
+ }
185
+ }
186
+ // The app's production graph: the pack project's (and, for a pack in a member, the root's) production dependencies.
187
+ const byKey = new Map(app.flatMap((entry) => entry.keys.map((key) => [key, entry])));
188
+ const manifests = check.packRel === '' ? [check.rootManifest] : [check.packManifest, check.rootManifest];
189
+ const production = new Set();
190
+ const todo = manifests.flatMap((m) => ['dependencies', 'optionalDependencies'].flatMap((field) => Object.entries(record(m[field])).map(([name, range]) => `${name}@${String(range)}`)));
191
+ for (let key = todo.pop(); key !== undefined; key = todo.pop()) {
192
+ const entry = byKey.get(key);
193
+ if (entry === undefined || production.has(entry))
194
+ continue;
195
+ production.add(entry);
196
+ todo.push(...entry.dependencies);
197
+ }
198
+ const cutKeys = new Map(cut.flatMap((entry) => entry.keys.map((key) => [key, entry])));
199
+ for (const field of ['dependencies', 'optionalDependencies', 'devDependencies']) {
200
+ for (const [name, range] of Object.entries(record(manifest[field]))) {
201
+ const key = `${name}@${String(range)}`;
202
+ const entry = cutKeys.get(key);
203
+ if (entry === undefined)
204
+ return refused(`the cut-down package.json has ${key}, which its lockfile doesn't`);
205
+ const ours = byKey.get(key);
206
+ if (field !== 'devDependencies' && (ours === undefined || !production.has(ours))) {
207
+ return refused(`${key} isn't in the app's production dependencies`);
208
+ }
209
+ }
210
+ }
211
+ return { kind: 'ok' };
212
+ }
213
+ function yarnEntries(text) {
214
+ const unquote = (value) => value.replace(/^"(.*)"$/, '$1');
215
+ return text
216
+ .split(/\n\s*\n/)
217
+ .map((chunk) => chunk.split('\n').filter((line) => line !== '' && !line.startsWith('#')))
218
+ .filter((lines) => lines[0] !== undefined && !lines[0].startsWith(' '))
219
+ .map((lines) => ({
220
+ text: lines.join('\n'),
221
+ keys: (lines[0] ?? '')
222
+ .replace(/:$/, '')
223
+ .split(/,\s*/)
224
+ .map((key) => unquote(key.trim())),
225
+ dependencies: lines
226
+ .filter((line) => line.startsWith(' '))
227
+ .map((line) => /^\s+("[^"]+"|\S+)\s+(.+)$/.exec(line))
228
+ .filter((match) => match !== null)
229
+ .map((match) => `${unquote(match[1] ?? '')}@${unquote(match[2] ?? '')}`),
230
+ }));
231
+ }
232
+ function record(value) {
233
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
234
+ ? value
235
+ : {};
236
+ }
237
+ function refused(message) {
238
+ return { kind: 'refused', message };
239
+ }
240
+ //# sourceMappingURL=loaded-install-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded-install-check.js","sourceRoot":"","sources":["../../src/build/loaded-install-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { HostInstall, ImagePackageManager, ReducedInstall } from './host-install.js';
2
+ import type { ResolvedImage } from './image-config.js';
3
+ /** A package as the host has it installed. */
4
+ export interface HostPackage {
5
+ readonly name: string;
6
+ /** Its folder's real path, relative to the install root (`node_modules/.pnpm/chalk@4.1.2/node_modules/chalk`). */
7
+ readonly folder: string;
8
+ /** Its `package.json` version. */
9
+ readonly version: string;
10
+ }
11
+ export type ReduceOutcome = {
12
+ readonly kind: 'reduced';
13
+ readonly reduced: ReducedInstall;
14
+ } | {
15
+ readonly kind: 'fallback';
16
+ readonly reason: string;
17
+ } | {
18
+ readonly kind: 'err';
19
+ readonly message: string;
20
+ };
21
+ /** What `reduceInstall` cuts down. Pure: the caller reads the files and the host's folders. */
22
+ export interface ReduceInputs {
23
+ readonly manager: ImagePackageManager;
24
+ /** The pack folder relative to the install root (`''` at the root). */
25
+ readonly packRel: string;
26
+ /** The app's install files (`HostInstall.files`). */
27
+ readonly files: readonly string[];
28
+ readonly lockfile: {
29
+ readonly name: string;
30
+ readonly text: string;
31
+ };
32
+ readonly rootManifest: Manifest;
33
+ readonly packManifest: Manifest;
34
+ /** `pnpm-workspace.yaml`, when the app has one. */
35
+ readonly workspaceText?: string;
36
+ /** What the pack loads. */
37
+ readonly roots: readonly HostPackage[];
38
+ /** The build steps' tools. */
39
+ readonly tools: readonly HostPackage[];
40
+ /**
41
+ * yarn 1, whose lockfile has no peer dependencies: each installed
42
+ * package's peers (`name@version`), as the host resolves them.
43
+ */
44
+ readonly peers?: Readonly<Record<string, readonly HostPackage[]>>;
45
+ }
46
+ type Manifest = Readonly<Record<string, unknown>>;
47
+ /** The command that brings node_modules back in line with the lockfile. */
48
+ export declare function reinstallCommand(manager: ImagePackageManager): string;
49
+ /** Cut the app's install down to the roots and what they depend on. */
50
+ export declare function reduceInstall(inputs: ReduceInputs): ReduceOutcome;
51
+ /** Where Node finds `name` from `fromDir`, up to the install root: its real folder and version. */
52
+ export declare function findHostPackage(root: string, fromDir: string, name: string): Promise<HostPackage | undefined>;
53
+ /** The installed packages, for the pack at `packDir`: what the cut-down install starts from. */
54
+ export interface LoadedInstallOptions {
55
+ readonly install: HostInstall;
56
+ readonly packDir: string;
57
+ /** What the bundles import by name (`externals.json`'s packages). */
58
+ readonly externals: readonly string[];
59
+ readonly image: Pick<ResolvedImage, 'keep' | 'keepIfInstalled' | 'steps'>;
60
+ }
61
+ export type LoadedInstallOutcome = {
62
+ readonly kind: 'reduced';
63
+ readonly install: HostInstall;
64
+ } | {
65
+ readonly kind: 'fallback';
66
+ readonly reason: string;
67
+ } | {
68
+ readonly kind: 'err';
69
+ readonly message: string;
70
+ };
71
+ /**
72
+ * With `image.dependencies: 'loaded'`: the app's install, cut down to what
73
+ * the pack loads, checked against the app's lockfile; or why the image
74
+ * takes the full install and trims it.
75
+ */
76
+ export declare function loadedInstall(opts: LoadedInstallOptions): Promise<LoadedInstallOutcome>;
77
+ export {};
78
+ //# sourceMappingURL=loaded-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded-install.d.ts","sourceRoot":"","sources":["../../src/build/loaded-install.ts"],"names":[],"mappings":"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"}