@chrisromp/copilot-bridge 0.6.0-dev.2

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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/bin/copilot-bridge.js +61 -0
  4. package/config.sample.json +100 -0
  5. package/dist/channels/mattermost/adapter.d.ts +55 -0
  6. package/dist/channels/mattermost/adapter.d.ts.map +1 -0
  7. package/dist/channels/mattermost/adapter.js +524 -0
  8. package/dist/channels/mattermost/adapter.js.map +1 -0
  9. package/dist/channels/mattermost/streaming.d.ts +29 -0
  10. package/dist/channels/mattermost/streaming.d.ts.map +1 -0
  11. package/dist/channels/mattermost/streaming.js +151 -0
  12. package/dist/channels/mattermost/streaming.js.map +1 -0
  13. package/dist/config.d.ts +107 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +817 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/core/bridge.d.ts +73 -0
  18. package/dist/core/bridge.d.ts.map +1 -0
  19. package/dist/core/bridge.js +166 -0
  20. package/dist/core/bridge.js.map +1 -0
  21. package/dist/core/channel-idle.d.ts +40 -0
  22. package/dist/core/channel-idle.d.ts.map +1 -0
  23. package/dist/core/channel-idle.js +120 -0
  24. package/dist/core/channel-idle.js.map +1 -0
  25. package/dist/core/command-handler.d.ts +51 -0
  26. package/dist/core/command-handler.d.ts.map +1 -0
  27. package/dist/core/command-handler.js +393 -0
  28. package/dist/core/command-handler.js.map +1 -0
  29. package/dist/core/inter-agent.d.ts +52 -0
  30. package/dist/core/inter-agent.d.ts.map +1 -0
  31. package/dist/core/inter-agent.js +179 -0
  32. package/dist/core/inter-agent.js.map +1 -0
  33. package/dist/core/onboarding.d.ts +44 -0
  34. package/dist/core/onboarding.d.ts.map +1 -0
  35. package/dist/core/onboarding.js +205 -0
  36. package/dist/core/onboarding.js.map +1 -0
  37. package/dist/core/scheduler.d.ts +38 -0
  38. package/dist/core/scheduler.d.ts.map +1 -0
  39. package/dist/core/scheduler.js +253 -0
  40. package/dist/core/scheduler.js.map +1 -0
  41. package/dist/core/session-manager.d.ts +166 -0
  42. package/dist/core/session-manager.d.ts.map +1 -0
  43. package/dist/core/session-manager.js +1732 -0
  44. package/dist/core/session-manager.js.map +1 -0
  45. package/dist/core/stream-formatter.d.ts +14 -0
  46. package/dist/core/stream-formatter.d.ts.map +1 -0
  47. package/dist/core/stream-formatter.js +198 -0
  48. package/dist/core/stream-formatter.js.map +1 -0
  49. package/dist/core/thread-utils.d.ts +22 -0
  50. package/dist/core/thread-utils.d.ts.map +1 -0
  51. package/dist/core/thread-utils.js +44 -0
  52. package/dist/core/thread-utils.js.map +1 -0
  53. package/dist/core/workspace-manager.d.ts +38 -0
  54. package/dist/core/workspace-manager.d.ts.map +1 -0
  55. package/dist/core/workspace-manager.js +230 -0
  56. package/dist/core/workspace-manager.js.map +1 -0
  57. package/dist/index.d.ts +2 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +1286 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/logger.d.ts +9 -0
  62. package/dist/logger.d.ts.map +1 -0
  63. package/dist/logger.js +34 -0
  64. package/dist/logger.js.map +1 -0
  65. package/dist/state/store.d.ts +124 -0
  66. package/dist/state/store.d.ts.map +1 -0
  67. package/dist/state/store.js +523 -0
  68. package/dist/state/store.js.map +1 -0
  69. package/dist/types.d.ts +185 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +61 -0
  74. package/scripts/check.ts +267 -0
  75. package/scripts/com.copilot-bridge.plist +41 -0
  76. package/scripts/copilot-bridge.service +30 -0
  77. package/scripts/init.ts +250 -0
  78. package/scripts/install-service.ts +123 -0
  79. package/scripts/lib/config-gen.ts +129 -0
  80. package/scripts/lib/mattermost.ts +109 -0
  81. package/scripts/lib/output.ts +69 -0
  82. package/scripts/lib/prerequisites.ts +86 -0
  83. package/scripts/lib/prompts.ts +65 -0
  84. package/scripts/lib/service.ts +191 -0
  85. package/scripts/uninstall-service.ts +90 -0
  86. package/templates/admin/AGENTS.md +325 -0
  87. package/templates/admin/MEMORY.md +4 -0
  88. package/templates/agents/AGENTS.md +97 -0
  89. package/templates/agents/MEMORY.md +4 -0
