skyloom 1.12.0 → 1.13.1

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 (137) hide show
  1. package/.github/workflows/ci.yml +36 -36
  2. package/README.md +137 -46
  3. package/config/default.yaml +43 -47
  4. package/config/models.yaml +155 -155
  5. package/config/providers.yaml +39 -39
  6. package/config/skills/api_integrator/SKILL.md +15 -15
  7. package/config/skills/arch_designer/SKILL.md +13 -13
  8. package/config/skills/ci_cd_manager/SKILL.md +14 -14
  9. package/config/skills/code_analysis/SKILL.md +13 -13
  10. package/config/skills/code_generator/SKILL.md +12 -12
  11. package/config/skills/code_reviewer/SKILL.md +13 -13
  12. package/config/skills/content_writer/SKILL.md +14 -14
  13. package/config/skills/data_transformer/SKILL.md +15 -15
  14. package/config/skills/document_analysis/SKILL.md +13 -13
  15. package/config/skills/emotional_companion/SKILL.md +15 -15
  16. package/config/skills/performance_checker/SKILL.md +14 -14
  17. package/config/skills/security_auditor/SKILL.md +14 -14
  18. package/config/skills/self_evolve/SKILL.md +13 -13
  19. package/config/skills/sys_operator/SKILL.md +15 -15
  20. package/config/skills/task_planner/SKILL.md +14 -14
  21. package/config/skills/web_research/SKILL.md +14 -14
  22. package/config/skills/workflow_designer/SKILL.md +13 -13
  23. package/dist/agents/dew.js +52 -52
  24. package/dist/agents/fair.js +84 -84
  25. package/dist/agents/fog.js +30 -30
  26. package/dist/agents/frost.js +32 -32
  27. package/dist/agents/rain.js +32 -32
  28. package/dist/agents/snow.js +68 -68
  29. package/dist/cli/main.js +127 -74
  30. package/dist/cli/main.js.map +1 -1
  31. package/dist/cli/tui.d.ts +52 -19
  32. package/dist/cli/tui.d.ts.map +1 -1
  33. package/dist/cli/tui.js +198 -265
  34. package/dist/cli/tui.js.map +1 -1
  35. package/dist/core/agent/task.d.ts +58 -0
  36. package/dist/core/agent/task.d.ts.map +1 -0
  37. package/dist/core/agent/task.js +83 -0
  38. package/dist/core/agent/task.js.map +1 -0
  39. package/dist/core/agent.d.ts +2 -45
  40. package/dist/core/agent.d.ts.map +1 -1
  41. package/dist/core/agent.js +61 -145
  42. package/dist/core/agent.js.map +1 -1
  43. package/dist/core/agent_helpers.d.ts +10 -0
  44. package/dist/core/agent_helpers.d.ts.map +1 -1
  45. package/dist/core/agent_helpers.js +39 -0
  46. package/dist/core/agent_helpers.js.map +1 -1
  47. package/dist/core/catalog.d.ts +71 -0
  48. package/dist/core/catalog.d.ts.map +1 -0
  49. package/dist/core/catalog.js +176 -0
  50. package/dist/core/catalog.js.map +1 -0
  51. package/dist/core/config.d.ts +8 -0
  52. package/dist/core/config.d.ts.map +1 -1
  53. package/dist/core/config.js +12 -4
  54. package/dist/core/config.js.map +1 -1
  55. package/dist/core/factory.js +16 -16
  56. package/dist/core/llm.d.ts +7 -0
  57. package/dist/core/llm.d.ts.map +1 -1
  58. package/dist/core/llm.js +139 -7
  59. package/dist/core/llm.js.map +1 -1
  60. package/dist/core/longdoc.js +5 -5
  61. package/dist/core/memory.d.ts.map +1 -1
  62. package/dist/core/memory.js +69 -62
  63. package/dist/core/memory.js.map +1 -1
  64. package/dist/core/theme.d.ts +46 -0
  65. package/dist/core/theme.d.ts.map +1 -0
  66. package/dist/core/theme.js +42 -0
  67. package/dist/core/theme.js.map +1 -0
  68. package/dist/web/server.js +542 -519
  69. package/dist/web/server.js.map +1 -1
  70. package/docs/AESTHETIC_DESIGN.md +144 -0
  71. package/docs/OPTIMIZATION_PLAN.md +178 -0
  72. package/package.json +60 -60
  73. package/scripts/install.js +48 -48
  74. package/scripts/link.js +10 -10
  75. package/setup.bat +79 -79
  76. package/skill-test-ty2fOA/test.md +10 -10
  77. package/src/agents/dew.ts +70 -70
  78. package/src/agents/fair.ts +102 -102
  79. package/src/agents/fog.ts +48 -48
  80. package/src/agents/frost.ts +50 -50
  81. package/src/agents/rain.ts +50 -50
  82. package/src/agents/snow.ts +239 -239
  83. package/src/cli/main.ts +417 -372
  84. package/src/cli/mode.ts +58 -58
  85. package/src/cli/tui.ts +174 -223
  86. package/src/core/agent/task.ts +100 -0
  87. package/src/core/agent.ts +1446 -1549
  88. package/src/core/agent_helpers.ts +496 -461
  89. package/src/core/arbitrate.ts +162 -162
  90. package/src/core/catalog.ts +178 -0
  91. package/src/core/checkpoint.ts +94 -94
  92. package/src/core/config.ts +20 -4
  93. package/src/core/estimate.ts +104 -104
  94. package/src/core/evolve.ts +191 -191
  95. package/src/core/factory.ts +627 -627
  96. package/src/core/filter.ts +103 -103
  97. package/src/core/graph.ts +156 -156
  98. package/src/core/icons.ts +53 -53
  99. package/src/core/index.ts +37 -37
  100. package/src/core/learn.ts +146 -146
  101. package/src/core/llm.ts +108 -5
  102. package/src/core/longdoc.ts +155 -155
  103. package/src/core/mcp_server.ts +176 -176
  104. package/src/core/memory.ts +1178 -1171
  105. package/src/core/profile.ts +255 -255
  106. package/src/core/router.ts +124 -124
  107. package/src/core/sandbox.ts +142 -142
  108. package/src/core/security.ts +243 -243
  109. package/src/core/skill.ts +342 -342
  110. package/src/core/theme.ts +65 -0
  111. package/src/core/tool_router.ts +193 -193
  112. package/src/core/vector.ts +152 -152
  113. package/src/core/workspace.ts +150 -150
  114. package/src/plugins/loader.ts +66 -66
  115. package/src/skills/loader.ts +46 -46
  116. package/src/sql.js.d.ts +29 -29
  117. package/src/tools/builtin.ts +380 -380
  118. package/src/tools/computer.ts +269 -269
  119. package/src/tools/delegate.ts +49 -49
  120. package/src/web/server.ts +660 -634
  121. package/src/web/tts.ts +93 -93
  122. package/tests/agent_helpers.test.ts +48 -0
  123. package/tests/bus.test.ts +121 -121
  124. package/tests/catalog.test.ts +86 -0
  125. package/tests/config.test.ts +41 -0
  126. package/tests/icons.test.ts +45 -45
  127. package/tests/memory.test.ts +147 -0
  128. package/tests/router.test.ts +86 -86
  129. package/tests/schemas.test.ts +51 -51
  130. package/tests/semantic.test.ts +83 -83
  131. package/tests/setup.ts +10 -10
  132. package/tests/skill.test.ts +172 -172
  133. package/tests/task.test.ts +60 -0
  134. package/tests/tool.test.ts +108 -108
  135. package/tests/tool_router.test.ts +71 -71
  136. package/tests/tui.test.ts +67 -0
  137. package/vitest.config.ts +17 -17
