@cogitator-ai/deploy 0.1.8 → 0.2.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.
Files changed (52) hide show
  1. package/README.md +84 -47
  2. package/dist/analyzer.d.ts +17 -3
  3. package/dist/analyzer.d.ts.map +1 -1
  4. package/dist/analyzer.js +118 -34
  5. package/dist/analyzer.js.map +1 -1
  6. package/dist/deployer.d.ts +12 -4
  7. package/dist/deployer.d.ts.map +1 -1
  8. package/dist/deployer.js +26 -13
  9. package/dist/deployer.js.map +1 -1
  10. package/dist/generator.d.ts +7 -0
  11. package/dist/generator.d.ts.map +1 -1
  12. package/dist/generator.js +6 -7
  13. package/dist/generator.js.map +1 -1
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/providers/artifacts.d.ts +9 -0
  17. package/dist/providers/artifacts.d.ts.map +1 -0
  18. package/dist/providers/artifacts.js +32 -0
  19. package/dist/providers/artifacts.js.map +1 -0
  20. package/dist/providers/docker.d.ts +5 -4
  21. package/dist/providers/docker.d.ts.map +1 -1
  22. package/dist/providers/docker.js +82 -48
  23. package/dist/providers/docker.js.map +1 -1
  24. package/dist/providers/fly.d.ts +9 -2
  25. package/dist/providers/fly.d.ts.map +1 -1
  26. package/dist/providers/fly.js +120 -59
  27. package/dist/providers/fly.js.map +1 -1
  28. package/dist/templates/docker-compose.d.ts +3 -0
  29. package/dist/templates/docker-compose.d.ts.map +1 -1
  30. package/dist/templates/docker-compose.js +38 -10
  31. package/dist/templates/docker-compose.js.map +1 -1
  32. package/dist/templates/dockerfile.d.ts +8 -3
  33. package/dist/templates/dockerfile.d.ts.map +1 -1
  34. package/dist/templates/dockerfile.js +59 -17
  35. package/dist/templates/dockerfile.js.map +1 -1
  36. package/dist/templates/fly-toml.d.ts +1 -0
  37. package/dist/templates/fly-toml.d.ts.map +1 -1
  38. package/dist/templates/fly-toml.js +21 -12
  39. package/dist/templates/fly-toml.js.map +1 -1
  40. package/dist/utils/env.d.ts +7 -0
  41. package/dist/utils/env.d.ts.map +1 -0
  42. package/dist/utils/env.js +21 -0
  43. package/dist/utils/env.js.map +1 -0
  44. package/dist/utils/exec.d.ts +15 -3
  45. package/dist/utils/exec.d.ts.map +1 -1
  46. package/dist/utils/exec.js +50 -14
  47. package/dist/utils/exec.js.map +1 -1
  48. package/dist/utils/registry-auth.d.ts +7 -0
  49. package/dist/utils/registry-auth.d.ts.map +1 -0
  50. package/dist/utils/registry-auth.js +71 -0
  51. package/dist/utils/registry-auth.js.map +1 -0
  52. package/package.json +4 -4
@@ -1,7 +1,14 @@
1
1
  import type { DeployConfig, GeneratedArtifacts } from '@cogitator-ai/types';
2
+ import { type DockerfilePackageManager } from './templates/dockerfile.js';
2
3
  export interface GeneratorOptions {
3
4
  hasTypeScript: boolean;
5
+ packageManager?: DockerfilePackageManager;
6
+ hasLockfile?: boolean;
7
+ hasBuildScript?: boolean;
8
+ startCommand?: string[];
4
9
  }
10
+ export declare const ARTIFACTS_DIR = ".cogitator";
11
+ export declare const DOCKERIGNORE = "node_modules\ndist\n.git\n.gitignore\n.env\n.env.*\n*.md\n.cogitator\n";
5
12
  export declare class ArtifactGenerator {
6
13
  generate(config: DeployConfig, options: GeneratorOptions): GeneratedArtifacts;
7
14
  }
@@ -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;AAK/F,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB;AAYD,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,kBAAkB;CA8B9E"}
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,EAAsB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAI9F,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;CACzB;AAED,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,YAAY,2EAQxB,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,kBAAkB;CA4B9E"}
package/dist/generator.js CHANGED
@@ -1,7 +1,8 @@
1
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
- const DOCKERIGNORE = `node_modules
4
+ export const ARTIFACTS_DIR = '.cogitator';
5
+ export const DOCKERIGNORE = `node_modules
5
6
  dist
