codeksei 0.1.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/LICENSE +661 -0
- package/README.en.md +215 -0
- package/README.md +259 -0
- package/bin/codeksei.js +10 -0
- package/bin/cyberboss.js +11 -0
- package/package.json +86 -0
- package/scripts/install-background-tasks.ps1 +135 -0
- package/scripts/open_shared_wechat_thread.sh +94 -0
- package/scripts/open_wechat_thread.sh +117 -0
- package/scripts/shared-common.js +791 -0
- package/scripts/shared-open.js +46 -0
- package/scripts/shared-start.js +41 -0
- package/scripts/shared-status.js +74 -0
- package/scripts/shared-supervisor.js +141 -0
- package/scripts/shared-task-runner.ps1 +87 -0
- package/scripts/shared-watchdog.js +290 -0
- package/scripts/show_shared_status.sh +53 -0
- package/scripts/start_shared_app_server.sh +65 -0
- package/scripts/start_shared_wechat.sh +108 -0
- package/scripts/timeline-screenshot.sh +15 -0
- package/scripts/uninstall-background-tasks.ps1 +23 -0
- package/src/adapters/channel/weixin/account-store.js +135 -0
- package/src/adapters/channel/weixin/api-v2.js +258 -0
- package/src/adapters/channel/weixin/api.js +180 -0
- package/src/adapters/channel/weixin/context-token-store.js +84 -0
- package/src/adapters/channel/weixin/index.js +605 -0
- package/src/adapters/channel/weixin/legacy.js +567 -0
- package/src/adapters/channel/weixin/login-common.js +63 -0
- package/src/adapters/channel/weixin/login-legacy.js +124 -0
- package/src/adapters/channel/weixin/login-v2.js +186 -0
- package/src/adapters/channel/weixin/media-mime.js +22 -0
- package/src/adapters/channel/weixin/media-receive.js +370 -0
- package/src/adapters/channel/weixin/media-send.js +331 -0
- package/src/adapters/channel/weixin/message-utils-v2.js +282 -0
- package/src/adapters/channel/weixin/message-utils.js +199 -0
- package/src/adapters/channel/weixin/protocol.js +77 -0
- package/src/adapters/channel/weixin/redact.js +41 -0
- package/src/adapters/channel/weixin/reminder-queue-store.js +101 -0
- package/src/adapters/channel/weixin/sync-buffer-store.js +35 -0
- package/src/adapters/runtime/codex/events.js +252 -0
- package/src/adapters/runtime/codex/index.js +502 -0
- package/src/adapters/runtime/codex/message-utils.js +141 -0
- package/src/adapters/runtime/codex/model-catalog.js +106 -0
- package/src/adapters/runtime/codex/protocol-leak-monitor.js +75 -0
- package/src/adapters/runtime/codex/rpc-client.js +443 -0
- package/src/adapters/runtime/codex/session-store.js +376 -0
- package/src/app/channel-send-file-cli.js +57 -0
- package/src/app/diary-write-cli.js +620 -0
- package/src/app/note-auto-cli.js +201 -0
- package/src/app/note-sync-cli.js +130 -0
- package/src/app/project-radar-cli.js +165 -0
- package/src/app/reminder-write-cli.js +210 -0
- package/src/app/review-cli.js +134 -0
- package/src/app/system-checkin-poller.js +100 -0
- package/src/app/system-send-cli.js +129 -0
- package/src/app/timeline-event-cli.js +273 -0
- package/src/app/timeline-screenshot-cli.js +109 -0
- package/src/core/app.js +1810 -0
- package/src/core/branding.js +167 -0
- package/src/core/command-registry.js +609 -0
- package/src/core/config.js +84 -0
- package/src/core/default-targets.js +163 -0
- package/src/core/durable-note-schema.js +325 -0
- package/src/core/instructions-template.js +31 -0
- package/src/core/note-sync.js +433 -0
- package/src/core/project-radar.js +402 -0
- package/src/core/review-semantic.js +524 -0
- package/src/core/review.js +1081 -0
- package/src/core/shared-bridge-heartbeat.js +140 -0
- package/src/core/stream-delivery.js +990 -0
- package/src/core/system-message-dispatcher.js +68 -0
- package/src/core/system-message-queue-store.js +128 -0
- package/src/core/thread-state-store.js +135 -0
- package/src/core/timeline-screenshot-queue-store.js +134 -0
- package/src/core/workspace-alias.js +163 -0
- package/src/core/workspace-bootstrap.js +338 -0
- package/src/index.js +270 -0
- package/src/integrations/timeline/index.js +191 -0
- package/templates/weixin-instructions.md +53 -0
- package/templates/weixin-operations.md +69 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const os = require("os");
|
|
3
|
+
const path = require("path");
|
|
4
|
+
|
|
5
|
+
const APP_NAME = "Codeksei";
|
|
6
|
+
const LEGACY_APP_NAME = "Cyberboss";
|
|
7
|
+
const PACKAGE_NAME = "codeksei";
|
|
8
|
+
const LEGACY_PACKAGE_NAME = "cyberboss";
|
|
9
|
+
const PRIMARY_ENV_PREFIX = "CODEKSEI";
|
|
10
|
+
const LEGACY_ENV_PREFIX = "CYBERBOSS";
|
|
11
|
+
const PRIMARY_STATE_DIRNAME = ".codeksei";
|
|
12
|
+
const LEGACY_STATE_DIRNAME = ".cyberboss";
|
|
13
|
+
const PRIMARY_NOTE_SYNC_MARKER_PREFIX = "codeksei-note-sync";
|
|
14
|
+
const LEGACY_NOTE_SYNC_MARKER_PREFIX = "cyberboss-note-sync";
|
|
15
|
+
const PRIMARY_REVIEW_MARKER_PREFIX = "codeksei-review";
|
|
16
|
+
const LEGACY_REVIEW_MARKER_PREFIX = "cyberboss-review";
|
|
17
|
+
const PRIMARY_CHANNEL_VERSION = "codeksei-weixin/2.0";
|
|
18
|
+
const PRIMARY_RPC_CLIENT_INFO = {
|
|
19
|
+
name: "codeksei_agent",
|
|
20
|
+
title: "Codeksei Agent",
|
|
21
|
+
version: "0.1.0",
|
|
22
|
+
};
|
|
23
|
+
const PRIMARY_WINDOWS_SHARED_TASK_NAMES = {
|
|
24
|
+
start: "Codeksei Shared Start",
|
|
25
|
+
unlock: "Codeksei Shared Unlock",
|
|
26
|
+
resume: "Codeksei Shared Resume",
|
|
27
|
+
watchdog: "Codeksei Shared Watchdog",
|
|
28
|
+
};
|
|
29
|
+
const LEGACY_WINDOWS_SHARED_TASK_NAMES = {
|
|
30
|
+
start: "Cyberboss Shared Start",
|
|
31
|
+
unlock: "Cyberboss Shared Unlock",
|
|
32
|
+
resume: "Cyberboss Shared Resume",
|
|
33
|
+
watchdog: "Cyberboss Shared Watchdog",
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
function normalizeEnvValue(value) {
|
|
37
|
+
return typeof value === "string" ? value.trim() : "";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function readNamedEnv(env, primaryKey, legacyKey) {
|
|
41
|
+
const primary = normalizeEnvValue(env?.[primaryKey]);
|
|
42
|
+
if (primary) {
|
|
43
|
+
return primary;
|
|
44
|
+
}
|
|
45
|
+
return normalizeEnvValue(env?.[legacyKey]);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function readPrefixedEnv(env, suffix) {
|
|
49
|
+
return readNamedEnv(env, `${PRIMARY_ENV_PREFIX}_${suffix}`, `${LEGACY_ENV_PREFIX}_${suffix}`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function readNamedBoolEnv(env, primaryKey, legacyKey, defaultValue = false) {
|
|
53
|
+
const raw = readNamedEnv(env, primaryKey, legacyKey).toLowerCase();
|
|
54
|
+
if (!raw) {
|
|
55
|
+
return defaultValue;
|
|
56
|
+
}
|
|
57
|
+
if (["1", "true", "yes", "on"].includes(raw)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (["0", "false", "no", "off"].includes(raw)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return defaultValue;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function readPrefixedBoolEnv(env, suffix, defaultValue = false) {
|
|
67
|
+
return readNamedBoolEnv(env, `${PRIMARY_ENV_PREFIX}_${suffix}`, `${LEGACY_ENV_PREFIX}_${suffix}`, defaultValue);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function readPrefixedListEnv(env, suffix) {
|
|
71
|
+
return String(readPrefixedEnv(env, suffix) || "")
|
|
72
|
+
.split(",")
|
|
73
|
+
.map((item) => item.trim())
|
|
74
|
+
.filter(Boolean);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function readPrefixedIntEnv(env, suffix, defaultValue = 0) {
|
|
78
|
+
const value = Number.parseInt(readPrefixedEnv(env, suffix), 10);
|
|
79
|
+
return Number.isFinite(value) ? value : defaultValue;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function getPrimaryStateDir() {
|
|
83
|
+
return path.join(os.homedir(), PRIMARY_STATE_DIRNAME);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function getLegacyStateDir() {
|
|
87
|
+
return path.join(os.homedir(), LEGACY_STATE_DIRNAME);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function resolveStateDir({ env = process.env } = {}) {
|
|
91
|
+
const explicit = readPrefixedEnv(env, "STATE_DIR");
|
|
92
|
+
if (explicit) {
|
|
93
|
+
return path.resolve(explicit);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const primary = getPrimaryStateDir();
|
|
97
|
+
const legacy = getLegacyStateDir();
|
|
98
|
+
if (fs.existsSync(primary)) {
|
|
99
|
+
return primary;
|
|
100
|
+
}
|
|
101
|
+
if (fs.existsSync(legacy)) {
|
|
102
|
+
return legacy;
|
|
103
|
+
}
|
|
104
|
+
return primary;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function ensureStateDirectory({ env = process.env } = {}) {
|
|
108
|
+
const stateDir = resolveStateDir({ env });
|
|
109
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
110
|
+
return stateDir;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function listEnvFileCandidates({ cwd = process.cwd(), env = process.env } = {}) {
|
|
114
|
+
const stateDir = resolveStateDir({ env });
|
|
115
|
+
return [
|
|
116
|
+
path.join(cwd, ".env"),
|
|
117
|
+
path.join(stateDir, ".env"),
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function resolveAppHome({ env = process.env, fallbackRoot = "" } = {}) {
|
|
122
|
+
return readPrefixedEnv(env, "HOME") || fallbackRoot;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function ensureCompatHomeEnv({ env = process.env, fallbackRoot = "" } = {}) {
|
|
126
|
+
const resolved = resolveAppHome({ env, fallbackRoot });
|
|
127
|
+
if (!resolved) {
|
|
128
|
+
return "";
|
|
129
|
+
}
|
|
130
|
+
if (!normalizeEnvValue(env.CODEKSEI_HOME)) {
|
|
131
|
+
env.CODEKSEI_HOME = resolved;
|
|
132
|
+
}
|
|
133
|
+
if (!normalizeEnvValue(env.CYBERBOSS_HOME)) {
|
|
134
|
+
env.CYBERBOSS_HOME = resolved;
|
|
135
|
+
}
|
|
136
|
+
return resolved;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
module.exports = {
|
|
140
|
+
APP_NAME,
|
|
141
|
+
LEGACY_APP_NAME,
|
|
142
|
+
PACKAGE_NAME,
|
|
143
|
+
LEGACY_PACKAGE_NAME,
|
|
144
|
+
PRIMARY_CHANNEL_VERSION,
|
|
145
|
+
PRIMARY_ENV_PREFIX,
|
|
146
|
+
LEGACY_ENV_PREFIX,
|
|
147
|
+
PRIMARY_NOTE_SYNC_MARKER_PREFIX,
|
|
148
|
+
LEGACY_NOTE_SYNC_MARKER_PREFIX,
|
|
149
|
+
PRIMARY_REVIEW_MARKER_PREFIX,
|
|
150
|
+
LEGACY_REVIEW_MARKER_PREFIX,
|
|
151
|
+
PRIMARY_RPC_CLIENT_INFO,
|
|
152
|
+
PRIMARY_WINDOWS_SHARED_TASK_NAMES,
|
|
153
|
+
LEGACY_WINDOWS_SHARED_TASK_NAMES,
|
|
154
|
+
getPrimaryStateDir,
|
|
155
|
+
getLegacyStateDir,
|
|
156
|
+
listEnvFileCandidates,
|
|
157
|
+
readNamedEnv,
|
|
158
|
+
readNamedBoolEnv,
|
|
159
|
+
readPrefixedBoolEnv,
|
|
160
|
+
readPrefixedEnv,
|
|
161
|
+
readPrefixedIntEnv,
|
|
162
|
+
readPrefixedListEnv,
|
|
163
|
+
resolveAppHome,
|
|
164
|
+
resolveStateDir,
|
|
165
|
+
ensureCompatHomeEnv,
|
|
166
|
+
ensureStateDirectory,
|
|
167
|
+
};
|