Rebrand NanoClaw to EJClaw

This commit is contained in:
Eyejoker
2026-03-19 03:31:41 +09:00
parent 29b78fc286
commit f2ad1331a9
44 changed files with 564 additions and 535 deletions

View File

@@ -1,11 +1,11 @@
{
"name": "nanoclaw-agent-runner",
"name": "ejclaw-agent-runner",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "nanoclaw-agent-runner",
"name": "ejclaw-agent-runner",
"version": "1.0.0",
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.2.76",

View File

@@ -1,8 +1,8 @@
{
"name": "nanoclaw-agent-runner",
"name": "ejclaw-agent-runner",
"version": "1.0.0",
"type": "module",
"description": "Container-side agent runner for NanoClaw",
"description": "Container-side agent runner for EJClaw",
"main": "dist/index.js",
"scripts": {
"build": "tsc",

View File

@@ -1,5 +1,5 @@
/**
* NanoClaw Agent Runner
* EJClaw Agent Runner
* Runs inside a container, receives config via stdin, outputs result to stdout
*
* Input protocol:
@@ -60,11 +60,19 @@ interface SDKUserMessage {
}
// Paths configurable via env vars (defaults to container paths for backwards compat)
const GROUP_DIR = process.env.NANOCLAW_GROUP_DIR || '/workspace/group';
const IPC_DIR = process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const EXTRA_BASE = process.env.NANOCLAW_EXTRA_DIR || '/workspace/extra';
const GROUP_DIR =
process.env.EJCLAW_GROUP_DIR ||
process.env.NANOCLAW_GROUP_DIR ||
'/workspace/group';
const IPC_DIR =
process.env.EJCLAW_IPC_DIR || process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const EXTRA_BASE =
process.env.EJCLAW_EXTRA_DIR ||
process.env.NANOCLAW_EXTRA_DIR ||
'/workspace/extra';
// Optional: override cwd (agent works in this directory instead of GROUP_DIR)
const WORK_DIR = process.env.NANOCLAW_WORK_DIR || '';
const WORK_DIR =
process.env.EJCLAW_WORK_DIR || process.env.NANOCLAW_WORK_DIR || '';
const IPC_INPUT_DIR = path.join(IPC_DIR, 'input');
const MAX_TURNS = 100;

View File

@@ -1,5 +1,5 @@
/**
* Stdio MCP Server for NanoClaw
* Stdio MCP Server for EJClaw
* Standalone process that agent teams subagents can inherit.
* Reads context from environment variables, writes IPC files for the host.
*/
@@ -11,14 +11,17 @@ import fs from 'fs';
import path from 'path';
import { CronExpressionParser } from 'cron-parser';
const IPC_DIR = process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const IPC_DIR =
process.env.EJCLAW_IPC_DIR || process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const MESSAGES_DIR = path.join(IPC_DIR, 'messages');
const TASKS_DIR = path.join(IPC_DIR, 'tasks');
// Context from environment variables (set by the agent runner)
const chatJid = process.env.NANOCLAW_CHAT_JID!;
const groupFolder = process.env.NANOCLAW_GROUP_FOLDER!;
const isMain = process.env.NANOCLAW_IS_MAIN === '1';
const chatJid = process.env.EJCLAW_CHAT_JID || process.env.NANOCLAW_CHAT_JID!;
const groupFolder =
process.env.EJCLAW_GROUP_FOLDER || process.env.NANOCLAW_GROUP_FOLDER!;
const isMain =
(process.env.EJCLAW_IS_MAIN || process.env.NANOCLAW_IS_MAIN) === '1';
function writeIpcFile(dir: string, data: object): string {
fs.mkdirSync(dir, { recursive: true });

View File

@@ -1,11 +1,11 @@
{
"name": "nanoclaw-codex-runner",
"name": "ejclaw-codex-runner",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "nanoclaw-codex-runner",
"name": "ejclaw-codex-runner",
"version": "1.0.0",
"dependencies": {
"@openai/codex-sdk": "^0.114.0"

View File

@@ -1,8 +1,8 @@
{
"name": "nanoclaw-codex-runner",
"name": "ejclaw-codex-runner",
"version": "1.0.0",
"type": "module",
"description": "Container-side Codex CLI runner for NanoClaw",
"description": "Container-side Codex CLI runner for EJClaw",
"main": "dist/index.js",
"scripts": {
"build": "tsc",

View File

@@ -144,8 +144,8 @@ export class CodexAppServerClient {
await this.request('initialize', {
clientInfo: {
name: 'nanoclaw_codex_runner',
title: 'NanoClaw Codex Runner',
name: 'ejclaw_codex_runner',
title: 'EJClaw Codex Runner',
version: '1.0.0',
},
capabilities: {
@@ -182,7 +182,7 @@ export class CodexAppServerClient {
model: options.model,
approvalPolicy: 'never',
sandbox: 'danger-full-access',
serviceName: 'nanoclaw',
serviceName: 'ejclaw',
};
const result = sessionId
@@ -362,7 +362,7 @@ export class CodexAppServerClient {
this.respondError(
message.id,
-32601,
`NanoClaw does not handle server request ${message.method}`,
`EJClaw does not handle server request ${message.method}`,
);
}

View File

@@ -1,12 +1,12 @@
/**
* NanoClaw Codex Runner
* EJClaw Codex Runner
*
* Default runtime is Codex app-server, with SDK fallback available via
* CODEX_RUNTIME=sdk or automatic fallback when app-server startup fails.
*
* Input protocol:
* Stdin: Full ContainerInput JSON (read until EOF)
* IPC: Follow-up messages as JSON files in $NANOCLAW_IPC_DIR/input/
* IPC: Follow-up messages as JSON files in $EJCLAW_IPC_DIR/input/
* Sentinel: _close — signals session end
*
* Stdout protocol:
@@ -45,9 +45,14 @@ interface ContainerOutput {
// ── Constants ──────────────────────────────────────────────────────
const GROUP_DIR = process.env.NANOCLAW_GROUP_DIR || '/workspace/group';
const IPC_DIR = process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const WORK_DIR = process.env.NANOCLAW_WORK_DIR || '';
const GROUP_DIR =
process.env.EJCLAW_GROUP_DIR ||
process.env.NANOCLAW_GROUP_DIR ||
'/workspace/group';
const IPC_DIR =
process.env.EJCLAW_IPC_DIR || process.env.NANOCLAW_IPC_DIR || '/workspace/ipc';
const WORK_DIR =
process.env.EJCLAW_WORK_DIR || process.env.NANOCLAW_WORK_DIR || '';
const IPC_INPUT_DIR = path.join(IPC_DIR, 'input');
const IPC_INPUT_CLOSE_SENTINEL = path.join(IPC_INPUT_DIR, '_close');
const IPC_POLL_MS = 500;