@@ -0,0 +1,230 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import os from 'node:os';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { createLogger } from '../logger.js';
6
+ import { getWorkspaceOverride, listWorkspaceOverrides, } from '../state/store.js';
7
+ import { isBotAdmin, isBotAdminAny } from '../config.js';
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ const TEMPLATES_DIR = path.join(__dirname, '..', '..', 'templates');
10
+ const log = createLogger('workspace');
11
+ export const WORKSPACES_DIR = path.join(os.homedir(), '.copilot-bridge', 'workspaces');
12
+ export const CONFIG_HOME = path.join(os.homedir(), '.copilot-bridge');
13
+ const USER_TEMPLATES_DIR = path.join(os.homedir(), '.copilot-bridge', 'templates');
14
+ export function ensureWorkspacesDir() {
15
+ if (!fs.existsSync(WORKSPACES_DIR)) {
16
+ fs.mkdirSync(WORKSPACES_DIR, { recursive: true });
17
+ }
18
+ // Recursively sync distributable templates to ~/.copilot-bridge/templates/
19
+ if (fs.existsSync(TEMPLATES_DIR)) {
20
+ syncDir(TEMPLATES_DIR, USER_TEMPLATES_DIR);
21
+ }
22
+ }
23
+ /** Recursively copy files from src to dest, creating only files that don't exist. Never overwrites. */
24
+ function syncDir(src, dest) {
25
+ if (!fs.existsSync(dest)) {
26
+ fs.mkdirSync(dest, { recursive: true });
27
+ }
28
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
29
+ const srcPath = path.join(src, entry.name);
30
+ const destPath = path.join(dest, entry.name);
31
+ if (entry.isDirectory()) {
32
+ syncDir(srcPath, destPath);
33
+ }
34
+ else if (!fs.existsSync(destPath)) {
35
+ fs.copyFileSync(srcPath, destPath);
36
+ }
37
+ }
38
+ }
39
+ /** Validate bot name to prevent path traversal. */
40
+ function validateBotName(name) {
41
+ if (!name || name !== path.basename(name) || name.startsWith('.')) {
42
+ throw new Error(`Invalid bot name: ${name}`);
43
+ }
44
+ }
45
+ export function getWorkspacePath(botName) {
46
+ validateBotName(botName);
47
+ const override = getWorkspaceOverride(botName);
48
+ if (override) {
49
+ return override.workingDirectory;
50
+ }
51
+ return path.join(WORKSPACES_DIR, botName);
52
+ }
53
+ export function getWorkspaceAllowPaths(botName, platformName) {
54
+ const override = getWorkspaceOverride(botName);
55
+ let paths = override?.allowPaths ?? [];
56
+ // Admin bots automatically get access to the workspaces directory and config home
57
+ const isAdmin = platformName ? isBotAdmin(platformName, botName) : isBotAdminAny(botName);
58
+ if (isAdmin) {
59
+ if (!paths.includes(WORKSPACES_DIR))
60
+ paths = [...paths, WORKSPACES_DIR];
61
+ if (!paths.includes(CONFIG_HOME))
62
+ paths = [...paths, CONFIG_HOME];
63
+ return paths;
64
+ }
65
+ return paths;
66
+ }
67
+ export function initWorkspace(botName, overridePath, adminOverride) {
68
+ const workspacePath = overridePath ?? getWorkspacePath(botName);
69
+ if (!fs.existsSync(workspacePath)) {
70
+ fs.mkdirSync(workspacePath, { recursive: true });
71
+ }
72
+ const admin = adminOverride ?? isBotAdminAny(botName);
73
+ const agentsFile = path.join(workspacePath, 'AGENTS.md');
74
+ if (!fs.existsSync(agentsFile)) {
75
+ const allowPaths = admin ? getWorkspaceAllowPaths(botName) : (getWorkspaceOverride(botName)?.allowPaths ?? []);
76
+ fs.writeFileSync(agentsFile, generateAgentsTemplate(botName, workspacePath, allowPaths, admin), 'utf-8');
77
+ }
78
+ const memoryFile = path.join(workspacePath, 'MEMORY.md');
79
+ if (!fs.existsSync(memoryFile)) {
80
+ const memoryTemplate = path.join(TEMPLATES_DIR, admin ? 'admin' : 'agents', 'MEMORY.md');
81
+ if (fs.existsSync(memoryTemplate)) {
82
+ fs.copyFileSync(memoryTemplate, memoryFile);
83
+ }
84
+ }
85
+ log.info(`Initialized workspace for "${botName}" at ${workspacePath}`);
86
+ return workspacePath;
87
+ }
88
+ export function listWorkspaces() {
89
+ const results = new Map();
90
+ // Scan filesystem
91
+ if (fs.existsSync(WORKSPACES_DIR)) {
92
+ for (const entry of fs.readdirSync(WORKSPACES_DIR, { withFileTypes: true })) {
93
+ if (entry.isDirectory()) {
94
+ results.set(entry.name, {
95
+ botName: entry.name,
96
+ path: path.join(WORKSPACES_DIR, entry.name),
97
+ isOverride: false,
98
+ allowPaths: [],
99
+ });
100
+ }
101
+ }
102
+ }
103
+ // Merge SQLite overrides
104
+ for (const override of listWorkspaceOverrides()) {
105
+ results.set(override.botName, {
106
+ botName: override.botName,
107
+ path: override.workingDirectory,
108
+ isOverride: true,
109
+ allowPaths: override.allowPaths,
110
+ });
111
+ }
112
+ return Array.from(results.values());
113
+ }
114
+ export class WorkspaceWatcher {
115
+ watcher = null;
116
+ handlers = [];
117
+ knownDirs;
118
+ debounceTimer = null;
119
+ log = createLogger('workspace-watcher');
120
+ constructor() {
121
+ this.knownDirs = this.scanDirs();
122
+ }
123
+ /** Start watching the workspaces directory. */
124
+ start() {
125
+ ensureWorkspacesDir();
126
+ if (this.watcher)
127
+ return;
128
+ this.log.info(`Watching ${WORKSPACES_DIR} for workspace changes`);
129
+ this.watcher = fs.watch(WORKSPACES_DIR, { persistent: false }, () => {
130
+ // Debounce — filesystem events fire multiple times
131
+ if (this.debounceTimer)
132
+ clearTimeout(this.debounceTimer);
133
+ this.debounceTimer = setTimeout(() => this.checkForChanges(), 500);
134
+ });
135
+ this.watcher.on('error', (err) => {
136
+ this.log.error('Watcher error:', err);
137
+ });
138
+ }
139
+ /** Stop watching. */
140
+ stop() {
141
+ if (this.watcher) {
142
+ this.watcher.close();
143
+ this.watcher = null;
144
+ }
145
+ if (this.debounceTimer) {
146
+ clearTimeout(this.debounceTimer);
147
+ this.debounceTimer = null;
148
+ }
149
+ }
150
+ /** Register an event handler. */
151
+ onEvent(handler) {
152
+ this.handlers.push(handler);
153
+ }
154
+ scanDirs() {
155
+ const dirs = new Set();
156
+ if (!fs.existsSync(WORKSPACES_DIR))
157
+ return dirs;
158
+ try {
159
+ for (const entry of fs.readdirSync(WORKSPACES_DIR, { withFileTypes: true })) {
160
+ if (entry.isDirectory() && !entry.name.startsWith('.')) {
161
+ dirs.add(entry.name);
162
+ }
163
+ }
164
+ }
165
+ catch { /* permission errors */ }
166
+ return dirs;
167
+ }
168
+ checkForChanges() {
169
+ const currentDirs = this.scanDirs();
170
+ // Detect new directories
171
+ for (const dir of currentDirs) {
172
+ if (!this.knownDirs.has(dir)) {
173
+ this.log.info(`New workspace detected: ${dir}`);
174
+ const wsPath = path.join(WORKSPACES_DIR, dir);
175
+ this.emit({ type: 'created', botName: dir, path: wsPath });
176
+ }
177
+ }
178
+ // Detect removed directories
179
+ for (const dir of this.knownDirs) {
180
+ if (!currentDirs.has(dir)) {
181
+ this.log.info(`Workspace removed: ${dir}`);
182
+ const wsPath = path.join(WORKSPACES_DIR, dir);
183
+ this.emit({ type: 'removed', botName: dir, path: wsPath });
184
+ }
185
+ }
186
+ this.knownDirs = currentDirs;
187
+ }
188
+ emit(event) {
189
+ for (const handler of this.handlers) {
190
+ try {
191
+ handler(event);
192
+ }
193
+ catch (err) {
194
+ this.log.error('Event handler error:', err);
195
+ }
196
+ }
197
+ }
198
+ }
199
+ export function generateAgentsTemplate(botName, workspacePath, allowPaths, isAdmin = false, agentPurpose = '', adminBotName = null) {
200
+ const templateFile = isAdmin ? path.join('admin', 'AGENTS.md') : path.join('agents', 'AGENTS.md');
201
+ const templatePath = path.join(TEMPLATES_DIR, templateFile);
202
+ if (!fs.existsSync(templatePath)) {
203
+ log.warn(`Template not found: ${templatePath}, using inline fallback`);
204
+ return `# ${botName} — Agent Workspace\n\nWorking directory: \`${workspacePath}\`\n`;
205
+ }
206
+ let content = fs.readFileSync(templatePath, 'utf-8');
207
+ // Interpolate variables
208
+ content = content.replaceAll('{{workspacePath}}', workspacePath);
209
+ content = content.replaceAll('{{workspacesDir}}', WORKSPACES_DIR);
210
+ content = content.replaceAll('{{botName}}', botName);
211
+ content = content.replaceAll('{{adminBotName}}', adminBotName ?? 'the admin bot');
212
+ // Conditional sections
213
+ const conditionals = {
214
+ allowPaths: allowPaths.length > 0 ? allowPaths.map(p => `- \`${p}\``).join('\n') : '',
215
+ agentPurpose,
216
+ };
217
+ for (const [key, value] of Object.entries(conditionals)) {
218
+ const sectionRe = new RegExp(`\\{\\{#${key}\\}\\}[\\s\\S]*?\\{\\{/${key}\\}\\}`, 'g');
219
+ if (value) {
220
+ content = content.replaceAll(`{{${key}}}`, value);
221
+ content = content.replace(new RegExp(`\\{\\{#${key}\\}\\}`, 'g'), '');
222
+ content = content.replace(new RegExp(`\\{\\{/${key}\\}\\}`, 'g'), '');
223
+ }
224
+ else {
225
+ content = content.replace(sectionRe, '');
226
+ }
227
+ }
228
+ return content;
229
+ }
230
+ //# sourceMappingURL=workspace-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/core/workspace-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}