@intentic/sync 0.0.0 → 1.55.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/sync",
3
- "version": "0.0.0",
3
+ "version": "1.55.2",
4
4
  "description": "Local background agent that keeps a directory bidirectionally in sync with a remote intentic sandbox over its HTTP API",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/dist/agent.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const run: () => Promise<void>;
2
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,GAAG,QAAa,OAAO,CAAC,IAAI,CA8ExC,CAAC"}
package/dist/agent.js DELETED
@@ -1,101 +0,0 @@
1
- import { relative, sep } from "node:path";
2
- import { watch } from "chokidar";
3
- import { idTokenFromRefresh } from "./auth.js";
4
- import { createSandboxClient } from "./client.js";
5
- import { manifestPath, readConfig, readCredentials } from "./config.js";
6
- import { createSyncEngine } from "./engine.js";
7
- import { isIgnored } from "./fs-util.js";
8
- import { loadManifest, saveManifest } from "./manifest.js";
9
- const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
10
- const decodeExpSeconds = (jwt) => {
11
- const payload = jwt.split(".")[1];
12
- if (payload === undefined) {
13
- return 0;
14
- }
15
- try {
16
- return JSON.parse(Buffer.from(payload, "base64url").toString("utf8")).exp ?? 0;
17
- }
18
- catch {
19
- return 0;
20
- }
21
- };
22
- const createTokenProvider = (clientId, clientSecret, refreshToken) => {
23
- let cached;
24
- return async () => {
25
- if (cached !== undefined && cached.exp - 60 > Date.now() / 1000) {
26
- return cached.token;
27
- }
28
- const token = await idTokenFromRefresh(clientId, clientSecret, refreshToken);
29
- cached = { token, exp: decodeExpSeconds(token) };
30
- return token;
31
- };
32
- };
33
- export const run = async () => {
34
- const config = await readConfig();
35
- const credentials = await readCredentials();
36
- if (credentials === undefined) {
37
- throw new Error("intentic-sync is not set up — run `intentic-sync setup` first.");
38
- }
39
- const getToken = createTokenProvider(config.googleClientId, config.googleClientSecret, credentials.refreshToken);
40
- const client = createSandboxClient(config.sandboxUrl, getToken);
41
- const manifestFile = manifestPath(config.sandboxId);
42
- const manifest = await loadManifest(manifestFile);
43
- const log = (message) => void process.stdout.write(`${new Date().toISOString()} ${message}\n`);
44
- let dirty = false;
45
- let saveTimer;
46
- const persist = () => {
47
- dirty = true;
48
- if (saveTimer !== undefined) {
49
- return;
50
- }
51
- saveTimer = setTimeout(() => {
52
- saveTimer = undefined;
53
- if (dirty) {
54
- dirty = false;
55
- void saveManifest(manifestFile, manifest);
56
- }
57
- }, 500);
58
- };
59
- const engine = createSyncEngine({ localDir: config.localDir, client, manifest, persist, log, now: () => Date.now() });
60
- let chain = Promise.resolve();
61
- const serialize = (operation) => {
62
- const next = chain.then(operation, operation);
63
- chain = next.then(() => undefined, () => undefined);
64
- return next;
65
- };
66
- const watcher = watch(config.localDir, {
67
- ignoreInitial: true,
68
- awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 50 },
69
- ignored: (candidate) => {
70
- const rel = relative(config.localDir, candidate).split(sep).join("/");
71
- return rel !== "" && isIgnored(rel);
72
- },
73
- });
74
- const onLocal = (candidate) => {
75
- const rel = relative(config.localDir, candidate).split(sep).join("/");
76
- if (rel === "") {
77
- return;
78
- }
79
- void serialize(() => engine.onLocalPath(rel)).catch((error) => log(`local sync error on ${rel}: ${error instanceof Error ? error.message : String(error)}`));
80
- };
81
- watcher.on("add", onLocal).on("change", onLocal).on("unlink", onLocal);
82
- log(`mirroring ${config.sandboxUrl} → ${config.localDir}`);
83
- for (;;) {
84
- const controller = new AbortController();
85
- try {
86
- await serialize(() => engine.reconcile());
87
- log("reconciled; watching for changes");
88
- for await (const change of client.watch(controller.signal)) {
89
- await serialize(() => engine.onRemoteChange(change)).catch((error) => log(`remote sync error on ${change.path}: ${error instanceof Error ? error.message : String(error)}`));
90
- }
91
- }
92
- catch (error) {
93
- log(`stream dropped: ${error instanceof Error ? error.message : String(error)}; retrying in 5s`);
94
- }
95
- finally {
96
- controller.abort();
97
- }
98
- await delay(5000);
99
- }
100
- };
101
- //# sourceMappingURL=agent.js.map
package/dist/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare const authorizeInteractive: (clientId: string, clientSecret: string) => Promise<string>;
2
- export declare const idTokenFromRefresh: (clientId: string, clientSecret: string, refreshToken: string) => Promise<string>;
3
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAoDA,eAAO,MAAM,oBAAoB,GAAU,UAAU,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,MAAM,CAiBjG,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAU,UAAU,MAAM,EAAE,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,MAAM,CAcrH,CAAC"}
package/dist/auth.js DELETED
@@ -1,75 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { createServer } from "node:http";
3
- import { OAuth2Client } from "google-auth-library";
4
- const SCOPES = ["openid", "email", "profile"];
5
- const TOKEN_URL = "https://oauth2.googleapis.com/token";
6
- const openBrowser = (url) => {
7
- const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
8
- const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
9
- try {
10
- spawn(command, args, { stdio: "ignore", detached: true }).unref();
11
- }
12
- catch {
13
- }
14
- };
15
- const startLoopback = () => new Promise((resolveServer) => {
16
- let resolveCode;
17
- let rejectCode;
18
- const code = new Promise((resolve, reject) => {
19
- resolveCode = resolve;
20
- rejectCode = reject;
21
- });
22
- const server = createServer((request, response) => {
23
- const url = new URL(request.url ?? "/", "http://localhost");
24
- const received = url.searchParams.get("code");
25
- const error = url.searchParams.get("error");
26
- response.writeHead(200, { "content-type": "text/html" });
27
- response.end("<html><body>intentic-sync authorized. You can close this tab.</body></html>");
28
- if (received !== null) {
29
- resolveCode(received);
30
- return;
31
- }
32
- if (error !== null) {
33
- rejectCode(new Error(`Google authorization was denied: ${error}`));
34
- }
35
- });
36
- server.listen(0, "127.0.0.1", () => {
37
- const address = server.address();
38
- resolveServer({ server, port: typeof address === "object" && address !== null ? address.port : 0, code });
39
- });
40
- });
41
- export const authorizeInteractive = async (clientId, clientSecret) => {
42
- const { server, port, code } = await startLoopback();
43
- const redirectUri = `http://localhost:${port}`;
44
- const client = new OAuth2Client({ clientId, clientSecret, redirectUri });
45
- const authUrl = client.generateAuthUrl({ access_type: "offline", prompt: "consent", scope: SCOPES });
46
- openBrowser(authUrl);
47
- process.stdout.write(`\nAuthorize intentic-sync in your browser (opening it now):\n${authUrl}\n\n`);
48
- try {
49
- const authorizationCode = await code;
50
- const { tokens } = await client.getToken({ code: authorizationCode, redirect_uri: redirectUri });
51
- if (typeof tokens.refresh_token !== "string" || tokens.refresh_token === "") {
52
- throw new Error("Google returned no refresh token — remove intentic-sync from your Google account's third-party access and retry.");
53
- }
54
- return tokens.refresh_token;
55
- }
56
- finally {
57
- server.close();
58
- }
59
- };
60
- export const idTokenFromRefresh = async (clientId, clientSecret, refreshToken) => {
61
- const response = await fetch(TOKEN_URL, {
62
- method: "POST",
63
- headers: { "content-type": "application/x-www-form-urlencoded" },
64
- body: new URLSearchParams({ client_id: clientId, client_secret: clientSecret, refresh_token: refreshToken, grant_type: "refresh_token" }),
65
- });
66
- if (!response.ok) {
67
- throw new Error(`Google token refresh failed (${response.status}): ${await response.text()}`);
68
- }
69
- const payload = (await response.json());
70
- if (typeof payload.id_token !== "string") {
71
- throw new Error("Google token refresh returned no id_token");
72
- }
73
- return payload.id_token;
74
- };
75
- //# sourceMappingURL=auth.js.map
package/dist/auth.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { WorkspaceChange, WorkspaceTree } from "@intentic/sandbox-contract";
2
- export interface SandboxClient {
3
- tree(): Promise<WorkspaceTree>;
4
- raw(path: string): Promise<Uint8Array | undefined>;
5
- upload(path: string, bytes: Uint8Array): Promise<void>;
6
- remove(path: string): Promise<void>;
7
- mkdir(path: string): Promise<void>;
8
- watch(signal: AbortSignal): AsyncGenerator<WorkspaceChange>;
9
- }
10
- export declare const createSandboxClient: (baseUrl: string, getToken: () => Promise<string>) => SandboxClient;
11
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIjF,MAAM,WAAW,aAAa;IAC1B,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAG/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;CAC/D;AAuCD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,KAAG,aA8DtF,CAAC"}
package/dist/client.js DELETED
@@ -1,94 +0,0 @@
1
- const encodeQuery = (path) => `path=${encodeURIComponent(path)}`;
2
- async function* parseSse(body, signal) {
3
- const reader = body.getReader();
4
- const decoder = new TextDecoder();
5
- let buffer = "";
6
- signal.addEventListener("abort", () => void reader.cancel(), { once: true });
7
- for (;;) {
8
- const { done, value } = await reader.read();
9
- if (done) {
10
- return;
11
- }
12
- buffer += decoder.decode(value, { stream: true });
13
- let separator = buffer.indexOf("\n\n");
14
- while (separator !== -1) {
15
- const frame = buffer.slice(0, separator);
16
- buffer = buffer.slice(separator + 2);
17
- separator = buffer.indexOf("\n\n");
18
- const dataLine = frame.split("\n").find((line) => line.startsWith("data:"));
19
- if (dataLine === undefined) {
20
- continue;
21
- }
22
- const payload = dataLine.slice(5).trim();
23
- if (payload.length === 0) {
24
- continue;
25
- }
26
- try {
27
- yield JSON.parse(payload);
28
- }
29
- catch {
30
- }
31
- }
32
- }
33
- }
34
- export const createSandboxClient = (baseUrl, getToken) => {
35
- const root = baseUrl.replace(/\/$/, "");
36
- const authHeader = async () => ({ authorization: `Bearer ${await getToken()}` });
37
- return {
38
- tree: async () => {
39
- const response = await fetch(`${root}/workspace/tree`, { headers: await authHeader() });
40
- if (!response.ok) {
41
- throw new Error(`GET /workspace/tree failed: ${response.status}`);
42
- }
43
- return (await response.json());
44
- },
45
- raw: async (path) => {
46
- const response = await fetch(`${root}/workspace/raw?${encodeQuery(path)}`, { headers: await authHeader() });
47
- if (response.status === 404) {
48
- return undefined;
49
- }
50
- if (!response.ok) {
51
- throw new Error(`GET /workspace/raw ${path} failed: ${response.status}`);
52
- }
53
- return new Uint8Array(await response.arrayBuffer());
54
- },
55
- upload: async (path, bytes) => {
56
- const response = await fetch(`${root}/workspace/upload?${encodeQuery(path)}`, {
57
- method: "POST",
58
- headers: { ...(await authHeader()), "content-type": "application/octet-stream" },
59
- body: bytes,
60
- });
61
- if (!response.ok) {
62
- throw new Error(`POST /workspace/upload ${path} failed: ${response.status}`);
63
- }
64
- },
65
- remove: async (path) => {
66
- const response = await fetch(`${root}/workspace/entry`, {
67
- method: "DELETE",
68
- headers: { ...(await authHeader()), "content-type": "application/json" },
69
- body: JSON.stringify({ path }),
70
- });
71
- if (!response.ok) {
72
- throw new Error(`DELETE /workspace/entry ${path} failed: ${response.status}`);
73
- }
74
- },
75
- mkdir: async (path) => {
76
- const response = await fetch(`${root}/workspace/dir`, {
77
- method: "POST",
78
- headers: { ...(await authHeader()), "content-type": "application/json" },
79
- body: JSON.stringify({ path }),
80
- });
81
- if (!response.ok) {
82
- throw new Error(`POST /workspace/dir ${path} failed: ${response.status}`);
83
- }
84
- },
85
- watch: async function* (signal) {
86
- const response = await fetch(`${root}/workspace/watch`, { headers: { ...(await authHeader()), accept: "text/event-stream" }, signal });
87
- if (!response.ok || response.body === null) {
88
- throw new Error(`GET /workspace/watch failed: ${response.status}`);
89
- }
90
- yield* parseSse(response.body, signal);
91
- },
92
- };
93
- };
94
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/engine.d.ts DELETED
@@ -1,21 +0,0 @@
1
- import type { WorkspaceChange } from "@intentic/sandbox-contract";
2
- import type { SandboxClient } from "./client.js";
3
- import type { Manifest } from "./manifest.js";
4
- export type SyncAction = "noop" | "pullToLocal" | "pushToRemote" | "deleteLocal" | "deleteRemote" | "conflict";
5
- export declare const decide: (localHash: string | undefined, remoteHash: string | undefined, manifestHash: string | undefined) => SyncAction;
6
- export declare const resolveConflict: (localMtime: number, remoteMtime: number) => "local" | "remote";
7
- export interface SyncEngine {
8
- reconcile(): Promise<void>;
9
- onRemoteChange(change: WorkspaceChange): Promise<void>;
10
- onLocalPath(relPath: string): Promise<void>;
11
- }
12
- export interface EngineDeps {
13
- readonly localDir: string;
14
- readonly client: SandboxClient;
15
- readonly manifest: Manifest;
16
- readonly persist: () => void;
17
- readonly log: (message: string) => void;
18
- readonly now: () => number;
19
- }
20
- export declare const createSyncEngine: (deps: EngineDeps) => SyncEngine;
21
- //# sourceMappingURL=engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;AAS/G,eAAO,MAAM,MAAM,GAAI,WAAW,MAAM,GAAG,SAAS,EAAE,YAAY,MAAM,GAAG,SAAS,EAAE,cAAc,MAAM,GAAG,SAAS,KAAG,UAWxH,CAAC;AAKF,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,EAAE,aAAa,MAAM,KAAG,OAAO,GAAG,QAA4D,CAAC;AAuBjJ,MAAM,WAAW,UAAU;IAGvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,UAAU,KAAG,UAwJnD,CAAC"}
package/dist/engine.js DELETED
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/fs-util.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export declare const IGNORED_DIRS: Set<string>;
2
- export declare const isIgnored: (relPath: string) => boolean;
3
- export declare const hashBytes: (bytes: Uint8Array) => string;
4
- export declare const readLocalBytes: (absPath: string) => Promise<Uint8Array | undefined>;
5
- export declare const hashLocalFile: (absPath: string) => Promise<string | undefined>;
6
- export interface LocalMeta {
7
- readonly size: number;
8
- readonly mtime: number;
9
- }
10
- export declare const statLocal: (absPath: string) => Promise<LocalMeta | undefined>;
11
- export declare const walkLocalFiles: (root: string) => Promise<Map<string, LocalMeta>>;
12
- //# sourceMappingURL=fs-util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-util.d.ts","sourceRoot":"","sources":["../src/fs-util.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,aAAqF,CAAC;AAK/G,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,KAAG,OAM3C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,KAAG,MAA0D,CAAC;AAEzG,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAMpF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAG/E,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,SAAS,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAO9E,CAAC;AAIF,eAAO,MAAM,cAAc,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAyBjF,CAAC"}
package/dist/fs-util.js DELETED
@@ -1,61 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { readdir, readFile, stat } from "node:fs/promises";
3
- import { join, relative, sep } from "node:path";
4
- export const IGNORED_DIRS = new Set([".git", "node_modules", "dist", ".cache", ".turbo", ".next", ".angular"]);
5
- const isSecretFile = (name) => name === ".secrets.json" || name === "claude.json" || name === "capabilities.json" || (name.startsWith(".env") && name !== ".env.example");
6
- export const isIgnored = (relPath) => {
7
- const segments = relPath.split(/[\\/]/).filter((segment) => segment.length > 0);
8
- if (segments.some((segment) => IGNORED_DIRS.has(segment))) {
9
- return true;
10
- }
11
- return isSecretFile(segments.at(-1) ?? "");
12
- };
13
- export const hashBytes = (bytes) => createHash("sha256").update(bytes).digest("hex");
14
- export const readLocalBytes = async (absPath) => {
15
- try {
16
- return await readFile(absPath);
17
- }
18
- catch {
19
- return undefined;
20
- }
21
- };
22
- export const hashLocalFile = async (absPath) => {
23
- const bytes = await readLocalBytes(absPath);
24
- return bytes === undefined ? undefined : hashBytes(bytes);
25
- };
26
- export const statLocal = async (absPath) => {
27
- try {
28
- const info = await stat(absPath);
29
- return { size: info.size, mtime: info.mtimeMs };
30
- }
31
- catch {
32
- return undefined;
33
- }
34
- };
35
- export const walkLocalFiles = async (root) => {
36
- const files = new Map();
37
- const walk = async (dir) => {
38
- const dirents = await readdir(dir, { withFileTypes: true }).catch(() => []);
39
- for (const dirent of dirents) {
40
- const abs = join(dir, dirent.name);
41
- const rel = relative(root, abs).split(sep).join("/");
42
- if (isIgnored(rel) || dirent.isSymbolicLink()) {
43
- continue;
44
- }
45
- if (dirent.isDirectory()) {
46
- await walk(abs);
47
- continue;
48
- }
49
- if (!dirent.isFile()) {
50
- continue;
51
- }
52
- const meta = await statLocal(abs);
53
- if (meta !== undefined) {
54
- files.set(rel, meta);
55
- }
56
- }
57
- };
58
- await walk(root);
59
- return files;
60
- };
61
- //# sourceMappingURL=fs-util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-util.js","sourceRoot":"","sources":["../src/fs-util.ts"],"names":[],"mappings":"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"}
package/dist/install.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare const install: (command: readonly string[]) => Promise<string>;
2
- export declare const uninstall: () => Promise<string>;
3
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AA0EA,eAAO,MAAM,OAAO,GAAU,SAAS,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CAWxE,CAAC;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,MAAM,CAgBhD,CAAC"}
package/dist/install.js DELETED
@@ -1,93 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- import { mkdir, rm, writeFile } from "node:fs/promises";
3
- import { homedir } from "node:os";
4
- import { join } from "node:path";
5
- const SERVICE = "intentic-sync";
6
- const quote = (arg) => (arg.includes(" ") ? `"${arg}"` : arg);
7
- const systemdUnitPath = () => join(homedir(), ".config", "systemd", "user", `${SERVICE}.service`);
8
- const launchdPlistPath = () => join(homedir(), "Library", "LaunchAgents", "dev.intentic.sync.plist");
9
- const installLinux = async (command) => {
10
- const path = systemdUnitPath();
11
- const unit = [
12
- "[Unit]",
13
- "Description=intentic-sync — mirror a sandbox to a local directory",
14
- "After=network-online.target",
15
- "",
16
- "[Service]",
17
- `ExecStart=${command.map(quote).join(" ")}`,
18
- "Restart=always",
19
- "RestartSec=5",
20
- "",
21
- "[Install]",
22
- "WantedBy=default.target",
23
- "",
24
- ].join("\n");
25
- await mkdir(join(homedir(), ".config", "systemd", "user"), { recursive: true });
26
- await writeFile(path, unit, "utf8");
27
- spawnSync("systemctl", ["--user", "daemon-reload"], { stdio: "ignore" });
28
- const enabled = spawnSync("systemctl", ["--user", "enable", "--now", SERVICE], { stdio: "inherit" });
29
- spawnSync("loginctl", ["enable-linger"], { stdio: "ignore" });
30
- return enabled.status === 0 ? `enabled systemd user service (${path})` : `wrote ${path} — enable with: systemctl --user enable --now ${SERVICE}`;
31
- };
32
- const installMac = async (command) => {
33
- const path = launchdPlistPath();
34
- const args = command.map((arg) => ` <string>${arg}</string>`).join("\n");
35
- const plist = [
36
- '<?xml version="1.0" encoding="UTF-8"?>',
37
- '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">',
38
- '<plist version="1.0">',
39
- "<dict>",
40
- " <key>Label</key>",
41
- " <string>dev.intentic.sync</string>",
42
- " <key>ProgramArguments</key>",
43
- " <array>",
44
- args,
45
- " </array>",
46
- " <key>RunAtLoad</key>",
47
- " <true/>",
48
- " <key>KeepAlive</key>",
49
- " <true/>",
50
- "</dict>",
51
- "</plist>",
52
- "",
53
- ].join("\n");
54
- await mkdir(join(homedir(), "Library", "LaunchAgents"), { recursive: true });
55
- await writeFile(path, plist, "utf8");
56
- spawnSync("launchctl", ["unload", path], { stdio: "ignore" });
57
- spawnSync("launchctl", ["load", "-w", path], { stdio: "inherit" });
58
- return `loaded launchd agent (${path})`;
59
- };
60
- const installWindows = (command) => {
61
- const result = spawnSync("schtasks", ["/Create", "/TN", SERVICE, "/TR", command.map(quote).join(" "), "/SC", "ONLOGON", "/F"], { stdio: "inherit" });
62
- return result.status === 0 ? `registered scheduled task "${SERVICE}" (runs at logon)` : `failed to register scheduled task — run schtasks manually`;
63
- };
64
- export const install = async (command) => {
65
- if (process.platform === "linux") {
66
- return installLinux(command);
67
- }
68
- if (process.platform === "darwin") {
69
- return installMac(command);
70
- }
71
- if (process.platform === "win32") {
72
- return installWindows(command);
73
- }
74
- throw new Error(`autostart is not supported on ${process.platform} — run \`intentic-sync run\` yourself.`);
75
- };
76
- export const uninstall = async () => {
77
- if (process.platform === "linux") {
78
- spawnSync("systemctl", ["--user", "disable", "--now", SERVICE], { stdio: "ignore" });
79
- await rm(systemdUnitPath(), { force: true });
80
- return "removed systemd user service";
81
- }
82
- if (process.platform === "darwin") {
83
- spawnSync("launchctl", ["unload", launchdPlistPath()], { stdio: "ignore" });
84
- await rm(launchdPlistPath(), { force: true });
85
- return "removed launchd agent";
86
- }
87
- if (process.platform === "win32") {
88
- spawnSync("schtasks", ["/Delete", "/TN", SERVICE, "/F"], { stdio: "ignore" });
89
- return "removed scheduled task";
90
- }
91
- throw new Error(`autostart is not supported on ${process.platform}`);
92
- };
93
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMjC,MAAM,OAAO,GAAG,eAAe,CAAC;AAChC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE9E,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,UAAU,CAAC,CAAC;AAC1G,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,yBAAyB,CAAC,CAAC;AAE7G,MAAM,YAAY,GAAG,KAAK,EAAE,OAA0B,EAAmB,EAAE;IACvE,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG;QACT,QAAQ;QACR,mEAAmE;QACnE,6BAA6B;QAC7B,EAAE;QACF,WAAW;QACX,aAAa,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,gBAAgB;QAChB,cAAc;QACd,EAAE;QACF,WAAW;QACX,yBAAyB;QACzB,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAErG,SAAS,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,iDAAiD,OAAO,EAAE,CAAC;AACrJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,OAA0B,EAAmB,EAAE;IACrE,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG;QACV,wCAAwC;QACxC,wGAAwG;QACxG,uBAAuB;QACvB,QAAQ;QACR,sBAAsB;QACtB,wCAAwC;QACxC,iCAAiC;QACjC,aAAa;QACb,IAAI;QACJ,cAAc;QACd,0BAA0B;QAC1B,aAAa;QACb,0BAA0B;QAC1B,aAAa;QACb,SAAS;QACT,UAAU;QACV,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,OAAO,yBAAyB,IAAI,GAAG,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAA0B,EAAU,EAAE;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrJ,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,8BAA8B,OAAO,mBAAmB,CAAC,CAAC,CAAC,2DAA2D,CAAC;AACxJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,OAA0B,EAAmB,EAAE;IACzE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,QAAQ,wCAAwC,CAAC,CAAC;AAC/G,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrF,MAAM,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,uBAAuB,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,OAAO,wBAAwB,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC"}
@@ -1,8 +0,0 @@
1
- export interface ManifestEntry {
2
- readonly size: number;
3
- readonly hash: string;
4
- }
5
- export type Manifest = Map<string, ManifestEntry>;
6
- export declare const loadManifest: (path: string) => Promise<Manifest>;
7
- export declare const saveManifest: (path: string, manifest: Manifest) => Promise<void>;
8
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAElD,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAMjE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,EAAE,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAGjF,CAAC"}
package/dist/manifest.js DELETED
@@ -1,15 +0,0 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
- import { dirname } from "node:path";
3
- export const loadManifest = async (path) => {
4
- try {
5
- return new Map(Object.entries(JSON.parse(await readFile(path, "utf8"))));
6
- }
7
- catch {
8
- return new Map();
9
- }
10
- };
11
- export const saveManifest = async (path, manifest) => {
12
- await mkdir(dirname(path), { recursive: true });
13
- await writeFile(path, JSON.stringify(Object.fromEntries(manifest)), "utf8");
14
- };
15
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAqB,EAAE;IAClE,IAAI,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAkC,CAAC,CAAC,CAAC;IAC9G,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,QAAkB,EAAiB,EAAE;IAClF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC,CAAC"}