memroot 0.1.0-alpha.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.
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "memroot",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "Memroot installation status and capability discovery.",
5
+ "author": {
6
+ "name": "Memroot"
7
+ },
8
+ "skills": "./skills/"
9
+ }
@@ -0,0 +1,14 @@
1
+ # Memroot for Claude Code
2
+
3
+ This is the complete, self-contained Memroot plugin root, version `0.1.0-alpha.0`. The setup utility copies this folder into a durable installation before native registration. Node.js is the only runtime requirement. No script refers to the npm cache or files outside this bundle.
4
+
5
+ The status skill and `node scripts/status.mjs` explain this release's capabilities. Installation status is available. Browser sign-in, cloud memory retrieval, session capture, extraction, and graph building are unavailable. The scripts do not read repository files, transcripts, credentials, or configuration, make network requests, or write data.
6
+
7
+ The SessionStart hook supplies a short, static capability notice. It accepts at most 64 KiB of event JSON and waits at most 500 ms for stdin. Malformed inputs and unrelated events exit quietly. It never includes event fields in output. There is no Stop or SessionEnd handler because this release cannot capture or upload sessions.
8
+
9
+ Inspect the installed plugin through the agent's native plugin interface.
10
+
11
+ Official references verified September 13, 2026:
12
+
13
+ - [Plugin packaging and native installation](https://code.claude.com/docs/en/plugins-reference)
14
+ - [Hook event and output contracts](https://code.claude.com/docs/en/hooks)
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup|resume|clear|compact",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/session-start.mjs\"",
10
+ "timeout": 3
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ // The native host owns hook trust. This script reads only the small event
3
+ // envelope from stdin; it never reads a transcript or other referenced file.
4
+ const maximumBytes = 64 * 1024;
5
+ const allowedSources = new Set(["startup", "resume", "clear", "compact"]);
6
+ let bytes = 0;
7
+ let chunks = [];
8
+ let finished = false;
9
+
10
+ function finish(output = "") {
11
+ if (finished) return;
12
+ finished = true;
13
+ clearTimeout(deadline);
14
+ chunks = [];
15
+ process.stdin.destroy();
16
+ if (output) {
17
+ process.stdout.write(output, () => process.exit(0));
18
+ } else {
19
+ process.exit(0);
20
+ }
21
+ }
22
+
23
+ // Fail quietly if the host never closes stdin. Native host timeout is a final
24
+ // bound; this shorter deadline avoids delaying an interactive session.
25
+ const deadline = setTimeout(() => finish(), 500);
26
+ process.stdout.on("error", () => process.exit(0));
27
+ process.stdin.on("error", () => finish());
28
+ process.stdin.on("data", (chunk) => {
29
+ bytes += chunk.length;
30
+ if (bytes > maximumBytes) {
31
+ finish();
32
+ return;
33
+ }
34
+ chunks.push(chunk);
35
+ });
36
+ process.stdin.on("end", () => {
37
+ let event;
38
+ try {
39
+ event = JSON.parse(Buffer.concat(chunks).toString("utf8"));
40
+ } catch {
41
+ finish();
42
+ return;
43
+ }
44
+ if (
45
+ event === null ||
46
+ typeof event !== "object" ||
47
+ Array.isArray(event) ||
48
+ event.hook_event_name !== "SessionStart" ||
49
+ !allowedSources.has(event.source)
50
+ ) {
51
+ finish();
52
+ return;
53
+ }
54
+ finish(
55
+ `${JSON.stringify({
56
+ hookSpecificOutput: {
57
+ hookEventName: "SessionStart",
58
+ additionalContext:
59
+ "Memroot plugin is installed but not connected. This release provides installation status only; cloud sign-in, memory retrieval, and session capture are unavailable. If the user asks about Memroot, use its status skill. No session content is captured or uploaded.",
60
+ },
61
+ })}\n`,
62
+ );
63
+ });
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ // Static capabilities of this installed bundle, not a cloud connectivity probe.
3
+ // Intentionally has no filesystem access, network access, or dependencies.
4
+ process.stdout.write(
5
+ `${JSON.stringify({
6
+ plugin: "memroot",
7
+ version: "0.1.0-alpha.0",
8
+ agent: "claude",
9
+ connection: "not_connected",
10
+ capabilities: {
11
+ installationStatus: true,
12
+ cloudAuthentication: false,
13
+ memoryRetrieval: false,
14
+ sessionCapture: false,
15
+ extraction: false,
16
+ },
17
+ message:
18
+ "Memroot plugin is installed. This release is not connected to Memroot cloud; browser sign-in, memory retrieval, and session capture are not available.",
19
+ })}\n`,
20
+ );
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: status
3
+ description: Use when the user asks whether Memroot is installed or connected, whether memories are being captured, or which Memroot capabilities are available.
4
+ ---
5
+
6
+ # Memroot status
7
+
8
+ Run the bundled [status script](../../scripts/status.mjs) with Node.js. Resolve it relative to this skill's installed directory; it remains inside the plugin after installation. In a shell where the native plugin variable is available:
9
+
10
+ ```sh
11
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/status.mjs"
12
+ ```
13
+
14
+ Report the returned version and capabilities. The script describes this installed bundle; it does not check an account, network service, workspace installation record, or hook trust.
15
+
16
+ This release has no cloud authentication, retrieval, extraction, or session capture. An installed plugin does not mean that the account is connected or that graph building is active. If asked to save or retrieve memory, explain that the connection capability is unavailable in this release. Do not collect transcripts or credentials, create a substitute local memory store, or invent a cloud endpoint.
17
+
18
+ For installer diagnostics, the user can run `npx memroot doctor`.
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "memroot",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "Memroot installation status and capability discovery.",
5
+ "author": {
6
+ "name": "Memroot"
7
+ },
8
+ "skills": "./skills/",
9
+ "interface": {
10
+ "displayName": "Memroot",
11
+ "shortDescription": "Check Memroot installation and available capabilities.",
12
+ "longDescription": "Inspect this Memroot plugin's installed version and capabilities. Cloud connection and memory workflows are not available in this release.",
13
+ "developerName": "Memroot",
14
+ "category": "Productivity",
15
+ "capabilities": ["Read"],
16
+ "defaultPrompt": ["Check my Memroot plugin status."]
17
+ }
18
+ }
@@ -0,0 +1,16 @@
1
+ # Memroot for Codex
2
+
3
+ This is the complete, self-contained Memroot plugin root, version `0.1.0-alpha.0`. The setup utility copies this folder into a durable installation before native registration. Node.js is the only runtime requirement. No script refers to the npm cache or files outside this bundle.
4
+
5
+ The status skill and `node scripts/status.mjs` explain this release's capabilities. Installation status is available. Browser sign-in, cloud memory retrieval, session capture, extraction, and graph building are unavailable. The scripts do not read repository files, transcripts, credentials, or configuration, make network requests, or write data.
6
+
7
+ The SessionStart hook supplies a short, static capability notice. It accepts at most 64 KiB of event JSON and waits at most 500 ms for stdin. Malformed inputs and unrelated events exit quietly. It never includes event fields in output. There is no Stop or SessionEnd handler because this release cannot capture or upload sessions.
8
+
9
+ After installation, review and trust the hook through `/hooks` in Codex. Plugin installation does not establish hook trust. Changed hook definitions require review again.
10
+
11
+ Official references verified September 13, 2026:
12
+
13
+ - [OpenAI plugin packaging](https://developers.openai.com/plugins/build/plugins)
14
+ - [OpenAI hook contracts and trust](https://learn.chatgpt.com/docs/hooks)
15
+
16
+ The compatibility manifest intentionally relies on default `hooks/hooks.json` discovery. Hook commands use `PLUGIN_ROOT`; Codex also provides Claude-compatible plugin variables.
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup|resume|clear|compact",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node \"${PLUGIN_ROOT}/scripts/session-start.mjs\"",
10
+ "timeout": 3
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ // The native host owns hook trust. This script reads only the small event
3
+ // envelope from stdin; it never reads a transcript or other referenced file.
4
+ const maximumBytes = 64 * 1024;
5
+ const allowedSources = new Set(["startup", "resume", "clear", "compact"]);
6
+ let bytes = 0;
7
+ let chunks = [];
8
+ let finished = false;
9
+
10
+ function finish(output = "") {
11
+ if (finished) return;
12
+ finished = true;
13
+ clearTimeout(deadline);
14
+ chunks = [];
15
+ process.stdin.destroy();
16
+ if (output) {
17
+ process.stdout.write(output, () => process.exit(0));
18
+ } else {
19
+ process.exit(0);
20
+ }
21
+ }
22
+
23
+ // Fail quietly if the host never closes stdin. Native host timeout is a final
24
+ // bound; this shorter deadline avoids delaying an interactive session.
25
+ const deadline = setTimeout(() => finish(), 500);
26
+ process.stdout.on("error", () => process.exit(0));
27
+ process.stdin.on("error", () => finish());
28
+ process.stdin.on("data", (chunk) => {
29
+ bytes += chunk.length;
30
+ if (bytes > maximumBytes) {
31
+ finish();
32
+ return;
33
+ }
34
+ chunks.push(chunk);
35
+ });
36
+ process.stdin.on("end", () => {
37
+ let event;
38
+ try {
39
+ event = JSON.parse(Buffer.concat(chunks).toString("utf8"));
40
+ } catch {
41
+ finish();
42
+ return;
43
+ }
44
+ if (
45
+ event === null ||
46
+ typeof event !== "object" ||
47
+ Array.isArray(event) ||
48
+ event.hook_event_name !== "SessionStart" ||
49
+ !allowedSources.has(event.source)
50
+ ) {
51
+ finish();
52
+ return;
53
+ }
54
+ finish(
55
+ `${JSON.stringify({
56
+ hookSpecificOutput: {
57
+ hookEventName: "SessionStart",
58
+ additionalContext:
59
+ "Memroot plugin is installed but not connected. This release provides installation status only; cloud sign-in, memory retrieval, and session capture are unavailable. If the user asks about Memroot, use its status skill. No session content is captured or uploaded.",
60
+ },
61
+ })}\n`,
62
+ );
63
+ });
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ // Static capabilities of this installed bundle, not a cloud connectivity probe.
3
+ // Intentionally has no filesystem access, network access, or dependencies.
4
+ process.stdout.write(
5
+ `${JSON.stringify({
6
+ plugin: "memroot",
7
+ version: "0.1.0-alpha.0",
8
+ agent: "codex",
9
+ connection: "not_connected",
10
+ capabilities: {
11
+ installationStatus: true,
12
+ cloudAuthentication: false,
13
+ memoryRetrieval: false,
14
+ sessionCapture: false,
15
+ extraction: false,
16
+ },
17
+ message:
18
+ "Memroot plugin is installed. This release is not connected to Memroot cloud; browser sign-in, memory retrieval, and session capture are not available.",
19
+ })}\n`,
20
+ );
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: status
3
+ description: Use when the user asks whether Memroot is installed or connected, whether memories are being captured, or which Memroot capabilities are available.
4
+ ---
5
+
6
+ # Memroot status
7
+
8
+ Run the bundled [status script](../../scripts/status.mjs) with Node.js. Resolve it relative to this skill's installed directory; it remains inside the plugin after installation. In a shell where the native plugin variable is available:
9
+
10
+ ```sh
11
+ node "${PLUGIN_ROOT}/scripts/status.mjs"
12
+ ```
13
+
14
+ Report the returned version and capabilities. The script describes this installed bundle; it does not check an account, network service, workspace installation record, or hook trust.
15
+
16
+ This release has no cloud authentication, retrieval, extraction, or session capture. An installed plugin does not mean that the account is connected or that graph building is active. If asked to save or retrieve memory, explain that the connection capability is unavailable in this release. Do not collect transcripts or credentials, create a substitute local memory store, or invent a cloud endpoint.
17
+
18
+ For installer diagnostics, the user can run `npx memroot doctor`.
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "memroot",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "Memroot installation status and capability discovery.",
5
+ "author": {
6
+ "name": "Memroot"
7
+ },
8
+ "skills": "./skills/"
9
+ }
@@ -0,0 +1,14 @@
1
+ # Memroot for Grok Build
2
+
3
+ This is the complete, self-contained Memroot plugin root, version `0.1.0-alpha.0`. The setup utility copies this folder into a durable installation before native registration. Node.js is the only runtime requirement. No script refers to the npm cache or files outside this bundle.
4
+
5
+ The status skill and `node scripts/status.mjs` explain this release's capabilities. Installation status is available. Browser sign-in, cloud memory retrieval, session capture, extraction, and graph building are unavailable. The scripts do not read repository files, transcripts, credentials, or configuration, make network requests, or write data.
6
+
7
+ Grok ignores stdout for passive hook events, including SessionStart. Therefore this bundle uses a discoverable status skill and intentionally declares no lifecycle handlers in hooks/hooks.json. It uses the documented Claude-compatible plugin manifest.
8
+
9
+ Inspect the installed plugin through the agent's native plugin interface.
10
+
11
+ Official references verified September 13, 2026:
12
+
13
+ - [Plugin loading and Claude compatibility](https://docs.x.ai/build/features/skills-plugins-marketplaces)
14
+ - [Hook contract and passive stdout behavior](https://docs.x.ai/build/features/hooks)
@@ -0,0 +1,3 @@
1
+ {
2
+ "hooks": {}
3
+ }
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ // Static capabilities of this installed bundle, not a cloud connectivity probe.
3
+ // Intentionally has no filesystem access, network access, or dependencies.
4
+ process.stdout.write(
5
+ `${JSON.stringify({
6
+ plugin: "memroot",
7
+ version: "0.1.0-alpha.0",
8
+ agent: "grok",
9
+ connection: "not_connected",
10
+ capabilities: {
11
+ installationStatus: true,
12
+ cloudAuthentication: false,
13
+ memoryRetrieval: false,
14
+ sessionCapture: false,
15
+ extraction: false,
16
+ },
17
+ message:
18
+ "Memroot plugin is installed. This release is not connected to Memroot cloud; browser sign-in, memory retrieval, and session capture are not available.",
19
+ })}\n`,
20
+ );
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: status
3
+ description: Use when the user asks whether Memroot is installed or connected, whether memories are being captured, or which Memroot capabilities are available.
4
+ ---
5
+
6
+ # Memroot status
7
+
8
+ Run the bundled [status script](../../scripts/status.mjs) with Node.js. Resolve it relative to this skill's installed directory; it remains inside the plugin after installation. In a shell where the native plugin variable is available:
9
+
10
+ ```sh
11
+ node "${GROK_PLUGIN_ROOT}/scripts/status.mjs"
12
+ ```
13
+
14
+ Report the returned version and capabilities. The script describes this installed bundle; it does not check an account, network service, workspace installation record, or hook trust.
15
+
16
+ This release has no cloud authentication, retrieval, extraction, or session capture. An installed plugin does not mean that the account is connected or that graph building is active. If asked to save or retrieve memory, explain that the connection capability is unavailable in this release. Do not collect transcripts or credentials, create a substitute local memory store, or invent a cloud endpoint.
17
+
18
+ For installer diagnostics, the user can run `npx memroot doctor`.
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "memroot",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "Install Memroot's native coding-agent plugins",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "os": [
8
+ "darwin",
9
+ "linux"
10
+ ],
11
+ "homepage": "https://memroot.dev",
12
+ "engines": {
13
+ "node": ">=22"
14
+ },
15
+ "bin": {
16
+ "memroot": "dist/index.js"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public",
24
+ "tag": "latest"
25
+ },
26
+ "scripts": {
27
+ "build": "node build.mjs",
28
+ "typecheck": "tsc --noEmit",
29
+ "test": "pnpm build && node --test test/*.test.mjs",
30
+ "prepack": "pnpm build"
31
+ },
32
+ "devDependencies": {
33
+ "esbuild": "0.28.2",
34
+ "@clack/prompts": "1.8.0"
35
+ }
36
+ }