@radkode/neo 1.4.0 → 1.7.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 (121) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +15 -112
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/ai/index.d.ts +3 -0
  5. package/dist/commands/ai/index.d.ts.map +1 -0
  6. package/dist/commands/ai/index.js +21 -0
  7. package/dist/commands/ai/index.js.map +1 -0
  8. package/dist/commands/ai/pr/index.d.ts +19 -0
  9. package/dist/commands/ai/pr/index.d.ts.map +1 -0
  10. package/dist/commands/ai/pr/index.js +225 -0
  11. package/dist/commands/ai/pr/index.js.map +1 -0
  12. package/dist/commands/doctor/index.d.ts +16 -0
  13. package/dist/commands/doctor/index.d.ts.map +1 -0
  14. package/dist/commands/doctor/index.js +313 -0
  15. package/dist/commands/doctor/index.js.map +1 -0
  16. package/dist/commands/git/push/index.d.ts.map +1 -1
  17. package/dist/commands/git/push/index.js +3 -0
  18. package/dist/commands/git/push/index.js.map +1 -1
  19. package/dist/commands/index.d.ts +3 -0
  20. package/dist/commands/index.d.ts.map +1 -1
  21. package/dist/commands/index.js +9 -0
  22. package/dist/commands/index.js.map +1 -1
  23. package/dist/commands/init/index.d.ts.map +1 -1
  24. package/dist/commands/init/index.js +29 -0
  25. package/dist/commands/init/index.js.map +1 -1
  26. package/dist/commands/work/finish/index.d.ts +22 -0
  27. package/dist/commands/work/finish/index.d.ts.map +1 -0
  28. package/dist/commands/work/finish/index.js +306 -0
  29. package/dist/commands/work/finish/index.js.map +1 -0
  30. package/dist/commands/work/index.d.ts +3 -0
  31. package/dist/commands/work/index.d.ts.map +1 -0
  32. package/dist/commands/work/index.js +33 -0
  33. package/dist/commands/work/index.js.map +1 -0
  34. package/dist/commands/work/ship/index.d.ts +27 -0
  35. package/dist/commands/work/ship/index.d.ts.map +1 -0
  36. package/dist/commands/work/ship/index.js +361 -0
  37. package/dist/commands/work/ship/index.js.map +1 -0
  38. package/dist/commands/work/start/index.d.ts +17 -0
  39. package/dist/commands/work/start/index.d.ts.map +1 -0
  40. package/dist/commands/work/start/index.js +250 -0
  41. package/dist/commands/work/start/index.js.map +1 -0
  42. package/dist/core/errors/index.d.ts +7 -129
  43. package/dist/core/errors/index.d.ts.map +1 -1
  44. package/dist/core/errors/index.js +0 -233
  45. package/dist/core/errors/index.js.map +1 -1
  46. package/dist/services/ai/index.d.ts +9 -1
  47. package/dist/services/ai/index.d.ts.map +1 -1
  48. package/dist/services/ai/index.js +23 -3
  49. package/dist/services/ai/index.js.map +1 -1
  50. package/dist/services/ai/pr-prompts.d.ts +17 -0
  51. package/dist/services/ai/pr-prompts.d.ts.map +1 -0
  52. package/dist/services/ai/pr-prompts.js +68 -0
  53. package/dist/services/ai/pr-prompts.js.map +1 -0
  54. package/dist/services/ai/prompts.d.ts +3 -2
  55. package/dist/services/ai/prompts.d.ts.map +1 -1
  56. package/dist/services/ai/prompts.js.map +1 -1
  57. package/dist/storage/db.d.ts +5 -3
  58. package/dist/storage/db.d.ts.map +1 -1
  59. package/dist/storage/db.js +87 -120
  60. package/dist/storage/db.js.map +1 -1
  61. package/dist/types/agent.d.ts +0 -8
  62. package/dist/types/agent.d.ts.map +1 -1
  63. package/dist/types/schemas.d.ts +1 -0
  64. package/dist/types/schemas.d.ts.map +1 -1
  65. package/dist/types/schemas.js +1 -0
  66. package/dist/types/schemas.js.map +1 -1
  67. package/dist/utils/agent.js +1 -1
  68. package/dist/utils/agent.js.map +1 -1
  69. package/dist/utils/config.d.ts +0 -6
  70. package/dist/utils/config.d.ts.map +1 -1
  71. package/dist/utils/config.js +0 -8
  72. package/dist/utils/config.js.map +1 -1
  73. package/dist/utils/logger.d.ts +8 -2
  74. package/dist/utils/logger.d.ts.map +1 -1
  75. package/dist/utils/logger.js +8 -1
  76. package/dist/utils/logger.js.map +1 -1
  77. package/dist/utils/prompt.d.ts.map +1 -1
  78. package/dist/utils/prompt.js +15 -11
  79. package/dist/utils/prompt.js.map +1 -1
  80. package/dist/utils/skill-installer.d.ts +10 -0
  81. package/dist/utils/skill-installer.d.ts.map +1 -0
  82. package/dist/utils/skill-installer.js +56 -0
  83. package/dist/utils/skill-installer.js.map +1 -0
  84. package/package.json +6 -13
  85. package/templates/skills/neo/SKILL.md +66 -0
  86. package/dist/core/container/index.d.ts +0 -27
  87. package/dist/core/container/index.d.ts.map +0 -1
  88. package/dist/core/container/index.js +0 -90
  89. package/dist/core/container/index.js.map +0 -1
  90. package/dist/core/interfaces/index.d.ts +0 -324
  91. package/dist/core/interfaces/index.d.ts.map +0 -1
  92. package/dist/core/interfaces/index.js +0 -19
  93. package/dist/core/interfaces/index.js.map +0 -1
  94. package/dist/core/plugins/command-registry.d.ts +0 -16
  95. package/dist/core/plugins/command-registry.d.ts.map +0 -1
  96. package/dist/core/plugins/command-registry.js +0 -40
  97. package/dist/core/plugins/command-registry.js.map +0 -1
  98. package/dist/core/plugins/event-bus.d.ts +0 -12
  99. package/dist/core/plugins/event-bus.d.ts.map +0 -1
  100. package/dist/core/plugins/event-bus.js +0 -56
  101. package/dist/core/plugins/event-bus.js.map +0 -1
  102. package/dist/core/plugins/index.d.ts +0 -6
  103. package/dist/core/plugins/index.d.ts.map +0 -1
  104. package/dist/core/plugins/index.js +0 -6
  105. package/dist/core/plugins/index.js.map +0 -1
  106. package/dist/core/plugins/plugin-context.d.ts +0 -3
  107. package/dist/core/plugins/plugin-context.d.ts.map +0 -1
  108. package/dist/core/plugins/plugin-context.js +0 -116
  109. package/dist/core/plugins/plugin-context.js.map +0 -1
  110. package/dist/core/plugins/plugin-loader.d.ts +0 -30
  111. package/dist/core/plugins/plugin-loader.d.ts.map +0 -1
  112. package/dist/core/plugins/plugin-loader.js +0 -149
  113. package/dist/core/plugins/plugin-loader.js.map +0 -1
  114. package/dist/core/plugins/plugin-registry.d.ts +0 -21
  115. package/dist/core/plugins/plugin-registry.d.ts.map +0 -1
  116. package/dist/core/plugins/plugin-registry.js +0 -150
  117. package/dist/core/plugins/plugin-registry.js.map +0 -1
  118. package/dist/utils/ui-examples.d.ts +0 -3
  119. package/dist/utils/ui-examples.d.ts.map +0 -1
  120. package/dist/utils/ui-examples.js +0 -188
  121. package/dist/utils/ui-examples.js.map +0 -1
