@engramprotocol/mcp-server 0.9.1 → 0.10.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 (49) hide show
  1. package/README.md +48 -37
  2. package/dist/cli.js +42 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/setup/_helpers.d.ts +71 -0
  5. package/dist/setup/_helpers.d.ts.map +1 -0
  6. package/dist/setup/_helpers.js +275 -0
  7. package/dist/setup/_helpers.js.map +1 -0
  8. package/dist/setup/index.d.ts +2 -0
  9. package/dist/setup/index.d.ts.map +1 -0
  10. package/dist/setup/index.js +83 -0
  11. package/dist/setup/index.js.map +1 -0
  12. package/dist/setup/install.d.ts +2 -0
  13. package/dist/setup/install.d.ts.map +1 -0
  14. package/dist/setup/install.js +241 -0
  15. package/dist/setup/install.js.map +1 -0
  16. package/dist/setup/uninstall.d.ts +2 -0
  17. package/dist/setup/uninstall.d.ts.map +1 -0
  18. package/dist/setup/uninstall.js +120 -0
  19. package/dist/setup/uninstall.js.map +1 -0
  20. package/dist/setup/update.d.ts +2 -0
  21. package/dist/setup/update.d.ts.map +1 -0
  22. package/dist/setup/update.js +130 -0
  23. package/dist/setup/update.js.map +1 -0
  24. package/dist/tools/boot.d.ts.map +1 -1
  25. package/dist/tools/boot.js +2 -4
  26. package/dist/tools/boot.js.map +1 -1
  27. package/dist/tools/entity.d.ts.map +1 -1
  28. package/dist/tools/entity.js +3 -2
  29. package/dist/tools/entity.js.map +1 -1
  30. package/dist/tools/get.d.ts.map +1 -1
  31. package/dist/tools/get.js +2 -5
  32. package/dist/tools/get.js.map +1 -1
  33. package/dist/tools/list.d.ts.map +1 -1
  34. package/dist/tools/list.js +5 -8
  35. package/dist/tools/list.js.map +1 -1
  36. package/dist/tools/note.d.ts.map +1 -1
  37. package/dist/tools/note.js +4 -1
  38. package/dist/tools/note.js.map +1 -1
  39. package/dist/tools/projects.d.ts.map +1 -1
  40. package/dist/tools/projects.js +3 -1
  41. package/dist/tools/projects.js.map +1 -1
  42. package/dist/tools/recall.d.ts.map +1 -1
  43. package/dist/tools/recall.js +3 -4
  44. package/dist/tools/recall.js.map +1 -1
  45. package/dist/tools/update.js +3 -3
  46. package/dist/tools/update.js.map +1 -1
  47. package/package.json +5 -3
  48. package/templates/hooks/session_start_boot.sh +63 -0
  49. package/templates/hooks/user_prompt_submit_reminder.sh +78 -0
package/README.md CHANGED
@@ -2,51 +2,62 @@
2
2
 
3
3
  MCP wrapper around the EML HTTP API. Exposes the Engram Protocol as MCP tools for Claude Code (and other MCP clients) — stdio transport, Bearer token auth against `api.engramprotocol.io`.
4
4
 
5
- ## Install + Run
5
+ Request an API token: **parsley_22bonds@icloud.com**
6
+
7
+ ## Install
6
8
 
7
9
  ```bash
8
- npx @engramprotocol/mcp-server --url <api-url> --token <bearer>
10
+ EML_API_TOKEN=eml_<prefix><secret> \
11
+ npx @engramprotocol/mcp-server setup install
9
12
  ```
10
13
 
