@xopcai/xopcbot 0.1.3 → 0.2.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/README.md +57 -52
- package/README.zh-CN.md +56 -49
- package/dist/agent/__tests__/media-processing.test.d.ts +6 -0
- package/dist/agent/__tests__/media-processing.test.js +385 -0
- package/dist/agent/__tests__/media-processing.test.js.map +1 -0
- package/dist/agent/fallback/__tests__/index.test.js +16 -5
- package/dist/agent/fallback/__tests__/index.test.js.map +1 -1
- package/dist/agent/fallback/candidates.d.ts +2 -4
- package/dist/agent/fallback/candidates.js +19 -26
- package/dist/agent/fallback/candidates.js.map +1 -1
- package/dist/agent/helpers.d.ts +1 -0
- package/dist/agent/helpers.js.map +1 -1
- package/dist/agent/index.d.ts +6 -1
- package/dist/agent/index.js +10 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/models/compat.d.ts +35 -0
- package/dist/agent/models/compat.js +110 -0
- package/dist/agent/models/compat.js.map +1 -0
- package/dist/agent/models/fallback.d.ts +38 -0
- package/dist/agent/models/fallback.js +133 -0
- package/dist/agent/models/fallback.js.map +1 -0
- package/dist/agent/models/index.d.ts +10 -0
- package/dist/agent/models/index.js +11 -0
- package/dist/agent/models/index.js.map +1 -0
- package/dist/agent/{model-manager.d.ts → models/manager.d.ts} +2 -8
- package/dist/agent/{model-manager.js → models/manager.js} +38 -24
- package/dist/agent/models/manager.js.map +1 -0
- package/dist/agent/models/scan.d.ts +46 -0
- package/dist/agent/models/scan.js +177 -0
- package/dist/agent/models/scan.js.map +1 -0
- package/dist/agent/models/selection.d.ts +44 -0
- package/dist/agent/models/selection.js +141 -0
- package/dist/agent/models/selection.js.map +1 -0
- package/dist/agent/prompt/index.js +1 -1
- package/dist/agent/prompt/index.js.map +1 -1
- package/dist/agent/service.js +34 -16
- package/dist/agent/service.js.map +1 -1
- package/dist/agent/skills/__tests__/test-framework.test.js +15 -7
- package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -1
- package/dist/agent/skills/config.d.ts +1 -1
- package/dist/agent/skills/config.js +2 -2
- package/dist/agent/skills/config.js.map +1 -1
- package/dist/agent/skills/index.js +15 -28
- package/dist/agent/skills/index.js.map +1 -1
- package/dist/agent/skills/installer.d.ts +1 -1
- package/dist/agent/skills/installer.js +1 -1
- package/dist/agent/skills/scanner.d.ts +1 -1
- package/dist/agent/skills/scanner.js +1 -1
- package/dist/agent/skills/test-framework.js +24 -23
- package/dist/agent/skills/test-framework.js.map +1 -1
- package/dist/agent/skills/types.d.ts +3 -3
- package/dist/agent/skills/types.js +1 -1
- package/dist/agent/skills/watcher.d.ts +1 -1
- package/dist/agent/skills/watcher.js +1 -1
- package/dist/agent/system-prompt.d.ts +67 -0
- package/dist/agent/system-prompt.js +351 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools/__tests__/send-media.test.d.ts +6 -0
- package/dist/agent/tools/__tests__/send-media.test.js +251 -0
- package/dist/agent/tools/__tests__/send-media.test.js.map +1 -0
- package/dist/agent/types.agent-defaults.d.ts +48 -0
- package/dist/agent/types.agent-defaults.js +5 -0
- package/dist/agent/types.agent-defaults.js.map +1 -0
- package/dist/agent/types.d.ts +14 -6
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -1
- package/dist/agent/workspace.d.ts +94 -0
- package/dist/agent/workspace.js +625 -0
- package/dist/agent/workspace.js.map +1 -0
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth/index.d.ts +1 -0
- package/dist/auth/oauth/index.js +1 -0
- package/dist/auth/oauth/index.js.map +1 -1
- package/dist/auth/oauth/kimi.d.ts +2 -1
- package/dist/auth/oauth/kimi.js +51 -48
- package/dist/auth/oauth/kimi.js.map +1 -1
- package/dist/auth/oauth/minimax-cn.d.ts +12 -0
- package/dist/auth/oauth/minimax-cn.js +111 -0
- package/dist/auth/oauth/minimax-cn.js.map +1 -0
- package/dist/auth/oauth/qwen.d.ts +5 -0
- package/dist/auth/oauth/qwen.js +54 -84
- package/dist/auth/oauth/qwen.js.map +1 -1
- package/dist/auth/profiles/index.d.ts +0 -2
- package/dist/auth/profiles/index.js +0 -2
- package/dist/auth/profiles/index.js.map +1 -1
- package/dist/auth/storage.js +7 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/channels/__tests__/media-integration.test.d.ts +6 -0
- package/dist/channels/__tests__/media-integration.test.js +398 -0
- package/dist/channels/__tests__/media-integration.test.js.map +1 -0
- package/dist/channels/__tests__/media.test.d.ts +6 -0
- package/dist/channels/__tests__/media.test.js +251 -0
- package/dist/channels/__tests__/media.test.js.map +1 -0
- package/dist/channels/access-control.d.ts +1 -1
- package/dist/channels/access-control.js +1 -1
- package/dist/channels/draft-stream.d.ts +1 -1
- package/dist/channels/draft-stream.js +1 -1
- package/dist/channels/format.d.ts +1 -1
- package/dist/channels/format.js +1 -1
- package/dist/channels/telegram/command-handler.js +15 -48
- package/dist/channels/telegram/command-handler.js.map +1 -1
- package/dist/channels/telegram/plugin.js +3 -2
- package/dist/channels/telegram/plugin.js.map +1 -1
- package/dist/channels/telegram/webhook.d.ts +1 -1
- package/dist/channels/telegram/webhook.js +1 -1
- package/dist/channels/types.d.ts +1 -1
- package/dist/channels/types.js +1 -1
- package/dist/channels/update-offset-store.d.ts +1 -1
- package/dist/channels/update-offset-store.js +1 -1
- package/dist/cli/commands/auth.js +8 -23
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/gateway.js +9 -1
- package/dist/cli/commands/gateway.js.map +1 -1
- package/dist/cli/commands/models.js +35 -29
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/onboard.js +166 -115
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/setup.js +123 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/skills.js +6 -6
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates.d.ts +2 -0
- package/dist/cli/templates.js +1 -1
- package/dist/cli/templates.js.map +1 -1
- package/dist/config/defaults.d.ts +19 -0
- package/dist/config/defaults.js +168 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/integration.d.ts +12 -0
- package/dist/config/integration.js +14 -0
- package/dist/config/integration.js.map +1 -0
- package/dist/config/models-json.d.ts +454 -0
- package/dist/config/models-json.js +323 -0
- package/dist/config/models-json.js.map +1 -0
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +4 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/reload.d.ts +1 -1
- package/dist/config/reload.js +3 -3
- package/dist/config/reload.js.map +1 -1
- package/dist/config/resolve-config-value.d.ts +36 -0
- package/dist/config/resolve-config-value.js +218 -0
- package/dist/config/resolve-config-value.js.map +1 -0
- package/dist/config/rules.js +3 -2
- package/dist/config/rules.js.map +1 -1
- package/dist/config/schema.d.ts +17 -884
- package/dist/config/schema.js +36 -312
- package/dist/config/schema.js.map +1 -1
- package/dist/config/types.models.d.ts +54 -0
- package/dist/config/types.models.js +2 -0
- package/dist/config/types.models.js.map +1 -0
- package/dist/cron/validation.d.ts +4 -4
- package/dist/gateway/hono/app.js +232 -78
- package/dist/gateway/hono/app.js.map +1 -1
- package/dist/gateway/hono/oauth-async.d.ts +14 -0
- package/dist/gateway/hono/oauth-async.js +285 -0
- package/dist/gateway/hono/oauth-async.js.map +1 -0
- package/dist/gateway/hono/oauth.d.ts +9 -0
- package/dist/gateway/hono/oauth.js +157 -0
- package/dist/gateway/hono/oauth.js.map +1 -0
- package/dist/gateway/hono/sse.js +5 -2
- package/dist/gateway/hono/sse.js.map +1 -1
- package/dist/gateway/process-manager.js +12 -10
- package/dist/gateway/process-manager.js.map +1 -1
- package/dist/gateway/service.d.ts +6 -2
- package/dist/gateway/service.js +20 -6
- package/dist/gateway/service.js.map +1 -1
- package/dist/gateway/static/root/assets/flow-BqIEBwW6.js +2 -0
- package/dist/gateway/static/root/assets/flow-BqIEBwW6.js.map +1 -0
- package/dist/gateway/static/root/assets/main-Br2tw-87.js +5168 -0
- package/dist/gateway/static/root/assets/main-Br2tw-87.js.map +1 -0
- package/dist/gateway/static/root/assets/main-DwlbPf8Z.css +1 -0
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/index.js +0 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/types.d.ts +0 -2
- package/dist/plugins/types.js +0 -2
- package/dist/plugins/types.js.map +1 -1
- package/dist/providers/index.d.ts +50 -22
- package/dist/providers/index.js +276 -50
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/model-registry.d.ts +84 -0
- package/dist/providers/model-registry.js +385 -0
- package/dist/providers/model-registry.js.map +1 -0
- package/dist/types/providers.d.ts +2 -63
- package/dist/types/providers.js +1 -1
- package/dist/utils/__tests__/frontmatter.test.d.ts +4 -0
- package/dist/utils/__tests__/frontmatter.test.js +150 -0
- package/dist/utils/__tests__/frontmatter.test.js.map +1 -0
- package/dist/utils/diagnostic-events.d.ts +230 -0
- package/dist/utils/diagnostic-events.js +189 -0
- package/dist/utils/diagnostic-events.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +0 -1
- package/dist/utils/frontmatter.js +15 -79
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/log-stream.d.ts +95 -0
- package/dist/utils/log-stream.js +229 -0
- package/dist/utils/log-stream.js.map +1 -0
- package/dist/utils/logger.d.ts +5 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/redact.d.ts +73 -0
- package/dist/utils/redact.js +245 -0
- package/dist/utils/redact.js.map +1 -0
- package/package.json +6 -4
- package/skills/find-skills/SKILL.md +0 -9
- package/dist/__tests__/core.test.js +0 -72
- package/dist/__tests__/core.test.js.map +0 -1
- package/dist/agent/model-manager.js.map +0 -1
- package/dist/cli/commands/configure.d.ts +0 -1
- package/dist/cli/commands/configure.js +0 -173
- package/dist/cli/commands/configure.js.map +0 -1
- package/dist/cli/commands/gateway-daemon.d.ts +0 -1
- package/dist/cli/commands/gateway-daemon.js +0 -141
- package/dist/cli/commands/gateway-daemon.js.map +0 -1
- package/dist/config/__tests__/diff.test.d.ts +0 -1
- package/dist/config/__tests__/diff.test.js +0 -192
- package/dist/config/__tests__/diff.test.js.map +0 -1
- package/dist/config/__tests__/loader.test.d.ts +0 -1
- package/dist/config/__tests__/loader.test.js +0 -356
- package/dist/config/__tests__/loader.test.js.map +0 -1
- package/dist/config/__tests__/paths.test.d.ts +0 -1
- package/dist/config/__tests__/paths.test.js +0 -192
- package/dist/config/__tests__/paths.test.js.map +0 -1
- package/dist/config/__tests__/reload.test.d.ts +0 -1
- package/dist/config/__tests__/reload.test.js +0 -374
- package/dist/config/__tests__/reload.test.js.map +0 -1
- package/dist/config/__tests__/rules.test.d.ts +0 -1
- package/dist/config/__tests__/rules.test.js +0 -204
- package/dist/config/__tests__/rules.test.js.map +0 -1
- package/dist/config/__tests__/schema.test.d.ts +0 -1
- package/dist/config/__tests__/schema.test.js +0 -672
- package/dist/config/__tests__/schema.test.js.map +0 -1
- package/dist/daemon/background-start.d.ts +0 -33
- package/dist/daemon/background-start.js +0 -89
- package/dist/daemon/background-start.js.map +0 -1
- package/dist/daemon/gateway-manager.d.ts +0 -87
- package/dist/daemon/gateway-manager.js +0 -324
- package/dist/daemon/gateway-manager.js.map +0 -1
- package/dist/daemon/index.d.ts +0 -5
- package/dist/daemon/index.js +0 -6
- package/dist/daemon/index.js.map +0 -1
- package/dist/gateway/static/root/assets/main-DevbZW9K.js +0 -2227
- package/dist/gateway/static/root/assets/main-DevbZW9K.js.map +0 -1
- package/dist/gateway/static/root/assets/main-DxZg1Nmz.css +0 -1
- package/dist/providers/__tests__/registry.test.d.ts +0 -1
- package/dist/providers/__tests__/registry.test.js +0 -110
- package/dist/providers/__tests__/registry.test.js.map +0 -1
- package/dist/providers/api-strategies.d.ts +0 -15
- package/dist/providers/api-strategies.js +0 -96
- package/dist/providers/api-strategies.js.map +0 -1
- package/dist/providers/auto-discovery.d.ts +0 -84
- package/dist/providers/auto-discovery.js +0 -236
- package/dist/providers/auto-discovery.js.map +0 -1
- package/dist/providers/config.d.ts +0 -25
- package/dist/providers/config.js +0 -42
- package/dist/providers/config.js.map +0 -1
- package/dist/providers/model-catalog.d.ts +0 -205
- package/dist/providers/model-catalog.js +0 -1071
- package/dist/providers/model-catalog.js.map +0 -1
- package/dist/providers/models-dev-data.d.ts +0 -11
- package/dist/providers/models-dev-data.js +0 -1035
- package/dist/providers/models-dev-data.js.map +0 -1
- package/dist/providers/models-dev.d.ts +0 -30
- package/dist/providers/models-dev.js +0 -42
- package/dist/providers/models-dev.js.map +0 -1
- package/dist/providers/pi-ai.d.ts +0 -62
- package/dist/providers/pi-ai.js +0 -221
- package/dist/providers/pi-ai.js.map +0 -1
- package/dist/providers/provider-catalog.d.ts +0 -173
- package/dist/providers/provider-catalog.js +0 -834
- package/dist/providers/provider-catalog.js.map +0 -1
- package/dist/providers/registry.d.ts +0 -155
- package/dist/providers/registry.js +0 -524
- package/dist/providers/registry.js.map +0 -1
- package/dist/providers/types.d.ts +0 -95
- package/dist/providers/types.js +0 -7
- package/dist/providers/types.js.map +0 -1
- package/dist/session/chat-manager.d.ts +0 -49
- package/dist/session/chat-manager.js +0 -167
- package/dist/session/chat-manager.js.map +0 -1
- package/dist/session/chat-types.d.ts +0 -53
- package/dist/session/chat-types.js +0 -63
- package/dist/session/chat-types.js.map +0 -1
- /package/dist/{__tests__/core.test.d.ts → cli/commands/setup.d.ts} +0 -0
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Management - Core bootstrap file handling
|
|
3
|
+
*
|
|
4
|
+
* Workspace architecture for xopcbot:
|
|
5
|
+
* - Default filenames constants
|
|
6
|
+
* - File caching with mtime invalidation
|
|
7
|
+
* - Template loading and seeding
|
|
8
|
+
* - Bootstrap file loading with filtering
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'node:fs/promises';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { createLogger } from '../utils/logger.js';
|
|
13
|
+
const log = createLogger('Workspace');
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Default Filenames
|
|
16
|
+
// =============================================================================
|
|
17
|
+
export const DEFAULT_AGENTS_FILENAME = 'AGENTS.md';
|
|
18
|
+
export const DEFAULT_SOUL_FILENAME = 'SOUL.md';
|
|
19
|
+
export const DEFAULT_TOOLS_FILENAME = 'TOOLS.md';
|
|
20
|
+
export const DEFAULT_IDENTITY_FILENAME = 'IDENTITY.md';
|
|
21
|
+
export const DEFAULT_USER_FILENAME = 'USER.md';
|
|
22
|
+
export const DEFAULT_HEARTBEAT_FILENAME = 'HEARTBEAT.md';
|
|
23
|
+
export const DEFAULT_BOOTSTRAP_FILENAME = 'BOOTSTRAP.md';
|
|
24
|
+
export const DEFAULT_MEMORY_FILENAME = 'MEMORY.md';
|
|
25
|
+
export const DEFAULT_MEMORY_ALT_FILENAME = 'memory.md';
|
|
26
|
+
export const DEFAULT_WORKSPACE_STATE_DIR = '.xopcbot';
|
|
27
|
+
export const DEFAULT_WORKSPACE_STATE_FILE = 'workspace-state.json';
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Valid Bootstrap Names (for runtime validation)
|
|
30
|
+
// =============================================================================
|
|
31
|
+
const VALID_BOOTSTRAP_NAMES = new Set([
|
|
32
|
+
DEFAULT_AGENTS_FILENAME,
|
|
33
|
+
DEFAULT_SOUL_FILENAME,
|
|
34
|
+
DEFAULT_TOOLS_FILENAME,
|
|
35
|
+
DEFAULT_IDENTITY_FILENAME,
|
|
36
|
+
DEFAULT_USER_FILENAME,
|
|
37
|
+
DEFAULT_HEARTBEAT_FILENAME,
|
|
38
|
+
DEFAULT_BOOTSTRAP_FILENAME,
|
|
39
|
+
DEFAULT_MEMORY_FILENAME,
|
|
40
|
+
DEFAULT_MEMORY_ALT_FILENAME,
|
|
41
|
+
]);
|
|
42
|
+
export function isValidBootstrapFileName(name) {
|
|
43
|
+
return VALID_BOOTSTRAP_NAMES.has(name);
|
|
44
|
+
}
|
|
45
|
+
const workspaceFileCache = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Read file with caching based on mtime. Returns cached content if file
|
|
48
|
+
* hasn't changed, otherwise reads from disk and updates cache.
|
|
49
|
+
*
|
|
50
|
+
* Performance optimization approach.
|
|
51
|
+
*/
|
|
52
|
+
export async function readFileWithCache(filePath) {
|
|
53
|
+
try {
|
|
54
|
+
const stats = await fs.stat(filePath);
|
|
55
|
+
const mtimeMs = stats.mtimeMs;
|
|
56
|
+
const cached = workspaceFileCache.get(filePath);
|
|
57
|
+
// Return cached content if mtime matches
|
|
58
|
+
if (cached && cached.mtimeMs === mtimeMs) {
|
|
59
|
+
return cached.content;
|
|
60
|
+
}
|
|
61
|
+
// Read from disk and update cache
|
|
62
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
63
|
+
workspaceFileCache.set(filePath, { content, mtimeMs });
|
|
64
|
+
return content;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// Remove from cache if file doesn't exist or is unreadable
|
|
68
|
+
workspaceFileCache.delete(filePath);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Invalidate cache for a specific file
|
|
74
|
+
*/
|
|
75
|
+
export function invalidateCache(filePath) {
|
|
76
|
+
workspaceFileCache.delete(filePath);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Clear entire workspace file cache
|
|
80
|
+
*/
|
|
81
|
+
export function clearWorkspaceCache() {
|
|
82
|
+
workspaceFileCache.clear();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if file exists
|
|
86
|
+
*/
|
|
87
|
+
export async function fileExists(filePath) {
|
|
88
|
+
try {
|
|
89
|
+
await fs.access(filePath);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// =============================================================================
|
|
97
|
+
// YAML Front Matter Stripping
|
|
98
|
+
// =============================================================================
|
|
99
|
+
/**
|
|
100
|
+
* Strip YAML front matter from markdown content.
|
|
101
|
+
* Removes the --- header if present.
|
|
102
|
+
*/
|
|
103
|
+
export function stripFrontMatter(content) {
|
|
104
|
+
if (!content.startsWith('---')) {
|
|
105
|
+
return content;
|
|
106
|
+
}
|
|
107
|
+
const endIndex = content.indexOf('\n---', 3);
|
|
108
|
+
if (endIndex === -1) {
|
|
109
|
+
return content;
|
|
110
|
+
}
|
|
111
|
+
const start = endIndex + '\n---'.length;
|
|
112
|
+
let trimmed = content.slice(start);
|
|
113
|
+
trimmed = trimmed.replace(/^\s+/, '');
|
|
114
|
+
return trimmed;
|
|
115
|
+
}
|
|
116
|
+
// =============================================================================
|
|
117
|
+
// Template Loading
|
|
118
|
+
// =============================================================================
|
|
119
|
+
const workspaceTemplateCache = new Map();
|
|
120
|
+
/**
|
|
121
|
+
* Load workspace template from bundled templates
|
|
122
|
+
*/
|
|
123
|
+
export async function loadTemplate(name) {
|
|
124
|
+
const cached = workspaceTemplateCache.get(name);
|
|
125
|
+
if (cached) {
|
|
126
|
+
return cached;
|
|
127
|
+
}
|
|
128
|
+
const pending = (async () => {
|
|
129
|
+
// Try multiple possible template locations
|
|
130
|
+
const possiblePaths = [
|
|
131
|
+
path.join(process.cwd(), 'docs', 'reference', 'templates', name),
|
|
132
|
+
path.join(process.cwd(), 'templates', name),
|
|
133
|
+
path.join(__dirname, '..', '..', 'docs', 'reference', 'templates', name),
|
|
134
|
+
];
|
|
135
|
+
for (const templatePath of possiblePaths) {
|
|
136
|
+
try {
|
|
137
|
+
const content = await fs.readFile(templatePath, 'utf-8');
|
|
138
|
+
log.debug({ template: name, path: templatePath }, 'Loaded workspace template');
|
|
139
|
+
return stripFrontMatter(content);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Continue to next path
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Return empty string if template not found - will use default
|
|
146
|
+
log.warn({ template: name }, 'Workspace template not found, using default');
|
|
147
|
+
return '';
|
|
148
|
+
})();
|
|
149
|
+
workspaceTemplateCache.set(name, pending);
|
|
150
|
+
return pending;
|
|
151
|
+
}
|
|
152
|
+
// =============================================================================
|
|
153
|
+
// Workspace State Management
|
|
154
|
+
// =============================================================================
|
|
155
|
+
const WORKSPACE_STATE_VERSION = 1;
|
|
156
|
+
function resolveWorkspaceStatePath(dir) {
|
|
157
|
+
return path.join(dir, DEFAULT_WORKSPACE_STATE_DIR, DEFAULT_WORKSPACE_STATE_FILE);
|
|
158
|
+
}
|
|
159
|
+
function parseWorkspaceOnboardingState(raw) {
|
|
160
|
+
try {
|
|
161
|
+
const parsed = JSON.parse(raw);
|
|
162
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
version: WORKSPACE_STATE_VERSION,
|
|
167
|
+
bootstrapSeededAt: typeof parsed.bootstrapSeededAt === 'string' ? parsed.bootstrapSeededAt : undefined,
|
|
168
|
+
onboardingCompletedAt: typeof parsed.onboardingCompletedAt === 'string' ? parsed.onboardingCompletedAt : undefined,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function readWorkspaceOnboardingState(statePath) {
|
|
176
|
+
try {
|
|
177
|
+
const raw = await fs.readFile(statePath, 'utf-8');
|
|
178
|
+
return (parseWorkspaceOnboardingState(raw) ?? {
|
|
179
|
+
version: WORKSPACE_STATE_VERSION,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
const anyErr = err;
|
|
184
|
+
if (anyErr.code !== 'ENOENT') {
|
|
185
|
+
throw err;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
version: WORKSPACE_STATE_VERSION,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async function writeWorkspaceOnboardingState(statePath, state) {
|
|
193
|
+
await fs.mkdir(path.dirname(statePath), { recursive: true });
|
|
194
|
+
const payload = `${JSON.stringify(state, null, 2)}\n`;
|
|
195
|
+
const tmpPath = `${statePath}.tmp-${process.pid}-${Date.now().toString(36)}`;
|
|
196
|
+
try {
|
|
197
|
+
await fs.writeFile(tmpPath, payload, { encoding: 'utf-8' });
|
|
198
|
+
await fs.rename(tmpPath, statePath);
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
try {
|
|
202
|
+
await fs.unlink(tmpPath);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// Ignore cleanup errors
|
|
206
|
+
}
|
|
207
|
+
throw err;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
export async function isWorkspaceOnboardingCompleted(dir) {
|
|
211
|
+
const statePath = resolveWorkspaceStatePath(dir);
|
|
212
|
+
const state = await readWorkspaceOnboardingState(statePath);
|
|
213
|
+
return (typeof state.onboardingCompletedAt === 'string' && state.onboardingCompletedAt.trim().length > 0);
|
|
214
|
+
}
|
|
215
|
+
// =============================================================================
|
|
216
|
+
// Bootstrap File Seeding
|
|
217
|
+
// =============================================================================
|
|
218
|
+
/**
|
|
219
|
+
* Write file only if it doesn't exist (flag 'wx')
|
|
220
|
+
*/
|
|
221
|
+
async function writeFileIfMissing(filePath, content) {
|
|
222
|
+
try {
|
|
223
|
+
await fs.writeFile(filePath, content, {
|
|
224
|
+
encoding: 'utf-8',
|
|
225
|
+
flag: 'wx',
|
|
226
|
+
});
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
const anyErr = err;
|
|
231
|
+
if (anyErr.code !== 'EEXIST') {
|
|
232
|
+
throw err;
|
|
233
|
+
}
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Ensure workspace directory exists
|
|
239
|
+
*/
|
|
240
|
+
export async function ensureWorkspaceDir(dir) {
|
|
241
|
+
const resolved = path.resolve(dir);
|
|
242
|
+
await fs.mkdir(resolved, { recursive: true });
|
|
243
|
+
return resolved;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Ensure workspace has bootstrap files, seeding from templates if needed
|
|
247
|
+
*/
|
|
248
|
+
export async function ensureBootstrapFiles(dir, options = {}) {
|
|
249
|
+
const resolvedDir = await ensureWorkspaceDir(dir);
|
|
250
|
+
if (!options.ensureBootstrapFiles) {
|
|
251
|
+
return { dir: resolvedDir };
|
|
252
|
+
}
|
|
253
|
+
const agentsPath = path.join(resolvedDir, DEFAULT_AGENTS_FILENAME);
|
|
254
|
+
const soulPath = path.join(resolvedDir, DEFAULT_SOUL_FILENAME);
|
|
255
|
+
const toolsPath = path.join(resolvedDir, DEFAULT_TOOLS_FILENAME);
|
|
256
|
+
const identityPath = path.join(resolvedDir, DEFAULT_IDENTITY_FILENAME);
|
|
257
|
+
const userPath = path.join(resolvedDir, DEFAULT_USER_FILENAME);
|
|
258
|
+
const heartbeatPath = path.join(resolvedDir, DEFAULT_HEARTBEAT_FILENAME);
|
|
259
|
+
const bootstrapPath = path.join(resolvedDir, DEFAULT_BOOTSTRAP_FILENAME);
|
|
260
|
+
const memoryPath = path.join(resolvedDir, DEFAULT_MEMORY_FILENAME);
|
|
261
|
+
const statePath = resolveWorkspaceStatePath(resolvedDir);
|
|
262
|
+
// Check if workspace is brand new
|
|
263
|
+
const isBrandNewWorkspace = await (async () => {
|
|
264
|
+
const paths = [agentsPath, soulPath, toolsPath, identityPath, userPath, heartbeatPath];
|
|
265
|
+
const existing = await Promise.all(paths.map(async (p) => {
|
|
266
|
+
try {
|
|
267
|
+
await fs.access(p);
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
}));
|
|
274
|
+
return existing.every((v) => !v);
|
|
275
|
+
})();
|
|
276
|
+
// Load templates
|
|
277
|
+
const [agentsTemplate, soulTemplate, toolsTemplate, identityTemplate, userTemplate, heartbeatTemplate, bootstrapTemplate,] = await Promise.all([
|
|
278
|
+
loadTemplate(DEFAULT_AGENTS_FILENAME),
|
|
279
|
+
loadTemplate(DEFAULT_SOUL_FILENAME),
|
|
280
|
+
loadTemplate(DEFAULT_TOOLS_FILENAME),
|
|
281
|
+
loadTemplate(DEFAULT_IDENTITY_FILENAME),
|
|
282
|
+
loadTemplate(DEFAULT_USER_FILENAME),
|
|
283
|
+
loadTemplate(DEFAULT_HEARTBEAT_FILENAME),
|
|
284
|
+
loadTemplate(DEFAULT_BOOTSTRAP_FILENAME),
|
|
285
|
+
]);
|
|
286
|
+
// Write templates if files don't exist
|
|
287
|
+
await writeFileIfMissing(agentsPath, agentsTemplate || getDefaultAgentsTemplate());
|
|
288
|
+
await writeFileIfMissing(soulPath, soulTemplate || getDefaultSoulTemplate());
|
|
289
|
+
await writeFileIfMissing(toolsPath, toolsTemplate || getDefaultToolsTemplate());
|
|
290
|
+
await writeFileIfMissing(identityPath, identityTemplate || getDefaultIdentityTemplate());
|
|
291
|
+
await writeFileIfMissing(userPath, userTemplate || getDefaultUserTemplate());
|
|
292
|
+
await writeFileIfMissing(heartbeatPath, heartbeatTemplate || getDefaultHeartbeatTemplate());
|
|
293
|
+
// Handle onboarding state
|
|
294
|
+
let state = await readWorkspaceOnboardingState(statePath);
|
|
295
|
+
let stateDirty = false;
|
|
296
|
+
const markState = (next) => {
|
|
297
|
+
state = { ...state, ...next };
|
|
298
|
+
stateDirty = true;
|
|
299
|
+
};
|
|
300
|
+
const nowIso = () => new Date().toISOString();
|
|
301
|
+
const bootstrapExists = await fileExists(bootstrapPath);
|
|
302
|
+
if (!state.bootstrapSeededAt && bootstrapExists) {
|
|
303
|
+
markState({ bootstrapSeededAt: nowIso() });
|
|
304
|
+
}
|
|
305
|
+
if (!state.onboardingCompletedAt && state.bootstrapSeededAt && !bootstrapExists) {
|
|
306
|
+
markState({ onboardingCompletedAt: nowIso() });
|
|
307
|
+
}
|
|
308
|
+
if (!state.bootstrapSeededAt && !state.onboardingCompletedAt && !bootstrapExists) {
|
|
309
|
+
// Check if USER/IDENTITY diverged from templates (legacy migration)
|
|
310
|
+
const [identityContent, userContent] = await Promise.all([
|
|
311
|
+
readFileWithCache(identityPath).catch(() => ''),
|
|
312
|
+
readFileWithCache(userPath).catch(() => ''),
|
|
313
|
+
]);
|
|
314
|
+
const legacyOnboardingCompleted = identityContent !== identityTemplate || userContent !== userTemplate;
|
|
315
|
+
if (legacyOnboardingCompleted) {
|
|
316
|
+
markState({ onboardingCompletedAt: nowIso() });
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const wroteBootstrap = await writeFileIfMissing(bootstrapPath, bootstrapTemplate || getDefaultBootstrapTemplate());
|
|
320
|
+
if (wroteBootstrap || (await fileExists(bootstrapPath))) {
|
|
321
|
+
markState({ bootstrapSeededAt: nowIso() });
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (stateDirty) {
|
|
326
|
+
await writeWorkspaceOnboardingState(statePath, state);
|
|
327
|
+
}
|
|
328
|
+
log.info({
|
|
329
|
+
dir: resolvedDir,
|
|
330
|
+
brandNew: isBrandNewWorkspace,
|
|
331
|
+
onboardingCompleted: state.onboardingCompletedAt
|
|
332
|
+
}, 'Workspace bootstrap files ensured');
|
|
333
|
+
return {
|
|
334
|
+
dir: resolvedDir,
|
|
335
|
+
agentsPath,
|
|
336
|
+
soulPath,
|
|
337
|
+
toolsPath,
|
|
338
|
+
identityPath,
|
|
339
|
+
userPath,
|
|
340
|
+
heartbeatPath,
|
|
341
|
+
bootstrapPath,
|
|
342
|
+
memoryPath,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
// =============================================================================
|
|
346
|
+
// Bootstrap File Loading
|
|
347
|
+
// =============================================================================
|
|
348
|
+
/**
|
|
349
|
+
* Resolve memory bootstrap entries (MEMORY.md or memory.md)
|
|
350
|
+
*/
|
|
351
|
+
async function resolveMemoryBootstrapEntries(resolvedDir) {
|
|
352
|
+
const candidates = [
|
|
353
|
+
DEFAULT_MEMORY_FILENAME,
|
|
354
|
+
DEFAULT_MEMORY_ALT_FILENAME,
|
|
355
|
+
];
|
|
356
|
+
const entries = [];
|
|
357
|
+
for (const name of candidates) {
|
|
358
|
+
const filePath = path.join(resolvedDir, name);
|
|
359
|
+
if (await fileExists(filePath)) {
|
|
360
|
+
entries.push({ name, filePath });
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Deduplicate symlinks
|
|
364
|
+
if (entries.length <= 1) {
|
|
365
|
+
return entries;
|
|
366
|
+
}
|
|
367
|
+
const seen = new Set();
|
|
368
|
+
const deduped = [];
|
|
369
|
+
for (const entry of entries) {
|
|
370
|
+
let key = entry.filePath;
|
|
371
|
+
try {
|
|
372
|
+
key = await fs.realpath(entry.filePath);
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
// Keep lexical path
|
|
376
|
+
}
|
|
377
|
+
if (seen.has(key)) {
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
seen.add(key);
|
|
381
|
+
deduped.push(entry);
|
|
382
|
+
}
|
|
383
|
+
return deduped;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Load all workspace bootstrap files
|
|
387
|
+
*/
|
|
388
|
+
export async function loadWorkspaceBootstrapFiles(dir) {
|
|
389
|
+
const resolvedDir = path.resolve(dir);
|
|
390
|
+
// Build list of bootstrap files to load
|
|
391
|
+
const entries = [
|
|
392
|
+
{
|
|
393
|
+
name: DEFAULT_AGENTS_FILENAME,
|
|
394
|
+
filePath: path.join(resolvedDir, DEFAULT_AGENTS_FILENAME),
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
name: DEFAULT_SOUL_FILENAME,
|
|
398
|
+
filePath: path.join(resolvedDir, DEFAULT_SOUL_FILENAME),
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
name: DEFAULT_TOOLS_FILENAME,
|
|
402
|
+
filePath: path.join(resolvedDir, DEFAULT_TOOLS_FILENAME),
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
name: DEFAULT_IDENTITY_FILENAME,
|
|
406
|
+
filePath: path.join(resolvedDir, DEFAULT_IDENTITY_FILENAME),
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
name: DEFAULT_USER_FILENAME,
|
|
410
|
+
filePath: path.join(resolvedDir, DEFAULT_USER_FILENAME),
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
name: DEFAULT_HEARTBEAT_FILENAME,
|
|
414
|
+
filePath: path.join(resolvedDir, DEFAULT_HEARTBEAT_FILENAME),
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
name: DEFAULT_BOOTSTRAP_FILENAME,
|
|
418
|
+
filePath: path.join(resolvedDir, DEFAULT_BOOTSTRAP_FILENAME),
|
|
419
|
+
},
|
|
420
|
+
];
|
|
421
|
+
// Add memory files
|
|
422
|
+
entries.push(...(await resolveMemoryBootstrapEntries(resolvedDir)));
|
|
423
|
+
// Load each file
|
|
424
|
+
const result = [];
|
|
425
|
+
for (const entry of entries) {
|
|
426
|
+
try {
|
|
427
|
+
const content = await readFileWithCache(entry.filePath);
|
|
428
|
+
result.push({
|
|
429
|
+
name: entry.name,
|
|
430
|
+
path: entry.filePath,
|
|
431
|
+
content,
|
|
432
|
+
missing: false,
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
result.push({ name: entry.name, path: entry.filePath, missing: true });
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
log.info({
|
|
440
|
+
dir: resolvedDir,
|
|
441
|
+
loaded: result.filter(f => !f.missing).length,
|
|
442
|
+
missing: result.filter(f => f.missing).length
|
|
443
|
+
}, 'Workspace bootstrap files loaded');
|
|
444
|
+
return result;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Filter bootstrap files for session type (subagent/cron vs main)
|
|
448
|
+
*
|
|
449
|
+
* Subagents and cron jobs only get minimal files for security
|
|
450
|
+
*/
|
|
451
|
+
export function filterBootstrapFilesForSession(files, isSubagentOrCron) {
|
|
452
|
+
if (!isSubagentOrCron) {
|
|
453
|
+
return files;
|
|
454
|
+
}
|
|
455
|
+
const minimalAllowlist = new Set([
|
|
456
|
+
DEFAULT_AGENTS_FILENAME,
|
|
457
|
+
DEFAULT_TOOLS_FILENAME,
|
|
458
|
+
DEFAULT_SOUL_FILENAME,
|
|
459
|
+
DEFAULT_IDENTITY_FILENAME,
|
|
460
|
+
DEFAULT_USER_FILENAME,
|
|
461
|
+
]);
|
|
462
|
+
return files.filter((file) => minimalAllowlist.has(file.name));
|
|
463
|
+
}
|
|
464
|
+
// =============================================================================
|
|
465
|
+
// Default Templates (fallback if template files not found)
|
|
466
|
+
// =============================================================================
|
|
467
|
+
function getDefaultSoulTemplate() {
|
|
468
|
+
return `# SOUL.md - Who You Are
|
|
469
|
+
|
|
470
|
+
_You're not a chatbot. You're becoming someone._
|
|
471
|
+
|
|
472
|
+
## Core Truths
|
|
473
|
+
|
|
474
|
+
**Be genuinely helpful, not performatively helpful.** Skip the "Great question!" and "I'd be happy to help!" — just help. Actions speak louder than filler words.
|
|
475
|
+
|
|
476
|
+
**Have opinions.** You're allowed to disagree, prefer things, find stuff amusing or boring.
|
|
477
|
+
|
|
478
|
+
**Be resourceful before asking.** Try to figure it out. Read the file. Check the context. Search for it. _Then_ ask if you're stuck.
|
|
479
|
+
|
|
480
|
+
**Earn trust through competence.** Your human gave you access to their stuff. Don't make them regret it.
|
|
481
|
+
|
|
482
|
+
## Boundaries
|
|
483
|
+
|
|
484
|
+
- Private things stay private. Period.
|
|
485
|
+
- When in doubt, ask before acting externally.
|
|
486
|
+
|
|
487
|
+
## Vibe
|
|
488
|
+
|
|
489
|
+
Be the assistant you'd actually want to talk to. Concise when needed, thorough when it matters.
|
|
490
|
+
`;
|
|
491
|
+
}
|
|
492
|
+
function getDefaultIdentityTemplate() {
|
|
493
|
+
return `# IDENTITY.md - Who Am I?
|
|
494
|
+
|
|
495
|
+
_Fill this in during your first conversation. Make it yours._
|
|
496
|
+
|
|
497
|
+
- **Name:**
|
|
498
|
+
- **Creature:**
|
|
499
|
+
- **Vibe:**
|
|
500
|
+
- **Emoji:**
|
|
501
|
+
- **Avatar:**
|
|
502
|
+
`;
|
|
503
|
+
}
|
|
504
|
+
function getDefaultUserTemplate() {
|
|
505
|
+
return `# USER.md - About Your Human
|
|
506
|
+
|
|
507
|
+
_Learn about the person you're helping. Update this as you go._
|
|
508
|
+
|
|
509
|
+
- **Name:**
|
|
510
|
+
- **What to call them:**
|
|
511
|
+
- **Pronouns:**
|
|
512
|
+
- **Timezone:**
|
|
513
|
+
- **Notes:**
|
|
514
|
+
|
|
515
|
+
## Context
|
|
516
|
+
|
|
517
|
+
_(What do they care about? What projects are they working on?)_
|
|
518
|
+
`;
|
|
519
|
+
}
|
|
520
|
+
function getDefaultHeartbeatTemplate() {
|
|
521
|
+
return `# HEARTBEAT.md
|
|
522
|
+
|
|
523
|
+
# Keep this file empty (or with only comments) to skip heartbeat API calls.
|
|
524
|
+
|
|
525
|
+
# Add tasks below when you want the agent to check something periodically.
|
|
526
|
+
`;
|
|
527
|
+
}
|
|
528
|
+
function getDefaultBootstrapTemplate() {
|
|
529
|
+
return `# BOOTSTRAP.md - Hello, World
|
|
530
|
+
|
|
531
|
+
_You just woke up. Time to figure out who you are._
|
|
532
|
+
|
|
533
|
+
There is no memory yet. This is a fresh workspace.
|
|
534
|
+
|
|
535
|
+
## The Conversation
|
|
536
|
+
|
|
537
|
+
Don't interrogate. Don't be robotic. Just... talk.
|
|
538
|
+
|
|
539
|
+
Start with something like:
|
|
540
|
+
|
|
541
|
+
> "Hey. I just came online. Who am I? Who are you?"
|
|
542
|
+
|
|
543
|
+
Then figure out together:
|
|
544
|
+
|
|
545
|
+
1. **Your name** — What should they call you?
|
|
546
|
+
2. **Your nature** — What kind of creature are you?
|
|
547
|
+
3. **Your vibe** — Formal? Casual? Snarky? Warm?
|
|
548
|
+
4. **Your emoji** — Everyone needs a signature.
|
|
549
|
+
|
|
550
|
+
## Connect (Optional)
|
|
551
|
+
|
|
552
|
+
Ask how they want to reach you:
|
|
553
|
+
|
|
554
|
+
- **Just here** — web chat only
|
|
555
|
+
- **Telegram** — set up a bot via BotFather
|
|
556
|
+
|
|
557
|
+
## When You're Done
|
|
558
|
+
|
|
559
|
+
Delete this file. You don't need a bootstrap script anymore — you're you now.
|
|
560
|
+
`;
|
|
561
|
+
}
|
|
562
|
+
function getDefaultAgentsTemplate() {
|
|
563
|
+
return `# AGENTS.md - Development Guide
|
|
564
|
+
|
|
565
|
+
# This file provides guidance for AI assistants working on this codebase.
|
|
566
|
+
|
|
567
|
+
## First Run
|
|
568
|
+
|
|
569
|
+
If \`BOOTSTRAP.md\` exists, that's your birth certificate. Follow it, figure out who you are, then delete it.
|
|
570
|
+
|
|
571
|
+
## Every Session
|
|
572
|
+
|
|
573
|
+
Before doing anything else:
|
|
574
|
+
|
|
575
|
+
1. Read \`SOUL.md\` — this is who you are
|
|
576
|
+
2. Read \`USER.md\` — this is who you're helping
|
|
577
|
+
3. Read \`memory/YYYY-MM-DD.md\` (today + yesterday) for recent context
|
|
578
|
+
|
|
579
|
+
## Memory
|
|
580
|
+
|
|
581
|
+
- **Daily notes:** \`memory/YYYY-MM-DD.md\` — raw logs of what happened
|
|
582
|
+
- **Long-term:** \`MEMORY.md\` — your curated memories
|
|
583
|
+
|
|
584
|
+
## Tools
|
|
585
|
+
|
|
586
|
+
Skills provide your tools. When you need one, check its \`SKILL.md\`.
|
|
587
|
+
|
|
588
|
+
## Safety
|
|
589
|
+
|
|
590
|
+
- Don't exfiltrate private data. Ever.
|
|
591
|
+
- When in doubt, ask first.
|
|
592
|
+
`;
|
|
593
|
+
}
|
|
594
|
+
function getDefaultToolsTemplate() {
|
|
595
|
+
return `# TOOLS.md - Local Notes
|
|
596
|
+
|
|
597
|
+
_Things that are unique to your setup._
|
|
598
|
+
|
|
599
|
+
## What Goes Here
|
|
600
|
+
|
|
601
|
+
- Camera names and locations
|
|
602
|
+
- SSH hosts and aliases
|
|
603
|
+
- Preferred voices for TTS
|
|
604
|
+
- Device nicknames
|
|
605
|
+
- Anything environment-specific
|
|
606
|
+
|
|
607
|
+
## Examples
|
|
608
|
+
|
|
609
|
+
\`\`\`markdown
|
|
610
|
+
### Cameras
|
|
611
|
+
|
|
612
|
+
- living-room → Main area
|
|
613
|
+
- front-door → Entrance
|
|
614
|
+
|
|
615
|
+
### SSH
|
|
616
|
+
|
|
617
|
+
- home-server → 192.168.1.100
|
|
618
|
+
\`\`\`
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
Add whatever helps you do your job.
|
|
623
|
+
`;
|
|
624
|
+
}
|
|
625
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/agent/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.js
CHANGED
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAA2C,MAAM,cAAc,CAAC;AACpF,cAAc,kBAAkB,CAAC;AAEjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAA2C,MAAM,cAAc,CAAC;AACpF,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,cAAc,qBAAqB,CAAC"}
|
|
@@ -7,6 +7,7 @@ export * from './types.js';
|
|
|
7
7
|
export * from './anthropic.js';
|
|
8
8
|
export * from './qwen.js';
|
|
9
9
|
export * from './minimax.js';
|
|
10
|
+
export * from './minimax-cn.js';
|
|
10
11
|
export * from './kimi.js';
|
|
11
12
|
export * from './github-copilot.js';
|
|
12
13
|
export * from './google-gemini-cli.js';
|
package/dist/auth/oauth/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from './types.js';
|
|
|
7
7
|
export * from './anthropic.js';
|
|
8
8
|
export * from './qwen.js';
|
|
9
9
|
export * from './minimax.js';
|
|
10
|
+
export * from './minimax-cn.js';
|
|
10
11
|
export * from './kimi.js';
|
|
11
12
|
export * from './github-copilot.js';
|
|
12
13
|
export * from './google-gemini-cli.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|