@@ -1,116 +0,0 @@
1
- import { logger } from '../../utils/logger.js';
2
- import { configManager } from '../../utils/config.js';
3
- import { eventBus } from './event-bus.js';
4
- import { commandRegistry } from './command-registry.js';
5
- import { success, failure, PluginError } from '../errors/index.js';
6
- import packageJson from '../../../package.json' with { type: 'json' };
7
- class ConfigurationAdapter {
8
- cache = null;
9
- dirty = false;
10
- get(key) {
11
- if (!this.cache) {
12
- return undefined;
13
- }
14
- const keys = key.split('.');
15
- let value = this.cache;
16
- for (const k of keys) {
17
- if (value === null || value === undefined || typeof value !== 'object') {
18
- return undefined;
19
- }
20
- value = value[k];
21
- }
22
- return value;
23
- }
24
- set(key, value) {
25
- if (!this.cache) {
26
- this.cache = {};
27
- }
28
- const keys = key.split('.');
29
- let current = this.cache;
30
- for (let i = 0; i < keys.length - 1; i++) {
31
- const k = keys[i];
32
- if (!(k in current) || typeof current[k] !== 'object') {
33
- current[k] = {};
34
- }
35
- current = current[k];
36
- }
37
- const lastKey = keys[keys.length - 1];
38
- if (lastKey !== undefined) {
39
- current[lastKey] = value;
40
- }
41
- this.dirty = true;
42
- }
43
- has(key) {
44
- return this.get(key) !== undefined;
45
- }
46
- delete(key) {
47
- if (!this.cache)
48
- return;
49
- const keys = key.split('.');
50
- let current = this.cache;
51
- for (let i = 0; i < keys.length - 1; i++) {
52
- const k = keys[i];
53
- if (!(k in current) || typeof current[k] !== 'object') {
54
- return;
55
- }
56
- current = current[k];
57
- }
58
- const lastKey = keys[keys.length - 1];
59
- if (lastKey !== undefined) {
60
- delete current[lastKey];
61
- }
62
- this.dirty = true;
63
- }
64
- clear() {
65
- this.cache = {};
66
- this.dirty = true;
67
- }
68
- getAll() {
69
- return this.cache ?? {};
70
- }
71
- validate() {
72
- return success(undefined);
73
- }
74
- async save() {
75
- if (!this.cache) {
76
- return failure(new PluginError('No configuration to save', 'config'));
77
- }
78
- try {
79
- await configManager.write(this.cache);
80
- this.dirty = false;
81
- return success(undefined);
82
- }
83
- catch (error) {
84
- const options = error instanceof Error ? { originalError: error } : undefined;
85
- return failure(new PluginError(`Failed to save configuration: ${error}`, 'config', options));
86
- }
87
- }
88
- async load() {
89
- try {
90
- this.cache = await configManager.read();
91
- this.dirty = false;
92
- return success(undefined);
93
- }
94
- catch (error) {
95
- const options = error instanceof Error ? { originalError: error } : undefined;
96
- return failure(new PluginError(`Failed to load configuration: ${error}`, 'config', options));
97
- }
98
- }
99
- isDirty() {
100
- return this.dirty;
101
- }
102
- }
103
- export function createPluginContext() {
104
- const config = new ConfigurationAdapter();
105
- configManager.read().then((neoConfig) => {
106
- config.cache = neoConfig;
107
- });
108
- return {
109
- version: packageJson.version,
110
- config,
111
- logger,
112
- eventBus,
113
- commandRegistry,
114
- };
115
- }
116
- //# sourceMappingURL=plugin-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-context.js","sourceRoot":"","sources":["../../../src/core/plugins/plugin-context.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { IPlugin } from '../interfaces/index.js';
2
- export interface PluginManifest {
3
- name: string;
4
- version: string;
5
- description?: string;
6
- main?: string;
7
- author?: string;
8
- homepage?: string;
9
- neo?: {
10
- minVersion?: string;
11
- enabled?: boolean;
12
- };
13
- }
14
- export interface LoadedPlugin {
15
- manifest: PluginManifest;
16
- plugin: IPlugin;
17
- path: string;
18
- }
19
- export declare class PluginLoader {
20
- private readonly pluginsDir;
21
- constructor(pluginsDir?: string);
22
- getPluginsDir(): string;
23
- pluginsDirExists(): Promise<boolean>;
24
- discoverPlugins(): Promise<PluginManifest[]>;
25
- loadPlugin(manifest: PluginManifest): Promise<LoadedPlugin>;
26
- loadAllPlugins(disabledPlugins?: string[]): Promise<Map<string, LoadedPlugin>>;
27
- private isValidPlugin;
28
- }
29
- export declare const pluginLoader: PluginLoader;
30
- //# sourceMappingURL=plugin-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/plugin-loader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAO1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAKD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,CAAC,EAAE,MAAM;IAO/B,aAAa,IAAI,MAAM;IAOjB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYpC,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA6C5C,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IA6E3D,cAAc,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IA+BxF,OAAO,CAAC,aAAa;CAWtB;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -1,149 +0,0 @@
1
- import { access, readdir, readFile } from 'fs/promises';
2
- import { constants } from 'fs';
3
- import { join } from 'path';
4
- import { homedir } from 'os';
5
- import { pathToFileURL } from 'url';
6
- import { PluginError } from '../errors/index.js';
7
- import { logger } from '../../utils/logger.js';
8
- export class PluginLoader {
9
- pluginsDir;
10
- constructor(pluginsDir) {
11
- this.pluginsDir = pluginsDir ?? join(homedir(), '.config', 'neo', 'plugins');
12
- }
13
- getPluginsDir() {
14
- return this.pluginsDir;
15
- }
16
- async pluginsDirExists() {
17
- try {
18
- await access(this.pluginsDir, constants.F_OK);
19
- return true;
20
- }
21
- catch {
22
- return false;
23
- }
24
- }
25
- async discoverPlugins() {
26
- const exists = await this.pluginsDirExists();
27
- if (!exists) {
28
- logger.debug(`Plugins directory does not exist: ${this.pluginsDir}`);
29
- return [];
30
- }
31
- const manifests = [];
32
- const entries = await readdir(this.pluginsDir, { withFileTypes: true });
33
- for (const entry of entries) {
34
- if (!entry.isDirectory())
35
- continue;
36
- const pluginDir = join(this.pluginsDir, entry.name);
37
- const manifestPath = join(pluginDir, 'package.json');
38
- try {
39
- await access(manifestPath, constants.F_OK);
40
- const content = await readFile(manifestPath, 'utf-8');
41
- const manifest = JSON.parse(content);
42
- if (!manifest.name || !manifest.version) {
43
- logger.warn(`Invalid plugin manifest in ${entry.name}: missing name or version`);
44
- continue;
45
- }
46
- if (manifest.neo?.enabled === false) {
47
- logger.debug(`Plugin "${manifest.name}" is disabled in manifest`);
48
- continue;
49
- }
50
- manifests.push(manifest);
51
- logger.debug(`Discovered plugin: ${manifest.name}@${manifest.version}`);
52
- }
53
- catch (error) {
54
- logger.debug(`Skipping ${entry.name}: ${error}`);
55
- }
56
- }
57
- return manifests;
58
- }
59
- async loadPlugin(manifest) {
60
- const pluginDir = join(this.pluginsDir, manifest.name);
61
- const entryPoint = manifest.main ?? 'index.js';
62
- const modulePath = join(pluginDir, entryPoint);
63
- try {
64
- await access(modulePath, constants.F_OK);
65
- }
66
- catch {
67
- throw new PluginError(`Plugin entry point not found: ${entryPoint}`, manifest.name, {
68
- suggestions: [
69
- `Ensure ${entryPoint} exists in the plugin directory`,
70
- 'Check the "main" field in package.json',
71
- ],
72
- });
73
- }
74
- try {
75
- const moduleUrl = pathToFileURL(modulePath).href;
76
- const module = await import(moduleUrl);
77
- const plugin = module.default;
78
- if (!this.isValidPlugin(plugin)) {
79
- throw new PluginError('Invalid plugin export: missing required properties', manifest.name, {
80
- suggestions: [
81
- 'Ensure the plugin has a default export',
82
- 'The export must implement the IPlugin interface',
83
- 'Required: name, version, initialize()',
84
- ],
85
- });
86
- }
87
- return {
88
- manifest,
89
- plugin,
90
- path: pluginDir,
91
- };
92
- }
93
- catch (error) {
94
- if (error instanceof PluginError)
95
- throw error;
96
- const options = error instanceof Error
97
- ? {
98
- originalError: error,
99
- suggestions: [
100
- 'Check that the plugin is a valid ESM module',
101
- 'Ensure all dependencies are installed',
102
- 'Verify the plugin code has no syntax errors',
103
- ],
104
- }
105
- : {
106
- suggestions: [
107
- 'Check that the plugin is a valid ESM module',
108
- 'Ensure all dependencies are installed',
109
- 'Verify the plugin code has no syntax errors',
110
- ],
111
- };
112
- throw new PluginError(`Failed to load plugin: ${error instanceof Error ? error.message : String(error)}`, manifest.name, options);
113
- }
114
- }
115
- async loadAllPlugins(disabledPlugins = []) {
116
- const plugins = new Map();
117
- const manifests = await this.discoverPlugins();
118
- for (const manifest of manifests) {
119
- if (disabledPlugins.includes(manifest.name)) {
120
- logger.debug(`Plugin "${manifest.name}" is disabled in configuration`);
121
- continue;
122
- }
123
- try {
124
- const loaded = await this.loadPlugin(manifest);
125
- plugins.set(manifest.name, loaded);
126
- logger.debug(`Loaded plugin: ${manifest.name}@${manifest.version}`);
127
- }
128
- catch (error) {
129
- if (error instanceof PluginError) {
130
- logger.warn(`Failed to load plugin "${manifest.name}": ${error.message}`);
131
- }
132
- else {
133
- logger.warn(`Failed to load plugin "${manifest.name}": ${error}`);
134
- }
135
- }
136
- }
137
- return plugins;
138
- }
139
- isValidPlugin(obj) {
140
- if (!obj || typeof obj !== 'object')
141
- return false;
142
- const plugin = obj;
143
- return (typeof plugin['name'] === 'string' &&
144
- typeof plugin['version'] === 'string' &&
145
- typeof plugin['initialize'] === 'function');
146
- }
147
- }
148
- export const pluginLoader = new PluginLoader();
149
- //# sourceMappingURL=plugin-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../../src/core/plugins/plugin-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA8B3C,MAAM,OAAO,YAAY;IACN,UAAU,CAAS;IAEpC,YAAY,UAAmB;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAKD,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAqB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAErD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;gBAEvD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAC,IAAI,2BAA2B,CAAC,CAAC;oBACjF,SAAS;gBACX,CAAC;gBAGD,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,2BAA2B,CAAC,CAAC;oBAClE,SAAS;gBACX,CAAC;gBAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAKD,KAAK,CAAC,UAAU,CAAC,QAAwB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,WAAW,CACnB,iCAAiC,UAAU,EAAE,EAC7C,QAAQ,CAAC,IAAI,EACb;gBACE,WAAW,EAAE;oBACX,UAAU,UAAU,iCAAiC;oBACrD,wCAAwC;iBACzC;aACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YAEH,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAkB,CAAC;YAEzC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,WAAW,CACnB,oDAAoD,EACpD,QAAQ,CAAC,IAAI,EACb;oBACE,WAAW,EAAE;wBACX,wCAAwC;wBACxC,iDAAiD;wBACjD,uCAAuC;qBACxC;iBACF,CACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,QAAQ;gBACR,MAAM;gBACN,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW;gBAAE,MAAM,KAAK,CAAC;YAE9C,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC;oBACE,aAAa,EAAE,KAAK;oBACpB,WAAW,EAAE;wBACX,6CAA6C;wBAC7C,uCAAuC;wBACvC,6CAA6C;qBAC9C;iBACF;gBACH,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,6CAA6C;wBAC7C,uCAAuC;wBACvC,6CAA6C;qBAC9C;iBACF,CAAC;YAER,MAAM,IAAI,WAAW,CACnB,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClF,QAAQ,CAAC,IAAI,EACb,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,kBAA4B,EAAE;QACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAEjC,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,gCAAgC,CAAC,CAAC;gBACvE,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC;gBACpE,CAAC;YAEH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAKO,aAAa,CAAC,GAAY;QAChC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAElD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAE9C,OAAO,CACL,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ;YAClC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ;YACrC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,UAAU,CAC3C,CAAC;IACJ,CAAC;CACF;AAGD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { IPlugin } from '../interfaces/index.js';
2
- import type { Result } from '../errors/index.js';
3
- import { type LoadedPlugin } from './plugin-loader.js';
4
- export declare class PluginRegistry {
5
- private plugins;
6
- registerPlugin(loaded: LoadedPlugin): void;
7
- initializeAll(): Promise<void>;
8
- disposeAll(): Promise<void>;
9
- getPlugin(name: string): IPlugin | undefined;
10
- getLoadedPlugins(): IPlugin[];
11
- getInitializedPlugins(): IPlugin[];
12
- executeBeforeCommand(commandName: string, options: unknown): Promise<void>;
13
- executeAfterCommand(commandName: string, result: Result<void>): Promise<void>;
14
- executeOnError(error: Error): Promise<void>;
15
- executeOnExit(code: number): Promise<void>;
16
- loadPlugins(disabledPlugins?: string[]): Promise<void>;
17
- get size(): number;
18
- clear(): void;
19
- }
20
- export declare const pluginRegistry: PluginRegistry;
21
- //# sourceMappingURL=plugin-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/plugin-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAuBrE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA4C;IAK3D,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAkBpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAO5C,gBAAgB,IAAI,OAAO,EAAE;IAO7B,qBAAqB,IAAI,OAAO,EAAE;IAS5B,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1E,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7E,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C,WAAW,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAKD,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -1,150 +0,0 @@
1
- import { logger } from '../../utils/logger.js';
2
- import { createPluginContext } from './plugin-context.js';
3
- import { pluginLoader } from './plugin-loader.js';
4
- import { commandRegistry } from './command-registry.js';
5
- var PluginState;
6
- (function (PluginState) {
7
- PluginState["LOADED"] = "loaded";
8
- PluginState["INITIALIZED"] = "initialized";
9
- PluginState["ERROR"] = "error";
10
- PluginState["DISPOSED"] = "disposed";
11
- })(PluginState || (PluginState = {}));
12
- export class PluginRegistry {
13
- plugins = new Map();
14
- registerPlugin(loaded) {
15
- if (this.plugins.has(loaded.plugin.name)) {
16
- logger.warn(`Plugin "${loaded.plugin.name}" is already registered`);
17
- return;
18
- }
19
- this.plugins.set(loaded.plugin.name, {
20
- plugin: loaded.plugin,
21
- state: PluginState.LOADED,
22
- path: loaded.path,
23
- });
24
- logger.debug(`Registered plugin: ${loaded.plugin.name}`);
25
- }
26
- async initializeAll() {
27
- const context = createPluginContext();
28
- await context.config.load();
29
- for (const [name, registered] of this.plugins) {
30
- if (registered.state !== PluginState.LOADED)
31
- continue;
32
- try {
33
- await registered.plugin.initialize(context);
34
- registered.state = PluginState.INITIALIZED;
35
- if (registered.plugin.commands) {
36
- for (const command of registered.plugin.commands) {
37
- try {
38
- commandRegistry.register(command, {
39
- name: command.name,
40
- description: command.description,
41
- group: name,
42
- });
43
- logger.debug(`Registered command "${command.name}" from plugin "${name}"`);
44
- }
45
- catch (error) {
46
- logger.warn(`Failed to register command "${command.name}": ${error}`);
47
- }
48
- }
49
- }
50
- logger.debug(`Initialized plugin: ${name}`);
51
- }
52
- catch (error) {
53
- registered.state = PluginState.ERROR;
54
- registered.error = error instanceof Error ? error : new Error(String(error));
55
- logger.warn(`Failed to initialize plugin "${name}": ${error}`);
56
- }
57
- }
58
- }
59
- async disposeAll() {
60
- for (const [name, registered] of this.plugins) {
61
- if (registered.state !== PluginState.INITIALIZED)
62
- continue;
63
- try {
64
- if (registered.plugin.dispose) {
65
- await registered.plugin.dispose();
66
- }
67
- registered.state = PluginState.DISPOSED;
68
- logger.debug(`Disposed plugin: ${name}`);
69
- }
70
- catch (error) {
71
- logger.warn(`Error disposing plugin "${name}": ${error}`);
72
- }
73
- }
74
- commandRegistry.clear();
75
- }
76
- getPlugin(name) {
77
- return this.plugins.get(name)?.plugin;
78
- }
79
- getLoadedPlugins() {
80
- return Array.from(this.plugins.values()).map((r) => r.plugin);
81
- }
82
- getInitializedPlugins() {
83
- return Array.from(this.plugins.values())
84
- .filter((r) => r.state === PluginState.INITIALIZED)
85
- .map((r) => r.plugin);
86
- }
87
- async executeBeforeCommand(commandName, options) {
88
- for (const plugin of this.getInitializedPlugins()) {
89
- if (!plugin.hooks?.beforeCommand)
90
- continue;
91
- try {
92
- await plugin.hooks.beforeCommand(commandName, options);
93
- }
94
- catch (error) {
95
- logger.debug(`Plugin "${plugin.name}" beforeCommand hook error: ${error}`);
96
- }
97
- }
98
- }
99
- async executeAfterCommand(commandName, result) {
100
- for (const plugin of this.getInitializedPlugins()) {
101
- if (!plugin.hooks?.afterCommand)
102
- continue;
103
- try {
104
- await plugin.hooks.afterCommand(commandName, result);
105
- }
106
- catch (error) {
107
- logger.debug(`Plugin "${plugin.name}" afterCommand hook error: ${error}`);
108
- }
109
- }
110
- }
111
- async executeOnError(error) {
112
- for (const plugin of this.getInitializedPlugins()) {
113
- if (!plugin.hooks?.onError)
114
- continue;
115
- try {
116
- await plugin.hooks.onError(error);
117
- }
118
- catch (hookError) {
119
- logger.debug(`Plugin "${plugin.name}" onError hook error: ${hookError}`);
120
- }
121
- }
122
- }
123
- async executeOnExit(code) {
124
- for (const plugin of this.getInitializedPlugins()) {
125
- if (!plugin.hooks?.onExit)
126
- continue;
127
- try {
128
- await plugin.hooks.onExit(code);
129
- }
130
- catch (error) {
131
- logger.debug(`Plugin "${plugin.name}" onExit hook error: ${error}`);
132
- }
133
- }
134
- }
135
- async loadPlugins(disabledPlugins = []) {
136
- const loaded = await pluginLoader.loadAllPlugins(disabledPlugins);
137
- for (const [, loadedPlugin] of loaded) {
138
- this.registerPlugin(loadedPlugin);
139
- }
140
- await this.initializeAll();
141
- }
142
- get size() {
143
- return this.plugins.size;
144
- }
145
- clear() {
146
- this.plugins.clear();
147
- }
148
- }
149
- export const pluginRegistry = new PluginRegistry();
150
- //# sourceMappingURL=plugin-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../../src/core/plugins/plugin-registry.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env tsx
2
- export {};
3
- //# sourceMappingURL=ui-examples.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-examples.d.ts","sourceRoot":"","sources":["../../src/utils/ui-examples.ts"],"names":[],"mappings":""}