@aligndottech/cli 0.46.0 → 0.47.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 +10 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect-agents.d.ts.map +1 -1
- package/dist/commands/connect-agents.js +13 -3
- package/dist/commands/connect-agents.js.map +1 -1
- package/dist/commands/default-action.d.ts +5 -5
- package/dist/commands/default-action.d.ts.map +1 -1
- package/dist/commands/default-action.js +40 -13
- package/dist/commands/default-action.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +12 -4
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +2 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/setup.d.ts +2 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +84 -114
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/use.d.ts +32 -0
- package/dist/commands/use.d.ts.map +1 -0
- package/dist/commands/use.js +94 -0
- package/dist/commands/use.js.map +1 -0
- package/dist/lib/agent-rules.d.ts +18 -5
- package/dist/lib/agent-rules.d.ts.map +1 -1
- package/dist/lib/agent-rules.js +81 -22
- package/dist/lib/agent-rules.js.map +1 -1
- package/dist/lib/config.d.ts +14 -10
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +64 -17
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/foreign-env.d.ts +23 -0
- package/dist/lib/foreign-env.d.ts.map +1 -0
- package/dist/lib/foreign-env.js +27 -0
- package/dist/lib/foreign-env.js.map +1 -0
- package/dist/lib/gateway-client.d.ts +5 -1
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +10 -2
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/launch/adapters/args.d.ts +7 -0
- package/dist/lib/launch/adapters/args.d.ts.map +1 -0
- package/dist/lib/launch/adapters/args.js +10 -0
- package/dist/lib/launch/adapters/args.js.map +1 -0
- package/dist/lib/launch/adapters/claude-code.d.ts +39 -0
- package/dist/lib/launch/adapters/claude-code.d.ts.map +1 -0
- package/dist/lib/launch/adapters/claude-code.js +39 -0
- package/dist/lib/launch/adapters/claude-code.js.map +1 -0
- package/dist/lib/launch/adapters/cursor.d.ts +18 -0
- package/dist/lib/launch/adapters/cursor.d.ts.map +1 -0
- package/dist/lib/launch/adapters/cursor.js +27 -0
- package/dist/lib/launch/adapters/cursor.js.map +1 -0
- package/dist/lib/launch/adapters/opencode.d.ts +21 -0
- package/dist/lib/launch/adapters/opencode.d.ts.map +1 -0
- package/dist/lib/launch/adapters/opencode.js +64 -0
- package/dist/lib/launch/adapters/opencode.js.map +1 -0
- package/dist/lib/launch/adapters/pi.d.ts +23 -0
- package/dist/lib/launch/adapters/pi.d.ts.map +1 -0
- package/dist/lib/launch/adapters/pi.js +35 -0
- package/dist/lib/launch/adapters/pi.js.map +1 -0
- package/dist/lib/launch/agents.d.ts +24 -0
- package/dist/lib/launch/agents.d.ts.map +1 -0
- package/dist/lib/launch/agents.js +22 -0
- package/dist/lib/launch/agents.js.map +1 -0
- package/dist/lib/launch/config-writes.d.ts +37 -0
- package/dist/lib/launch/config-writes.d.ts.map +1 -0
- package/dist/lib/launch/config-writes.js +26 -0
- package/dist/lib/launch/config-writes.js.map +1 -0
- package/dist/lib/launch/cursor-state.d.ts +14 -0
- package/dist/lib/launch/cursor-state.d.ts.map +1 -0
- package/dist/lib/launch/cursor-state.js +26 -0
- package/dist/lib/launch/cursor-state.js.map +1 -0
- package/dist/lib/launch/detect.d.ts +7 -0
- package/dist/lib/launch/detect.d.ts.map +1 -0
- package/dist/lib/launch/detect.js +34 -0
- package/dist/lib/launch/detect.js.map +1 -0
- package/dist/lib/launch/launch-files.d.ts +15 -0
- package/dist/lib/launch/launch-files.d.ts.map +1 -0
- package/dist/lib/launch/launch-files.js +56 -0
- package/dist/lib/launch/launch-files.js.map +1 -0
- package/dist/lib/launch/launch.d.ts +59 -0
- package/dist/lib/launch/launch.d.ts.map +1 -0
- package/dist/lib/launch/launch.js +198 -0
- package/dist/lib/launch/launch.js.map +1 -0
- package/dist/lib/launch/opencode-state.d.ts +16 -0
- package/dist/lib/launch/opencode-state.d.ts.map +1 -0
- package/dist/lib/launch/opencode-state.js +103 -0
- package/dist/lib/launch/opencode-state.js.map +1 -0
- package/dist/lib/launch/pi-state.d.ts +23 -0
- package/dist/lib/launch/pi-state.d.ts.map +1 -0
- package/dist/lib/launch/pi-state.js +112 -0
- package/dist/lib/launch/pi-state.js.map +1 -0
- package/dist/lib/launch/pick-agent.d.ts +28 -0
- package/dist/lib/launch/pick-agent.d.ts.map +1 -0
- package/dist/lib/launch/pick-agent.js +63 -0
- package/dist/lib/launch/pick-agent.js.map +1 -0
- package/dist/lib/launch/project-state.d.ts +21 -0
- package/dist/lib/launch/project-state.d.ts.map +1 -0
- package/dist/lib/launch/project-state.js +100 -0
- package/dist/lib/launch/project-state.js.map +1 -0
- package/dist/lib/launch/run-agent.d.ts +21 -0
- package/dist/lib/launch/run-agent.d.ts.map +1 -0
- package/dist/lib/launch/run-agent.js +69 -0
- package/dist/lib/launch/run-agent.js.map +1 -0
- package/dist/lib/local-gateway-client.d.ts +4 -4
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +3 -1
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/mcp-setup.d.ts +9 -2
- package/dist/lib/mcp-setup.d.ts.map +1 -1
- package/dist/lib/mcp-setup.js +104 -28
- package/dist/lib/mcp-setup.js.map +1 -1
- package/dist/lib/mcp-timeline-tools.d.ts.map +1 -1
- package/dist/lib/mcp-timeline-tools.js +5 -3
- package/dist/lib/mcp-timeline-tools.js.map +1 -1
- package/dist/lib/safe-config-write.d.ts +140 -0
- package/dist/lib/safe-config-write.d.ts.map +1 -0
- package/dist/lib/safe-config-write.js +701 -0
- package/dist/lib/safe-config-write.js.map +1 -0
- package/dist/lib/setup-route.d.ts +26 -0
- package/dist/lib/setup-route.d.ts.map +1 -0
- package/dist/lib/setup-route.js +36 -0
- package/dist/lib/setup-route.js.map +1 -0
- package/dist/lib/usage-telemetry.d.ts +6 -2
- package/dist/lib/usage-telemetry.d.ts.map +1 -1
- package/dist/lib/usage-telemetry.js +6 -2
- package/dist/lib/usage-telemetry.js.map +1 -1
- package/dist/lib/user-hooks.d.ts +2 -1
- package/dist/lib/user-hooks.d.ts.map +1 -1
- package/dist/lib/user-hooks.js +42 -10
- package/dist/lib/user-hooks.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { chmodSync, copyFileSync, lstatSync, mkdirSync, readdirSync, readFileSync, readlinkSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
export declare const BACKUP_SUFFIX = ".align-backup";
|
|
3
|
+
export type SafeWriteStatus = 'written' | 'unchanged' | 'declined' | 'symlink';
|
|
4
|
+
/** The fs calls the writer makes. A parameter so a test can change the file mid-write. */
|
|
5
|
+
export interface SafeFs {
|
|
6
|
+
readFileSync: typeof readFileSync;
|
|
7
|
+
writeFileSync: typeof writeFileSync;
|
|
8
|
+
renameSync: typeof renameSync;
|
|
9
|
+
copyFileSync: typeof copyFileSync;
|
|
10
|
+
lstatSync: typeof lstatSync;
|
|
11
|
+
readlinkSync: typeof readlinkSync;
|
|
12
|
+
chmodSync: typeof chmodSync;
|
|
13
|
+
unlinkSync: typeof unlinkSync;
|
|
14
|
+
mkdirSync: typeof mkdirSync;
|
|
15
|
+
readdirSync: typeof readdirSync;
|
|
16
|
+
}
|
|
17
|
+
type Json = Record<string, unknown>;
|
|
18
|
+
/** One value or array element align put in a JSON config. Hashes only, never the value. */
|
|
19
|
+
export interface OwnedItem {
|
|
20
|
+
path: string[];
|
|
21
|
+
kind: 'value' | 'array-item';
|
|
22
|
+
sha256: string;
|
|
23
|
+
/** Prune ancestors back to this path length if they end up empty (the parents align created). */
|
|
24
|
+
createdDepth: number;
|
|
25
|
+
/**
|
|
26
|
+
* The key existed before align's first write and align overwrote it. `beforeSha256` is the
|
|
27
|
+
* hash of the user's value; the value itself comes back from align's backup.
|
|
28
|
+
*/
|
|
29
|
+
replaced?: boolean;
|
|
30
|
+
beforeSha256?: string;
|
|
31
|
+
/** Which snapshot holds the user's value: 0 is `<file>.align-backup`, n is `<file>.align-backup.<n>`. */
|
|
32
|
+
snapshot?: number;
|
|
33
|
+
/** align's write took this key (or this whole array) away; undo puts the user's original back when it is still gone. */
|
|
34
|
+
removed?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** One file align wrote, as the manifest remembers it. */
|
|
37
|
+
export interface WrittenConfig {
|
|
38
|
+
/** The file did not exist before align's first write. */
|
|
39
|
+
created: boolean;
|
|
40
|
+
/** sha256 of what align last wrote. */
|
|
41
|
+
sha256: string;
|
|
42
|
+
/**
|
|
43
|
+
* sha256 of what align wrote FIRST. A whole-file undo needs the file to equal this AND the last
|
|
44
|
+
* write: a later align rewrite folds the user's edits into the file, so matching only the last
|
|
45
|
+
* write proves nothing about whether they edited it in between.
|
|
46
|
+
*/
|
|
47
|
+
firstSha256: string;
|
|
48
|
+
/** 'made': align made the backup. 'foreign': one was already there and is not trusted. 'none': no original to keep. */
|
|
49
|
+
backup: 'made' | 'foreign' | 'none';
|
|
50
|
+
backupSha256?: string;
|
|
51
|
+
owned?: OwnedItem[];
|
|
52
|
+
/**
|
|
53
|
+
* Extra copies of the file taken just before a write that found it changed by someone else
|
|
54
|
+
* (`<file>.align-backup.<n>`, 0600). Hashes only: the manifest never holds config values.
|
|
55
|
+
*/
|
|
56
|
+
snapshots?: Array<{
|
|
57
|
+
n: number;
|
|
58
|
+
sha256: string;
|
|
59
|
+
}>;
|
|
60
|
+
/** Text files: the managed block align wrote. */
|
|
61
|
+
block?: {
|
|
62
|
+
start: string;
|
|
63
|
+
end: string;
|
|
64
|
+
sha256: string; /** a block was already there, and align's replaced it: the original is in the backup */
|
|
65
|
+
replaced?: boolean;
|
|
66
|
+
snapshot?: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Fold one write into what the manifest already holds for that file. */
|
|
70
|
+
export declare function mergeWrittenConfig(prev: WrittenConfig | undefined, next: WrittenConfig): WrittenConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Where the writer reports each file it wrote (`record`, handed only what THIS write added;
|
|
73
|
+
* the store merges) and how it reads back what is already recorded (`get`). Installed once by
|
|
74
|
+
* the CLI (cli.ts), never by a test, so a test that writes a config does not touch the real store.
|
|
75
|
+
*/
|
|
76
|
+
export declare function setWriteRecorder(record: ((file: string, entry: WrittenConfig) => void) | undefined, get?: (file: string) => WrittenConfig | undefined): void;
|
|
77
|
+
export interface SafeWriteOptions {
|
|
78
|
+
/** One line to the user, stderr. Defaults to console.error. */
|
|
79
|
+
note?: (line: string) => void;
|
|
80
|
+
fs?: SafeFs;
|
|
81
|
+
/** JSON only: end the file with a newline (default false, matching the older writers). */
|
|
82
|
+
trailingNewline?: boolean;
|
|
83
|
+
/** Directories at or above this are the user's own and are not checked for links. Default: the home dir. */
|
|
84
|
+
root?: string;
|
|
85
|
+
/** Text only: the markers of the block align manages, so undo can take just that block out. */
|
|
86
|
+
markers?: {
|
|
87
|
+
start: string;
|
|
88
|
+
end: string;
|
|
89
|
+
};
|
|
90
|
+
/** The tail of the invalid-JSON message: what to do about it. */
|
|
91
|
+
invalidJsonAdvice?: string;
|
|
92
|
+
}
|
|
93
|
+
export declare class SafeWriteConflictError extends Error {
|
|
94
|
+
constructor(file: string);
|
|
95
|
+
}
|
|
96
|
+
/** The text form. `compute` gets the current text (null when missing) and returns the new text, or undefined to leave it. */
|
|
97
|
+
export declare function safeWriteText(file: string, compute: (current: string | null) => string | undefined, opts?: SafeWriteOptions): SafeWriteStatus;
|
|
98
|
+
/**
|
|
99
|
+
* What align changed in a JSON config. Containers (the root and its direct children, such as
|
|
100
|
+
* `mcpServers` or `hooks`) are walked; a server entry one level further down is a unit:
|
|
101
|
+
* - new key: one `value` item (or, under a new container, one item per new entry);
|
|
102
|
+
* - existing key whose value changed: ONE `replaced` item holding the hash of the user's value,
|
|
103
|
+
* never a diff into it (a diff into `args` would "undo" half an entry);
|
|
104
|
+
* - existing array: if align only added elements, those elements; if it REMOVED or changed any
|
|
105
|
+
* element it did not put there itself, the whole array is one `replaced` unit;
|
|
106
|
+
* - an existing key align took away: a `removed` unit.
|
|
107
|
+
* `prev` is what an earlier write already recorded, so align's own earlier output is never
|
|
108
|
+
* mistaken for the user's.
|
|
109
|
+
*/
|
|
110
|
+
export declare function ownedOf(before: Json, after: Json, prev?: OwnedItem[], snapshot?: number): OwnedItem[];
|
|
111
|
+
/**
|
|
112
|
+
* The JSON form. `update` gets the parsed object ({} for a missing or empty file) and returns
|
|
113
|
+
* the object to write, or undefined to leave the file alone. A file that does not parse is an
|
|
114
|
+
* error, never overwritten.
|
|
115
|
+
*/
|
|
116
|
+
export declare function safeWriteJson(file: string, update: (current: Json) => Json | undefined, opts?: SafeWriteOptions): SafeWriteStatus;
|
|
117
|
+
export interface UndoReport {
|
|
118
|
+
/** Whole file put back from align's own backup. */
|
|
119
|
+
restored: string[];
|
|
120
|
+
/** A file align created, removed (it still held exactly what align wrote). */
|
|
121
|
+
removed: string[];
|
|
122
|
+
/** Only align's own entries taken out; the rest of the file kept. */
|
|
123
|
+
cleaned: string[];
|
|
124
|
+
/** Files left as they are, one line each, with what to do by hand. */
|
|
125
|
+
skipped: string[];
|
|
126
|
+
/** The manifest entries that are finished. Skipped files are NOT in here. */
|
|
127
|
+
done: string[];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Take align back out of every recorded file.
|
|
131
|
+
* - If the file still holds exactly what align last wrote, the whole file goes back: a file
|
|
132
|
+
* align created is removed, any other comes back from align's own backup (a regular file
|
|
133
|
+
* align made, whose hash matches; anything else at that path is not trusted).
|
|
134
|
+
* - Otherwise the user has touched it since, and only align's own entries come out. An entry
|
|
135
|
+
* the user edited, or one align overwrote, is left and named.
|
|
136
|
+
* Skipped files keep their manifest entry and their backup.
|
|
137
|
+
*/
|
|
138
|
+
export declare function undoWrittenConfigs(manifest: Record<string, WrittenConfig>, fs?: SafeFs): UndoReport;
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=safe-config-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-config-write.d.ts","sourceRoot":"","sources":["../../src/lib/safe-config-write.ts"],"names":[],"mappings":"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"}
|