@cogitator-ai/deploy 0.5.0 → 0.6.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.
- package/README.md +14 -14
- package/dist/analyzer.d.ts +31 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +114 -6
- package/dist/analyzer.js.map +1 -1
- package/dist/generator.d.ts +4 -2
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +6 -1
- package/dist/generator.js.map +1 -1
- package/dist/templates/dockerfile.d.ts +21 -1
- package/dist/templates/dockerfile.d.ts.map +1 -1
- package/dist/templates/dockerfile.js +79 -22
- package/dist/templates/dockerfile.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -126,23 +126,23 @@ A local Ollama model on the docker target reaches the Ollama of the host: the Co
|
|
|
126
126
|
|
|
127
127
|
## Auto-Detection
|
|
128
128
|
|
|
129
|
-
| What | Source
|
|
130
|
-
| ---------------- |
|
|
131
|
-
| Kind and server | `package.json` dependencies
|
|
132
|
-
| Image / app name | `package.json` `name`
|
|
133
|
-
| Package manager | Lockfile, `packageManager`, `pnpm-workspace.yaml`
|
|
134
|
-
| Install files | Files next to `package.json`
|
|
135
|
-
| Runtime | Bun lockfile,
|
|
136
|
-
| Start command | `scripts.start`, then `main`
|
|
137
|
-
| Build step | `tsconfig.json` + `scripts.build`
|
|
138
|
-
| Services | Config file memory adapter
|
|
139
|
-
| Volumes | Config file `memory.sqlite.path`
|
|
140
|
-
| Required secrets | Provider of the model, `requireEnv()`, `.env.example`
|
|
141
|
-
| Ollama Cloud | Model tag `:cloud` / `-cloud`
|
|
129
|
+
| What | Source | Example |
|
|
130
|
+
| ---------------- | ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
131
|
+
| Kind and server | `package.json` dependencies | `@cogitator-ai/express` → Express server, `@cogitator-ai/channels` → worker |
|
|
132
|
+
| Image / app name | `package.json` `name` | `@acme/My Agent` → `my-agent` (fallback `cogitator-app`) |
|
|
133
|
+
| Package manager | Lockfile, `packageManager`, `pnpm-workspace.yaml` | `pnpm-lock.yaml` → `pnpm install --frozen-lockfile`, Yarn 1 → `yarn install --frozen-lockfile`, Yarn Berry → `yarn install --immutable`, `bun.lock` → `bun install`, `package-lock.json` → `npm ci` |
|
|
134
|
+
| Install files | Files next to `package.json` | `pnpm-workspace.yaml`, `.npmrc`, `patches/`, `.yarnrc.yml`, `.yarn/`, `bunfig.toml` are copied before the install step |
|
|
135
|
+
| Runtime | Start command, Bun lockfile, `@cogitator-ai/tetsu` | `bun ...` start → `oven/bun:1-alpine` image, otherwise `node:24-alpine` (with Bun added for a Bun-managed Node app) |
|
|
136
|
+
| Start command | `scripts.start`, then `main` | `node dist/index.js` → `CMD ["node","dist/index.js"]`, any other script → `npm start` (`yarn start`, `bun run start`) |
|
|
137
|
+
| Build step | `tsconfig.json` + `scripts.build` | Multi-stage build running `<pm> run build` |
|
|
138
|
+
| Services | Config file memory adapter | `adapter: postgres` → PostgreSQL service |
|
|
139
|
+
| Volumes | Config file `memory.sqlite.path` | `./data/memory.db` → volume on `/app/data` |
|
|
140
|
+
| Required secrets | Provider of the model, `requireEnv()`, `.env.example` | `openai/gpt-6.1-sol` → `OPENAI_API_KEY`, Bedrock → `AWS_REGION` and both AWS keys |
|
|
141
|
+
| Ollama Cloud | Model tag `:cloud` / `-cloud` | `gpt-oss:120b-cloud` → `OLLAMA_API_KEY` |
|
|
142
142
|
|
|
143
143
|
Preflight starts with the project checks every target shares: `package.json` exists (a `cogitator wizard` assistant has none, it runs with `cogitator up` or `cogitator daemon start`), the project is a server or a worker, the `start` script does not load a `.env` file with `--env-file` (`.env` stays out of the image, use `--env-file-if-exists`), and secrets were found. Other problems (invalid config, unparsable `package.json`, missing start script, `tsconfig.json` without a `build` script, a server without a known health path, local Ollama, Redis or Postgres on Fly, `instances > 1` on Docker) are returned as `plan.warnings`.
|
|
144
144
|
|
|
145
|
-
The image is
|
|
145
|
+
The image is a production build in three stages. `base` is `node:24-alpine`, or `oven/bun:1-alpine` when the start command runs `bun`. `builder` adds the native toolchain (`python3`, `make`, `g++`), installs from the lockfile with the package manager's cache in a BuildKit cache mount, runs the build and drops the dev dependencies. `runtime` copies the result, runs as the image's unprivileged user (`node` or `bun`) under `tini`, so signals reach the app and child processes are reaped, and sets `NODE_ENV=production`. A server also gets `PORT`, `EXPOSE` and a `HEALTHCHECK` on its health path. A Node app whose package manager is Bun builds on the Node image with Bun copied in and `node-gyp` installed, so native dependencies such as `better-sqlite3` compile. A `start` script of the form `node [flags] dist/index.js` becomes the `CMD` directly, without its `--env-file` flags: the container gets its environment from the deployment. `file:` and `link:` dependencies are copied in before the install step. A Yarn Berry project on Plug'n'Play (Yarn's default linker) installs its package archives into the image's `.yarn/cache`, keeps only the production ones, and starts with the PnP resolver loaded through `NODE_OPTIONS` (`.pnp.cjs`, and `.pnp.loader.mjs` for ES modules).
|
|
146
146
|
|
|
147
147
|
## Deploy Targets
|
|
148
148
|
|
package/dist/analyzer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DeployConfig, DeployKind, DeployServer, DeployServicesConfig, DeployTarget, PreflightCheck } from '@cogitator-ai/types';
|
|
2
|
+
import type { PlugAndPlay } from './templates/dockerfile.js';
|
|
2
3
|
/**
|
|
3
4
|
* The package manager a project installs with. `yarn` is Yarn 1 (classic),
|
|
4
5
|
* `yarn-berry` is Yarn 2 and later, which take different install flags.
|
|
@@ -6,11 +7,15 @@ import type { DeployConfig, DeployKind, DeployServer, DeployServicesConfig, Depl
|
|
|
6
7
|
export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'yarn-berry' | 'bun';
|
|
7
8
|
interface PackageJson {
|
|
8
9
|
name?: string;
|
|
10
|
+
type?: string;
|
|
9
11
|
main?: string;
|
|
10
12
|
packageManager?: string;
|
|
11
13
|
scripts?: Record<string, string>;
|
|
12
14
|
dependencies?: Record<string, string>;
|
|
13
15
|
devDependencies?: Record<string, string>;
|
|
16
|
+
optionalDependencies?: Record<string, string>;
|
|
17
|
+
overrides?: Record<string, unknown>;
|
|
18
|
+
resolutions?: Record<string, unknown>;
|
|
14
19
|
patchedDependencies?: Record<string, string>;
|
|
15
20
|
}
|
|
16
21
|
/** How a project builds and starts: what the generated Dockerfile needs. */
|
|
@@ -24,6 +29,8 @@ export interface ProjectBuild {
|
|
|
24
29
|
installFiles: string[];
|
|
25
30
|
/** Version of the package manager from the `packageManager` field, e.g. `4.5.0` */
|
|
26
31
|
packageManagerVersion?: string;
|
|
32
|
+
/** Set when Yarn installs with Plug'n'Play: no node_modules, a resolver the app has to load. */
|
|
33
|
+
plugAndPlay?: PlugAndPlay;
|
|
27
34
|
}
|
|
28
35
|
export interface AnalyzerResult extends ProjectBuild {
|
|
29
36
|
server?: DeployServer;
|
|
@@ -41,6 +48,19 @@ export interface AnalyzeOptions {
|
|
|
41
48
|
/** Environment the deployment takes its secrets from, the project's `.env` under the process environment by default */
|
|
42
49
|
env?: NodeJS.ProcessEnv;
|
|
43
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Relative paths of the local packages the install reads (`file:` and `link:`
|
|
53
|
+
* specs in dependencies, overrides and resolutions, and in the overrides of
|
|
54
|
+
* pnpm-workspace.yaml), so the image copies them before it installs.
|
|
55
|
+
*/
|
|
56
|
+
export declare function localDependencySpecs(projectDir: string, pkg: PackageJson): string[];
|
|
57
|
+
/**
|
|
58
|
+
* `start` as argv when it is `node` or `bun` with flags and one script, such as
|
|
59
|
+
* `node --env-file-if-exists=.env dist/index.js`, and undefined for anything a
|
|
60
|
+
* shell would have to interpret. Flags that load `.env` are dropped: the image
|
|
61
|
+
* gets its environment from the deployment.
|
|
62
|
+
*/
|
|
63
|
+
export declare function directCommand(start: string): string[] | undefined;
|
|
44
64
|
export declare class ProjectAnalyzer {
|
|
45
65
|
detectServer(pkg: PackageJson): DeployServer | undefined;
|
|
46
66
|
/**
|
|
@@ -67,6 +87,11 @@ export declare class ProjectAnalyzer {
|
|
|
67
87
|
packageManager: PackageManager;
|
|
68
88
|
hasLockfile: boolean;
|
|
69
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* The command a container runs: the start script itself when it is a plain
|
|
92
|
+
* `node` or `bun` call, so the runtime is PID 1's direct child and gets
|
|
93
|
+
* signals without a package manager in between, else the package manager.
|
|
94
|
+
*/
|
|
70
95
|
detectStartCommand(pkg: PackageJson, hasTypeScript: boolean, packageManager?: PackageManager): string[];
|
|
71
96
|
/** How the project in `projectDir` builds and starts. */
|
|
72
97
|
detectBuild(projectDir: string): ProjectBuild;
|
|
@@ -97,6 +122,12 @@ export declare class ProjectAnalyzer {
|
|
|
97
122
|
/** `llm.providers` of the config file with every `${VAR}` reference left empty: the values written in it. */
|
|
98
123
|
private literalProviders;
|
|
99
124
|
private installFiles;
|
|
125
|
+
/**
|
|
126
|
+
* Plug'n'Play settings of a Yarn 2+ project, `undefined` when it installs
|
|
127
|
+
* node_modules. PnP is Yarn's default linker, and Yarn writes the ESM loader
|
|
128
|
+
* when it is asked to or when a workspace is an ES module.
|
|
129
|
+
*/
|
|
130
|
+
detectPlugAndPlay(projectDir: string, pkg: PackageJson): PlugAndPlay | undefined;
|
|
100
131
|
private buildOf;
|
|
101
132
|
}
|
|
102
133
|
export {};
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/analyzer.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parse as parseYaml } from 'yaml';
|
|
1
2
|
import { isLLMProvider, resolveModelRoute } from '@cogitator-ai/types';
|
|
2
3
|
import { findConfigFile, loadConfig, loadYamlConfig, OLLAMA_DEFAULT_PORT, PROVIDER_ENV, preferredEnvName, providerEnvNames, resolveOllamaHost, } from '@cogitator-ai/config';
|
|
3
4
|
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
@@ -80,6 +81,7 @@ function readPackageJson(projectDir, warnings) {
|
|
|
80
81
|
};
|
|
81
82
|
return {
|
|
82
83
|
name: typeof raw.name === 'string' ? raw.name : undefined,
|
|
84
|
+
type: typeof raw.type === 'string' ? raw.type : undefined,
|
|
83
85
|
main: typeof raw.main === 'string' ? raw.main : undefined,
|
|
84
86
|
packageManager: typeof raw.packageManager === 'string' ? raw.packageManager : undefined,
|
|
85
87
|
scripts: isStringRecord(raw.scripts) ? raw.scripts : undefined,
|
|
@@ -177,6 +179,75 @@ function providerField(providers, provider, field) {
|
|
|
177
179
|
const value = section[field];
|
|
178
180
|
return typeof value === 'string' && value.trim() !== '' ? value : undefined;
|
|
179
181
|
}
|
|
182
|
+
/** The first directory of a relative path inside the project, undefined for anything else. */
|
|
183
|
+
function topDirectory(path) {
|
|
184
|
+
if (isAbsolute(path))
|
|
185
|
+
return undefined;
|
|
186
|
+
const first = posix.normalize(path.replace(/\\/g, '/')).split('/')[0];
|
|
187
|
+
return first && first !== '..' && first !== '.' ? first : undefined;
|
|
188
|
+
}
|
|
189
|
+
const LOCAL_SPEC = /^(?:file|link):(.+)$/;
|
|
190
|
+
/**
|
|
191
|
+
* Relative paths of the local packages the install reads (`file:` and `link:`
|
|
192
|
+
* specs in dependencies, overrides and resolutions, and in the overrides of
|
|
193
|
+
* pnpm-workspace.yaml), so the image copies them before it installs.
|
|
194
|
+
*/
|
|
195
|
+
export function localDependencySpecs(projectDir, pkg) {
|
|
196
|
+
const specs = [];
|
|
197
|
+
const collect = (value) => {
|
|
198
|
+
if (typeof value === 'string') {
|
|
199
|
+
const match = LOCAL_SPEC.exec(value.trim());
|
|
200
|
+
if (match)
|
|
201
|
+
specs.push(match[1]);
|
|
202
|
+
}
|
|
203
|
+
else if (typeof value === 'object' && value !== null) {
|
|
204
|
+
for (const nested of Object.values(value))
|
|
205
|
+
collect(nested);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
for (const field of [
|
|
209
|
+
pkg.dependencies,
|
|
210
|
+
pkg.devDependencies,
|
|
211
|
+
pkg.optionalDependencies,
|
|
212
|
+
pkg.overrides,
|
|
213
|
+
pkg.resolutions,
|
|
214
|
+
]) {
|
|
215
|
+
collect(field);
|
|
216
|
+
}
|
|
217
|
+
const workspace = join(projectDir, 'pnpm-workspace.yaml');
|
|
218
|
+
if (existsSync(workspace)) {
|
|
219
|
+
try {
|
|
220
|
+
const parsed = parseYaml(readFileSync(workspace, 'utf-8'));
|
|
221
|
+
if (typeof parsed === 'object' && parsed !== null && 'overrides' in parsed)
|
|
222
|
+
collect(parsed.overrides);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return specs;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return specs;
|
|
229
|
+
}
|
|
230
|
+
/** `.env` never reaches the image (.dockerignore), so a flag that loads it only logs that it is missing. */
|
|
231
|
+
const DOTENV_FLAG = /^--env-file(?:-if-exists)?(?:=|$)/;
|
|
232
|
+
const PLAIN_WORD = /^[^\s&|;<>$`"'*?()]+$/;
|
|
233
|
+
/**
|
|
234
|
+
* `start` as argv when it is `node` or `bun` with flags and one script, such as
|
|
235
|
+
* `node --env-file-if-exists=.env dist/index.js`, and undefined for anything a
|
|
236
|
+
* shell would have to interpret. Flags that load `.env` are dropped: the image
|
|
237
|
+
* gets its environment from the deployment.
|
|
238
|
+
*/
|
|
239
|
+
export function directCommand(start) {
|
|
240
|
+
const words = start.split(/\s+/);
|
|
241
|
+
const [runtime, ...rest] = words;
|
|
242
|
+
if (runtime !== 'node' && runtime !== 'bun')
|
|
243
|
+
return undefined;
|
|
244
|
+
if (rest.length === 0 || !rest.every((word) => PLAIN_WORD.test(word)))
|
|
245
|
+
return undefined;
|
|
246
|
+
const script = rest[rest.length - 1];
|
|
247
|
+
if (script.startsWith('-') || rest.slice(0, -1).some((word) => !word.startsWith('--')))
|
|
248
|
+
return undefined;
|
|
249
|
+
return [runtime, ...rest.filter((word) => !DOTENV_FLAG.test(word))];
|
|
250
|
+
}
|
|
180
251
|
export class ProjectAnalyzer {
|
|
181
252
|
detectServer(pkg) {
|
|
182
253
|
for (const [pkgName, server] of Object.entries(SERVER_PACKAGES)) {
|
|
@@ -267,16 +338,23 @@ export class ProjectAnalyzer {
|
|
|
267
338
|
}
|
|
268
339
|
return { packageManager: 'npm', hasLockfile: false };
|
|
269
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* The command a container runs: the start script itself when it is a plain
|
|
343
|
+
* `node` or `bun` call, so the runtime is PID 1's direct child and gets
|
|
344
|
+
* signals without a package manager in between, else the package manager.
|
|
345
|
+
*/
|
|
270
346
|
detectStartCommand(pkg, hasTypeScript, packageManager = 'npm') {
|
|
271
347
|
const bun = packageManager === 'bun';
|
|
272
348
|
const start = pkg.scripts?.start?.trim();
|
|
273
349
|
if (start) {
|
|
350
|
+
const direct = directCommand(start);
|
|
351
|
+
if (direct)
|
|
352
|
+
return direct;
|
|
274
353
|
if (bun)
|
|
275
354
|
return ['bun', 'run', 'start'];
|
|
276
355
|
if (packageManager === 'yarn-berry')
|
|
277
356
|
return ['yarn', 'start'];
|
|
278
|
-
|
|
279
|
-
return nodeScript ? ['node', nodeScript[1]] : ['npm', 'start'];
|
|
357
|
+
return ['npm', 'start'];
|
|
280
358
|
}
|
|
281
359
|
const runtime = bun ? 'bun' : 'node';
|
|
282
360
|
if (pkg.main)
|
|
@@ -554,20 +632,49 @@ export class ProjectAnalyzer {
|
|
|
554
632
|
'yarn-berry': ['yarn.lock', '.yarnrc.yml', '.yarn'],
|
|
555
633
|
bun: ['bun.lock', 'bun.lockb', 'bunfig.toml'],
|
|
556
634
|
};
|
|
635
|
+
const isDir = (dir) => dir !== undefined;
|
|
557
636
|
const patchDirs = Object.values(pkg.patchedDependencies ?? {})
|
|
558
|
-
.
|
|
559
|
-
.
|
|
560
|
-
|
|
561
|
-
return unique([...candidates[pm], '.npmrc', 'patches', ...patchDirs])
|
|
637
|
+
.map(topDirectory)
|
|
638
|
+
.filter(isDir);
|
|
639
|
+
const localDirs = localDependencySpecs(projectDir, pkg).map(topDirectory).filter(isDir);
|
|
640
|
+
return unique([...candidates[pm], '.npmrc', 'patches', ...patchDirs, ...localDirs])
|
|
562
641
|
.filter((file) => existsSync(join(projectDir, file)))
|
|
563
642
|
.map((file) => (statSync(join(projectDir, file)).isDirectory() ? `${file}/` : file));
|
|
564
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* Plug'n'Play settings of a Yarn 2+ project, `undefined` when it installs
|
|
646
|
+
* node_modules. PnP is Yarn's default linker, and Yarn writes the ESM loader
|
|
647
|
+
* when it is asked to or when a workspace is an ES module.
|
|
648
|
+
*/
|
|
649
|
+
detectPlugAndPlay(projectDir, pkg) {
|
|
650
|
+
const rcPath = join(projectDir, '.yarnrc.yml');
|
|
651
|
+
let rc = {};
|
|
652
|
+
if (existsSync(rcPath)) {
|
|
653
|
+
try {
|
|
654
|
+
const parsed = parseYaml(readFileSync(rcPath, 'utf-8'));
|
|
655
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
|
|
656
|
+
rc = parsed;
|
|
657
|
+
}
|
|
658
|
+
catch {
|
|
659
|
+
rc = {};
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
const linker = typeof rc.nodeLinker === 'string' ? rc.nodeLinker : 'pnp';
|
|
663
|
+
if (linker !== 'pnp')
|
|
664
|
+
return undefined;
|
|
665
|
+
return {
|
|
666
|
+
esmLoader: rc.pnpEnableEsmLoader === true ||
|
|
667
|
+
pkg.type === 'module' ||
|
|
668
|
+
existsSync(join(projectDir, '.pnp.loader.mjs')),
|
|
669
|
+
};
|
|
670
|
+
}
|
|
565
671
|
buildOf(projectDir, pkg) {
|
|
566
672
|
const hasTypeScript = existsSync(join(projectDir, 'tsconfig.json'));
|
|
567
673
|
const pm = this.detectPackageManager(projectDir, pkg);
|
|
568
674
|
const declared = parsePackageManagerField(pkg.packageManager);
|
|
569
675
|
const binary = pm.packageManager === 'yarn-berry' ? 'yarn' : pm.packageManager;
|
|
570
676
|
const version = declared?.name === binary ? declared.version : undefined;
|
|
677
|
+
const plugAndPlay = pm.packageManager === 'yarn-berry' ? this.detectPlugAndPlay(projectDir, pkg) : undefined;
|
|
571
678
|
return {
|
|
572
679
|
hasTypeScript,
|
|
573
680
|
...pm,
|
|
@@ -575,6 +682,7 @@ export class ProjectAnalyzer {
|
|
|
575
682
|
startCommand: this.detectStartCommand(pkg, hasTypeScript, pm.packageManager),
|
|
576
683
|
installFiles: this.installFiles(projectDir, pkg, pm.packageManager),
|
|
577
684
|
...(version ? { packageManagerVersion: version } : {}),
|
|
685
|
+
...(plugAndPlay && { plugAndPlay }),
|
|
578
686
|
};
|
|
579
687
|
}
|
|
580
688
|
}
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/generator.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DeployConfig, GeneratedArtifacts } from '@cogitator-ai/types';
|
|
2
|
-
import { type DockerfilePackageManager } from './templates/dockerfile.js';
|
|
2
|
+
import { type DockerfilePackageManager, type PlugAndPlay } from './templates/dockerfile.js';
|
|
3
3
|
export interface GeneratorOptions {
|
|
4
4
|
hasTypeScript: boolean;
|
|
5
5
|
packageManager?: DockerfilePackageManager;
|
|
@@ -10,9 +10,11 @@ export interface GeneratorOptions {
|
|
|
10
10
|
installFiles?: string[];
|
|
11
11
|
/** Version from the `packageManager` field of package.json */
|
|
12
12
|
packageManagerVersion?: string;
|
|
13
|
+
/** Yarn Plug'n'Play: the packages live in .yarn/cache and the app loads .pnp.cjs */
|
|
14
|
+
plugAndPlay?: PlugAndPlay;
|
|
13
15
|
}
|
|
14
16
|
export declare const ARTIFACTS_DIR = ".cogitator";
|
|
15
|
-
export declare const DOCKERIGNORE = "node_modules\ndist\n.git\n.gitignore\n.env\n.env.*\n*.md\n.cogitator\n";
|
|
17
|
+
export declare const DOCKERIGNORE = "node_modules\n.pnp.cjs\n.pnp.loader.mjs\n.yarn/cache\n.yarn/unplugged\n.yarn/install-state.gz\ndist\n.git\n.gitignore\n.env\n.env.*\n*.md\n.cogitator\n";
|
|
16
18
|
/** The `.dockerignore` of `config`: the defaults, and the volume directories, whose local data must not ship in the image. */
|
|
17
19
|
export declare function dockerignoreFor(config: DeployConfig): string;
|
|
18
20
|
export declare class ArtifactGenerator {
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAqB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAqB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,YAAY,4JAaxB,CAAC;AAEF,8HAA8H;AAC9H,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAG5D;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,kBAAkB;CA6B9E"}
|
package/dist/generator.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { generateDockerfile } from './templates/dockerfile.js';
|
|
1
|
+
import { generateDockerfile, } from './templates/dockerfile.js';
|
|
2
2
|
import { generateDockerCompose } from './templates/docker-compose.js';
|
|
3
3
|
import { generateFlyToml } from './templates/fly-toml.js';
|
|
4
4
|
import { projectVolumePaths } from './volumes.js';
|
|
5
5
|
export const ARTIFACTS_DIR = '.cogitator';
|
|
6
6
|
export const DOCKERIGNORE = `node_modules
|
|
7
|
+
.pnp.cjs
|
|
8
|
+
.pnp.loader.mjs
|
|
9
|
+
.yarn/cache
|
|
10
|
+
.yarn/unplugged
|
|
11
|
+
.yarn/install-state.gz
|
|
7
12
|
dist
|
|
8
13
|
.git
|
|
9
14
|
.gitignore
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAgBlD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF,8HAA8H;AAC9H,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AACtF,CAAC;AAED,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAC,MAAoB,EAAE,OAAyB;QACtD,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAEvE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -4,6 +4,11 @@ import type { DeployConfig } from '@cogitator-ai/types';
|
|
|
4
4
|
* `yarn-berry` is Yarn 2 and later.
|
|
5
5
|
*/
|
|
6
6
|
export type DockerfilePackageManager = 'pnpm' | 'npm' | 'yarn' | 'yarn-berry' | 'bun';
|
|
7
|
+
/** How a Yarn Plug'n'Play project resolves its packages at runtime. */
|
|
8
|
+
export interface PlugAndPlay {
|
|
9
|
+
/** Whether Yarn writes `.pnp.loader.mjs`, which ES modules need to resolve packages. */
|
|
10
|
+
esmLoader: boolean;
|
|
11
|
+
}
|
|
7
12
|
export interface DockerfileOptions {
|
|
8
13
|
config: DeployConfig;
|
|
9
14
|
hasTypeScript: boolean;
|
|
@@ -15,8 +20,23 @@ export interface DockerfileOptions {
|
|
|
15
20
|
installFiles?: string[];
|
|
16
21
|
/** Version from the `packageManager` field of package.json */
|
|
17
22
|
packageManagerVersion?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Yarn Plug'n'Play: the package archives are installed into the project's
|
|
25
|
+
* .yarn/cache so they ship in the image (the global cache is a build cache
|
|
26
|
+
* mount), and the app starts with the PnP resolver loaded.
|
|
27
|
+
*/
|
|
28
|
+
plugAndPlay?: PlugAndPlay;
|
|
18
29
|
}
|
|
19
|
-
export declare const NODE_IMAGE = "node:
|
|
30
|
+
export declare const NODE_IMAGE = "node:24-alpine";
|
|
20
31
|
export declare const BUN_IMAGE = "oven/bun:1-alpine";
|
|
32
|
+
/**
|
|
33
|
+
* A production image: dependencies installed from the lockfile with the
|
|
34
|
+
* package manager's cache kept between builds, TypeScript built in a builder
|
|
35
|
+
* stage that then drops its dev dependencies, and a runtime stage that runs as
|
|
36
|
+
* the image's unprivileged user under tini, so signals reach the app and child
|
|
37
|
+
* processes (MCP servers, sandboxes) are reaped. The image follows what runs
|
|
38
|
+
* the app: Bun's image for `bun` start commands, Node's otherwise, with Bun
|
|
39
|
+
* and node-gyp added for a Node app whose package manager is Bun.
|
|
40
|
+
*/
|
|
21
41
|
export declare function generateDockerfile(options: DockerfileOptions): string;
|
|
22
42
|
//# sourceMappingURL=dockerfile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockerfile.d.ts","sourceRoot":"","sources":["../../src/templates/dockerfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uHAAuH;IACvH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"dockerfile.d.ts","sourceRoot":"","sources":["../../src/templates/dockerfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;AAEtF,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uHAAuH;IACvH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,SAAS,sBAAsB,CAAC;AA6H7C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA+ErE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { healthPath, servesHttp } from './health.js';
|
|
2
|
-
export const NODE_IMAGE = 'node:
|
|
2
|
+
export const NODE_IMAGE = 'node:24-alpine';
|
|
3
3
|
export const BUN_IMAGE = 'oven/bun:1-alpine';
|
|
4
4
|
const DEFAULT_INSTALL_FILES = {
|
|
5
5
|
pnpm: ['pnpm-lock.yaml*'],
|
|
@@ -8,6 +8,14 @@ const DEFAULT_INSTALL_FILES = {
|
|
|
8
8
|
'yarn-berry': ['yarn.lock*', '.yarnrc.yml*'],
|
|
9
9
|
bun: ['bun.lock*'],
|
|
10
10
|
};
|
|
11
|
+
/** Where each package manager keeps its download cache, mounted as a BuildKit cache across builds. */
|
|
12
|
+
const CACHE_DIRS = {
|
|
13
|
+
pnpm: '/root/.local/share/pnpm/store',
|
|
14
|
+
npm: '/root/.npm',
|
|
15
|
+
yarn: '/usr/local/share/.cache/yarn',
|
|
16
|
+
'yarn-berry': '/root/.yarn/berry/cache',
|
|
17
|
+
bun: '/root/.bun/install/cache',
|
|
18
|
+
};
|
|
11
19
|
function copyInstallFiles(pm, files) {
|
|
12
20
|
if (!files)
|
|
13
21
|
return [`COPY package.json ${DEFAULT_INSTALL_FILES[pm].join(' ')} ./`];
|
|
@@ -18,49 +26,65 @@ function copyInstallFiles(pm, files) {
|
|
|
18
26
|
...directories.map((dir) => `COPY ${dir} ./${dir}`),
|
|
19
27
|
];
|
|
20
28
|
}
|
|
29
|
+
function cached(pm, command) {
|
|
30
|
+
return `RUN --mount=type=cache,id=${pm},target=${CACHE_DIRS[pm]} ${command}`;
|
|
31
|
+
}
|
|
21
32
|
function installSteps(options, pm) {
|
|
22
33
|
const locked = options.hasLockfile ?? true;
|
|
23
34
|
const copy = copyInstallFiles(pm, options.installFiles);
|
|
24
35
|
switch (pm) {
|
|
25
|
-
case 'pnpm':
|
|
36
|
+
case 'pnpm': {
|
|
37
|
+
const frozen = locked ? ' --frozen-lockfile' : '';
|
|
26
38
|
return {
|
|
27
39
|
copy,
|
|
28
|
-
install: `
|
|
29
|
-
installProd: `
|
|
40
|
+
install: cached(pm, `pnpm install${frozen}`),
|
|
41
|
+
installProd: cached(pm, `pnpm install${frozen} --prod`),
|
|
42
|
+
prune: cached(pm, 'pnpm prune --prod --ignore-scripts'),
|
|
30
43
|
build: 'RUN pnpm run build',
|
|
31
44
|
};
|
|
32
|
-
|
|
45
|
+
}
|
|
46
|
+
case 'yarn': {
|
|
47
|
+
const frozen = locked ? ' --frozen-lockfile' : '';
|
|
33
48
|
return {
|
|
34
49
|
copy,
|
|
35
|
-
install: `
|
|
36
|
-
installProd: `
|
|
50
|
+
install: cached(pm, `yarn install${frozen}`),
|
|
51
|
+
installProd: cached(pm, `yarn install${frozen} --production`),
|
|
52
|
+
prune: cached(pm, `yarn install${frozen} --production --ignore-scripts --prefer-offline`),
|
|
37
53
|
build: 'RUN yarn run build',
|
|
38
54
|
};
|
|
55
|
+
}
|
|
39
56
|
case 'yarn-berry': {
|
|
40
|
-
const
|
|
57
|
+
const local = options.plugAndPlay ? 'YARN_ENABLE_GLOBAL_CACHE=false ' : '';
|
|
58
|
+
const install = cached(pm, `${local}yarn install${locked ? ' --immutable' : ''}`);
|
|
41
59
|
const focusable = Number.parseInt(options.packageManagerVersion ?? '', 10) >= 4;
|
|
60
|
+
const focus = cached(pm, `${local}yarn workspaces focus --all --production`);
|
|
61
|
+
const prune = options.plugAndPlay
|
|
62
|
+
? cached(pm, `rm -rf .yarn/cache && ${local}yarn workspaces focus --all --production`)
|
|
63
|
+
: focus;
|
|
42
64
|
return {
|
|
43
65
|
copy,
|
|
44
66
|
install,
|
|
45
|
-
installProd: focusable
|
|
46
|
-
|
|
47
|
-
: install,
|
|
67
|
+
installProd: focusable ? focus : install,
|
|
68
|
+
...(focusable && { prune }),
|
|
48
69
|
build: 'RUN yarn run build',
|
|
49
|
-
runtimeSetup: 'RUN corepack enable',
|
|
50
70
|
};
|
|
51
71
|
}
|
|
52
|
-
case 'bun':
|
|
72
|
+
case 'bun': {
|
|
73
|
+
const frozen = locked ? ' --frozen-lockfile' : '';
|
|
53
74
|
return {
|
|
54
75
|
copy,
|
|
55
|
-
install: `
|
|
56
|
-
installProd: `
|
|
76
|
+
install: cached(pm, `bun install${frozen}`),
|
|
77
|
+
installProd: cached(pm, `bun install${frozen} --production`),
|
|
78
|
+
prune: cached(pm, `rm -rf node_modules && bun install${frozen} --production`),
|
|
57
79
|
build: 'RUN bun run build',
|
|
58
80
|
};
|
|
81
|
+
}
|
|
59
82
|
case 'npm':
|
|
60
83
|
return {
|
|
61
84
|
copy,
|
|
62
|
-
install: locked ? '
|
|
63
|
-
installProd: locked ? '
|
|
85
|
+
install: cached(pm, locked ? 'npm ci' : 'npm install'),
|
|
86
|
+
installProd: cached(pm, locked ? 'npm ci --omit=dev' : 'npm install --omit=dev'),
|
|
87
|
+
prune: cached(pm, 'npm prune --omit=dev'),
|
|
64
88
|
build: 'RUN npm run build',
|
|
65
89
|
};
|
|
66
90
|
}
|
|
@@ -81,11 +105,23 @@ function healthcheck(config, port) {
|
|
|
81
105
|
function lines(...entries) {
|
|
82
106
|
return entries.filter((entry) => typeof entry === 'string').join('\n') + '\n';
|
|
83
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* A production image: dependencies installed from the lockfile with the
|
|
110
|
+
* package manager's cache kept between builds, TypeScript built in a builder
|
|
111
|
+
* stage that then drops its dev dependencies, and a runtime stage that runs as
|
|
112
|
+
* the image's unprivileged user under tini, so signals reach the app and child
|
|
113
|
+
* processes (MCP servers, sandboxes) are reaped. The image follows what runs
|
|
114
|
+
* the app: Bun's image for `bun` start commands, Node's otherwise, with Bun
|
|
115
|
+
* and node-gyp added for a Node app whose package manager is Bun.
|
|
116
|
+
*/
|
|
84
117
|
export function generateDockerfile(options) {
|
|
85
118
|
const { config, hasTypeScript } = options;
|
|
86
119
|
const pm = options.packageManager ?? 'pnpm';
|
|
87
|
-
const
|
|
88
|
-
const
|
|
120
|
+
const bun = options.startCommand ? options.startCommand[0] === 'bun' : pm === 'bun';
|
|
121
|
+
const image = bun ? BUN_IMAGE : NODE_IMAGE;
|
|
122
|
+
const user = bun ? 'bun' : 'node';
|
|
123
|
+
const runtime = bun ? 'bun' : 'node';
|
|
124
|
+
const bunOnNode = pm === 'bun' && !bun;
|
|
89
125
|
const steps = installSteps(options, pm);
|
|
90
126
|
const startCommand = options.startCommand ?? [
|
|
91
127
|
runtime,
|
|
@@ -93,22 +129,43 @@ export function generateDockerfile(options) {
|
|
|
93
129
|
];
|
|
94
130
|
const http = servesHttp(config);
|
|
95
131
|
const port = config.port ?? 3000;
|
|
132
|
+
const pnpResolver = options.plugAndPlay && pm === 'yarn-berry' && !bun && startCommand[0] !== 'yarn'
|
|
133
|
+
? `NODE_OPTIONS="--require /app/.pnp.cjs${options.plugAndPlay.esmLoader ? ' --experimental-loader file:///app/.pnp.loader.mjs' : ''}"`
|
|
134
|
+
: undefined;
|
|
96
135
|
const env = [
|
|
97
136
|
'ENV NODE_ENV=production',
|
|
98
137
|
http ? `PORT=${port}` : undefined,
|
|
99
138
|
startCommand[0] === 'npm' ? 'NPM_CONFIG_UPDATE_NOTIFIER=false' : undefined,
|
|
139
|
+
pnpResolver,
|
|
100
140
|
]
|
|
101
141
|
.filter((entry) => entry !== undefined)
|
|
102
142
|
.join(' ');
|
|
103
|
-
const
|
|
143
|
+
const corepack = pm === 'pnpm' || pm === 'yarn' || pm === 'yarn-berry';
|
|
144
|
+
const base = [
|
|
145
|
+
`FROM ${image} AS base`,
|
|
146
|
+
'WORKDIR /app',
|
|
147
|
+
corepack ? 'RUN corepack enable' : undefined,
|
|
148
|
+
bunOnNode ? `COPY --from=${BUN_IMAGE} /usr/local/bin/bun /usr/local/bin/bun` : undefined,
|
|
149
|
+
];
|
|
150
|
+
const runtimeStage = (copy) => [
|
|
151
|
+
'FROM base AS runtime',
|
|
152
|
+
'RUN apk add --no-cache tini && chown ' + user + ':' + user + ' /app',
|
|
104
153
|
env,
|
|
154
|
+
...copy,
|
|
155
|
+
`USER ${user}`,
|
|
105
156
|
http ? `EXPOSE ${port}` : undefined,
|
|
106
157
|
http ? healthcheck(config, port) : undefined,
|
|
158
|
+
'ENTRYPOINT ["/sbin/tini", "--"]',
|
|
107
159
|
`CMD ${JSON.stringify(startCommand)}`,
|
|
108
160
|
];
|
|
109
161
|
if (!hasTypeScript) {
|
|
110
|
-
return lines(
|
|
162
|
+
return lines('# syntax=docker/dockerfile:1', ...base, '', 'FROM base AS deps', ...steps.copy, steps.installProd, '', ...runtimeStage([
|
|
163
|
+
`COPY --from=deps --chown=${user}:${user} /app ./`,
|
|
164
|
+
`COPY --chown=${user}:${user} . .`,
|
|
165
|
+
]));
|
|
111
166
|
}
|
|
112
|
-
return lines(
|
|
167
|
+
return lines('# syntax=docker/dockerfile:1', ...base, '', 'FROM base AS builder', bunOnNode
|
|
168
|
+
? 'RUN apk add --no-cache python3 make g++ && npm install -g node-gyp'
|
|
169
|
+
: 'RUN apk add --no-cache python3 make g++', ...steps.copy, steps.install, 'COPY . .', options.hasBuildScript === false ? undefined : steps.build, steps.prune, '', ...runtimeStage([`COPY --from=builder --chown=${user}:${user} /app ./`]));
|
|
113
170
|
}
|
|
114
171
|
//# sourceMappingURL=dockerfile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../src/templates/dockerfile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../src/templates/dockerfile.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/deploy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "One-command deployment for Cogitator agents",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cogitator",
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cogitator-ai/types": "0.
|
|
28
|
-
"@cogitator-ai/config": "0.12.
|
|
27
|
+
"@cogitator-ai/types": "0.37.0",
|
|
28
|
+
"@cogitator-ai/config": "0.12.1",
|
|
29
|
+
"yaml": "^2.9.1"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@types/node": "^22.20.4",
|