@itznexus/itznexus-cli 1.142.0 → 1.144.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 (79) hide show
  1. package/dist/commands/agents/project-stack.d.ts +2 -0
  2. package/dist/commands/agents/project-stack.js +101 -0
  3. package/dist/commands/agents/project-stack.js.map +1 -0
  4. package/dist/commands/api/outreach-catalog.d.ts +2 -0
  5. package/dist/commands/api/outreach-catalog.js +167 -0
  6. package/dist/commands/api/outreach-catalog.js.map +1 -0
  7. package/dist/commands/api/outreach-companies.d.ts +2 -0
  8. package/dist/commands/api/outreach-companies.js +93 -0
  9. package/dist/commands/api/outreach-companies.js.map +1 -0
  10. package/dist/commands/api/outreach-company-writes.d.ts +2 -0
  11. package/dist/commands/api/outreach-company-writes.js +101 -0
  12. package/dist/commands/api/outreach-company-writes.js.map +1 -0
  13. package/dist/commands/api/outreach-enrollment-writes.d.ts +2 -0
  14. package/dist/commands/api/outreach-enrollment-writes.js +144 -0
  15. package/dist/commands/api/outreach-enrollment-writes.js.map +1 -0
  16. package/dist/commands/api/outreach-enrollments.d.ts +2 -0
  17. package/dist/commands/api/outreach-enrollments.js +92 -0
  18. package/dist/commands/api/outreach-enrollments.js.map +1 -0
  19. package/dist/commands/api/outreach-prospect-writes.d.ts +2 -0
  20. package/dist/commands/api/outreach-prospect-writes.js +139 -0
  21. package/dist/commands/api/outreach-prospect-writes.js.map +1 -0
  22. package/dist/commands/api/outreach-prospects.d.ts +2 -0
  23. package/dist/commands/api/outreach-prospects.js +96 -0
  24. package/dist/commands/api/outreach-prospects.js.map +1 -0
  25. package/dist/commands/api/outreach-settings.d.ts +2 -0
  26. package/dist/commands/api/outreach-settings.js +193 -0
  27. package/dist/commands/api/outreach-settings.js.map +1 -0
  28. package/dist/commands/api/outreach-shared.d.ts +24 -0
  29. package/dist/commands/api/outreach-shared.js +34 -0
  30. package/dist/commands/api/outreach-shared.js.map +1 -0
  31. package/dist/commands/api/outreach-signals.d.ts +2 -0
  32. package/dist/commands/api/outreach-signals.js +80 -0
  33. package/dist/commands/api/outreach-signals.js.map +1 -0
  34. package/dist/commands/api/outreach.d.ts +2 -0
  35. package/dist/commands/api/outreach.js +21 -0
  36. package/dist/commands/api/outreach.js.map +1 -0
  37. package/dist/commands/api/projects.js +2 -0
  38. package/dist/commands/api/projects.js.map +1 -1
  39. package/dist/commands/api/seo-backlinks.js +1 -1
  40. package/dist/commands/api/seo-backlinks.js.map +1 -1
  41. package/dist/commands/api/seo-catalog.js +1 -1
  42. package/dist/commands/api/seo-catalog.js.map +1 -1
  43. package/dist/commands/api/seo-changes.js +1 -1
  44. package/dist/commands/api/seo-changes.js.map +1 -1
  45. package/dist/commands/api/seo-data.js +1 -1
  46. package/dist/commands/api/seo-data.js.map +1 -1
  47. package/dist/commands/api/seo-keyword-writes.js +1 -1
  48. package/dist/commands/api/seo-keyword-writes.js.map +1 -1
  49. package/dist/commands/api/seo-keywords.js +1 -1
  50. package/dist/commands/api/seo-keywords.js.map +1 -1
  51. package/dist/commands/api/seo-offers.js +1 -1
  52. package/dist/commands/api/seo-offers.js.map +1 -1
  53. package/dist/commands/api/seo-page-writes.js +1 -1
  54. package/dist/commands/api/seo-page-writes.js.map +1 -1
  55. package/dist/commands/api/seo-pages.js +1 -1
  56. package/dist/commands/api/seo-pages.js.map +1 -1
  57. package/dist/commands/api/seo-settings.js +1 -1
  58. package/dist/commands/api/seo-settings.js.map +1 -1
  59. package/dist/commands/api/seo-site.js +1 -1
  60. package/dist/commands/api/seo-site.js.map +1 -1
  61. package/dist/index.js +5 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/{commands/api/seo-shared.d.ts → lib/command-helpers.d.ts} +1 -1
  64. package/dist/{commands/api/seo-shared.js → lib/command-helpers.js} +8 -8
  65. package/dist/lib/command-helpers.js.map +1 -0
  66. package/dist/lib/stack/driver.d.ts +14 -0
  67. package/dist/lib/stack/driver.js +228 -0
  68. package/dist/lib/stack/driver.js.map +1 -0
  69. package/dist/lib/stack/manifest.d.ts +28 -0
  70. package/dist/lib/stack/manifest.js +182 -0
  71. package/dist/lib/stack/manifest.js.map +1 -0
  72. package/dist/lib/stack/processes.d.ts +11 -0
  73. package/dist/lib/stack/processes.js +139 -0
  74. package/dist/lib/stack/processes.js.map +1 -0
  75. package/dist/lib/stack/registry.d.ts +24 -0
  76. package/dist/lib/stack/registry.js +37 -0
  77. package/dist/lib/stack/registry.js.map +1 -0
  78. package/package.json +3 -2
  79. package/dist/commands/api/seo-shared.js.map +0 -1
