@loom-framework/core 0.1.0-alpha.180 → 0.1.0-alpha.182
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/builtin-skills/app-skill/SKILL.md +5 -6
- package/builtin-skills/app-skill/references/auth.md +79 -79
- package/builtin-skills/app-skill/references/events.md +237 -19
- package/builtin-skills/app-skill/references/evolution.md +59 -59
- package/builtin-skills/app-skill/references/model.md +48 -48
- package/builtin-skills/app-skill/references/notification.md +47 -47
- package/builtin-skills/app-skill/references/process-builder.md +173 -197
- package/builtin-skills/app-skill/references/process.md +274 -163
- package/builtin-skills/loom/SKILL.md +17 -10
- package/builtin-skills/loom/references/data-model.md +19 -3
- package/dist/backend/auth/rbac.js +1 -1
- package/dist/backend/auth/rbac.js.map +1 -1
- package/dist/backend/events/subscription-service.d.ts +46 -0
- package/dist/backend/events/subscription-service.d.ts.map +1 -0
- package/dist/backend/events/subscription-service.js +209 -0
- package/dist/backend/events/subscription-service.js.map +1 -0
- package/dist/backend/index.d.ts +1 -0
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/backend/index.js +27 -13
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/lifecycle/manager.d.ts +4 -2
- package/dist/backend/lifecycle/manager.d.ts.map +1 -1
- package/dist/backend/lifecycle/manager.js +9 -3
- package/dist/backend/lifecycle/manager.js.map +1 -1
- package/dist/backend/loom-paths.d.ts +3 -1
- package/dist/backend/loom-paths.d.ts.map +1 -1
- package/dist/backend/loom-paths.js +5 -1
- package/dist/backend/loom-paths.js.map +1 -1
- package/dist/backend/process/engine.d.ts +15 -1
- package/dist/backend/process/engine.d.ts.map +1 -1
- package/dist/backend/process/engine.js +79 -23
- package/dist/backend/process/engine.js.map +1 -1
- package/dist/backend/process/registry.d.ts +44 -9
- package/dist/backend/process/registry.d.ts.map +1 -1
- package/dist/backend/process/registry.js +208 -40
- package/dist/backend/process/registry.js.map +1 -1
- package/dist/backend/process/trigger.d.ts +18 -8
- package/dist/backend/process/trigger.d.ts.map +1 -1
- package/dist/backend/process/trigger.js +86 -32
- package/dist/backend/process/trigger.js.map +1 -1
- package/dist/backend/routes/ai-config.d.ts.map +1 -1
- package/dist/backend/routes/ai-config.js +1 -69
- package/dist/backend/routes/ai-config.js.map +1 -1
- package/dist/backend/routes/config-writer.d.ts +94 -0
- package/dist/backend/routes/config-writer.d.ts.map +1 -0
- package/dist/backend/routes/config-writer.js +522 -0
- package/dist/backend/routes/config-writer.js.map +1 -0
- package/dist/backend/routes/event-routes.d.ts +9 -2
- package/dist/backend/routes/event-routes.d.ts.map +1 -1
- package/dist/backend/routes/event-routes.js +101 -7
- package/dist/backend/routes/event-routes.js.map +1 -1
- package/dist/backend/routes/process-routes.d.ts +3 -0
- package/dist/backend/routes/process-routes.d.ts.map +1 -1
- package/dist/backend/routes/process-routes.js +120 -49
- package/dist/backend/routes/process-routes.js.map +1 -1
- package/dist/cli/commands/event.d.ts +12 -0
- package/dist/cli/commands/event.d.ts.map +1 -0
- package/dist/cli/commands/event.js +332 -0
- package/dist/cli/commands/event.js.map +1 -0
- package/dist/cli/commands/process.d.ts.map +1 -1
- package/dist/cli/commands/process.js +82 -44
- package/dist/cli/commands/process.js.map +1 -1
- package/dist/cli/generators/capability-generator.d.ts.map +1 -1
- package/dist/cli/generators/capability-generator.js +33 -34
- package/dist/cli/generators/capability-generator.js.map +1 -1
- package/dist/cli/helpers/system-page-config.d.ts +1 -1
- package/dist/cli/helpers/system-page-config.d.ts.map +1 -1
- package/dist/cli/helpers/system-page-config.js +9 -0
- package/dist/cli/helpers/system-page-config.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates/dashboard-page.d.ts.map +1 -1
- package/dist/cli/templates/dashboard-page.js +10 -3
- package/dist/cli/templates/dashboard-page.js.map +1 -1
- package/dist/cli/templates/event-management-page.d.ts +8 -0
- package/dist/cli/templates/event-management-page.d.ts.map +1 -0
- package/dist/cli/templates/event-management-page.js +598 -0
- package/dist/cli/templates/event-management-page.js.map +1 -0
- package/dist/cli/templates/login-page.d.ts +1 -1
- package/dist/cli/templates/login-page.js +1 -1
- package/dist/cli/templates/model-management-page.d.ts +1 -1
- package/dist/cli/templates/model-management-page.js +1 -1
- package/dist/cli/templates/notification-center-page.d.ts +1 -1
- package/dist/cli/templates/notification-center-page.js +1 -1
- package/dist/cli/templates/notification-detail-page.d.ts +1 -1
- package/dist/cli/templates/notification-detail-page.js +1 -1
- package/dist/cli/templates/process-management-page.d.ts +1 -1
- package/dist/cli/templates/process-management-page.js +1 -1
- package/dist/cli/templates/skill-management-page.d.ts +1 -1
- package/dist/cli/templates/skill-management-page.js +1 -1
- package/dist/cli/templates/user-management-page.d.ts +1 -1
- package/dist/cli/templates/user-management-page.js +1 -1
- package/dist/config.d.ts +327 -11
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -7
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/event.d.ts +6 -0
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/process.d.ts +45 -7
- package/dist/types/process.d.ts.map +1 -1
- package/package.json +1 -1
- package/builtin-skills/app-skill/references/process-metrics.md +0 -93
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TriggerManager - Manages cron jobs and EventBus subscriptions with debounce
|
|
3
|
+
*
|
|
4
|
+
* Supports M:N process-event bindings: one process can subscribe to multiple
|
|
5
|
+
* event patterns, and one event pattern can trigger multiple processes.
|
|
6
|
+
* Uses composite keys (processName → pattern → value) for subscriptions and timers.
|
|
3
7
|
*/
|
|
4
8
|
import cron from 'node-cron';
|
|
5
9
|
export class TriggerManager {
|
|
6
10
|
cronJobs = new Map();
|
|
11
|
+
// Composite keys: processName → pattern → unsubscriber
|
|
7
12
|
eventUnsubscribers = new Map();
|
|
13
|
+
// Composite keys: processName → pattern → timer
|
|
8
14
|
debounceTimers = new Map();
|
|
9
15
|
onTrigger;
|
|
10
16
|
constructor(onTrigger) {
|
|
@@ -33,13 +39,13 @@ export class TriggerManager {
|
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Start an event trigger with debounce.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
42
|
+
* Supports multiple subscriptions per process (M:N).
|
|
43
|
+
* If processName+pattern already exists, the old subscription is replaced.
|
|
38
44
|
*/
|
|
39
45
|
startEventSubscription(processName, eventBus, pattern, filter, debounceMs) {
|
|
40
|
-
this
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
// If this processName+pattern already exists, stop the old one first
|
|
47
|
+
this.stopEventSubscription(processName, pattern);
|
|
48
|
+
const debounce = debounceMs ?? 0;
|
|
43
49
|
const unsubscribe = eventBus.on(pattern, (event) => {
|
|
44
50
|
// Apply filter if specified
|
|
45
51
|
if (filter) {
|
|
@@ -47,35 +53,79 @@ export class TriggerManager {
|
|
|
47
53
|
if (!matches)
|
|
48
54
|
return;
|
|
49
55
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
if (debounce <= 0) {
|
|
57
|
+
// No debounce — trigger immediately
|
|
58
|
+
this.onTrigger(processName, 'event', event.payload);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Debounced: merge rapid events into a single trigger
|
|
62
|
+
let patternTimers = this.debounceTimers.get(processName);
|
|
63
|
+
const existing = patternTimers?.get(pattern);
|
|
53
64
|
if (existing)
|
|
54
65
|
clearTimeout(existing);
|
|
55
|
-
// Set new timer
|
|
56
66
|
const timer = setTimeout(() => {
|
|
57
|
-
|
|
58
|
-
this.onTrigger(processName, 'event',
|
|
67
|
+
patternTimers?.delete(pattern);
|
|
68
|
+
this.onTrigger(processName, 'event', event.payload);
|
|
59
69
|
}, debounce);
|
|
60
|
-
|
|
70
|
+
if (!patternTimers) {
|
|
71
|
+
patternTimers = new Map();
|
|
72
|
+
this.debounceTimers.set(processName, patternTimers);
|
|
73
|
+
}
|
|
74
|
+
patternTimers.set(pattern, timer);
|
|
75
|
+
this.debounceTimers.set(processName, patternTimers);
|
|
61
76
|
});
|
|
62
|
-
this.eventUnsubscribers.
|
|
77
|
+
let patternSubs = this.eventUnsubscribers.get(processName);
|
|
78
|
+
if (!patternSubs) {
|
|
79
|
+
patternSubs = new Map();
|
|
80
|
+
this.eventUnsubscribers.set(processName, patternSubs);
|
|
81
|
+
}
|
|
82
|
+
patternSubs.set(pattern, unsubscribe);
|
|
63
83
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Stop event subscription(s) for a process.
|
|
86
|
+
* If pattern is provided, stops only that specific subscription.
|
|
87
|
+
* If pattern is omitted, stops all event subscriptions for the process.
|
|
88
|
+
*/
|
|
89
|
+
stopEventSubscription(processName, pattern) {
|
|
90
|
+
if (pattern) {
|
|
91
|
+
// Stop a specific pattern subscription
|
|
92
|
+
const patternSubs = this.eventUnsubscribers.get(processName);
|
|
93
|
+
const unsub = patternSubs?.get(pattern);
|
|
94
|
+
if (unsub) {
|
|
95
|
+
unsub();
|
|
96
|
+
patternSubs.delete(pattern);
|
|
97
|
+
}
|
|
98
|
+
if (patternSubs?.size === 0) {
|
|
99
|
+
this.eventUnsubscribers.delete(processName);
|
|
100
|
+
}
|
|
101
|
+
const patternTimers = this.debounceTimers.get(processName);
|
|
102
|
+
const timer = patternTimers?.get(pattern);
|
|
103
|
+
if (timer) {
|
|
104
|
+
clearTimeout(timer);
|
|
105
|
+
patternTimers.delete(pattern);
|
|
106
|
+
}
|
|
107
|
+
if (patternTimers?.size === 0) {
|
|
108
|
+
this.debounceTimers.delete(processName);
|
|
109
|
+
}
|
|
69
110
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
111
|
+
else {
|
|
112
|
+
// Stop all event subscriptions for this process
|
|
113
|
+
const patternSubs = this.eventUnsubscribers.get(processName);
|
|
114
|
+
if (patternSubs) {
|
|
115
|
+
for (const unsub of patternSubs.values())
|
|
116
|
+
unsub();
|
|
117
|
+
this.eventUnsubscribers.delete(processName);
|
|
118
|
+
}
|
|
119
|
+
const patternTimers = this.debounceTimers.get(processName);
|
|
120
|
+
if (patternTimers) {
|
|
121
|
+
for (const timer of patternTimers.values())
|
|
122
|
+
clearTimeout(timer);
|
|
123
|
+
this.debounceTimers.delete(processName);
|
|
124
|
+
}
|
|
74
125
|
}
|
|
75
126
|
}
|
|
76
|
-
/** Restore
|
|
77
|
-
async
|
|
78
|
-
const processes = await registry.listProcesses({ status: 'active' });
|
|
127
|
+
/** Restore cron triggers from process definitions. Event subscriptions are NOT restored here — they are registered by the server startup loop in index.ts. */
|
|
128
|
+
async restoreTriggers(processes) {
|
|
79
129
|
for (const proc of processes) {
|
|
80
130
|
if (proc.cron) {
|
|
81
131
|
try {
|
|
@@ -85,9 +135,6 @@ export class TriggerManager {
|
|
|
85
135
|
console.error(`[TriggerManager] Failed to restore cron for "${proc.name}":`, err);
|
|
86
136
|
}
|
|
87
137
|
}
|
|
88
|
-
if (proc.onEvent && eventBus) {
|
|
89
|
-
this.startEventSubscription(proc.name, eventBus, proc.onEvent, proc.eventFilter, proc.eventDebounceMs);
|
|
90
|
-
}
|
|
91
138
|
}
|
|
92
139
|
}
|
|
93
140
|
stopAll() {
|
|
@@ -95,14 +142,21 @@ export class TriggerManager {
|
|
|
95
142
|
task.stop();
|
|
96
143
|
}
|
|
97
144
|
this.cronJobs.clear();
|
|
98
|
-
for (const
|
|
99
|
-
|
|
145
|
+
for (const patternSubs of this.eventUnsubscribers.values()) {
|
|
146
|
+
for (const unsub of patternSubs.values())
|
|
147
|
+
unsub();
|
|
100
148
|
}
|
|
101
149
|
this.eventUnsubscribers.clear();
|
|
102
|
-
for (const
|
|
103
|
-
|
|
150
|
+
for (const patternTimers of this.debounceTimers.values()) {
|
|
151
|
+
for (const timer of patternTimers.values())
|
|
152
|
+
clearTimeout(timer);
|
|
104
153
|
}
|
|
105
154
|
this.debounceTimers.clear();
|
|
106
155
|
}
|
|
156
|
+
/** Check if a process has any event subscriptions */
|
|
157
|
+
hasEventSubscriptions(processName) {
|
|
158
|
+
const patternSubs = this.eventUnsubscribers.get(processName);
|
|
159
|
+
return !!patternSubs && patternSubs.size > 0;
|
|
160
|
+
}
|
|
107
161
|
}
|
|
108
162
|
//# sourceMappingURL=trigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../../src/backend/process/trigger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../../src/backend/process/trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AA+GD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CA0GN"}
|
|
@@ -11,6 +11,7 @@ import { promises as fs } from 'fs';
|
|
|
11
11
|
import path from 'path';
|
|
12
12
|
import os from 'os';
|
|
13
13
|
import { loadConfig } from '../../config.js';
|
|
14
|
+
import { writeModelsToConfig } from './config-writer.js';
|
|
14
15
|
/** Mask authToken for display: show first 4 chars + *** */
|
|
15
16
|
function maskToken(token) {
|
|
16
17
|
if (!token)
|
|
@@ -49,75 +50,6 @@ async function seedModelsFromSettings(projectRoot) {
|
|
|
49
50
|
catch { /* no settings found */ }
|
|
50
51
|
return seedModels;
|
|
51
52
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Write models array to loom.config.ts using text replacement.
|
|
54
|
-
* Preserves file formatting, comments, and other config fields.
|
|
55
|
-
*/
|
|
56
|
-
async function writeModelsToConfig(projectRoot, models) {
|
|
57
|
-
const configPath = path.join(projectRoot, 'loom.config.ts');
|
|
58
|
-
let content = await fs.readFile(configPath, 'utf-8');
|
|
59
|
-
// Generate the new models array text (6-space base indent inside claudeCode)
|
|
60
|
-
const modelsStr = JSON.stringify(models, null, 2)
|
|
61
|
-
.split('\n')
|
|
62
|
-
.map((line, i) => i === 0 ? line : ' ' + line) // 6-space indent for array contents
|
|
63
|
-
.join('\n');
|
|
64
|
-
const modelsText = `models: ${modelsStr}`;
|
|
65
|
-
// Try to replace existing models field inside claudeCode
|
|
66
|
-
// Match: models: [...] — using bracket-depth counting to find the closing bracket
|
|
67
|
-
const modelsStartRegex = /(\bclaudeCode:\s*\{[\s\S]*?)models:\s*\[/;
|
|
68
|
-
const match = modelsStartRegex.exec(content);
|
|
69
|
-
if (match) {
|
|
70
|
-
// Find the opening bracket position
|
|
71
|
-
const arrayStart = match.index + match[0].length - 1; // position of '['
|
|
72
|
-
// Count bracket depth to find matching ']'
|
|
73
|
-
let depth = 1;
|
|
74
|
-
let pos = arrayStart + 1;
|
|
75
|
-
while (pos < content.length && depth > 0) {
|
|
76
|
-
if (content[pos] === '[')
|
|
77
|
-
depth++;
|
|
78
|
-
else if (content[pos] === ']')
|
|
79
|
-
depth--;
|
|
80
|
-
pos++;
|
|
81
|
-
}
|
|
82
|
-
const arrayEnd = pos; // position after closing ']'
|
|
83
|
-
// Replace the entire models: [...] section
|
|
84
|
-
const prefix = match[1]; // everything from claudeCode: { up to models:
|
|
85
|
-
content = content.slice(0, match.index) + prefix + modelsText + content.slice(arrayEnd);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// No models field yet — check if claudeCode object exists
|
|
89
|
-
const claudeCodeMatch = content.match(/(claudeCode:\s*\{)/);
|
|
90
|
-
if (claudeCodeMatch) {
|
|
91
|
-
// Insert after claudeCode: {
|
|
92
|
-
const insertPos = claudeCodeMatch.index + claudeCodeMatch[0].length;
|
|
93
|
-
const needsComma = !content.slice(insertPos).match(/^\s*\}/);
|
|
94
|
-
content = content.slice(0, insertPos) +
|
|
95
|
-
'\n ' + modelsText + (needsComma ? ',' : '') +
|
|
96
|
-
content.slice(insertPos);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
// No claudeCode object — need to add the entire ai section
|
|
100
|
-
// Check if ai object exists
|
|
101
|
-
const aiMatch = content.match(/(ai:\s*\{)/);
|
|
102
|
-
if (aiMatch) {
|
|
103
|
-
const insertPos = aiMatch.index + aiMatch[0].length;
|
|
104
|
-
content = content.slice(0, insertPos) +
|
|
105
|
-
'\n claudeCode: {\n ' + modelsText + ',\n },' +
|
|
106
|
-
content.slice(insertPos);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
// No ai section at all — insert before the closing of defineConfig
|
|
110
|
-
const configEnd = content.lastIndexOf('});');
|
|
111
|
-
if (configEnd !== -1) {
|
|
112
|
-
content = content.slice(0, configEnd) +
|
|
113
|
-
' ai: {\n claudeCode: {\n ' + modelsText + ',\n },\n },\n' +
|
|
114
|
-
content.slice(configEnd);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
await fs.writeFile(configPath, content, 'utf-8');
|
|
120
|
-
}
|
|
121
53
|
/** Format a model for API response with masked authToken */
|
|
122
54
|
function formatModel(m) {
|
|
123
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../../../src/backend/routes/ai-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../../../src/backend/routes/ai-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Writer — Surgically modify loom.config.ts
|
|
3
|
+
*
|
|
4
|
+
* Provides string/comment-aware bracket matching and section-level writes
|
|
5
|
+
* for processes.definitions, events.subscriptions, and ai.claudeCode.models.
|
|
6
|
+
*
|
|
7
|
+
* Key design decisions:
|
|
8
|
+
* - `findMatchingBracket()` tracks both `[]` and `{}` depth
|
|
9
|
+
* - `skipStringAndComment()` skips string literals, template literals, and comments
|
|
10
|
+
* - All writes are atomic: backup → modify → write → verify (failed writes restore from .bak)
|
|
11
|
+
* - `writeModelsToConfig()` refactored to use `findMatchingBracket()` for robustness
|
|
12
|
+
*/
|
|
13
|
+
import type { ModelConfig } from '../../types/ai.js';
|
|
14
|
+
import type { ProcessDefinitionConfig } from '../../types/process.js';
|
|
15
|
+
import type { EventSubscription } from '../../types/event.js';
|
|
16
|
+
/**
|
|
17
|
+
* Skip over a string literal, template literal, or comment starting at `pos`.
|
|
18
|
+
* Returns the position AFTER the closed string/comment.
|
|
19
|
+
* If the character at `pos` is not a string/comment opener, returns `pos` unchanged.
|
|
20
|
+
*/
|
|
21
|
+
export declare function skipStringAndComment(text: string, pos: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Find the matching bracket for an open bracket at `start`.
|
|
24
|
+
* Skips strings, comments, and tracks depth for both `[]` and `{}`.
|
|
25
|
+
* Returns the position AFTER the closing bracket.
|
|
26
|
+
*/
|
|
27
|
+
export declare function findMatchingBracket(text: string, start: number, open: string, close: string): number;
|
|
28
|
+
export interface ConfigSectionTarget {
|
|
29
|
+
/** Regex to locate the parent object (e.g., /processes:\s*\{/) */
|
|
30
|
+
parentRegex: RegExp;
|
|
31
|
+
/** Field key inside the parent (e.g., "definitions") */
|
|
32
|
+
fieldKey: string;
|
|
33
|
+
/** JSON string value for the field (e.g., "[{...}]") */
|
|
34
|
+
fieldValue: string;
|
|
35
|
+
/** Base indent level (spaces) inside the parent object */
|
|
36
|
+
baseIndent: number;
|
|
37
|
+
/** If parentRegex doesn't match, try this fallback parent (e.g., "processes:") */
|
|
38
|
+
fallbackParent?: string;
|
|
39
|
+
/** If no parent matches, insert this full section before defineConfig closing */
|
|
40
|
+
fallbackSection?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Write one or more sections to loom.config.ts.
|
|
44
|
+
* Creates a .bak backup before writing and restores on failure.
|
|
45
|
+
*/
|
|
46
|
+
export declare function writeConfigSection(projectRoot: string, sections: ConfigSectionTarget[]): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Write models array to loom.config.ts.
|
|
49
|
+
* Refactored to use findMatchingBracket() for string/comment awareness.
|
|
50
|
+
*/
|
|
51
|
+
export declare function writeModelsToConfig(projectRoot: string, models: ModelConfig[]): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Write process definitions to loom.config.ts (processes.definitions).
|
|
54
|
+
*/
|
|
55
|
+
export declare function writeProcessesToConfig(projectRoot: string, definitions: ProcessDefinitionConfig[]): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Write event subscriptions to loom.config.ts (events.subscriptions).
|
|
58
|
+
*/
|
|
59
|
+
export declare function writeEventSubscriptionsToConfig(projectRoot: string, subscriptions: EventSubscription[]): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Atomically write a process definition and its event subscription at the same time.
|
|
62
|
+
* This ensures that a process with a source always has its subscription in the same write.
|
|
63
|
+
* Uses writeConfigSection with multiple sections for atomicity (single backup/restore cycle).
|
|
64
|
+
*/
|
|
65
|
+
export declare function writeProcessWithSubscription(projectRoot: string, definition: ProcessDefinitionConfig, subscription?: {
|
|
66
|
+
pattern: string;
|
|
67
|
+
config: {
|
|
68
|
+
process: string;
|
|
69
|
+
filter?: Record<string, unknown>;
|
|
70
|
+
debounceMs?: number;
|
|
71
|
+
};
|
|
72
|
+
}, mode?: 'add' | 'remove'): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Read process definitions from loom.config.ts.
|
|
75
|
+
*/
|
|
76
|
+
export declare function readProcessDefinitions(projectRoot: string): Promise<ProcessDefinitionConfig[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Read event subscriptions from loom.config.ts.
|
|
79
|
+
*/
|
|
80
|
+
export declare function readEventSubscriptions(projectRoot: string): Promise<EventSubscription[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Find a subscription by its stable ID.
|
|
83
|
+
* Returns the subscription object or undefined if not found.
|
|
84
|
+
*/
|
|
85
|
+
export declare function findSubscriptionById(subscriptions: EventSubscription[], id: string): EventSubscription | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Ensure every subscription has a stable `id`.
|
|
88
|
+
* Assigns IDs to any subscriptions missing one, then writes back if changed.
|
|
89
|
+
* Returns the subscriptions with all IDs populated.
|
|
90
|
+
*
|
|
91
|
+
* Should be called once at server startup, not on every read.
|
|
92
|
+
*/
|
|
93
|
+
export declare function ensureSubscriptionIds(projectRoot: string): Promise<EventSubscription[]>;
|
|
94
|
+
//# sourceMappingURL=config-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/config-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO9D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqDtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpG;AAMD,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAoJD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEnG;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,uBAAuB,EAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,iBAAiB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,uBAAuB,EACnC,YAAY,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACtH,IAAI,GAAE,KAAK,GAAG,QAAgB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAQpG;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAQ9F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAElH;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgB7F"}
|