@aligndottech/cli 0.46.1 → 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/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,94 @@
|
|
|
1
|
+
import { agentByName, LAUNCH_AGENTS, resolveAgentBin } from '../lib/launch/agents.js';
|
|
2
|
+
import { findOnPath } from '../lib/launch/detect.js';
|
|
3
|
+
import { undoWrittenConfigs } from '../lib/safe-config-write.js';
|
|
4
|
+
/**
|
|
5
|
+
* `align use [agent]`: switch which coding agent bare `align` opens. Nobody has to run it
|
|
6
|
+
* first - bare `align` picks the one agent it finds - so this is only for changing later.
|
|
7
|
+
* Returns the exit code.
|
|
8
|
+
*/
|
|
9
|
+
export async function runUse(name, d, opts = {}) {
|
|
10
|
+
if (opts.undo) {
|
|
11
|
+
if (name !== undefined || opts.none) {
|
|
12
|
+
d.err('error: --undo takes no agent name and cannot be combined with --none.');
|
|
13
|
+
return 2;
|
|
14
|
+
}
|
|
15
|
+
const manifest = d.writtenConfigs.get();
|
|
16
|
+
if (Object.keys(manifest).length === 0) {
|
|
17
|
+
d.log('Nothing to undo: align has not written to any agent config.');
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
const report = undoWrittenConfigs(manifest);
|
|
21
|
+
for (const f of report.restored)
|
|
22
|
+
d.log(`Restored ${f} from its backup.`);
|
|
23
|
+
for (const f of report.removed)
|
|
24
|
+
d.log(`Removed ${f} (align created it).`);
|
|
25
|
+
for (const f of report.cleaned)
|
|
26
|
+
d.log(`Took align's own entries out of ${f}. Your entries are kept; the file was reformatted.`);
|
|
27
|
+
for (const line of report.skipped)
|
|
28
|
+
d.err(`Left alone: ${line}`);
|
|
29
|
+
// Only the finished files are forgotten: a skipped one keeps its record (and its backup).
|
|
30
|
+
d.writtenConfigs.drop(report.done);
|
|
31
|
+
// Without this, the next bare `align` would auto-pick the one installed agent and write
|
|
32
|
+
// the same entries back.
|
|
33
|
+
d.config.clearAgent();
|
|
34
|
+
d.config.setLaunchOff(true);
|
|
35
|
+
d.config.clearRefusedWrites();
|
|
36
|
+
const n = report.done.length;
|
|
37
|
+
d.log(`Restored ${n} ${n === 1 ? 'file' : 'files'}. align will not open an agent until you run \`align use <agent>\`.`);
|
|
38
|
+
return report.skipped.length > 0 ? 1 : 0;
|
|
39
|
+
}
|
|
40
|
+
if (opts.none) {
|
|
41
|
+
if (name !== undefined) {
|
|
42
|
+
d.err('error: --none takes no agent name.');
|
|
43
|
+
return 2;
|
|
44
|
+
}
|
|
45
|
+
d.config.clearAgent();
|
|
46
|
+
d.config.setLaunchOff(false); // `--none` means "pick again", which launching being off would contradict
|
|
47
|
+
d.log('Choice cleared. Bare `align` will pick an agent again.');
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
if (name === undefined) {
|
|
51
|
+
const current = agentByName(d.config.getAgent());
|
|
52
|
+
d.log(current ? `Agent: ${current.name} (${current.label})` : 'No agent chosen yet. Bare `align` picks one automatically when it finds a supported agent on your PATH.');
|
|
53
|
+
return 0;
|
|
54
|
+
}
|
|
55
|
+
const agent = agentByName(name);
|
|
56
|
+
if (!agent) {
|
|
57
|
+
d.err(`error: unknown agent '${name}'. Choose one of: ${LAUNCH_AGENTS.map((a) => a.name).join(', ')}`);
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
if (!agent.supported) {
|
|
61
|
+
d.err(`${agent.label} launching is coming soon. Nothing changed.`);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
if (!resolveAgentBin(agent, d.findOnPath, d.env, d.platform)) {
|
|
65
|
+
d.err(`${agent.bin} is not on your PATH. Install it (${agent.install}), then run this again. Nothing changed.`);
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
d.config.setAgent(agent.name);
|
|
69
|
+
d.log(`Bare \`align\` now opens ${agent.label}.`);
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
export function registerUseCommand(program) {
|
|
73
|
+
program
|
|
74
|
+
.command('use [agent]')
|
|
75
|
+
.option('--none', 'Clear the choice, so bare `align` picks again')
|
|
76
|
+
.option('--undo', 'Put back every agent config file align wrote (restores each from its .align-backup)')
|
|
77
|
+
.description('Choose the coding agent bare `align` opens (no argument shows the current one)')
|
|
78
|
+
.action(async (agent, opts) => {
|
|
79
|
+
const { createConfigStore } = await import('../lib/config.js');
|
|
80
|
+
const config = createConfigStore();
|
|
81
|
+
const code = await runUse(agent, {
|
|
82
|
+
config,
|
|
83
|
+
writtenConfigs: { get: () => config.getWrittenConfigs(), drop: (files) => config.dropWrittenConfigs(files) },
|
|
84
|
+
findOnPath,
|
|
85
|
+
env: process.env,
|
|
86
|
+
platform: process.platform,
|
|
87
|
+
log: (l) => console.log(l),
|
|
88
|
+
err: (l) => console.error(l),
|
|
89
|
+
}, opts);
|
|
90
|
+
if (code !== 0)
|
|
91
|
+
process.exit(code);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../src/commands/use.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
|
+
import { type OnForeign } from './foreign-env.js';
|
|
1
2
|
export declare const ALIGN_NUDGE_START = "<!-- align:start (managed by `align setup` - do not edit) -->";
|
|
2
3
|
export declare const ALIGN_NUDGE_END = "<!-- align:end -->";
|
|
3
|
-
export declare function
|
|
4
|
+
export declare function isAlignHookGroup(group: unknown): boolean;
|
|
5
|
+
export declare function isAlignSessionHookGroup(group: unknown): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* The Pre/PostToolUse hook groups Claude Code gets, as one shape for both writers: the
|
|
8
|
+
* committed project file (writeClaudeCodeHook) and the per-session launch file (C1).
|
|
9
|
+
*/
|
|
10
|
+
export declare function alignClaudeHooks(env?: string): Record<'PreToolUse' | 'PostToolUse', unknown[]>;
|
|
11
|
+
export declare function writeClaudeCodeHook(cwd: string, env?: string, onForeign?: OnForeign): boolean;
|
|
4
12
|
export declare function writeClaudeCodeSessionHook(cwd: string): void;
|
|
13
|
+
/** The managed CLAUDE.md block as text, for per-session injection (C1). */
|
|
14
|
+
export declare function alignNudgeBody(): string;
|
|
5
15
|
export declare function writeManagedNudge(cwd: string): void;
|
|
6
16
|
export declare function writeAgentsNudge(cwd: string): void;
|
|
7
17
|
export declare function writeCursorRule(cwd: string): void;
|
|
8
|
-
export declare function writeProjectMcpConfig(cwd: string, env?: string):
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
18
|
+
export declare function writeProjectMcpConfig(cwd: string, env?: string, onForeign?: OnForeign): boolean;
|
|
19
|
+
export declare function piExtensionBody(env?: string): string;
|
|
20
|
+
export declare function writePiExtension(cwd: string, env?: string, onForeign?: OnForeign): boolean;
|
|
21
|
+
export declare function writeGeminiHooks(cwd: string, env?: string, onForeign?: OnForeign): boolean;
|
|
22
|
+
export declare function openCodePluginBody(env?: string): string;
|
|
23
|
+
export declare function writeOpenCodePlugin(cwd: string, env?: string, onForeign?: OnForeign): boolean;
|
|
12
24
|
export declare function setupAgentAlignment(opts: {
|
|
13
25
|
cwd: string;
|
|
14
26
|
env?: string;
|
|
27
|
+
onForeign?: OnForeign;
|
|
15
28
|
}): string[];
|
|
16
29
|
//# sourceMappingURL=agent-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-rules.d.ts","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-rules.d.ts","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAuCnE,eAAO,MAAM,iBAAiB,kEAAkE,CAAC;AACjG,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAOpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,aAAa,EAAE,OAAO,EAAE,CAAC,CAM9F;AAKD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAoC7F;AAWD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAyB5D;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAoDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEnD;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAElD;AAyBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjD;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAkC/F;AA6CD,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA2DpD;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAU1F;AAmCD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAuC1F;AAYD,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA6DvD;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAU7F;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,EAAE,CA6BxG"}
|
package/dist/lib/agent-rules.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { carriesLocalEnv } from './foreign-env.js';
|
|
3
4
|
import { alignServerEntry } from './mcp-setup.js';
|
|
4
5
|
// ALI-121: the deterministic auto-alignment layer. ALI-120 gave the MCP server
|
|
5
6
|
// instructions (model discretion); these project-local, committed files make the
|
|
@@ -39,18 +40,29 @@ function advisoryCommand(env) {
|
|
|
39
40
|
// prod is the default env, so leave it off to keep the committed command portable.
|
|
40
41
|
return env && env !== 'prod' ? `align check --advisory --env ${env}` : 'align check --advisory';
|
|
41
42
|
}
|
|
42
|
-
function isAlignHookGroup(group) {
|
|
43
|
+
export function isAlignHookGroup(group) {
|
|
43
44
|
const hooks = group?.hooks;
|
|
44
45
|
return Array.isArray(hooks) && hooks.some((h) => String(h?.command ?? '').includes('align check --advisory'));
|
|
45
46
|
}
|
|
46
|
-
function isAlignSessionHookGroup(group) {
|
|
47
|
+
export function isAlignSessionHookGroup(group) {
|
|
47
48
|
const hooks = group?.hooks;
|
|
48
49
|
return Array.isArray(hooks) && hooks.some((h) => String(h?.command ?? '').includes(SESSION_INJECT_COMMAND));
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* The Pre/PostToolUse hook groups Claude Code gets, as one shape for both writers: the
|
|
53
|
+
* committed project file (writeClaudeCodeHook) and the per-session launch file (C1).
|
|
54
|
+
*/
|
|
55
|
+
export function alignClaudeHooks(env) {
|
|
56
|
+
const group = () => ({
|
|
57
|
+
matcher: 'Write|Edit',
|
|
58
|
+
hooks: [{ type: 'command', command: advisoryCommand(env), timeout: HOOK_TIMEOUT_SECONDS }],
|
|
59
|
+
});
|
|
60
|
+
return { PreToolUse: [group()], PostToolUse: [group()] };
|
|
61
|
+
}
|
|
50
62
|
// Merge a PostToolUse (Write|Edit) hook into the project .claude/settings.json. The
|
|
51
63
|
// file is committed so the whole team gets it; Claude Code shows a one-time "approve
|
|
52
64
|
// hooks" prompt the first time it loads a committed hook (documented in setup output).
|
|
53
|
-
export function writeClaudeCodeHook(cwd, env) {
|
|
65
|
+
export function writeClaudeCodeHook(cwd, env, onForeign) {
|
|
54
66
|
const dir = path.join(cwd, '.claude');
|
|
55
67
|
const file = path.join(dir, 'settings.json');
|
|
56
68
|
let settings = {};
|
|
@@ -63,23 +75,27 @@ export function writeClaudeCodeHook(cwd, env) {
|
|
|
63
75
|
}
|
|
64
76
|
}
|
|
65
77
|
const hooks = (settings['hooks'] ?? {});
|
|
78
|
+
// The local wizard never replaces a hook that checks against a team env.
|
|
79
|
+
if (onForeign && env === 'local' && ['PreToolUse', 'PostToolUse'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignHookGroup(g) && !carriesLocalEnv(JSON.stringify(g))))) {
|
|
80
|
+
onForeign('.claude/settings.json');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
66
83
|
// The same advisory command goes in both events; it self-detects Pre vs Post from the
|
|
67
84
|
// hook payload on stdin. PreToolUse catches a conflict before the edit is written
|
|
68
85
|
// (ALI-122); PostToolUse is the backstop on the landed change (ALI-121). Strip any
|
|
69
86
|
// prior align-managed group from each so re-runs stay idempotent and pick up env changes.
|
|
87
|
+
const alignGroups = alignClaudeHooks(env);
|
|
70
88
|
for (const event of ['PreToolUse', 'PostToolUse']) {
|
|
71
89
|
const existing = (Array.isArray(hooks[event]) ? hooks[event] : []);
|
|
72
90
|
const preserved = existing.filter((g) => !isAlignHookGroup(g));
|
|
73
|
-
preserved.push(
|
|
74
|
-
matcher: 'Write|Edit',
|
|
75
|
-
hooks: [{ type: 'command', command: advisoryCommand(env), timeout: HOOK_TIMEOUT_SECONDS }],
|
|
76
|
-
});
|
|
91
|
+
preserved.push(...alignGroups[event]);
|
|
77
92
|
hooks[event] = preserved;
|
|
78
93
|
}
|
|
79
94
|
settings['hooks'] = hooks;
|
|
80
95
|
if (!existsSync(dir))
|
|
81
96
|
mkdirSync(dir, { recursive: true });
|
|
82
97
|
writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
|
|
98
|
+
return true;
|
|
83
99
|
}
|
|
84
100
|
// Merge a SessionStart hook into the project .claude/settings.json (ALI-933) - the
|
|
85
101
|
// read-path counterpart to writeClaudeCodeHook above. Separate function, separate merge:
|
|
@@ -115,6 +131,10 @@ export function writeClaudeCodeSessionHook(cwd) {
|
|
|
115
131
|
mkdirSync(dir, { recursive: true });
|
|
116
132
|
writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
|
|
117
133
|
}
|
|
134
|
+
/** The managed CLAUDE.md block as text, for per-session injection (C1). */
|
|
135
|
+
export function alignNudgeBody() {
|
|
136
|
+
return managedNudgeBlock({ claudeHooks: true });
|
|
137
|
+
}
|
|
118
138
|
// The nudge body. `claudeHooks` adds the Claude-Code-specific line about the
|
|
119
139
|
// Pre/PostToolUse hook - true for CLAUDE.md, false for the agent-neutral AGENTS.md.
|
|
120
140
|
function managedNudgeBlock(opts) {
|
|
@@ -205,7 +225,7 @@ export function writeCursorRule(cwd) {
|
|
|
205
225
|
// pi-mcp-adapter), so does Claude Code, and it is committed, so one write covers the
|
|
206
226
|
// whole team rather than each person's per-host config. Deliberately host-NEUTRAL: pi's
|
|
207
227
|
// `directTools` goes in the Pi-owned override that mcp-setup.ts writes, never here.
|
|
208
|
-
export function writeProjectMcpConfig(cwd, env) {
|
|
228
|
+
export function writeProjectMcpConfig(cwd, env, onForeign) {
|
|
209
229
|
const file = path.join(cwd, '.mcp.json');
|
|
210
230
|
let raw = '';
|
|
211
231
|
try {
|
|
@@ -225,6 +245,11 @@ export function writeProjectMcpConfig(cwd, env) {
|
|
|
225
245
|
}
|
|
226
246
|
}
|
|
227
247
|
const servers = (config['mcpServers'] ?? {});
|
|
248
|
+
// A committed entry that targets a team env is the team's, not ours to replace.
|
|
249
|
+
if (onForeign && env === 'local' && servers['align'] !== undefined && !carriesLocalEnv(JSON.stringify(servers['align']))) {
|
|
250
|
+
onForeign('.mcp.json');
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
228
253
|
// `committed: true` keeps the Windows `cmd /c` wrapper OUT of this file (ALI-1135). It is
|
|
229
254
|
// the one MCP config that travels: a wrapper written here by a Windows machine would be
|
|
230
255
|
// committed and then fail to spawn for every teammate on macOS or Linux. Windows readers
|
|
@@ -232,6 +257,7 @@ export function writeProjectMcpConfig(cwd, env) {
|
|
|
232
257
|
servers['align'] = alignServerEntry('mcpServers', env, { committed: true });
|
|
233
258
|
config['mcpServers'] = servers;
|
|
234
259
|
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
|
|
260
|
+
return true;
|
|
235
261
|
}
|
|
236
262
|
// ---------------------------------------------------------------------------
|
|
237
263
|
// Per-host hook shims (the agent-agnostic guardrail)
|
|
@@ -274,7 +300,7 @@ const PLUGIN_SPAWN_PREAMBLE = `// npm installs align.cmd on Windows, which a pro
|
|
|
274
300
|
const ALIGN_IS_WIN = process.platform === "win32";
|
|
275
301
|
const ALIGN_BIN = ALIGN_IS_WIN ? "cmd" : "align";
|
|
276
302
|
const ALIGN_PRE = ALIGN_IS_WIN ? ["/c", "align"] : [];`;
|
|
277
|
-
function piExtensionBody(env) {
|
|
303
|
+
export function piExtensionBody(env) {
|
|
278
304
|
const envArgs = env && env !== 'prod' ? `, "--env", "${env}"` : '';
|
|
279
305
|
return `// Align decision graph - managed by \`align setup\`, do not edit.
|
|
280
306
|
// Checks each proposed edit against your team's prior decisions and feeds any
|
|
@@ -335,11 +361,26 @@ export default function (pi: { on: (e: string, h: (ev: PiEvent) => unknown) => v
|
|
|
335
361
|
`;
|
|
336
362
|
}
|
|
337
363
|
// pi extension. Fully managed - overwritten each run.
|
|
338
|
-
export function writePiExtension(cwd, env) {
|
|
364
|
+
export function writePiExtension(cwd, env, onForeign) {
|
|
339
365
|
const dir = path.join(cwd, '.pi', 'extensions');
|
|
366
|
+
const file = path.join(dir, 'align.ts');
|
|
367
|
+
if (onForeign && env === 'local' && isForeignPlugin(file)) {
|
|
368
|
+
onForeign('.pi/extensions/align.ts');
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
340
371
|
if (!existsSync(dir))
|
|
341
372
|
mkdirSync(dir, { recursive: true });
|
|
342
|
-
writeFileSync(
|
|
373
|
+
writeFileSync(file, piExtensionBody(env), 'utf8');
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
/** A generated plugin that already exists and is not pointed at the local graph. */
|
|
377
|
+
function isForeignPlugin(file) {
|
|
378
|
+
try {
|
|
379
|
+
return !carriesLocalEnv(readFileSync(file, 'utf8'));
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
343
384
|
}
|
|
344
385
|
// Gemini CLI hooks. BeforeTool can only deny (no additionalContext channel), so the
|
|
345
386
|
// non-blocking finding is carried by AfterTool - the same split as pi, for the same
|
|
@@ -362,7 +403,7 @@ function isAlignGeminiHook(group) {
|
|
|
362
403
|
const hooks = group?.hooks;
|
|
363
404
|
return Array.isArray(hooks) && hooks.some((h) => String(h?.command ?? '').includes('align check --advisory'));
|
|
364
405
|
}
|
|
365
|
-
export function writeGeminiHooks(cwd, env) {
|
|
406
|
+
export function writeGeminiHooks(cwd, env, onForeign) {
|
|
366
407
|
const dir = path.join(cwd, '.gemini');
|
|
367
408
|
const file = path.join(dir, 'settings.json');
|
|
368
409
|
let raw = '';
|
|
@@ -383,6 +424,10 @@ export function writeGeminiHooks(cwd, env) {
|
|
|
383
424
|
}
|
|
384
425
|
}
|
|
385
426
|
const hooks = (settings['hooks'] ?? {});
|
|
427
|
+
if (onForeign && env === 'local' && ['BeforeTool', 'AfterTool'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignGeminiHook(g) && !carriesLocalEnv(JSON.stringify(g))))) {
|
|
428
|
+
onForeign('.gemini/settings.json');
|
|
429
|
+
return false;
|
|
430
|
+
}
|
|
386
431
|
// Strip any prior align-managed group from each event first, so a re-run replaces
|
|
387
432
|
// it (and picks up an env change) instead of stacking a second one.
|
|
388
433
|
for (const event of ['BeforeTool', 'AfterTool']) {
|
|
@@ -395,6 +440,7 @@ export function writeGeminiHooks(cwd, env) {
|
|
|
395
440
|
if (!existsSync(dir))
|
|
396
441
|
mkdirSync(dir, { recursive: true });
|
|
397
442
|
writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
|
|
443
|
+
return true;
|
|
398
444
|
}
|
|
399
445
|
// OpenCode discovers project plugins at .opencode/plugins/*.{js,ts} and loads them at
|
|
400
446
|
// startup. Ships as plain JS so nothing depends on a type package resolving.
|
|
@@ -406,7 +452,7 @@ export function writeGeminiHooks(cwd, env) {
|
|
|
406
452
|
// tool.execute.after is handed the result object and the caller does `return output`
|
|
407
453
|
// on the next line, so mutating output.output reaches the model.
|
|
408
454
|
// Both hooks are declared `=> Promise<void>`; mutation is in place, not by return value.
|
|
409
|
-
function openCodePluginBody(env) {
|
|
455
|
+
export function openCodePluginBody(env) {
|
|
410
456
|
const envArgs = env && env !== 'prod' ? `, "--env", "${env}"` : '';
|
|
411
457
|
return `// Align decision graph - managed by \`align setup\`, do not edit.
|
|
412
458
|
// Checks each proposed edit against your team's prior decisions and feeds any conflict
|
|
@@ -469,27 +515,40 @@ export const AlignPlugin = async () => ({
|
|
|
469
515
|
`;
|
|
470
516
|
}
|
|
471
517
|
// OpenCode plugin. Fully managed - overwritten each run.
|
|
472
|
-
export function writeOpenCodePlugin(cwd, env) {
|
|
518
|
+
export function writeOpenCodePlugin(cwd, env, onForeign) {
|
|
473
519
|
const dir = path.join(cwd, '.opencode', 'plugins');
|
|
520
|
+
const file = path.join(dir, 'align.js');
|
|
521
|
+
if (onForeign && env === 'local' && isForeignPlugin(file)) {
|
|
522
|
+
onForeign('.opencode/plugins/align.js');
|
|
523
|
+
return false;
|
|
524
|
+
}
|
|
474
525
|
if (!existsSync(dir))
|
|
475
526
|
mkdirSync(dir, { recursive: true });
|
|
476
|
-
writeFileSync(
|
|
527
|
+
writeFileSync(file, openCodePluginBody(env), 'utf8');
|
|
528
|
+
return true;
|
|
477
529
|
}
|
|
478
530
|
// Write every deterministic-alignment artifact into the project. Returns the
|
|
479
531
|
// repo-relative paths written, for the caller to report.
|
|
480
532
|
export function setupAgentAlignment(opts) {
|
|
481
|
-
|
|
482
|
-
|
|
533
|
+
const skipped = new Set();
|
|
534
|
+
// Opt-in: with no callback every writer overwrites, exactly as before.
|
|
535
|
+
const onForeign = opts.onForeign
|
|
536
|
+
? (f) => { skipped.add(f); opts.onForeign(f); }
|
|
537
|
+
: undefined;
|
|
538
|
+
// When the project's hooks belong to a team env the whole file is left as found, so the
|
|
539
|
+
// session hook (which lives in the same file) is not added either.
|
|
540
|
+
if (writeClaudeCodeHook(opts.cwd, opts.env, onForeign))
|
|
541
|
+
writeClaudeCodeSessionHook(opts.cwd);
|
|
483
542
|
writeManagedNudge(opts.cwd);
|
|
484
543
|
writeAgentsNudge(opts.cwd);
|
|
485
544
|
writeCursorRule(opts.cwd);
|
|
486
545
|
// prod is the default env, so leave it off to keep the committed file portable -
|
|
487
546
|
// the same rule advisoryCommand() applies to the hook.
|
|
488
547
|
const env = opts.env === 'prod' ? undefined : opts.env;
|
|
489
|
-
writeProjectMcpConfig(opts.cwd, env);
|
|
490
|
-
writePiExtension(opts.cwd, env);
|
|
491
|
-
writeGeminiHooks(opts.cwd, env);
|
|
492
|
-
writeOpenCodePlugin(opts.cwd, env);
|
|
548
|
+
writeProjectMcpConfig(opts.cwd, env, onForeign);
|
|
549
|
+
writePiExtension(opts.cwd, env, onForeign);
|
|
550
|
+
writeGeminiHooks(opts.cwd, env, onForeign);
|
|
551
|
+
writeOpenCodePlugin(opts.cwd, env, onForeign);
|
|
493
552
|
return [
|
|
494
553
|
'.claude/settings.json',
|
|
495
554
|
'CLAUDE.md',
|
|
@@ -499,6 +558,6 @@ export function setupAgentAlignment(opts) {
|
|
|
499
558
|
'.pi/extensions/align.ts',
|
|
500
559
|
'.gemini/settings.json',
|
|
501
560
|
'.opencode/plugins/align.js',
|
|
502
|
-
];
|
|
561
|
+
].filter((f) => !skipped.has(f));
|
|
503
562
|
}
|
|
504
563
|
//# sourceMappingURL=agent-rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-rules.js","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-rules.js","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type WrittenConfig } from './safe-config-write.js';
|
|
1
2
|
export type EnvName = 'local' | 'preview' | 'prod';
|
|
2
3
|
export interface EnvironmentConfig {
|
|
3
4
|
gatewayUrl: string;
|
|
@@ -7,16 +8,6 @@ export interface EnvironmentConfig {
|
|
|
7
8
|
mode: 'demo' | 'auth' | 'local-embedded';
|
|
8
9
|
localDbPath?: string;
|
|
9
10
|
}
|
|
10
|
-
/**
|
|
11
|
-
* The fork point for ALI-794's value-first onboarding order: nothing configured
|
|
12
|
-
* yet on this machine, in either mode. A returning user (they already have a
|
|
13
|
-
* local graph, or they are logged in to cloud) keeps the existing
|
|
14
|
-
* mode-question-first `align setup` flow - this only widens the door for a
|
|
15
|
-
* genuinely first run.
|
|
16
|
-
*/
|
|
17
|
-
export declare function isFreshInstall(config: {
|
|
18
|
-
getEnvironment(env: EnvName): EnvironmentConfig;
|
|
19
|
-
}): boolean;
|
|
20
11
|
/**
|
|
21
12
|
* ALI-618: local-embedded mode never makes an HTTP call for its own operations (it reads a
|
|
22
13
|
* local embedded DB - see gateway-client.ts's `createLocalGatewayClient` branch), so the
|
|
@@ -116,6 +107,19 @@ export declare function createConfigStore(): {
|
|
|
116
107
|
clearLocalMode(): void;
|
|
117
108
|
clear(env: EnvName): void;
|
|
118
109
|
getInstallId(): string;
|
|
110
|
+
getAgent(): string | undefined;
|
|
111
|
+
setAgent(agent: string): void;
|
|
112
|
+
isLaunchOff(): boolean;
|
|
113
|
+
setLaunchOff(off: boolean): void;
|
|
114
|
+
clearAgent(): void;
|
|
115
|
+
getWrittenConfigs(): Record<string, WrittenConfig>;
|
|
116
|
+
recordWrittenConfig(file: string, entry: WrittenConfig): void;
|
|
117
|
+
/** Forget only the files whose undo finished; a skipped file keeps its record. */
|
|
118
|
+
dropWrittenConfigs(files: string[]): void;
|
|
119
|
+
wasWriteRefused(file: string): boolean;
|
|
120
|
+
unmarkWriteRefused(file: string): void;
|
|
121
|
+
clearRefusedWrites(): void;
|
|
122
|
+
markWriteRefused(file: string): void;
|
|
119
123
|
getTelemetryConsent(): TelemetryConsent | undefined;
|
|
120
124
|
setTelemetryConsent(value: TelemetryConsent): void;
|
|
121
125
|
getProviderKey(provider: GuidedProviderKey): string | null;
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,QAA2B,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM3E;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAoBlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,EACtE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,IAAI,CAMN;AAED,wBAAgB,iBAAiB;wBAsCT,OAAO,GAAG,iBAAiB;sBAc7B,OAAO,SAAS,MAAM;qBAIvB,OAAO,YAAY,MAAM;qBAIzB,MAAM;uBAIJ,OAAO;qBACT,OAAO;2BACD,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;2BAI7C,OAAO,gBAAgB,MAAM,SAAS,MAAM;IAInE;;;;;OAKG;4BACqB,OAAO,gBAAgB,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;6BAY5D,OAAO,gBAAgB,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYtF,iGAAiG;yBAC5E,OAAO,gBAAgB,MAAM;IAOlD,6FAA6F;6BACpE,OAAO;6BAMP,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;6BAI7C,OAAO,gBAAgB,MAAM,WAAW,MAAM;8BAI7C,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;8BAI7C,OAAO,gBAAgB,MAAM,YAAY,MAAM;yBAIpD,MAAM;;eAWhB,OAAO;oBAQF,MAAM;gBASV,MAAM,GAAG,SAAS;oBAGd,MAAM;mBAOP,OAAO;sBAGJ,OAAO;;yBAUJ,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;8BAKxB,MAAM,SAAS,aAAa;IAItD,kFAAkF;8BACxD,MAAM,EAAE;0BAQZ,MAAM,GAAG,OAAO;6BAGb,MAAM;;2BAOR,MAAM;2BAIN,gBAAgB,GAAG,SAAS;+BAGxB,gBAAgB;6BAOlB,iBAAiB,GAAG,MAAM,GAAG,IAAI;6BAGjC,iBAAiB,OAAO,MAAM;+BAQ5B,iBAAiB;kCAQd,MAAM,GAAG,OAAO;mCAGf,MAAM,GAAG,IAAI;EAK/C"}
|
package/dist/lib/config.js
CHANGED
|
@@ -2,23 +2,7 @@ import Conf from 'conf';
|
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
|
|
6
|
-
* The fork point for ALI-794's value-first onboarding order: nothing configured
|
|
7
|
-
* yet on this machine, in either mode. A returning user (they already have a
|
|
8
|
-
* local graph, or they are logged in to cloud) keeps the existing
|
|
9
|
-
* mode-question-first `align setup` flow - this only widens the door for a
|
|
10
|
-
* genuinely first run.
|
|
11
|
-
*/
|
|
12
|
-
export function isFreshInstall(config) {
|
|
13
|
-
const hasLocal = config.getEnvironment('local').mode === 'local-embedded';
|
|
14
|
-
// Every env, not just the default one (Copilot, PR #224): a user who logged into a
|
|
15
|
-
// non-default env (e.g. `align login --env preview`) while defaultEnv is still 'prod'
|
|
16
|
-
// is a returning user, and checking only getDefaultEnv() would misclassify them as
|
|
17
|
-
// fresh and route them into the value-first flow a second time.
|
|
18
|
-
const ALL_ENVS = ['local', 'preview', 'prod'];
|
|
19
|
-
const hasCloud = ALL_ENVS.some((e) => Boolean(config.getEnvironment(e).authToken));
|
|
20
|
-
return !hasLocal && !hasCloud;
|
|
21
|
-
}
|
|
5
|
+
import { mergeWrittenConfig } from './safe-config-write.js';
|
|
22
6
|
const DEFAULTS = {
|
|
23
7
|
local: { gatewayUrl: 'http://localhost:8080', authToken: null, tenantId: null, mode: 'demo' },
|
|
24
8
|
preview: { gatewayUrl: 'https://api.preview.align.tech', authToken: null, tenantId: null, mode: 'auth' },
|
|
@@ -255,6 +239,69 @@ export function createConfigStore() {
|
|
|
255
239
|
store.set('installId', id);
|
|
256
240
|
return id;
|
|
257
241
|
},
|
|
242
|
+
// C1: the coding agent bare `align` launches. Stored as a plain string; the launcher
|
|
243
|
+
// validates it against its closed list, so a stale value from a newer CLI is ignored.
|
|
244
|
+
getAgent() {
|
|
245
|
+
return store.get('agent');
|
|
246
|
+
},
|
|
247
|
+
setAgent(agent) {
|
|
248
|
+
store.set('agent', agent);
|
|
249
|
+
// Choosing an agent is the way back on after `align use --undo`.
|
|
250
|
+
store.delete('launchOff');
|
|
251
|
+
},
|
|
252
|
+
// C4: set by `align use --undo` so bare `align` stops opening an agent (and re-adding the
|
|
253
|
+
// configs just restored) until the user picks one again.
|
|
254
|
+
isLaunchOff() {
|
|
255
|
+
return store.get('launchOff') === true;
|
|
256
|
+
},
|
|
257
|
+
setLaunchOff(off) {
|
|
258
|
+
if (off)
|
|
259
|
+
store.set('launchOff', true);
|
|
260
|
+
else
|
|
261
|
+
store.delete('launchOff');
|
|
262
|
+
},
|
|
263
|
+
clearAgent() {
|
|
264
|
+
store.delete('agent');
|
|
265
|
+
},
|
|
266
|
+
// C4: every other-product config file align wrote (safe-config-write.ts), so
|
|
267
|
+
// `align use --undo` can put each one back. Keyed by absolute path; the whole map is
|
|
268
|
+
// read and set as one value because conf treats a dot in a key as a path separator.
|
|
269
|
+
getWrittenConfigs() {
|
|
270
|
+
return store.get('writtenConfigs') ?? {};
|
|
271
|
+
},
|
|
272
|
+
// `entry` is what ONE write added; mergeWrittenConfig folds it into what is already here
|
|
273
|
+
// (the first write's `created` and backup stay, owned entries accumulate).
|
|
274
|
+
recordWrittenConfig(file, entry) {
|
|
275
|
+
const all = store.get('writtenConfigs') ?? {};
|
|
276
|
+
store.set('writtenConfigs', { ...all, [file]: mergeWrittenConfig(all[file], entry) });
|
|
277
|
+
},
|
|
278
|
+
/** Forget only the files whose undo finished; a skipped file keeps its record. */
|
|
279
|
+
dropWrittenConfigs(files) {
|
|
280
|
+
const all = { ...(store.get('writtenConfigs') ?? {}) };
|
|
281
|
+
for (const f of files)
|
|
282
|
+
delete all[f];
|
|
283
|
+
if (Object.keys(all).length === 0)
|
|
284
|
+
store.delete('writtenConfigs');
|
|
285
|
+
else
|
|
286
|
+
store.set('writtenConfigs', all);
|
|
287
|
+
},
|
|
288
|
+
// Refused writes (a symlinked agent config): remembered so the one-line notice is printed
|
|
289
|
+
// once, not on every launch.
|
|
290
|
+
wasWriteRefused(file) {
|
|
291
|
+
return (store.get('refusedWrites') ?? []).includes(file);
|
|
292
|
+
},
|
|
293
|
+
unmarkWriteRefused(file) {
|
|
294
|
+
const all = store.get('refusedWrites') ?? [];
|
|
295
|
+
store.set('refusedWrites', all.filter((f) => f !== file));
|
|
296
|
+
},
|
|
297
|
+
clearRefusedWrites() {
|
|
298
|
+
store.delete('refusedWrites');
|
|
299
|
+
},
|
|
300
|
+
markWriteRefused(file) {
|
|
301
|
+
const all = store.get('refusedWrites') ?? [];
|
|
302
|
+
if (!all.includes(file))
|
|
303
|
+
store.set('refusedWrites', [...all, file]);
|
|
304
|
+
},
|
|
258
305
|
getTelemetryConsent() {
|
|
259
306
|
return store.get('telemetryConsent');
|
|
260
307
|
},
|