@@ -1,66 +1,66 @@
1
- /**
2
- * Plugin loader — loads external plugins that register additional tools.
3
- */
4
-
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import { ToolRegistry } from '../core/tool';
8
- import { getLogger } from '../core/logger';
9
-
10
- const log = getLogger('plugin-loader');
11
-
12
- export class PluginLoader {
13
- private toolRegistry: ToolRegistry;
14
-
15
- constructor(toolRegistry: ToolRegistry) {
16
- this.toolRegistry = toolRegistry;
17
- }
18
-
19
- /**
20
- * Load plugins from specified directories.
21
- */
22
- loadFromDirectories(directories: string[]): number {
23
- let total = 0;
24
- for (const dir of directories) {
25
- total += this.loadDirectory(dir);
26
- }
27
- return total;
28
- }
29
-
30
- /**
31
- * Load a single plugin directory.
32
- */
33
- private loadDirectory(dir: string): number {
34
- if (!fs.existsSync(dir)) {
35
- log.debug('plugin_dir_not_found', { dir });
36
- return 0;
37
- }
38
-
39
- let count = 0;
40
- try {
41
- const entries = fs.readdirSync(dir);
42
- for (const entry of entries) {
43
- const pluginPath = path.join(dir, entry);
44
- if (!fs.statSync(pluginPath).isDirectory()) continue;
45
-
46
- const pluginFile = path.join(pluginPath, 'index.js');
47
- if (!fs.existsSync(pluginFile)) continue;
48
-
49
- try {
50
- const plugin = require(pluginFile);
51
- if (typeof plugin.register === 'function') {
52
- plugin.register(this.toolRegistry);
53
- count++;
54
- log.info('plugin_loaded', { name: entry });
55
- }
56
- } catch (e) {
57
- log.warn('plugin_load_failed', { name: entry, error: String(e) });
58
- }
59
- }
60
- } catch (e) {
61
- log.warn('plugin_dir_scan_failed', { dir, error: String(e) });
62
- }
63
-
64
- return count;
65
- }
66
- }
1
+ /**
2
+ * Plugin loader — loads external plugins that register additional tools.
3
+ */
4
+
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { ToolRegistry } from '../core/tool';
8
+ import { getLogger } from '../core/logger';
9
+
10
+ const log = getLogger('plugin-loader');
11
+
12
+ export class PluginLoader {
13
+ private toolRegistry: ToolRegistry;
14
+
15
+ constructor(toolRegistry: ToolRegistry) {
16
+ this.toolRegistry = toolRegistry;
17
+ }
18
+
19
+ /**
20
+ * Load plugins from specified directories.
21
+ */
22
+ loadFromDirectories(directories: string[]): number {
23
+ let total = 0;
24
+ for (const dir of directories) {
25
+ total += this.loadDirectory(dir);
26
+ }
27
+ return total;
28
+ }
29
+
30
+ /**
31
+ * Load a single plugin directory.
32
+ */
33
+ private loadDirectory(dir: string): number {
34
+ if (!fs.existsSync(dir)) {
35
+ log.debug('plugin_dir_not_found', { dir });
36
+ return 0;
37
+ }
38
+
39
+ let count = 0;
40
+ try {
41
+ const entries = fs.readdirSync(dir);
42
+ for (const entry of entries) {
43
+ const pluginPath = path.join(dir, entry);
44
+ if (!fs.statSync(pluginPath).isDirectory()) continue;
45
+
46
+ const pluginFile = path.join(pluginPath, 'index.js');
47
+ if (!fs.existsSync(pluginFile)) continue;
48
+
49
+ try {
50
+ const plugin = require(pluginFile);
51
+ if (typeof plugin.register === 'function') {
52
+ plugin.register(this.toolRegistry);
53
+ count++;
54
+ log.info('plugin_loaded', { name: entry });
55
+ }
56
+ } catch (e) {
57
+ log.warn('plugin_load_failed', { name: entry, error: String(e) });
58
+ }
59
+ }
60
+ } catch (e) {
61
+ log.warn('plugin_dir_scan_failed', { dir, error: String(e) });
62
+ }
63
+
64
+ return count;
65
+ }
66
+ }
@@ -1,46 +1,46 @@
1
- /**
2
- * Skill loader — registers all built-in skills from skill definition files.
3
- */
4
-
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import { SkillRegistry } from '../core/skill';
8
- import { getLogger } from '../core/logger';
9
-
10
- const log = getLogger('skills-loader');
11
-
12
- // Built-in skill directories to scan
13
- const BUILTIN_SKILL_DIRS = [
14
- path.join(__dirname, '..', '..', 'config', 'skills'),
15
- path.join(__dirname, '..', '..', 'assets', 'builtin_skills'),
16
- ];
17
-
18
- /**
19
- * Register all available skills from built-in directories.
20
- */
21
- export function registerAllSkills(registry: SkillRegistry): void {
22
- for (const dir of BUILTIN_SKILL_DIRS) {
23
- if (!fs.existsSync(dir)) continue;
24
-
25
- try {
26
- const entries = fs.readdirSync(dir);
27
- for (const entry of entries) {
28
- const skillDir = path.join(dir, entry);
29
- if (!fs.statSync(skillDir).isDirectory()) continue;
30
-
31
- const skillFile = path.join(skillDir, 'SKILL.md');
32
- if (!fs.existsSync(skillFile)) continue;
33
-
34
- const skill = registry.loadSkillsFromDirectory(skillDir);
35
- if (skill.length > 0) {
36
- log.debug('registered_skill', { name: entry, file: skillFile });
37
- }
38
- }
39
- } catch (e) {
40
- log.warn('skill_load_failed', { dir, error: String(e) });
41
- }
42
- }
43
-
44
- const count = registry.listNames().length;
45
- log.info('skills_loaded', { count });
46
- }
1
+ /**
2
+ * Skill loader — registers all built-in skills from skill definition files.
3
+ */
4
+
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { SkillRegistry } from '../core/skill';
8
+ import { getLogger } from '../core/logger';
9
+
10
+ const log = getLogger('skills-loader');
11
+
12
+ // Built-in skill directories to scan
13
+ const BUILTIN_SKILL_DIRS = [
14
+ path.join(__dirname, '..', '..', 'config', 'skills'),
15
+ path.join(__dirname, '..', '..', 'assets', 'builtin_skills'),
16
+ ];
17
+
18
+ /**
19
+ * Register all available skills from built-in directories.
20
+ */
21
+ export function registerAllSkills(registry: SkillRegistry): void {
22
+ for (const dir of BUILTIN_SKILL_DIRS) {
23
+ if (!fs.existsSync(dir)) continue;
24
+
25
+ try {
26
+ const entries = fs.readdirSync(dir);
27
+ for (const entry of entries) {
28
+ const skillDir = path.join(dir, entry);
29
+ if (!fs.statSync(skillDir).isDirectory()) continue;
30
+
31
+ const skillFile = path.join(skillDir, 'SKILL.md');
32
+ if (!fs.existsSync(skillFile)) continue;
33
+
34
+ const skill = registry.loadSkillsFromDirectory(skillDir);
35
+ if (skill.length > 0) {
36
+ log.debug('registered_skill', { name: entry, file: skillFile });
37
+ }
38
+ }
39
+ } catch (e) {
40
+ log.warn('skill_load_failed', { dir, error: String(e) });
41
+ }
42
+ }
43
+
44
+ const count = registry.listNames().length;
45
+ log.info('skills_loaded', { count });
46
+ }
package/src/sql.js.d.ts CHANGED
@@ -1,29 +1,29 @@
1
- declare module 'sql.js' {
2
- interface SqlJsStatic {
3
- Database: new (data?: ArrayLike<number> | Buffer | null) => Database;
4
- }
5
-
6
- interface QueryExecResult {
7
- columns: string[];
8
- values: any[][];
9
- }
10
-
11
- interface Statement {
12
- bind(params?: any[]): boolean;
13
- step(): boolean;
14
- getAsObject(params?: object): Record<string, any>;
15
- free(): boolean;
16
- }
17
-
18
- interface Database {
19
- run(sql: string, params?: any[]): Database;
20
- exec(sql: string): QueryExecResult[];
21
- prepare(sql: string): Statement;
22
- export(): Uint8Array;
23
- close(): void;
24
- }
25
-
26
- export type { Database, SqlJsStatic, Statement };
27
-
28
- export default function initSqlJs(opts?: any): Promise<SqlJsStatic>;
29
- }
1
+ declare module 'sql.js' {
2
+ interface SqlJsStatic {
3
+ Database: new (data?: ArrayLike<number> | Buffer | null) => Database;
4
+ }
5
+
6
+ interface QueryExecResult {
7
+ columns: string[];
8
+ values: any[][];
9
+ }
10
+
11
+ interface Statement {
12
+ bind(params?: any[]): boolean;
13
+ step(): boolean;
14
+ getAsObject(params?: object): Record<string, any>;
15
+ free(): boolean;
16
+ }
17
+
18
+ interface Database {
19
+ run(sql: string, params?: any[]): Database;
20
+ exec(sql: string): QueryExecResult[];
21
+ prepare(sql: string): Statement;
22
+ export(): Uint8Array;
23
+ close(): void;
24
+ }
25
+
26
+ export type { Database, SqlJsStatic, Statement };
27
+
28
+ export default function initSqlJs(opts?: any): Promise<SqlJsStatic>;
29
+ }