11
- or via env vars:
14
+ The installer:
15
+ - Verifies the token against `/stats` before storing
16
+ - Writes `~/.eml/config` (chmod 600) with URL + token + client-version
17
+ - Registers the `engramprotocol` MCP server via `claude mcp add` (user scope, stdio transport, semver-range-pinned to `@~0.10`)
18
+ - Adds two hooks to `~/.claude/settings.json` (see [Hooks](#hooks) below):
19
+ - **SessionStart** → loads your brain at session start (identity, rules, decisions, status, tasks, protocol conventions)
20
+ - **UserPromptSubmit** → light mid-session reminder on turn 1, every 5 turns, or after >1h pause
21
+ - Adds two permissions: `mcp__engramprotocol__*` (skip per-call prompt for EML tools) and `Bash(npx @engramprotocol/mcp-server setup *)` (let the agent auto-execute `setup update` when prompted)
22
+ - Performs a final `/stats` round-trip as smoke test
23
+
24
+ A backup of `~/.claude/settings.json` is created first (pattern `.pre-eml-install-YYYY-MM-DD-HH-MM-SS.bak`).
25
+
26
+ ### Update
12
27
 
13
28
  ```bash
14
- EML_API_URL=https://api.engramprotocol.io \
15
- EML_API_TOKEN=eml_<prefix><secret> \
16
- npx @engramprotocol/mcp-server
29
+ npx @engramprotocol/mcp-server@latest setup update
17
30
  ```
18
31
 
19
- ## Claude Code config
32
+ Refreshes hook templates (marker-aware — preserves files you customised), bumps `EML_CLIENT_VERSION` in `~/.eml/config`. Idempotent. The `@latest` suffix busts the npx cache so you actually get the new version.
20
33
 
21
- The recommended way is via `claude mcp add`:
34
+ ### Uninstall
22
35
 
23
36
  ```bash
24
- claude mcp add engramprotocol \
25
- --env EML_API_URL=https://api.engramprotocol.io \
26
- --env EML_API_TOKEN=eml_<prefix><secret> \
27
- -- npx -y @engramprotocol/mcp-server
37
+ npx @engramprotocol/mcp-server setup uninstall
28
38
  ```
29
39
 
30
- Or directly in `~/.claude/settings.json` (or your client's MCP config path):
31
-
32
- ```json
33
- {
34
- "mcpServers": {
35
- "engramprotocol": {
36
- "command": "npx",
37
- "args": ["-y", "@engramprotocol/mcp-server"],
38
- "env": {
39
- "EML_API_URL": "https://api.engramprotocol.io",
40
- "EML_API_TOKEN": "eml_<prefix><secret>"
41
- }
42
- }
43
- }
44
- }
45
- ```
40
+ Removes the MCP registration, the two managed hook entries, the two managed permission entries, and `~/.eml/hooks/`. Your own hooks and permissions are untouched. `~/.eml/config` is kept by default (asks for confirmation before delete — it contains your token).
41
+
42
+ ## Hooks
43
+
44
+ Two bash hooks land in `~/.eml/hooks/`:
45
+
46
+ ### `session_start_boot.sh` (SessionStart event)
47
+ - Sources `~/.eml/config`, POSTs to `/boot`, prints the returned markdown to stdout
48
+ - Claude Code injects that stdout into model context — **invisible in chat** but reaches the model (verified empirically; behavior decided 2026-05-15)
49
+ - Performs an update-banner check: if `EML_CLIENT_VERSION` from config differs from `/boot.version`, emits a banner pointing to `setup update`
50
+ - Fail-soft: missing config, missing vars, or unreachable server emits a warning and exits 0 — session continues without brain
51
+
52
+ ### `user_prompt_submit_reminder.sh` (UserPromptSubmit event)
53
+ - Local only, no HTTP
54
+ - Triggers a 5-bullet reminder on turn 1, every 5 turns, or after >1h pause
55
+ - Per-session turn counter at `/tmp/eml-turns/<session_id>`
56
+ - Reminder content is a heredoc inside the script — refreshed via `setup update`
46
57
 
47
- Request api token via email: parsley_22bonds@icloud.com
58
+ Both hooks log to `~/.eml/logs/<event>-YYYY-MM-DD.log` (self-rotating per day) and carry a `# managed-by: engramprotocol-setup` marker line that lets `setup update` / `setup uninstall` identify which files they own.
48
59
 
49
- ## Tools (v0.9.1)
60
+ ## Tools (v0.10.0)
50
61
 
51
62
  All tools have an `eml_` prefix. Total: **17 tools**.
52
63
 
@@ -54,7 +65,7 @@ All tools have an `eml_` prefix. Total: **17 tools**.
54
65
 
55
66
  | Tool | HTTP endpoint | Use case |
56
67
  |---|---|---|
57
- | `eml_boot` | `POST /boot` | Identity + status + open tasks at session start |
68
+ | `eml_boot` | `POST /boot` | Manual brain-reload (SessionStart-Hook does this automatically at session start) |
58
69
  | `eml_recall` | `POST /recall` | Topic search (FTS5 + recency) |
59
70
 
60
71
  ### Write (typed)
@@ -64,14 +75,14 @@ All tools have an `eml_` prefix. Total: **17 tools**.
64
75
  | `eml_decide` | `POST /context` (type=decision) | Record a deliberate, documented decision |
65
76
  | `eml_set_status` | `POST /context` (type=status) | Set current status for a scope (auto-supersedes old active status) |
66
77
  | `eml_track_task` | `POST /context` (type=task) | Plan/track a task with priority + due date |
67
- | `eml_note` | `POST /context` (kind-discriminated) | Sammelfach for rule/profile/event/reference/log |
78
+ | `eml_note` | `POST /context` (kind-discriminated) | Catch-all for rule/profile/event/reference/log |
68
79
 
69
80
  ### Read / Find
70
81
 
71
82
  | Tool | HTTP endpoint | Use case |
72
83
  |---|---|---|
73
84
  | `eml_show` | `GET /brain-state?scope=` | Curated snapshot for any scope |
74
- | `eml_list` | `GET /list[/mode]` | Filter-based engram list |
85
+ | `eml_list` | `GET /list` | Filter-based engram list |
75
86
  | `eml_get` | `GET /engram/:id` | Single engram + relations |
76
87
  | `eml_projects` | `GET /projects` | List projects (filter: status) |
77
88
  | `eml_entities` | `GET /entities` | List entities (filter: kind) |
@@ -92,12 +103,12 @@ All tools have an `eml_` prefix. Total: **17 tools**.
92
103
  | `eml_entity_create` | `POST /entity` | Register an entity (required before `scope=entity.<id>`) |
93
104
  | `eml_entity_update` | `PUT /entity/:id` | Patch entity fields |
94
105
 
95
- ### Intentionally not exposed (v0.9.1)
106
+ ### Intentionally not exposed (v0.10.0)
96
107
 
97
108
  - `eml_relate` — available via HTTP API directly
98
- - `eml_confirm_review` — deferred to brain-hygiene cluster (post-v0.9.1)
99
- - Epistemic-mode write tools (observation/hypothesis/assessment/prediction/pattern) — available via HTTP API
100
- - `eml_session_get` — deferred to v0.9.2 (cross-session awareness)
109
+ - `eml_confirm_review` — deferred to brain-hygiene cluster
110
+ - Epistemic-mode write tools (observation/hypothesis/assessment/prediction/pattern) — Alpha-state, available via HTTP API
111
+ - Session-Awareness tools — deferred to its own future version
101
112
  - `eml_*_delete` — by design not in the agent action space; cleanup is operator-only
102
113
 
103
114
  ## Error handling
package/dist/cli.js CHANGED
@@ -1,5 +1,38 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  Object.defineProperty(exports, "__esModule", { value: true });
4
37
  const server_1 = require("./server");
5
38
  function parseArgs(argv) {
@@ -55,7 +88,15 @@ Example — Claude Code MCP config:
55
88
  process.exit(code);
56
89
  }
57
90
  async function main() {
58
- const args = parseArgs(process.argv.slice(2));
91
+ const argv = process.argv.slice(2);
92
+ // Dispatch: setup-mode vs server-mode
93
+ if (argv[0] === 'setup') {
94
+ const { runSetup } = await Promise.resolve().then(() => __importStar(require('./setup/index.js')));
95
+ await runSetup(argv.slice(1));
96
+ return;
97
+ }
98
+ // Server-mode (default)
99
+ const args = parseArgs(argv);
59
100
  if (args.help)
60
101
  printHelpAndExit(0);
61
102
  const url = args.url ?? process.env.EML_API_URL;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,qCAAyC;AAuBzC,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAY,EAAE,CAAA;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,OAAO,EAAI,CAAC;YAAC,GAAG,CAAC,GAAG,GAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAI,CAAC,KAAK,QAAQ,EAAG,CAAC;YAAC,GAAG,CAAC,IAAI,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAA;IACC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,IAAI;QAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAA;IAE/E,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAA;QACjG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,uBAAc,EAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,UAAU,MAAM,GAAG,KAAK,CAAC,CAAA;IACtG,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAY,CAAA;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ export declare const HOME_DIR: string;
2
+ export declare const EML_DIR: string;
3
+ export declare const EML_CONFIG: string;
4
+ export declare const EML_HOOKS_DIR: string;
5
+ export declare const CLAUDE_DIR: string;
6
+ export declare const CLAUDE_JSON: string;
7
+ export declare const CLAUDE_SETTINGS: string;
8
+ export declare const MANAGED_BY_MARKER = "engramprotocol-setup";
9
+ export declare const MCP_SERVER_NAME = "engramprotocol";
10
+ /** Resolve the package's own root (where templates/ lives). Works from dist/. */
11
+ export declare function pkgRoot(): string;
12
+ export declare function pkgVersion(): string;
13
+ export declare function templatesDir(): string;
14
+ export declare function promptText(question: string): Promise<string>;
15
+ export declare function promptConfirm(question: string, defaultYes?: boolean): Promise<boolean>;
16
+ export interface EmlConfig {
17
+ EML_URL?: string;
18
+ EML_API_TOKEN?: string;
19
+ EML_CLIENT_VERSION?: string;
20
+ }
21
+ export declare function readConfig(): EmlConfig | null;
22
+ export declare function writeConfig(cfg: EmlConfig): void;
23
+ export type SettingsJson = Record<string, any>;
24
+ export declare function readSettings(): SettingsJson;
25
+ export declare function backupSettings(): string;
26
+ export declare function writeSettings(settings: SettingsJson): void;
27
+ /** Add a permission entry to settings.permissions.allow if not already present. */
28
+ export declare function mergePermission(settings: SettingsJson, entry: string): boolean;
29
+ /** Remove permission entries matching the predicate. Returns count removed. */
30
+ export declare function removePermissions(settings: SettingsJson, predicate: (entry: string) => boolean): number;
31
+ export interface HookEntry {
32
+ hooks: Array<{
33
+ type: string;
34
+ command: string;
35
+ }>;
36
+ matcher?: string;
37
+ }
38
+ /** Add a command-hook to settings.hooks.<event>[] if no existing entry references the same command. */
39
+ export declare function mergeHookCommand(settings: SettingsJson, event: string, command: string): boolean;
40
+ /** Remove hook entries whose command starts with the given prefix (e.g. `$HOME/.eml/hooks/`). Returns count removed. */
41
+ export declare function removeHooksByCommandPrefix(settings: SettingsJson, prefix: string): number;
42
+ export declare function claudeCli(args: string[]): {
43
+ stdout: string;
44
+ stderr: string;
45
+ status: number;
46
+ };
47
+ export declare function claudeCliExists(): boolean;
48
+ /** Unauthenticated reachability check — "is the server alive?". */
49
+ export declare function verifyHealth(url: string): Promise<{
50
+ ok: boolean;
51
+ status?: number;
52
+ error?: string;
53
+ }>;
54
+ /** Authenticated round-trip — "does this token work?". Uses GET /stats (lightweight, auth-required). */
55
+ export declare function verifyToken(url: string, token: string): Promise<{
56
+ ok: boolean;
57
+ status?: number;
58
+ error?: string;
59
+ }>;
60
+ export interface HookTemplate {
61
+ filename: string;
62
+ event: string;
63
+ }
64
+ export declare const HOOK_TEMPLATES: HookTemplate[];
65
+ export declare function readTemplate(filename: string): string;
66
+ export declare function hasMarker(content: string): boolean;
67
+ export declare function installTemplate(filename: string): {
68
+ installedPath: string;
69
+ alreadyExisted: boolean;
70
+ };
71
+ //# sourceMappingURL=_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/setup/_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ // Setup-mode helpers: TTY prompts, config IO, settings.json merging, claude CLI wrapper,
3
+ // template resolution. Used by install/update/uninstall flows.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.HOOK_TEMPLATES = exports.MCP_SERVER_NAME = exports.MANAGED_BY_MARKER = exports.CLAUDE_SETTINGS = exports.CLAUDE_JSON = exports.CLAUDE_DIR = exports.EML_HOOKS_DIR = exports.EML_CONFIG = exports.EML_DIR = exports.HOME_DIR = void 0;
39
+ exports.pkgRoot = pkgRoot;
40
+ exports.pkgVersion = pkgVersion;
41
+ exports.templatesDir = templatesDir;
42
+ exports.promptText = promptText;
43
+ exports.promptConfirm = promptConfirm;
44
+ exports.readConfig = readConfig;
45
+ exports.writeConfig = writeConfig;
46
+ exports.readSettings = readSettings;
47
+ exports.backupSettings = backupSettings;
48
+ exports.writeSettings = writeSettings;
49
+ exports.mergePermission = mergePermission;
50
+ exports.removePermissions = removePermissions;
51
+ exports.mergeHookCommand = mergeHookCommand;
52
+ exports.removeHooksByCommandPrefix = removeHooksByCommandPrefix;
53
+ exports.claudeCli = claudeCli;
54
+ exports.claudeCliExists = claudeCliExists;
55
+ exports.verifyHealth = verifyHealth;
56
+ exports.verifyToken = verifyToken;
57
+ exports.readTemplate = readTemplate;
58
+ exports.hasMarker = hasMarker;
59
+ exports.installTemplate = installTemplate;
60
+ const fs = __importStar(require("fs"));
61
+ const path = __importStar(require("path"));
62
+ const readline = __importStar(require("readline"));
63
+ const child_process_1 = require("child_process");
64
+ // --- Paths ----------------------------------------------------------------
65
+ exports.HOME_DIR = process.env.HOME || process.env.USERPROFILE || '';
66
+ exports.EML_DIR = path.join(exports.HOME_DIR, '.eml');
67
+ exports.EML_CONFIG = path.join(exports.EML_DIR, 'config');
68
+ exports.EML_HOOKS_DIR = path.join(exports.EML_DIR, 'hooks');
69
+ exports.CLAUDE_DIR = path.join(exports.HOME_DIR, '.claude');
70
+ exports.CLAUDE_JSON = path.join(exports.HOME_DIR, '.claude.json');
71
+ exports.CLAUDE_SETTINGS = path.join(exports.CLAUDE_DIR, 'settings.json');
72
+ exports.MANAGED_BY_MARKER = 'engramprotocol-setup';
73
+ // MCP-server-name registered with Claude Code. Hardcoded per v0.10.0-PROPOSAL B.1.
74
+ exports.MCP_SERVER_NAME = 'engramprotocol';
75
+ // --- Package introspection ------------------------------------------------
76
+ /** Resolve the package's own root (where templates/ lives). Works from dist/. */
77
+ function pkgRoot() {
78
+ // CommonJS: __dirname → .../packages/mcp-server/dist/setup
79
+ // pkg root is two levels up
80
+ return path.resolve(__dirname, '..', '..');
81
+ }
82
+ function pkgVersion() {
83
+ const pkgPath = path.join(pkgRoot(), 'package.json');
84
+ const raw = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
85
+ return raw.version || '0.0.0';
86
+ }
87
+ function templatesDir() {
88
+ return path.join(pkgRoot(), 'templates');
89
+ }
90
+ // --- TTY prompts ----------------------------------------------------------
91
+ async function promptText(question) {
92
+ const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
93
+ return new Promise((resolve) => {
94
+ rl.question(question, (answer) => {
95
+ rl.close();
96
+ resolve(answer.trim());
97
+ });
98
+ });
99
+ }
100
+ async function promptConfirm(question, defaultYes = false) {
101
+ const suffix = defaultYes ? '[Y/n]' : '[y/N]';
102
+ const answer = await promptText(`${question} ${suffix} `);
103
+ if (!answer)
104
+ return defaultYes;
105
+ return /^y(es)?$/i.test(answer);
106
+ }
107
+ function readConfig() {
108
+ if (!fs.existsSync(exports.EML_CONFIG))
109
+ return null;
110
+ const raw = fs.readFileSync(exports.EML_CONFIG, 'utf-8');
111
+ const out = {};
112
+ for (const line of raw.split('\n')) {
113
+ const trimmed = line.trim();
114
+ if (!trimmed || trimmed.startsWith('#'))
115
+ continue;
116
+ const eq = trimmed.indexOf('=');
117
+ if (eq < 0)
118
+ continue;
119
+ const key = trimmed.slice(0, eq).trim();
120
+ const value = trimmed.slice(eq + 1).trim();
121
+ if (key === 'EML_URL' || key === 'EML_API_TOKEN' || key === 'EML_CLIENT_VERSION') {
122
+ out[key] = value;
123
+ }
124
+ }
125
+ return out;
126
+ }
127
+ function writeConfig(cfg) {
128
+ fs.mkdirSync(exports.EML_DIR, { recursive: true });
129
+ const lines = [
130
+ '# EML config — managed by engramprotocol-setup. Edit with care.',
131
+ `EML_URL=${cfg.EML_URL || ''}`,
132
+ `EML_API_TOKEN=${cfg.EML_API_TOKEN || ''}`,
133
+ `EML_CLIENT_VERSION=${cfg.EML_CLIENT_VERSION || ''}`,
134
+ '',
135
+ ];
136
+ fs.writeFileSync(exports.EML_CONFIG, lines.join('\n'), { mode: 0o600 });
137
+ }
138
+ function readSettings() {
139
+ if (!fs.existsSync(exports.CLAUDE_SETTINGS))
140
+ return {};
141
+ const raw = fs.readFileSync(exports.CLAUDE_SETTINGS, 'utf-8');
142
+ try {
143
+ return JSON.parse(raw);
144
+ }
145
+ catch (err) {
146
+ const e = err;
147
+ throw new Error(`Invalid JSON in ${exports.CLAUDE_SETTINGS}: ${e.message}`);
148
+ }
149
+ }
150
+ function backupSettings() {
151
+ if (!fs.existsSync(exports.CLAUDE_SETTINGS))
152
+ return '';
153
+ const ts = new Date().toISOString().replace(/[:.]/g, '-').replace('T', '-').slice(0, 19);
154
+ const backupPath = `${exports.CLAUDE_SETTINGS}.pre-eml-install-${ts}.bak`;
155
+ fs.copyFileSync(exports.CLAUDE_SETTINGS, backupPath);
156
+ return backupPath;
157
+ }
158
+ function writeSettings(settings) {
159
+ fs.mkdirSync(exports.CLAUDE_DIR, { recursive: true });
160
+ const tmp = `${exports.CLAUDE_SETTINGS}.tmp-${process.pid}`;
161
+ fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + '\n');
162
+ fs.renameSync(tmp, exports.CLAUDE_SETTINGS);
163
+ }
164
+ // --- Permissions merge ----------------------------------------------------
165
+ /** Add a permission entry to settings.permissions.allow if not already present. */
166
+ function mergePermission(settings, entry) {
167
+ if (!settings.permissions)
168
+ settings.permissions = {};
169
+ if (!Array.isArray(settings.permissions.allow))
170
+ settings.permissions.allow = [];
171
+ const allow = settings.permissions.allow;
172
+ if (allow.includes(entry))
173
+ return false;
174
+ allow.push(entry);
175
+ return true;
176
+ }
177
+ /** Remove permission entries matching the predicate. Returns count removed. */
178
+ function removePermissions(settings, predicate) {
179
+ if (!settings.permissions || !Array.isArray(settings.permissions.allow))
180
+ return 0;
181
+ const before = settings.permissions.allow.length;
182
+ settings.permissions.allow = settings.permissions.allow.filter((e) => !predicate(e));
183
+ return before - settings.permissions.allow.length;
184
+ }
185
+ /** Add a command-hook to settings.hooks.<event>[] if no existing entry references the same command. */
186
+ function mergeHookCommand(settings, event, command) {
187
+ if (!settings.hooks)
188
+ settings.hooks = {};
189
+ if (!Array.isArray(settings.hooks[event]))
190
+ settings.hooks[event] = [];
191
+ const events = settings.hooks[event];
192
+ const already = events.some((e) => Array.isArray(e.hooks) && e.hooks.some((h) => h.command === command));
193
+ if (already)
194
+ return false;
195
+ events.push({ hooks: [{ type: 'command', command }] });
196
+ return true;
197
+ }
198
+ /** Remove hook entries whose command starts with the given prefix (e.g. `$HOME/.eml/hooks/`). Returns count removed. */
199
+ function removeHooksByCommandPrefix(settings, prefix) {
200
+ if (!settings.hooks)
201
+ return 0;
202
+ let removed = 0;
203
+ for (const event of Object.keys(settings.hooks)) {
204
+ const entries = settings.hooks[event];
205
+ if (!Array.isArray(entries))
206
+ continue;
207
+ const kept = entries.filter((entry) => {
208
+ const matches = Array.isArray(entry.hooks) && entry.hooks.some((h) => h.command.includes(prefix));
209
+ if (matches)
210
+ removed += 1;
211
+ return !matches;
212
+ });
213
+ settings.hooks[event] = kept;
214
+ if (kept.length === 0)
215
+ delete settings.hooks[event];
216
+ }
217
+ return removed;
218
+ }
219
+ // --- claude CLI wrapper ---------------------------------------------------
220
+ function claudeCli(args) {
221
+ const result = (0, child_process_1.spawnSync)('claude', args, { encoding: 'utf-8' });
222
+ return {
223
+ stdout: result.stdout || '',
224
+ stderr: result.stderr || '',
225
+ status: typeof result.status === 'number' ? result.status : 1,
226
+ };
227
+ }
228
+ function claudeCliExists() {
229
+ const result = (0, child_process_1.spawnSync)('claude', ['--version'], { encoding: 'utf-8' });
230
+ return typeof result.status === 'number' && result.status === 0;
231
+ }
232
+ // --- HTTP checks ----------------------------------------------------------
233
+ /** Unauthenticated reachability check — "is the server alive?". */
234
+ async function verifyHealth(url) {
235
+ try {
236
+ const res = await fetch(`${url.replace(/\/$/, '')}/health`);
237
+ return { ok: res.ok, status: res.status };
238
+ }
239
+ catch (err) {
240
+ const e = err;
241
+ return { ok: false, error: e.message };
242
+ }
243
+ }
244
+ /** Authenticated round-trip — "does this token work?". Uses GET /stats (lightweight, auth-required). */
245
+ async function verifyToken(url, token) {
246
+ try {
247
+ const res = await fetch(`${url.replace(/\/$/, '')}/stats`, {
248
+ headers: { Authorization: `Bearer ${token}` },
249
+ });
250
+ return { ok: res.ok, status: res.status };
251
+ }
252
+ catch (err) {
253
+ const e = err;
254
+ return { ok: false, error: e.message };
255
+ }
256
+ }
257
+ exports.HOOK_TEMPLATES = [
258
+ { filename: 'session_start_boot.sh', event: 'SessionStart' },
259
+ { filename: 'user_prompt_submit_reminder.sh', event: 'UserPromptSubmit' },
260
+ ];
261
+ function readTemplate(filename) {
262
+ return fs.readFileSync(path.join(templatesDir(), 'hooks', filename), 'utf-8');
263
+ }
264
+ function hasMarker(content) {
265
+ return content.includes(exports.MANAGED_BY_MARKER);
266
+ }
267
+ function installTemplate(filename) {
268
+ fs.mkdirSync(exports.EML_HOOKS_DIR, { recursive: true });
269
+ const installedPath = path.join(exports.EML_HOOKS_DIR, filename);
270
+ const alreadyExisted = fs.existsSync(installedPath);
271
+ const content = readTemplate(filename);
272
+ fs.writeFileSync(installedPath, content, { mode: 0o755 });
273
+ return { installedPath, alreadyExisted };
274
+ }
275
+ //# sourceMappingURL=_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/setup/_helpers.ts"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyB/D,0BAIC;AAED,gCAIC;AAED,oCAEC;AAID,gCAQC;AAED,sCAKC;AAUD,gCAgBC;AAED,kCAUC;AAMD,oCASC;AAED,wCAMC;AAED,sCAKC;AAKD,0CAOC;AAGD,8CAKC;AAUD,4CAUC;AAGD,gEAeC;AAID,8BAOC;AAED,0CAGC;AAKD,oCAQC;AAGD,kCAUC;AAcD,oCAEC;AAED,8BAEC;AAED,0CAOC;AA7PD,uCAAwB;AACxB,2CAA4B;AAC5B,mDAAoC;AACpC,iDAAyC;AAEzC,6EAA6E;AAEhE,QAAA,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;AAC5D,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,MAAM,CAAC,CAAA;AACrC,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAO,EAAE,QAAQ,CAAC,CAAA;AACzC,QAAA,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,eAAO,EAAE,OAAO,CAAC,CAAA;AAC3C,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,SAAS,CAAC,CAAA;AAC3C,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,cAAc,CAAC,CAAA;AACjD,QAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,eAAe,CAAC,CAAA;AAExD,QAAA,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,mFAAmF;AACtE,QAAA,eAAe,GAAG,gBAAgB,CAAA;AAE/C,6EAA6E;AAE7E,iFAAiF;AACjF,SAAgB,OAAO;IACrB,2DAA2D;IAC3D,4BAA4B;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAA;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAyB,CAAA;IACjF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAA;AAC/B,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;AAC1C,CAAC;AAED,6EAA6E;AAEtE,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,UAAU,GAAG,KAAK;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAA;IAC9B,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC;AAUD,SAAgB,UAAU;IACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAU,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QACjD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,EAAE,GAAG,CAAC;YAAE,SAAQ;QACpB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACjF,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAgB,WAAW,CAAC,GAAc;IACxC,EAAE,CAAC,SAAS,CAAC,eAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG;QACZ,iEAAiE;QACjE,WAAW,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE;QAC9B,iBAAiB,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE;QAC1C,sBAAsB,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE;QACpD,EAAE;KACH,CAAA;IACD,EAAE,CAAC,aAAa,CAAC,kBAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AACjE,CAAC;AAMD,SAAgB,YAAY;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAe,CAAC;QAAE,OAAO,EAAE,CAAA;IAC9C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAe,EAAE,OAAO,CAAC,CAAA;IACrD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA;IACxC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAY,CAAA;QACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,uBAAe,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,SAAgB,cAAc;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAe,CAAC;QAAE,OAAO,EAAE,CAAA;IAC9C,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,MAAM,UAAU,GAAG,GAAG,uBAAe,oBAAoB,EAAE,MAAM,CAAA;IACjE,EAAE,CAAC,YAAY,CAAC,uBAAe,EAAE,UAAU,CAAC,CAAA;IAC5C,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAgB,aAAa,CAAC,QAAsB;IAClD,EAAE,CAAC,SAAS,CAAC,kBAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,GAAG,uBAAe,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAA;IACnD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/D,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,uBAAe,CAAC,CAAA;AACrC,CAAC;AAED,6EAA6E;AAE7E,mFAAmF;AACnF,SAAgB,eAAe,CAAC,QAAsB,EAAE,KAAa;IACnE,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAA;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;QAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAA;IAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAiB,CAAA;IACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+EAA+E;AAC/E,SAAgB,iBAAiB,CAAC,QAAsB,EAAE,SAAqC;IAC7F,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAA;IAChD,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5F,OAAO,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAA;AACnD,CAAC;AASD,uGAAuG;AACvG,SAAgB,gBAAgB,CAAC,QAAsB,EAAE,KAAa,EAAE,OAAe;IACrF,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CACrE,CAAA;IACD,IAAI,OAAO;QAAE,OAAO,KAAK,CAAA;IACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;IACtD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,wHAAwH;AACxH,SAAgB,0BAA0B,CAAC,QAAsB,EAAE,MAAc;IAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,CAAC,CAAA;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAQ;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YACjG,IAAI,OAAO;gBAAE,OAAO,IAAI,CAAC,CAAA;YACzB,OAAO,CAAC,OAAO,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,6EAA6E;AAE7E,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9D,CAAA;AACH,CAAC;AAED,SAAgB,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IACxE,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,6EAA6E;AAE7E,mEAAmE;AAC5D,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;QAC3D,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAY,CAAA;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACxC,CAAC;AACH,CAAC;AAED,wGAAwG;AACjG,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,KAAa;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE;YACzD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAY,CAAA;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACxC,CAAC;AACH,CAAC;AASY,QAAA,cAAc,GAAmB;IAC5C,EAAE,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5D,EAAE,QAAQ,EAAE,gCAAgC,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAC1E,CAAA;AAED,SAAgB,YAAY,CAAC,QAAgB;IAC3C,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;AAC/E,CAAC;AAED,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,QAAQ,CAAC,yBAAiB,CAAC,CAAA;AAC5C,CAAC;AAED,SAAgB,eAAe,CAAC,QAAgB;IAC9C,EAAE,CAAC,SAAS,CAAC,qBAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAa,EAAE,QAAQ,CAAC,CAAA;IACxD,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACtC,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runSetup(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAqBA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5D"}