@stoneforge/quarry 0.1.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/LICENSE +13 -0
- package/README.md +160 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +8 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/quarry-api.d.ts +268 -0
- package/dist/api/quarry-api.d.ts.map +1 -0
- package/dist/api/quarry-api.js +3905 -0
- package/dist/api/quarry-api.js.map +1 -0
- package/dist/api/types.d.ts +1359 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +204 -0
- package/dist/api/types.js.map +1 -0
- package/dist/bin/sf.d.ts +3 -0
- package/dist/bin/sf.d.ts.map +1 -0
- package/dist/bin/sf.js +9 -0
- package/dist/bin/sf.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +11 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +465 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/alias.d.ts +8 -0
- package/dist/cli/commands/alias.d.ts.map +1 -0
- package/dist/cli/commands/alias.js +70 -0
- package/dist/cli/commands/alias.js.map +1 -0
- package/dist/cli/commands/channel.d.ts +13 -0
- package/dist/cli/commands/channel.d.ts.map +1 -0
- package/dist/cli/commands/channel.js +680 -0
- package/dist/cli/commands/channel.js.map +1 -0
- package/dist/cli/commands/completion.d.ts +8 -0
- package/dist/cli/commands/completion.d.ts.map +1 -0
- package/dist/cli/commands/completion.js +87 -0
- package/dist/cli/commands/completion.js.map +1 -0
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +242 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/crud.d.ts +64 -0
- package/dist/cli/commands/crud.d.ts.map +1 -0
- package/dist/cli/commands/crud.js +805 -0
- package/dist/cli/commands/crud.js.map +1 -0
- package/dist/cli/commands/dep.d.ts +16 -0
- package/dist/cli/commands/dep.d.ts.map +1 -0
- package/dist/cli/commands/dep.js +499 -0
- package/dist/cli/commands/dep.js.map +1 -0
- package/dist/cli/commands/document.d.ts +12 -0
- package/dist/cli/commands/document.d.ts.map +1 -0
- package/dist/cli/commands/document.js +1039 -0
- package/dist/cli/commands/document.js.map +1 -0
- package/dist/cli/commands/embeddings.d.ts +12 -0
- package/dist/cli/commands/embeddings.d.ts.map +1 -0
- package/dist/cli/commands/embeddings.js +273 -0
- package/dist/cli/commands/embeddings.js.map +1 -0
- package/dist/cli/commands/entity.d.ts +16 -0
- package/dist/cli/commands/entity.d.ts.map +1 -0
- package/dist/cli/commands/entity.js +522 -0
- package/dist/cli/commands/entity.js.map +1 -0
- package/dist/cli/commands/gc.d.ts +10 -0
- package/dist/cli/commands/gc.d.ts.map +1 -0
- package/dist/cli/commands/gc.js +257 -0
- package/dist/cli/commands/gc.js.map +1 -0
- package/dist/cli/commands/help.d.ts +11 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +169 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/history.d.ts +9 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +160 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/identity.d.ts +18 -0
- package/dist/cli/commands/identity.d.ts.map +1 -0
- package/dist/cli/commands/identity.js +698 -0
- package/dist/cli/commands/identity.js.map +1 -0
- package/dist/cli/commands/inbox.d.ts +20 -0
- package/dist/cli/commands/inbox.d.ts.map +1 -0
- package/dist/cli/commands/inbox.js +493 -0
- package/dist/cli/commands/inbox.js.map +1 -0
- package/dist/cli/commands/init.d.ts +20 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +144 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +9 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +200 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/library.d.ts +12 -0
- package/dist/cli/commands/library.d.ts.map +1 -0
- package/dist/cli/commands/library.js +665 -0
- package/dist/cli/commands/library.js.map +1 -0
- package/dist/cli/commands/message.d.ts +11 -0
- package/dist/cli/commands/message.d.ts.map +1 -0
- package/dist/cli/commands/message.js +608 -0
- package/dist/cli/commands/message.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +17 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +698 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/playbook.d.ts +12 -0
- package/dist/cli/commands/playbook.d.ts.map +1 -0
- package/dist/cli/commands/playbook.js +730 -0
- package/dist/cli/commands/playbook.js.map +1 -0
- package/dist/cli/commands/reset.d.ts +12 -0
- package/dist/cli/commands/reset.d.ts.map +1 -0
- package/dist/cli/commands/reset.js +306 -0
- package/dist/cli/commands/reset.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +11 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +106 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +8 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +82 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +14 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +370 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/task.d.ts +25 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +1153 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/team.d.ts +13 -0
- package/dist/cli/commands/team.d.ts.map +1 -0
- package/dist/cli/commands/team.js +471 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/commands/workflow.d.ts +16 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +753 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/completion.d.ts +28 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +295 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/db.d.ts +38 -0
- package/dist/cli/db.d.ts.map +1 -0
- package/dist/cli/db.js +90 -0
- package/dist/cli/db.js.map +1 -0
- package/dist/cli/formatter.d.ts +87 -0
- package/dist/cli/formatter.d.ts.map +1 -0
- package/dist/cli/formatter.js +464 -0
- package/dist/cli/formatter.js.map +1 -0
- package/dist/cli/index.d.ts +33 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +45 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +256 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/plugin-loader.d.ts +39 -0
- package/dist/cli/plugin-loader.d.ts.map +1 -0
- package/dist/cli/plugin-loader.js +165 -0
- package/dist/cli/plugin-loader.js.map +1 -0
- package/dist/cli/plugin-registry.d.ts +50 -0
- package/dist/cli/plugin-registry.d.ts.map +1 -0
- package/dist/cli/plugin-registry.js +206 -0
- package/dist/cli/plugin-registry.js.map +1 -0
- package/dist/cli/plugin-types.d.ts +106 -0
- package/dist/cli/plugin-types.d.ts.map +1 -0
- package/dist/cli/plugin-types.js +103 -0
- package/dist/cli/plugin-types.js.map +1 -0
- package/dist/cli/runner.d.ts +35 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +340 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/suggest.d.ts +15 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +49 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/cli/types.d.ts +138 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +63 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/config.d.ts +86 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +348 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/defaults.d.ts +66 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +114 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/duration.d.ts +75 -0
- package/dist/config/duration.d.ts.map +1 -0
- package/dist/config/duration.js +190 -0
- package/dist/config/duration.js.map +1 -0
- package/dist/config/env.d.ts +67 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +207 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/file.d.ts +97 -0
- package/dist/config/file.d.ts.map +1 -0
- package/dist/config/file.js +365 -0
- package/dist/config/file.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/merge.d.ts +53 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +226 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/types.d.ts +257 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +72 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +55 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +251 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/http/index.d.ts +8 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +12 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/sync-handlers.d.ts +162 -0
- package/dist/http/sync-handlers.d.ts.map +1 -0
- package/dist/http/sync-handlers.js +271 -0
- package/dist/http/sync-handlers.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/server/index.d.ts +34 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3329 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/static.d.ts +18 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +71 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/ws/broadcaster.d.ts +8 -0
- package/dist/server/ws/broadcaster.d.ts.map +1 -0
- package/dist/server/ws/broadcaster.js +7 -0
- package/dist/server/ws/broadcaster.js.map +1 -0
- package/dist/server/ws/handler.d.ts +55 -0
- package/dist/server/ws/handler.d.ts.map +1 -0
- package/dist/server/ws/handler.js +160 -0
- package/dist/server/ws/handler.js.map +1 -0
- package/dist/services/blocked-cache.d.ts +297 -0
- package/dist/services/blocked-cache.d.ts.map +1 -0
- package/dist/services/blocked-cache.js +755 -0
- package/dist/services/blocked-cache.js.map +1 -0
- package/dist/services/dependency.d.ts +205 -0
- package/dist/services/dependency.d.ts.map +1 -0
- package/dist/services/dependency.js +566 -0
- package/dist/services/dependency.js.map +1 -0
- package/dist/services/embeddings/fusion.d.ts +33 -0
- package/dist/services/embeddings/fusion.d.ts.map +1 -0
- package/dist/services/embeddings/fusion.js +34 -0
- package/dist/services/embeddings/fusion.js.map +1 -0
- package/dist/services/embeddings/index.d.ts +12 -0
- package/dist/services/embeddings/index.d.ts.map +1 -0
- package/dist/services/embeddings/index.js +10 -0
- package/dist/services/embeddings/index.js.map +1 -0
- package/dist/services/embeddings/local-provider.d.ts +31 -0
- package/dist/services/embeddings/local-provider.d.ts.map +1 -0
- package/dist/services/embeddings/local-provider.js +80 -0
- package/dist/services/embeddings/local-provider.js.map +1 -0
- package/dist/services/embeddings/service.d.ts +76 -0
- package/dist/services/embeddings/service.d.ts.map +1 -0
- package/dist/services/embeddings/service.js +153 -0
- package/dist/services/embeddings/service.js.map +1 -0
- package/dist/services/embeddings/types.d.ts +70 -0
- package/dist/services/embeddings/types.d.ts.map +1 -0
- package/dist/services/embeddings/types.js +8 -0
- package/dist/services/embeddings/types.js.map +1 -0
- package/dist/services/id-length-cache.d.ts +156 -0
- package/dist/services/id-length-cache.d.ts.map +1 -0
- package/dist/services/id-length-cache.js +197 -0
- package/dist/services/id-length-cache.js.map +1 -0
- package/dist/services/inbox.d.ts +147 -0
- package/dist/services/inbox.d.ts.map +1 -0
- package/dist/services/inbox.js +428 -0
- package/dist/services/inbox.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +10 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/priority-service.d.ts +145 -0
- package/dist/services/priority-service.d.ts.map +1 -0
- package/dist/services/priority-service.js +272 -0
- package/dist/services/priority-service.js.map +1 -0
- package/dist/services/search-utils.d.ts +47 -0
- package/dist/services/search-utils.d.ts.map +1 -0
- package/dist/services/search-utils.js +83 -0
- package/dist/services/search-utils.js.map +1 -0
- package/dist/sync/hash.d.ts +48 -0
- package/dist/sync/hash.d.ts.map +1 -0
- package/dist/sync/hash.js +136 -0
- package/dist/sync/hash.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +16 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/merge.d.ts +80 -0
- package/dist/sync/merge.d.ts.map +1 -0
- package/dist/sync/merge.js +310 -0
- package/dist/sync/merge.js.map +1 -0
- package/dist/sync/serialization.d.ts +132 -0
- package/dist/sync/serialization.d.ts.map +1 -0
- package/dist/sync/serialization.js +306 -0
- package/dist/sync/serialization.js.map +1 -0
- package/dist/sync/service.d.ts +102 -0
- package/dist/sync/service.d.ts.map +1 -0
- package/dist/sync/service.js +493 -0
- package/dist/sync/service.js.map +1 -0
- package/dist/sync/types.d.ts +275 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +76 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/systems/identity.d.ts +479 -0
- package/dist/systems/identity.d.ts.map +1 -0
- package/dist/systems/identity.js +817 -0
- package/dist/systems/identity.js.map +1 -0
- package/dist/systems/index.d.ts +8 -0
- package/dist/systems/index.d.ts.map +1 -0
- package/dist/systems/index.js +29 -0
- package/dist/systems/index.js.map +1 -0
- package/package.json +121 -0
- package/web/assets/charts-vendor-D1YcbGux.js +55 -0
- package/web/assets/dnd-vendor-DmxE-_ZH.js +5 -0
- package/web/assets/editor-vendor-BxraAWts.js +279 -0
- package/web/assets/index-B77vv208.js +341 -0
- package/web/assets/index-CF_XnVLh.css +1 -0
- package/web/assets/router-vendor-BCKpRBrB.js +41 -0
- package/web/assets/ui-vendor-DUahGnbT.js +45 -0
- package/web/assets/utils-vendor-CfYKiENT.js +813 -0
- package/web/favicon.ico +0 -0
- package/web/index.html +23 -0
- package/web/logo.png +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Merging
|
|
3
|
+
*
|
|
4
|
+
* Deep merge utilities for combining configuration from multiple sources
|
|
5
|
+
* with precedence handling.
|
|
6
|
+
*/
|
|
7
|
+
import { getDefaultConfig } from './defaults.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Deep Merge Utilities
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a value is a plain object (not array, null, etc.)
|
|
13
|
+
*/
|
|
14
|
+
function isPlainObject(value) {
|
|
15
|
+
return (typeof value === 'object' &&
|
|
16
|
+
value !== null &&
|
|
17
|
+
!Array.isArray(value) &&
|
|
18
|
+
Object.getPrototypeOf(value) === Object.prototype);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Deep merges two objects, with source values overriding target values
|
|
22
|
+
* Arrays are replaced, not merged
|
|
23
|
+
*
|
|
24
|
+
* @param target - Base object
|
|
25
|
+
* @param source - Override object
|
|
26
|
+
* @returns Merged object
|
|
27
|
+
*/
|
|
28
|
+
export function deepMerge(target, source) {
|
|
29
|
+
const result = { ...target };
|
|
30
|
+
for (const key of Object.keys(source)) {
|
|
31
|
+
const sourceValue = source[key];
|
|
32
|
+
const targetValue = target[key];
|
|
33
|
+
if (sourceValue === undefined) {
|
|
34
|
+
// Skip undefined values - don't override with undefined
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {
|
|
38
|
+
// Recursively merge objects
|
|
39
|
+
result[key] = deepMerge(targetValue, sourceValue);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Replace value (arrays, primitives, etc.)
|
|
43
|
+
result[key] = sourceValue;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Merges partial configuration into a complete configuration
|
|
50
|
+
*
|
|
51
|
+
* @param base - Base configuration (typically defaults)
|
|
52
|
+
* @param partial - Partial configuration to merge in
|
|
53
|
+
* @returns Complete merged configuration
|
|
54
|
+
*/
|
|
55
|
+
export function mergeConfiguration(base, partial) {
|
|
56
|
+
const result = {
|
|
57
|
+
actor: partial.actor !== undefined ? partial.actor : base.actor,
|
|
58
|
+
database: partial.database !== undefined ? partial.database : base.database,
|
|
59
|
+
sync: {
|
|
60
|
+
autoExport: partial.sync?.autoExport !== undefined ? partial.sync.autoExport : base.sync.autoExport,
|
|
61
|
+
exportDebounce: partial.sync?.exportDebounce !== undefined ? partial.sync.exportDebounce : base.sync.exportDebounce,
|
|
62
|
+
elementsFile: partial.sync?.elementsFile !== undefined ? partial.sync.elementsFile : base.sync.elementsFile,
|
|
63
|
+
dependenciesFile: partial.sync?.dependenciesFile !== undefined ? partial.sync.dependenciesFile : base.sync.dependenciesFile,
|
|
64
|
+
},
|
|
65
|
+
playbooks: {
|
|
66
|
+
paths: partial.playbooks?.paths !== undefined ? partial.playbooks.paths : [...base.playbooks.paths],
|
|
67
|
+
},
|
|
68
|
+
tombstone: {
|
|
69
|
+
ttl: partial.tombstone?.ttl !== undefined ? partial.tombstone.ttl : base.tombstone.ttl,
|
|
70
|
+
minTtl: partial.tombstone?.minTtl !== undefined ? partial.tombstone.minTtl : base.tombstone.minTtl,
|
|
71
|
+
},
|
|
72
|
+
identity: {
|
|
73
|
+
mode: partial.identity?.mode !== undefined ? partial.identity.mode : base.identity.mode,
|
|
74
|
+
timeTolerance: partial.identity?.timeTolerance !== undefined ? partial.identity.timeTolerance : base.identity.timeTolerance,
|
|
75
|
+
},
|
|
76
|
+
plugins: {
|
|
77
|
+
packages: partial.plugins?.packages !== undefined ? partial.plugins.packages : [...(base.plugins?.packages ?? [])],
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Merges multiple partial configurations in order
|
|
84
|
+
* Later configurations override earlier ones
|
|
85
|
+
*
|
|
86
|
+
* @param base - Base configuration
|
|
87
|
+
* @param partials - Partial configurations to merge, in order
|
|
88
|
+
* @returns Complete merged configuration
|
|
89
|
+
*/
|
|
90
|
+
export function mergeConfigurations(base, ...partials) {
|
|
91
|
+
let result = base;
|
|
92
|
+
for (const partial of partials) {
|
|
93
|
+
result = mergeConfiguration(result, partial);
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Creates a configuration by merging defaults with partial config
|
|
99
|
+
*
|
|
100
|
+
* @param partial - Partial configuration
|
|
101
|
+
* @returns Complete configuration with defaults filled in
|
|
102
|
+
*/
|
|
103
|
+
export function createConfiguration(partial) {
|
|
104
|
+
const defaults = getDefaultConfig();
|
|
105
|
+
if (!partial) {
|
|
106
|
+
return defaults;
|
|
107
|
+
}
|
|
108
|
+
return mergeConfiguration(defaults, partial);
|
|
109
|
+
}
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// Clone Utilities
|
|
112
|
+
// ============================================================================
|
|
113
|
+
/**
|
|
114
|
+
* Creates a deep clone of a configuration
|
|
115
|
+
*/
|
|
116
|
+
export function cloneConfiguration(config) {
|
|
117
|
+
return {
|
|
118
|
+
actor: config.actor,
|
|
119
|
+
database: config.database,
|
|
120
|
+
sync: {
|
|
121
|
+
autoExport: config.sync.autoExport,
|
|
122
|
+
exportDebounce: config.sync.exportDebounce,
|
|
123
|
+
elementsFile: config.sync.elementsFile,
|
|
124
|
+
dependenciesFile: config.sync.dependenciesFile,
|
|
125
|
+
},
|
|
126
|
+
playbooks: {
|
|
127
|
+
paths: [...config.playbooks.paths],
|
|
128
|
+
},
|
|
129
|
+
tombstone: {
|
|
130
|
+
ttl: config.tombstone.ttl,
|
|
131
|
+
minTtl: config.tombstone.minTtl,
|
|
132
|
+
},
|
|
133
|
+
identity: {
|
|
134
|
+
mode: config.identity.mode,
|
|
135
|
+
timeTolerance: config.identity.timeTolerance,
|
|
136
|
+
},
|
|
137
|
+
plugins: {
|
|
138
|
+
packages: [...(config.plugins?.packages ?? [])],
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// ============================================================================
|
|
143
|
+
// Diff Utilities
|
|
144
|
+
// ============================================================================
|
|
145
|
+
/**
|
|
146
|
+
* Compares two configurations and returns the differences
|
|
147
|
+
*/
|
|
148
|
+
export function diffConfigurations(a, b) {
|
|
149
|
+
const diff = {};
|
|
150
|
+
if (a.actor !== b.actor) {
|
|
151
|
+
diff.actor = b.actor;
|
|
152
|
+
}
|
|
153
|
+
if (a.database !== b.database) {
|
|
154
|
+
diff.database = b.database;
|
|
155
|
+
}
|
|
156
|
+
// Sync diff
|
|
157
|
+
const syncDiff = {};
|
|
158
|
+
if (a.sync.autoExport !== b.sync.autoExport) {
|
|
159
|
+
syncDiff.autoExport = b.sync.autoExport;
|
|
160
|
+
}
|
|
161
|
+
if (a.sync.exportDebounce !== b.sync.exportDebounce) {
|
|
162
|
+
syncDiff.exportDebounce = b.sync.exportDebounce;
|
|
163
|
+
}
|
|
164
|
+
if (a.sync.elementsFile !== b.sync.elementsFile) {
|
|
165
|
+
syncDiff.elementsFile = b.sync.elementsFile;
|
|
166
|
+
}
|
|
167
|
+
if (a.sync.dependenciesFile !== b.sync.dependenciesFile) {
|
|
168
|
+
syncDiff.dependenciesFile = b.sync.dependenciesFile;
|
|
169
|
+
}
|
|
170
|
+
if (Object.keys(syncDiff).length > 0) {
|
|
171
|
+
diff.sync = syncDiff;
|
|
172
|
+
}
|
|
173
|
+
// Playbooks diff
|
|
174
|
+
if (JSON.stringify(a.playbooks.paths) !== JSON.stringify(b.playbooks.paths)) {
|
|
175
|
+
diff.playbooks = { paths: b.playbooks.paths };
|
|
176
|
+
}
|
|
177
|
+
// Tombstone diff
|
|
178
|
+
const tombstoneDiff = {};
|
|
179
|
+
if (a.tombstone.ttl !== b.tombstone.ttl) {
|
|
180
|
+
tombstoneDiff.ttl = b.tombstone.ttl;
|
|
181
|
+
}
|
|
182
|
+
if (a.tombstone.minTtl !== b.tombstone.minTtl) {
|
|
183
|
+
tombstoneDiff.minTtl = b.tombstone.minTtl;
|
|
184
|
+
}
|
|
185
|
+
if (Object.keys(tombstoneDiff).length > 0) {
|
|
186
|
+
diff.tombstone = tombstoneDiff;
|
|
187
|
+
}
|
|
188
|
+
// Identity diff
|
|
189
|
+
const identityDiff = {};
|
|
190
|
+
if (a.identity.mode !== b.identity.mode) {
|
|
191
|
+
identityDiff.mode = b.identity.mode;
|
|
192
|
+
}
|
|
193
|
+
if (a.identity.timeTolerance !== b.identity.timeTolerance) {
|
|
194
|
+
identityDiff.timeTolerance = b.identity.timeTolerance;
|
|
195
|
+
}
|
|
196
|
+
if (Object.keys(identityDiff).length > 0) {
|
|
197
|
+
diff.identity = identityDiff;
|
|
198
|
+
}
|
|
199
|
+
// Plugins diff
|
|
200
|
+
const aPackages = a.plugins?.packages ?? [];
|
|
201
|
+
const bPackages = b.plugins?.packages ?? [];
|
|
202
|
+
if (JSON.stringify(aPackages) !== JSON.stringify(bPackages)) {
|
|
203
|
+
diff.plugins = { packages: bPackages };
|
|
204
|
+
}
|
|
205
|
+
return diff;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Checks if two configurations are equal
|
|
209
|
+
*/
|
|
210
|
+
export function configurationsEqual(a, b) {
|
|
211
|
+
const aPackages = a.plugins?.packages ?? [];
|
|
212
|
+
const bPackages = b.plugins?.packages ?? [];
|
|
213
|
+
return (a.actor === b.actor &&
|
|
214
|
+
a.database === b.database &&
|
|
215
|
+
a.sync.autoExport === b.sync.autoExport &&
|
|
216
|
+
a.sync.exportDebounce === b.sync.exportDebounce &&
|
|
217
|
+
a.sync.elementsFile === b.sync.elementsFile &&
|
|
218
|
+
a.sync.dependenciesFile === b.sync.dependenciesFile &&
|
|
219
|
+
JSON.stringify(a.playbooks.paths) === JSON.stringify(b.playbooks.paths) &&
|
|
220
|
+
a.tombstone.ttl === b.tombstone.ttl &&
|
|
221
|
+
a.tombstone.minTtl === b.tombstone.minTtl &&
|
|
222
|
+
a.identity.mode === b.identity.mode &&
|
|
223
|
+
a.identity.timeTolerance === b.identity.timeTolerance &&
|
|
224
|
+
JSON.stringify(aPackages) === JSON.stringify(bPackages));
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/config/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration System Types
|
|
3
|
+
*
|
|
4
|
+
* Defines all configuration interfaces and types for the Stoneforge system.
|
|
5
|
+
* Supports file-based configuration, environment variables, and CLI overrides
|
|
6
|
+
* with a clear precedence hierarchy.
|
|
7
|
+
*/
|
|
8
|
+
import { IdentityMode } from '../systems/identity.js';
|
|
9
|
+
/**
|
|
10
|
+
* Duration in milliseconds
|
|
11
|
+
* Can be specified as number (ms) or duration string (e.g., '5m', '500ms')
|
|
12
|
+
*/
|
|
13
|
+
export type Duration = number;
|
|
14
|
+
/**
|
|
15
|
+
* Duration string format
|
|
16
|
+
* Supported units: ms, s, m, h, d
|
|
17
|
+
*/
|
|
18
|
+
export type DurationString = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}`;
|
|
19
|
+
/**
|
|
20
|
+
* Sync configuration settings
|
|
21
|
+
*/
|
|
22
|
+
export interface SyncConfig {
|
|
23
|
+
/** Auto-export on mutations (default: true) */
|
|
24
|
+
autoExport: boolean;
|
|
25
|
+
/** Debounce interval for exports (default: 500ms) */
|
|
26
|
+
exportDebounce: Duration;
|
|
27
|
+
/** Elements JSONL file name (default: 'elements.jsonl') */
|
|
28
|
+
elementsFile: string;
|
|
29
|
+
/** Dependencies JSONL file name (default: 'dependencies.jsonl') */
|
|
30
|
+
dependenciesFile: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Playbook configuration settings
|
|
34
|
+
*/
|
|
35
|
+
export interface PlaybookConfig {
|
|
36
|
+
/** Playbook search paths */
|
|
37
|
+
paths: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Tombstone (soft delete) configuration
|
|
41
|
+
*/
|
|
42
|
+
export interface TombstoneConfig {
|
|
43
|
+
/** Time-to-live for tombstones (default: 30 days = 2592000000ms) */
|
|
44
|
+
ttl: Duration;
|
|
45
|
+
/** Minimum TTL allowed (default: 7 days = 604800000ms) */
|
|
46
|
+
minTtl: Duration;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* CLI plugins configuration
|
|
50
|
+
*/
|
|
51
|
+
export interface PluginsConfig {
|
|
52
|
+
/** Package names that export CLI plugins */
|
|
53
|
+
packages: string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Identity system configuration
|
|
57
|
+
*/
|
|
58
|
+
export interface IdentityConfigSection {
|
|
59
|
+
/** Identity verification mode (default: 'soft') */
|
|
60
|
+
mode: IdentityMode;
|
|
61
|
+
/** Time tolerance for signature expiry (default: 5 minutes) */
|
|
62
|
+
timeTolerance: Duration;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Complete Stoneforge configuration
|
|
66
|
+
*/
|
|
67
|
+
export interface Configuration {
|
|
68
|
+
/** Default actor name for operations */
|
|
69
|
+
actor?: string;
|
|
70
|
+
/** Database filename (default: 'stoneforge.db') */
|
|
71
|
+
database: string;
|
|
72
|
+
/** Sync settings */
|
|
73
|
+
sync: SyncConfig;
|
|
74
|
+
/** Playbook settings */
|
|
75
|
+
playbooks: PlaybookConfig;
|
|
76
|
+
/** Tombstone settings */
|
|
77
|
+
tombstone: TombstoneConfig;
|
|
78
|
+
/** Identity settings */
|
|
79
|
+
identity: IdentityConfigSection;
|
|
80
|
+
/** CLI plugins settings */
|
|
81
|
+
plugins: PluginsConfig;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Partial configuration for merging
|
|
85
|
+
*/
|
|
86
|
+
export type PartialConfiguration = {
|
|
87
|
+
actor?: string;
|
|
88
|
+
database?: string;
|
|
89
|
+
sync?: Partial<SyncConfig>;
|
|
90
|
+
playbooks?: Partial<PlaybookConfig>;
|
|
91
|
+
tombstone?: Partial<TombstoneConfig>;
|
|
92
|
+
identity?: Partial<IdentityConfigSection>;
|
|
93
|
+
plugins?: Partial<PluginsConfig>;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Source of a configuration value
|
|
97
|
+
*/
|
|
98
|
+
export declare const ConfigSource: {
|
|
99
|
+
/** Built-in default value */
|
|
100
|
+
readonly DEFAULT: "default";
|
|
101
|
+
/** From config file */
|
|
102
|
+
readonly FILE: "file";
|
|
103
|
+
/** From environment variable */
|
|
104
|
+
readonly ENVIRONMENT: "environment";
|
|
105
|
+
/** From CLI flag */
|
|
106
|
+
readonly CLI: "cli";
|
|
107
|
+
};
|
|
108
|
+
export type ConfigSource = (typeof ConfigSource)[keyof typeof ConfigSource];
|
|
109
|
+
/**
|
|
110
|
+
* Configuration value with source tracking
|
|
111
|
+
*/
|
|
112
|
+
export interface TrackedValue<T> {
|
|
113
|
+
/** The configuration value */
|
|
114
|
+
value: T;
|
|
115
|
+
/** Where the value came from */
|
|
116
|
+
source: ConfigSource;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Configuration with source tracking for each value
|
|
120
|
+
*/
|
|
121
|
+
export interface TrackedConfiguration {
|
|
122
|
+
actor?: TrackedValue<string>;
|
|
123
|
+
database: TrackedValue<string>;
|
|
124
|
+
sync: {
|
|
125
|
+
autoExport: TrackedValue<boolean>;
|
|
126
|
+
exportDebounce: TrackedValue<Duration>;
|
|
127
|
+
elementsFile: TrackedValue<string>;
|
|
128
|
+
dependenciesFile: TrackedValue<string>;
|
|
129
|
+
};
|
|
130
|
+
playbooks: {
|
|
131
|
+
paths: TrackedValue<string[]>;
|
|
132
|
+
};
|
|
133
|
+
tombstone: {
|
|
134
|
+
ttl: TrackedValue<Duration>;
|
|
135
|
+
minTtl: TrackedValue<Duration>;
|
|
136
|
+
};
|
|
137
|
+
identity: {
|
|
138
|
+
mode: TrackedValue<IdentityMode>;
|
|
139
|
+
timeTolerance: TrackedValue<Duration>;
|
|
140
|
+
};
|
|
141
|
+
plugins: {
|
|
142
|
+
packages: TrackedValue<string[]>;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* YAML configuration file structure
|
|
147
|
+
* Uses snake_case to match YAML conventions
|
|
148
|
+
*/
|
|
149
|
+
export interface YamlConfigFile {
|
|
150
|
+
actor?: string;
|
|
151
|
+
database?: string;
|
|
152
|
+
sync?: {
|
|
153
|
+
auto_export?: boolean;
|
|
154
|
+
export_debounce?: string | number;
|
|
155
|
+
elements_file?: string;
|
|
156
|
+
dependencies_file?: string;
|
|
157
|
+
};
|
|
158
|
+
playbooks?: {
|
|
159
|
+
paths?: string[];
|
|
160
|
+
};
|
|
161
|
+
tombstone?: {
|
|
162
|
+
ttl?: string | number;
|
|
163
|
+
min_ttl?: string | number;
|
|
164
|
+
};
|
|
165
|
+
identity?: {
|
|
166
|
+
mode?: string;
|
|
167
|
+
time_tolerance?: string | number;
|
|
168
|
+
};
|
|
169
|
+
plugins?: {
|
|
170
|
+
packages?: string[];
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Environment variable names for configuration
|
|
175
|
+
*/
|
|
176
|
+
export declare const EnvVars: {
|
|
177
|
+
/** Default actor name */
|
|
178
|
+
readonly ACTOR: "STONEFORGE_ACTOR";
|
|
179
|
+
/** Database file path */
|
|
180
|
+
readonly DATABASE: "STONEFORGE_DB";
|
|
181
|
+
/** Config file path override */
|
|
182
|
+
readonly CONFIG: "STONEFORGE_CONFIG";
|
|
183
|
+
/** JSON output mode */
|
|
184
|
+
readonly JSON: "STONEFORGE_JSON";
|
|
185
|
+
/** Verbose/debug mode */
|
|
186
|
+
readonly VERBOSE: "STONEFORGE_VERBOSE";
|
|
187
|
+
/** Auto-export on mutations */
|
|
188
|
+
readonly SYNC_AUTO_EXPORT: "STONEFORGE_SYNC_AUTO_EXPORT";
|
|
189
|
+
/** Identity mode */
|
|
190
|
+
readonly IDENTITY_MODE: "STONEFORGE_IDENTITY_MODE";
|
|
191
|
+
};
|
|
192
|
+
export type EnvVar = (typeof EnvVars)[keyof typeof EnvVars];
|
|
193
|
+
/**
|
|
194
|
+
* Options for loading configuration
|
|
195
|
+
*/
|
|
196
|
+
export interface LoadConfigOptions {
|
|
197
|
+
/** Override config file path */
|
|
198
|
+
configPath?: string;
|
|
199
|
+
/** Skip environment variables */
|
|
200
|
+
skipEnv?: boolean;
|
|
201
|
+
/** Skip config file loading (use defaults only) */
|
|
202
|
+
skipFile?: boolean;
|
|
203
|
+
/** CLI flag overrides */
|
|
204
|
+
cliOverrides?: PartialConfiguration;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Result of configuration file discovery
|
|
208
|
+
*/
|
|
209
|
+
export interface ConfigFileDiscovery {
|
|
210
|
+
/** Path to found config file, if any */
|
|
211
|
+
path?: string;
|
|
212
|
+
/** Whether the file exists */
|
|
213
|
+
exists: boolean;
|
|
214
|
+
/** Directory containing .stoneforge */
|
|
215
|
+
stoneforgeDir?: string;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Result of configuration validation
|
|
219
|
+
*/
|
|
220
|
+
export interface ConfigValidationResult {
|
|
221
|
+
/** Whether validation passed */
|
|
222
|
+
valid: boolean;
|
|
223
|
+
/** Validation error messages */
|
|
224
|
+
errors: string[];
|
|
225
|
+
/** Warning messages (non-fatal) */
|
|
226
|
+
warnings: string[];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Valid configuration paths (as const array for runtime validation)
|
|
230
|
+
*/
|
|
231
|
+
export declare const VALID_CONFIG_PATHS: readonly ["actor", "database", "sync.autoExport", "sync.exportDebounce", "sync.elementsFile", "sync.dependenciesFile", "playbooks.paths", "tombstone.ttl", "tombstone.minTtl", "identity.mode", "identity.timeTolerance", "plugins.packages"];
|
|
232
|
+
/**
|
|
233
|
+
* Dot-notation paths for configuration values
|
|
234
|
+
*/
|
|
235
|
+
export type ConfigPath = (typeof VALID_CONFIG_PATHS)[number];
|
|
236
|
+
/**
|
|
237
|
+
* Type guard to check if a string is a valid ConfigPath
|
|
238
|
+
*/
|
|
239
|
+
export declare function isValidConfigPath(value: string): value is ConfigPath;
|
|
240
|
+
/**
|
|
241
|
+
* Maps config paths to their value types
|
|
242
|
+
*/
|
|
243
|
+
export interface ConfigPathTypes {
|
|
244
|
+
actor: string | undefined;
|
|
245
|
+
database: string;
|
|
246
|
+
'sync.autoExport': boolean;
|
|
247
|
+
'sync.exportDebounce': Duration;
|
|
248
|
+
'sync.elementsFile': string;
|
|
249
|
+
'sync.dependenciesFile': string;
|
|
250
|
+
'playbooks.paths': string[];
|
|
251
|
+
'tombstone.ttl': Duration;
|
|
252
|
+
'tombstone.minTtl': Duration;
|
|
253
|
+
'identity.mode': IdentityMode;
|
|
254
|
+
'identity.timeTolerance': Duration;
|
|
255
|
+
'plugins.packages': string[];
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration System Types
|
|
3
|
+
*
|
|
4
|
+
* Defines all configuration interfaces and types for the Stoneforge system.
|
|
5
|
+
* Supports file-based configuration, environment variables, and CLI overrides
|
|
6
|
+
* with a clear precedence hierarchy.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Configuration Source Tracking
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Source of a configuration value
|
|
13
|
+
*/
|
|
14
|
+
export const ConfigSource = {
|
|
15
|
+
/** Built-in default value */
|
|
16
|
+
DEFAULT: 'default',
|
|
17
|
+
/** From config file */
|
|
18
|
+
FILE: 'file',
|
|
19
|
+
/** From environment variable */
|
|
20
|
+
ENVIRONMENT: 'environment',
|
|
21
|
+
/** From CLI flag */
|
|
22
|
+
CLI: 'cli',
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Environment Variable Mapping
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Environment variable names for configuration
|
|
29
|
+
*/
|
|
30
|
+
export const EnvVars = {
|
|
31
|
+
/** Default actor name */
|
|
32
|
+
ACTOR: 'STONEFORGE_ACTOR',
|
|
33
|
+
/** Database file path */
|
|
34
|
+
DATABASE: 'STONEFORGE_DB',
|
|
35
|
+
/** Config file path override */
|
|
36
|
+
CONFIG: 'STONEFORGE_CONFIG',
|
|
37
|
+
/** JSON output mode */
|
|
38
|
+
JSON: 'STONEFORGE_JSON',
|
|
39
|
+
/** Verbose/debug mode */
|
|
40
|
+
VERBOSE: 'STONEFORGE_VERBOSE',
|
|
41
|
+
/** Auto-export on mutations */
|
|
42
|
+
SYNC_AUTO_EXPORT: 'STONEFORGE_SYNC_AUTO_EXPORT',
|
|
43
|
+
/** Identity mode */
|
|
44
|
+
IDENTITY_MODE: 'STONEFORGE_IDENTITY_MODE',
|
|
45
|
+
};
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Configuration Path Types
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Valid configuration paths (as const array for runtime validation)
|
|
51
|
+
*/
|
|
52
|
+
export const VALID_CONFIG_PATHS = [
|
|
53
|
+
'actor',
|
|
54
|
+
'database',
|
|
55
|
+
'sync.autoExport',
|
|
56
|
+
'sync.exportDebounce',
|
|
57
|
+
'sync.elementsFile',
|
|
58
|
+
'sync.dependenciesFile',
|
|
59
|
+
'playbooks.paths',
|
|
60
|
+
'tombstone.ttl',
|
|
61
|
+
'tombstone.minTtl',
|
|
62
|
+
'identity.mode',
|
|
63
|
+
'identity.timeTolerance',
|
|
64
|
+
'plugins.packages',
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* Type guard to check if a string is a valid ConfigPath
|
|
68
|
+
*/
|
|
69
|
+
export function isValidConfigPath(value) {
|
|
70
|
+
return VALID_CONFIG_PATHS.includes(value);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,6BAA6B;IAC7B,OAAO,EAAE,SAAS;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM;IACZ,gCAAgC;IAChC,WAAW,EAAE,aAAa;IAC1B,oBAAoB;IACpB,GAAG,EAAE,KAAK;CACF,CAAC;AA2EX,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,yBAAyB;IACzB,KAAK,EAAE,kBAAkB;IACzB,yBAAyB;IACzB,QAAQ,EAAE,eAAe;IACzB,gCAAgC;IAChC,MAAM,EAAE,mBAAmB;IAC3B,uBAAuB;IACvB,IAAI,EAAE,iBAAiB;IACvB,yBAAyB;IACzB,OAAO,EAAE,oBAAoB;IAC7B,+BAA+B;IAC/B,gBAAgB,EAAE,6BAA6B;IAC/C,oBAAoB;IACpB,aAAa,EAAE,0BAA0B;CACjC,CAAC;AA8CX,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,wBAAwB;IACxB,kBAAkB;CACV,CAAC;AAOX;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates configuration values for correctness and consistency.
|
|
5
|
+
*/
|
|
6
|
+
import type { Configuration, PartialConfiguration, ConfigValidationResult } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Validates an actor name
|
|
9
|
+
*/
|
|
10
|
+
export declare function isValidActor(value: unknown): value is string;
|
|
11
|
+
/**
|
|
12
|
+
* Validates actor and throws if invalid
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateActor(value: unknown): string;
|
|
15
|
+
/**
|
|
16
|
+
* Validates a database filename
|
|
17
|
+
*/
|
|
18
|
+
export declare function isValidDatabase(value: unknown): value is string;
|
|
19
|
+
/**
|
|
20
|
+
* Validates database and throws if invalid
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateDatabase(value: unknown): string;
|
|
23
|
+
/**
|
|
24
|
+
* Validates a JSONL filename
|
|
25
|
+
*/
|
|
26
|
+
export declare function isValidJsonlFilename(value: unknown): value is string;
|
|
27
|
+
/**
|
|
28
|
+
* Validates JSONL filename and throws if invalid
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateJsonlFilename(value: unknown, field: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Validates playbook paths array
|
|
33
|
+
*/
|
|
34
|
+
export declare function isValidPlaybookPaths(value: unknown): value is string[];
|
|
35
|
+
/**
|
|
36
|
+
* Validates playbook paths and throws if invalid
|
|
37
|
+
*/
|
|
38
|
+
export declare function validatePlaybookPaths(value: unknown): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Validates a complete configuration object
|
|
41
|
+
*
|
|
42
|
+
* @param config - Configuration to validate
|
|
43
|
+
* @returns Validated configuration
|
|
44
|
+
* @throws ValidationError if validation fails
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateConfiguration(config: unknown): Configuration;
|
|
47
|
+
/**
|
|
48
|
+
* Validates a configuration without throwing, returns result
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateConfigurationSafe(config: unknown): ConfigValidationResult;
|
|
51
|
+
/**
|
|
52
|
+
* Validates partial configuration for merging
|
|
53
|
+
*/
|
|
54
|
+
export declare function validatePartialConfiguration(config: PartialConfiguration): void;
|
|
55
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAcpB;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAM5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAuBpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAW/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA8BvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAUpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA8B3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAKtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAyB9D;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAoHpE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAejF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAiD/E"}
|