@@ -2,7 +2,7 @@ import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import { api } from "../../lib/api.js";
4
4
  import { handleError, printList } from "../../lib/format.js";
5
- import { compact, done, printJson, toInt } from "./seo-shared.js";
5
+ import { compact, done, printJson, toInt, } from "../../lib/command-helpers.js";
6
6
  function printSettings(data) {
7
7
  for (const [key, value] of Object.entries(data.thresholds)) {
8
8
  const changed = data.defaults[key] !== value;
@@ -1 +1 @@
1
- {"version":3,"file":"seo-settings.js","sourceRoot":"","sources":["../../../src/commands/api/seo-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seo-settings.js","sourceRoot":"","sources":["../../../src/commands/api/seo-settings.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import { api } from "../../lib/api.js";
4
4
  import { handleError } from "../../lib/format.js";
5
- import { done, printJson, qs } from "./seo-shared.js";
5
+ import { done, printJson, qs, } from "../../lib/command-helpers.js";
6
6
  const sectionList = new Command("list")
7
7
  .description("List shared sections (reusable blocks such as process or FAQ)")
8
8
  .option("--language <lang>", "en | fr")
@@ -1 +1 @@
1
- {"version":3,"file":"seo-site.js","sourceRoot":"","sources":["../../../src/commands/api/seo-site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seo-site.js","sourceRoot":"","sources":["../../../src/commands/api/seo-site.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -47,6 +47,7 @@ import { sprintCommand } from "./commands/api/sprints.js";
47
47
  import { taskCommand } from "./commands/api/tasks.js";
48
48
  import { taskTagsCommand } from "./commands/api/task-tags.js";
49
49
  import { seoCommand } from "./commands/api/seo.js";
50
+ import { outreachCommand } from "./commands/api/outreach.js";
50
51
  import { upworkJobNotificationCommand } from "./commands/api/upwork-job-notifications.js";
51
52
  import { upworkProposalSubmissionCommand } from "./commands/api/upwork-proposal-submissions.js";
52
53
  import { upworkDemoCommand } from "./commands/api/upwork-demos.js";
@@ -100,6 +101,9 @@ CORE
100
101
  SEO
101
102
  seo SEO section: settings, offers, keywords, pages, rankings, change log, backlinks
102
103
 
104
+ OUTREACH
105
+ outreach Outreach section: settings, sequences, signals, companies, prospects, enrollments
106
+
103
107
  CONTENT
104
108
  page Manage pages (docs/notes)
105
109
  file Manage files
@@ -187,6 +191,7 @@ program.addCommand(sprintCommand);
187
191
  program.addCommand(taskCommand);
188
192
  program.addCommand(taskTagsCommand);
189
193
  program.addCommand(seoCommand);
194
+ program.addCommand(outreachCommand);
190
195
  program.addCommand(interactionCommand);
191
196
  program.addCommand(interactionGroupCommand);
192
197
  program.addCommand(slackAccountCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export type JsonOpt = {
3
3
  };
4
4
  export declare function readJsonFile(path: string): unknown;
5
5
  export declare function readJsonObject(path: string): Record<string, unknown>;
6
- export declare function readJsonRows(path: string): unknown[];
6
+ export declare function readJsonRows(path: string, key?: string): unknown[];
7
7
  export declare function qs(params: Record<string, string | number | undefined>): string;
8
8
  export declare function nullable(value: string | undefined): string | null | undefined;
9
9
  export declare function toInt(value: string, name: string): number;
@@ -10,17 +10,17 @@ export function readJsonObject(path) {
10
10
  }
11
11
  return value;
12
12
  }
13
- // Accepts a bare array or an object carrying it under `rows`.
14
- export function readJsonRows(path) {
13
+ // Accepts a bare array or an object carrying it under `key`.
14
+ export function readJsonRows(path, key = "rows") {
15
15
  const value = readJsonFile(path);
16
16
  if (Array.isArray(value))
17
17
  return value;
18
- if (typeof value === "object" &&
19
- value !== null &&
20
- Array.isArray(value.rows)) {
21
- return value.rows;
18
+ if (typeof value === "object" && value !== null) {
19
+ const rows = value[key];
20
+ if (Array.isArray(rows))
21
+ return rows;
22
22
  }
23
- throw new Error(`${path} must hold a JSON array or { "rows": [...] }`);
23
+ throw new Error(`${path} must hold a JSON array or { "${key}": [...] }`);
24
24
  }
25
25
  export function qs(params) {
26
26
  const search = new URLSearchParams();
@@ -74,4 +74,4 @@ export function done(data, opts, message) {
74
74
  export function printJson(data) {
75
75
  console.log(JSON.stringify(data, null, 2));
76
76
  }
77
- //# sourceMappingURL=seo-shared.js.map
77
+ //# sourceMappingURL=command-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../src/lib/command-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type StackService } from "./manifest.js";
2
+ export type StatusRow = {
3
+ name: string;
4
+ kind: StackService["kind"];
5
+ pid: number | null;
6
+ alive: boolean;
7
+ ready: boolean | null;
8
+ log: string | null;
9
+ };
10
+ export declare function upStack(root: string): Promise<StatusRow[]>;
11
+ export declare function downStack(root: string, wipe: boolean): Promise<boolean>;
12
+ export declare function stackStatus(root: string): Promise<StatusRow[]>;
13
+ export declare function restartService(root: string, name: string): Promise<void>;
14
+ export declare function serviceLog(root: string, name: string, lines: number): string;
@@ -0,0 +1,228 @@
1
+ import path from "node:path";
2
+ import { setTimeout as sleep } from "node:timers/promises";
3
+ import { readStackManifest, } from "./manifest.js";
4
+ import { alive, composeProjects, gitBranch, hashFile, killGroup, logTail, probeOnce, runStep, spawnDetached, waitReady, } from "./processes.js";
5
+ import { listRecords, logPath, readRecord, removeRecord, writeRecord, } from "./registry.js";
6
+ const now = () => new Date().toISOString();
7
+ // Branch of the first service folder that is a git clone; every clone of a
8
+ // project sits on the same branch during a batch, so one is enough.
9
+ function stackBranch(manifest) {
10
+ for (const s of manifest.services) {
11
+ const branch = gitBranch(s.cwd);
12
+ if (branch)
13
+ return branch;
14
+ }
15
+ return null;
16
+ }
17
+ // Installs run first, once per folder and lockfile, only when the lockfile
18
+ // moved since the last install; a folder installed this way gets its start
19
+ // services restarted below, since the running process holds the old modules.
20
+ function runInstalls(manifest, rec) {
21
+ const refreshed = new Set();
22
+ const seen = new Set();
23
+ for (const s of manifest.services) {
24
+ if (!s.install || !s.lockfile)
25
+ continue;
26
+ const key = `${s.cwd}::${s.lockfile}`;
27
+ if (seen.has(key))
28
+ continue;
29
+ seen.add(key);
30
+ const hash = hashFile(s.lockfile);
31
+ if (rec.installs[key] === hash)
32
+ continue;
33
+ console.log(`[stack] ${s.name}: lockfile moved, installing in ${path.basename(s.cwd)}`);
34
+ runStep(s.install, s.cwd, manifest.env);
35
+ rec.installs[key] = hash;
36
+ refreshed.add(s.cwd);
37
+ writeRecord(rec);
38
+ }
39
+ return refreshed;
40
+ }
41
+ function tryReadManifest(root) {
42
+ try {
43
+ return readStackManifest(root);
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ // A live process that misses one probe is not dead (a dev server recompiling,
50
+ // a listener mid-restart): three misses in a row are.
51
+ async function stillAnswers(probe) {
52
+ for (let i = 0; i < 3; i++) {
53
+ if (await probeOnce(probe))
54
+ return true;
55
+ await sleep(500);
56
+ }
57
+ return false;
58
+ }
59
+ async function startService(s, rec, env, restart) {
60
+ if (!s.ready)
61
+ throw new Error(`${s.name}: a start service needs a ready probe`);
62
+ const cur = rec.services[s.name];
63
+ const running = cur?.pid !== null && cur?.pid !== undefined && alive(cur.pid);
64
+ if (running && !restart && (await stillAnswers(s.ready)))
65
+ return;
66
+ if (running && cur.pid !== null)
67
+ await killGroup(cur.pid);
68
+ // A probe that already answers with no live pid of ours is a copy running
69
+ // outside the driver (an operator's terminal): never start a second one.
70
+ if (await probeOnce(s.ready)) {
71
+ throw new Error(`${s.name}: already answering on its port from a process the driver did not start; use it or stop it`);
72
+ }
73
+ const log = logPath(rec.slug, s.name);
74
+ const pid = spawnDetached(s.command, s.cwd, log, env);
75
+ rec.services[s.name] = { pid, startedAt: now() };
76
+ // Recorded before the wait, so a crash of the driver mid-up still leaves
77
+ // the pid known to a later down.
78
+ writeRecord(rec);
79
+ try {
80
+ await waitReady(s.ready, s.readyTimeoutMs, s.name, log, pid);
81
+ }
82
+ catch (err) {
83
+ await killGroup(pid);
84
+ rec.services[s.name] = { pid: null, startedAt: now() };
85
+ writeRecord(rec);
86
+ throw err;
87
+ }
88
+ console.log(`[stack] ${s.name}: up (pid ${pid})`);
89
+ }
90
+ export async function upStack(root) {
91
+ const manifest = readStackManifest(root);
92
+ // One stack per machine: another project's stack goes down first.
93
+ for (const other of listRecords()) {
94
+ if (other.slug !== manifest.slug)
95
+ await downRecord(other, true);
96
+ }
97
+ const branch = stackBranch(manifest);
98
+ let rec = readRecord(manifest.slug);
99
+ if (rec && rec.branch !== branch) {
100
+ console.log(`[stack] branch moved from ${rec.branch} to ${branch}: wiping the data`);
101
+ await downRecord(rec, true);
102
+ rec = null;
103
+ }
104
+ rec ??= {
105
+ slug: manifest.slug,
106
+ root,
107
+ branch,
108
+ startedAt: now(),
109
+ lastUsedAt: now(),
110
+ services: {},
111
+ ups: {},
112
+ installs: {},
113
+ composeProjects: [],
114
+ };
115
+ writeRecord(rec);
116
+ const refreshed = runInstalls(manifest, rec);
117
+ for (const s of manifest.services) {
118
+ if (s.kind === "up") {
119
+ const before = composeProjects();
120
+ runStep(s.command, s.cwd, manifest.env);
121
+ const after = composeProjects();
122
+ const added = before && after ? [...after].filter((p) => !before.has(p)) : [];
123
+ for (const p of added) {
124
+ if (!rec.composeProjects.includes(p))
125
+ rec.composeProjects.push(p);
126
+ }
127
+ // Owned when this up made resources appear, or when Docker could not
128
+ // say; a resource that was already there belongs to whoever started it
129
+ // and is left as found on down.
130
+ if (!(s.name in rec.ups)) {
131
+ rec.ups[s.name] = { owned: added.length > 0 || before === null };
132
+ }
133
+ writeRecord(rec);
134
+ if (s.ready)
135
+ await waitReady(s.ready, s.readyTimeoutMs, s.name);
136
+ }
137
+ else if (s.kind === "run") {
138
+ runStep(s.command, s.cwd, manifest.env);
139
+ }
140
+ else {
141
+ await startService(s, rec, manifest.env, refreshed.has(s.cwd));
142
+ }
143
+ }
144
+ rec.lastUsedAt = now();
145
+ writeRecord(rec);
146
+ return stackStatus(root);
147
+ }
148
+ // Takes a recorded stack down from its own manifest when it still reads;
149
+ // without one (folder gone, block removed) only the recorded pids are ended.
150
+ async function downRecord(rec, wipe) {
151
+ const manifest = tryReadManifest(rec.root);
152
+ const ordered = manifest ? [...manifest.services].reverse() : [];
153
+ const env = manifest?.env ?? {};
154
+ for (const s of ordered) {
155
+ if (s.kind === "start") {
156
+ const pid = rec.services[s.name]?.pid;
157
+ if (pid && alive(pid))
158
+ await killGroup(pid);
159
+ rec.services[s.name] = { pid: null, startedAt: now() };
160
+ }
161
+ else if (s.kind === "up") {
162
+ const command = wipe ? (s.wipe ?? s.down) : s.down;
163
+ if (!command || !rec.ups[s.name]?.owned)
164
+ continue;
165
+ try {
166
+ runStep(command, s.cwd, env);
167
+ }
168
+ catch (err) {
169
+ console.error(`[stack] ${s.name}: ${command} failed:`, err);
170
+ }
171
+ }
172
+ }
173
+ // Services the manifest no longer names still hold a pid here.
174
+ for (const r of Object.values(rec.services)) {
175
+ if (r.pid && alive(r.pid))
176
+ await killGroup(r.pid);
177
+ }
178
+ removeRecord(rec.slug);
179
+ console.log(`[stack] ${rec.slug}: down${wipe ? " (data wiped)" : ""}`);
180
+ }
181
+ export async function downStack(root, wipe) {
182
+ const rec = readRecord(path.basename(root));
183
+ if (!rec)
184
+ return false;
185
+ await downRecord(rec, wipe);
186
+ return true;
187
+ }
188
+ export async function stackStatus(root) {
189
+ const manifest = readStackManifest(root);
190
+ const rec = readRecord(manifest.slug);
191
+ const rows = [];
192
+ for (const s of manifest.services) {
193
+ const pid = rec?.services[s.name]?.pid ?? null;
194
+ rows.push({
195
+ name: s.name,
196
+ kind: s.kind,
197
+ pid,
198
+ alive: pid !== null && alive(pid),
199
+ ready: s.ready ? await probeOnce(s.ready) : null,
200
+ log: s.kind === "start" ? logPath(manifest.slug, s.name) : null,
201
+ });
202
+ }
203
+ return rows;
204
+ }
205
+ export async function restartService(root, name) {
206
+ const manifest = readStackManifest(root);
207
+ const rec = readRecord(manifest.slug);
208
+ if (!rec)
209
+ throw new Error(`${manifest.slug}: the stack is not up`);
210
+ const s = manifest.services.find((x) => x.name === name);
211
+ if (!s)
212
+ throw new Error(`unknown service "${name}"`);
213
+ if (s.kind !== "start")
214
+ throw new Error(`${name} is a ${s.kind} step, not a service to restart`);
215
+ await startService(s, rec, manifest.env, true);
216
+ rec.lastUsedAt = now();
217
+ writeRecord(rec);
218
+ }
219
+ export function serviceLog(root, name, lines) {
220
+ const manifest = readStackManifest(root);
221
+ const s = manifest.services.find((x) => x.name === name);
222
+ if (!s)
223
+ throw new Error(`unknown service "${name}"`);
224
+ if (s.kind !== "start")
225
+ throw new Error(`${name} is a ${s.kind} step and keeps no log`);
226
+ return logTail(logPath(manifest.slug, name), lines);
227
+ }
228
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/lib/stack/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare const PROCESS_FILE = "DEVELOPMENT.md";
2
+ export type ReadyProbe = {
3
+ kind: "tcp";
4
+ port: number;
5
+ } | {
6
+ kind: "http";
7
+ url: string;
8
+ };
9
+ export type StackService = {
10
+ name: string;
11
+ cwd: string;
12
+ after: string[];
13
+ kind: "up" | "run" | "start";
14
+ command: string;
15
+ down?: string;
16
+ wipe?: string;
17
+ install?: string;
18
+ lockfile?: string;
19
+ ready?: ReadyProbe;
20
+ readyTimeoutMs: number;
21
+ };
22
+ export type StackManifest = {
23
+ root: string;
24
+ slug: string;
25
+ env: Record<string, string>;
26
+ services: StackService[];
27
+ };
28
+ export declare function readStackManifest(root: string): StackManifest;
@@ -0,0 +1,182 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { parse } from "yaml";
4
+ // The stack manifest is the fenced ```yaml stack block of the project's
5
+ // DEVELOPMENT.md: the dev process already lives there, so no second file kind
6
+ // reaches the project folder. A project without the block has no managed
7
+ // stack, and sessions keep booting and tearing down per run.
8
+ export const PROCESS_FILE = "DEVELOPMENT.md";
9
+ const BLOCK = /```(?:yaml|yml)[ \t]+stack[ \t]*\r?\n([\s\S]*?)```/;
10
+ const SERVICE_KEYS = new Set([
11
+ "name",
12
+ "cwd",
13
+ "after",
14
+ "up",
15
+ "down",
16
+ "wipe",
17
+ "run",
18
+ "start",
19
+ "install",
20
+ "lockfile",
21
+ "ready",
22
+ "readyTimeoutMs",
23
+ ]);
24
+ const NAME = /^[a-z0-9][a-z0-9-]*$/;
25
+ // A cold Vite start after an install can sit silent for a couple of minutes
26
+ // before its banner; three minutes covers it without hiding a real hang.
27
+ const DEFAULT_READY_TIMEOUT_MS = 180_000;
28
+ export function readStackManifest(root) {
29
+ const file = path.join(root, PROCESS_FILE);
30
+ if (!fs.existsSync(file)) {
31
+ throw new Error(`${PROCESS_FILE} not found in ${root}: run inside a project folder`);
32
+ }
33
+ const match = BLOCK.exec(fs.readFileSync(file, "utf8"));
34
+ if (!match) {
35
+ throw new Error(`${PROCESS_FILE} carries no \`\`\`yaml stack block: this project has no managed stack`);
36
+ }
37
+ const doc = parse(match[1]);
38
+ return {
39
+ root,
40
+ slug: path.basename(root),
41
+ env: parseEnv(doc),
42
+ services: order(parseServices(doc, root)),
43
+ };
44
+ }
45
+ function isRecord(v) {
46
+ return typeof v === "object" && v !== null && !Array.isArray(v);
47
+ }
48
+ function str(obj, key, where) {
49
+ const v = obj[key];
50
+ if (v === undefined)
51
+ return undefined;
52
+ if (typeof v !== "string" || v.trim() === "") {
53
+ throw new Error(`${where}: ${key} must be a non-empty string`);
54
+ }
55
+ return v.trim();
56
+ }
57
+ function parseReady(raw, where) {
58
+ const tcp = /^tcp:(\d{1,5})$/.exec(raw);
59
+ if (tcp)
60
+ return { kind: "tcp", port: Number(tcp[1]) };
61
+ if (/^https?:\/\//.test(raw))
62
+ return { kind: "http", url: raw };
63
+ throw new Error(`${where}: ready must be tcp:<port> or an http(s) url`);
64
+ }
65
+ function parseService(raw, root, index) {
66
+ const where = `services[${index}]`;
67
+ if (!isRecord(raw))
68
+ throw new Error(`${where}: must be a mapping`);
69
+ for (const key of Object.keys(raw)) {
70
+ if (!SERVICE_KEYS.has(key))
71
+ throw new Error(`${where}: unknown key "${key}"`);
72
+ }
73
+ const name = str(raw, "name", where);
74
+ if (!name || !NAME.test(name))
75
+ throw new Error(`${where}: name must be kebab-case`);
76
+ const cwd = str(raw, "cwd", `${name}`);
77
+ if (!cwd)
78
+ throw new Error(`${name}: cwd is required`);
79
+ const commands = ["up", "run", "start"].filter((k) => raw[k] !== undefined);
80
+ if (commands.length !== 1) {
81
+ throw new Error(`${name}: exactly one of up, run, start is required`);
82
+ }
83
+ const kind = commands[0];
84
+ const command = str(raw, kind, name);
85
+ const down = str(raw, "down", name);
86
+ const wipe = str(raw, "wipe", name);
87
+ if ((down || wipe) && kind !== "up")
88
+ throw new Error(`${name}: down and wipe only go with up`);
89
+ const install = str(raw, "install", name);
90
+ const lockfile = str(raw, "lockfile", name);
91
+ if ((install === undefined) !== (lockfile === undefined)) {
92
+ throw new Error(`${name}: install and lockfile go together`);
93
+ }
94
+ if (install && kind === "up")
95
+ throw new Error(`${name}: install does not go with up`);
96
+ const readyRaw = str(raw, "ready", name);
97
+ if (kind === "start" && !readyRaw)
98
+ throw new Error(`${name}: a start service needs a ready probe`);
99
+ if (kind === "run" && readyRaw)
100
+ throw new Error(`${name}: a run step takes no ready probe`);
101
+ const after = raw.after === undefined ? [] : raw.after;
102
+ if (!Array.isArray(after) || !after.every((a) => typeof a === "string")) {
103
+ throw new Error(`${name}: after must be a list of service names`);
104
+ }
105
+ const timeout = raw.readyTimeoutMs;
106
+ if (timeout !== undefined && (typeof timeout !== "number" || timeout <= 0)) {
107
+ throw new Error(`${name}: readyTimeoutMs must be a positive number`);
108
+ }
109
+ const absCwd = path.resolve(root, cwd);
110
+ return {
111
+ name,
112
+ cwd: absCwd,
113
+ after: after,
114
+ kind,
115
+ command,
116
+ ...(down ? { down } : {}),
117
+ ...(wipe ? { wipe } : {}),
118
+ ...(install ? { install } : {}),
119
+ ...(lockfile ? { lockfile: path.resolve(absCwd, lockfile) } : {}),
120
+ ...(readyRaw ? { ready: parseReady(readyRaw, name) } : {}),
121
+ readyTimeoutMs: typeof timeout === "number" ? timeout : DEFAULT_READY_TIMEOUT_MS,
122
+ };
123
+ }
124
+ function parseEnv(doc) {
125
+ if (!isRecord(doc) || doc.env === undefined)
126
+ return {};
127
+ if (!isRecord(doc.env))
128
+ throw new Error("stack manifest: env must be a mapping");
129
+ const out = {};
130
+ for (const [k, v] of Object.entries(doc.env)) {
131
+ if (!/^[A-Z][A-Z0-9_]*$/.test(k) || typeof v !== "string") {
132
+ throw new Error(`stack manifest: env.${k} must be an UPPER_SNAKE key with a string value`);
133
+ }
134
+ out[k] = v;
135
+ }
136
+ return out;
137
+ }
138
+ function parseServices(doc, root) {
139
+ if (!isRecord(doc) ||
140
+ !Array.isArray(doc.services) ||
141
+ doc.services.length === 0) {
142
+ throw new Error("stack manifest must be a mapping with a non-empty services list");
143
+ }
144
+ for (const key of Object.keys(doc)) {
145
+ if (key !== "services" && key !== "env") {
146
+ throw new Error(`stack manifest: unknown key "${key}"`);
147
+ }
148
+ }
149
+ const services = doc.services.map((s, i) => parseService(s, root, i));
150
+ const names = new Set();
151
+ for (const s of services) {
152
+ if (names.has(s.name))
153
+ throw new Error(`duplicate service name "${s.name}"`);
154
+ names.add(s.name);
155
+ }
156
+ for (const s of services) {
157
+ for (const dep of s.after) {
158
+ if (!names.has(dep))
159
+ throw new Error(`${s.name}: after names unknown service "${dep}"`);
160
+ }
161
+ }
162
+ return services;
163
+ }
164
+ // Stable topological order: the first service in list order whose `after`
165
+ // are all placed goes next, one at a time, so the list order is kept wherever
166
+ // the dependencies allow it.
167
+ function order(services) {
168
+ const out = [];
169
+ const placed = new Set();
170
+ let remaining = services;
171
+ while (remaining.length > 0) {
172
+ const next = remaining.find((s) => s.after.every((a) => placed.has(a)));
173
+ if (!next) {
174
+ throw new Error(`cycle in after: ${remaining.map((s) => s.name).join(", ")}`);
175
+ }
176
+ out.push(next);
177
+ placed.add(next.name);
178
+ remaining = remaining.filter((s) => s.name !== next.name);
179
+ }
180
+ return out;
181
+ }
182
+ //# sourceMappingURL=manifest.js.map