feique 1.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.
Files changed (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +220 -0
  3. package/README.md +265 -0
  4. package/dist/backend/claude.d.ts +36 -0
  5. package/dist/backend/claude.js +358 -0
  6. package/dist/backend/claude.js.map +1 -0
  7. package/dist/backend/codex.d.ts +31 -0
  8. package/dist/backend/codex.js +100 -0
  9. package/dist/backend/codex.js.map +1 -0
  10. package/dist/backend/factory.d.ts +9 -0
  11. package/dist/backend/factory.js +56 -0
  12. package/dist/backend/factory.js.map +1 -0
  13. package/dist/backend/types.d.ts +54 -0
  14. package/dist/backend/types.js +2 -0
  15. package/dist/backend/types.js.map +1 -0
  16. package/dist/bridge/commands.d.ts +135 -0
  17. package/dist/bridge/commands.js +860 -0
  18. package/dist/bridge/commands.js.map +1 -0
  19. package/dist/bridge/service.d.ts +160 -0
  20. package/dist/bridge/service.js +3785 -0
  21. package/dist/bridge/service.js.map +1 -0
  22. package/dist/bridge/task-queue.d.ts +14 -0
  23. package/dist/bridge/task-queue.js +81 -0
  24. package/dist/bridge/task-queue.js.map +1 -0
  25. package/dist/bridge/types.d.ts +39 -0
  26. package/dist/bridge/types.js +2 -0
  27. package/dist/bridge/types.js.map +1 -0
  28. package/dist/cli.d.ts +2 -0
  29. package/dist/cli.js +1199 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/codex/capabilities.d.ts +20 -0
  32. package/dist/codex/capabilities.js +41 -0
  33. package/dist/codex/capabilities.js.map +1 -0
  34. package/dist/codex/runner.d.ts +47 -0
  35. package/dist/codex/runner.js +294 -0
  36. package/dist/codex/runner.js.map +1 -0
  37. package/dist/codex/session-index.d.ts +22 -0
  38. package/dist/codex/session-index.js +205 -0
  39. package/dist/codex/session-index.js.map +1 -0
  40. package/dist/collaboration/awareness.d.ts +36 -0
  41. package/dist/collaboration/awareness.js +107 -0
  42. package/dist/collaboration/awareness.js.map +1 -0
  43. package/dist/collaboration/digest.d.ts +65 -0
  44. package/dist/collaboration/digest.js +178 -0
  45. package/dist/collaboration/digest.js.map +1 -0
  46. package/dist/collaboration/handoff.d.ts +66 -0
  47. package/dist/collaboration/handoff.js +94 -0
  48. package/dist/collaboration/handoff.js.map +1 -0
  49. package/dist/collaboration/insights.d.ts +24 -0
  50. package/dist/collaboration/insights.js +243 -0
  51. package/dist/collaboration/insights.js.map +1 -0
  52. package/dist/collaboration/knowledge.d.ts +26 -0
  53. package/dist/collaboration/knowledge.js +105 -0
  54. package/dist/collaboration/knowledge.js.map +1 -0
  55. package/dist/collaboration/timeline.d.ts +31 -0
  56. package/dist/collaboration/timeline.js +150 -0
  57. package/dist/collaboration/timeline.js.map +1 -0
  58. package/dist/collaboration/trust.d.ts +49 -0
  59. package/dist/collaboration/trust.js +176 -0
  60. package/dist/collaboration/trust.js.map +1 -0
  61. package/dist/config/codex-skill.d.ts +7 -0
  62. package/dist/config/codex-skill.js +44 -0
  63. package/dist/config/codex-skill.js.map +1 -0
  64. package/dist/config/doctor.d.ts +12 -0
  65. package/dist/config/doctor.js +314 -0
  66. package/dist/config/doctor.js.map +1 -0
  67. package/dist/config/init.d.ts +3 -0
  68. package/dist/config/init.js +123 -0
  69. package/dist/config/init.js.map +1 -0
  70. package/dist/config/load.d.ts +33 -0
  71. package/dist/config/load.js +252 -0
  72. package/dist/config/load.js.map +1 -0
  73. package/dist/config/mutate.d.ts +21 -0
  74. package/dist/config/mutate.js +86 -0
  75. package/dist/config/mutate.js.map +1 -0
  76. package/dist/config/paths.d.ts +3 -0
  77. package/dist/config/paths.js +33 -0
  78. package/dist/config/paths.js.map +1 -0
  79. package/dist/config/schema.d.ts +308 -0
  80. package/dist/config/schema.js +250 -0
  81. package/dist/config/schema.js.map +1 -0
  82. package/dist/control-plane/project-session.d.ts +67 -0
  83. package/dist/control-plane/project-session.js +234 -0
  84. package/dist/control-plane/project-session.js.map +1 -0
  85. package/dist/feishu/base.d.ts +19 -0
  86. package/dist/feishu/base.js +93 -0
  87. package/dist/feishu/base.js.map +1 -0
  88. package/dist/feishu/cards.d.ts +22 -0
  89. package/dist/feishu/cards.js +144 -0
  90. package/dist/feishu/cards.js.map +1 -0
  91. package/dist/feishu/client.d.ts +61 -0
  92. package/dist/feishu/client.js +315 -0
  93. package/dist/feishu/client.js.map +1 -0
  94. package/dist/feishu/diagnostics.d.ts +42 -0
  95. package/dist/feishu/diagnostics.js +194 -0
  96. package/dist/feishu/diagnostics.js.map +1 -0
  97. package/dist/feishu/doc.d.ts +13 -0
  98. package/dist/feishu/doc.js +59 -0
  99. package/dist/feishu/doc.js.map +1 -0
  100. package/dist/feishu/extractors.d.ts +7 -0
  101. package/dist/feishu/extractors.js +215 -0
  102. package/dist/feishu/extractors.js.map +1 -0
  103. package/dist/feishu/long-connection.d.ts +12 -0
  104. package/dist/feishu/long-connection.js +41 -0
  105. package/dist/feishu/long-connection.js.map +1 -0
  106. package/dist/feishu/message-resource.d.ts +14 -0
  107. package/dist/feishu/message-resource.js +309 -0
  108. package/dist/feishu/message-resource.js.map +1 -0
  109. package/dist/feishu/replay.d.ts +37 -0
  110. package/dist/feishu/replay.js +114 -0
  111. package/dist/feishu/replay.js.map +1 -0
  112. package/dist/feishu/task.d.ts +18 -0
  113. package/dist/feishu/task.js +86 -0
  114. package/dist/feishu/task.js.map +1 -0
  115. package/dist/feishu/text.d.ts +23 -0
  116. package/dist/feishu/text.js +155 -0
  117. package/dist/feishu/text.js.map +1 -0
  118. package/dist/feishu/webhook.d.ts +23 -0
  119. package/dist/feishu/webhook.js +130 -0
  120. package/dist/feishu/webhook.js.map +1 -0
  121. package/dist/feishu/wiki.d.ts +52 -0
  122. package/dist/feishu/wiki.js +300 -0
  123. package/dist/feishu/wiki.js.map +1 -0
  124. package/dist/index.d.ts +9 -0
  125. package/dist/index.js +9 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/knowledge/search.d.ts +11 -0
  128. package/dist/knowledge/search.js +83 -0
  129. package/dist/knowledge/search.js.map +1 -0
  130. package/dist/logging.d.ts +3 -0
  131. package/dist/logging.js +40 -0
  132. package/dist/logging.js.map +1 -0
  133. package/dist/mcp/server.d.ts +34 -0
  134. package/dist/mcp/server.js +1196 -0
  135. package/dist/mcp/server.js.map +1 -0
  136. package/dist/memory/embedding-factory.d.ts +6 -0
  137. package/dist/memory/embedding-factory.js +20 -0
  138. package/dist/memory/embedding-factory.js.map +1 -0
  139. package/dist/memory/embeddings.d.ts +40 -0
  140. package/dist/memory/embeddings.js +150 -0
  141. package/dist/memory/embeddings.js.map +1 -0
  142. package/dist/memory/ollama-embeddings.d.ts +63 -0
  143. package/dist/memory/ollama-embeddings.js +215 -0
  144. package/dist/memory/ollama-embeddings.js.map +1 -0
  145. package/dist/memory/retrieve.d.ts +17 -0
  146. package/dist/memory/retrieve.js +29 -0
  147. package/dist/memory/retrieve.js.map +1 -0
  148. package/dist/memory/summarize.d.ts +13 -0
  149. package/dist/memory/summarize.js +58 -0
  150. package/dist/memory/summarize.js.map +1 -0
  151. package/dist/observability/cost.d.ts +12 -0
  152. package/dist/observability/cost.js +22 -0
  153. package/dist/observability/cost.js.map +1 -0
  154. package/dist/observability/dashboard-html.d.ts +5 -0
  155. package/dist/observability/dashboard-html.js +304 -0
  156. package/dist/observability/dashboard-html.js.map +1 -0
  157. package/dist/observability/metrics.d.ts +36 -0
  158. package/dist/observability/metrics.js +230 -0
  159. package/dist/observability/metrics.js.map +1 -0
  160. package/dist/observability/readiness.d.ts +31 -0
  161. package/dist/observability/readiness.js +57 -0
  162. package/dist/observability/readiness.js.map +1 -0
  163. package/dist/observability/server.d.ts +84 -0
  164. package/dist/observability/server.js +181 -0
  165. package/dist/observability/server.js.map +1 -0
  166. package/dist/projects/paths.d.ts +9 -0
  167. package/dist/projects/paths.js +30 -0
  168. package/dist/projects/paths.js.map +1 -0
  169. package/dist/runtime/instance-lock.d.ts +12 -0
  170. package/dist/runtime/instance-lock.js +99 -0
  171. package/dist/runtime/instance-lock.js.map +1 -0
  172. package/dist/runtime/process.d.ts +2 -0
  173. package/dist/runtime/process.js +43 -0
  174. package/dist/runtime/process.js.map +1 -0
  175. package/dist/runtime/shutdown.d.ts +11 -0
  176. package/dist/runtime/shutdown.js +38 -0
  177. package/dist/runtime/shutdown.js.map +1 -0
  178. package/dist/security/access.d.ts +13 -0
  179. package/dist/security/access.js +160 -0
  180. package/dist/security/access.js.map +1 -0
  181. package/dist/service/install.d.ts +19 -0
  182. package/dist/service/install.js +35 -0
  183. package/dist/service/install.js.map +1 -0
  184. package/dist/service/templates.d.ts +22 -0
  185. package/dist/service/templates.js +118 -0
  186. package/dist/service/templates.js.map +1 -0
  187. package/dist/state/audit-log.d.ts +33 -0
  188. package/dist/state/audit-log.js +116 -0
  189. package/dist/state/audit-log.js.map +1 -0
  190. package/dist/state/config-history-store.d.ts +27 -0
  191. package/dist/state/config-history-store.js +65 -0
  192. package/dist/state/config-history-store.js.map +1 -0
  193. package/dist/state/handoff-store.d.ts +20 -0
  194. package/dist/state/handoff-store.js +97 -0
  195. package/dist/state/handoff-store.js.map +1 -0
  196. package/dist/state/idempotency-store.d.ts +19 -0
  197. package/dist/state/idempotency-store.js +84 -0
  198. package/dist/state/idempotency-store.js.map +1 -0
  199. package/dist/state/memory-store.d.ts +137 -0
  200. package/dist/state/memory-store.js +713 -0
  201. package/dist/state/memory-store.js.map +1 -0
  202. package/dist/state/pending-command-store.d.ts +30 -0
  203. package/dist/state/pending-command-store.js +108 -0
  204. package/dist/state/pending-command-store.js.map +1 -0
  205. package/dist/state/run-state-store.d.ts +58 -0
  206. package/dist/state/run-state-store.js +269 -0
  207. package/dist/state/run-state-store.js.map +1 -0
  208. package/dist/state/session-store.d.ts +56 -0
  209. package/dist/state/session-store.js +275 -0
  210. package/dist/state/session-store.js.map +1 -0
  211. package/dist/state/trust-store.d.ts +15 -0
  212. package/dist/state/trust-store.js +53 -0
  213. package/dist/state/trust-store.js.map +1 -0
  214. package/dist/utils/fs.d.ts +4 -0
  215. package/dist/utils/fs.js +26 -0
  216. package/dist/utils/fs.js.map +1 -0
  217. package/dist/utils/json.d.ts +1 -0
  218. package/dist/utils/json.js +9 -0
  219. package/dist/utils/json.js.map +1 -0
  220. package/dist/utils/path.d.ts +3 -0
  221. package/dist/utils/path.js +22 -0
  222. package/dist/utils/path.js.map +1 -0
  223. package/dist/utils/serial-executor.d.ts +5 -0
  224. package/dist/utils/serial-executor.js +12 -0
  225. package/dist/utils/serial-executor.js.map +1 -0
  226. package/package.json +71 -0
  227. package/skills/feique-session/SKILL.md +27 -0
@@ -0,0 +1,252 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import * as toml from '@iarna/toml';
4
+ import { ZodError } from 'zod';
5
+ import { z } from 'zod';
6
+ import { fileExists, readUtf8 } from '../utils/fs.js';
7
+ import { expandHomePath, resolveMaybeRelative } from '../utils/path.js';
8
+ import { PROJECT_CONFIG_RELATIVE_PATH, getGlobalConfigPath } from './paths.js';
9
+ import { bridgeConfigSchema } from './schema.js';
10
+ export async function loadBridgeConfig(options = {}) {
11
+ const cwd = options.cwd ?? process.cwd();
12
+ const layers = await loadConfigLayers({ ...(options.configPath ? { configPath: options.configPath } : {}), cwd });
13
+ if (layers.length === 0) {
14
+ throw new Error(`No config found. Run \`feique init --mode global\` or create ${PROJECT_CONFIG_RELATIVE_PATH}.`);
15
+ }
16
+ const merged = layers.reduce((accumulator, layer) => deepMerge(accumulator, layer.value), {});
17
+ try {
18
+ const config = bridgeConfigSchema.parse(merged);
19
+ return {
20
+ config,
21
+ sources: layers.map((layer) => layer.path),
22
+ };
23
+ }
24
+ catch (error) {
25
+ if (error instanceof ZodError) {
26
+ throw new Error(`Invalid config: ${error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('; ')}`);
27
+ }
28
+ throw error;
29
+ }
30
+ }
31
+ export async function loadBridgeConfigFile(configPath, behavior = {}) {
32
+ const explicitPath = path.resolve(expandHomePath(configPath));
33
+ const layer = await readLayerIfExists(explicitPath, { resolveEnv: behavior.resolveEnv ?? true });
34
+ if (!layer) {
35
+ throw new Error(`Config file not found: ${explicitPath}`);
36
+ }
37
+ try {
38
+ const config = bridgeConfigSchema.parse(layer.value);
39
+ return {
40
+ config,
41
+ sources: [layer.path],
42
+ };
43
+ }
44
+ catch (error) {
45
+ if (error instanceof ZodError) {
46
+ throw new Error(`Invalid config: ${error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('; ')}`);
47
+ }
48
+ throw error;
49
+ }
50
+ }
51
+ const runtimeConfigSchema = z.object({
52
+ service: z
53
+ .object({
54
+ name: z.string().default('feique'),
55
+ log_tail_lines: z.number().int().positive().default(100),
56
+ log_rotate_max_bytes: z.number().int().positive().default(10 * 1024 * 1024),
57
+ log_rotate_keep_files: z.number().int().positive().default(5),
58
+ })
59
+ .default({
60
+ name: 'feique',
61
+ log_tail_lines: 100,
62
+ log_rotate_max_bytes: 10 * 1024 * 1024,
63
+ log_rotate_keep_files: 5,
64
+ }),
65
+ storage: z
66
+ .object({
67
+ dir: z.string().default('~/.feique/state'),
68
+ })
69
+ .default({
70
+ dir: '~/.feique/state',
71
+ }),
72
+ });
73
+ export async function loadRuntimeConfig(options = {}) {
74
+ const cwd = options.cwd ?? process.cwd();
75
+ const layers = await loadConfigLayers({ ...(options.configPath ? { configPath: options.configPath } : {}), cwd }, { resolveEnv: false });
76
+ if (layers.length === 0) {
77
+ throw new Error(`No config found. Run \`feique init --mode global\` or create ${PROJECT_CONFIG_RELATIVE_PATH}.`);
78
+ }
79
+ const merged = layers.reduce((accumulator, layer) => deepMerge(accumulator, layer.value), {});
80
+ try {
81
+ const config = runtimeConfigSchema.parse(merged);
82
+ return {
83
+ config,
84
+ sources: layers.map((layer) => layer.path),
85
+ };
86
+ }
87
+ catch (error) {
88
+ if (error instanceof ZodError) {
89
+ throw new Error(`Invalid runtime config: ${error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('; ')}`);
90
+ }
91
+ throw error;
92
+ }
93
+ }
94
+ export async function findNearestProjectConfig(cwd) {
95
+ let current = path.resolve(cwd);
96
+ while (true) {
97
+ const candidate = path.join(current, PROJECT_CONFIG_RELATIVE_PATH);
98
+ if (await fileExists(candidate)) {
99
+ return candidate;
100
+ }
101
+ const parent = path.dirname(current);
102
+ if (parent === current) {
103
+ return null;
104
+ }
105
+ current = parent;
106
+ }
107
+ }
108
+ async function loadConfigLayers(options, behavior = {}) {
109
+ const layers = [];
110
+ const globalPath = getGlobalConfigPath();
111
+ const resolveEnv = behavior.resolveEnv ?? true;
112
+ if (!options.configPath) {
113
+ const globalLayer = await readLayerIfExists(globalPath, { resolveEnv });
114
+ if (globalLayer) {
115
+ layers.push(globalLayer);
116
+ }
117
+ const projectConfigPath = await findNearestProjectConfig(options.cwd);
118
+ if (projectConfigPath && path.resolve(projectConfigPath) !== path.resolve(globalPath)) {
119
+ const projectLayer = await readLayerIfExists(projectConfigPath, { resolveEnv });
120
+ if (projectLayer) {
121
+ layers.push(projectLayer);
122
+ }
123
+ }
124
+ return layers;
125
+ }
126
+ const explicitPath = path.resolve(expandHomePath(options.configPath));
127
+ if (path.resolve(globalPath) !== explicitPath) {
128
+ const globalLayer = await readLayerIfExists(globalPath, { resolveEnv });
129
+ if (globalLayer) {
130
+ layers.push(globalLayer);
131
+ }
132
+ }
133
+ const explicitLayer = await readLayerIfExists(explicitPath, { resolveEnv });
134
+ if (!explicitLayer) {
135
+ throw new Error(`Config file not found: ${explicitPath}`);
136
+ }
137
+ layers.push(explicitLayer);
138
+ return layers;
139
+ }
140
+ async function readLayerIfExists(filePath, behavior = {}) {
141
+ const resolvedPath = path.resolve(expandHomePath(filePath));
142
+ if (!(await fileExists(resolvedPath))) {
143
+ return null;
144
+ }
145
+ const content = await readUtf8(resolvedPath);
146
+ const parsed = toml.parse(content);
147
+ const maybeResolved = behavior.resolveEnv === false ? parsed : resolveEnvRefs(parsed);
148
+ if (!isPlainObject(maybeResolved)) {
149
+ throw new Error(`Invalid TOML structure in ${resolvedPath}`);
150
+ }
151
+ const resolved = resolveLayerPaths(maybeResolved, resolveLayerBaseDir(resolvedPath));
152
+ return { path: resolvedPath, value: resolved };
153
+ }
154
+ function resolveLayerBaseDir(configPath) {
155
+ const configDir = path.dirname(configPath);
156
+ if (path.basename(configDir) === '.feique' || path.basename(configDir) === '.feishu-bridge' || path.basename(configDir) === '.codex-feishu') {
157
+ return path.dirname(configDir);
158
+ }
159
+ return configDir;
160
+ }
161
+ function resolveEnvRefs(value) {
162
+ if (Array.isArray(value)) {
163
+ return value.map((item) => resolveEnvRefs(item));
164
+ }
165
+ if (isPlainObject(value)) {
166
+ const resolvedEntries = Object.entries(value).map(([key, innerValue]) => [key, resolveEnvRefs(innerValue)]);
167
+ return Object.fromEntries(resolvedEntries);
168
+ }
169
+ if (typeof value === 'string' && value.startsWith('env:')) {
170
+ const envKey = value.slice(4).trim();
171
+ const envValue = process.env[envKey];
172
+ if (!envValue) {
173
+ throw new Error(`Missing environment variable: ${envKey}`);
174
+ }
175
+ return envValue;
176
+ }
177
+ return value;
178
+ }
179
+ function resolveLayerPaths(raw, baseDir) {
180
+ const cloned = structuredClone(raw);
181
+ const storage = asObject(cloned.storage);
182
+ if (storage?.dir && typeof storage.dir === 'string') {
183
+ storage.dir = resolveMaybeRelative(storage.dir, baseDir);
184
+ }
185
+ const service = asObject(cloned.service);
186
+ if (service?.transcribe_cli_path && typeof service.transcribe_cli_path === 'string') {
187
+ service.transcribe_cli_path = resolveMaybeRelative(service.transcribe_cli_path, baseDir);
188
+ }
189
+ const projects = asObject(cloned.projects);
190
+ if (projects) {
191
+ for (const projectValue of Object.values(projects)) {
192
+ const projectConfig = asObject(projectValue);
193
+ if (!projectConfig) {
194
+ continue;
195
+ }
196
+ if (typeof projectConfig.root === 'string') {
197
+ projectConfig.root = resolveMaybeRelative(projectConfig.root, baseDir);
198
+ }
199
+ if (typeof projectConfig.instructions_prefix === 'string') {
200
+ projectConfig.instructions_prefix = resolveMaybeRelative(projectConfig.instructions_prefix, baseDir);
201
+ }
202
+ if (typeof projectConfig.download_dir === 'string') {
203
+ projectConfig.download_dir = resolveMaybeRelative(projectConfig.download_dir, baseDir);
204
+ }
205
+ if (typeof projectConfig.temp_dir === 'string') {
206
+ projectConfig.temp_dir = resolveMaybeRelative(projectConfig.temp_dir, baseDir);
207
+ }
208
+ if (typeof projectConfig.cache_dir === 'string') {
209
+ projectConfig.cache_dir = resolveMaybeRelative(projectConfig.cache_dir, baseDir);
210
+ }
211
+ if (typeof projectConfig.log_dir === 'string') {
212
+ projectConfig.log_dir = resolveMaybeRelative(projectConfig.log_dir, baseDir);
213
+ }
214
+ if (Array.isArray(projectConfig.knowledge_paths)) {
215
+ projectConfig.knowledge_paths = projectConfig.knowledge_paths.map((entry) => typeof entry === 'string' ? resolveMaybeRelative(entry, baseDir) : entry);
216
+ }
217
+ }
218
+ }
219
+ const codex = asObject(cloned.codex);
220
+ if (codex?.bin && typeof codex.bin === 'string' && codex.bin.includes(path.sep)) {
221
+ codex.bin = resolveMaybeRelative(codex.bin, baseDir);
222
+ }
223
+ return cloned;
224
+ }
225
+ function deepMerge(base, overlay) {
226
+ const result = { ...base };
227
+ for (const [key, value] of Object.entries(overlay)) {
228
+ const currentValue = result[key];
229
+ if (isPlainObject(currentValue) && isPlainObject(value)) {
230
+ result[key] = deepMerge(currentValue, value);
231
+ continue;
232
+ }
233
+ result[key] = value;
234
+ }
235
+ return result;
236
+ }
237
+ function isPlainObject(value) {
238
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
239
+ }
240
+ function asObject(value) {
241
+ return isPlainObject(value) ? value : undefined;
242
+ }
243
+ export async function readRawToml(filePath) {
244
+ const content = await fs.readFile(filePath, 'utf8');
245
+ return toml.parse(content);
246
+ }
247
+ export async function writeToml(filePath, data) {
248
+ const content = toml.stringify(data);
249
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
250
+ await fs.writeFile(filePath, content, 'utf8');
251
+ }
252
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ProjectConfig, SandboxMode } from './schema.js';
2
+ export declare function bindProjectAlias(input: {
3
+ configPath: string;
4
+ alias: string;
5
+ root: string;
6
+ profile?: string;
7
+ sandbox?: SandboxMode;
8
+ }): Promise<void>;
9
+ export declare function createProjectAlias(input: {
10
+ configPath: string;
11
+ alias: string;
12
+ root: string;
13
+ profile?: string;
14
+ sandbox?: SandboxMode;
15
+ }): Promise<{
16
+ root: string;
17
+ }>;
18
+ export declare function updateBridgeConfigFile(configPath: string, updater: (raw: Record<string, unknown>) => void | Promise<void>): Promise<void>;
19
+ export declare function updateStringList(configPath: string, sectionKey: 'security' | 'feishu', listKey: string, value: string, mode: 'add' | 'remove'): Promise<string[]>;
20
+ export declare function removeProjectAlias(configPath: string, alias: string): Promise<void>;
21
+ export declare function updateProjectConfig(configPath: string, alias: string, patch: Partial<ProjectConfig>): Promise<ProjectConfig>;
@@ -0,0 +1,86 @@
1
+ import path from 'node:path';
2
+ import { readRawToml, writeToml } from './load.js';
3
+ import { ensureDir } from '../utils/fs.js';
4
+ import { expandHomePath } from '../utils/path.js';
5
+ export async function bindProjectAlias(input) {
6
+ await updateBridgeConfigFile(input.configPath, (raw) => {
7
+ const projects = ensureObject(raw.projects);
8
+ projects[input.alias] = {
9
+ ...(ensureObject(projects[input.alias]) ?? {}),
10
+ root: resolveProjectRoot(input.root),
11
+ ...(input.profile ? { profile: input.profile } : {}),
12
+ ...(input.sandbox ? { sandbox: input.sandbox } : {}),
13
+ };
14
+ raw.projects = projects;
15
+ });
16
+ }
17
+ export async function createProjectAlias(input) {
18
+ const resolvedRoot = resolveProjectRoot(input.root);
19
+ await ensureDir(resolvedRoot);
20
+ await updateBridgeConfigFile(input.configPath, (raw) => {
21
+ const projects = ensureObject(raw.projects);
22
+ if (projects[input.alias]) {
23
+ throw new Error(`Project alias already exists: ${input.alias}`);
24
+ }
25
+ projects[input.alias] = {
26
+ root: resolvedRoot,
27
+ ...(input.profile ? { profile: input.profile } : {}),
28
+ ...(input.sandbox ? { sandbox: input.sandbox } : {}),
29
+ };
30
+ raw.projects = projects;
31
+ });
32
+ return { root: resolvedRoot };
33
+ }
34
+ export async function updateBridgeConfigFile(configPath, updater) {
35
+ const raw = await readRawToml(configPath);
36
+ await updater(raw);
37
+ await writeToml(configPath, raw);
38
+ }
39
+ export async function updateStringList(configPath, sectionKey, listKey, value, mode) {
40
+ let nextValues = [];
41
+ await updateBridgeConfigFile(configPath, (raw) => {
42
+ const section = ensureObject(raw[sectionKey]);
43
+ const existing = Array.isArray(section[listKey]) ? section[listKey].filter((entry) => typeof entry === 'string') : [];
44
+ const normalized = value.trim();
45
+ nextValues =
46
+ mode === 'add'
47
+ ? Array.from(new Set([...existing, normalized]))
48
+ : existing.filter((entry) => entry !== normalized);
49
+ section[listKey] = nextValues;
50
+ raw[sectionKey] = section;
51
+ });
52
+ return nextValues;
53
+ }
54
+ export async function removeProjectAlias(configPath, alias) {
55
+ await updateBridgeConfigFile(configPath, (raw) => {
56
+ const projects = ensureObject(raw.projects);
57
+ delete projects[alias];
58
+ raw.projects = projects;
59
+ });
60
+ }
61
+ export async function updateProjectConfig(configPath, alias, patch) {
62
+ let nextProject;
63
+ await updateBridgeConfigFile(configPath, (raw) => {
64
+ const projects = ensureObject(raw.projects);
65
+ const current = ensureObject(projects[alias]);
66
+ const merged = {
67
+ ...current,
68
+ ...patch,
69
+ ...(patch.root ? { root: resolveProjectRoot(patch.root) } : {}),
70
+ };
71
+ projects[alias] = merged;
72
+ raw.projects = projects;
73
+ nextProject = merged;
74
+ });
75
+ if (!nextProject) {
76
+ throw new Error(`Failed to update project config: ${alias}`);
77
+ }
78
+ return nextProject;
79
+ }
80
+ function ensureObject(value) {
81
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
82
+ }
83
+ function resolveProjectRoot(input) {
84
+ return path.resolve(expandHomePath(input));
85
+ }
86
+ //# sourceMappingURL=mutate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/config/mutate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const PROJECT_CONFIG_RELATIVE_PATH: string;
2
+ export declare function getGlobalConfigPath(): string;
3
+ export declare function getDefaultStateDir(): string;
@@ -0,0 +1,33 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ export const PROJECT_CONFIG_RELATIVE_PATH = path.join('.feique', 'config.toml');
5
+ const CURRENT_DIR_NAME = '.feique';
6
+ const LEGACY_DIR_NAMES = ['.feishu-bridge', '.codex-feishu'];
7
+ /**
8
+ * Resolve the effective home directory for the bridge.
9
+ * If ~/.feique/ exists, use it.
10
+ * If not but ~/.feishu-bridge/ or ~/.codex-feishu/ exists, use that (legacy migration path).
11
+ * Otherwise default to ~/.feique/.
12
+ */
13
+ function resolveHomeDir() {
14
+ const home = os.homedir();
15
+ const currentDir = path.join(home, CURRENT_DIR_NAME);
16
+ if (fs.existsSync(currentDir)) {
17
+ return currentDir;
18
+ }
19
+ for (const legacyName of LEGACY_DIR_NAMES) {
20
+ const legacyDir = path.join(home, legacyName);
21
+ if (fs.existsSync(legacyDir)) {
22
+ return legacyDir;
23
+ }
24
+ }
25
+ return currentDir;
26
+ }
27
+ export function getGlobalConfigPath() {
28
+ return path.join(resolveHomeDir(), 'config.toml');
29
+ }
30
+ export function getDefaultStateDir() {
31
+ return path.join(resolveHomeDir(), 'state');
32
+ }
33
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEhF,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}