jiva-core 0.2.2 → 0.3.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.
- package/.dockerignore +53 -0
- package/.gcloudignore +49 -0
- package/CONTRIBUTING.md +92 -0
- package/Dockerfile +63 -0
- package/LICENSE +21 -0
- package/README.md +248 -102
- package/cloud-run-deploy.yaml +135 -0
- package/cloud-run.yaml +135 -0
- package/cloud-run.yaml.template +143 -0
- package/deploy.sh +107 -0
- package/dist/core/agent-spawner.d.ts +89 -0
- package/dist/core/agent-spawner.d.ts.map +1 -0
- package/dist/core/agent-spawner.js +195 -0
- package/dist/core/agent-spawner.js.map +1 -0
- package/dist/core/client-agent.d.ts +82 -0
- package/dist/core/client-agent.d.ts.map +1 -0
- package/dist/core/client-agent.js +406 -0
- package/dist/core/client-agent.js.map +1 -0
- package/dist/core/config.d.ts +59 -10
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +19 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/conversation-manager.d.ts +10 -18
- package/dist/core/conversation-manager.d.ts.map +1 -1
- package/dist/core/conversation-manager.js +28 -60
- package/dist/core/conversation-manager.js.map +1 -1
- package/dist/core/dual-agent.d.ts +24 -3
- package/dist/core/dual-agent.d.ts.map +1 -1
- package/dist/core/dual-agent.js +112 -19
- package/dist/core/dual-agent.js.map +1 -1
- package/dist/core/manager-agent.d.ts +3 -1
- package/dist/core/manager-agent.d.ts.map +1 -1
- package/dist/core/manager-agent.js +66 -14
- package/dist/core/manager-agent.js.map +1 -1
- package/dist/core/worker-agent.d.ts +15 -1
- package/dist/core/worker-agent.d.ts.map +1 -1
- package/dist/core/worker-agent.js +244 -11
- package/dist/core/worker-agent.js.map +1 -1
- package/dist/core/workspace.d.ts +5 -0
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +47 -7
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/cli/index.js +376 -44
- package/dist/interfaces/cli/index.js.map +1 -1
- package/dist/interfaces/cli/repl.d.ts.map +1 -1
- package/dist/interfaces/cli/repl.js +6 -0
- package/dist/interfaces/cli/repl.js.map +1 -1
- package/dist/interfaces/http/index.d.ts +22 -0
- package/dist/interfaces/http/index.d.ts.map +1 -0
- package/dist/interfaces/http/index.js +135 -0
- package/dist/interfaces/http/index.js.map +1 -0
- package/dist/interfaces/http/middleware/auth.d.ts +32 -0
- package/dist/interfaces/http/middleware/auth.d.ts.map +1 -0
- package/dist/interfaces/http/middleware/auth.js +176 -0
- package/dist/interfaces/http/middleware/auth.js.map +1 -0
- package/dist/interfaces/http/routes/chat.d.ts +7 -0
- package/dist/interfaces/http/routes/chat.d.ts.map +1 -0
- package/dist/interfaces/http/routes/chat.js +144 -0
- package/dist/interfaces/http/routes/chat.js.map +1 -0
- package/dist/interfaces/http/routes/health.d.ts +6 -0
- package/dist/interfaces/http/routes/health.d.ts.map +1 -0
- package/dist/interfaces/http/routes/health.js +25 -0
- package/dist/interfaces/http/routes/health.js.map +1 -0
- package/dist/interfaces/http/routes/session.d.ts +7 -0
- package/dist/interfaces/http/routes/session.d.ts.map +1 -0
- package/dist/interfaces/http/routes/session.js +114 -0
- package/dist/interfaces/http/routes/session.js.map +1 -0
- package/dist/interfaces/http/session-manager.d.ts +76 -0
- package/dist/interfaces/http/session-manager.d.ts.map +1 -0
- package/dist/interfaces/http/session-manager.js +339 -0
- package/dist/interfaces/http/session-manager.js.map +1 -0
- package/dist/interfaces/http/websocket-handler.d.ts +18 -0
- package/dist/interfaces/http/websocket-handler.d.ts.map +1 -0
- package/dist/interfaces/http/websocket-handler.js +146 -0
- package/dist/interfaces/http/websocket-handler.js.map +1 -0
- package/dist/mcp/client.d.ts +11 -2
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +44 -19
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/server-manager.d.ts +1 -1
- package/dist/mcp/server-manager.d.ts.map +1 -1
- package/dist/mcp/server-manager.js +12 -2
- package/dist/mcp/server-manager.js.map +1 -1
- package/dist/personas/index.d.ts +13 -0
- package/dist/personas/index.d.ts.map +1 -0
- package/dist/personas/index.js +13 -0
- package/dist/personas/index.js.map +1 -0
- package/dist/personas/persona-loader.d.ts +30 -0
- package/dist/personas/persona-loader.d.ts.map +1 -0
- package/dist/personas/persona-loader.js +246 -0
- package/dist/personas/persona-loader.js.map +1 -0
- package/dist/personas/persona-manager.d.ts +82 -0
- package/dist/personas/persona-manager.d.ts.map +1 -0
- package/dist/personas/persona-manager.js +211 -0
- package/dist/personas/persona-manager.js.map +1 -0
- package/dist/personas/skill-loader.d.ts +35 -0
- package/dist/personas/skill-loader.d.ts.map +1 -0
- package/dist/personas/skill-loader.js +144 -0
- package/dist/personas/skill-loader.js.map +1 -0
- package/dist/personas/skill-packager.d.ts +25 -0
- package/dist/personas/skill-packager.d.ts.map +1 -0
- package/dist/personas/skill-packager.js +233 -0
- package/dist/personas/skill-packager.js.map +1 -0
- package/dist/personas/types.d.ts +134 -0
- package/dist/personas/types.d.ts.map +1 -0
- package/dist/personas/types.js +7 -0
- package/dist/personas/types.js.map +1 -0
- package/dist/personas/validator.d.ts +22 -0
- package/dist/personas/validator.d.ts.map +1 -0
- package/dist/personas/validator.js +144 -0
- package/dist/personas/validator.js.map +1 -0
- package/dist/storage/factory.d.ts +51 -0
- package/dist/storage/factory.d.ts.map +1 -0
- package/dist/storage/factory.js +154 -0
- package/dist/storage/factory.js.map +1 -0
- package/dist/storage/gcp-bucket-provider.d.ts +59 -0
- package/dist/storage/gcp-bucket-provider.d.ts.map +1 -0
- package/dist/storage/gcp-bucket-provider.js +275 -0
- package/dist/storage/gcp-bucket-provider.js.map +1 -0
- package/dist/storage/index.d.ts +33 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +37 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local-provider.d.ts +36 -0
- package/dist/storage/local-provider.d.ts.map +1 -0
- package/dist/storage/local-provider.js +219 -0
- package/dist/storage/local-provider.js.map +1 -0
- package/dist/storage/provider.d.ts +137 -0
- package/dist/storage/provider.d.ts.map +1 -0
- package/dist/storage/provider.js +136 -0
- package/dist/storage/provider.js.map +1 -0
- package/dist/storage/types.d.ts +78 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +14 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/utils/orchestration-logger.d.ts +36 -0
- package/dist/utils/orchestration-logger.d.ts.map +1 -0
- package/dist/utils/orchestration-logger.js +224 -0
- package/dist/utils/orchestration-logger.js.map +1 -0
- package/jiva-new-demo.gif +0 -0
- package/package.json +30 -2
- package/.fluen/cache/state.json +0 -7
- package/actions/action_registry.py +0 -75
- package/actions/python_coder.py +0 -470
- package/api/main.py +0 -269
- package/downloaded_image.avif +0 -0
- package/downloads/snipping_tool.avif +0 -0
- package/image.avif +0 -0
- package/ms_image.avif +0 -0
- package/screenshot.png +0 -0
- package/snipping_tool.avif +0 -0
- package/tmp_image.avif +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill and Persona validation logic
|
|
3
|
+
* Enforces frontmatter rules as specified in the implementation guide
|
|
4
|
+
*/
|
|
5
|
+
const SKILL_NAME_REGEX = /^[a-z0-9-]+$/;
|
|
6
|
+
const MAX_NAME_LENGTH = 64;
|
|
7
|
+
const MAX_DESCRIPTION_LENGTH = 1024;
|
|
8
|
+
const MAX_COMPATIBILITY_LENGTH = 500;
|
|
9
|
+
const ALLOWED_FRONTMATTER_KEYS = [
|
|
10
|
+
'name',
|
|
11
|
+
'description',
|
|
12
|
+
'license',
|
|
13
|
+
'allowedTools',
|
|
14
|
+
'allowed-tools', // Accept kebab-case variant
|
|
15
|
+
'metadata',
|
|
16
|
+
'compatibility',
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Validate skill metadata from frontmatter
|
|
20
|
+
*/
|
|
21
|
+
export function validateSkillMetadata(metadata) {
|
|
22
|
+
const errors = [];
|
|
23
|
+
// Required: name
|
|
24
|
+
if (!metadata.name) {
|
|
25
|
+
errors.push({
|
|
26
|
+
field: 'name',
|
|
27
|
+
message: 'Skill name is required',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Name format: kebab-case, no leading/trailing/consecutive hyphens
|
|
32
|
+
if (!SKILL_NAME_REGEX.test(metadata.name)) {
|
|
33
|
+
errors.push({
|
|
34
|
+
field: 'name',
|
|
35
|
+
message: 'Skill name must be lowercase alphanumeric with hyphens only',
|
|
36
|
+
value: metadata.name,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// No leading/trailing hyphens
|
|
40
|
+
if (metadata.name.startsWith('-') || metadata.name.endsWith('-')) {
|
|
41
|
+
errors.push({
|
|
42
|
+
field: 'name',
|
|
43
|
+
message: 'Skill name cannot start or end with a hyphen',
|
|
44
|
+
value: metadata.name,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// No consecutive hyphens
|
|
48
|
+
if (metadata.name.includes('--')) {
|
|
49
|
+
errors.push({
|
|
50
|
+
field: 'name',
|
|
51
|
+
message: 'Skill name cannot contain consecutive hyphens',
|
|
52
|
+
value: metadata.name,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
// Max length
|
|
56
|
+
if (metadata.name.length > MAX_NAME_LENGTH) {
|
|
57
|
+
errors.push({
|
|
58
|
+
field: 'name',
|
|
59
|
+
message: `Skill name must be ${MAX_NAME_LENGTH} characters or less`,
|
|
60
|
+
value: metadata.name,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Required: description
|
|
65
|
+
if (!metadata.description) {
|
|
66
|
+
errors.push({
|
|
67
|
+
field: 'description',
|
|
68
|
+
message: 'Skill description is required',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// No angle brackets
|
|
73
|
+
if (/<|>/.test(metadata.description)) {
|
|
74
|
+
errors.push({
|
|
75
|
+
field: 'description',
|
|
76
|
+
message: 'Skill description cannot contain angle brackets (< >)',
|
|
77
|
+
value: metadata.description,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
// Max length
|
|
81
|
+
if (metadata.description.length > MAX_DESCRIPTION_LENGTH) {
|
|
82
|
+
errors.push({
|
|
83
|
+
field: 'description',
|
|
84
|
+
message: `Skill description must be ${MAX_DESCRIPTION_LENGTH} characters or less (got ${metadata.description.length})`,
|
|
85
|
+
value: metadata.description.substring(0, 100) + '...',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Optional: compatibility (max 500 chars)
|
|
90
|
+
if (metadata.compatibility && metadata.compatibility.length > MAX_COMPATIBILITY_LENGTH) {
|
|
91
|
+
errors.push({
|
|
92
|
+
field: 'compatibility',
|
|
93
|
+
message: `Compatibility note must be ${MAX_COMPATIBILITY_LENGTH} characters or less`,
|
|
94
|
+
value: metadata.compatibility,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return errors;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Validate that only allowed frontmatter keys are present
|
|
101
|
+
*/
|
|
102
|
+
export function validateFrontmatterKeys(frontmatter) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
const keys = Object.keys(frontmatter);
|
|
105
|
+
for (const key of keys) {
|
|
106
|
+
if (!ALLOWED_FRONTMATTER_KEYS.includes(key)) {
|
|
107
|
+
errors.push({
|
|
108
|
+
field: key,
|
|
109
|
+
message: `Unknown frontmatter key "${key}". Allowed keys: ${ALLOWED_FRONTMATTER_KEYS.join(', ')}`,
|
|
110
|
+
value: frontmatter[key],
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return errors;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate SKILL.md body length (L2 should be < 500 lines)
|
|
118
|
+
*/
|
|
119
|
+
export function validateSkillBodyLength(content) {
|
|
120
|
+
const errors = [];
|
|
121
|
+
const lines = content.split('\n');
|
|
122
|
+
if (lines.length > 500) {
|
|
123
|
+
errors.push({
|
|
124
|
+
field: 'content',
|
|
125
|
+
message: `SKILL.md body should be under 500 lines (got ${lines.length}). Consider moving detailed content to references/`,
|
|
126
|
+
value: lines.length,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return errors;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Normalize frontmatter keys (handle kebab-case variants)
|
|
133
|
+
*/
|
|
134
|
+
export function normalizeFrontmatter(frontmatter) {
|
|
135
|
+
return {
|
|
136
|
+
name: frontmatter.name,
|
|
137
|
+
description: frontmatter.description,
|
|
138
|
+
license: frontmatter.license,
|
|
139
|
+
compatibility: frontmatter.compatibility,
|
|
140
|
+
allowedTools: frontmatter.allowedTools || frontmatter['allowed-tools'],
|
|
141
|
+
metadata: frontmatter.metadata,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/personas/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StorageProviderFactory - Creates the appropriate storage provider
|
|
3
|
+
* based on environment configuration
|
|
4
|
+
*
|
|
5
|
+
* DESIGN PRINCIPLES:
|
|
6
|
+
* 1. Infrastructure config (bucket names, paths) comes from environment variables
|
|
7
|
+
* 2. Identity context (tenantId, sessionId) comes from the caller (JWT, etc.)
|
|
8
|
+
* 3. CLI mode uses LocalStorageProvider with default context (backward compatible)
|
|
9
|
+
* 4. Cloud mode requires explicit setContext() call before operations
|
|
10
|
+
*/
|
|
11
|
+
import { StorageProvider } from './provider.js';
|
|
12
|
+
import { LocalStorageProvider } from './local-provider.js';
|
|
13
|
+
import { GCPBucketProvider } from './gcp-bucket-provider.js';
|
|
14
|
+
import { StorageInfraConfig, StorageProviderType, StorageContext } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Create a storage provider instance
|
|
17
|
+
*
|
|
18
|
+
* For CLI mode: Provider is returned with default context, ready to use
|
|
19
|
+
* For Cloud mode: Caller must call setContext() with authenticated identity
|
|
20
|
+
*
|
|
21
|
+
* @param explicitInfraConfig - Explicit infrastructure config (overrides environment)
|
|
22
|
+
* @param providerType - Explicit provider type (overrides auto-detection)
|
|
23
|
+
*/
|
|
24
|
+
export declare function createStorageProvider(explicitInfraConfig?: StorageInfraConfig, providerType?: StorageProviderType): Promise<StorageProvider>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a local storage provider for CLI/Desktop mode
|
|
27
|
+
* Returns provider with default context, ready to use immediately
|
|
28
|
+
*
|
|
29
|
+
* @param basePath - Optional custom base path (defaults to ~/.jiva)
|
|
30
|
+
*/
|
|
31
|
+
export declare function createLocalProvider(basePath?: string): Promise<LocalStorageProvider>;
|
|
32
|
+
/**
|
|
33
|
+
* Create a GCP bucket provider for Cloud mode
|
|
34
|
+
*
|
|
35
|
+
* IMPORTANT: Caller MUST call setContext() with authenticated identity
|
|
36
|
+
* before performing any operations
|
|
37
|
+
*
|
|
38
|
+
* @param bucketName - GCP bucket name
|
|
39
|
+
* @param projectId - Optional GCP project ID
|
|
40
|
+
*/
|
|
41
|
+
export declare function createGCPProvider(bucketName: string, projectId?: string): Promise<GCPBucketProvider>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a storage provider and set context in one call
|
|
44
|
+
* Convenience method for cloud functions
|
|
45
|
+
*
|
|
46
|
+
* @param context - Authenticated user context (from JWT, etc.)
|
|
47
|
+
* @param infraConfig - Optional infrastructure config
|
|
48
|
+
* @param providerType - Optional explicit provider type
|
|
49
|
+
*/
|
|
50
|
+
export declare function createStorageProviderWithContext(context: StorageContext, infraConfig?: StorageInfraConfig, providerType?: StorageProviderType): Promise<StorageProvider>;
|
|
51
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/storage/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoErF;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,mBAAmB,CAAC,EAAE,kBAAkB,EACxC,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,eAAe,CAAC,CAwC1B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAK/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED;;;;;;;GAOG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,kBAAkB,EAChC,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,eAAe,CAAC,CAI1B"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StorageProviderFactory - Creates the appropriate storage provider
|
|
3
|
+
* based on environment configuration
|
|
4
|
+
*
|
|
5
|
+
* DESIGN PRINCIPLES:
|
|
6
|
+
* 1. Infrastructure config (bucket names, paths) comes from environment variables
|
|
7
|
+
* 2. Identity context (tenantId, sessionId) comes from the caller (JWT, etc.)
|
|
8
|
+
* 3. CLI mode uses LocalStorageProvider with default context (backward compatible)
|
|
9
|
+
* 4. Cloud mode requires explicit setContext() call before operations
|
|
10
|
+
*/
|
|
11
|
+
import { LocalStorageProvider } from './local-provider.js';
|
|
12
|
+
import { GCPBucketProvider } from './gcp-bucket-provider.js';
|
|
13
|
+
import { StorageProviderType } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Environment variable names for INFRASTRUCTURE configuration only
|
|
16
|
+
* Identity (tenantId, sessionId) must come from authenticated requests
|
|
17
|
+
*/
|
|
18
|
+
const ENV_VARS = {
|
|
19
|
+
// Provider selection
|
|
20
|
+
PROVIDER: 'JIVA_STORAGE_PROVIDER',
|
|
21
|
+
// Local filesystem
|
|
22
|
+
BASE_PATH: 'JIVA_STORAGE_PATH',
|
|
23
|
+
// GCP
|
|
24
|
+
GCP_BUCKET: 'JIVA_GCP_BUCKET',
|
|
25
|
+
GCP_PROJECT: 'JIVA_GCP_PROJECT',
|
|
26
|
+
GCP_KEY_FILE: 'JIVA_GCP_KEY_FILE',
|
|
27
|
+
// AWS S3 (future)
|
|
28
|
+
S3_BUCKET: 'JIVA_S3_BUCKET',
|
|
29
|
+
S3_REGION: 'JIVA_S3_REGION',
|
|
30
|
+
// Redis (future)
|
|
31
|
+
REDIS_URL: 'JIVA_REDIS_URL',
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Get infrastructure configuration from environment variables
|
|
35
|
+
*/
|
|
36
|
+
function getInfraConfigFromEnv() {
|
|
37
|
+
return {
|
|
38
|
+
basePath: process.env[ENV_VARS.BASE_PATH],
|
|
39
|
+
gcpBucketName: process.env[ENV_VARS.GCP_BUCKET],
|
|
40
|
+
gcpProjectId: process.env[ENV_VARS.GCP_PROJECT],
|
|
41
|
+
gcpKeyFilePath: process.env[ENV_VARS.GCP_KEY_FILE],
|
|
42
|
+
s3BucketName: process.env[ENV_VARS.S3_BUCKET],
|
|
43
|
+
s3Region: process.env[ENV_VARS.S3_REGION],
|
|
44
|
+
redisUrl: process.env[ENV_VARS.REDIS_URL],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Determine provider type from environment or explicit config
|
|
49
|
+
*/
|
|
50
|
+
function determineProviderType(infraConfig) {
|
|
51
|
+
// Explicit environment variable takes precedence
|
|
52
|
+
const envProvider = process.env[ENV_VARS.PROVIDER];
|
|
53
|
+
if (envProvider) {
|
|
54
|
+
return envProvider;
|
|
55
|
+
}
|
|
56
|
+
// Infer from available configuration
|
|
57
|
+
if (infraConfig?.gcpBucketName || process.env[ENV_VARS.GCP_BUCKET]) {
|
|
58
|
+
return StorageProviderType.GCP_BUCKET;
|
|
59
|
+
}
|
|
60
|
+
if (infraConfig?.s3BucketName || process.env[ENV_VARS.S3_BUCKET]) {
|
|
61
|
+
return StorageProviderType.AWS_S3;
|
|
62
|
+
}
|
|
63
|
+
if (infraConfig?.redisUrl || process.env[ENV_VARS.REDIS_URL]) {
|
|
64
|
+
return StorageProviderType.REDIS;
|
|
65
|
+
}
|
|
66
|
+
// Default to local filesystem
|
|
67
|
+
return StorageProviderType.LOCAL;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a storage provider instance
|
|
71
|
+
*
|
|
72
|
+
* For CLI mode: Provider is returned with default context, ready to use
|
|
73
|
+
* For Cloud mode: Caller must call setContext() with authenticated identity
|
|
74
|
+
*
|
|
75
|
+
* @param explicitInfraConfig - Explicit infrastructure config (overrides environment)
|
|
76
|
+
* @param providerType - Explicit provider type (overrides auto-detection)
|
|
77
|
+
*/
|
|
78
|
+
export async function createStorageProvider(explicitInfraConfig, providerType) {
|
|
79
|
+
// Merge environment config with explicit config
|
|
80
|
+
const envConfig = getInfraConfigFromEnv();
|
|
81
|
+
const infraConfig = {
|
|
82
|
+
basePath: explicitInfraConfig?.basePath || envConfig.basePath,
|
|
83
|
+
gcpBucketName: explicitInfraConfig?.gcpBucketName || envConfig.gcpBucketName,
|
|
84
|
+
gcpProjectId: explicitInfraConfig?.gcpProjectId || envConfig.gcpProjectId,
|
|
85
|
+
gcpKeyFilePath: explicitInfraConfig?.gcpKeyFilePath || envConfig.gcpKeyFilePath,
|
|
86
|
+
s3BucketName: explicitInfraConfig?.s3BucketName || envConfig.s3BucketName,
|
|
87
|
+
s3Region: explicitInfraConfig?.s3Region || envConfig.s3Region,
|
|
88
|
+
redisUrl: explicitInfraConfig?.redisUrl || envConfig.redisUrl,
|
|
89
|
+
};
|
|
90
|
+
// Determine provider type
|
|
91
|
+
const type = providerType || determineProviderType(infraConfig);
|
|
92
|
+
// Create provider instance
|
|
93
|
+
let provider;
|
|
94
|
+
switch (type) {
|
|
95
|
+
case StorageProviderType.GCP_BUCKET:
|
|
96
|
+
provider = new GCPBucketProvider(infraConfig);
|
|
97
|
+
break;
|
|
98
|
+
case StorageProviderType.AWS_S3:
|
|
99
|
+
throw new Error('AWS S3 provider not yet implemented. Coming soon!');
|
|
100
|
+
case StorageProviderType.REDIS:
|
|
101
|
+
throw new Error('Redis provider not yet implemented. Coming soon!');
|
|
102
|
+
case StorageProviderType.LOCAL:
|
|
103
|
+
default:
|
|
104
|
+
provider = new LocalStorageProvider(infraConfig);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
// Initialize provider
|
|
108
|
+
await provider.initialize();
|
|
109
|
+
return provider;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create a local storage provider for CLI/Desktop mode
|
|
113
|
+
* Returns provider with default context, ready to use immediately
|
|
114
|
+
*
|
|
115
|
+
* @param basePath - Optional custom base path (defaults to ~/.jiva)
|
|
116
|
+
*/
|
|
117
|
+
export async function createLocalProvider(basePath) {
|
|
118
|
+
const provider = new LocalStorageProvider({ basePath });
|
|
119
|
+
await provider.initialize();
|
|
120
|
+
// LocalStorageProvider has default context set in constructor
|
|
121
|
+
return provider;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Create a GCP bucket provider for Cloud mode
|
|
125
|
+
*
|
|
126
|
+
* IMPORTANT: Caller MUST call setContext() with authenticated identity
|
|
127
|
+
* before performing any operations
|
|
128
|
+
*
|
|
129
|
+
* @param bucketName - GCP bucket name
|
|
130
|
+
* @param projectId - Optional GCP project ID
|
|
131
|
+
*/
|
|
132
|
+
export async function createGCPProvider(bucketName, projectId) {
|
|
133
|
+
const provider = new GCPBucketProvider({
|
|
134
|
+
gcpBucketName: bucketName,
|
|
135
|
+
gcpProjectId: projectId,
|
|
136
|
+
});
|
|
137
|
+
await provider.initialize();
|
|
138
|
+
// Context must be set by caller via setContext()
|
|
139
|
+
return provider;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create a storage provider and set context in one call
|
|
143
|
+
* Convenience method for cloud functions
|
|
144
|
+
*
|
|
145
|
+
* @param context - Authenticated user context (from JWT, etc.)
|
|
146
|
+
* @param infraConfig - Optional infrastructure config
|
|
147
|
+
* @param providerType - Optional explicit provider type
|
|
148
|
+
*/
|
|
149
|
+
export async function createStorageProviderWithContext(context, infraConfig, providerType) {
|
|
150
|
+
const provider = await createStorageProvider(infraConfig, providerType);
|
|
151
|
+
provider.setContext(context);
|
|
152
|
+
return provider;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/storage/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCPBucketProvider - Google Cloud Storage based persistence
|
|
3
|
+
*
|
|
4
|
+
* Path structure:
|
|
5
|
+
* {bucket}/
|
|
6
|
+
* {tenantId}/
|
|
7
|
+
* config.json
|
|
8
|
+
* conversations/
|
|
9
|
+
* {conversationId}.json
|
|
10
|
+
* sessions/
|
|
11
|
+
* {sessionId}/
|
|
12
|
+
* state.json
|
|
13
|
+
* logs/
|
|
14
|
+
* {sessionId}.log
|
|
15
|
+
* directives/
|
|
16
|
+
* {workspaceHash}.md
|
|
17
|
+
*
|
|
18
|
+
* IMPORTANT: In cloud mode, setContext() MUST be called with tenantId/sessionId
|
|
19
|
+
* from the authenticated request (JWT) before any operations.
|
|
20
|
+
*/
|
|
21
|
+
import { StorageProvider } from './provider.js';
|
|
22
|
+
import { StorageInfraConfig, SavedConversation, ConversationMetadata, JivaState } from './types.js';
|
|
23
|
+
export declare class GCPBucketProvider extends StorageProvider {
|
|
24
|
+
private bucket;
|
|
25
|
+
private bucketName;
|
|
26
|
+
private configCache;
|
|
27
|
+
constructor(infraConfig: StorageInfraConfig);
|
|
28
|
+
initialize(): Promise<void>;
|
|
29
|
+
private readJson;
|
|
30
|
+
private writeJson;
|
|
31
|
+
private writeText;
|
|
32
|
+
private readText;
|
|
33
|
+
private deleteFile;
|
|
34
|
+
private listFiles;
|
|
35
|
+
private hashWorkspacePath;
|
|
36
|
+
private loadConfigCache;
|
|
37
|
+
getConfig<T>(key: string): Promise<T | undefined>;
|
|
38
|
+
setConfig<T>(key: string, value: T): Promise<void>;
|
|
39
|
+
getAllConfig(): Promise<Record<string, any>>;
|
|
40
|
+
private getConversationObjectPath;
|
|
41
|
+
saveConversation(conversation: SavedConversation): Promise<string>;
|
|
42
|
+
loadConversation(id: string): Promise<SavedConversation | null>;
|
|
43
|
+
listConversations(): Promise<ConversationMetadata[]>;
|
|
44
|
+
deleteConversation(id: string): Promise<void>;
|
|
45
|
+
loadDirective(workspacePath: string): Promise<string | undefined>;
|
|
46
|
+
saveDirective(workspacePath: string, content: string): Promise<void>;
|
|
47
|
+
flushLogs(): Promise<void>;
|
|
48
|
+
exportState(): Promise<JivaState>;
|
|
49
|
+
importState(state: JivaState): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Save complete state snapshot for cloud function handoff
|
|
52
|
+
*/
|
|
53
|
+
saveStateSnapshot(state: JivaState): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Load state snapshot for cloud function restoration
|
|
56
|
+
*/
|
|
57
|
+
loadStateSnapshot(): Promise<JivaState | null>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=gcp-bucket-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcp-bucket-provider.d.ts","sourceRoot":"","sources":["../../src/storage/gcp-bucket-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACV,MAAM,YAAY,CAAC;AA0BpB,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAA+C;gBAEtD,WAAW,EAAE,kBAAkB;IAWrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CnB,QAAQ;YAeR,SAAS;YAST,SAAS;YAST,QAAQ;YAeR,UAAU;YAUV,SAAS;IAOvB,OAAO,CAAC,iBAAiB;YAQX,eAAe;IAevB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKjD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,OAAO,CAAC,yBAAyB;IAI3B,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlE,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAK/D,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmBpD,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOjE,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB1B,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAgBjC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlD;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAIrD"}
|