@intentic/providers 1.55.3 → 1.56.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.
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Provider } from "@intentic/engine";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { SshExecutor } from "../core/ssh.js";
|
|
4
|
+
export declare const serviceSchema: z.ZodObject<{
|
|
5
|
+
address: z.ZodString;
|
|
6
|
+
user: z.ZodString;
|
|
7
|
+
sshKey: z.ZodString;
|
|
8
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
via: z.ZodDefault<z.ZodEnum<{
|
|
10
|
+
direct: "direct";
|
|
11
|
+
cloudflared: "cloudflared";
|
|
12
|
+
}>>;
|
|
13
|
+
internalIp: z.ZodString;
|
|
14
|
+
domain: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
export interface EnvEntry {
|
|
17
|
+
readonly key: string;
|
|
18
|
+
readonly value?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ComposeServiceSpec<S extends z.ZodType> {
|
|
21
|
+
readonly kind: string;
|
|
22
|
+
readonly schema: S;
|
|
23
|
+
readonly port: number;
|
|
24
|
+
readonly healthPath: string;
|
|
25
|
+
readonly readyTimeoutMs?: number;
|
|
26
|
+
readonly files: (parsed: z.infer<S>) => Record<string, string>;
|
|
27
|
+
readonly env?: (parsed: z.infer<S>) => readonly EnvEntry[];
|
|
28
|
+
readonly images: (parsed: z.infer<S>) => Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export declare const createComposeServiceProvider: <S extends typeof serviceSchema>(spec: ComposeServiceSpec<S>, executor: SshExecutor) => Provider;
|
|
31
|
+
//# sourceMappingURL=compose-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-service.d.ts","sourceRoot":"","sources":["../../src/services/compose-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,eAAO,MAAM,aAAa;;;;;;;;;;;iBAGxB,CAAC;AAIH,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;IAEnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,QAAQ,EAAE,CAAC;IAG3D,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnE;AAMD,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,OAAO,aAAa,EACvE,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAC3B,UAAU,WAAW,KACtB,QA8HF,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
3
|
+
export const serviceSchema = sshSchema.extend({
|
|
4
|
+
internalIp: z.string(),
|
|
5
|
+
domain: z.string(),
|
|
6
|
+
});
|
|
7
|
+
const READY_INTERVAL_MS = 4_000;
|
|
8
|
+
const shellQuote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
|
|
9
|
+
export const createComposeServiceProvider = (spec, executor) => {
|
|
10
|
+
const stateDir = `/opt/intentic/${spec.kind}`;
|
|
11
|
+
const app = `intentic-${spec.kind}`;
|
|
12
|
+
const parse = (inputs) => parseInputs(spec.schema, inputs, spec.kind);
|
|
13
|
+
const internalUrl = (parsed) => `http://${parsed.internalIp}:${spec.port}`;
|
|
14
|
+
const outputsFor = (parsed) => ({
|
|
15
|
+
url: `https://${parsed.domain}`,
|
|
16
|
+
internalUrl: internalUrl(parsed),
|
|
17
|
+
});
|
|
18
|
+
const running = async (session) => {
|
|
19
|
+
const result = await session.exec(`docker ps --filter "label=intentic.id=${app}" --format '{{.Names}}'`);
|
|
20
|
+
return result.stdout.trim() !== "";
|
|
21
|
+
};
|
|
22
|
+
const runningImages = async (session) => {
|
|
23
|
+
const result = await session.exec(`ids=$(docker ps -q --filter "label=com.docker.compose.project=${spec.kind}"); ` +
|
|
24
|
+
`[ -n "$ids" ] && docker inspect --format '{{index .Config.Labels "com.docker.compose.service"}}={{.Config.Image}}' $ids || true`);
|
|
25
|
+
const images = {};
|
|
26
|
+
for (const line of result.stdout.trim().split("\n")) {
|
|
27
|
+
const eq = line.indexOf("=");
|
|
28
|
+
if (eq > 0) {
|
|
29
|
+
images[line.slice(0, eq)] = line.slice(eq + 1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return images;
|
|
33
|
+
};
|
|
34
|
+
const healthy = async (session, parsed) => {
|
|
35
|
+
const result = await session.exec(`wget -q -O /dev/null ${internalUrl(parsed)}${spec.healthPath}`);
|
|
36
|
+
return result.code === 0;
|
|
37
|
+
};
|
|
38
|
+
const waitHealthy = async (session, parsed) => {
|
|
39
|
+
const timeout = spec.readyTimeoutMs ?? 300_000;
|
|
40
|
+
const deadline = Date.now() + timeout;
|
|
41
|
+
for (;;) {
|
|
42
|
+
if (await healthy(session, parsed)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (Date.now() >= deadline) {
|
|
46
|
+
throw new Error(`${spec.kind} did not become healthy within ${timeout}ms`);
|
|
47
|
+
}
|
|
48
|
+
await new Promise((resolve) => setTimeout(resolve, READY_INTERVAL_MS));
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const ensureFiles = async (session, parsed) => {
|
|
52
|
+
await session.exec(`mkdir -p ${stateDir}`);
|
|
53
|
+
for (const [name, content] of Object.entries(spec.files(parsed))) {
|
|
54
|
+
const marker = `${spec.kind.toUpperCase()}_FILE_EOF`;
|
|
55
|
+
await session.exec(`cat > ${stateDir}/${name} <<'${marker}'\n${content}${marker}`);
|
|
56
|
+
}
|
|
57
|
+
const entries = spec.env?.(parsed) ?? [];
|
|
58
|
+
if (entries.length === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const prints = entries
|
|
62
|
+
.map((entry) => `printf '${entry.key}=%s\\n' ${entry.value === undefined ? `"$(openssl rand -hex 32)"` : shellQuote(entry.value)}`)
|
|
63
|
+
.join("; ");
|
|
64
|
+
await session.exec(`test -f ${stateDir}/.env || { { ${prints}; } > ${stateDir}/.env && chmod 600 ${stateDir}/.env; }`);
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
read: async (inputs, ctx) => {
|
|
68
|
+
const parsed = parse(inputs);
|
|
69
|
+
let session;
|
|
70
|
+
try {
|
|
71
|
+
session = await executor.connect(sshTarget(parsed));
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
ctx.log(`${spec.kind} "${ctx.id}": host not reachable over SSH, treating as not-yet-created: ${String(error)}`);
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
if (!(await running(session)) || !(await healthy(session, parsed))) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
return { outputs: outputsFor(parsed), detail: { images: await runningImages(session) } };
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
await session.dispose();
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
diff: (inputs, observed) => {
|
|
88
|
+
const parsed = parse(inputs);
|
|
89
|
+
const images = (observed.detail?.["images"] ?? {});
|
|
90
|
+
for (const [service, desired] of Object.entries(spec.images(parsed))) {
|
|
91
|
+
if (images[service] !== desired) {
|
|
92
|
+
return { action: "update", reason: `${spec.kind} ${service} image differs (running ${String(images[service])}, want ${desired})` };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { action: "noop" };
|
|
96
|
+
},
|
|
97
|
+
apply: async (inputs, _observed, _ctx) => {
|
|
98
|
+
const parsed = parse(inputs);
|
|
99
|
+
const session = await executor.connect(sshTarget(parsed));
|
|
100
|
+
try {
|
|
101
|
+
await ensureFiles(session, parsed);
|
|
102
|
+
const up = await session.exec(`docker compose -p ${spec.kind} --project-directory ${stateDir} -f ${stateDir}/compose.yaml up -d`);
|
|
103
|
+
if (up.code !== 0) {
|
|
104
|
+
throw new Error(`failed to bring up ${spec.kind} stack: exited ${up.code}: ${up.stderr.trim()}`);
|
|
105
|
+
}
|
|
106
|
+
await waitHealthy(session, parsed);
|
|
107
|
+
return outputsFor(parsed);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
await session.dispose();
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
delete: async (inputs) => {
|
|
114
|
+
const parsed = parse(inputs);
|
|
115
|
+
const session = await executor.connect(sshTarget(parsed));
|
|
116
|
+
try {
|
|
117
|
+
await session.exec(`docker compose -p ${spec.kind} --project-directory ${stateDir} -f ${stateDir}/compose.yaml down -v 2>/dev/null || true`);
|
|
118
|
+
await session.exec(`rm -rf ${stateDir}`);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await session.dispose();
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=compose-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-service.js","sourceRoot":"","sources":["../../src/services/compose-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/providers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.56.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,19 +30,20 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"bcryptjs": "^3.0.2",
|
|
33
34
|
"ssh2": "1.17.0",
|
|
34
35
|
"tslib": "2.8.1",
|
|
35
36
|
"zod": "4.4.3",
|
|
36
|
-
"@intentic/engine": "1.
|
|
37
|
-
"@intentic/graph": "1.
|
|
37
|
+
"@intentic/engine": "1.56.0",
|
|
38
|
+
"@intentic/graph": "1.56.0"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"@types/node": "24.13.2",
|
|
41
42
|
"@types/ssh2": "1.15.5",
|
|
42
43
|
"typescript": "5.9.3",
|
|
43
44
|
"vitest": "4.1.9",
|
|
44
|
-
"@intentic/
|
|
45
|
-
"@intentic/
|
|
45
|
+
"@intentic/sdk": "1.56.0",
|
|
46
|
+
"@intentic/tsconfig": "0.0.0"
|
|
46
47
|
},
|
|
47
48
|
"scripts": {
|
|
48
49
|
"build": "tsc",
|