6
7
  .git
7
8
  .gitignore
@@ -16,12 +17,10 @@ export class ArtifactGenerator {
16
17
  const target = config.target ?? 'docker';
17
18
  files.push({
18
19
  path: 'Dockerfile',
19
- content: generateDockerfile({ config, hasTypeScript: options.hasTypeScript }),
20
- });
21
- files.push({
22
- path: '.dockerignore',
23
- content: DOCKERIGNORE,
20
+ content: generateDockerfile({ config, ...options }),
24
21
  });
22
+ files.push({ path: '.dockerignore', content: DOCKERIGNORE });
23
+ files.push({ path: 'Dockerfile.dockerignore', content: DOCKERIGNORE });
25
24
  if (target === 'docker') {
26
25
  files.push({
27
26
  path: 'docker-compose.prod.yml',
@@ -34,7 +33,7 @@ export class ArtifactGenerator {
34
33
  content: generateFlyToml(config),
35
34
  });
36
35
  }
37
- return { files, outputDir: '.cogitator' };
36
+ return { files, outputDir: ARTIFACTS_DIR };
38
37
  }
39
38
  }
40
39
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,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;QAEzC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;SAC9E,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QAEH,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,YAAY,EAAE,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAiC,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAU1D,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;CAQ3B,CAAC;AAEF,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;QAEzC,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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { ProjectAnalyzer } from './analyzer.js';
2
- export type { AnalyzerResult } from './analyzer.js';
2
+ export type { AnalyzerResult, PackageManager } from './analyzer.js';
3
3
  export { ArtifactGenerator } from './generator.js';
4
4
  export type { GeneratorOptions } from './generator.js';
5
5
  export { Deployer } from './deployer.js';
6
- export type { DeployOptions, DeployPlan } from './deployer.js';
6
+ export type { DeployOptions, DeployPlan, DeployTargetName } from './deployer.js';
7
7
  export { DockerProvider } from './providers/docker.js';
8
8
  export { FlyProvider } from './providers/fly.js';
9
9
  export type { DeployProvider } from './providers/base.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { GeneratedArtifacts, PreflightCheck } from '@cogitator-ai/types';
