@ai-sdlc/orchestrator 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/dist/adapters.d.ts +60 -0
- package/dist/adapters.js +160 -0
- package/dist/admission.d.ts +49 -0
- package/dist/admission.js +90 -0
- package/dist/analysis/analyzer.d.ts +10 -0
- package/dist/analysis/analyzer.js +67 -0
- package/dist/analysis/complexity-scorer.d.ts +24 -0
- package/dist/analysis/complexity-scorer.js +39 -0
- package/dist/analysis/context-builder.d.ts +14 -0
- package/dist/analysis/context-builder.js +79 -0
- package/dist/analysis/convention-detector.d.ts +9 -0
- package/dist/analysis/convention-detector.js +177 -0
- package/dist/analysis/dependency-parser.d.ts +17 -0
- package/dist/analysis/dependency-parser.js +167 -0
- package/dist/analysis/file-walker.d.ts +18 -0
- package/dist/analysis/file-walker.js +158 -0
- package/dist/analysis/hotspot-analyzer.d.ts +28 -0
- package/dist/analysis/hotspot-analyzer.js +85 -0
- package/dist/analysis/index.d.ts +13 -0
- package/dist/analysis/index.js +12 -0
- package/dist/analysis/pattern-detector.d.ts +10 -0
- package/dist/analysis/pattern-detector.js +86 -0
- package/dist/analysis/types.d.ts +94 -0
- package/dist/analysis/types.js +5 -0
- package/dist/audit-archival.d.ts +48 -0
- package/dist/audit-archival.js +72 -0
- package/dist/audit-export.d.ts +45 -0
- package/dist/audit-export.js +100 -0
- package/dist/audit-extended.d.ts +28 -0
- package/dist/audit-extended.js +38 -0
- package/dist/audit-scheduler.d.ts +32 -0
- package/dist/audit-scheduler.js +52 -0
- package/dist/audit-sqlite-sink.d.ts +11 -0
- package/dist/audit-sqlite-sink.js +51 -0
- package/dist/autonomy-tracker.d.ts +76 -0
- package/dist/autonomy-tracker.js +277 -0
- package/dist/check-runs.d.ts +37 -0
- package/dist/check-runs.js +72 -0
- package/dist/cli/commands/agents.d.ts +6 -0
- package/dist/cli/commands/agents.js +33 -0
- package/dist/cli/commands/complexity.d.ts +6 -0
- package/dist/cli/commands/complexity.js +35 -0
- package/dist/cli/commands/cost.d.ts +6 -0
- package/dist/cli/commands/cost.js +53 -0
- package/dist/cli/commands/dashboard.d.ts +9 -0
- package/dist/cli/commands/dashboard.js +50 -0
- package/dist/cli/commands/health.d.ts +6 -0
- package/dist/cli/commands/health.js +33 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.js +127 -0
- package/dist/cli/commands/routing.d.ts +6 -0
- package/dist/cli/commands/routing.js +46 -0
- package/dist/cli/commands/run.d.ts +6 -0
- package/dist/cli/commands/run.js +36 -0
- package/dist/cli/commands/start.d.ts +6 -0
- package/dist/cli/commands/start.js +26 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.js +34 -0
- package/dist/cli/dashboard-renderer.d.ts +24 -0
- package/dist/cli/dashboard-renderer.js +129 -0
- package/dist/cli/formatters/index.d.ts +6 -0
- package/dist/cli/formatters/index.js +18 -0
- package/dist/cli/formatters/json.d.ts +5 -0
- package/dist/cli/formatters/json.js +7 -0
- package/dist/cli/formatters/minimal.d.ts +5 -0
- package/dist/cli/formatters/minimal.js +36 -0
- package/dist/cli/formatters/table.d.ts +5 -0
- package/dist/cli/formatters/table.js +184 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +35 -0
- package/dist/compliance-extended.d.ts +41 -0
- package/dist/compliance-extended.js +58 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.js +66 -0
- package/dist/context-enrichment.d.ts +33 -0
- package/dist/context-enrichment.js +125 -0
- package/dist/cost-governance.d.ts +22 -0
- package/dist/cost-governance.js +106 -0
- package/dist/cost-tracker.d.ts +75 -0
- package/dist/cost-tracker.js +177 -0
- package/dist/defaults.d.ts +140 -0
- package/dist/defaults.js +218 -0
- package/dist/deploy/flyio-target.d.ts +19 -0
- package/dist/deploy/flyio-target.js +114 -0
- package/dist/deploy/index.d.ts +15 -0
- package/dist/deploy/index.js +11 -0
- package/dist/deploy/kubernetes-target.d.ts +25 -0
- package/dist/deploy/kubernetes-target.js +124 -0
- package/dist/deploy/metrics-collector.d.ts +31 -0
- package/dist/deploy/metrics-collector.js +75 -0
- package/dist/deploy/rollout-controller.d.ts +42 -0
- package/dist/deploy/rollout-controller.js +192 -0
- package/dist/deploy/rollout-types.d.ts +86 -0
- package/dist/deploy/rollout-types.js +5 -0
- package/dist/deploy/types.d.ts +47 -0
- package/dist/deploy/types.js +5 -0
- package/dist/deploy/vercel-target.d.ts +16 -0
- package/dist/deploy/vercel-target.js +115 -0
- package/dist/discovery.d.ts +26 -0
- package/dist/discovery.js +46 -0
- package/dist/episodic-enhanced.d.ts +88 -0
- package/dist/episodic-enhanced.js +212 -0
- package/dist/execute.d.ts +81 -0
- package/dist/execute.js +703 -0
- package/dist/fix-ci.d.ts +61 -0
- package/dist/fix-ci.js +380 -0
- package/dist/handoff-executor.d.ts +61 -0
- package/dist/handoff-executor.js +119 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +87 -0
- package/dist/instrumented.d.ts +27 -0
- package/dist/instrumented.js +34 -0
- package/dist/logger.d.ts +17 -0
- package/dist/logger.js +37 -0
- package/dist/multi-repo/impact-analyzer.d.ts +22 -0
- package/dist/multi-repo/impact-analyzer.js +95 -0
- package/dist/multi-repo/index.d.ts +5 -0
- package/dist/multi-repo/index.js +4 -0
- package/dist/multi-repo/monorepo-detector.d.ts +16 -0
- package/dist/multi-repo/monorepo-detector.js +246 -0
- package/dist/multi-repo/service-map-builder.d.ts +24 -0
- package/dist/multi-repo/service-map-builder.js +235 -0
- package/dist/multi-repo/types.d.ts +54 -0
- package/dist/multi-repo/types.js +5 -0
- package/dist/notifications/index.d.ts +4 -0
- package/dist/notifications/index.js +4 -0
- package/dist/notifications/notification-router.d.ts +62 -0
- package/dist/notifications/notification-router.js +206 -0
- package/dist/notifications/slack-messenger.d.ts +26 -0
- package/dist/notifications/slack-messenger.js +69 -0
- package/dist/notifications/teams-messenger.d.ts +21 -0
- package/dist/notifications/teams-messenger.js +85 -0
- package/dist/notifications.d.ts +13 -0
- package/dist/notifications.js +15 -0
- package/dist/orchestration.d.ts +20 -0
- package/dist/orchestration.js +53 -0
- package/dist/orchestrator.d.ts +160 -0
- package/dist/orchestrator.js +372 -0
- package/dist/otel-exporter.d.ts +37 -0
- package/dist/otel-exporter.js +128 -0
- package/dist/plugin.d.ts +45 -0
- package/dist/plugin.js +8 -0
- package/dist/policy-evaluators.d.ts +40 -0
- package/dist/policy-evaluators.js +57 -0
- package/dist/process-escalation.d.ts +38 -0
- package/dist/process-escalation.js +129 -0
- package/dist/progressive-gates.d.ts +54 -0
- package/dist/progressive-gates.js +135 -0
- package/dist/provenance.d.ts +29 -0
- package/dist/provenance.js +61 -0
- package/dist/reconcilers.d.ts +28 -0
- package/dist/reconcilers.js +37 -0
- package/dist/runners/claude-code.d.ts +17 -0
- package/dist/runners/claude-code.js +200 -0
- package/dist/runners/codex.d.ts +19 -0
- package/dist/runners/codex.js +153 -0
- package/dist/runners/copilot-stub.d.ts +9 -0
- package/dist/runners/copilot-stub.js +15 -0
- package/dist/runners/copilot.d.ts +15 -0
- package/dist/runners/copilot.js +119 -0
- package/dist/runners/cursor-stub.d.ts +9 -0
- package/dist/runners/cursor-stub.js +15 -0
- package/dist/runners/cursor.d.ts +20 -0
- package/dist/runners/cursor.js +140 -0
- package/dist/runners/devin-stub.d.ts +9 -0
- package/dist/runners/devin-stub.js +15 -0
- package/dist/runners/generic-llm.d.ts +51 -0
- package/dist/runners/generic-llm.js +125 -0
- package/dist/runners/index.d.ts +8 -0
- package/dist/runners/index.js +7 -0
- package/dist/runners/runner-registry.d.ts +50 -0
- package/dist/runners/runner-registry.js +156 -0
- package/dist/runners/types.d.ts +59 -0
- package/dist/runners/types.js +7 -0
- package/dist/security.d.ts +51 -0
- package/dist/security.js +70 -0
- package/dist/shared.d.ts +134 -0
- package/dist/shared.js +284 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/state/index.js +3 -0
- package/dist/state/schema.d.ts +16 -0
- package/dist/state/schema.js +264 -0
- package/dist/state/store.d.ts +109 -0
- package/dist/state/store.js +644 -0
- package/dist/state/types.d.ts +190 -0
- package/dist/state/types.js +5 -0
- package/dist/structured-logger.d.ts +20 -0
- package/dist/structured-logger.js +64 -0
- package/dist/task-decomposer.d.ts +61 -0
- package/dist/task-decomposer.js +265 -0
- package/dist/telemetry-extended.d.ts +24 -0
- package/dist/telemetry-extended.js +31 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.js +7 -0
- package/dist/validate-agent-output.d.ts +30 -0
- package/dist/validate-agent-output.js +81 -0
- package/dist/validate-issue.d.ts +25 -0
- package/dist/validate-issue.js +102 -0
- package/dist/watch.d.ts +43 -0
- package/dist/watch.js +99 -0
- package/dist/webhook-manager.d.ts +38 -0
- package/dist/webhook-manager.js +66 -0
- package/package.json +59 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite DDL and migrations for the state store.
|
|
3
|
+
*/
|
|
4
|
+
export const CURRENT_SCHEMA_VERSION = 6;
|
|
5
|
+
export const SCHEMA_DDL = `
|
|
6
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
7
|
+
version INTEGER PRIMARY KEY,
|
|
8
|
+
applied_at TEXT DEFAULT (datetime('now'))
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS complexity_profile (
|
|
12
|
+
id INTEGER PRIMARY KEY,
|
|
13
|
+
repo_path TEXT NOT NULL,
|
|
14
|
+
score REAL NOT NULL,
|
|
15
|
+
files_count INTEGER,
|
|
16
|
+
modules_count INTEGER,
|
|
17
|
+
dependency_count INTEGER,
|
|
18
|
+
analyzed_at TEXT DEFAULT (datetime('now')),
|
|
19
|
+
raw_data TEXT
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
CREATE TABLE IF NOT EXISTS episodic_memory (
|
|
23
|
+
id INTEGER PRIMARY KEY,
|
|
24
|
+
issue_number INTEGER,
|
|
25
|
+
pr_number INTEGER,
|
|
26
|
+
pipeline_type TEXT NOT NULL,
|
|
27
|
+
outcome TEXT NOT NULL,
|
|
28
|
+
duration_ms INTEGER,
|
|
29
|
+
files_changed INTEGER,
|
|
30
|
+
error_message TEXT,
|
|
31
|
+
metadata TEXT,
|
|
32
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE TABLE IF NOT EXISTS autonomy_ledger (
|
|
36
|
+
id INTEGER PRIMARY KEY,
|
|
37
|
+
agent_name TEXT NOT NULL UNIQUE,
|
|
38
|
+
current_level INTEGER DEFAULT 0,
|
|
39
|
+
total_tasks INTEGER DEFAULT 0,
|
|
40
|
+
success_count INTEGER DEFAULT 0,
|
|
41
|
+
failure_count INTEGER DEFAULT 0,
|
|
42
|
+
last_task_at TEXT,
|
|
43
|
+
metrics TEXT
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE TABLE IF NOT EXISTS pipeline_runs (
|
|
47
|
+
id INTEGER PRIMARY KEY,
|
|
48
|
+
run_id TEXT NOT NULL UNIQUE,
|
|
49
|
+
issue_number INTEGER,
|
|
50
|
+
pr_number INTEGER,
|
|
51
|
+
pipeline_type TEXT NOT NULL,
|
|
52
|
+
status TEXT NOT NULL,
|
|
53
|
+
current_stage TEXT,
|
|
54
|
+
started_at TEXT DEFAULT (datetime('now')),
|
|
55
|
+
completed_at TEXT,
|
|
56
|
+
result TEXT,
|
|
57
|
+
gate_results TEXT
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE IF NOT EXISTS conventions (
|
|
61
|
+
id INTEGER PRIMARY KEY,
|
|
62
|
+
category TEXT NOT NULL,
|
|
63
|
+
pattern TEXT NOT NULL,
|
|
64
|
+
confidence REAL,
|
|
65
|
+
examples TEXT,
|
|
66
|
+
detected_at TEXT DEFAULT (datetime('now'))
|
|
67
|
+
);
|
|
68
|
+
`;
|
|
69
|
+
export const MIGRATION_V2 = `
|
|
70
|
+
ALTER TABLE complexity_profile ADD COLUMN architectural_patterns TEXT;
|
|
71
|
+
ALTER TABLE complexity_profile ADD COLUMN hotspots TEXT;
|
|
72
|
+
ALTER TABLE complexity_profile ADD COLUMN module_graph TEXT;
|
|
73
|
+
ALTER TABLE complexity_profile ADD COLUMN conventions_data TEXT;
|
|
74
|
+
|
|
75
|
+
CREATE TABLE IF NOT EXISTS hotspots (
|
|
76
|
+
id INTEGER PRIMARY KEY,
|
|
77
|
+
repo_path TEXT NOT NULL,
|
|
78
|
+
file_path TEXT NOT NULL,
|
|
79
|
+
churn_rate REAL NOT NULL,
|
|
80
|
+
complexity INTEGER NOT NULL,
|
|
81
|
+
commit_count INTEGER,
|
|
82
|
+
last_modified TEXT,
|
|
83
|
+
note TEXT,
|
|
84
|
+
analyzed_at TEXT DEFAULT (datetime('now'))
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
CREATE TABLE IF NOT EXISTS routing_history (
|
|
88
|
+
id INTEGER PRIMARY KEY,
|
|
89
|
+
issue_number INTEGER,
|
|
90
|
+
task_complexity INTEGER,
|
|
91
|
+
codebase_complexity REAL,
|
|
92
|
+
routing_strategy TEXT NOT NULL,
|
|
93
|
+
agent_name TEXT,
|
|
94
|
+
reason TEXT,
|
|
95
|
+
decided_at TEXT DEFAULT (datetime('now'))
|
|
96
|
+
);
|
|
97
|
+
`;
|
|
98
|
+
export const MIGRATION_V3 = `
|
|
99
|
+
-- Cost tracking
|
|
100
|
+
CREATE TABLE IF NOT EXISTS cost_ledger (
|
|
101
|
+
id INTEGER PRIMARY KEY,
|
|
102
|
+
run_id TEXT NOT NULL,
|
|
103
|
+
agent_name TEXT NOT NULL,
|
|
104
|
+
pipeline_type TEXT NOT NULL,
|
|
105
|
+
model TEXT,
|
|
106
|
+
input_tokens INTEGER DEFAULT 0,
|
|
107
|
+
output_tokens INTEGER DEFAULT 0,
|
|
108
|
+
total_tokens INTEGER DEFAULT 0,
|
|
109
|
+
cost_usd REAL DEFAULT 0.0,
|
|
110
|
+
issue_number INTEGER,
|
|
111
|
+
pr_number INTEGER,
|
|
112
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
113
|
+
);
|
|
114
|
+
CREATE INDEX IF NOT EXISTS idx_cost_ledger_run ON cost_ledger(run_id);
|
|
115
|
+
CREATE INDEX IF NOT EXISTS idx_cost_ledger_agent ON cost_ledger(agent_name);
|
|
116
|
+
|
|
117
|
+
-- Gate threshold overrides per complexity band
|
|
118
|
+
CREATE TABLE IF NOT EXISTS gate_threshold_overrides (
|
|
119
|
+
id INTEGER PRIMARY KEY,
|
|
120
|
+
gate_name TEXT NOT NULL,
|
|
121
|
+
complexity_band TEXT NOT NULL,
|
|
122
|
+
enforcement_level TEXT NOT NULL,
|
|
123
|
+
threshold_overrides TEXT,
|
|
124
|
+
active INTEGER DEFAULT 1,
|
|
125
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
126
|
+
UNIQUE(gate_name, complexity_band)
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
-- Autonomy event log (immutable)
|
|
130
|
+
CREATE TABLE IF NOT EXISTS autonomy_events (
|
|
131
|
+
id INTEGER PRIMARY KEY,
|
|
132
|
+
agent_name TEXT NOT NULL,
|
|
133
|
+
event_type TEXT NOT NULL,
|
|
134
|
+
from_level INTEGER NOT NULL,
|
|
135
|
+
to_level INTEGER NOT NULL,
|
|
136
|
+
trigger TEXT,
|
|
137
|
+
metrics_snapshot TEXT,
|
|
138
|
+
unmet_conditions TEXT,
|
|
139
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
140
|
+
);
|
|
141
|
+
CREATE INDEX IF NOT EXISTS idx_autonomy_events_agent ON autonomy_events(agent_name);
|
|
142
|
+
|
|
143
|
+
-- Extend autonomy_ledger
|
|
144
|
+
ALTER TABLE autonomy_ledger ADD COLUMN pr_approval_rate REAL DEFAULT 0.0;
|
|
145
|
+
ALTER TABLE autonomy_ledger ADD COLUMN rollback_count INTEGER DEFAULT 0;
|
|
146
|
+
ALTER TABLE autonomy_ledger ADD COLUMN security_incidents INTEGER DEFAULT 0;
|
|
147
|
+
ALTER TABLE autonomy_ledger ADD COLUMN promoted_at TEXT;
|
|
148
|
+
ALTER TABLE autonomy_ledger ADD COLUMN demoted_at TEXT;
|
|
149
|
+
ALTER TABLE autonomy_ledger ADD COLUMN time_at_level_ms INTEGER DEFAULT 0;
|
|
150
|
+
|
|
151
|
+
-- Extend episodic_memory
|
|
152
|
+
ALTER TABLE episodic_memory ADD COLUMN agent_name TEXT;
|
|
153
|
+
ALTER TABLE episodic_memory ADD COLUMN complexity_score INTEGER;
|
|
154
|
+
ALTER TABLE episodic_memory ADD COLUMN routing_strategy TEXT;
|
|
155
|
+
ALTER TABLE episodic_memory ADD COLUMN gate_pass_count INTEGER;
|
|
156
|
+
ALTER TABLE episodic_memory ADD COLUMN gate_fail_count INTEGER;
|
|
157
|
+
ALTER TABLE episodic_memory ADD COLUMN cost_usd REAL;
|
|
158
|
+
ALTER TABLE episodic_memory ADD COLUMN is_regression INTEGER DEFAULT 0;
|
|
159
|
+
ALTER TABLE episodic_memory ADD COLUMN related_episodes TEXT;
|
|
160
|
+
|
|
161
|
+
-- Extend pipeline_runs
|
|
162
|
+
ALTER TABLE pipeline_runs ADD COLUMN cost_usd REAL DEFAULT 0.0;
|
|
163
|
+
ALTER TABLE pipeline_runs ADD COLUMN tokens_used INTEGER DEFAULT 0;
|
|
164
|
+
ALTER TABLE pipeline_runs ADD COLUMN model TEXT;
|
|
165
|
+
ALTER TABLE pipeline_runs ADD COLUMN agent_name TEXT;
|
|
166
|
+
ALTER TABLE pipeline_runs ADD COLUMN complexity_score INTEGER;
|
|
167
|
+
`;
|
|
168
|
+
export const MIGRATION_V4 = `
|
|
169
|
+
-- Handoff audit trail
|
|
170
|
+
CREATE TABLE IF NOT EXISTS handoff_events (
|
|
171
|
+
id INTEGER PRIMARY KEY,
|
|
172
|
+
run_id TEXT NOT NULL,
|
|
173
|
+
from_agent TEXT NOT NULL,
|
|
174
|
+
to_agent TEXT NOT NULL,
|
|
175
|
+
payload_hash TEXT,
|
|
176
|
+
validation_result TEXT NOT NULL,
|
|
177
|
+
error_message TEXT,
|
|
178
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
179
|
+
);
|
|
180
|
+
CREATE INDEX IF NOT EXISTS idx_handoff_events_run ON handoff_events(run_id);
|
|
181
|
+
`;
|
|
182
|
+
export const MIGRATION_V5 = `
|
|
183
|
+
-- Deployment records
|
|
184
|
+
CREATE TABLE IF NOT EXISTS deployments (
|
|
185
|
+
id INTEGER PRIMARY KEY,
|
|
186
|
+
deployment_id TEXT NOT NULL UNIQUE,
|
|
187
|
+
target_name TEXT NOT NULL,
|
|
188
|
+
provider TEXT NOT NULL,
|
|
189
|
+
version TEXT NOT NULL,
|
|
190
|
+
environment TEXT NOT NULL,
|
|
191
|
+
state TEXT NOT NULL,
|
|
192
|
+
url TEXT,
|
|
193
|
+
error TEXT,
|
|
194
|
+
started_at TEXT DEFAULT (datetime('now')),
|
|
195
|
+
completed_at TEXT
|
|
196
|
+
);
|
|
197
|
+
CREATE INDEX IF NOT EXISTS idx_deployments_target ON deployments(target_name);
|
|
198
|
+
CREATE INDEX IF NOT EXISTS idx_deployments_env ON deployments(environment);
|
|
199
|
+
|
|
200
|
+
-- Rollout step records
|
|
201
|
+
CREATE TABLE IF NOT EXISTS rollout_steps (
|
|
202
|
+
id INTEGER PRIMARY KEY,
|
|
203
|
+
deployment_id TEXT NOT NULL,
|
|
204
|
+
step_number INTEGER NOT NULL,
|
|
205
|
+
weight_percent INTEGER NOT NULL,
|
|
206
|
+
state TEXT NOT NULL,
|
|
207
|
+
metrics_snapshot TEXT,
|
|
208
|
+
started_at TEXT DEFAULT (datetime('now')),
|
|
209
|
+
completed_at TEXT,
|
|
210
|
+
FOREIGN KEY (deployment_id) REFERENCES deployments(deployment_id)
|
|
211
|
+
);
|
|
212
|
+
CREATE INDEX IF NOT EXISTS idx_rollout_steps_deployment ON rollout_steps(deployment_id);
|
|
213
|
+
|
|
214
|
+
-- Audit entries (indexed, queryable)
|
|
215
|
+
CREATE TABLE IF NOT EXISTS audit_entries (
|
|
216
|
+
id INTEGER PRIMARY KEY,
|
|
217
|
+
entry_id TEXT NOT NULL UNIQUE,
|
|
218
|
+
actor TEXT NOT NULL,
|
|
219
|
+
action TEXT NOT NULL,
|
|
220
|
+
resource_type TEXT,
|
|
221
|
+
resource_id TEXT,
|
|
222
|
+
detail TEXT,
|
|
223
|
+
hash TEXT,
|
|
224
|
+
previous_hash TEXT,
|
|
225
|
+
signature TEXT,
|
|
226
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
227
|
+
);
|
|
228
|
+
CREATE INDEX IF NOT EXISTS idx_audit_entries_actor ON audit_entries(actor);
|
|
229
|
+
CREATE INDEX IF NOT EXISTS idx_audit_entries_action ON audit_entries(action);
|
|
230
|
+
CREATE INDEX IF NOT EXISTS idx_audit_entries_resource ON audit_entries(resource_type, resource_id);
|
|
231
|
+
CREATE INDEX IF NOT EXISTS idx_audit_entries_created ON audit_entries(created_at);
|
|
232
|
+
`;
|
|
233
|
+
export const MIGRATION_V6 = `
|
|
234
|
+
-- Cost governance: add stage_name and cache_read_tokens to cost_ledger
|
|
235
|
+
ALTER TABLE cost_ledger ADD COLUMN stage_name TEXT;
|
|
236
|
+
ALTER TABLE cost_ledger ADD COLUMN cache_read_tokens INTEGER DEFAULT 0;
|
|
237
|
+
`;
|
|
238
|
+
export const MIGRATIONS = [
|
|
239
|
+
{
|
|
240
|
+
version: 1,
|
|
241
|
+
sql: SCHEMA_DDL,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
version: 2,
|
|
245
|
+
sql: MIGRATION_V2,
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
version: 3,
|
|
249
|
+
sql: MIGRATION_V3,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
version: 4,
|
|
253
|
+
sql: MIGRATION_V4,
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
version: 5,
|
|
257
|
+
sql: MIGRATION_V5,
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
version: 6,
|
|
261
|
+
sql: MIGRATION_V6,
|
|
262
|
+
},
|
|
263
|
+
];
|
|
264
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed state store for the AI-SDLC orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Uses better-sqlite3 for synchronous operations. The state store is
|
|
5
|
+
* optional — the orchestrator works without it.
|
|
6
|
+
*/
|
|
7
|
+
import type BetterSqlite3 from 'better-sqlite3';
|
|
8
|
+
import type { ComplexityProfile, EpisodicRecord, AutonomyLedgerEntry, PipelineRun, PipelineRunStatus, Convention, HotspotRecord, RoutingDecision, CostLedgerEntry, GateThresholdOverride, AutonomyEvent, HandoffEvent, DeploymentRecord, DeploymentRecordState, RolloutStepRecord, AuditEntryRecord } from './types.js';
|
|
9
|
+
export declare class StateStore {
|
|
10
|
+
private db;
|
|
11
|
+
constructor(db: BetterSqlite3.Database);
|
|
12
|
+
/**
|
|
13
|
+
* Create a StateStore from a file path or :memory: for testing.
|
|
14
|
+
*/
|
|
15
|
+
static open(pathOrDb: string | BetterSqlite3.Database): StateStore;
|
|
16
|
+
private migrate;
|
|
17
|
+
saveComplexityProfile(profile: ComplexityProfile): number;
|
|
18
|
+
getLatestComplexityProfile(repoPath: string): ComplexityProfile | undefined;
|
|
19
|
+
private mapComplexityProfile;
|
|
20
|
+
saveEpisodicRecord(record: EpisodicRecord): number;
|
|
21
|
+
getEpisodicRecords(issueNumber?: number, limit?: number): EpisodicRecord[];
|
|
22
|
+
private mapEpisodicRecord;
|
|
23
|
+
getAutonomyLedger(agentName: string): AutonomyLedgerEntry | undefined;
|
|
24
|
+
upsertAutonomyLedger(entry: AutonomyLedgerEntry): void;
|
|
25
|
+
getAllAutonomyLedgerEntries(): AutonomyLedgerEntry[];
|
|
26
|
+
private mapAutonomyLedger;
|
|
27
|
+
savePipelineRun(run: PipelineRun): number;
|
|
28
|
+
updatePipelineRunStatus(runId: string, status: PipelineRunStatus, opts?: {
|
|
29
|
+
currentStage?: string;
|
|
30
|
+
result?: string;
|
|
31
|
+
gateResults?: string;
|
|
32
|
+
}): void;
|
|
33
|
+
getPipelineRun(runId: string): PipelineRun | undefined;
|
|
34
|
+
getPipelineRuns(issueNumber?: number, limit?: number): PipelineRun[];
|
|
35
|
+
private mapPipelineRun;
|
|
36
|
+
saveConvention(convention: Convention): number;
|
|
37
|
+
getConventions(category?: string): Convention[];
|
|
38
|
+
private mapConvention;
|
|
39
|
+
saveHotspot(record: HotspotRecord): number;
|
|
40
|
+
getHotspots(repoPath: string, limit?: number): HotspotRecord[];
|
|
41
|
+
private mapHotspot;
|
|
42
|
+
saveRoutingDecision(decision: RoutingDecision): number;
|
|
43
|
+
getRoutingHistory(limit?: number): RoutingDecision[];
|
|
44
|
+
private mapRoutingDecision;
|
|
45
|
+
saveCostEntry(entry: CostLedgerEntry): number;
|
|
46
|
+
getCostEntries(opts?: {
|
|
47
|
+
runId?: string;
|
|
48
|
+
agentName?: string;
|
|
49
|
+
since?: string;
|
|
50
|
+
limit?: number;
|
|
51
|
+
}): CostLedgerEntry[];
|
|
52
|
+
getCostSummary(since?: string): {
|
|
53
|
+
totalCostUsd: number;
|
|
54
|
+
totalTokens: number;
|
|
55
|
+
entryCount: number;
|
|
56
|
+
};
|
|
57
|
+
private mapCostEntry;
|
|
58
|
+
saveGateThresholdOverride(override: GateThresholdOverride): number;
|
|
59
|
+
getGateThresholdOverrides(gateName?: string, complexityBand?: string): GateThresholdOverride[];
|
|
60
|
+
saveAutonomyEvent(event: AutonomyEvent): number;
|
|
61
|
+
getAutonomyEvents(agentName?: string, limit?: number): AutonomyEvent[];
|
|
62
|
+
searchEpisodicRecords(opts: {
|
|
63
|
+
agentName?: string;
|
|
64
|
+
outcome?: string;
|
|
65
|
+
since?: string;
|
|
66
|
+
files?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
}): EpisodicRecord[];
|
|
69
|
+
/**
|
|
70
|
+
* Save a full codebase profile with JSON-serialized analysis data.
|
|
71
|
+
* Also saves individual hotspot records.
|
|
72
|
+
*/
|
|
73
|
+
saveCodebaseProfile(profile: ComplexityProfile): number;
|
|
74
|
+
saveHandoffEvent(event: Omit<HandoffEvent, 'id' | 'createdAt'>): number;
|
|
75
|
+
getHandoffEvents(runId?: string, limit?: number): HandoffEvent[];
|
|
76
|
+
saveDeployment(record: Omit<DeploymentRecord, 'id'>): number;
|
|
77
|
+
updateDeployment(deploymentId: string, update: {
|
|
78
|
+
state: DeploymentRecordState;
|
|
79
|
+
url?: string;
|
|
80
|
+
error?: string;
|
|
81
|
+
completedAt?: string;
|
|
82
|
+
}): void;
|
|
83
|
+
getDeployment(deploymentId: string): DeploymentRecord | undefined;
|
|
84
|
+
getDeployments(opts?: {
|
|
85
|
+
targetName?: string;
|
|
86
|
+
environment?: string;
|
|
87
|
+
limit?: number;
|
|
88
|
+
}): DeploymentRecord[];
|
|
89
|
+
private mapDeployment;
|
|
90
|
+
saveRolloutStep(record: Omit<RolloutStepRecord, 'id'>): number;
|
|
91
|
+
getRolloutSteps(deploymentId: string): RolloutStepRecord[];
|
|
92
|
+
saveAuditEntry(record: Omit<AuditEntryRecord, 'id'>): number;
|
|
93
|
+
queryAuditEntries(opts?: {
|
|
94
|
+
actor?: string;
|
|
95
|
+
action?: string;
|
|
96
|
+
resourceType?: string;
|
|
97
|
+
resourceId?: string;
|
|
98
|
+
since?: string;
|
|
99
|
+
until?: string;
|
|
100
|
+
limit?: number;
|
|
101
|
+
offset?: number;
|
|
102
|
+
}): AuditEntryRecord[];
|
|
103
|
+
getAuditEntry(entryId: string): AuditEntryRecord | undefined;
|
|
104
|
+
private mapAuditEntry;
|
|
105
|
+
/** Expose the underlying database for direct queries (e.g. dashboard). */
|
|
106
|
+
getDatabase(): BetterSqlite3.Database;
|
|
107
|
+
close(): void;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=store.d.ts.map
|