@sylphx/flow 1.0.1 → 1.0.3
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/CHANGELOG.md +12 -0
- package/package.json +10 -9
- package/src/commands/codebase-command.ts +168 -0
- package/src/commands/flow-command.ts +1137 -0
- package/src/commands/flow-orchestrator.ts +296 -0
- package/src/commands/hook-command.ts +444 -0
- package/src/commands/init-command.ts +92 -0
- package/src/commands/init-core.ts +322 -0
- package/src/commands/knowledge-command.ts +161 -0
- package/src/commands/run-command.ts +120 -0
- package/src/components/benchmark-monitor.tsx +331 -0
- package/src/components/reindex-progress.tsx +261 -0
- package/src/composables/functional/index.ts +14 -0
- package/src/composables/functional/useEnvironment.ts +171 -0
- package/src/composables/functional/useFileSystem.ts +139 -0
- package/src/composables/index.ts +5 -0
- package/src/composables/useEnv.ts +13 -0
- package/src/composables/useRuntimeConfig.ts +27 -0
- package/src/composables/useTargetConfig.ts +45 -0
- package/src/config/ai-config.ts +376 -0
- package/src/config/constants.ts +35 -0
- package/src/config/index.ts +27 -0
- package/src/config/rules.ts +43 -0
- package/src/config/servers.ts +371 -0
- package/src/config/targets.ts +126 -0
- package/src/core/agent-loader.ts +141 -0
- package/src/core/agent-manager.ts +174 -0
- package/src/core/ai-sdk.ts +603 -0
- package/src/core/app-factory.ts +381 -0
- package/src/core/builtin-agents.ts +9 -0
- package/src/core/command-system.ts +550 -0
- package/src/core/config-system.ts +550 -0
- package/src/core/connection-pool.ts +390 -0
- package/src/core/di-container.ts +155 -0
- package/src/core/error-handling.ts +519 -0
- package/src/core/formatting/bytes.test.ts +115 -0
- package/src/core/formatting/bytes.ts +64 -0
- package/src/core/functional/async.ts +313 -0
- package/src/core/functional/either.ts +109 -0
- package/src/core/functional/error-handler.ts +135 -0
- package/src/core/functional/error-types.ts +311 -0
- package/src/core/functional/index.ts +19 -0
- package/src/core/functional/option.ts +142 -0
- package/src/core/functional/pipe.ts +189 -0
- package/src/core/functional/result.ts +204 -0
- package/src/core/functional/validation.ts +138 -0
- package/src/core/headless-display.ts +96 -0
- package/src/core/index.ts +6 -0
- package/src/core/installers/file-installer.ts +303 -0
- package/src/core/installers/mcp-installer.ts +213 -0
- package/src/core/interfaces/index.ts +22 -0
- package/src/core/interfaces/repository.interface.ts +91 -0
- package/src/core/interfaces/service.interface.ts +133 -0
- package/src/core/interfaces.ts +129 -0
- package/src/core/loop-controller.ts +200 -0
- package/src/core/result.ts +351 -0
- package/src/core/rule-loader.ts +147 -0
- package/src/core/rule-manager.ts +240 -0
- package/src/core/service-config.ts +252 -0
- package/src/core/session-service.ts +121 -0
- package/src/core/state-detector.ts +389 -0
- package/src/core/storage-factory.ts +115 -0
- package/src/core/stream-handler.ts +288 -0
- package/src/core/target-manager.ts +161 -0
- package/src/core/type-utils.ts +427 -0
- package/src/core/unified-storage.ts +456 -0
- package/src/core/upgrade-manager.ts +300 -0
- package/src/core/validation/limit.test.ts +155 -0
- package/src/core/validation/limit.ts +46 -0
- package/src/core/validation/query.test.ts +44 -0
- package/src/core/validation/query.ts +20 -0
- package/src/db/auto-migrate.ts +322 -0
- package/src/db/base-database-client.ts +144 -0
- package/src/db/cache-db.ts +218 -0
- package/src/db/cache-schema.ts +75 -0
- package/src/db/database.ts +70 -0
- package/src/db/index.ts +252 -0
- package/src/db/memory-db.ts +153 -0
- package/src/db/memory-schema.ts +29 -0
- package/src/db/schema.ts +289 -0
- package/src/db/session-repository.ts +733 -0
- package/src/domains/codebase/index.ts +5 -0
- package/src/domains/codebase/tools.ts +139 -0
- package/src/domains/index.ts +8 -0
- package/src/domains/knowledge/index.ts +10 -0
- package/src/domains/knowledge/resources.ts +537 -0
- package/src/domains/knowledge/tools.ts +174 -0
- package/src/domains/utilities/index.ts +6 -0
- package/src/domains/utilities/time/index.ts +5 -0
- package/src/domains/utilities/time/tools.ts +291 -0
- package/src/index.ts +211 -0
- package/src/services/agent-service.ts +273 -0
- package/src/services/claude-config-service.ts +252 -0
- package/src/services/config-service.ts +258 -0
- package/src/services/evaluation-service.ts +271 -0
- package/src/services/functional/evaluation-logic.ts +296 -0
- package/src/services/functional/file-processor.ts +273 -0
- package/src/services/functional/index.ts +12 -0
- package/src/services/index.ts +13 -0
- package/src/services/mcp-service.ts +432 -0
- package/src/services/memory.service.ts +476 -0
- package/src/services/search/base-indexer.ts +156 -0
- package/src/services/search/codebase-indexer-types.ts +38 -0
- package/src/services/search/codebase-indexer.ts +647 -0
- package/src/services/search/embeddings-provider.ts +455 -0
- package/src/services/search/embeddings.ts +316 -0
- package/src/services/search/functional-indexer.ts +323 -0
- package/src/services/search/index.ts +27 -0
- package/src/services/search/indexer.ts +380 -0
- package/src/services/search/knowledge-indexer.ts +422 -0
- package/src/services/search/semantic-search.ts +244 -0
- package/src/services/search/tfidf.ts +559 -0
- package/src/services/search/unified-search-service.ts +888 -0
- package/src/services/smart-config-service.ts +385 -0
- package/src/services/storage/cache-storage.ts +487 -0
- package/src/services/storage/drizzle-storage.ts +581 -0
- package/src/services/storage/index.ts +15 -0
- package/src/services/storage/lancedb-vector-storage.ts +494 -0
- package/src/services/storage/memory-storage.ts +268 -0
- package/src/services/storage/separated-storage.ts +467 -0
- package/src/services/storage/vector-storage.ts +13 -0
- package/src/shared/agents/index.ts +63 -0
- package/src/shared/files/index.ts +99 -0
- package/src/shared/index.ts +32 -0
- package/src/shared/logging/index.ts +24 -0
- package/src/shared/processing/index.ts +153 -0
- package/src/shared/types/index.ts +25 -0
- package/src/targets/claude-code.ts +574 -0
- package/src/targets/functional/claude-code-logic.ts +185 -0
- package/src/targets/functional/index.ts +6 -0
- package/src/targets/opencode.ts +529 -0
- package/src/types/agent.types.ts +32 -0
- package/src/types/api/batch.ts +108 -0
- package/src/types/api/errors.ts +118 -0
- package/src/types/api/index.ts +55 -0
- package/src/types/api/requests.ts +76 -0
- package/src/types/api/responses.ts +180 -0
- package/src/types/api/websockets.ts +85 -0
- package/src/types/api.types.ts +9 -0
- package/src/types/benchmark.ts +49 -0
- package/src/types/cli.types.ts +87 -0
- package/src/types/common.types.ts +35 -0
- package/src/types/database.types.ts +510 -0
- package/src/types/mcp-config.types.ts +448 -0
- package/src/types/mcp.types.ts +69 -0
- package/src/types/memory-types.ts +63 -0
- package/src/types/provider.types.ts +28 -0
- package/src/types/rule.types.ts +24 -0
- package/src/types/session.types.ts +214 -0
- package/src/types/target-config.types.ts +295 -0
- package/src/types/target.types.ts +140 -0
- package/src/types/todo.types.ts +25 -0
- package/src/types.ts +40 -0
- package/src/utils/advanced-tokenizer.ts +191 -0
- package/src/utils/agent-enhancer.ts +114 -0
- package/src/utils/ai-model-fetcher.ts +19 -0
- package/src/utils/async-file-operations.ts +516 -0
- package/src/utils/audio-player.ts +345 -0
- package/src/utils/cli-output.ts +266 -0
- package/src/utils/codebase-helpers.ts +211 -0
- package/src/utils/console-ui.ts +79 -0
- package/src/utils/database-errors.ts +140 -0
- package/src/utils/debug-logger.ts +49 -0
- package/src/utils/error-handler.ts +53 -0
- package/src/utils/file-operations.ts +310 -0
- package/src/utils/file-scanner.ts +259 -0
- package/src/utils/functional/array.ts +355 -0
- package/src/utils/functional/index.ts +15 -0
- package/src/utils/functional/object.ts +279 -0
- package/src/utils/functional/string.ts +281 -0
- package/src/utils/functional.ts +543 -0
- package/src/utils/help.ts +20 -0
- package/src/utils/immutable-cache.ts +106 -0
- package/src/utils/index.ts +78 -0
- package/src/utils/jsonc.ts +158 -0
- package/src/utils/logger.ts +396 -0
- package/src/utils/mcp-config.ts +249 -0
- package/src/utils/memory-tui.ts +414 -0
- package/src/utils/models-dev.ts +91 -0
- package/src/utils/notifications.ts +169 -0
- package/src/utils/object-utils.ts +51 -0
- package/src/utils/parallel-operations.ts +487 -0
- package/src/utils/paths.ts +143 -0
- package/src/utils/process-manager.ts +155 -0
- package/src/utils/prompts.ts +120 -0
- package/src/utils/search-tool-builder.ts +214 -0
- package/src/utils/secret-utils.ts +179 -0
- package/src/utils/security.ts +537 -0
- package/src/utils/session-manager.ts +168 -0
- package/src/utils/session-title.ts +87 -0
- package/src/utils/settings.ts +182 -0
- package/src/utils/simplified-errors.ts +410 -0
- package/src/utils/sync-utils.ts +159 -0
- package/src/utils/target-config.ts +570 -0
- package/src/utils/target-utils.ts +394 -0
- package/src/utils/template-engine.ts +94 -0
- package/src/utils/test-audio.ts +71 -0
- package/src/utils/todo-context.ts +46 -0
- package/src/utils/token-counter.ts +288 -0
- package/dist/index.d.ts +0 -10
- package/dist/index.js +0 -59554
- package/dist/lancedb.linux-x64-gnu-b7f0jgsz.node +0 -0
- package/dist/lancedb.linux-x64-musl-tgcv22rx.node +0 -0
- package/dist/shared/chunk-25dwp0dp.js +0 -89
- package/dist/shared/chunk-3pjb6063.js +0 -208
- package/dist/shared/chunk-4d6ydpw7.js +0 -2854
- package/dist/shared/chunk-4wjcadjk.js +0 -225
- package/dist/shared/chunk-5j4w74t6.js +0 -30
- package/dist/shared/chunk-5j8m3dh3.js +0 -58
- package/dist/shared/chunk-5thh3qem.js +0 -91
- package/dist/shared/chunk-6g9xy73m.js +0 -252
- package/dist/shared/chunk-7eq34c42.js +0 -23
- package/dist/shared/chunk-c2gwgx3r.js +0 -115
- package/dist/shared/chunk-cjd3mk4c.js +0 -1320
- package/dist/shared/chunk-g5cv6703.js +0 -368
- package/dist/shared/chunk-hpkhykhq.js +0 -574
- package/dist/shared/chunk-m2322pdk.js +0 -122
- package/dist/shared/chunk-nd5fdvaq.js +0 -26
- package/dist/shared/chunk-pgd3m6zf.js +0 -108
- package/dist/shared/chunk-qk8n91hw.js +0 -494
- package/dist/shared/chunk-rkkn8szp.js +0 -16855
- package/dist/shared/chunk-t16rfxh0.js +0 -61
- package/dist/shared/chunk-t4fbfa5v.js +0 -19
- package/dist/shared/chunk-t77h86w6.js +0 -276
- package/dist/shared/chunk-v0ez4aef.js +0 -71
- package/dist/shared/chunk-v29j2r3s.js +0 -32051
- package/dist/shared/chunk-vfbc6ew5.js +0 -765
- package/dist/shared/chunk-vmeqwm1c.js +0 -204
- package/dist/shared/chunk-x66eh37x.js +0 -137
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Business logic for Claude Code target setup
|
|
3
|
+
* Pure functions separated from I/O
|
|
4
|
+
*
|
|
5
|
+
* DESIGN RATIONALE:
|
|
6
|
+
* - Business logic testable without file system
|
|
7
|
+
* - Pure functions for settings transformation
|
|
8
|
+
* - Side effects isolated
|
|
9
|
+
* - Clear separation of concerns
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ConfigError } from '../../core/functional/error-types.js';
|
|
13
|
+
import { configError } from '../../core/functional/error-types.js';
|
|
14
|
+
import type { Result } from '../../core/functional/result.js';
|
|
15
|
+
import { failure, success, tryCatch } from '../../core/functional/result.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Claude Code settings structure
|
|
19
|
+
*/
|
|
20
|
+
export interface ClaudeCodeSettings {
|
|
21
|
+
hooks?: Record<
|
|
22
|
+
string,
|
|
23
|
+
Array<{
|
|
24
|
+
hooks: Array<{
|
|
25
|
+
type: string;
|
|
26
|
+
command: string;
|
|
27
|
+
}>;
|
|
28
|
+
}>
|
|
29
|
+
>;
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface HookConfig {
|
|
34
|
+
sessionCommand?: string;
|
|
35
|
+
notificationCommand?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Generate hook commands for the target
|
|
40
|
+
* Uses global sylphx-flow command (users must install globally first)
|
|
41
|
+
*/
|
|
42
|
+
export const generateHookCommands = async (targetId: string): Promise<HookConfig> => {
|
|
43
|
+
return {
|
|
44
|
+
sessionCommand: `sylphx-flow hook --type session --target ${targetId}`,
|
|
45
|
+
notificationCommand: `sylphx-flow hook --type notification --target ${targetId}`,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Default hook commands (fallback)
|
|
51
|
+
* Simplified to only include session and notification hooks
|
|
52
|
+
*/
|
|
53
|
+
export const DEFAULT_HOOKS: HookConfig = {
|
|
54
|
+
sessionCommand: 'sylphx-flow hook --type session --target claude-code',
|
|
55
|
+
notificationCommand: 'sylphx-flow hook --type notification --target claude-code',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Parse JSON settings (pure)
|
|
60
|
+
*/
|
|
61
|
+
export const parseSettings = (content: string): Result<ClaudeCodeSettings, ConfigError> => {
|
|
62
|
+
return tryCatch(
|
|
63
|
+
() => JSON.parse(content) as ClaudeCodeSettings,
|
|
64
|
+
(error) =>
|
|
65
|
+
configError('Failed to parse Claude Code settings', {
|
|
66
|
+
cause: error instanceof Error ? error : undefined,
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Build hook configuration (pure)
|
|
73
|
+
*/
|
|
74
|
+
export const buildHookConfiguration = (
|
|
75
|
+
config: HookConfig = DEFAULT_HOOKS
|
|
76
|
+
): ClaudeCodeSettings['hooks'] => {
|
|
77
|
+
const sessionCommand = config.sessionCommand || DEFAULT_HOOKS.sessionCommand!;
|
|
78
|
+
const notificationCommand = config.notificationCommand || DEFAULT_HOOKS.notificationCommand!;
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
SessionStart: [
|
|
82
|
+
{
|
|
83
|
+
hooks: [
|
|
84
|
+
{
|
|
85
|
+
type: 'command',
|
|
86
|
+
command: sessionCommand,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
Notification: [
|
|
92
|
+
{
|
|
93
|
+
matcher: '',
|
|
94
|
+
hooks: [
|
|
95
|
+
{
|
|
96
|
+
type: 'command',
|
|
97
|
+
command: notificationCommand,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Merge settings with new hooks (pure)
|
|
107
|
+
*/
|
|
108
|
+
export const mergeSettings = (
|
|
109
|
+
existingSettings: ClaudeCodeSettings,
|
|
110
|
+
hookConfig: HookConfig = DEFAULT_HOOKS
|
|
111
|
+
): ClaudeCodeSettings => {
|
|
112
|
+
const newHooks = buildHookConfiguration(hookConfig);
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
...existingSettings,
|
|
116
|
+
hooks: {
|
|
117
|
+
...(existingSettings.hooks || {}),
|
|
118
|
+
...newHooks,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Create settings with hooks (pure)
|
|
125
|
+
*/
|
|
126
|
+
export const createSettings = (hookConfig: HookConfig = DEFAULT_HOOKS): ClaudeCodeSettings => {
|
|
127
|
+
return {
|
|
128
|
+
hooks: buildHookConfiguration(hookConfig),
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Serialize settings to JSON (pure)
|
|
134
|
+
*/
|
|
135
|
+
export const serializeSettings = (settings: ClaudeCodeSettings): string => {
|
|
136
|
+
return JSON.stringify(settings, null, 2);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Get success message (pure)
|
|
141
|
+
*/
|
|
142
|
+
export const getSuccessMessage = (): string => {
|
|
143
|
+
return 'Claude Code hooks configured: SessionStart (static info) + UserPromptSubmit (dynamic info)';
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Process settings: parse existing or create new, merge hooks, serialize (pure)
|
|
148
|
+
*/
|
|
149
|
+
export const processSettings = (
|
|
150
|
+
existingContent: string | null,
|
|
151
|
+
hookConfig: HookConfig = DEFAULT_HOOKS
|
|
152
|
+
): Result<string, ConfigError> => {
|
|
153
|
+
if (existingContent === null || existingContent.trim() === '') {
|
|
154
|
+
// No existing settings, create new
|
|
155
|
+
const settings = createSettings(hookConfig);
|
|
156
|
+
return success(serializeSettings(settings));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Parse existing settings
|
|
160
|
+
const parseResult = parseSettings(existingContent);
|
|
161
|
+
if (parseResult._tag === 'Failure') {
|
|
162
|
+
// If parsing fails, create new settings
|
|
163
|
+
const settings = createSettings(hookConfig);
|
|
164
|
+
return success(serializeSettings(settings));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Merge with existing
|
|
168
|
+
const merged = mergeSettings(parseResult.value, hookConfig);
|
|
169
|
+
return success(serializeSettings(merged));
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Validate hook configuration (pure)
|
|
174
|
+
*/
|
|
175
|
+
export const validateHookConfig = (config: HookConfig): Result<HookConfig, ConfigError> => {
|
|
176
|
+
if (config.sessionCommand !== undefined && config.sessionCommand.trim() === '') {
|
|
177
|
+
return failure(configError('Session command cannot be empty'));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (config.messageCommand !== undefined && config.messageCommand.trim() === '') {
|
|
181
|
+
return failure(configError('Message command cannot be empty'));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return success(config);
|
|
185
|
+
};
|