holistic 0.2.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/CONTRIBUTING.md +121 -0
  3. package/LICENSE +21 -0
  4. package/README.md +329 -0
  5. package/bin/holistic +17 -0
  6. package/bin/holistic.cmd +23 -0
  7. package/bin/holistic.js +59 -0
  8. package/dist/__tests__/mcp-notification.test.d.ts +5 -0
  9. package/dist/__tests__/mcp-notification.test.d.ts.map +1 -0
  10. package/dist/__tests__/mcp-notification.test.js +255 -0
  11. package/dist/__tests__/mcp-notification.test.js.map +1 -0
  12. package/dist/cli.d.ts +6 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +637 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/core/docs.d.ts +3 -0
  17. package/dist/core/docs.d.ts.map +1 -0
  18. package/dist/core/docs.js +602 -0
  19. package/dist/core/docs.js.map +1 -0
  20. package/dist/core/git-hooks.d.ts +17 -0
  21. package/dist/core/git-hooks.d.ts.map +1 -0
  22. package/dist/core/git-hooks.js +144 -0
  23. package/dist/core/git-hooks.js.map +1 -0
  24. package/dist/core/git.d.ts +12 -0
  25. package/dist/core/git.d.ts.map +1 -0
  26. package/dist/core/git.js +121 -0
  27. package/dist/core/git.js.map +1 -0
  28. package/dist/core/lock.d.ts +2 -0
  29. package/dist/core/lock.d.ts.map +1 -0
  30. package/dist/core/lock.js +40 -0
  31. package/dist/core/lock.js.map +1 -0
  32. package/dist/core/redact.d.ts +3 -0
  33. package/dist/core/redact.d.ts.map +1 -0
  34. package/dist/core/redact.js +13 -0
  35. package/dist/core/redact.js.map +1 -0
  36. package/dist/core/setup.d.ts +35 -0
  37. package/dist/core/setup.d.ts.map +1 -0
  38. package/dist/core/setup.js +654 -0
  39. package/dist/core/setup.js.map +1 -0
  40. package/dist/core/splash.d.ts +9 -0
  41. package/dist/core/splash.d.ts.map +1 -0
  42. package/dist/core/splash.js +35 -0
  43. package/dist/core/splash.js.map +1 -0
  44. package/dist/core/state.d.ts +42 -0
  45. package/dist/core/state.d.ts.map +1 -0
  46. package/dist/core/state.js +744 -0
  47. package/dist/core/state.js.map +1 -0
  48. package/dist/core/sync.d.ts +12 -0
  49. package/dist/core/sync.d.ts.map +1 -0
  50. package/dist/core/sync.js +106 -0
  51. package/dist/core/sync.js.map +1 -0
  52. package/dist/core/types.d.ts +210 -0
  53. package/dist/core/types.d.ts.map +1 -0
  54. package/dist/core/types.js +2 -0
  55. package/dist/core/types.js.map +1 -0
  56. package/dist/daemon.d.ts +7 -0
  57. package/dist/daemon.d.ts.map +1 -0
  58. package/dist/daemon.js +242 -0
  59. package/dist/daemon.js.map +1 -0
  60. package/dist/mcp-server.d.ts +11 -0
  61. package/dist/mcp-server.d.ts.map +1 -0
  62. package/dist/mcp-server.js +266 -0
  63. package/dist/mcp-server.js.map +1 -0
  64. package/docs/handoff-walkthrough.md +119 -0
  65. package/docs/structured-metadata.md +341 -0
  66. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/core/docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface HookCommand {
2
+ nodePath: string;
3
+ scriptPath: string;
4
+ useStripTypes: boolean;
5
+ stateFilePath: string;
6
+ syncPowerShellPath: string;
7
+ syncShellPath: string;
8
+ }
9
+ export interface GitHookInstallResult {
10
+ installed: boolean;
11
+ hooks: string[];
12
+ refreshed: string[];
13
+ warnings: string[];
14
+ }
15
+ export declare function installGitHooks(rootDir: string, gitDir: string | null, command: HookCommand): GitHookInstallResult;
16
+ export declare function refreshGitHooks(rootDir: string, gitDir: string | null, command: HookCommand): GitHookInstallResult;
17
+ //# sourceMappingURL=git-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../src/core/git-hooks.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAElH;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAElH"}
@@ -0,0 +1,144 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ const HOLISTIC_HOOK_MARKER = "HOLISTIC-MANAGED";
4
+ const SUPPORTED_HOOKS = ["post-commit", "post-checkout", "pre-push"];
5
+ function shellQuote(value) {
6
+ return value.replace(/'/g, `'\"'\"'`);
7
+ }
8
+ function commandLine(command, args) {
9
+ const parts = [
10
+ `'${shellQuote(command.nodePath)}'`,
11
+ command.useStripTypes ? "--experimental-strip-types" : "",
12
+ `'${shellQuote(command.scriptPath)}'`,
13
+ ...args.map((arg) => `'${shellQuote(arg)}'`),
14
+ ].filter(Boolean);
15
+ return parts.join(" ");
16
+ }
17
+ function normalizeHookContent(content) {
18
+ return content.replace(/\r\n/g, "\n");
19
+ }
20
+ function isHolisticManagedHook(content) {
21
+ return normalizeHookContent(content).includes(HOLISTIC_HOOK_MARKER);
22
+ }
23
+ function renderHookHeader(name) {
24
+ return `#!/usr/bin/env sh
25
+ # ${HOLISTIC_HOOK_MARKER} ${name}
26
+ `;
27
+ }
28
+ function renderGitHooks(rootDir, command) {
29
+ const checkpointCommand = commandLine(command, [
30
+ "checkpoint",
31
+ "--reason",
32
+ "post-commit",
33
+ ]);
34
+ const branchSwitchCommand = commandLine(command, [
35
+ "checkpoint",
36
+ "--reason",
37
+ "branch-switch",
38
+ "--status",
39
+ "Detected branch switch; review the new branch context.",
40
+ ]);
41
+ const statusCommand = commandLine(command, ["status"]);
42
+ return {
43
+ "post-commit": `${renderHookHeader("post-commit")}# Holistic auto-checkpoint after commit
44
+
45
+ cd '${shellQuote(rootDir)}' || exit 0
46
+
47
+ if [ -f "$PWD/${shellQuote(command.stateFilePath)}" ]; then
48
+ COMMIT_SUBJECT=$(git -C "$PWD" log -1 --pretty=%s 2>/dev/null || echo post-commit)
49
+ ${checkpointCommand} --status "Committed: $COMMIT_SUBJECT" >/dev/null 2>&1 || true
50
+ fi
51
+
52
+ exit 0
53
+ `,
54
+ "post-checkout": `${renderHookHeader("post-checkout")}# Holistic continuity checkpoint after branch switch
55
+
56
+ cd '${shellQuote(rootDir)}' || exit 0
57
+
58
+ if [ -f "$PWD/${shellQuote(command.stateFilePath)}" ] && [ "$3" = "1" ]; then
59
+ ${branchSwitchCommand} >/dev/null 2>&1 || true
60
+ fi
61
+
62
+ exit 0
63
+ `,
64
+ "pre-push": `${renderHookHeader("pre-push")}# Holistic status reminder before push
65
+
66
+ cd '${shellQuote(rootDir)}' || exit 0
67
+
68
+ if [ -f "$PWD/${shellQuote(command.stateFilePath)}" ]; then
69
+ echo ""
70
+ echo "Holistic Status:"
71
+ ${statusCommand} || true
72
+ echo ""
73
+ echo "Run the generated sync helper to update Holistic state:"
74
+ echo " Windows (PowerShell): powershell -NoProfile -ExecutionPolicy Bypass -File ./${shellQuote(command.syncPowerShellPath)}"
75
+ echo " macOS/Linux: ./${shellQuote(command.syncShellPath)}"
76
+ echo ""
77
+ fi
78
+
79
+ exit 0
80
+ `,
81
+ };
82
+ }
83
+ function writeHookFile(hooksDir, hookName, content) {
84
+ fs.writeFileSync(path.join(hooksDir, hookName), content, { encoding: "utf8", mode: 0o755 });
85
+ }
86
+ function syncGitHooks(rootDir, gitDir, command, mode) {
87
+ if (!gitDir || !fs.existsSync(gitDir)) {
88
+ return { installed: false, hooks: [], refreshed: [], warnings: [] };
89
+ }
90
+ const hooksDir = path.join(gitDir, "hooks");
91
+ fs.mkdirSync(hooksDir, { recursive: true });
92
+ const rendered = renderGitHooks(rootDir, command);
93
+ const warnings = [];
94
+ const refreshed = [];
95
+ const managedHooks = new Set();
96
+ let hasManagedExistingHook = false;
97
+ for (const hookName of SUPPORTED_HOOKS) {
98
+ const hookPath = path.join(hooksDir, hookName);
99
+ if (!fs.existsSync(hookPath)) {
100
+ continue;
101
+ }
102
+ const content = fs.readFileSync(hookPath, "utf8");
103
+ if (isHolisticManagedHook(content)) {
104
+ hasManagedExistingHook = true;
105
+ managedHooks.add(hookName);
106
+ continue;
107
+ }
108
+ warnings.push(`Skipped Holistic hook refresh for ${hookName}: existing hook is not Holistic-managed.`);
109
+ }
110
+ for (const hookName of SUPPORTED_HOOKS) {
111
+ const hookPath = path.join(hooksDir, hookName);
112
+ const expected = rendered[hookName];
113
+ if (!fs.existsSync(hookPath)) {
114
+ if (mode === "install" || hasManagedExistingHook) {
115
+ writeHookFile(hooksDir, hookName, expected);
116
+ refreshed.push(hookName);
117
+ managedHooks.add(hookName);
118
+ }
119
+ continue;
120
+ }
121
+ const current = fs.readFileSync(hookPath, "utf8");
122
+ if (!isHolisticManagedHook(current)) {
123
+ continue;
124
+ }
125
+ managedHooks.add(hookName);
126
+ if (normalizeHookContent(current) !== normalizeHookContent(expected)) {
127
+ writeHookFile(hooksDir, hookName, expected);
128
+ refreshed.push(hookName);
129
+ }
130
+ }
131
+ return {
132
+ installed: managedHooks.size > 0,
133
+ hooks: [...managedHooks],
134
+ refreshed,
135
+ warnings,
136
+ };
137
+ }
138
+ export function installGitHooks(rootDir, gitDir, command) {
139
+ return syncGitHooks(rootDir, gitDir, command, "install");
140
+ }
141
+ export function refreshGitHooks(rootDir, gitDir, command) {
142
+ return syncGitHooks(rootDir, gitDir, command, "refresh");
143
+ }
144
+ //# sourceMappingURL=git-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../src/core/git-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { GitSnapshot, RuntimePaths } from './types.js';
2
+ export declare function resolveGitDir(rootDir: string): string | null;
3
+ export declare function isPortableHolisticPath(file: string): boolean;
4
+ export declare function captureRepoSnapshot(rootDir: string): Record<string, string>;
5
+ export declare function getGitSnapshot(rootDir: string, previousSnapshot?: Record<string, string>): GitSnapshot & {
6
+ snapshot: Record<string, string>;
7
+ };
8
+ export declare function getRecentCommitSubjects(rootDir: string, limit?: number): string[];
9
+ export declare function pendingCommitFile(paths: RuntimePaths): string;
10
+ export declare function writePendingCommit(paths: RuntimePaths, message: string): void;
11
+ export declare function clearPendingCommit(paths: RuntimePaths): void;
12
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB5D;AAkBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAsBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3E;AAoBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAOjJ;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAe5E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAK5D"}
@@ -0,0 +1,121 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ const HOLISTIC_PORTABLE_PATHS = new Set([
5
+ "HOLISTIC.md",
6
+ "AGENTS.md",
7
+ "CLAUDE.md",
8
+ "GEMINI.md",
9
+ "HISTORY.md",
10
+ "HOLISTIC.local.md",
11
+ "AGENTS.local.md",
12
+ "CLAUDE.local.md",
13
+ "GEMINI.local.md",
14
+ "HISTORY.local.md",
15
+ ]);
16
+ export function resolveGitDir(rootDir) {
17
+ const dotGitPath = path.join(rootDir, ".git");
18
+ if (!fs.existsSync(dotGitPath)) {
19
+ return null;
20
+ }
21
+ const stat = fs.statSync(dotGitPath);
22
+ if (stat.isDirectory()) {
23
+ return dotGitPath;
24
+ }
25
+ const content = fs.readFileSync(dotGitPath, "utf8").trim();
26
+ const match = /^gitdir:\s+(.+)$/i.exec(content);
27
+ if (!match) {
28
+ return null;
29
+ }
30
+ return path.resolve(rootDir, match[1]);
31
+ }
32
+ function getBranchName(rootDir) {
33
+ const gitDir = resolveGitDir(rootDir);
34
+ if (!gitDir) {
35
+ return "unknown";
36
+ }
37
+ const headPath = path.join(gitDir, "HEAD");
38
+ if (!fs.existsSync(headPath)) {
39
+ return "unknown";
40
+ }
41
+ const head = fs.readFileSync(headPath, "utf8").trim();
42
+ const refMatch = /^ref:\s+refs\/heads\/(.+)$/i.exec(head);
43
+ return refMatch?.[1] ?? "detached";
44
+ }
45
+ export function isPortableHolisticPath(file) {
46
+ return file.startsWith(".holistic/") || file.startsWith(".holistic-local/") || HOLISTIC_PORTABLE_PATHS.has(file);
47
+ }
48
+ function walkRepoFiles(rootDir, currentDir, results) {
49
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
50
+ for (const entry of entries) {
51
+ if (entry.name === ".git") {
52
+ continue;
53
+ }
54
+ const fullPath = path.join(currentDir, entry.name);
55
+ const relativePath = path.relative(rootDir, fullPath).replaceAll("\\", "/");
56
+ if (entry.isDirectory()) {
57
+ walkRepoFiles(rootDir, fullPath, results);
58
+ continue;
59
+ }
60
+ if (entry.isFile()) {
61
+ results.push(relativePath);
62
+ }
63
+ }
64
+ }
65
+ export function captureRepoSnapshot(rootDir) {
66
+ const files = [];
67
+ walkRepoFiles(rootDir, rootDir, files);
68
+ const snapshot = {};
69
+ for (const relativePath of files) {
70
+ const stat = fs.statSync(path.join(rootDir, relativePath));
71
+ snapshot[relativePath] = `${stat.size}:${Math.floor(stat.mtimeMs)}`;
72
+ }
73
+ return snapshot;
74
+ }
75
+ function diffRepoSnapshots(previous, current) {
76
+ const changed = new Set();
77
+ for (const [file, signature] of Object.entries(current)) {
78
+ if (previous[file] !== signature) {
79
+ changed.add(file);
80
+ }
81
+ }
82
+ for (const file of Object.keys(previous)) {
83
+ if (!(file in current)) {
84
+ changed.add(file);
85
+ }
86
+ }
87
+ return [...changed].sort();
88
+ }
89
+ export function getGitSnapshot(rootDir, previousSnapshot = {}) {
90
+ const snapshot = captureRepoSnapshot(rootDir);
91
+ return {
92
+ branch: getBranchName(rootDir),
93
+ changedFiles: diffRepoSnapshots(previousSnapshot, snapshot),
94
+ snapshot,
95
+ };
96
+ }
97
+ export function getRecentCommitSubjects(rootDir, limit = 5) {
98
+ try {
99
+ const output = execFileSync("git", ["-C", rootDir, "log", `-n${limit}`, "--pretty=%s"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
100
+ return output
101
+ .split(/\r?\n/)
102
+ .map((line) => line.trim())
103
+ .filter(Boolean);
104
+ }
105
+ catch {
106
+ return [];
107
+ }
108
+ }
109
+ export function pendingCommitFile(paths) {
110
+ return path.join(paths.contextDir, "pending-commit.txt");
111
+ }
112
+ export function writePendingCommit(paths, message) {
113
+ fs.writeFileSync(pendingCommitFile(paths), `${message}\n`, "utf8");
114
+ }
115
+ export function clearPendingCommit(paths) {
116
+ const filePath = pendingCommitFile(paths);
117
+ if (fs.existsSync(filePath)) {
118
+ fs.unlinkSync(filePath);
119
+ }
120
+ }
121
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function withLockSync<T>(lockPath: string, fn: () => T): T;
2
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/core/lock.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAgChE"}
@@ -0,0 +1,40 @@
1
+ import fs from "node:fs";
2
+ const LOCK_TIMEOUT_MS = 5000;
3
+ const LOCK_WAIT_MS = 50;
4
+ function sleepSync(durationMs) {
5
+ const buffer = new SharedArrayBuffer(4);
6
+ const view = new Int32Array(buffer);
7
+ Atomics.wait(view, 0, 0, durationMs);
8
+ }
9
+ export function withLockSync(lockPath, fn) {
10
+ const startedAt = Date.now();
11
+ while (true) {
12
+ try {
13
+ fs.writeFileSync(lockPath, `${process.pid}\n`, { encoding: "utf8", flag: "wx" });
14
+ break;
15
+ }
16
+ catch (error) {
17
+ const code = error instanceof Error && "code" in error
18
+ ? String(error.code)
19
+ : undefined;
20
+ if (code !== "EEXIST") {
21
+ throw error;
22
+ }
23
+ if (Date.now() - startedAt >= LOCK_TIMEOUT_MS) {
24
+ throw new Error(`Failed to acquire Holistic state lock within ${LOCK_TIMEOUT_MS}ms.`);
25
+ }
26
+ sleepSync(LOCK_WAIT_MS);
27
+ }
28
+ }
29
+ try {
30
+ return fn();
31
+ }
32
+ finally {
33
+ try {
34
+ fs.unlinkSync(lockPath);
35
+ }
36
+ catch {
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/core/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,SAAS,CAAC,UAAkB;IACnC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,QAAgB,EAAE,EAAW;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,MAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK;gBACpD,CAAC,CAAC,MAAM,CAAE,KAA+B,CAAC,IAAI,CAAC;gBAC/C,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,gDAAgD,eAAe,KAAK,CAAC,CAAC;YACxF,CAAC;YAED,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function sanitizeText(value: string): string;
2
+ export declare function sanitizeList(values: string[] | undefined): string[];
3
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAOA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEnE"}
@@ -0,0 +1,13 @@
1
+ const secretPatterns = [
2
+ [/\bsk-[A-Za-z0-9_-]{8,}\b/g, "[REDACTED_SECRET]"],
3
+ [/\b(?:ghp|gho|github_pat)_[A-Za-z0-9_]+\b/g, "[REDACTED_SECRET]"],
4
+ [/\bAIza[0-9A-Za-z\-_]{16,}\b/g, "[REDACTED_SECRET]"],
5
+ [/\b(api[_ -]?key|token|secret|password)\s*[:=]\s*[^\s,;]+/gi, "$1: [REDACTED]"],
6
+ ];
7
+ export function sanitizeText(value) {
8
+ return secretPatterns.reduce((acc, [pattern, replacement]) => acc.replace(pattern, replacement), value.trim());
9
+ }
10
+ export function sanitizeList(values) {
11
+ return (values ?? []).map((value) => sanitizeText(value)).filter(Boolean);
12
+ }
13
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAA4B;IAC9C,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;IAClD,CAAC,2CAA2C,EAAE,mBAAmB,CAAC;IAClE,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;IACrD,CAAC,4DAA4D,EAAE,gBAAgB,CAAC;CACjF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA4B;IACvD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { type GitHookInstallResult } from './git-hooks.js';
2
+ import type { AgentName } from './types.js';
3
+ export interface InitOptions {
4
+ installDaemon?: boolean;
5
+ installGitHooks?: boolean;
6
+ platform?: NodeJS.Platform;
7
+ homeDir?: string;
8
+ intervalSeconds?: number;
9
+ agent?: AgentName;
10
+ remote?: string;
11
+ stateRef?: string;
12
+ stateBranch?: string;
13
+ }
14
+ export interface BootstrapOptions extends InitOptions {
15
+ configureMcp?: boolean;
16
+ }
17
+ export interface InitResult {
18
+ installed: boolean;
19
+ gitHooksInstalled: boolean;
20
+ gitHooks: string[];
21
+ gitHookWarnings: string[];
22
+ platform: string;
23
+ startupTarget: string | null;
24
+ systemDir: string;
25
+ configFile: string;
26
+ }
27
+ export interface BootstrapResult extends InitResult {
28
+ mcpConfigured: boolean;
29
+ mcpConfigFile: string | null;
30
+ checks: string[];
31
+ }
32
+ export declare function refreshHolisticHooks(rootDir: string): GitHookInstallResult;
33
+ export declare function initializeHolistic(rootDir: string, options?: InitOptions): InitResult;
34
+ export declare function bootstrapHolistic(rootDir: string, options?: BootstrapOptions): BootstrapResult;
35
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/core/setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoC,KAAK,oBAAoB,EAAoB,MAAM,gBAAgB,CAAC;AAE/G,OAAO,KAAK,EAAE,SAAS,EAA+B,MAAM,YAAY,CAAC;AAQzE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA6oBD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAG1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAuCzF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAwBlG"}