@action-llama/action-llama 0.18.11 → 0.19.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/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +16 -158
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +10 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +125 -121
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/session-loop.d.ts +22 -0
- package/dist/agents/session-loop.d.ts.map +1 -0
- package/dist/agents/session-loop.js +159 -0
- package/dist/agents/session-loop.js.map +1 -0
- package/dist/agents/types.d.ts +17 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +16 -117
- package/dist/cli/commands/run-agent.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts.map +1 -1
- package/dist/control/routes/dashboard-api.js +43 -0
- package/dist/control/routes/dashboard-api.js.map +1 -1
- package/dist/control/routes/stats.d.ts.map +1 -1
- package/dist/control/routes/stats.js +54 -0
- package/dist/control/routes/stats.js.map +1 -1
- package/dist/db/connection.d.ts +20 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +34 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +27 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +180 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +1383 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +158 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/docker/local-runtime.js +1 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +1 -1
- package/dist/docker/ssh-docker-runtime.js.map +1 -1
- package/dist/events/event-queue-sqlite.d.ts +8 -3
- package/dist/events/event-queue-sqlite.d.ts.map +1 -1
- package/dist/events/event-queue-sqlite.js +42 -41
- package/dist/events/event-queue-sqlite.js.map +1 -1
- package/dist/execution/execution.d.ts +1 -0
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +8 -3
- package/dist/execution/execution.js.map +1 -1
- package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
- package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
- package/dist/frontend/index.html +2 -2
- package/dist/gateway/frontend.d.ts +20 -0
- package/dist/gateway/frontend.d.ts.map +1 -0
- package/dist/gateway/frontend.js +80 -0
- package/dist/gateway/frontend.js.map +1 -0
- package/dist/gateway/index.d.ts +3 -70
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +109 -214
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/middleware/auth.d.ts +12 -0
- package/dist/gateway/middleware/auth.d.ts.map +1 -0
- package/dist/gateway/middleware/auth.js +25 -0
- package/dist/gateway/middleware/auth.js.map +1 -0
- package/dist/gateway/middleware/request-logging.d.ts +9 -0
- package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
- package/dist/gateway/middleware/request-logging.js +26 -0
- package/dist/gateway/middleware/request-logging.js.map +1 -0
- package/dist/gateway/middleware/telemetry.d.ts +7 -0
- package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
- package/dist/gateway/middleware/telemetry.js +28 -0
- package/dist/gateway/middleware/telemetry.js.map +1 -0
- package/dist/gateway/routes/chat.d.ts +32 -0
- package/dist/gateway/routes/chat.d.ts.map +1 -0
- package/dist/gateway/routes/chat.js +24 -0
- package/dist/gateway/routes/chat.js.map +1 -0
- package/dist/gateway/routes/dashboard.d.ts +19 -0
- package/dist/gateway/routes/dashboard.d.ts.map +1 -0
- package/dist/gateway/routes/dashboard.js +26 -0
- package/dist/gateway/routes/dashboard.js.map +1 -0
- package/dist/gateway/routes/execution.d.ts +24 -0
- package/dist/gateway/routes/execution.d.ts.map +1 -0
- package/dist/gateway/routes/execution.js +13 -0
- package/dist/gateway/routes/execution.js.map +1 -0
- package/dist/gateway/routes/system.d.ts +14 -0
- package/dist/gateway/routes/system.d.ts.map +1 -0
- package/dist/gateway/routes/system.js +18 -0
- package/dist/gateway/routes/system.js.map +1 -0
- package/dist/gateway/routes/webhooks.d.ts +20 -0
- package/dist/gateway/routes/webhooks.d.ts.map +1 -0
- package/dist/gateway/routes/webhooks.js +11 -0
- package/dist/gateway/routes/webhooks.js.map +1 -0
- package/dist/gateway/stores.d.ts +21 -0
- package/dist/gateway/stores.d.ts.map +1 -0
- package/dist/gateway/stores.js +24 -0
- package/dist/gateway/stores.js.map +1 -0
- package/dist/gateway/types.d.ts +65 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/dependencies.d.ts +11 -0
- package/dist/scheduler/dependencies.d.ts.map +1 -0
- package/dist/scheduler/dependencies.js +34 -0
- package/dist/scheduler/dependencies.js.map +1 -0
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +8 -2
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +20 -176
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/orphan-recovery.d.ts +25 -0
- package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
- package/dist/scheduler/orphan-recovery.js +130 -0
- package/dist/scheduler/orphan-recovery.js.map +1 -0
- package/dist/scheduler/persistence.d.ts +18 -0
- package/dist/scheduler/persistence.d.ts.map +1 -0
- package/dist/scheduler/persistence.js +42 -0
- package/dist/scheduler/persistence.js.map +1 -0
- package/dist/scheduler/shutdown.d.ts +2 -0
- package/dist/scheduler/shutdown.d.ts.map +1 -1
- package/dist/scheduler/shutdown.js +8 -1
- package/dist/scheduler/shutdown.js.map +1 -1
- package/dist/shared/config/index.d.ts +5 -0
- package/dist/shared/config/index.d.ts.map +1 -0
- package/dist/shared/config/index.js +5 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/load-agent.d.ts +27 -0
- package/dist/shared/config/load-agent.d.ts.map +1 -0
- package/dist/shared/config/load-agent.js +169 -0
- package/dist/shared/config/load-agent.js.map +1 -0
- package/dist/shared/config/load-project.d.ts +22 -0
- package/dist/shared/config/load-project.d.ts.map +1 -0
- package/dist/shared/config/load-project.js +84 -0
- package/dist/shared/config/load-project.js.map +1 -0
- package/dist/shared/config/types.d.ts +115 -0
- package/dist/shared/config/types.d.ts.map +1 -0
- package/dist/shared/config/types.js +2 -0
- package/dist/shared/config/types.js.map +1 -0
- package/dist/shared/config/validate.d.ts +4 -0
- package/dist/shared/config/validate.d.ts.map +1 -0
- package/dist/shared/config/validate.js +23 -0
- package/dist/shared/config/validate.js.map +1 -0
- package/dist/shared/config.d.ts +4 -161
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +5 -269
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +12 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
- package/dist/shared/persistence/backends/sqlite.js +107 -135
- package/dist/shared/persistence/backends/sqlite.js.map +1 -1
- package/dist/shared/queue-sqlite.d.ts +9 -4
- package/dist/shared/queue-sqlite.d.ts.map +1 -1
- package/dist/shared/queue-sqlite.js +41 -36
- package/dist/shared/queue-sqlite.js.map +1 -1
- package/dist/shared/state-store-sqlite.d.ts +8 -3
- package/dist/shared/state-store-sqlite.d.ts.map +1 -1
- package/dist/shared/state-store-sqlite.js +55 -37
- package/dist/shared/state-store-sqlite.js.map +1 -1
- package/dist/stats/store.d.ts +11 -2
- package/dist/stats/store.d.ts.map +1 -1
- package/dist/stats/store.js +200 -291
- package/dist/stats/store.js.map +1 -1
- package/package.json +4 -1
- package/dist/agents/execution-engine.d.ts +0 -19
- package/dist/agents/execution-engine.d.ts.map +0 -1
- package/dist/agents/execution-engine.js +0 -179
- package/dist/agents/execution-engine.js.map +0 -1
- package/dist/agents/runner.d.ts +0 -38
- package/dist/agents/runner.d.ts.map +0 -1
- package/dist/agents/runner.js +0 -375
- package/dist/agents/runner.js.map +0 -1
- package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
- package/dist/frontend/assets/index-W_Sfmu8j.js +0 -13
package/dist/shared/config.d.ts
CHANGED
|
@@ -1,162 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
thinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
6
|
-
authType: "api_key" | "oauth_token" | "pi_auth";
|
|
7
|
-
}
|
|
8
|
-
export interface LocalConfig {
|
|
9
|
-
enabled: boolean;
|
|
10
|
-
image?: string;
|
|
11
|
-
memory?: string;
|
|
12
|
-
cpus?: number;
|
|
13
|
-
timeout?: number;
|
|
14
|
-
}
|
|
15
|
-
export interface VpsConfig {
|
|
16
|
-
provider: "vps";
|
|
17
|
-
host: string;
|
|
18
|
-
sshUser?: string;
|
|
19
|
-
sshPort?: number;
|
|
20
|
-
sshKeyPath?: string;
|
|
21
|
-
vultrInstanceId?: string;
|
|
22
|
-
vultrRegion?: string;
|
|
23
|
-
hetznerServerId?: number;
|
|
24
|
-
hetznerLocation?: string;
|
|
25
|
-
cloudflareZoneId?: string;
|
|
26
|
-
cloudflareDnsRecordId?: string;
|
|
27
|
-
cloudflareHostname?: string;
|
|
28
|
-
}
|
|
29
|
-
export type CloudConfig = VpsConfig;
|
|
30
|
-
export interface GatewayConfig {
|
|
31
|
-
port?: number;
|
|
32
|
-
url?: string;
|
|
33
|
-
maxChatSessions?: number;
|
|
34
|
-
}
|
|
35
|
-
export interface WebhookSourceConfig {
|
|
36
|
-
type: string;
|
|
37
|
-
credential?: string;
|
|
38
|
-
allowUnsigned?: boolean;
|
|
39
|
-
[credentialType: string]: string | boolean | undefined;
|
|
40
|
-
}
|
|
41
|
-
export interface TelemetryConfig {
|
|
42
|
-
enabled: boolean;
|
|
43
|
-
provider: "otel" | "none";
|
|
44
|
-
endpoint?: string;
|
|
45
|
-
serviceName?: string;
|
|
46
|
-
headers?: Record<string, string>;
|
|
47
|
-
samplingRate?: number;
|
|
48
|
-
}
|
|
49
|
-
export interface GlobalConfig {
|
|
50
|
-
models?: Record<string, ModelConfig>;
|
|
51
|
-
local?: LocalConfig;
|
|
52
|
-
gateway?: GatewayConfig;
|
|
53
|
-
webhooks?: Record<string, WebhookSourceConfig>;
|
|
54
|
-
telemetry?: TelemetryConfig;
|
|
55
|
-
projectName?: string;
|
|
56
|
-
maxReruns?: number;
|
|
57
|
-
maxCallDepth?: number;
|
|
58
|
-
/** @deprecated Use maxCallDepth instead */
|
|
59
|
-
maxTriggerDepth?: number;
|
|
60
|
-
/** @deprecated Use workQueueSize instead */
|
|
61
|
-
webhookQueueSize?: number;
|
|
62
|
-
workQueueSize?: number;
|
|
63
|
-
resourceLockTimeout?: number;
|
|
64
|
-
scale?: number;
|
|
65
|
-
defaultAgentScale?: number;
|
|
66
|
-
historyRetentionDays?: number;
|
|
67
|
-
}
|
|
68
|
-
export interface AgentHooks {
|
|
69
|
-
pre?: string[];
|
|
70
|
-
post?: string[];
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Per-agent `[runtime]` table from `agents/<name>/config.toml`.
|
|
74
|
-
* Controls how the agent process is launched.
|
|
75
|
-
*/
|
|
76
|
-
export interface AgentRuntimeType {
|
|
77
|
-
type?: "container" | "host-user";
|
|
78
|
-
run_as?: string;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
82
|
-
* Fields here are project-specific bindings — not portable.
|
|
83
|
-
*/
|
|
84
|
-
export interface AgentRuntimeConfig {
|
|
85
|
-
source?: string;
|
|
86
|
-
credentials?: string[];
|
|
87
|
-
models?: string[];
|
|
88
|
-
schedule?: string;
|
|
89
|
-
webhooks?: WebhookTrigger[];
|
|
90
|
-
hooks?: AgentHooks;
|
|
91
|
-
params?: Record<string, unknown>;
|
|
92
|
-
scale?: number;
|
|
93
|
-
timeout?: number;
|
|
94
|
-
runtime?: AgentRuntimeType;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Resolved agent config — the runtime representation after merging
|
|
98
|
-
* portable SKILL.md fields with per-agent config.toml and global defaults.
|
|
99
|
-
*/
|
|
100
|
-
export interface AgentConfig {
|
|
101
|
-
name: string;
|
|
102
|
-
description?: string;
|
|
103
|
-
credentials: string[];
|
|
104
|
-
models: ModelConfig[];
|
|
105
|
-
schedule?: string;
|
|
106
|
-
webhooks?: WebhookTrigger[];
|
|
107
|
-
hooks?: AgentHooks;
|
|
108
|
-
params?: Record<string, unknown>;
|
|
109
|
-
scale?: number;
|
|
110
|
-
timeout?: number;
|
|
111
|
-
license?: string;
|
|
112
|
-
compatibility?: string;
|
|
113
|
-
runtime?: AgentRuntimeType;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Load the raw project config.toml without environment merging.
|
|
117
|
-
* Used internally and by tests that need the raw project config.
|
|
118
|
-
*/
|
|
119
|
-
export declare function loadProjectConfig(projectPath: string): GlobalConfig;
|
|
120
|
-
/**
|
|
121
|
-
* Load the merged global config: config.toml → .env.toml → environment file.
|
|
122
|
-
*
|
|
123
|
-
* @param projectPath - path to the project directory
|
|
124
|
-
* @param envName - explicit environment name (from --env flag); takes precedence over .env.toml and AL_ENV
|
|
125
|
-
*/
|
|
126
|
-
export declare function loadGlobalConfig(projectPath: string, envName?: string): GlobalConfig;
|
|
127
|
-
/**
|
|
128
|
-
* Load the raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
129
|
-
*/
|
|
130
|
-
export declare function loadAgentRuntimeConfig(projectPath: string, agentName: string): AgentRuntimeConfig;
|
|
131
|
-
export declare function loadAgentConfig(projectPath: string, agentName: string): AgentConfig;
|
|
132
|
-
/**
|
|
133
|
-
* Load the SKILL.md body (markdown content after frontmatter).
|
|
134
|
-
* Used by image builder and container entry to get agent instructions.
|
|
135
|
-
*/
|
|
136
|
-
export declare function loadAgentBody(projectPath: string, agentName: string): string;
|
|
137
|
-
/**
|
|
138
|
-
* Load all files from `<projectPath>/shared/` recursively.
|
|
139
|
-
* Returns a map of relative paths (prefixed with `shared/`) to file contents.
|
|
140
|
-
* Returns an empty object if the directory doesn't exist.
|
|
141
|
-
*/
|
|
142
|
-
export declare function loadSharedFiles(projectPath: string): Record<string, string>;
|
|
143
|
-
export declare function validateAgentName(name: string): void;
|
|
144
|
-
export declare function validateAgentConfig(config: AgentConfig): void;
|
|
145
|
-
export declare function discoverAgents(projectPath: string): string[];
|
|
146
|
-
/**
|
|
147
|
-
* Update the project-level scale in config.toml
|
|
148
|
-
*/
|
|
149
|
-
export declare function updateProjectScale(projectPath: string, scale: number): void;
|
|
150
|
-
/**
|
|
151
|
-
* Get current project scale from config
|
|
152
|
-
*/
|
|
153
|
-
export declare function getProjectScale(projectPath: string): number;
|
|
154
|
-
/**
|
|
155
|
-
* Get current agent scale from config
|
|
156
|
-
*/
|
|
157
|
-
export declare function getAgentScale(projectPath: string, agentName: string): number;
|
|
158
|
-
/**
|
|
159
|
-
* Update a field in the per-agent config.toml.
|
|
160
|
-
*/
|
|
161
|
-
export declare function updateAgentRuntimeField(projectPath: string, agentName: string, field: string, value: unknown): void;
|
|
1
|
+
export * from "./config/types.js";
|
|
2
|
+
export * from "./config/load-project.js";
|
|
3
|
+
export * from "./config/load-agent.js";
|
|
4
|
+
export * from "./config/validate.js";
|
|
162
5
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
package/dist/shared/config.js
CHANGED
|
@@ -1,270 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { parseFrontmatter } from "./frontmatter.js";
|
|
7
|
-
// --- Loaders ---
|
|
8
|
-
/**
|
|
9
|
-
* Load the raw project config.toml without environment merging.
|
|
10
|
-
* Used internally and by tests that need the raw project config.
|
|
11
|
-
*/
|
|
12
|
-
export function loadProjectConfig(projectPath) {
|
|
13
|
-
const configPath = resolve(projectPath, "config.toml");
|
|
14
|
-
let config = {};
|
|
15
|
-
if (existsSync(configPath)) {
|
|
16
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
17
|
-
try {
|
|
18
|
-
config = parseTOML(raw);
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
throw new ConfigError(`Error parsing ${configPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return config;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Load the merged global config: config.toml → .env.toml → environment file.
|
|
28
|
-
*
|
|
29
|
-
* @param projectPath - path to the project directory
|
|
30
|
-
* @param envName - explicit environment name (from --env flag); takes precedence over .env.toml and AL_ENV
|
|
31
|
-
*/
|
|
32
|
-
export function loadGlobalConfig(projectPath, envName) {
|
|
33
|
-
let config = loadProjectConfig(projectPath);
|
|
34
|
-
// Layer 2: .env.toml overrides
|
|
35
|
-
const envToml = loadEnvToml(projectPath);
|
|
36
|
-
let projectName;
|
|
37
|
-
if (envToml) {
|
|
38
|
-
const { environment: _, projectName: pn, ...overrides } = envToml;
|
|
39
|
-
projectName = typeof pn === "string" ? pn : undefined;
|
|
40
|
-
if (Object.keys(overrides).length > 0) {
|
|
41
|
-
config = deepMerge(config, overrides);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Layer 3: environment file
|
|
45
|
-
const resolvedEnv = resolveEnvironmentName(envName, projectPath);
|
|
46
|
-
if (resolvedEnv) {
|
|
47
|
-
const envConfig = loadEnvironmentConfig(resolvedEnv);
|
|
48
|
-
config = deepMerge(config, envConfig);
|
|
49
|
-
}
|
|
50
|
-
// Set default telemetry config if not provided
|
|
51
|
-
if (!config.telemetry) {
|
|
52
|
-
config.telemetry = {
|
|
53
|
-
enabled: false,
|
|
54
|
-
provider: "none",
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// projectName is .env.toml-only — not deep-merged from config.toml or environment files
|
|
58
|
-
if (projectName) {
|
|
59
|
-
config.projectName = projectName;
|
|
60
|
-
}
|
|
61
|
-
// Validate defaultAgentScale
|
|
62
|
-
if (config.defaultAgentScale !== undefined) {
|
|
63
|
-
if (!Number.isInteger(config.defaultAgentScale) || config.defaultAgentScale < 0) {
|
|
64
|
-
throw new ConfigError("defaultAgentScale must be a non-negative integer.");
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return config;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Load the raw per-agent runtime config from `agents/<name>/config.toml`.
|
|
71
|
-
*/
|
|
72
|
-
export function loadAgentRuntimeConfig(projectPath, agentName) {
|
|
73
|
-
const configPath = resolve(projectPath, "agents", agentName, "config.toml");
|
|
74
|
-
if (!existsSync(configPath)) {
|
|
75
|
-
return {};
|
|
76
|
-
}
|
|
77
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
78
|
-
try {
|
|
79
|
-
return parseTOML(raw);
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
throw new ConfigError(`Error parsing ${configPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export function loadAgentConfig(projectPath, agentName) {
|
|
86
|
-
const agentDir = resolve(projectPath, "agents", agentName);
|
|
87
|
-
const skillPath = resolve(agentDir, "SKILL.md");
|
|
88
|
-
if (!existsSync(skillPath)) {
|
|
89
|
-
throw new ConfigError(`Agent config not found at ${skillPath}.`);
|
|
90
|
-
}
|
|
91
|
-
// Read portable fields from SKILL.md frontmatter
|
|
92
|
-
const raw = readFileSync(skillPath, "utf-8");
|
|
93
|
-
let data;
|
|
94
|
-
try {
|
|
95
|
-
({ data } = parseFrontmatter(raw));
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
throw new ConfigError(`Error parsing ${skillPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
99
|
-
}
|
|
100
|
-
// Read runtime config from per-agent config.toml
|
|
101
|
-
const runtime = loadAgentRuntimeConfig(projectPath, agentName);
|
|
102
|
-
const parsed = {
|
|
103
|
-
name: agentName,
|
|
104
|
-
// Portable fields from SKILL.md frontmatter
|
|
105
|
-
description: data.description,
|
|
106
|
-
license: data.license,
|
|
107
|
-
compatibility: data.compatibility,
|
|
108
|
-
// Runtime fields from config.toml
|
|
109
|
-
credentials: runtime.credentials,
|
|
110
|
-
schedule: runtime.schedule,
|
|
111
|
-
webhooks: runtime.webhooks,
|
|
112
|
-
hooks: runtime.hooks,
|
|
113
|
-
params: runtime.params,
|
|
114
|
-
scale: runtime.scale,
|
|
115
|
-
timeout: runtime.timeout,
|
|
116
|
-
runtime: runtime.runtime,
|
|
117
|
-
};
|
|
118
|
-
// Resolve named model references from global config
|
|
119
|
-
const rawModels = runtime.models;
|
|
120
|
-
if (!rawModels || !Array.isArray(rawModels) || rawModels.length === 0) {
|
|
121
|
-
throw new ConfigError(`Agent "${agentName}" must have a "models" field listing at least one named model.`);
|
|
122
|
-
}
|
|
123
|
-
const global = loadGlobalConfig(projectPath);
|
|
124
|
-
if (!global.models || Object.keys(global.models).length === 0) {
|
|
125
|
-
throw new ConfigError(`No models defined in config.toml [models]. Define at least one named model.`);
|
|
126
|
-
}
|
|
127
|
-
const resolvedModels = [];
|
|
128
|
-
for (const name of rawModels) {
|
|
129
|
-
const modelDef = global.models[name];
|
|
130
|
-
if (!modelDef) {
|
|
131
|
-
const available = Object.keys(global.models).join(", ");
|
|
132
|
-
throw new ConfigError(`Agent "${agentName}" references model "${name}" which is not defined in config.toml. Available: ${available}`);
|
|
133
|
-
}
|
|
134
|
-
resolvedModels.push(modelDef);
|
|
135
|
-
}
|
|
136
|
-
parsed.models = resolvedModels;
|
|
137
|
-
// Apply defaultAgentScale as fallback when no explicit per-agent scale is set
|
|
138
|
-
if (parsed.scale === undefined && global.defaultAgentScale !== undefined) {
|
|
139
|
-
parsed.scale = global.defaultAgentScale;
|
|
140
|
-
}
|
|
141
|
-
return parsed;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Load the SKILL.md body (markdown content after frontmatter).
|
|
145
|
-
* Used by image builder and container entry to get agent instructions.
|
|
146
|
-
*/
|
|
147
|
-
export function loadAgentBody(projectPath, agentName) {
|
|
148
|
-
const skillPath = resolve(projectPath, "agents", agentName, "SKILL.md");
|
|
149
|
-
if (!existsSync(skillPath))
|
|
150
|
-
return "";
|
|
151
|
-
const raw = readFileSync(skillPath, "utf-8");
|
|
152
|
-
try {
|
|
153
|
-
const { body } = parseFrontmatter(raw);
|
|
154
|
-
return body;
|
|
155
|
-
}
|
|
156
|
-
catch (err) {
|
|
157
|
-
throw new ConfigError(`Error parsing ${skillPath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Load all files from `<projectPath>/shared/` recursively.
|
|
162
|
-
* Returns a map of relative paths (prefixed with `shared/`) to file contents.
|
|
163
|
-
* Returns an empty object if the directory doesn't exist.
|
|
164
|
-
*/
|
|
165
|
-
export function loadSharedFiles(projectPath) {
|
|
166
|
-
const sharedDir = resolve(projectPath, "shared");
|
|
167
|
-
if (!existsSync(sharedDir) || !statSync(sharedDir).isDirectory()) {
|
|
168
|
-
return {};
|
|
169
|
-
}
|
|
170
|
-
const result = {};
|
|
171
|
-
function walk(dir) {
|
|
172
|
-
for (const entry of readdirSync(dir)) {
|
|
173
|
-
if (entry.startsWith("."))
|
|
174
|
-
continue;
|
|
175
|
-
const fullPath = resolve(dir, entry);
|
|
176
|
-
const stat = statSync(fullPath);
|
|
177
|
-
if (stat.isDirectory()) {
|
|
178
|
-
walk(fullPath);
|
|
179
|
-
}
|
|
180
|
-
else if (stat.isFile()) {
|
|
181
|
-
const relPath = join("shared", relative(sharedDir, fullPath));
|
|
182
|
-
result[relPath] = readFileSync(fullPath, "utf-8");
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
walk(sharedDir);
|
|
187
|
-
return result;
|
|
188
|
-
}
|
|
189
|
-
const AGENT_NAME_PATTERN = /^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9]))*$/;
|
|
190
|
-
export function validateAgentName(name) {
|
|
191
|
-
if (!name || name.length > 64) {
|
|
192
|
-
throw new ConfigError(`Agent name "${name}" is invalid: must be 1-64 characters.`);
|
|
193
|
-
}
|
|
194
|
-
if (!AGENT_NAME_PATTERN.test(name)) {
|
|
195
|
-
throw new ConfigError(`Agent name "${name}" is invalid: must contain only lowercase letters, numbers, and hyphens (cannot start or end with a hyphen, no consecutive hyphens).`);
|
|
196
|
-
}
|
|
197
|
-
if (name === "default") {
|
|
198
|
-
throw new ConfigError(`Agent name "default" is reserved. Choose a different name.`);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
export function validateAgentConfig(config) {
|
|
202
|
-
validateAgentName(config.name);
|
|
203
|
-
// scale = 0 disables the agent — skip schedule/webhook requirement
|
|
204
|
-
if (config.scale === 0)
|
|
205
|
-
return;
|
|
206
|
-
if (!config.schedule && (!config.webhooks || config.webhooks.length === 0)) {
|
|
207
|
-
throw new ConfigError(`Agent "${config.name}" must have a schedule, webhooks, or both.`);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
export function discoverAgents(projectPath) {
|
|
211
|
-
const excluded = new Set(["node_modules"]);
|
|
212
|
-
const agents = [];
|
|
213
|
-
if (!existsSync(projectPath))
|
|
214
|
-
return agents;
|
|
215
|
-
const agentsPath = resolve(projectPath, "agents");
|
|
216
|
-
if (!existsSync(agentsPath))
|
|
217
|
-
return agents;
|
|
218
|
-
for (const entry of readdirSync(agentsPath)) {
|
|
219
|
-
if (excluded.has(entry))
|
|
220
|
-
continue;
|
|
221
|
-
if (entry.startsWith("."))
|
|
222
|
-
continue;
|
|
223
|
-
const entryPath = resolve(agentsPath, entry);
|
|
224
|
-
if (!statSync(entryPath).isDirectory())
|
|
225
|
-
continue;
|
|
226
|
-
if (existsSync(resolve(entryPath, "SKILL.md"))) {
|
|
227
|
-
agents.push(entry);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return agents.sort();
|
|
231
|
-
}
|
|
232
|
-
// --- Configuration Update Functions ---
|
|
233
|
-
/**
|
|
234
|
-
* Update the project-level scale in config.toml
|
|
235
|
-
*/
|
|
236
|
-
export function updateProjectScale(projectPath, scale) {
|
|
237
|
-
const config = loadProjectConfig(projectPath);
|
|
238
|
-
config.scale = scale;
|
|
239
|
-
const configPath = resolve(projectPath, "config.toml");
|
|
240
|
-
const tomlStr = stringifyTOML(config);
|
|
241
|
-
writeFileSync(configPath, tomlStr);
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Get current project scale from config
|
|
245
|
-
*/
|
|
246
|
-
export function getProjectScale(projectPath) {
|
|
247
|
-
const config = loadGlobalConfig(projectPath);
|
|
248
|
-
return config.scale ?? 5; // Default project scale
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Get current agent scale from config
|
|
252
|
-
*/
|
|
253
|
-
export function getAgentScale(projectPath, agentName) {
|
|
254
|
-
const config = loadAgentConfig(projectPath, agentName);
|
|
255
|
-
// defaultAgentScale is already applied in loadAgentConfig, so just fall back to 1
|
|
256
|
-
return config.scale ?? 1;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Update a field in the per-agent config.toml.
|
|
260
|
-
*/
|
|
261
|
-
export function updateAgentRuntimeField(projectPath, agentName, field, value) {
|
|
262
|
-
const configPath = resolve(projectPath, "agents", agentName, "config.toml");
|
|
263
|
-
let existing = {};
|
|
264
|
-
if (existsSync(configPath)) {
|
|
265
|
-
existing = parseTOML(readFileSync(configPath, "utf-8"));
|
|
266
|
-
}
|
|
267
|
-
existing[field] = value;
|
|
268
|
-
writeFileSync(configPath, stringifyTOML(existing));
|
|
269
|
-
}
|
|
1
|
+
// Barrel re-export — preserves all existing import paths for `./shared/config.js`
|
|
2
|
+
export * from "./config/types.js";
|
|
3
|
+
export * from "./config/load-project.js";
|
|
4
|
+
export * from "./config/load-agent.js";
|
|
5
|
+
export * from "./config/validate.js";
|
|
270
6
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
@@ -44,5 +44,7 @@ export declare const CONSTANTS: {
|
|
|
44
44
|
CONTAINER_UID: number;
|
|
45
45
|
/** Container group ID */
|
|
46
46
|
CONTAINER_GID: number;
|
|
47
|
+
/** Max number of processes (PIDs) allowed inside an agent container */
|
|
48
|
+
CONTAINER_PIDS_LIMIT: number;
|
|
47
49
|
};
|
|
48
50
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,QAAA,MAAM,OAAO,EAAE,MAA4F,CAAC;AAsB5G,QAAA,MAAM,OAAO,QAAc,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAE/E;AAED,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,SAAS;IACpB,2DAA2D;;IAG3D,oDAAoD;;IAGpD,+EAA+E;6BACtD,MAAM;IAE/B,uDAAuD;kCACzB,MAAM;IAEpC,kDAAkD;+BACvB,MAAM,SAAS,MAAM;IAEhD,0CAA0C;;IAG1C,0BAA0B;;IAG1B,yEAAyE;;IAGzE,gFAAgF;;IAGhF,0DAA0D;4BAClC,MAAM;IAE9B,mDAAmD;;IAGnD,qDAAqD;;IAGrD,+DAA+D;;IAG/D,sDAAsD;;IAGtD,wBAAwB;;IAGxB,yBAAyB;;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,QAAA,MAAM,OAAO,EAAE,MAA4F,CAAC;AAsB5G,QAAA,MAAM,OAAO,QAAc,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAE/E;AAED,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,SAAS;IACpB,2DAA2D;;IAG3D,oDAAoD;;IAGpD,+EAA+E;6BACtD,MAAM;IAE/B,uDAAuD;kCACzB,MAAM;IAEpC,kDAAkD;+BACvB,MAAM,SAAS,MAAM;IAEhD,0CAA0C;;IAG1C,0BAA0B;;IAG1B,yEAAyE;;IAGzE,gFAAgF;;IAGhF,0DAA0D;4BAClC,MAAM;IAE9B,mDAAmD;;IAGnD,qDAAqD;;IAGrD,+DAA+D;;IAG/D,sDAAsD;;IAGtD,wBAAwB;;IAGxB,yBAAyB;;IAGzB,uEAAuE;;CAEC,CAAC"}
|
package/dist/shared/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/errors.js
CHANGED
|
@@ -23,7 +23,7 @@ export class AgentError extends Error {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
// --- Unrecoverable error detection ---
|
|
26
|
-
//
|
|
26
|
+
// Used by agents/session-loop.ts and agents/container-entry.ts.
|
|
27
27
|
export const UNRECOVERABLE_PATTERNS = [
|
|
28
28
|
"permission denied",
|
|
29
29
|
"could not read from remote repository",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAG,aAAa,CAAC;IAE9B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IAElC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,YAAY,CAAC;IAE7B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,wCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAG,aAAa,CAAC;IAE9B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IAElC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,YAAY,CAAC;IAE7B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,wCAAwC;AACxC,gEAAgE;AAEhE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,mBAAmB;IACnB,uCAAuC;IACvC,kDAAkD;IAClD,iBAAiB;IACjB,uBAAuB;IACvB,uCAAuC;IACvC,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC"}
|
package/dist/shared/paths.d.ts
CHANGED
|
@@ -8,4 +8,10 @@ export declare function logsDir(projectPath: string): string;
|
|
|
8
8
|
export declare function eventsDir(projectPath: string): string;
|
|
9
9
|
export declare function agentDir(projectPath: string, agentType: string): string;
|
|
10
10
|
export declare function statsDbPath(projectPath: string): string;
|
|
11
|
+
/** Path to the consolidated action-llama database. */
|
|
12
|
+
export declare function dbPath(projectPath: string): string;
|
|
13
|
+
/** @deprecated Use dbPath() instead. */
|
|
14
|
+
export declare function stateDbPath(projectPath: string): string;
|
|
15
|
+
/** @deprecated Use dbPath() instead. */
|
|
16
|
+
export declare function workQueueDbPath(projectPath: string): string;
|
|
11
17
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAA4B,CAAC;AACjD,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,eAAe,QAAsC,CAAC;AACnE,eAAO,MAAM,SAAS,QAAgC,CAAC;AACvD,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAA4B,CAAC;AACjD,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,eAAe,QAAsC,CAAC;AACnE,eAAO,MAAM,SAAS,QAAgC,CAAC;AACvD,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
package/dist/shared/paths.js
CHANGED
|
@@ -20,4 +20,16 @@ export function agentDir(projectPath, agentType) {
|
|
|
20
20
|
export function statsDbPath(projectPath) {
|
|
21
21
|
return resolve(projectPath, ".al", "stats.db");
|
|
22
22
|
}
|
|
23
|
+
/** Path to the consolidated action-llama database. */
|
|
24
|
+
export function dbPath(projectPath) {
|
|
25
|
+
return resolve(projectPath, ".al", "action-llama.db");
|
|
26
|
+
}
|
|
27
|
+
/** @deprecated Use dbPath() instead. */
|
|
28
|
+
export function stateDbPath(projectPath) {
|
|
29
|
+
return resolve(projectPath, ".al", "state.db");
|
|
30
|
+
}
|
|
31
|
+
/** @deprecated Use dbPath() instead. */
|
|
32
|
+
export function workQueueDbPath(projectPath) {
|
|
33
|
+
return resolve(projectPath, ".al", "work-queue.db");
|
|
34
|
+
}
|
|
23
35
|
//# sourceMappingURL=paths.js.map
|
package/dist/shared/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAErE,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,WAAmB;IACzC,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,SAAiB;IAC7D,OAAO,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAErE,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,WAAmB;IACzC,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,SAAiB;IAC7D,OAAO,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,MAAM,CAAC,WAAmB;IACxC,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACxD,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SQLite backend for unified persistence layer.
|
|
2
|
+
* SQLite backend for unified persistence layer using Drizzle ORM.
|
|
3
3
|
*
|
|
4
4
|
* Implements the PersistenceBackend interface with SQLite storage,
|
|
5
5
|
* combining key-value operations, event sourcing, and query capabilities
|
|
6
6
|
* in a single database with optimized indexes and transaction support.
|
|
7
|
+
*
|
|
8
|
+
* Supports two constructor signatures:
|
|
9
|
+
* new SqliteBackend(dbPath: string) — creates its own connection (backward compat)
|
|
10
|
+
* new SqliteBackend(db: AppDb) — uses a shared connection (preferred)
|
|
7
11
|
*/
|
|
12
|
+
import type { AppDb } from "../../../db/connection.js";
|
|
8
13
|
import type { PersistenceBackend, Event, EventQuery } from "../index.js";
|
|
9
14
|
export declare class SqliteBackend implements PersistenceBackend {
|
|
10
|
-
private dbPath;
|
|
11
15
|
private db;
|
|
12
|
-
private
|
|
16
|
+
private ownDb;
|
|
13
17
|
private sweepTimer;
|
|
14
18
|
private transactionDepth;
|
|
15
|
-
constructor(
|
|
19
|
+
constructor(dbOrPath: string | AppDb);
|
|
16
20
|
init(): Promise<void>;
|
|
17
21
|
kvGet<T>(namespace: string, key: string): Promise<T | null>;
|
|
18
22
|
kvSet<T>(namespace: string, key: string, value: T, ttlMs?: number): Promise<void>;
|
|
@@ -22,7 +26,7 @@ export declare class SqliteBackend implements PersistenceBackend {
|
|
|
22
26
|
key: string;
|
|
23
27
|
value: T;
|
|
24
28
|
}>>;
|
|
25
|
-
eventAppend(stream: string, event: Omit<Event,
|
|
29
|
+
eventAppend(stream: string, event: Omit<Event, "id" | "timestamp">): Promise<Event>;
|
|
26
30
|
eventReplay(stream: string, query?: EventQuery): AsyncIterable<Event>;
|
|
27
31
|
eventGetSnapshot<T>(stream: string, type: string): Promise<T | null>;
|
|
28
32
|
eventSaveSnapshot<T>(stream: string, type: string, data: T, eventId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/shared/persistence/backends/sqlite.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/shared/persistence/backends/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,qBAAa,aAAc,YAAW,kBAAkB;IACtD,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,QAAQ,EAAE,MAAM,GAAG,KAAK;IAU9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAiB3D,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAgBvE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAkClF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;IAwCtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUpE,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3F,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQrC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAU5D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAazD,OAAO,CAAC,KAAK;IAUP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B"}
|