@phuetz/code-buddy 0.1.0 → 0.1.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 (305) hide show
  1. package/.codebuddy/skills/bundled/brave-search/SKILL.md +490 -0
  2. package/.codebuddy/skills/bundled/exa-search/SKILL.md +1122 -0
  3. package/.codebuddy/skills/bundled/perplexity/SKILL.md +748 -0
  4. package/.codebuddy/skills/bundled/playwright/SKILL.md +520 -0
  5. package/.codebuddy/skills/bundled/puppeteer/SKILL.md +708 -0
  6. package/.codebuddy/skills/bundled/web-fetch/SKILL.md +1003 -0
  7. package/README.md +56 -0
  8. package/dist/agent/agent-state.d.ts +3 -3
  9. package/dist/agent/agent-state.js +6 -6
  10. package/dist/agent/agent-state.js.map +1 -1
  11. package/dist/agent/base-agent.d.ts +4 -4
  12. package/dist/agent/base-agent.js +22 -9
  13. package/dist/agent/base-agent.js.map +1 -1
  14. package/dist/agent/cache-trace.d.ts +56 -0
  15. package/dist/agent/cache-trace.js +98 -0
  16. package/dist/agent/cache-trace.js.map +1 -0
  17. package/dist/agent/codebuddy-agent.js +4 -2
  18. package/dist/agent/codebuddy-agent.js.map +1 -1
  19. package/dist/agent/execution/agent-executor.d.ts +4 -4
  20. package/dist/agent/execution/agent-executor.js +46 -14
  21. package/dist/agent/execution/agent-executor.js.map +1 -1
  22. package/dist/agent/facades/agent-context-facade.js +1 -3
  23. package/dist/agent/facades/agent-context-facade.js.map +1 -1
  24. package/dist/agent/facades/message-history-manager.js +14 -12
  25. package/dist/agent/facades/message-history-manager.js.map +1 -1
  26. package/dist/agent/facades/session-facade.d.ts +3 -3
  27. package/dist/agent/facades/session-facade.js +6 -6
  28. package/dist/agent/facades/session-facade.js.map +1 -1
  29. package/dist/agent/history-repair.d.ts +37 -0
  30. package/dist/agent/history-repair.js +124 -0
  31. package/dist/agent/history-repair.js.map +1 -0
  32. package/dist/agent/index.d.ts +3 -3
  33. package/dist/agent/index.js +3 -3
  34. package/dist/agent/index.js.map +1 -1
  35. package/dist/agent/isolation/agent-workspace.d.ts +1 -0
  36. package/dist/agent/isolation/agent-workspace.js +10 -0
  37. package/dist/agent/isolation/agent-workspace.js.map +1 -1
  38. package/dist/agent/specialized/archive-agent.d.ts +3 -0
  39. package/dist/agent/specialized/archive-agent.js +71 -31
  40. package/dist/agent/specialized/archive-agent.js.map +1 -1
  41. package/dist/agent/specialized/index.d.ts +9 -8
  42. package/dist/agent/specialized/index.js +16 -8
  43. package/dist/agent/specialized/index.js.map +1 -1
  44. package/dist/agent/specialized/security-review/agent.js +19 -8
  45. package/dist/agent/specialized/security-review/agent.js.map +1 -1
  46. package/dist/agent/tool-executor.js +5 -0
  47. package/dist/agent/tool-executor.js.map +1 -1
  48. package/dist/agent/turn-diff-tracker.d.ts +79 -0
  49. package/dist/agent/turn-diff-tracker.js +195 -0
  50. package/dist/agent/turn-diff-tracker.js.map +1 -0
  51. package/dist/browser/controller.js +8 -4
  52. package/dist/browser/controller.js.map +1 -1
  53. package/dist/browser-automation/browser-manager.js +8 -1
  54. package/dist/browser-automation/browser-manager.js.map +1 -1
  55. package/dist/checkpoints/checkpoint-versioning.js +78 -20
  56. package/dist/checkpoints/checkpoint-versioning.js.map +1 -1
  57. package/dist/cli/config-loader.js +2 -4
  58. package/dist/cli/config-loader.js.map +1 -1
  59. package/dist/codebuddy/client.js +70 -11
  60. package/dist/codebuddy/client.js.map +1 -1
  61. package/dist/codebuddy/tools.d.ts +1 -7
  62. package/dist/codebuddy/tools.js +2 -30
  63. package/dist/codebuddy/tools.js.map +1 -1
  64. package/dist/commands/cli/daemon-commands.d.ts +14 -0
  65. package/dist/commands/cli/daemon-commands.js +166 -0
  66. package/dist/commands/cli/daemon-commands.js.map +1 -0
  67. package/dist/commands/cli/speak-command.d.ts +10 -0
  68. package/dist/commands/cli/speak-command.js +97 -0
  69. package/dist/commands/cli/speak-command.js.map +1 -0
  70. package/dist/commands/cli/utility-commands.d.ts +10 -0
  71. package/dist/commands/cli/utility-commands.js +88 -0
  72. package/dist/commands/cli/utility-commands.js.map +1 -0
  73. package/dist/commands/handlers/fcs-handlers.js +1 -1
  74. package/dist/commands/handlers/fcs-handlers.js.map +1 -1
  75. package/dist/commands/handlers/memory-handlers.js +2 -1
  76. package/dist/commands/handlers/memory-handlers.js.map +1 -1
  77. package/dist/commands/handlers/vibe-handlers.js +0 -1
  78. package/dist/commands/handlers/vibe-handlers.js.map +1 -1
  79. package/dist/commands/handlers/worktree-handlers.js +11 -0
  80. package/dist/commands/handlers/worktree-handlers.js.map +1 -1
  81. package/dist/commands/index.d.ts +8 -7
  82. package/dist/commands/index.js +10 -8
  83. package/dist/commands/index.js.map +1 -1
  84. package/dist/commands/mcp.d.ts +1 -0
  85. package/dist/commands/mcp.js +66 -7
  86. package/dist/commands/mcp.js.map +1 -1
  87. package/dist/commands/pipeline.js +25 -13
  88. package/dist/commands/pipeline.js.map +1 -1
  89. package/dist/config/hot-reload/watcher.js +4 -4
  90. package/dist/config/hot-reload/watcher.js.map +1 -1
  91. package/dist/config/model-tools.d.ts +41 -0
  92. package/dist/config/model-tools.js +194 -0
  93. package/dist/config/model-tools.js.map +1 -0
  94. package/dist/context/context-manager-v2.d.ts +2 -1
  95. package/dist/context/context-manager-v2.js +34 -5
  96. package/dist/context/context-manager-v2.js.map +1 -1
  97. package/dist/context/index.d.ts +12 -12
  98. package/dist/context/index.js +25 -12
  99. package/dist/context/index.js.map +1 -1
  100. package/dist/daemon/daemon-manager.js +23 -19
  101. package/dist/daemon/daemon-manager.js.map +1 -1
  102. package/dist/database/database-manager.d.ts +4 -0
  103. package/dist/database/database-manager.js +16 -7
  104. package/dist/database/database-manager.js.map +1 -1
  105. package/dist/desktop-automation/nutjs-provider.js +89 -0
  106. package/dist/desktop-automation/nutjs-provider.js.map +1 -1
  107. package/dist/errors/index.d.ts +4 -4
  108. package/dist/errors/index.js +8 -4
  109. package/dist/errors/index.js.map +1 -1
  110. package/dist/fcs/builtins.d.ts +2 -6
  111. package/dist/fcs/builtins.js +2 -568
  112. package/dist/fcs/builtins.js.map +1 -1
  113. package/dist/fcs/codebuddy-bindings.d.ts +3 -43
  114. package/dist/fcs/codebuddy-bindings.js +2 -606
  115. package/dist/fcs/codebuddy-bindings.js.map +1 -1
  116. package/dist/fcs/index.d.ts +2 -27
  117. package/dist/fcs/index.js +2 -53
  118. package/dist/fcs/index.js.map +1 -1
  119. package/dist/fcs/lexer.d.ts +2 -37
  120. package/dist/fcs/lexer.js +2 -459
  121. package/dist/fcs/lexer.js.map +1 -1
  122. package/dist/fcs/parser.d.ts +2 -68
  123. package/dist/fcs/parser.js +2 -893
  124. package/dist/fcs/parser.js.map +1 -1
  125. package/dist/fcs/runtime.d.ts +2 -59
  126. package/dist/fcs/runtime.js +2 -623
  127. package/dist/fcs/runtime.js.map +1 -1
  128. package/dist/fcs/script-registry.d.ts +3 -69
  129. package/dist/fcs/script-registry.js +2 -219
  130. package/dist/fcs/script-registry.js.map +1 -1
  131. package/dist/fcs/sync-bindings.d.ts +3 -101
  132. package/dist/fcs/sync-bindings.js +2 -410
  133. package/dist/fcs/sync-bindings.js.map +1 -1
  134. package/dist/fcs/types.d.ts +2 -285
  135. package/dist/fcs/types.js +2 -103
  136. package/dist/fcs/types.js.map +1 -1
  137. package/dist/hooks/index.d.ts +4 -4
  138. package/dist/hooks/index.js +4 -4
  139. package/dist/hooks/index.js.map +1 -1
  140. package/dist/hooks/use-input-handler.d.ts +1 -1
  141. package/dist/index.js +20 -330
  142. package/dist/index.js.map +1 -1
  143. package/dist/input/voice-control.js +11 -5
  144. package/dist/input/voice-control.js.map +1 -1
  145. package/dist/integrations/json-rpc/server.d.ts +9 -0
  146. package/dist/integrations/json-rpc/server.js +43 -13
  147. package/dist/integrations/json-rpc/server.js.map +1 -1
  148. package/dist/integrations/mcp/mcp-server.js +1 -1
  149. package/dist/integrations/mcp/mcp-server.js.map +1 -1
  150. package/dist/integrations/notification-integrations.d.ts +1 -0
  151. package/dist/integrations/notification-integrations.js +6 -1
  152. package/dist/integrations/notification-integrations.js.map +1 -1
  153. package/dist/mcp/client.js +2 -1
  154. package/dist/mcp/client.js.map +1 -1
  155. package/dist/mcp/config.js +89 -5
  156. package/dist/mcp/config.js.map +1 -1
  157. package/dist/mcp/mcp-client.js +65 -14
  158. package/dist/mcp/mcp-client.js.map +1 -1
  159. package/dist/mcp/transports.d.ts +0 -1
  160. package/dist/mcp/transports.js +1 -5
  161. package/dist/mcp/transports.js.map +1 -1
  162. package/dist/mcp/types.d.ts +2 -0
  163. package/dist/memory/index.d.ts +2 -2
  164. package/dist/memory/index.js +2 -2
  165. package/dist/memory/index.js.map +1 -1
  166. package/dist/persistence/session-lock.d.ts +42 -0
  167. package/dist/persistence/session-lock.js +165 -0
  168. package/dist/persistence/session-lock.js.map +1 -0
  169. package/dist/persistence/session-store.d.ts +18 -3
  170. package/dist/persistence/session-store.js +90 -21
  171. package/dist/persistence/session-store.js.map +1 -1
  172. package/dist/plugins/conflict-detection.js +2 -1
  173. package/dist/plugins/conflict-detection.js.map +1 -1
  174. package/dist/plugins/index.d.ts +3 -3
  175. package/dist/plugins/index.js +3 -3
  176. package/dist/plugins/index.js.map +1 -1
  177. package/dist/plugins/isolated-plugin-runner.d.ts +6 -0
  178. package/dist/plugins/isolated-plugin-runner.js +19 -1
  179. package/dist/plugins/isolated-plugin-runner.js.map +1 -1
  180. package/dist/providers/local-llm-provider.js +28 -8
  181. package/dist/providers/local-llm-provider.js.map +1 -1
  182. package/dist/sandbox/docker-sandbox.js +7 -4
  183. package/dist/sandbox/docker-sandbox.js.map +1 -1
  184. package/dist/scripting/builtins.d.ts +8 -3
  185. package/dist/scripting/builtins.js +506 -355
  186. package/dist/scripting/builtins.js.map +1 -1
  187. package/dist/scripting/codebuddy-bindings.d.ts +47 -0
  188. package/dist/scripting/codebuddy-bindings.js +488 -0
  189. package/dist/scripting/codebuddy-bindings.js.map +1 -0
  190. package/dist/scripting/index.d.ts +33 -30
  191. package/dist/scripting/index.js +41 -36
  192. package/dist/scripting/index.js.map +1 -1
  193. package/dist/scripting/lexer.d.ts +31 -13
  194. package/dist/scripting/lexer.js +379 -292
  195. package/dist/scripting/lexer.js.map +1 -1
  196. package/dist/scripting/parser.d.ts +63 -44
  197. package/dist/scripting/parser.js +700 -473
  198. package/dist/scripting/parser.js.map +1 -1
  199. package/dist/scripting/runtime.d.ts +55 -24
  200. package/dist/scripting/runtime.js +600 -288
  201. package/dist/scripting/runtime.js.map +1 -1
  202. package/dist/scripting/script-registry.d.ts +54 -0
  203. package/dist/scripting/script-registry.js +202 -0
  204. package/dist/scripting/script-registry.js.map +1 -0
  205. package/dist/scripting/sync-bindings.d.ts +105 -0
  206. package/dist/scripting/sync-bindings.js +353 -0
  207. package/dist/scripting/sync-bindings.js.map +1 -0
  208. package/dist/scripting/types.d.ts +297 -199
  209. package/dist/scripting/types.js +86 -60
  210. package/dist/scripting/types.js.map +1 -1
  211. package/dist/search/usearch-index.js +42 -7
  212. package/dist/search/usearch-index.js.map +1 -1
  213. package/dist/security/bash-parser.d.ts +51 -0
  214. package/dist/security/bash-parser.js +327 -0
  215. package/dist/security/bash-parser.js.map +1 -0
  216. package/dist/security/index.d.ts +7 -5
  217. package/dist/security/index.js +8 -7
  218. package/dist/security/index.js.map +1 -1
  219. package/dist/security/skill-scanner.d.ts +36 -0
  220. package/dist/security/skill-scanner.js +149 -0
  221. package/dist/security/skill-scanner.js.map +1 -0
  222. package/dist/security/trust-folders.d.ts +1 -0
  223. package/dist/security/trust-folders.js +19 -1
  224. package/dist/security/trust-folders.js.map +1 -1
  225. package/dist/server/auth/index.d.ts +2 -2
  226. package/dist/server/auth/index.js +2 -2
  227. package/dist/server/auth/index.js.map +1 -1
  228. package/dist/server/middleware/index.d.ts +5 -5
  229. package/dist/server/middleware/index.js +5 -5
  230. package/dist/server/middleware/index.js.map +1 -1
  231. package/dist/server/middleware/rate-limit.js +15 -3
  232. package/dist/server/middleware/rate-limit.js.map +1 -1
  233. package/dist/server/websocket/handler.js +54 -6
  234. package/dist/server/websocket/handler.js.map +1 -1
  235. package/dist/skills/eligibility.js +26 -4
  236. package/dist/skills/eligibility.js.map +1 -1
  237. package/dist/tasks/background-tasks.js +5 -1
  238. package/dist/tasks/background-tasks.js.map +1 -1
  239. package/dist/tools/apply-patch.d.ts +55 -0
  240. package/dist/tools/apply-patch.js +273 -0
  241. package/dist/tools/apply-patch.js.map +1 -0
  242. package/dist/tools/hooks/default-hooks.d.ts +1 -1
  243. package/dist/tools/hooks/default-hooks.js +2 -1
  244. package/dist/tools/hooks/default-hooks.js.map +1 -1
  245. package/dist/tools/index.d.ts +10 -10
  246. package/dist/tools/index.js +11 -11
  247. package/dist/tools/index.js.map +1 -1
  248. package/dist/tools/registry/bash-tools.js +6 -3
  249. package/dist/tools/registry/bash-tools.js.map +1 -1
  250. package/dist/tools/registry/misc-tools.js +1 -2
  251. package/dist/tools/registry/misc-tools.js.map +1 -1
  252. package/dist/tools/registry/search-tools.js +1 -1
  253. package/dist/tools/registry/search-tools.js.map +1 -1
  254. package/dist/tools/registry/text-editor-tools.js +1 -1
  255. package/dist/tools/registry/text-editor-tools.js.map +1 -1
  256. package/dist/tools/registry/todo-tools.js +37 -5
  257. package/dist/tools/registry/todo-tools.js.map +1 -1
  258. package/dist/tools/registry/tool-registry.js +5 -4
  259. package/dist/tools/registry/tool-registry.js.map +1 -1
  260. package/dist/tools/registry/web-tools.d.ts +1 -1
  261. package/dist/tools/registry/web-tools.js +28 -8
  262. package/dist/tools/registry/web-tools.js.map +1 -1
  263. package/dist/tools/text-editor.d.ts +1 -1
  264. package/dist/tools/text-editor.js +23 -5
  265. package/dist/tools/text-editor.js.map +1 -1
  266. package/dist/tools/web-search.d.ts +52 -37
  267. package/dist/tools/web-search.js +368 -163
  268. package/dist/tools/web-search.js.map +1 -1
  269. package/dist/types/errors.d.ts +1 -1
  270. package/dist/types/errors.js +2 -8
  271. package/dist/types/errors.js.map +1 -1
  272. package/dist/types/index.d.ts +2 -1
  273. package/dist/types/index.js +1 -2
  274. package/dist/types/index.js.map +1 -1
  275. package/dist/ui/components/ChatInterface.d.ts +1 -1
  276. package/dist/ui/index.d.ts +17 -21
  277. package/dist/ui/index.js +25 -22
  278. package/dist/ui/index.js.map +1 -1
  279. package/dist/utils/config-validation/schema.d.ts +15 -15
  280. package/dist/utils/head-tail-truncation.d.ts +34 -0
  281. package/dist/utils/head-tail-truncation.js +98 -0
  282. package/dist/utils/head-tail-truncation.js.map +1 -0
  283. package/dist/utils/logger.js +3 -9
  284. package/dist/utils/logger.js.map +1 -1
  285. package/dist/utils/sanitize.d.ts +5 -0
  286. package/dist/utils/sanitize.js +19 -0
  287. package/dist/utils/sanitize.js.map +1 -1
  288. package/dist/utils/settings-manager.js +4 -4
  289. package/dist/utils/settings-manager.js.map +1 -1
  290. package/dist/workflows/index.d.ts +4 -279
  291. package/dist/workflows/index.js +8 -822
  292. package/dist/workflows/index.js.map +1 -1
  293. package/dist/workflows/state-manager.d.ts +77 -0
  294. package/dist/workflows/state-manager.js +198 -0
  295. package/dist/workflows/state-manager.js.map +1 -0
  296. package/dist/workflows/step-manager.d.ts +39 -0
  297. package/dist/workflows/step-manager.js +196 -0
  298. package/dist/workflows/step-manager.js.map +1 -0
  299. package/dist/workflows/types.d.ts +87 -0
  300. package/dist/workflows/types.js +5 -0
  301. package/dist/workflows/types.js.map +1 -0
  302. package/dist/workflows/workflow-engine.d.ts +34 -0
  303. package/dist/workflows/workflow-engine.js +354 -0
  304. package/dist/workflows/workflow-engine.js.map +1 -0
  305. package/package.json +5 -1