2
+ /**
3
+ * Write generated artifacts into the project's artifacts directory. A root
4
+ * `.dockerignore` is created when the project has none, so `.env` files and
5
+ * `node_modules` never end up in the image build context.
6
+ */
7
+ export declare function writeArtifacts(projectDir: string, artifacts: GeneratedArtifacts): string;
8
+ export declare function secretChecks(secrets: readonly string[], env: NodeJS.ProcessEnv): PreflightCheck[];
9
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/providers/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK9E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAcxF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,CAUjG"}
@@ -0,0 +1,32 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { DOCKERIGNORE } from '../generator.js';
4
+ /**
5
+ * Write generated artifacts into the project's artifacts directory. A root
6
+ * `.dockerignore` is created when the project has none, so `.env` files and
7
+ * `node_modules` never end up in the image build context.
8
+ */
9
+ export function writeArtifacts(projectDir, artifacts) {
10
+ const outputDir = join(projectDir, artifacts.outputDir);
11
+ mkdirSync(outputDir, { recursive: true });
12
+ for (const file of artifacts.files) {
13
+ writeFileSync(join(outputDir, file.path), file.content);
14
+ }
15
+ const rootIgnore = join(projectDir, '.dockerignore');
16
+ if (!existsSync(rootIgnore)) {
17
+ writeFileSync(rootIgnore, DOCKERIGNORE);
18
+ }
19
+ return outputDir;
20
+ }
21
+ export function secretChecks(secrets, env) {
22
+ return secrets.map((secret) => {
23
+ const isSet = !!env[secret];
24
+ return {
25
+ name: `Secret: ${secret}`,
26
+ passed: isSet,
27
+ message: isSet ? `${secret} is set` : `${secret} is not set`,
28
+ fix: isSet ? undefined : `Add ${secret} to .env or export ${secret}=<value>`,
29
+ };
30
+ });
31
+ }
32
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/providers/artifacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,SAA6B;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA0B,EAAE,GAAsB;IAC7E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,WAAW,MAAM,EAAE;YACzB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,aAAa;YAC5D,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,sBAAsB,MAAM,UAAU;SAC7E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -2,10 +2,11 @@ import type { DeployConfig, DeployResult, DeployStatus, PreflightResult, Generat
2
2
  import type { DeployProvider } from './base.js';
3
3
  export declare class DockerProvider implements DeployProvider {
4
4
  readonly name = "docker";
5
- preflight(config: DeployConfig, _projectDir: string): Promise<PreflightResult>;
6
- generate(config: DeployConfig, _projectDir: string): Promise<GeneratedArtifacts>;
5
+ private composeArgs;
6
+ preflight(config: DeployConfig, projectDir: string): Promise<PreflightResult>;
7
+ generate(config: DeployConfig, projectDir: string): Promise<GeneratedArtifacts>;
7
8
  deploy(config: DeployConfig, artifacts: GeneratedArtifacts, projectDir: string): Promise<DeployResult>;
8
- status(_config: DeployConfig, projectDir: string): Promise<DeployStatus>;
9
- destroy(_config: DeployConfig, projectDir: string): Promise<void>;
9
+ status(config: DeployConfig, projectDir: string): Promise<DeployStatus>;
10
+ destroy(config: DeployConfig, projectDir: string): Promise<void>;
10
11
  }
11
12
  //# sourceMappingURL=docker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/providers/docker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,IAAI,YAAY;IAEnB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmD9E,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMhF,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC;IAsClB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IASxE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxE"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/providers/docker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAahD,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,WAAW;IAWb,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuD7E,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM/E,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC;IA0ClB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBvE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYvE"}
@@ -1,12 +1,28 @@
1
- import { exec, isCommandAvailable } from '../utils/exec.js';
2
- import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
1
+ import { run, isCommandAvailable } from '../utils/exec.js';
2
+ import { resolveDeployEnv, sanitizeName } from '../utils/env.js';
3
+ import { isRegistryAuthenticated } from '../utils/registry-auth.js';
4
+ import { imageTag } from '../templates/docker-compose.js';
5
+ import { ARTIFACTS_DIR, ArtifactGenerator } from '../generator.js';
6
+ import { secretChecks, writeArtifacts } from './artifacts.js';
7
+ import { existsSync } from 'node:fs';
3
8
  import { join } from 'node:path';
4
- const PREFLIGHT_TIMEOUT_MS = 3_000;
9
+ const PREFLIGHT_TIMEOUT_MS = 10_000;
10
+ const COMPOSE_FILE = 'docker-compose.prod.yml';
5
11
  export class DockerProvider {
6
12
  name = 'docker';
7
- async preflight(config, _projectDir) {
13
+ composeArgs(config, projectDir, ...rest) {
14
+ return [
15
+ 'compose',
16
+ '-p',
17
+ sanitizeName(config.image ?? 'cogitator-app'),
18
+ '-f',
19
+ join(projectDir, ARTIFACTS_DIR, COMPOSE_FILE),
20
+ ...rest,
21
+ ];
22
+ }
23
+ async preflight(config, projectDir) {
8
24
  const checks = [];
9
- const dockerAvailable = isCommandAvailable('docker', PREFLIGHT_TIMEOUT_MS);
25
+ const dockerAvailable = isCommandAvailable('docker');
10
26
  checks.push({
11
27
  name: 'Docker installed',
12
28
  passed: dockerAvailable,
@@ -14,87 +30,105 @@ export class DockerProvider {
14
30
  fix: dockerAvailable ? undefined : 'Install Docker: https://docs.docker.com/get-docker/',
15
31
  });
16
32
  if (dockerAvailable) {
17
- const daemonRunning = exec('docker info', { timeout: PREFLIGHT_TIMEOUT_MS }).success;
33
+ const daemonRunning = run('docker', ['info', '--format', '{{.ServerVersion}}'], {
34
+ timeout: PREFLIGHT_TIMEOUT_MS,
35
+ }).success;
18
36
  checks.push({
19
37
  name: 'Docker daemon running',
20
38
  passed: daemonRunning,
21
39
  message: daemonRunning ? 'Docker daemon is running' : 'Docker daemon is not running',
22
40
  fix: daemonRunning ? undefined : 'Start Docker Desktop or run: sudo systemctl start docker',
23
41
  });
24
- }
25
- if (config.registry) {
26
- const loginCheck = exec(`docker login ${config.registry} --get-login`, {
42
+ const composeAvailable = run('docker', ['compose', 'version'], {
27
43
  timeout: PREFLIGHT_TIMEOUT_MS,
44
+ }).success;
45
+ checks.push({
46
+ name: 'Docker Compose available',
47
+ passed: composeAvailable,
48
+ message: composeAvailable
49
+ ? 'Docker Compose v2 is available'
50
+ : 'Docker Compose v2 plugin is not available',
51
+ fix: composeAvailable ? undefined : 'Install it: https://docs.docker.com/compose/install/',
28
52
  });
53
+ }
54
+ if (config.registry) {
55
+ const authenticated = isRegistryAuthenticated(config.registry);
29
56
  checks.push({
30
57
  name: 'Registry authentication',
31
- passed: loginCheck.success,
32
- message: loginCheck.success
58
+ passed: authenticated,
59
+ message: authenticated
33
60
  ? `Authenticated with ${config.registry}`
34
61
  : `Not authenticated with ${config.registry}`,
35
- fix: loginCheck.success ? undefined : `Run: docker login ${config.registry}`,
36
- });
37
- }
38
- for (const secret of config.secrets ?? []) {
39
- const isSet = !!process.env[secret];
40
- checks.push({
41
- name: `Secret: ${secret}`,
42
- passed: isSet,
43
- message: isSet ? `${secret} is set` : `${secret} is not set`,
44
- fix: isSet ? undefined : `Set environment variable: export ${secret}=<value>`,
62
+ fix: authenticated ? undefined : `Run: docker login ${config.registry.split('/')[0]}`,
45
63
  });
46
64
  }
65
+ checks.push(...secretChecks(config.secrets ?? [], resolveDeployEnv(projectDir)));
47
66
  return {
48
67
  checks,
49
68
  passed: checks.every((c) => c.passed),
50
69
  };
51
70
  }
52
- async generate(config, _projectDir) {
53
- const { ArtifactGenerator } = await import('../generator.js');
54
- const generator = new ArtifactGenerator();
55
- return generator.generate(config, { hasTypeScript: true });
71
+ async generate(config, projectDir) {
72
+ return new ArtifactGenerator().generate(config, {
73
+ hasTypeScript: existsSync(join(projectDir, 'tsconfig.json')),
74
+ });
56
75
  }
57
76
  async deploy(config, artifacts, projectDir) {
58
- const outputDir = join(projectDir, artifacts.outputDir);
59
- if (!existsSync(outputDir)) {
60
- mkdirSync(outputDir, { recursive: true });
61
- }
62
- for (const file of artifacts.files) {
63
- writeFileSync(join(outputDir, file.path), file.content);
64
- }
65
- const image = config.image ?? 'cogitator-app';
66
- const tag = config.registry ? `${config.registry}/${image}:latest` : `${image}:latest`;
67
- const buildResult = exec(`docker build -f ${join(outputDir, 'Dockerfile')} -t ${tag} ${projectDir}`, { cwd: projectDir });
77
+ const outputDir = writeArtifacts(projectDir, artifacts);
78
+ const env = resolveDeployEnv(projectDir);
79
+ const tag = imageTag(config);
80
+ const buildResult = run('docker', ['build', '-f', join(outputDir, 'Dockerfile'), '-t', tag, projectDir], { cwd: projectDir, env });
68
81
  if (!buildResult.success) {
69
82
  return { success: false, error: `Docker build failed: ${buildResult.error}` };
70
83
  }
71
84
  if (config.registry) {
72
- const pushResult = exec(`docker push ${tag}`);
85
+ const pushResult = run('docker', ['push', tag], { env });
73
86
  if (!pushResult.success) {
74
87
  return { success: false, error: `Docker push failed: ${pushResult.error}` };
75
88
  }
76
89
  }
90
+ const upResult = run('docker', this.composeArgs(config, projectDir, 'up', '-d', '--no-build'), {
91
+ cwd: projectDir,
92
+ env,
93
+ });
94
+ if (!upResult.success) {
95
+ return { success: false, error: `docker compose up failed: ${upResult.error}` };
96
+ }
97
+ const port = config.port ?? 3000;
98
+ const healthPath = config.health?.path ?? '/health';
99
+ const url = `http://localhost:${port}`;
77
100
  return {
78
101
  success: true,
102
+ url,
79
103
  endpoints: {
80
- api: `http://localhost:${config.port ?? 3000}`,
81
- health: `http://localhost:${config.port ?? 3000}/health`,
104
+ api: url,
105
+ health: `${url}${healthPath.startsWith('/') ? healthPath : `/${healthPath}`}`,
82
106
  },
83
107
  };
84
108
  }
85
- async status(_config, projectDir) {
86
- const composePath = join(projectDir, '.cogitator', 'docker-compose.prod.yml');
87
- if (!existsSync(composePath))
109
+ async status(config, projectDir) {
110
+ if (!existsSync(join(projectDir, ARTIFACTS_DIR, COMPOSE_FILE)))
111
+ return { running: false };
112
+ const result = run('docker', this.composeArgs(config, projectDir, 'ps', '--services', '--filter', 'status=running'), { cwd: projectDir, env: resolveDeployEnv(projectDir) });
113
+ if (!result.success)
88
114
  return { running: false };
89
- const result = exec(`docker-compose -f ${composePath} ps --services --filter status=running`, {
115
+ const services = result.output.split('\n').filter((line) => line.trim().length > 0);
116
+ return {
117
+ running: services.includes('app'),
118
+ instances: services.includes('app') ? 1 : 0,
119
+ url: services.includes('app') ? `http://localhost:${config.port ?? 3000}` : undefined,
120
+ };
121
+ }
122
+ async destroy(config, projectDir) {
123
+ if (!existsSync(join(projectDir, ARTIFACTS_DIR, COMPOSE_FILE))) {
124
+ throw new Error('No docker deployment found (missing .cogitator/docker-compose.prod.yml)');
125
+ }
126
+ const result = run('docker', this.composeArgs(config, projectDir, 'down'), {
90
127
  cwd: projectDir,
128
+ env: resolveDeployEnv(projectDir),
91
129
  });
92
- return { running: result.success && result.output.trim().length > 0 };
93
- }
94
- async destroy(_config, projectDir) {
95
- const composePath = join(projectDir, '.cogitator', 'docker-compose.prod.yml');
96
- if (existsSync(composePath)) {
97
- exec(`docker-compose -f ${composePath} down -v`, { cwd: projectDir });
130
+ if (!result.success) {
131
+ throw new Error(`docker compose down failed: ${result.error}`);
98
132
  }
99
133
  }
100
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/providers/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/providers/docker.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,16 @@
1
1
  import type { DeployConfig, DeployResult, DeployStatus, PreflightResult, GeneratedArtifacts } from '@cogitator-ai/types';
2
2
  import type { DeployProvider } from './base.js';
3
+ export declare function resolveFlyBinary(): string | null;
4
+ export declare function formatSecretsForImport(secrets: readonly string[], env: NodeJS.ProcessEnv): {
5
+ payload: string;
6
+ skipped: string[];
7
+ };
3
8
  export declare class FlyProvider implements DeployProvider {
4
9
  readonly name = "fly";
5
- preflight(config: DeployConfig, _projectDir: string): Promise<PreflightResult>;
6
- generate(config: DeployConfig, _projectDir: string): Promise<GeneratedArtifacts>;
10
+ private fly;
11
+ private appName;
12
+ preflight(config: DeployConfig, projectDir: string): Promise<PreflightResult>;
13
+ generate(config: DeployConfig, projectDir: string): Promise<GeneratedArtifacts>;
7
14
  deploy(config: DeployConfig, artifacts: GeneratedArtifacts, projectDir: string): Promise<DeployResult>;
8
15
  status(config: DeployConfig, projectDir: string): Promise<DeployStatus>;
9
16
  destroy(config: DeployConfig, projectDir: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../src/providers/fly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,SAAS;IAEhB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAgD9E,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMhF,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC;IA2DlB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAcvE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIvE"}
1
+ {"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../src/providers/fly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAchD,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAaxC;AAED,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,OAAO;IAIT,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAsC7E,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM/E,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC;IA0ElB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BvE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvE"}