@fractary/faber 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +366 -76
- package/dist/cli/commands/logs.d.ts +6 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +215 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/repo.d.ts +6 -0
- package/dist/cli/commands/repo.d.ts.map +1 -0
- package/dist/cli/commands/repo.js +260 -0
- package/dist/cli/commands/repo.js.map +1 -0
- package/dist/cli/commands/spec.d.ts +6 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +184 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/work.d.ts +6 -0
- package/dist/cli/commands/work.d.ts.map +1 -0
- package/dist/cli/commands/work.js +113 -0
- package/dist/cli/commands/work.js.map +1 -0
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +214 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +814 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +438 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +264 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +491 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +21 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -36
- package/dist/index.js.map +1 -1
- package/dist/logs/index.d.ts +8 -0
- package/dist/logs/index.d.ts.map +1 -0
- package/dist/{types → logs}/index.js +7 -11
- package/dist/logs/index.js.map +1 -0
- package/dist/logs/manager.d.ts +97 -0
- package/dist/logs/manager.d.ts.map +1 -0
- package/dist/logs/manager.js +581 -0
- package/dist/logs/manager.js.map +1 -0
- package/dist/logs/types.d.ts +45 -0
- package/dist/logs/types.d.ts.map +1 -0
- package/dist/logs/types.js +8 -0
- package/dist/logs/types.js.map +1 -0
- package/dist/repo/git.d.ts +182 -0
- package/dist/repo/git.d.ts.map +1 -0
- package/dist/repo/git.js +496 -0
- package/dist/repo/git.js.map +1 -0
- package/dist/repo/index.d.ts +10 -0
- package/dist/repo/index.d.ts.map +1 -0
- package/dist/repo/index.js +29 -0
- package/dist/repo/index.js.map +1 -0
- package/dist/repo/manager.d.ts +179 -0
- package/dist/repo/manager.d.ts.map +1 -0
- package/dist/repo/manager.js +433 -0
- package/dist/repo/manager.js.map +1 -0
- package/dist/repo/providers/bitbucket.d.ts +38 -0
- package/dist/repo/providers/bitbucket.d.ts.map +1 -0
- package/dist/repo/providers/bitbucket.js +76 -0
- package/dist/repo/providers/bitbucket.js.map +1 -0
- package/dist/repo/providers/github.d.ts +30 -0
- package/dist/repo/providers/github.d.ts.map +1 -0
- package/dist/repo/providers/github.js +311 -0
- package/dist/repo/providers/github.js.map +1 -0
- package/dist/repo/providers/gitlab.d.ts +37 -0
- package/dist/repo/providers/gitlab.d.ts.map +1 -0
- package/dist/repo/providers/gitlab.js +74 -0
- package/dist/repo/providers/gitlab.js.map +1 -0
- package/dist/repo/providers/index.d.ts +9 -0
- package/dist/repo/providers/index.d.ts.map +1 -0
- package/dist/repo/providers/index.js +15 -0
- package/dist/repo/providers/index.js.map +1 -0
- package/dist/repo/types.d.ts +47 -0
- package/dist/repo/types.d.ts.map +1 -0
- package/dist/repo/types.js +8 -0
- package/dist/repo/types.js.map +1 -0
- package/dist/spec/index.d.ts +9 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +30 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/manager.d.ts +98 -0
- package/dist/spec/manager.d.ts.map +1 -0
- package/dist/spec/manager.js +650 -0
- package/dist/spec/manager.js.map +1 -0
- package/dist/spec/templates.d.ts +28 -0
- package/dist/spec/templates.d.ts.map +1 -0
- package/dist/spec/templates.js +357 -0
- package/dist/spec/templates.js.map +1 -0
- package/dist/spec/types.d.ts +53 -0
- package/dist/spec/types.d.ts.map +1 -0
- package/dist/spec/types.js +8 -0
- package/dist/spec/types.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +26 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/manager.d.ts +132 -0
- package/dist/state/manager.d.ts.map +1 -0
- package/dist/state/manager.js +517 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/types.d.ts +46 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +8 -0
- package/dist/state/types.js.map +1 -0
- package/dist/storage/codex-adapter.d.ts +62 -0
- package/dist/storage/codex-adapter.d.ts.map +1 -0
- package/dist/storage/codex-adapter.js +177 -0
- package/dist/storage/codex-adapter.js.map +1 -0
- package/dist/storage/index.d.ts +9 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +15 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local.d.ts +42 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +137 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/types.d.ts +603 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/work/index.d.ts +8 -0
- package/dist/work/index.d.ts.map +1 -0
- package/dist/work/index.js +26 -0
- package/dist/work/index.js.map +1 -0
- package/dist/work/manager.d.ts +112 -0
- package/dist/work/manager.d.ts.map +1 -0
- package/dist/work/manager.js +227 -0
- package/dist/work/manager.js.map +1 -0
- package/dist/work/providers/github.d.ts +40 -0
- package/dist/work/providers/github.d.ts.map +1 -0
- package/dist/work/providers/github.js +299 -0
- package/dist/work/providers/github.js.map +1 -0
- package/dist/work/providers/jira.d.ts +50 -0
- package/dist/work/providers/jira.d.ts.map +1 -0
- package/dist/work/providers/jira.js +99 -0
- package/dist/work/providers/jira.js.map +1 -0
- package/dist/work/providers/linear.d.ts +47 -0
- package/dist/work/providers/linear.d.ts.map +1 -0
- package/dist/work/providers/linear.js +93 -0
- package/dist/work/providers/linear.js.map +1 -0
- package/dist/work/types.d.ts +41 -0
- package/dist/work/types.d.ts.map +1 -0
- package/dist/work/types.js +8 -0
- package/dist/work/types.js.map +1 -0
- package/dist/workflow/faber.d.ts +107 -0
- package/dist/workflow/faber.d.ts.map +1 -0
- package/dist/workflow/faber.js +606 -0
- package/dist/workflow/faber.js.map +1 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +26 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/types.d.ts +54 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +8 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +42 -28
- package/dist/api.d.ts +0 -81
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -261
- package/dist/api.js.map +0 -1
- package/dist/bindings/claude-code/transformer.d.ts +0 -55
- package/dist/bindings/claude-code/transformer.d.ts.map +0 -1
- package/dist/bindings/claude-code/transformer.js +0 -271
- package/dist/bindings/claude-code/transformer.js.map +0 -1
- package/dist/bindings/index.d.ts +0 -21
- package/dist/bindings/index.d.ts.map +0 -1
- package/dist/bindings/index.js +0 -43
- package/dist/bindings/index.js.map +0 -1
- package/dist/core/concepts/base.d.ts +0 -89
- package/dist/core/concepts/base.d.ts.map +0 -1
- package/dist/core/concepts/base.js +0 -230
- package/dist/core/concepts/base.js.map +0 -1
- package/dist/core/concepts/eval.d.ts +0 -90
- package/dist/core/concepts/eval.d.ts.map +0 -1
- package/dist/core/concepts/eval.js +0 -118
- package/dist/core/concepts/eval.js.map +0 -1
- package/dist/core/concepts/index.d.ts +0 -9
- package/dist/core/concepts/index.d.ts.map +0 -1
- package/dist/core/concepts/index.js +0 -36
- package/dist/core/concepts/index.js.map +0 -1
- package/dist/core/concepts/role.d.ts +0 -19
- package/dist/core/concepts/role.d.ts.map +0 -1
- package/dist/core/concepts/role.js +0 -227
- package/dist/core/concepts/role.js.map +0 -1
- package/dist/core/concepts/team.d.ts +0 -57
- package/dist/core/concepts/team.d.ts.map +0 -1
- package/dist/core/concepts/team.js +0 -106
- package/dist/core/concepts/team.js.map +0 -1
- package/dist/core/concepts/tool.d.ts +0 -43
- package/dist/core/concepts/tool.d.ts.map +0 -1
- package/dist/core/concepts/tool.js +0 -104
- package/dist/core/concepts/tool.js.map +0 -1
- package/dist/core/concepts/workflow.d.ts +0 -87
- package/dist/core/concepts/workflow.d.ts.map +0 -1
- package/dist/core/concepts/workflow.js +0 -114
- package/dist/core/concepts/workflow.js.map +0 -1
- package/dist/core/config/index.d.ts +0 -34
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/config/index.js +0 -80
- package/dist/core/config/index.js.map +0 -1
- package/dist/core/config/loader.d.ts +0 -53
- package/dist/core/config/loader.d.ts.map +0 -1
- package/dist/core/config/loader.js +0 -234
- package/dist/core/config/loader.js.map +0 -1
- package/dist/core/contexts/index.d.ts +0 -36
- package/dist/core/contexts/index.d.ts.map +0 -1
- package/dist/core/contexts/index.js +0 -75
- package/dist/core/contexts/index.js.map +0 -1
- package/dist/core/contexts/loader.d.ts +0 -66
- package/dist/core/contexts/loader.d.ts.map +0 -1
- package/dist/core/contexts/loader.js +0 -261
- package/dist/core/contexts/loader.js.map +0 -1
- package/dist/core/overlays/index.d.ts +0 -31
- package/dist/core/overlays/index.d.ts.map +0 -1
- package/dist/core/overlays/index.js +0 -82
- package/dist/core/overlays/index.js.map +0 -1
- package/dist/core/overlays/resolver.d.ts +0 -65
- package/dist/core/overlays/resolver.d.ts.map +0 -1
- package/dist/core/overlays/resolver.js +0 -249
- package/dist/core/overlays/resolver.js.map +0 -1
- package/dist/types/bindings.d.ts +0 -59
- package/dist/types/bindings.d.ts.map +0 -1
- package/dist/types/bindings.js +0 -6
- package/dist/types/bindings.js.map +0 -1
- package/dist/types/concepts.d.ts +0 -131
- package/dist/types/concepts.d.ts.map +0 -1
- package/dist/types/concepts.js +0 -29
- package/dist/types/concepts.js.map +0 -1
- package/dist/types/config.d.ts +0 -42
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -6
- package/dist/types/config.js.map +0 -1
- package/dist/types/contexts.d.ts +0 -59
- package/dist/types/contexts.d.ts.map +0 -1
- package/dist/types/contexts.js +0 -17
- package/dist/types/contexts.js.map +0 -1
- package/dist/types/index.d.ts +0 -17
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/overlays.d.ts +0 -28
- package/dist/types/overlays.d.ts.map +0 -1
- package/dist/types/overlays.js +0 -15
- package/dist/types/overlays.js.map +0 -1
- package/dist/utils/file-system.d.ts +0 -40
- package/dist/utils/file-system.d.ts.map +0 -1
- package/dist/utils/file-system.js +0 -105
- package/dist/utils/file-system.js.map +0 -1
- package/dist/utils/template.d.ts +0 -28
- package/dist/utils/template.d.ts.map +0 -1
- package/dist/utils/template.js +0 -107
- package/dist/utils/template.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -42
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -94
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fractary/faber - Codex Adapter
|
|
4
|
+
*
|
|
5
|
+
* Optional integration with @fractary/codex for cross-project storage.
|
|
6
|
+
* Uses runtime detection - no compile-time dependency on Codex.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CodexAdapter = void 0;
|
|
10
|
+
exports.createStorage = createStorage;
|
|
11
|
+
const errors_1 = require("../errors");
|
|
12
|
+
const local_1 = require("./local");
|
|
13
|
+
const config_1 = require("../config");
|
|
14
|
+
/**
|
|
15
|
+
* Adapter for @fractary/codex integration
|
|
16
|
+
*/
|
|
17
|
+
class CodexAdapter {
|
|
18
|
+
codex = null;
|
|
19
|
+
constructor() {
|
|
20
|
+
this.codex = this.tryLoadCodex();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Try to load @fractary/codex at runtime
|
|
24
|
+
*/
|
|
25
|
+
tryLoadCodex() {
|
|
26
|
+
try {
|
|
27
|
+
// Dynamic require - no compile-time dependency
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const codexModule = require('@fractary/codex');
|
|
30
|
+
return new codexModule.Codex();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Codex not installed - this is fine
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if Codex is available
|
|
39
|
+
*/
|
|
40
|
+
isAvailable() {
|
|
41
|
+
return this.codex !== null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if Codex is enabled for a specific artifact type
|
|
45
|
+
*/
|
|
46
|
+
isEnabledFor(artifactType) {
|
|
47
|
+
if (!this.codex)
|
|
48
|
+
return false;
|
|
49
|
+
try {
|
|
50
|
+
const config = this.codex.getConfig();
|
|
51
|
+
return config.types?.[artifactType]?.enabled === true;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Store content via Codex
|
|
59
|
+
*/
|
|
60
|
+
async store(type, id, content) {
|
|
61
|
+
if (!this.codex) {
|
|
62
|
+
throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
|
|
63
|
+
}
|
|
64
|
+
return this.codex.store(type, id, content);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Retrieve content via Codex
|
|
68
|
+
*/
|
|
69
|
+
async retrieve(type, id) {
|
|
70
|
+
if (!this.codex) {
|
|
71
|
+
throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
|
|
72
|
+
}
|
|
73
|
+
return this.codex.get(type, id);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if content exists via Codex
|
|
77
|
+
*/
|
|
78
|
+
async exists(type, id) {
|
|
79
|
+
if (!this.codex) {
|
|
80
|
+
throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
|
|
81
|
+
}
|
|
82
|
+
return this.codex.exists(type, id);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* List content via Codex
|
|
86
|
+
*/
|
|
87
|
+
async list(type) {
|
|
88
|
+
if (!this.codex) {
|
|
89
|
+
throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
|
|
90
|
+
}
|
|
91
|
+
return this.codex.list(type);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Delete content via Codex
|
|
95
|
+
*/
|
|
96
|
+
async delete(type, id) {
|
|
97
|
+
if (!this.codex) {
|
|
98
|
+
throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
|
|
99
|
+
}
|
|
100
|
+
return this.codex.delete(type, id);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get a Codex reference URI
|
|
104
|
+
*/
|
|
105
|
+
getReference(type, id) {
|
|
106
|
+
return `codex://${type}/${id}`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.CodexAdapter = CodexAdapter;
|
|
110
|
+
/**
|
|
111
|
+
* Storage implementation that delegates to Codex
|
|
112
|
+
*/
|
|
113
|
+
class CodexStorage {
|
|
114
|
+
codex;
|
|
115
|
+
type;
|
|
116
|
+
constructor(codex, type) {
|
|
117
|
+
this.codex = codex;
|
|
118
|
+
this.type = type;
|
|
119
|
+
}
|
|
120
|
+
async write(id, content) {
|
|
121
|
+
await this.codex.store(this.type, id, content);
|
|
122
|
+
return this.codex.getReference(this.type, id);
|
|
123
|
+
}
|
|
124
|
+
async read(id) {
|
|
125
|
+
return this.codex.retrieve(this.type, id);
|
|
126
|
+
}
|
|
127
|
+
async exists(id) {
|
|
128
|
+
return this.codex.exists(this.type, id);
|
|
129
|
+
}
|
|
130
|
+
async list(prefix) {
|
|
131
|
+
const all = await this.codex.list(this.type);
|
|
132
|
+
if (!prefix)
|
|
133
|
+
return all;
|
|
134
|
+
return all.filter(item => item.startsWith(prefix));
|
|
135
|
+
}
|
|
136
|
+
async delete(id) {
|
|
137
|
+
return this.codex.delete(this.type, id);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Artifact type to storage path mapping
|
|
142
|
+
*/
|
|
143
|
+
const DEFAULT_PATHS = {
|
|
144
|
+
specs: '/specs',
|
|
145
|
+
logs: '.fractary/logs',
|
|
146
|
+
state: '.fractary/plugins/faber',
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Create storage for an artifact type
|
|
150
|
+
*
|
|
151
|
+
* Uses Codex if:
|
|
152
|
+
* 1. @fractary/codex is installed
|
|
153
|
+
* 2. Codex is configured and enabled for this artifact type
|
|
154
|
+
* 3. FABER config has use_codex: true for this artifact
|
|
155
|
+
*
|
|
156
|
+
* Otherwise falls back to local storage.
|
|
157
|
+
*/
|
|
158
|
+
function createStorage(artifactType, config) {
|
|
159
|
+
const codex = new CodexAdapter();
|
|
160
|
+
const projectRoot = (0, config_1.findProjectRoot)();
|
|
161
|
+
// Check if Codex should be used
|
|
162
|
+
const useCodex = config?.artifacts?.[artifactType]?.use_codex === true &&
|
|
163
|
+
codex.isAvailable() &&
|
|
164
|
+
codex.isEnabledFor(artifactType);
|
|
165
|
+
if (useCodex) {
|
|
166
|
+
return new CodexStorage(codex, artifactType);
|
|
167
|
+
}
|
|
168
|
+
// Fall back to local storage
|
|
169
|
+
const localPath = config?.artifacts?.[artifactType]?.local_path ||
|
|
170
|
+
DEFAULT_PATHS[artifactType];
|
|
171
|
+
// Resolve relative to project root
|
|
172
|
+
const fullPath = localPath.startsWith('/')
|
|
173
|
+
? `${projectRoot}${localPath}`
|
|
174
|
+
: `${projectRoot}/${localPath}`;
|
|
175
|
+
return new local_1.LocalStorage(fullPath);
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=codex-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/storage/codex-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fractary/faber - Storage Module
|
|
3
|
+
*
|
|
4
|
+
* Provides local storage for artifacts (specs, logs, state).
|
|
5
|
+
* When @fractary/codex is installed and enabled, delegates to Codex.
|
|
6
|
+
*/
|
|
7
|
+
export { LocalStorage } from './local';
|
|
8
|
+
export { CodexAdapter, createStorage } from './codex-adapter';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fractary/faber - Storage Module
|
|
4
|
+
*
|
|
5
|
+
* Provides local storage for artifacts (specs, logs, state).
|
|
6
|
+
* When @fractary/codex is installed and enabled, delegates to Codex.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createStorage = exports.CodexAdapter = exports.LocalStorage = void 0;
|
|
10
|
+
var local_1 = require("./local");
|
|
11
|
+
Object.defineProperty(exports, "LocalStorage", { enumerable: true, get: function () { return local_1.LocalStorage; } });
|
|
12
|
+
var codex_adapter_1 = require("./codex-adapter");
|
|
13
|
+
Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return codex_adapter_1.CodexAdapter; } });
|
|
14
|
+
Object.defineProperty(exports, "createStorage", { enumerable: true, get: function () { return codex_adapter_1.createStorage; } });
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,iDAA8D;AAArD,6GAAA,YAAY,OAAA;AAAE,8GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fractary/faber - Local Storage Implementation
|
|
3
|
+
*
|
|
4
|
+
* Direct filesystem storage for FABER artifacts.
|
|
5
|
+
*/
|
|
6
|
+
import { Storage } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Local filesystem storage implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare class LocalStorage implements Storage {
|
|
11
|
+
private basePath;
|
|
12
|
+
constructor(basePath: string);
|
|
13
|
+
private ensureDir;
|
|
14
|
+
private getFullPath;
|
|
15
|
+
/**
|
|
16
|
+
* Write content to storage
|
|
17
|
+
* @returns The path where content was written
|
|
18
|
+
*/
|
|
19
|
+
write(id: string, content: string): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Read content from storage
|
|
22
|
+
* @returns Content or null if not found
|
|
23
|
+
*/
|
|
24
|
+
read(id: string): Promise<string | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if content exists
|
|
27
|
+
*/
|
|
28
|
+
exists(id: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* List all items in storage (optionally with prefix)
|
|
31
|
+
*/
|
|
32
|
+
list(prefix?: string): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Delete content from storage
|
|
35
|
+
*/
|
|
36
|
+
delete(id: string): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Get the base path for this storage
|
|
39
|
+
*/
|
|
40
|
+
getBasePath(): string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAInB;;;OAGG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD;;;OAGG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1C;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+B9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fractary/faber - Local Storage Implementation
|
|
4
|
+
*
|
|
5
|
+
* Direct filesystem storage for FABER artifacts.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.LocalStorage = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
/**
|
|
45
|
+
* Local filesystem storage implementation
|
|
46
|
+
*/
|
|
47
|
+
class LocalStorage {
|
|
48
|
+
basePath;
|
|
49
|
+
constructor(basePath) {
|
|
50
|
+
this.basePath = basePath;
|
|
51
|
+
this.ensureDir(basePath);
|
|
52
|
+
}
|
|
53
|
+
ensureDir(dirPath) {
|
|
54
|
+
if (!fs.existsSync(dirPath)) {
|
|
55
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
getFullPath(id) {
|
|
59
|
+
return path.join(this.basePath, id);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Write content to storage
|
|
63
|
+
* @returns The path where content was written
|
|
64
|
+
*/
|
|
65
|
+
async write(id, content) {
|
|
66
|
+
const fullPath = this.getFullPath(id);
|
|
67
|
+
this.ensureDir(path.dirname(fullPath));
|
|
68
|
+
fs.writeFileSync(fullPath, content, 'utf-8');
|
|
69
|
+
return fullPath;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Read content from storage
|
|
73
|
+
* @returns Content or null if not found
|
|
74
|
+
*/
|
|
75
|
+
async read(id) {
|
|
76
|
+
const fullPath = this.getFullPath(id);
|
|
77
|
+
if (!fs.existsSync(fullPath)) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return fs.readFileSync(fullPath, 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if content exists
|
|
84
|
+
*/
|
|
85
|
+
async exists(id) {
|
|
86
|
+
const fullPath = this.getFullPath(id);
|
|
87
|
+
return fs.existsSync(fullPath);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* List all items in storage (optionally with prefix)
|
|
91
|
+
*/
|
|
92
|
+
async list(prefix) {
|
|
93
|
+
const searchPath = prefix
|
|
94
|
+
? path.join(this.basePath, prefix)
|
|
95
|
+
: this.basePath;
|
|
96
|
+
if (!fs.existsSync(searchPath)) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
const results = [];
|
|
100
|
+
const walkDir = (dir, base) => {
|
|
101
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
const relativePath = path.join(base, entry.name);
|
|
104
|
+
if (entry.isDirectory()) {
|
|
105
|
+
walkDir(path.join(dir, entry.name), relativePath);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
results.push(relativePath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
if (fs.statSync(searchPath).isDirectory()) {
|
|
113
|
+
walkDir(searchPath, prefix || '');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
results.push(prefix || '');
|
|
117
|
+
}
|
|
118
|
+
return results;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Delete content from storage
|
|
122
|
+
*/
|
|
123
|
+
async delete(id) {
|
|
124
|
+
const fullPath = this.getFullPath(id);
|
|
125
|
+
if (fs.existsSync(fullPath)) {
|
|
126
|
+
fs.unlinkSync(fullPath);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get the base path for this storage
|
|
131
|
+
*/
|
|
132
|
+
getBasePath() {
|
|
133
|
+
return this.basePath;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.LocalStorage = LocalStorage;
|
|
137
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
|