@intentic/providers 1.340.0 → 1.341.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 +2 -0
- package/dist/host/workspace-swap.d.ts +2 -0
- package/dist/host/workspace-swap.d.ts.map +1 -0
- package/dist/host/workspace-swap.js +148 -0
- package/dist/host/workspace-swap.js.map +1 -0
- package/dist/host/workspace.d.ts.map +1 -1
- package/dist/host/workspace.js +12 -9
- package/dist/host/workspace.js.map +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@ flowchart LR
|
|
|
18
18
|
- A NAT'd host is reached through its own Cloudflare tunnel (`via: "cloudflared"`). Host keys are trusted on first use and pinned.
|
|
19
19
|
- Stateful services on a host with the `guarded` update policy snapshot their volumes with restic before an image bump and roll back if the new image fails its health check.
|
|
20
20
|
|
|
21
|
+
- Workspace updates park the predecessor, retry a refused launch without optional runtime flags, and require a ready daemon with a committed state journal. A host-side watch keeps the predecessor for 24 hours and restores it if probation fails, independently of the SSH client. GPU preflight exercises the host’s actual Docker device request, including Docker’s CDI path.
|
|
22
|
+
|
|
21
23
|
## Key files
|
|
22
24
|
|
|
23
25
|
- [src/providers.ts](src/providers.ts) — `createProviders`, the map the engine reconciles against.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-swap.d.ts","sourceRoot":"","sources":["../../src/host/workspace-swap.ts"],"names":[],"mappings":"AAoGA,eAAO,MAAM,mBAAmB,cAAe,MAAM,OAAO,MAAM,YAAY,MAAM,QAAQ,MAAM,KAAG,MAsDpG,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { HISTORY_ROOT, HOST_STATE_ROOT } from "@intentic/constants";
|
|
2
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
3
|
+
const healthProbe = (port) => {
|
|
4
|
+
return `
|
|
5
|
+
import { readFile } from "node:fs/promises";
|
|
6
|
+
// A file that is not there yet is normal early in a boot; one that is there but unreadable is logged, then treated as absent.
|
|
7
|
+
const jsonFile = (path) => readFile(path, "utf8").then(JSON.parse).catch((error) => {
|
|
8
|
+
if (error?.code !== "ENOENT") console.error(path, String(error));
|
|
9
|
+
return undefined;
|
|
10
|
+
});
|
|
11
|
+
const vitals = await jsonFile("/run/intentic/vitals.json");
|
|
12
|
+
if (vitals?.node !== "up" && vitals?.restarts >= 3) process.exit(2);
|
|
13
|
+
const failure = await jsonFile("${HISTORY_ROOT}/boot-failure.json");
|
|
14
|
+
if (failure?.at >= Number(process.env.INTENTIC_CUTOVER_AT) * 1000) process.exit(2);
|
|
15
|
+
try {
|
|
16
|
+
const response = await fetch("http://127.0.0.1:${port}/health", { signal: AbortSignal.timeout(5000) });
|
|
17
|
+
if (!response.ok) process.exit(1);
|
|
18
|
+
const health = await response.json();
|
|
19
|
+
if (health.state?.journal === "failed") process.exit(2);
|
|
20
|
+
if (health.state?.journal === "open") process.exit(3);
|
|
21
|
+
if ((health.boot?.ready ?? health.ready) === false) process.exit(1);
|
|
22
|
+
if (process.env.INTENTIC_PREVIOUS_REACH === "reachable") {
|
|
23
|
+
if (health.reach?.state === "unreachable") process.exit(5);
|
|
24
|
+
if (health.reach?.state === "checking") process.exit(6);
|
|
25
|
+
}
|
|
26
|
+
process.exit(0);
|
|
27
|
+
} catch {process.exit(1);}`;
|
|
28
|
+
};
|
|
29
|
+
const hostFunctions = (container, health) => {
|
|
30
|
+
const parked = `${container}-previous`;
|
|
31
|
+
return `
|
|
32
|
+
container=${shellQuote(container)}
|
|
33
|
+
parked=${shellQuote(parked)}
|
|
34
|
+
had_old=false
|
|
35
|
+
previous_reach=\${previous_reach:-}
|
|
36
|
+
cutover_at=\${cutover_at:-0}
|
|
37
|
+
exists() { docker inspect "$1" >/dev/null 2>&1; }
|
|
38
|
+
# A deliberate stop (an owner's docker stop, an idle sleep) is a version at rest, not a failed one.
|
|
39
|
+
at_rest() { [ "$(docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' "$container" 2>/dev/null)" = "exited 0" ]; }
|
|
40
|
+
restore() {
|
|
41
|
+
if exists "$parked"; then
|
|
42
|
+
docker logs --tail 2000 "$container" > ${HOST_STATE_ROOT}/workspace-failed.log 2>&1 || true
|
|
43
|
+
docker rm -f "$container" >/dev/null 2>&1 || true
|
|
44
|
+
docker rename "$parked" "$container" && docker start "$container" || return 1
|
|
45
|
+
echo 'restored the previous workspace sandbox' >&2
|
|
46
|
+
elif [ "$had_old" = true ]; then
|
|
47
|
+
docker start "$container" || return 1
|
|
48
|
+
fi
|
|
49
|
+
}
|
|
50
|
+
check() {
|
|
51
|
+
restarts=$(docker inspect --format '{{.RestartCount}}' "$container") || return 1
|
|
52
|
+
[ "$restarts" -lt 3 ] || return 2
|
|
53
|
+
docker exec -e "INTENTIC_PREVIOUS_REACH=$previous_reach" -e "INTENTIC_CUTOVER_AT=$cutover_at" "$container" node --input-type=module -e ${shellQuote(health)}
|
|
54
|
+
}
|
|
55
|
+
`;
|
|
56
|
+
};
|
|
57
|
+
const probationWatch = (functions) => {
|
|
58
|
+
return `${functions}
|
|
59
|
+
# Each look takes the cutover lock, and checks identity: an older watch never undoes a newer deploy.
|
|
60
|
+
printf "%s" "$expected" > ${HOST_STATE_ROOT}/workspace-watch.ready || exit 1
|
|
61
|
+
at=$(date +%s)
|
|
62
|
+
strikes=0
|
|
63
|
+
while [ $(($(date +%s) - at)) -lt 86400 ]; do
|
|
64
|
+
sleep 60
|
|
65
|
+
(
|
|
66
|
+
flock -x 9
|
|
67
|
+
[ "$(docker inspect --format '{{.Id}}' "$container" 2>/dev/null)" = "$expected" ] || exit 10
|
|
68
|
+
at_rest && exit 0
|
|
69
|
+
check && exit 0
|
|
70
|
+
verdict=$?
|
|
71
|
+
[ "$verdict" -eq 2 ] && { restore; exit 20; }
|
|
72
|
+
age=$(($(date +%s) - at))
|
|
73
|
+
# Conversions have a longer grace than a silent or not-ready daemon.
|
|
74
|
+
grace=600
|
|
75
|
+
[ "$verdict" -eq 3 ] && grace=900
|
|
76
|
+
[ "$verdict" -eq 6 ] && grace=900
|
|
77
|
+
[ "$age" -ge "$grace" ] || exit 0
|
|
78
|
+
exit 1
|
|
79
|
+
) 9>${HOST_STATE_ROOT}/workspace-swap.lock
|
|
80
|
+
verdict=$?
|
|
81
|
+
[ "$verdict" -eq 10 ] && exit 0
|
|
82
|
+
[ "$verdict" -eq 20 ] && exit 1
|
|
83
|
+
if [ "$verdict" -eq 0 ]; then strikes=0; else strikes=$((strikes + 1)); fi
|
|
84
|
+
if [ "$strikes" -ge 3 ]; then
|
|
85
|
+
(flock -x 9; [ "$(docker inspect --format '{{.Id}}' "$container" 2>/dev/null)" != "$expected" ] || restore) 9>${HOST_STATE_ROOT}/workspace-swap.lock
|
|
86
|
+
exit 1
|
|
87
|
+
fi
|
|
88
|
+
done
|
|
89
|
+
# The rollback target survives until probation ends, even when apply itself ended hours earlier.
|
|
90
|
+
(flock -x 9; [ "$(docker inspect --format '{{.Id}}' "$container" 2>/dev/null)" != "$expected" ] || docker rm "$parked") 9>${HOST_STATE_ROOT}/workspace-swap.lock
|
|
91
|
+
`;
|
|
92
|
+
};
|
|
93
|
+
export const workspaceSwapScript = (container, run, fallback, port) => {
|
|
94
|
+
const health = healthProbe(port);
|
|
95
|
+
const functions = hostFunctions(container, health);
|
|
96
|
+
const watch = probationWatch(functions);
|
|
97
|
+
return `${functions}
|
|
98
|
+
command -v flock >/dev/null && command -v nohup >/dev/null || exit 1
|
|
99
|
+
mkdir -p ${HOST_STATE_ROOT} || exit 1
|
|
100
|
+
exec 9>${HOST_STATE_ROOT}/workspace-swap.lock
|
|
101
|
+
flock -n 9 || { echo 'a workspace cutover is already running' >&2; exit 1; }
|
|
102
|
+
trap 'exit 1' HUP INT TERM
|
|
103
|
+
trap 'restore' EXIT
|
|
104
|
+
# Finish an interrupted rename before attempting another cutover.
|
|
105
|
+
if ! exists "$container" && exists "$parked"; then restore || exit 1; fi
|
|
106
|
+
if exists "$container"; then
|
|
107
|
+
# Never discard the only known-good predecessor for a version that has not become ready. One at rest became ready
|
|
108
|
+
# before it was stopped, so it is the way back now.
|
|
109
|
+
if exists "$parked"; then at_rest || check || restore || exit 1; fi
|
|
110
|
+
had_old=true
|
|
111
|
+
previous_reach=$(docker exec "$container" node --input-type=module -e ${shellQuote(`try {const response = await fetch("http://127.0.0.1:${port}/health", { signal: AbortSignal.timeout(5000) }); console.log((await response.json()).reach?.state ?? "");} catch (error) {console.error(String(error));}`)} 2>/dev/null) || true
|
|
112
|
+
docker logs --tail 2000 "$container" > ${HOST_STATE_ROOT}/workspace-previous.log 2>&1 || true
|
|
113
|
+
docker rm -f "$parked" >/dev/null 2>&1 || true
|
|
114
|
+
docker stop "$container" || { docker start "$container"; exit 1; }
|
|
115
|
+
docker rename "$container" "$parked" || { docker start "$container"; exit 1; }
|
|
116
|
+
fi
|
|
117
|
+
cutover_at=$(date +%s)
|
|
118
|
+
export previous_reach cutover_at
|
|
119
|
+
if ! ${run}; then
|
|
120
|
+
docker rm -f "$container" >/dev/null 2>&1 || true
|
|
121
|
+
if ! ${fallback}; then exit 1; fi
|
|
122
|
+
fi
|
|
123
|
+
# The new daemon must finish its boot and commit the conversion journal before apply succeeds.
|
|
124
|
+
tries=0
|
|
125
|
+
ready=false
|
|
126
|
+
while [ "$tries" -lt 180 ]; do
|
|
127
|
+
if check; then ready=true; break; else verdict=$?; fi
|
|
128
|
+
[ "$verdict" -ne 2 ] || break
|
|
129
|
+
tries=$((tries + 1))
|
|
130
|
+
sleep 5
|
|
131
|
+
done
|
|
132
|
+
if [ "$ready" != true ]; then exit 1; fi
|
|
133
|
+
expected=$(docker inspect --format '{{.Id}}' "$container") || exit 1
|
|
134
|
+
export expected
|
|
135
|
+
# Close the cutover lock in the child; each probation look reacquires it for its own bounded work.
|
|
136
|
+
rm -f ${HOST_STATE_ROOT}/workspace-watch.ready
|
|
137
|
+
nohup sh -c ${shellQuote(watch)} </dev/null >>${HOST_STATE_ROOT}/workspace-probation.log 2>&1 9>&- &
|
|
138
|
+
# Do not surrender the immediate rollback guard until the detached watch has actually started.
|
|
139
|
+
started=false
|
|
140
|
+
for attempt in 1 2 3 4 5; do
|
|
141
|
+
if [ "$(cat ${HOST_STATE_ROOT}/workspace-watch.ready 2>/dev/null)" = "$expected" ]; then started=true; break; fi
|
|
142
|
+
sleep 1
|
|
143
|
+
done
|
|
144
|
+
[ "$started" = true ] || exit 1
|
|
145
|
+
trap - EXIT HUP INT TERM
|
|
146
|
+
`;
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=workspace-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-swap.js","sourceRoot":"","sources":["../../src/host/workspace-swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IACzC,OAAO;;;;;;;;;kCASuB,YAAY;;;qDAGO,IAAI;;;;;;;;;;;2BAW9B,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAU,EAAE;IAChE,MAAM,MAAM,GAAG,GAAG,SAAS,WAAW,CAAC;IACvC,OAAO;YACC,UAAU,CAAC,SAAS,CAAC;SACxB,UAAU,CAAC,MAAM,CAAC;;;;;;;;;iDASsB,eAAe;;;;;;;;;;;6IAW6E,UAAU,CAAC,MAAM,CAAC;;CAE9J,CAAC;AACF,CAAC,CAAC;AAGF,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAU,EAAE;IACjD,OAAO,GAAG,SAAS;;4BAEK,eAAe;;;;;;;;;;;;;;;;;;;UAmBjC,eAAe;;;;;;wHAM+F,eAAe;;;;;4HAKX,eAAe;CAC1I,CAAC;AACF,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAE,QAAgB,EAAE,IAAY,EAAU,EAAE;IAC1G,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,GAAG,SAAS;;WAEZ,eAAe;SACjB,eAAe;;;;;;;;;;;4EAWoD,UAAU,CAAC,uDAAuD,IAAI,2JAA2J,CAAC;6CACjQ,eAAe;;;;;;;OAOrD,GAAG;;WAEC,QAAQ;;;;;;;;;;;;;;;QAeX,eAAe;cACT,UAAU,CAAC,KAAK,CAAC,iBAAiB,eAAe;;;;kBAI7C,eAAe;;;;;CAKhC,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/host/workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/host/workspace.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAOjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAkE9D,eAAO,MAAM,uBAAuB,aAAc,WAAW,KAAG,QAoI9D,CAAC"}
|
package/dist/host/workspace.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { WORKSPACE_ROOT } from "@intentic/constants";
|
|
3
|
-
import { OPTIONAL_DIRECTIVES, runtimeDirectivesOf, sandboxNames, sandboxRunCommand } from "@intentic/sandbox-run";
|
|
3
|
+
import { gpuProbeArgv, gpuProbePassed, OPTIONAL_DIRECTIVES, runtimeDirectivesOf, sandboxNames, sandboxRunCommand, } from "@intentic/sandbox-run";
|
|
4
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
5
|
+
import { workspaceSwapScript } from "./workspace-swap.js";
|
|
4
6
|
import { z } from "zod";
|
|
5
7
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
6
8
|
import { listStampedContainers } from "../core/list-stamped.js";
|
|
@@ -101,17 +103,17 @@ export const createWorkspaceProvider = (executor) => ({
|
|
|
101
103
|
await session.exec(`docker network inspect ${parsed.network} >/dev/null 2>&1 || docker network create ${parsed.network}`);
|
|
102
104
|
const unsupported = [];
|
|
103
105
|
for (const directive of OPTIONAL_DIRECTIVES.filter((entry) => runtime.includes(entry.token))) {
|
|
104
|
-
const
|
|
105
|
-
const probe =
|
|
106
|
-
?
|
|
107
|
-
: (await session.exec(`test -e ${directive.probe.path}`)).code === 0;
|
|
106
|
+
const gpu = directive.token === "--gpus=all" ? await session.exec(gpuProbeArgv(image).map(shellQuote).join(" ")) : undefined;
|
|
107
|
+
const probe = gpu !== undefined
|
|
108
|
+
? gpuProbePassed(gpu.code, gpu.stdout)
|
|
109
|
+
: directive.probe.kind === "device" && (await session.exec(`test -e ${shellQuote(directive.probe.path)}`)).code === 0;
|
|
108
110
|
if (!probe) {
|
|
109
111
|
unsupported.push(directive.token);
|
|
110
112
|
ctx.log(`workspace "${ctx.id}": host cannot provide ${directive.token}, starting without ${directive.name}`);
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
const digest = toolsDigest(parsed.tools);
|
|
114
|
-
const
|
|
116
|
+
const runOptions = {
|
|
115
117
|
names: { ...NAMES, network: parsed.network },
|
|
116
118
|
image,
|
|
117
119
|
baseImage: parsed.image,
|
|
@@ -136,9 +138,10 @@ export const createWorkspaceProvider = (executor) => ({
|
|
|
136
138
|
? [["INTENTIC_AGENT_TOOLS", Buffer.from(JSON.stringify(parsed.tools)).toString("base64")]]
|
|
137
139
|
: []),
|
|
138
140
|
],
|
|
139
|
-
}
|
|
140
|
-
const
|
|
141
|
-
|
|
141
|
+
};
|
|
142
|
+
const runCommand = sandboxRunCommand(runOptions);
|
|
143
|
+
const fallback = sandboxRunCommand({ ...runOptions, unsupported: OPTIONAL_DIRECTIVES.map((entry) => entry.token) });
|
|
144
|
+
const run = await session.exec(`sh -c ${shellQuote(workspaceSwapScript(CONTAINER, runCommand, fallback, parsed.daemonPort))}`);
|
|
142
145
|
if (run.code !== 0) {
|
|
143
146
|
throw new Error(`failed to start workspace sandbox on host: exited ${run.code}: ${run.stderr.trim()}`);
|
|
144
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/host/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/host/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACH,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtF,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;IAErC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,MAAsB,EAAmB,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAG7G,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AACxC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAGlC,MAAM,WAAW,GAAG,CAAC,KAA+B,EAAU,EAAE,CAC5D,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAGnI,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAIhH,MAAM,YAAY,GAAG,CAAC,MAAuB,EAAU,EAAE,CACrD,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAEjI,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAU,EAAE,CAAC,UAAU,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5G,MAAM,UAAU,GAAG,CAAC,MAAuB,EAA2B,EAAE,CAAC,CAAC;IACtE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAChC,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS;IAC1C,WAAW,EAAE,MAAM,CAAC,IAAI;CAC3B,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,KAAK,EAAE,OAAmB,EAAoB,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,6BAA6B,SAAS,0BAA0B,CAAC,CAAC;IACpG,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,OAAmB,EAAmB,EAAE;IAChE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,+CAA+C,SAAS,sBAAsB,CAAC,CAAC;IAClH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAGF,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAmB,EAAmB,EAAE;IACtE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,uEAAuE,SAAS,sBAAsB,CAAC,CAAC;IAC1I,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAqB,EAAY,EAAE,CAAC,CAAC;IACzE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAExB,IAAI,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,OAAmB,CAAC;QACxB,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,gEAAgE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7G,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/F,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QACrE,CAAC;gBAAS,CAAC;YACP,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO;gBACH,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,4CAA4C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,GAAG;aAC3G,CAAC;QACN,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO;gBACH,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,0CAA0C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,SAAS,GAAG;aAC7G,CAAC;QACN,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAElC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAC5B,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,kCAAkC,KAAK,IAAI,CAC9G,CAAC;gBACF,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,+DAA+D,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzH,CAAC;YACL,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,OAAO,6CAA6C,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAG1H,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7H,MAAM,KAAK,GACP,GAAG,KAAK,SAAS;oBACb,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;oBACtC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC9H,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAClC,GAAG,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,0BAA0B,SAAS,CAAC,KAAK,sBAAsB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjH,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAKzC,MAAM,UAAU,GAAe;gBAC3B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC5C,KAAK;gBACL,SAAS,EAAE,MAAM,CAAC,KAAK;gBACvB,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,OAAO;gBACP,WAAW;gBACX,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACH,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;oBAClE,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE;iBACnE;gBAGD,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,MAAM,EAAE,CAAC;gBACnF,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC3B,GAAG,EAAE;oBACD,CAAC,gBAAgB,EAAE,cAAc,CAAC;oBAClC,CAAC,cAAc,EAAE,SAAS,CAAC;oBAC3B,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC3C,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAE5C,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAEpG,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBACrD,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAU,CAAC;wBACnG,CAAC,CAAC,EAAE,CAAC;iBACZ;aACJ,CAAC;YACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,GAAG,UAAU,EAAE,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/H,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3G,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACP,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,SAAS,sBAAsB,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACP,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;CACrF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/providers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.341.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@intentic/base": "1.
|
|
34
|
-
"@intentic/constants": "1.
|
|
35
|
-
"@intentic/engine": "1.
|
|
36
|
-
"@intentic/graph": "1.
|
|
37
|
-
"@intentic/sandbox-run": "1.
|
|
33
|
+
"@intentic/base": "1.341.0",
|
|
34
|
+
"@intentic/constants": "1.341.0",
|
|
35
|
+
"@intentic/engine": "1.341.0",
|
|
36
|
+
"@intentic/graph": "1.341.0",
|
|
37
|
+
"@intentic/sandbox-run": "1.341.0",
|
|
38
38
|
"bcryptjs": "3.0.3",
|
|
39
39
|
"libsodium-wrappers": "0.8.4",
|
|
40
40
|
"ssh2": "1.17.0",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"zod": "4.6.5"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@intentic/sdk": "1.
|
|
45
|
+
"@intentic/sdk": "1.341.0",
|
|
46
46
|
"@intentic/testing": "0.0.0",
|
|
47
47
|
"@intentic/tsconfig": "0.0.0",
|
|
48
48
|
"@types/bun": "1.4.2",
|