@@ -1,71 +1,5 @@
1
1
  /**
2
- * FCS Script Registry
3
- *
4
- * Provides discovery and management of FCS script templates.
2
+ * @deprecated Use src/scripting/script-registry.ts instead. This file re-exports for backward compatibility.
5
3
  */
6
- export interface ScriptTemplate {
7
- name: string;
8
- path: string;
9
- category: string;
10
- description: string;
11
- usage?: string;
12
- envVars?: string[];
13
- }
14
- export interface ScriptCategory {
15
- name: string;
16
- description: string;
17
- scripts: ScriptTemplate[];
18
- }
19
- /**
20
- * Registry of available FCS script templates
21
- */
22
- export declare class ScriptRegistry {
23
- private templates;
24
- private categories;
25
- private templatesDir;
26
- constructor(templatesDir?: string);
27
- /**
28
- * Load all templates from the templates directory
29
- */
30
- loadTemplates(): Promise<void>;
31
- /**
32
- * Load scripts from a category directory
33
- */
34
- private loadCategoryScripts;
35
- /**
36
- * Parse a template file to extract metadata
37
- */
38
- private parseTemplate;
39
- /**
40
- * Get all templates
41
- */
42
- getTemplates(): ScriptTemplate[];
43
- /**
44
- * Get templates by category
45
- */
46
- getTemplatesByCategory(category: string): ScriptTemplate[];
47
- /**
48
- * Get all categories
49
- */
50
- getCategories(): ScriptCategory[];
51
- /**
52
- * Get a specific template by name
53
- */
54
- getTemplate(name: string): ScriptTemplate | undefined;
55
- /**
56
- * Search templates by keyword
57
- */
58
- searchTemplates(keyword: string): ScriptTemplate[];
59
- /**
60
- * Format templates as a readable list
61
- */
62
- formatTemplateList(): string;
63
- }
64
- /**
65
- * Get the script registry instance
66
- */
67
- export declare function getScriptRegistry(): ScriptRegistry;
68
- /**
69
- * Initialize and load the script registry
70
- */
71
- export declare function initScriptRegistry(templatesDir?: string): Promise<ScriptRegistry>;
4
+ export { ScriptRegistry, getScriptRegistry, initScriptRegistry, } from '../scripting/script-registry.js';
5
+ export type { ScriptTemplate, ScriptCategory, } from '../scripting/script-registry.js';
@@ -1,222 +1,5 @@
1
1
  /**
2
- * FCS Script Registry
3
- *
4
- * Provides discovery and management of FCS script templates.
2
+ * @deprecated Use src/scripting/script-registry.ts instead. This file re-exports for backward compatibility.
5
3
  */
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- /**
9
- * Registry of available FCS script templates
10
- */
11
- export class ScriptRegistry {
12
- templates = new Map();
13
- categories = new Map();
14
- templatesDir;
15
- constructor(templatesDir) {
16
- // Default to scripts/templates relative to current working directory
17
- this.templatesDir = templatesDir || path.join(process.cwd(), 'scripts/templates');
18
- }
19
- /**
20
- * Load all templates from the templates directory
21
- */
22
- async loadTemplates() {
23
- this.templates.clear();
24
- this.categories.clear();
25
- if (!fs.existsSync(this.templatesDir)) {
26
- return;
27
- }
28
- // Define known categories
29
- const categoryDescriptions = {
30
- refactoring: 'Scripts for code refactoring operations',
31
- testing: 'Scripts for test generation and execution',
32
- documentation: 'Scripts for documentation generation',
33
- utilities: 'General utility scripts'
34
- };
35
- // Scan directory for categories
36
- const entries = fs.readdirSync(this.templatesDir, { withFileTypes: true });
37
- for (const entry of entries) {
38
- if (entry.isDirectory()) {
39
- const categoryName = entry.name;
40
- const categoryPath = path.join(this.templatesDir, categoryName);
41
- const scripts = await this.loadCategoryScripts(categoryName, categoryPath);
42
- if (scripts.length > 0) {
43
- this.categories.set(categoryName, {
44
- name: categoryName,
45
- description: categoryDescriptions[categoryName] || `${categoryName} scripts`,
46
- scripts
47
- });
48
- }
49
- }
50
- else if (entry.name.endsWith('.fcs')) {
51
- // Root-level scripts
52
- const template = await this.parseTemplate(entry.name, this.templatesDir, 'general');
53
- if (template) {
54
- this.templates.set(template.name, template);
55
- }
56
- }
57
- }
58
- }
59
- /**
60
- * Load scripts from a category directory
61
- */
62
- async loadCategoryScripts(category, categoryPath) {
63
- const scripts = [];
64
- if (!fs.existsSync(categoryPath)) {
65
- return scripts;
66
- }
67
- const files = fs.readdirSync(categoryPath);
68
- for (const file of files) {
69
- if (file.endsWith('.fcs')) {
70
- const template = await this.parseTemplate(file, categoryPath, category);
71
- if (template) {
72
- scripts.push(template);
73
- this.templates.set(template.name, template);
74
- }
75
- }
76
- }
77
- return scripts;
78
- }
79
- /**
80
- * Parse a template file to extract metadata
81
- */
82
- async parseTemplate(filename, dir, category) {
83
- const filePath = path.join(dir, filename);
84
- try {
85
- const content = fs.readFileSync(filePath, 'utf-8');
86
- const lines = content.split('\n');
87
- // Extract description from first comment block
88
- let description = '';
89
- let usage = '';
90
- const envVars = [];
91
- let inHeader = true;
92
- for (const line of lines) {
93
- const trimmed = line.trim();
94
- // Extract env vars from all lines (they appear in code, not comments)
95
- const envMatch = line.match(/env\("([A-Z_]+)"/g);
96
- if (envMatch) {
97
- for (const match of envMatch) {
98
- const varName = match.match(/env\("([A-Z_]+)"/)?.[1];
99
- if (varName && !envVars.includes(varName)) {
100
- envVars.push(varName);
101
- }
102
- }
103
- }
104
- if (!trimmed.startsWith('//')) {
105
- inHeader = false;
106
- continue;
107
- }
108
- if (!inHeader)
109
- continue;
110
- const commentContent = trimmed.substring(2).trim();
111
- if (commentContent.startsWith('Usage:')) {
112
- usage = commentContent.substring(6).trim();
113
- }
114
- else if (description === '' && commentContent) {
115
- // Handle "filename.fcs - Description" format
116
- if (commentContent.includes(' - ')) {
117
- const parts = commentContent.split(' - ');
118
- if (parts.length > 1) {
119
- description = parts.slice(1).join(' - ').trim();
120
- }
121
- }
122
- else if (!commentContent.includes('.fcs')) {
123
- description = commentContent;
124
- }
125
- }
126
- }
127
- return {
128
- name: filename.replace('.fcs', ''),
129
- path: filePath,
130
- category,
131
- description: description || `${filename} script`,
132
- usage: usage || undefined,
133
- envVars: envVars.length > 0 ? envVars : undefined
134
- };
135
- }
136
- catch {
137
- return null;
138
- }
139
- }
140
- /**
141
- * Get all templates
142
- */
143
- getTemplates() {
144
- return Array.from(this.templates.values());
145
- }
146
- /**
147
- * Get templates by category
148
- */
149
- getTemplatesByCategory(category) {
150
- return this.getTemplates().filter(t => t.category === category);
151
- }
152
- /**
153
- * Get all categories
154
- */
155
- getCategories() {
156
- return Array.from(this.categories.values());
157
- }
158
- /**
159
- * Get a specific template by name
160
- */
161
- getTemplate(name) {
162
- return this.templates.get(name);
163
- }
164
- /**
165
- * Search templates by keyword
166
- */
167
- searchTemplates(keyword) {
168
- const lowerKeyword = keyword.toLowerCase();
169
- return this.getTemplates().filter(t => t.name.toLowerCase().includes(lowerKeyword) ||
170
- t.description.toLowerCase().includes(lowerKeyword) ||
171
- t.category.toLowerCase().includes(lowerKeyword));
172
- }
173
- /**
174
- * Format templates as a readable list
175
- */
176
- formatTemplateList() {
177
- const lines = [
178
- 'FCS Script Templates',
179
- '='.repeat(50),
180
- ''
181
- ];
182
- for (const category of this.getCategories()) {
183
- lines.push(`## ${category.name.charAt(0).toUpperCase() + category.name.slice(1)}`);
184
- lines.push(category.description);
185
- lines.push('');
186
- for (const script of category.scripts) {
187
- lines.push(` ${script.name}`);
188
- lines.push(` ${script.description}`);
189
- if (script.usage) {
190
- lines.push(` Usage: ${script.usage}`);
191
- }
192
- lines.push('');
193
- }
194
- }
195
- lines.push('-'.repeat(50));
196
- lines.push(`Total: ${this.templates.size} templates in ${this.categories.size} categories`);
197
- return lines.join('\n');
198
- }
199
- }
200
- /**
201
- * Singleton instance
202
- */
203
- let registryInstance = null;
204
- /**
205
- * Get the script registry instance
206
- */
207
- export function getScriptRegistry() {
208
- if (!registryInstance) {
209
- registryInstance = new ScriptRegistry();
210
- }
211
- return registryInstance;
212
- }
213
- /**
214
- * Initialize and load the script registry
215
- */
216
- export async function initScriptRegistry(templatesDir) {
217
- const registry = new ScriptRegistry(templatesDir);
218
- await registry.loadTemplates();
219
- registryInstance = registry;
220
- return registry;
221
- }
4
+ export { ScriptRegistry, getScriptRegistry, initScriptRegistry, } from '../scripting/script-registry.js';
222
5
  //# sourceMappingURL=script-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"script-registry.js","sourceRoot":"","sources":["../../src/fcs/script-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script-registry.js","sourceRoot":"","sources":["../../src/fcs/script-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC"}
@@ -1,103 +1,5 @@
1
1
  /**
2
- * Sync Bindings for FCS
3
- *
4
- * Provides FCS functions for cross-session synchronization:
5
- * - sync.status() - Get current sync status
6
- * - sync.push() - Push local changes
7
- * - sync.pull() - Pull remote changes
8
- * - sync.diff() - Show pending changes
9
- * - sync.resolve() - Resolve conflicts
10
- * - sync.snapshot() - Create workspace snapshot
11
- * - sync.restore() - Restore from snapshot
2
+ * @deprecated Use src/scripting/sync-bindings.ts instead. This file re-exports for backward compatibility.
12
3
  */
13
- import { FCSValue, FCSConfig } from './types.js';
14
- import { SyncManager, SyncConflict, SyncStatus } from '../sync/index.js';
15
- export interface WorkspaceSnapshot {
16
- id: string;
17
- timestamp: number;
18
- files: Map<string, FileState>;
19
- context: SessionContext;
20
- metadata: SnapshotMetadata;
21
- }
22
- export interface FileState {
23
- path: string;
24
- content: string;
25
- hash: string;
26
- lastModified: number;
27
- isOpen: boolean;
28
- isDirty: boolean;
29
- }
30
- export interface SessionContext {
31
- sessionId: string;
32
- agentMode: string;
33
- toolsUsed: string[];
34
- conversationLength: number;
35
- startTime: number;
36
- }
37
- export interface SnapshotMetadata {
38
- name?: string;
39
- description?: string;
40
- tags?: string[];
41
- createdBy: string;
42
- }
43
- export interface SyncBindingsConfig extends Partial<FCSConfig> {
44
- sessionId?: string;
45
- nodeId?: string;
46
- onConflict?: (conflict: SyncConflict) => void;
47
- }
48
- export declare class WorkspaceStateTracker {
49
- private files;
50
- private sessionContext;
51
- private syncManager;
52
- private snapshots;
53
- constructor(sessionId: string, nodeId?: string);
54
- initialize(): Promise<void>;
55
- private restoreSnapshotFromData;
56
- trackFile(path: string, content: string, isOpen?: boolean): void;
57
- untrackFile(path: string): void;
58
- markFileDirty(path: string): void;
59
- markFileClean(path: string): void;
60
- getTrackedFiles(): FileState[];
61
- getDirtyFiles(): FileState[];
62
- updateContext(updates: Partial<SessionContext>): void;
63
- recordToolUsage(toolName: string): void;
64
- incrementConversation(): void;
65
- getContext(): SessionContext;
66
- createSnapshot(metadata?: Partial<SnapshotMetadata>): WorkspaceSnapshot;
67
- getSnapshot(id: string): WorkspaceSnapshot | undefined;
68
- listSnapshots(): WorkspaceSnapshot[];
69
- restoreSnapshot(id: string): boolean;
70
- getSyncManager(): SyncManager<WorkspaceSnapshot>;
71
- getSyncStatus(): SyncStatus;
72
- pushChanges(): Promise<{
73
- success: boolean;
74
- snapshot: WorkspaceSnapshot;
75
- }>;
76
- pullChanges(remoteSnapshots: WorkspaceSnapshot[]): Promise<{
77
- success: boolean;
78
- conflicts: SyncConflict<WorkspaceSnapshot>[];
79
- applied: number;
80
- }>;
81
- diffWith(other: WorkspaceSnapshot): FileDiff[];
82
- private computeHash;
83
- dispose(): void;
84
- }
85
- export interface FileDiff {
86
- path: string;
87
- type: 'added' | 'deleted' | 'modified';
88
- local?: string;
89
- remote?: string;
90
- }
91
- export declare function getWorkspaceTracker(sessionId?: string): Promise<WorkspaceStateTracker>;
92
- export declare function resetWorkspaceTracker(): void;
93
- /**
94
- * Create sync bindings for FCS runtime
95
- */
96
- export declare function createSyncBindings(config: SyncBindingsConfig, print: (msg: string) => void): Promise<Record<string, FCSValue>>;
97
- declare const _default: {
98
- createSyncBindings: typeof createSyncBindings;
99
- getWorkspaceTracker: typeof getWorkspaceTracker;
100
- resetWorkspaceTracker: typeof resetWorkspaceTracker;
101
- WorkspaceStateTracker: typeof WorkspaceStateTracker;
102
- };
103
- export default _default;
4
+ export { createSyncBindings, getWorkspaceTracker, resetWorkspaceTracker, WorkspaceStateTracker, } from '../scripting/sync-bindings.js';
5
+ export type { WorkspaceSnapshot, FileState, SessionContext, FileDiff, SyncBindingsConfig, } from '../scripting/sync-bindings.js';