hazo_llm_api 1.0.3 → 1.0.5
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/README.md +4 -4
- package/dist/lib/config/config_parser.d.ts +1 -1
- package/dist/lib/config/config_parser.js +5 -5
- package/dist/lib/config/config_parser.js.map +1 -1
- package/dist/lib/config/provider_loader.js +1 -1
- package/dist/lib/config/provider_loader.js.map +1 -1
- package/dist/lib/database/init_database.d.ts.map +1 -1
- package/dist/lib/database/init_database.js +72 -5
- package/dist/lib/database/init_database.js.map +1 -1
- package/dist/lib/database/utils.d.ts +9 -6
- package/dist/lib/database/utils.d.ts.map +1 -1
- package/dist/lib/database/utils.js +14 -5
- package/dist/lib/database/utils.js.map +1 -1
- package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
- package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
- package/dist/lib/llm_api/chain_helpers.js +445 -0
- package/dist/lib/llm_api/chain_helpers.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
- package/dist/lib/llm_api/index.d.ts +34 -2
- package/dist/lib/llm_api/index.d.ts.map +1 -1
- package/dist/lib/llm_api/index.js +57 -5
- package/dist/lib/llm_api/index.js.map +1 -1
- package/dist/lib/llm_api/provider_helper.js +1 -1
- package/dist/lib/llm_api/provider_helper.js.map +1 -1
- package/dist/lib/llm_api/types.d.ts +143 -1
- package/dist/lib/llm_api/types.d.ts.map +1 -1
- package/dist/lib/llm_api/types.js.map +1 -1
- package/dist/lib/prompts/get_prompt.d.ts +27 -1
- package/dist/lib/prompts/get_prompt.d.ts.map +1 -1
- package/dist/lib/prompts/get_prompt.js +112 -2
- package/dist/lib/prompts/get_prompt.js.map +1 -1
- package/dist/lib/prompts/index.d.ts +1 -1
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +1 -1
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/substitute_variables.d.ts +2 -2
- package/dist/lib/prompts/substitute_variables.d.ts.map +1 -1
- package/dist/lib/prompts/substitute_variables.js +10 -14
- package/dist/lib/prompts/substitute_variables.js.map +1 -1
- package/dist/lib/providers/qwen/qwen_provider.js +1 -1
- package/dist/lib/providers/qwen/qwen_provider.js.map +1 -1
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -2
- package/dist/server.js.map +1 -1
- package/package.json +12 -1
- package/techdoc.md +2 -2
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts +0 -16
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js +0 -258
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js.map +0 -1
- package/dist/components/hazo_llm_prompt_config/index.d.ts +0 -8
- package/dist/components/hazo_llm_prompt_config/index.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/index.js +0 -7
- package/dist/components/hazo_llm_prompt_config/index.js.map +0 -1
- package/dist/components/hazo_llm_prompt_config/types.d.ts +0 -74
- package/dist/components/hazo_llm_prompt_config/types.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/types.js +0 -8
- package/dist/components/hazo_llm_prompt_config/types.js.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Export all prompt-related functions from this module
|
|
5
5
|
*/
|
|
6
|
-
export { get_prompt_by_area_and_key, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, } from './get_prompt.js';
|
|
6
|
+
export { get_prompt_by_area_and_key, get_prompt_by_area_key_and_locals, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, } from './get_prompt.js';
|
|
7
7
|
export { substitute_variables, parse_prompt_variables, validate_variables, } from './substitute_variables.js';
|
|
8
8
|
export { PromptCache, get_prompt_cache, configure_prompt_cache, clear_prompt_cache, } from './prompt_cache.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,WAAW,EAGX,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Variable Substitution Module
|
|
3
3
|
*
|
|
4
4
|
* Functions to replace variables in prompt text.
|
|
5
|
-
* Variables
|
|
5
|
+
* Variables use double curly brace syntax: {{variable_name}}
|
|
6
6
|
* Values come from the prompt_variables JSON array.
|
|
7
7
|
*/
|
|
8
8
|
import type { Logger, PromptVariables } from '../llm_api/types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Substitute variables in prompt text with values from prompt_variables
|
|
11
|
-
* Variables are identified by
|
|
11
|
+
* Variables are identified by double curly braces (e.g., {{location}} becomes "Tokyo")
|
|
12
12
|
*
|
|
13
13
|
* @param prompt_text - The prompt text containing variables to replace
|
|
14
14
|
* @param prompt_variables - Array of key-value objects with variable values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"substitute_variables.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMnE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GACb,MAAM,
|
|
1
|
+
{"version":3,"file":"substitute_variables.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMnE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GACb,MAAM,CA8DR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,EAAE,MAAM,GACb,eAAe,CAuCjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAqDjD"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Variable Substitution Module
|
|
3
3
|
*
|
|
4
4
|
* Functions to replace variables in prompt text.
|
|
5
|
-
* Variables
|
|
5
|
+
* Variables use double curly brace syntax: {{variable_name}}
|
|
6
6
|
* Values come from the prompt_variables JSON array.
|
|
7
7
|
*/
|
|
8
8
|
// =============================================================================
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// =============================================================================
|
|
11
11
|
/**
|
|
12
12
|
* Substitute variables in prompt text with values from prompt_variables
|
|
13
|
-
* Variables are identified by
|
|
13
|
+
* Variables are identified by double curly braces (e.g., {{location}} becomes "Tokyo")
|
|
14
14
|
*
|
|
15
15
|
* @param prompt_text - The prompt text containing variables to replace
|
|
16
16
|
* @param prompt_variables - Array of key-value objects with variable values
|
|
@@ -34,8 +34,8 @@ export function substitute_variables(prompt_text, prompt_variables, logger) {
|
|
|
34
34
|
all_variables[key] = value;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
// Find all
|
|
38
|
-
const variable_pattern =
|
|
37
|
+
// Find all {{variable}} patterns in the text
|
|
38
|
+
const variable_pattern = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;
|
|
39
39
|
const found_variables = [];
|
|
40
40
|
let match;
|
|
41
41
|
while ((match = variable_pattern.exec(prompt_text)) !== null) {
|
|
@@ -46,26 +46,24 @@ export function substitute_variables(prompt_text, prompt_variables, logger) {
|
|
|
46
46
|
}
|
|
47
47
|
// Substitute each found variable
|
|
48
48
|
for (const var_name of found_variables) {
|
|
49
|
-
const var_pattern = new RegExp(
|
|
49
|
+
const var_pattern = new RegExp(`\\{\\{${var_name}\\}\\}`, 'g');
|
|
50
50
|
if (var_name in all_variables) {
|
|
51
51
|
const value = all_variables[var_name];
|
|
52
52
|
result_text = result_text.replace(var_pattern, value);
|
|
53
|
-
substitutions_made[
|
|
53
|
+
substitutions_made[`{{${var_name}}}`] = value;
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
missing_variables.push(var_name);
|
|
57
|
-
logger.warn(`Variable not found in prompt_variables:
|
|
57
|
+
logger.warn(`Variable not found in prompt_variables: {{${var_name}}}`, {
|
|
58
58
|
file: file_name,
|
|
59
|
-
line: 75,
|
|
60
59
|
data: { variable: var_name, available_variables: Object.keys(all_variables) },
|
|
61
60
|
});
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
63
|
// Log variable substitution with before and after in one message
|
|
65
64
|
if (Object.keys(substitutions_made).length > 0) {
|
|
66
|
-
logger.
|
|
65
|
+
logger.info('Variable substitution', {
|
|
67
66
|
file: file_name,
|
|
68
|
-
line: 83,
|
|
69
67
|
data: {
|
|
70
68
|
before: prompt_text,
|
|
71
69
|
after: result_text,
|
|
@@ -126,8 +124,8 @@ export function parse_prompt_variables(json_string, logger) {
|
|
|
126
124
|
*/
|
|
127
125
|
export function validate_variables(prompt_text, prompt_variables, logger) {
|
|
128
126
|
const file_name = 'substitute_variables.ts';
|
|
129
|
-
// Find all
|
|
130
|
-
const variable_pattern =
|
|
127
|
+
// Find all {{variable}} patterns in the prompt text
|
|
128
|
+
const variable_pattern = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;
|
|
131
129
|
const found_variables = [];
|
|
132
130
|
let match;
|
|
133
131
|
while ((match = variable_pattern.exec(prompt_text)) !== null) {
|
|
@@ -140,7 +138,6 @@ export function validate_variables(prompt_text, prompt_variables, logger) {
|
|
|
140
138
|
if (found_variables.length === 0) {
|
|
141
139
|
logger.debug('No variables found in prompt text', {
|
|
142
140
|
file: file_name,
|
|
143
|
-
line: 180,
|
|
144
141
|
});
|
|
145
142
|
return { valid: true, missing_variables: [] };
|
|
146
143
|
}
|
|
@@ -163,7 +160,6 @@ export function validate_variables(prompt_text, prompt_variables, logger) {
|
|
|
163
160
|
const valid = missing_variables.length === 0;
|
|
164
161
|
logger.debug('Variable validation completed', {
|
|
165
162
|
file: file_name,
|
|
166
|
-
line: 206,
|
|
167
163
|
data: {
|
|
168
164
|
valid,
|
|
169
165
|
found_variables,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"substitute_variables.js","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,gBAA6C,EAC7C,MAAc;IAEd,MAAM,SAAS,GAAG,yBAAyB,CAAC;IAE5C,iDAAiD;IACjD,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,WAAW,GAAG,WAAW,CAAC;IAC9B,MAAM,kBAAkB,GAA2B,EAAE,CAAC;IACtD,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,4DAA4D;IAC5D,MAAM,aAAa,GAA2B,EAAE,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"substitute_variables.js","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ export class QwenProvider {
|
|
|
97
97
|
};
|
|
98
98
|
const config_key = config_key_map[service_type] || 'model';
|
|
99
99
|
throw new Error(`Model not configured for service: ${service_type}. ` +
|
|
100
|
-
`Please set ${config_key} in the [llm_qwen] section of hazo_llm_api_config.ini. ` +
|
|
100
|
+
`Please set ${config_key} in the [llm_qwen] section of config/hazo_llm_api_config.ini. ` +
|
|
101
101
|
`Example: ${config_key}=qwen-max`);
|
|
102
102
|
}
|
|
103
103
|
return model;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen_provider.js","sourceRoot":"","sources":["../../../../src/lib/providers/qwen/qwen_provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"qwen_provider.js","sourceRoot":"","sources":["../../../../src/lib/providers/qwen/qwen_provider.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -12,15 +12,16 @@
|
|
|
12
12
|
* - hazo_llm_text_image: Text input → Image output
|
|
13
13
|
* - hazo_llm_image_image: Image input → Image output
|
|
14
14
|
* - hazo_llm_text_image_text: Text → Image → Text (chained)
|
|
15
|
+
* - hazo_llm_prompt_chain: Chain multiple prompts with dynamic value resolution
|
|
15
16
|
*/
|
|
16
|
-
export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text, hazo_llm_text_text_stream, hazo_llm_image_text_stream, is_initialized, get_current_config, default_logger, get_logger, set_logger, get_hooks, set_hooks, } from './lib/llm_api/index.js';
|
|
17
|
+
export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text, hazo_llm_prompt_chain, hazo_llm_text_text_stream, hazo_llm_image_text_stream, is_initialized, get_current_config, default_logger, get_logger, set_logger, get_hooks, set_hooks, } from './lib/llm_api/index.js';
|
|
17
18
|
export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt, get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './lib/database/index.js';
|
|
18
|
-
export { get_prompt_by_area_and_key, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, } from './lib/prompts/index.js';
|
|
19
|
+
export { get_prompt_by_area_and_key, get_prompt_by_area_key_and_locals, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, type LocalFilterOptions, } from './lib/prompts/index.js';
|
|
19
20
|
export { call_gemini_api, get_gemini_api_url, } from './lib/providers/index.js';
|
|
20
21
|
export { LLM_PROVIDERS, SERVICE_TYPES } from './lib/providers/types.js';
|
|
21
22
|
export type { ProviderName, ServiceType } from './lib/providers/types.js';
|
|
22
23
|
export { LLM_ERROR_CODES } from './lib/llm_api/types.js';
|
|
23
24
|
export { build_error_response } from './lib/llm_api/provider_helper.js';
|
|
24
25
|
export type { LLMErrorCode, LLMError } from './lib/llm_api/types.js';
|
|
25
|
-
export type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams, ChainImage, Logger, PromptVariable, PromptVariables, Base64Data, PromptTextMode, PromptRecord, CallLLMParams, LLMHooks, LLMRequestContext, LLMResponseContext, LLMErrorContext, BeforeRequestHook, AfterResponseHook, OnErrorHook, LLMStreamChunk, LLMStreamResponse, } from './lib/llm_api/types.js';
|
|
26
|
+
export type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams, ChainImage, Logger, PromptVariable, PromptVariables, Base64Data, PromptTextMode, PromptRecord, CallLLMParams, LLMHooks, LLMRequestContext, LLMResponseContext, LLMErrorContext, BeforeRequestHook, AfterResponseHook, OnErrorHook, LLMStreamChunk, LLMStreamResponse, ChainMatchType, ChainFieldDefinition, ChainVariableDefinition, ChainCallDefinition, ChainCallResult, PromptChainParams, PromptChainResponse, } from './lib/llm_api/types.js';
|
|
26
27
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EAErB,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,UAAU,EACV,UAAU,EAEV,SAAS,EACT,SAAS,GACV,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EAEb,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAK1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKrE,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,MAAM,EACN,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EAEb,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EAEX,cAAc,EACd,iBAAiB,EAEjB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
* - hazo_llm_text_image: Text input → Image output
|
|
13
13
|
* - hazo_llm_image_image: Image input → Image output
|
|
14
14
|
* - hazo_llm_text_image_text: Text → Image → Text (chained)
|
|
15
|
+
* - hazo_llm_prompt_chain: Chain multiple prompts with dynamic value resolution
|
|
15
16
|
*/
|
|
16
17
|
// =============================================================================
|
|
17
18
|
// LLM API Exports (Server-side ONLY)
|
|
18
19
|
// =============================================================================
|
|
19
|
-
export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text,
|
|
20
|
+
export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text, hazo_llm_prompt_chain,
|
|
20
21
|
// Streaming functions
|
|
21
22
|
hazo_llm_text_text_stream, hazo_llm_image_text_stream, is_initialized, get_current_config,
|
|
22
23
|
// Logger utilities
|
|
@@ -32,7 +33,7 @@ get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './lib/databas
|
|
|
32
33
|
// =============================================================================
|
|
33
34
|
// Prompt Utility Exports (Server-side ONLY)
|
|
34
35
|
// =============================================================================
|
|
35
|
-
export { get_prompt_by_area_and_key, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, } from './lib/prompts/index.js';
|
|
36
|
+
export { get_prompt_by_area_and_key, get_prompt_by_area_key_and_locals, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, } from './lib/prompts/index.js';
|
|
36
37
|
// =============================================================================
|
|
37
38
|
// Provider Exports (Server-side ONLY)
|
|
38
39
|
// =============================================================================
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB;AACrB,sBAAsB;AACtB,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB;AAClB,mBAAmB;AACnB,cAAc,EACd,UAAU,EACV,UAAU;AACV,kBAAkB;AAClB,SAAS,EACT,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa;AACb,eAAe;AACf,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,gFAAgF;AAChF,gDAAgD;AAChD,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGxE,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_llm_api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Wrapper to call different LLMs and includes prompt management",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"LLM",
|
|
@@ -53,10 +53,21 @@
|
|
|
53
53
|
"ini": "^6.0.0",
|
|
54
54
|
"sql.js": "^1.10.0"
|
|
55
55
|
},
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=18.0.0"
|
|
58
|
+
},
|
|
56
59
|
"peerDependencies": {
|
|
57
60
|
"react": "^18.0.0",
|
|
58
61
|
"react-dom": "^18.0.0"
|
|
59
62
|
},
|
|
63
|
+
"peerDependenciesMeta": {
|
|
64
|
+
"react": {
|
|
65
|
+
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"react-dom": {
|
|
68
|
+
"optional": true
|
|
69
|
+
}
|
|
70
|
+
},
|
|
60
71
|
"devDependencies": {
|
|
61
72
|
"@types/ini": "^4.1.1",
|
|
62
73
|
"@types/node": "^20.0.0",
|
package/techdoc.md
CHANGED
|
@@ -180,7 +180,7 @@ TailwindCSS with Shadcn/UI theming:
|
|
|
180
180
|
|
|
181
181
|
### Configuration File
|
|
182
182
|
|
|
183
|
-
**File**: `hazo_llm_api_config.ini`
|
|
183
|
+
**File**: `config/hazo_llm_api_config.ini`
|
|
184
184
|
|
|
185
185
|
**Format**: INI format with sections
|
|
186
186
|
|
|
@@ -375,7 +375,7 @@ import { Layout } from 'hazo_llm_api';
|
|
|
375
375
|
|
|
376
376
|
## Logging
|
|
377
377
|
|
|
378
|
-
Logging configuration is stored in `hazo_llm_api_config.ini`:
|
|
378
|
+
Logging configuration is stored in `config/hazo_llm_api_config.ini`:
|
|
379
379
|
|
|
380
380
|
```ini
|
|
381
381
|
[logging]
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hazo LLM Prompt Config Component
|
|
3
|
-
*
|
|
4
|
-
* A comprehensive UI component for managing LLM prompts in the prompts_library table.
|
|
5
|
-
* Features include:
|
|
6
|
-
* - Data table displaying all prompts
|
|
7
|
-
* - Add, Edit, and Delete functionality
|
|
8
|
-
* - Dialog-based form for prompt creation/editing
|
|
9
|
-
* - Multi-entry variable definitions with add/delete support
|
|
10
|
-
*/
|
|
11
|
-
import type { HazoLlmPromptConfigProps } from './types.js';
|
|
12
|
-
/**
|
|
13
|
-
* HazoLlmPromptConfig - Main prompt configuration management component
|
|
14
|
-
*/
|
|
15
|
-
export declare function HazoLlmPromptConfig({ api_endpoint_list, api_endpoint_create, api_endpoint_update, api_endpoint_delete, on_change, class_name }: HazoLlmPromptConfigProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
//# sourceMappingURL=hazo_llm_prompt_config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hazo_llm_prompt_config.d.ts","sourceRoot":"","sources":["../../../src/components/hazo_llm_prompt_config/hazo_llm_prompt_config.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,OAAO,KAAK,EACV,wBAAwB,EAKzB,MAAM,YAAY,CAAC;AA+KpB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,UAAe,EAChB,EAAE,wBAAwB,2CA+a1B"}
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hazo LLM Prompt Config Component
|
|
3
|
-
*
|
|
4
|
-
* A comprehensive UI component for managing LLM prompts in the prompts_library table.
|
|
5
|
-
* Features include:
|
|
6
|
-
* - Data table displaying all prompts
|
|
7
|
-
* - Add, Edit, and Delete functionality
|
|
8
|
-
* - Dialog-based form for prompt creation/editing
|
|
9
|
-
* - Multi-entry variable definitions with add/delete support
|
|
10
|
-
*/
|
|
11
|
-
'use client';
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
14
|
-
import { Pencil, Trash2, Plus, CheckCircle, XCircle, Loader2, AlertCircle } from 'lucide-react';
|
|
15
|
-
// =============================================================================
|
|
16
|
-
// Helper Functions
|
|
17
|
-
// =============================================================================
|
|
18
|
-
/**
|
|
19
|
-
* Parse JSON string of variable definitions safely
|
|
20
|
-
*/
|
|
21
|
-
function parse_variables(json_string) {
|
|
22
|
-
try {
|
|
23
|
-
const parsed = JSON.parse(json_string);
|
|
24
|
-
if (Array.isArray(parsed)) {
|
|
25
|
-
return parsed.map((item) => ({
|
|
26
|
-
name: item.name || '',
|
|
27
|
-
description: item.description || ''
|
|
28
|
-
}));
|
|
29
|
-
}
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Stringify variable definitions to JSON
|
|
38
|
-
*/
|
|
39
|
-
function stringify_variables(variables) {
|
|
40
|
-
return JSON.stringify(variables.filter(v => v.name.trim() !== ''));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Sanitize identifier input (lowercase, no special chars except underscore)
|
|
44
|
-
*/
|
|
45
|
-
function sanitize_identifier(value) {
|
|
46
|
-
return value.toLowerCase().replace(/[^a-z0-9_]/g, '');
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Create empty form data
|
|
50
|
-
*/
|
|
51
|
-
function create_empty_form() {
|
|
52
|
-
return {
|
|
53
|
-
prompt_area: '',
|
|
54
|
-
prompt_key: '',
|
|
55
|
-
prompt_text: '',
|
|
56
|
-
prompt_variables: [],
|
|
57
|
-
prompt_notes: ''
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Convert record to form data
|
|
62
|
-
*/
|
|
63
|
-
function record_to_form(record) {
|
|
64
|
-
return {
|
|
65
|
-
prompt_area: record.prompt_area,
|
|
66
|
-
prompt_key: record.prompt_key,
|
|
67
|
-
prompt_text: record.prompt_text,
|
|
68
|
-
prompt_variables: parse_variables(record.prompt_variables),
|
|
69
|
-
prompt_notes: record.prompt_notes
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
function VariableEntry({ variable, index, on_change, on_delete }) {
|
|
73
|
-
return (_jsxs("div", { className: "cls_variable_entry flex gap-2 items-center", children: [_jsx("input", { type: "text", placeholder: "Variable name", value: variable.name, onChange: (e) => on_change(index, 'name', e.target.value), className: "cls_variable_name_input flex-1 px-3 py-2 text-sm border rounded-md bg-background" }), _jsx("input", { type: "text", placeholder: "Description", value: variable.description, onChange: (e) => on_change(index, 'description', e.target.value), className: "cls_variable_desc_input flex-1 px-3 py-2 text-sm border rounded-md bg-background" }), _jsx("button", { type: "button", onClick: () => on_delete(index), className: "cls_variable_delete_btn p-2 text-destructive hover:bg-destructive/10 rounded-md transition-colors", title: "Delete variable", children: _jsx(XCircle, { className: "h-4 w-4" }) })] }));
|
|
74
|
-
}
|
|
75
|
-
function VariablesEditor({ variables, on_variables_change }) {
|
|
76
|
-
const handle_add = () => {
|
|
77
|
-
on_variables_change([...variables, { name: '', description: '' }]);
|
|
78
|
-
};
|
|
79
|
-
const handle_change = (index, field, value) => {
|
|
80
|
-
let new_value = value;
|
|
81
|
-
if (field === 'name') {
|
|
82
|
-
new_value = sanitize_identifier(value);
|
|
83
|
-
}
|
|
84
|
-
const updated = [...variables];
|
|
85
|
-
updated[index] = { ...updated[index], [field]: new_value };
|
|
86
|
-
on_variables_change(updated);
|
|
87
|
-
};
|
|
88
|
-
const handle_delete = (index) => {
|
|
89
|
-
on_variables_change(variables.filter((_, i) => i !== index));
|
|
90
|
-
};
|
|
91
|
-
return (_jsxs("div", { className: "cls_variables_editor space-y-2", children: [_jsxs("div", { className: "cls_variables_header flex justify-between items-center", children: [_jsx("label", { className: "text-sm font-medium", children: "Prompt Variables" }), _jsxs("button", { type: "button", onClick: handle_add, className: "cls_add_variable_btn flex items-center gap-1 px-2 py-1 text-xs bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors", children: [_jsx(Plus, { className: "h-3 w-3" }), "Add Variable"] })] }), variables.length === 0 ? (_jsx("p", { className: "cls_no_variables text-sm text-muted-foreground italic", children: "No variables defined. Click \"Add Variable\" to add one." })) : (_jsx("div", { className: "cls_variables_list space-y-2", children: variables.map((variable, index) => (_jsx(VariableEntry, { variable: variable, index: index, on_change: handle_change, on_delete: handle_delete }, index))) }))] }));
|
|
92
|
-
}
|
|
93
|
-
// =============================================================================
|
|
94
|
-
// Main Component
|
|
95
|
-
// =============================================================================
|
|
96
|
-
/**
|
|
97
|
-
* HazoLlmPromptConfig - Main prompt configuration management component
|
|
98
|
-
*/
|
|
99
|
-
export function HazoLlmPromptConfig({ api_endpoint_list, api_endpoint_create, api_endpoint_update, api_endpoint_delete, on_change, class_name = '' }) {
|
|
100
|
-
// -------------------------------------------------------------------------
|
|
101
|
-
// State
|
|
102
|
-
// -------------------------------------------------------------------------
|
|
103
|
-
const [prompts, set_prompts] = useState([]);
|
|
104
|
-
const [loading, set_loading] = useState(true);
|
|
105
|
-
const [error, set_error] = useState(null);
|
|
106
|
-
// Dialog state
|
|
107
|
-
const [dialog_open, set_dialog_open] = useState(false);
|
|
108
|
-
const [edit_mode, set_edit_mode] = useState(false);
|
|
109
|
-
const [editing_uuid, set_editing_uuid] = useState(null);
|
|
110
|
-
const [form_data, set_form_data] = useState(create_empty_form());
|
|
111
|
-
const [saving, set_saving] = useState(false);
|
|
112
|
-
// Delete confirmation state
|
|
113
|
-
const [delete_dialog_open, set_delete_dialog_open] = useState(false);
|
|
114
|
-
const [deleting_uuid, set_deleting_uuid] = useState(null);
|
|
115
|
-
const [deleting, set_deleting] = useState(false);
|
|
116
|
-
// -------------------------------------------------------------------------
|
|
117
|
-
// Data Fetching
|
|
118
|
-
// -------------------------------------------------------------------------
|
|
119
|
-
const fetch_prompts = useCallback(async () => {
|
|
120
|
-
set_loading(true);
|
|
121
|
-
set_error(null);
|
|
122
|
-
try {
|
|
123
|
-
const response = await fetch(api_endpoint_list);
|
|
124
|
-
const result = await response.json();
|
|
125
|
-
if (result.success && result.data) {
|
|
126
|
-
set_prompts(result.data);
|
|
127
|
-
on_change?.(result.data);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
set_error(result.error || 'Failed to fetch prompts');
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
set_error(err instanceof Error ? err.message : 'Failed to fetch prompts');
|
|
135
|
-
}
|
|
136
|
-
finally {
|
|
137
|
-
set_loading(false);
|
|
138
|
-
}
|
|
139
|
-
}, [api_endpoint_list, on_change]);
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
fetch_prompts();
|
|
142
|
-
}, [fetch_prompts]);
|
|
143
|
-
// -------------------------------------------------------------------------
|
|
144
|
-
// Form Handlers
|
|
145
|
-
// -------------------------------------------------------------------------
|
|
146
|
-
const handle_open_add_dialog = () => {
|
|
147
|
-
set_form_data(create_empty_form());
|
|
148
|
-
set_edit_mode(false);
|
|
149
|
-
set_editing_uuid(null);
|
|
150
|
-
set_dialog_open(true);
|
|
151
|
-
};
|
|
152
|
-
const handle_open_edit_dialog = (record) => {
|
|
153
|
-
set_form_data(record_to_form(record));
|
|
154
|
-
set_edit_mode(true);
|
|
155
|
-
set_editing_uuid(record.uuid);
|
|
156
|
-
set_dialog_open(true);
|
|
157
|
-
};
|
|
158
|
-
const handle_close_dialog = () => {
|
|
159
|
-
set_dialog_open(false);
|
|
160
|
-
set_form_data(create_empty_form());
|
|
161
|
-
set_edit_mode(false);
|
|
162
|
-
set_editing_uuid(null);
|
|
163
|
-
};
|
|
164
|
-
const handle_form_change = (field, value) => {
|
|
165
|
-
if (field === 'prompt_area' || field === 'prompt_key') {
|
|
166
|
-
set_form_data(prev => ({ ...prev, [field]: sanitize_identifier(value) }));
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
set_form_data(prev => ({ ...prev, [field]: value }));
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
const handle_save = async () => {
|
|
173
|
-
set_saving(true);
|
|
174
|
-
set_error(null);
|
|
175
|
-
try {
|
|
176
|
-
const payload = {
|
|
177
|
-
prompt_area: form_data.prompt_area,
|
|
178
|
-
prompt_key: form_data.prompt_key,
|
|
179
|
-
prompt_text: form_data.prompt_text,
|
|
180
|
-
prompt_variables: stringify_variables(form_data.prompt_variables),
|
|
181
|
-
prompt_notes: form_data.prompt_notes
|
|
182
|
-
};
|
|
183
|
-
const endpoint = edit_mode
|
|
184
|
-
? `${api_endpoint_update}/${editing_uuid}`
|
|
185
|
-
: api_endpoint_create;
|
|
186
|
-
const method = edit_mode ? 'PUT' : 'POST';
|
|
187
|
-
const response = await fetch(endpoint, {
|
|
188
|
-
method,
|
|
189
|
-
headers: { 'Content-Type': 'application/json' },
|
|
190
|
-
body: JSON.stringify(payload)
|
|
191
|
-
});
|
|
192
|
-
const result = await response.json();
|
|
193
|
-
if (result.success) {
|
|
194
|
-
handle_close_dialog();
|
|
195
|
-
await fetch_prompts();
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
set_error(result.error || 'Failed to save prompt');
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
catch (err) {
|
|
202
|
-
set_error(err instanceof Error ? err.message : 'Failed to save prompt');
|
|
203
|
-
}
|
|
204
|
-
finally {
|
|
205
|
-
set_saving(false);
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
// -------------------------------------------------------------------------
|
|
209
|
-
// Delete Handlers
|
|
210
|
-
// -------------------------------------------------------------------------
|
|
211
|
-
const handle_open_delete_dialog = (uuid) => {
|
|
212
|
-
set_deleting_uuid(uuid);
|
|
213
|
-
set_delete_dialog_open(true);
|
|
214
|
-
};
|
|
215
|
-
const handle_close_delete_dialog = () => {
|
|
216
|
-
set_delete_dialog_open(false);
|
|
217
|
-
set_deleting_uuid(null);
|
|
218
|
-
};
|
|
219
|
-
const handle_confirm_delete = async () => {
|
|
220
|
-
if (!deleting_uuid)
|
|
221
|
-
return;
|
|
222
|
-
set_deleting(true);
|
|
223
|
-
set_error(null);
|
|
224
|
-
try {
|
|
225
|
-
const response = await fetch(`${api_endpoint_delete}/${deleting_uuid}`, {
|
|
226
|
-
method: 'DELETE'
|
|
227
|
-
});
|
|
228
|
-
const result = await response.json();
|
|
229
|
-
if (result.success) {
|
|
230
|
-
handle_close_delete_dialog();
|
|
231
|
-
await fetch_prompts();
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
set_error(result.error || 'Failed to delete prompt');
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
set_error(err instanceof Error ? err.message : 'Failed to delete prompt');
|
|
239
|
-
}
|
|
240
|
-
finally {
|
|
241
|
-
set_deleting(false);
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
// -------------------------------------------------------------------------
|
|
245
|
-
// Render
|
|
246
|
-
// -------------------------------------------------------------------------
|
|
247
|
-
return (_jsxs("div", { className: `cls_hazo_llm_prompt_config ${class_name}`, children: [_jsxs("div", { className: "cls_prompt_config_card border rounded-lg shadow-sm bg-card text-card-foreground", children: [_jsxs("div", { className: "cls_prompt_config_header flex items-center justify-between p-4 border-b", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold", children: "Prompt Configuration" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Manage LLM prompts for your application" })] }), _jsxs("button", { onClick: handle_open_add_dialog, className: "cls_add_config_btn flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors", children: [_jsx(Plus, { className: "h-4 w-4" }), "Add Config"] })] }), _jsxs("div", { className: "cls_prompt_config_content p-4", children: [error && (_jsxs("div", { className: "cls_error_alert flex items-center gap-2 p-3 mb-4 text-sm text-destructive bg-destructive/10 border border-destructive/20 rounded-md", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), error] })), loading ? (_jsxs("div", { className: "cls_loading_state flex items-center justify-center p-8", children: [_jsx(Loader2, { className: "h-6 w-6 animate-spin text-muted-foreground" }), _jsx("span", { className: "ml-2 text-muted-foreground", children: "Loading prompts..." })] })) : prompts.length === 0 ? (
|
|
248
|
-
/* Empty State */
|
|
249
|
-
_jsxs("div", { className: "cls_empty_state text-center p-8 text-muted-foreground", children: [_jsx("p", { children: "No prompts configured yet." }), _jsx("p", { className: "text-sm", children: "Click \"Add Config\" to create your first prompt." })] })) : (
|
|
250
|
-
/* Data Table */
|
|
251
|
-
_jsx("div", { className: "cls_prompts_table_container overflow-x-auto", children: _jsxs("table", { className: "cls_prompts_table w-full border-collapse", children: [_jsx("thead", { children: _jsxs("tr", { className: "cls_table_header border-b", children: [_jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Area" }), _jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Key" }), _jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Prompt Text" }), _jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Variables" }), _jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Notes" }), _jsx("th", { className: "text-left p-3 font-medium text-muted-foreground", children: "Created" }), _jsx("th", { className: "text-right p-3 font-medium text-muted-foreground", children: "Actions" })] }) }), _jsx("tbody", { children: prompts.map((prompt) => {
|
|
252
|
-
const variables = parse_variables(prompt.prompt_variables);
|
|
253
|
-
return (_jsxs("tr", { className: "cls_table_row border-b hover:bg-muted/50 transition-colors", children: [_jsx("td", { className: "p-3 text-sm break-words max-w-[150px]", children: prompt.prompt_area }), _jsx("td", { className: "p-3 text-sm font-mono break-words max-w-[150px]", children: prompt.prompt_key }), _jsxs("td", { className: "p-3 text-sm break-words min-w-[200px]", title: prompt.prompt_text, children: [prompt.prompt_text.substring(0, 200), prompt.prompt_text.length > 200 ? '...' : ''] }), _jsx("td", { className: "p-3 text-sm whitespace-nowrap", children: variables.length > 0 ? (_jsxs("span", { className: "cls_variable_count px-2 py-1 bg-muted rounded-full text-xs", children: [variables.length, " variable", variables.length !== 1 ? 's' : ''] })) : (_jsx("span", { className: "text-muted-foreground text-xs", children: "None" })) }), _jsx("td", { className: "p-3 text-sm break-words max-w-[150px]", title: prompt.prompt_notes, children: prompt.prompt_notes || '-' }), _jsx("td", { className: "p-3 text-sm text-muted-foreground whitespace-nowrap", children: new Date(prompt.created_at).toLocaleDateString() }), _jsx("td", { className: "p-3 whitespace-nowrap", children: _jsxs("div", { className: "cls_action_buttons flex justify-end gap-1", children: [_jsx("button", { onClick: () => handle_open_edit_dialog(prompt), className: "cls_edit_btn p-2 hover:bg-muted rounded-md transition-colors", title: "Edit prompt", children: _jsx(Pencil, { className: "h-4 w-4" }) }), _jsx("button", { onClick: () => handle_open_delete_dialog(prompt.uuid), className: "cls_delete_btn p-2 text-destructive hover:bg-destructive/10 rounded-md transition-colors", title: "Delete prompt", children: _jsx(Trash2, { className: "h-4 w-4" }) })] }) })] }, prompt.uuid));
|
|
254
|
-
}) })] }) }))] })] }), dialog_open && (_jsx("div", { className: "cls_dialog_overlay fixed inset-0 z-50 bg-black/80 flex items-center justify-center p-4", children: _jsxs("div", { className: "cls_dialog_content bg-background border rounded-lg shadow-lg w-full max-w-2xl max-h-[80vh] flex flex-col overflow-hidden", children: [_jsxs("div", { className: "cls_dialog_header p-4 border-b shrink-0", children: [_jsx("h2", { className: "text-lg font-semibold", children: edit_mode ? 'Edit Prompt' : 'Add New Prompt' }), _jsx("p", { className: "text-sm text-muted-foreground", children: edit_mode
|
|
255
|
-
? 'Modify the prompt configuration below'
|
|
256
|
-
: 'Fill in the details to create a new prompt' })] }), _jsxs("div", { className: "cls_dialog_body p-4 space-y-4 flex-1 overflow-y-auto min-h-0 overscroll-contain", children: [_jsxs("div", { className: "cls_form_field space-y-2", children: [_jsx("label", { className: "text-sm font-medium", children: "Prompt Area" }), _jsx("input", { type: "text", value: form_data.prompt_area, onChange: (e) => handle_form_change('prompt_area', e.target.value), placeholder: "e.g., marketing, support, generation", className: "cls_prompt_area_input w-full px-3 py-2 border rounded-md bg-background" })] }), _jsxs("div", { className: "cls_form_field space-y-2", children: [_jsx("label", { className: "text-sm font-medium", children: "Prompt Key" }), _jsx("input", { type: "text", value: form_data.prompt_key, onChange: (e) => handle_form_change('prompt_key', e.target.value), placeholder: "e.g., greeting, summary, analysis", className: "cls_prompt_key_input w-full px-3 py-2 border rounded-md bg-background" })] }), _jsxs("div", { className: "cls_form_field space-y-2", children: [_jsx("label", { className: "text-sm font-medium", children: "Prompt Text" }), _jsx("textarea", { value: form_data.prompt_text, onChange: (e) => handle_form_change('prompt_text', e.target.value), placeholder: "Enter the prompt text. Use {{variable_name}} for substitution.", rows: 4, className: "cls_prompt_text_input w-full px-3 py-2 border rounded-md bg-background resize-y max-h-[150px]" })] }), _jsx(VariablesEditor, { variables: form_data.prompt_variables, on_variables_change: (vars) => handle_form_change('prompt_variables', vars) }), _jsxs("div", { className: "cls_form_field space-y-2", children: [_jsx("label", { className: "text-sm font-medium", children: "Notes" }), _jsx("textarea", { value: form_data.prompt_notes, onChange: (e) => handle_form_change('prompt_notes', e.target.value), placeholder: "Optional notes about this prompt...", rows: 2, className: "cls_prompt_notes_input w-full px-3 py-2 border rounded-md bg-background resize-y max-h-[100px]" })] }), edit_mode && editing_uuid && (_jsxs("div", { className: "cls_form_field space-y-2", children: [_jsx("label", { className: "text-sm font-medium text-muted-foreground", children: "UUID" }), _jsx("input", { type: "text", value: editing_uuid, readOnly: true, className: "cls_uuid_input w-full px-3 py-2 border rounded-md bg-muted text-muted-foreground cursor-not-allowed" })] }))] }), _jsxs("div", { className: "cls_dialog_footer flex justify-end gap-2 p-4 border-t shrink-0", children: [_jsxs("button", { onClick: handle_close_dialog, disabled: saving, className: "cls_cancel_btn flex items-center gap-2 px-4 py-2 border rounded-md hover:bg-muted transition-colors disabled:opacity-50", children: [_jsx(XCircle, { className: "h-4 w-4" }), "Cancel"] }), _jsxs("button", { onClick: handle_save, disabled: saving || !form_data.prompt_area || !form_data.prompt_key || !form_data.prompt_text, className: "cls_save_btn flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50", children: [saving ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin" })) : (_jsx(CheckCircle, { className: "h-4 w-4" })), edit_mode ? 'Update' : 'Create'] })] })] }) })), delete_dialog_open && (_jsx("div", { className: "cls_delete_dialog_overlay fixed inset-0 z-50 bg-black/80 flex items-center justify-center", children: _jsxs("div", { className: "cls_delete_dialog_content bg-background border rounded-lg shadow-lg w-full max-w-md m-4", children: [_jsx("div", { className: "cls_delete_dialog_header p-4 border-b", children: _jsx("h2", { className: "text-lg font-semibold", children: "Confirm Delete" }) }), _jsx("div", { className: "cls_delete_dialog_body p-4", children: _jsx("p", { className: "text-sm text-muted-foreground", children: "Are you sure you want to delete this prompt? This action cannot be undone." }) }), _jsxs("div", { className: "cls_delete_dialog_footer flex justify-end gap-2 p-4 border-t", children: [_jsxs("button", { onClick: handle_close_delete_dialog, disabled: deleting, className: "cls_cancel_delete_btn flex items-center gap-2 px-4 py-2 border rounded-md hover:bg-muted transition-colors disabled:opacity-50", children: [_jsx(XCircle, { className: "h-4 w-4" }), "Cancel"] }), _jsxs("button", { onClick: handle_confirm_delete, disabled: deleting, className: "cls_confirm_delete_btn flex items-center gap-2 px-4 py-2 bg-destructive text-destructive-foreground rounded-md hover:bg-destructive/90 transition-colors disabled:opacity-50", children: [deleting ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin" })) : (_jsx(Trash2, { className: "h-4 w-4" })), "Delete"] })] })] }) }))] }));
|
|
257
|
-
}
|
|
258
|
-
//# sourceMappingURL=hazo_llm_prompt_config.js.map
|