@evalops/maestro 0.10.49 → 0.10.50
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/cli-command-runtime.js +2 -2
- package/dist/cli-command-runtime.js.map +1 -1
- package/dist/cli-runtime.js +42 -5
- package/dist/cli.js +4 -6
- package/dist/cli.js.map +1 -1
- package/dist/db/health.d.ts +1 -1
- package/dist/db/health.d.ts.map +1 -1
- package/dist/db/health.js +10 -0
- package/dist/db/health.js.map +1 -1
- package/dist/db/migrations/0009_operating_layer_evidence.sql +30 -0
- package/dist/db/migrations/meta/_journal.json +7 -0
- package/dist/db/schema.d.ts +263 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +28 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/load-env.d.ts +13 -0
- package/dist/load-env.d.ts.map +1 -1
- package/dist/load-env.js +16 -0
- package/dist/load-env.js.map +1 -1
- package/dist/main.js +4 -4
- package/dist/main.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/platform/operating-layer.d.ts +127 -0
- package/dist/platform/operating-layer.d.ts.map +1 -0
- package/dist/platform/operating-layer.js +354 -0
- package/dist/platform/operating-layer.js.map +1 -0
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +2 -5
- package/dist/web-server.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@ export async function runCliCommandRuntime(args) {
|
|
|
5
5
|
}
|
|
6
6
|
const { parseArgs } = await import("./cli/args.js");
|
|
7
7
|
const parsed = parseArgs(args);
|
|
8
|
-
const {
|
|
9
|
-
|
|
8
|
+
const { finalizeLoadedEnv } = await import("./load-env.js");
|
|
9
|
+
finalizeLoadedEnv();
|
|
10
10
|
if (parsed.error || !isDirectRuntimeCommand(parsed.command)) {
|
|
11
11
|
return false;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-command-runtime.js","sourceRoot":"","sources":["../src/cli-command-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,kCAAkC,GAClC,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACxD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"cli-command-runtime.js","sourceRoot":"","sources":["../src/cli-command-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,kCAAkC,GAClC,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACxD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC5D,iBAAiB,EAAE,CAAC;IACpB,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACd,CAAC;IAED,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,eAAe,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CACjD,iCAAiC,CACjC,CAAC;YACF,MAAM,yBAAyB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;gBACzD,WAAW,EAAE,MAAM,CAAC,IAAI;aACxB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,iBAAiB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACzE,MAAM,mBAAmB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC/C,4BAA4B,CAC5B,CAAC;YACF,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,eAAe,GACpB,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ;gBACvC,CAAC,CAAC,YAAY,CAAC,OAAO;gBACtB,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;YACtD,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;gBACrE,WAAW;gBACX,YAAY;aACZ,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import {\n\tisDirectRuntimeCommand,\n\tshouldAttemptDirectRuntimeDispatch,\n} from \"./cli/direct-runtime-command.js\";\n\nexport async function runCliCommandRuntime(args: string[]): Promise<boolean> {\n\tif (!shouldAttemptDirectRuntimeDispatch(args)) {\n\t\treturn false;\n\t}\n\tconst { parseArgs } = await import(\"./cli/args.js\");\n\tconst parsed = parseArgs(args);\n\tconst { finalizeLoadedEnv } = await import(\"./load-env.js\");\n\tfinalizeLoadedEnv();\n\tif (parsed.error || !isDirectRuntimeCommand(parsed.command)) {\n\t\treturn false;\n\t}\n\n\tswitch (parsed.command) {\n\t\tcase \"hosted-runner\": {\n\t\t\tconst { handleHostedRunnerCommand } = await import(\n\t\t\t\t\"./cli/commands/hosted-runner.js\"\n\t\t\t);\n\t\t\tawait handleHostedRunnerCommand(parsed.commandArgs ?? [], {\n\t\t\t\tdefaultPort: parsed.port,\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\t\tcase \"init\": {\n\t\t\tconst { handleInitCommand } = await import(\"./cli/commands/init.js\");\n\t\t\tawait handleInitCommand(parsed.commandArgs ?? []);\n\t\t\treturn true;\n\t\t}\n\t\tcase \"update\": {\n\t\t\tconst { handleUpdateCommand } = await import(\"./cli/commands/update.js\");\n\t\t\tawait handleUpdateCommand(parsed.commandArgs ?? []);\n\t\t\treturn true;\n\t\t}\n\t\tcase \"skill\": {\n\t\t\tconst { buildCliConfigOverrides } = await import(\n\t\t\t\t\"./config/runtime-config.js\"\n\t\t\t);\n\t\t\tconst { handleSkillCommand } = await import(\"./cli/commands/skill.js\");\n\t\t\tconst cliOverrides = buildCliConfigOverrides(parsed);\n\t\t\tconst overrideProfile =\n\t\t\t\ttypeof cliOverrides.profile === \"string\"\n\t\t\t\t\t? cliOverrides.profile\n\t\t\t\t\t: undefined;\n\t\t\tconst profileName = parsed.profile ?? overrideProfile;\n\t\t\tawait handleSkillCommand(parsed.subcommand, parsed.commandArgs ?? [], {\n\t\t\t\tprofileName,\n\t\t\t\tcliOverrides,\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n"]}
|
package/dist/cli-runtime.js
CHANGED
|
@@ -585,6 +585,9 @@ function defaultRuntimeEnv() {
|
|
|
585
585
|
}
|
|
586
586
|
return processWithRuntimeEnvCache.__MAESTRO_DEFAULT_RUNTIME_ENV__;
|
|
587
587
|
}
|
|
588
|
+
function resetDefaultRuntimeEnv() {
|
|
589
|
+
Reflect.deleteProperty(processWithRuntimeEnvCache, "__MAESTRO_DEFAULT_RUNTIME_ENV__");
|
|
590
|
+
}
|
|
588
591
|
var EVALOPS_ORG_ID_VARS, EVALOPS_ACCESS_TOKEN_VARS, METER_BASE_URL_VARS, METER_ACCESS_TOKEN_VARS, METER_ORG_ID_VARS, processWithRuntimeEnvCache;
|
|
589
592
|
var init_env = __esm({
|
|
590
593
|
"dist/runtime/env.js"() {
|
|
@@ -13257,7 +13260,9 @@ var init_env_vars = __esm({
|
|
|
13257
13260
|
// dist/load-env.js
|
|
13258
13261
|
var load_env_exports = {};
|
|
13259
13262
|
__export(load_env_exports, {
|
|
13263
|
+
finalizeLoadedEnv: () => finalizeLoadedEnv,
|
|
13260
13264
|
getLoadedEnvKeys: () => getLoadedEnvKeys,
|
|
13265
|
+
loadAndFinalizeEnv: () => loadAndFinalizeEnv,
|
|
13261
13266
|
loadEnv: () => loadEnv,
|
|
13262
13267
|
scrubLoadedSecurityOverrideEnv: () => scrubLoadedSecurityOverrideEnv
|
|
13263
13268
|
});
|
|
@@ -13318,11 +13323,20 @@ function scrubLoadedSecurityOverrideEnv() {
|
|
|
13318
13323
|
}
|
|
13319
13324
|
return scrubbed;
|
|
13320
13325
|
}
|
|
13326
|
+
function finalizeLoadedEnv(loadedEnvKeys2 = []) {
|
|
13327
|
+
const scrubbedEnvKeys = scrubLoadedSecurityOverrideEnv();
|
|
13328
|
+
resetDefaultRuntimeEnv();
|
|
13329
|
+
return { loadedEnvKeys: loadedEnvKeys2, scrubbedEnvKeys };
|
|
13330
|
+
}
|
|
13331
|
+
function loadAndFinalizeEnv() {
|
|
13332
|
+
return finalizeLoadedEnv(loadEnv());
|
|
13333
|
+
}
|
|
13321
13334
|
var ENV_FILES, BLOCKED_DOTENV_KEYS, DOTENV_SECURITY_OVERRIDE_KEYS, normalizeEnvKey, DOTENV_SECURITY_OVERRIDE_KEY_SET, DOTENV_SECURITY_OVERRIDE_PREFIXES, isDotenvSecurityOverrideKey, loadedEnvKeys;
|
|
13322
13335
|
var init_load_env = __esm({
|
|
13323
13336
|
"dist/load-env.js"() {
|
|
13324
13337
|
"use strict";
|
|
13325
13338
|
init_env_vars();
|
|
13339
|
+
init_env();
|
|
13326
13340
|
ENV_FILES = [".env.local", ".env"];
|
|
13327
13341
|
BLOCKED_DOTENV_KEYS = /* @__PURE__ */ new Set([
|
|
13328
13342
|
"HOME",
|
|
@@ -19773,8 +19787,8 @@ async function runCliCommandRuntime(args) {
|
|
|
19773
19787
|
}
|
|
19774
19788
|
const { parseArgs: parseArgs2 } = await Promise.resolve().then(() => (init_args2(), args_exports));
|
|
19775
19789
|
const parsed = parseArgs2(args);
|
|
19776
|
-
const {
|
|
19777
|
-
|
|
19790
|
+
const { finalizeLoadedEnv: finalizeLoadedEnv2 } = await Promise.resolve().then(() => (init_load_env(), load_env_exports));
|
|
19791
|
+
finalizeLoadedEnv2();
|
|
19778
19792
|
if (parsed.error || !isDirectRuntimeCommand(parsed.command)) {
|
|
19779
19793
|
return false;
|
|
19780
19794
|
}
|
|
@@ -127499,6 +127513,7 @@ __export(schema_exports, {
|
|
|
127499
127513
|
hostedSessions: () => hostedSessions,
|
|
127500
127514
|
modelApprovalStatusEnum: () => modelApprovalStatusEnum,
|
|
127501
127515
|
modelApprovals: () => modelApprovals,
|
|
127516
|
+
operatingLayerEvidence: () => operatingLayerEvidence,
|
|
127502
127517
|
orgMemberships: () => orgMemberships,
|
|
127503
127518
|
orgMembershipsRelations: () => orgMembershipsRelations,
|
|
127504
127519
|
organizations: () => organizations,
|
|
@@ -127529,7 +127544,7 @@ __export(schema_exports, {
|
|
|
127529
127544
|
});
|
|
127530
127545
|
import { relations } from "drizzle-orm";
|
|
127531
127546
|
import { bigint, bigserial, boolean, index, integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex, uuid, varchar } from "drizzle-orm/pg-core";
|
|
127532
|
-
var userRoleEnum, auditStatusEnum, alertSeverityEnum, modelApprovalStatusEnum, organizations, users, orgMemberships, roles, permissions, rolePermissions, sessions, sessionMessages, hostedSessions, hostedSessionEntries, auditLogs, modelApprovals, directoryAccessRules, alerts, apiKeys, revokedTokens, webhookDeliveryStatusEnum, webhookDeliveries, userRevocationTimestamps, totpRateLimits, sharedSessions, totpUsedCodes, distributedLocks, auditHashCache, usageMetrics, executionTraces, workspaceConfig, revenueAttribution, organizationsRelations, usersRelations, rolesRelations, orgMembershipsRelations, rolePermissionsRelations, permissionsRelations, sessionsRelations, sessionMessagesRelations, auditLogsRelations;
|
|
127547
|
+
var userRoleEnum, auditStatusEnum, alertSeverityEnum, modelApprovalStatusEnum, organizations, users, orgMemberships, roles, permissions, rolePermissions, sessions, sessionMessages, hostedSessions, hostedSessionEntries, operatingLayerEvidence, auditLogs, modelApprovals, directoryAccessRules, alerts, apiKeys, revokedTokens, webhookDeliveryStatusEnum, webhookDeliveries, userRevocationTimestamps, totpRateLimits, sharedSessions, totpUsedCodes, distributedLocks, auditHashCache, usageMetrics, executionTraces, workspaceConfig, revenueAttribution, organizationsRelations, usersRelations, rolesRelations, orgMembershipsRelations, rolePermissionsRelations, permissionsRelations, sessionsRelations, sessionMessagesRelations, auditLogsRelations;
|
|
127533
127548
|
var init_schema = __esm({
|
|
127534
127549
|
"dist/db/schema.js"() {
|
|
127535
127550
|
"use strict";
|
|
@@ -127707,6 +127722,29 @@ var init_schema = __esm({
|
|
|
127707
127722
|
sessionSequenceIdx: uniqueIndex("hosted_session_entry_session_sequence_idx").on(table.sessionId, table.sequence),
|
|
127708
127723
|
sessionEntryTypeIdx: index("hosted_session_entry_type_idx").on(table.sessionId, table.entryType)
|
|
127709
127724
|
}));
|
|
127725
|
+
operatingLayerEvidence = pgTable("operating_layer_evidence", {
|
|
127726
|
+
id: uuid("id").primaryKey().defaultRandom(),
|
|
127727
|
+
orgId: uuid("org_id").references(() => organizations.id, {
|
|
127728
|
+
onDelete: "cascade"
|
|
127729
|
+
}),
|
|
127730
|
+
sessionId: varchar("session_id", { length: 255 }),
|
|
127731
|
+
capabilityId: varchar("capability_id", { length: 64 }).notNull(),
|
|
127732
|
+
evidenceKind: varchar("evidence_kind", { length: 128 }).notNull(),
|
|
127733
|
+
subject: varchar("subject", { length: 255 }).notNull(),
|
|
127734
|
+
status: varchar("status", { length: 32 }).default("recorded").notNull(),
|
|
127735
|
+
score: integer("score"),
|
|
127736
|
+
blockers: jsonb("blockers").$type().default([]).notNull(),
|
|
127737
|
+
warnings: jsonb("warnings").$type().default([]).notNull(),
|
|
127738
|
+
evidence: jsonb("evidence").$type().notNull(),
|
|
127739
|
+
metadata: jsonb("metadata").$type().default({}),
|
|
127740
|
+
recordedAt: timestamp("recorded_at", { withTimezone: true }).defaultNow().notNull(),
|
|
127741
|
+
expiresAt: timestamp("expires_at", { withTimezone: true })
|
|
127742
|
+
}, (table) => ({
|
|
127743
|
+
capabilityRecordedIdx: index("operating_layer_evidence_capability_recorded_idx").on(table.capabilityId, table.recordedAt),
|
|
127744
|
+
orgRecordedIdx: index("operating_layer_evidence_org_recorded_idx").on(table.orgId, table.recordedAt),
|
|
127745
|
+
sessionRecordedIdx: index("operating_layer_evidence_session_recorded_idx").on(table.sessionId, table.recordedAt),
|
|
127746
|
+
expiryIdx: index("operating_layer_evidence_expiry_idx").on(table.expiresAt)
|
|
127747
|
+
}));
|
|
127710
127748
|
auditLogs = pgTable("audit_logs", {
|
|
127711
127749
|
id: uuid("id").primaryKey().defaultRandom(),
|
|
127712
127750
|
orgId: uuid("org_id").notNull().references(() => organizations.id, {
|
|
@@ -150501,11 +150539,10 @@ async function main(args) {
|
|
|
150501
150539
|
originalStderrWrite(message.endsWith("\n") ? message : `${message}
|
|
150502
150540
|
`);
|
|
150503
150541
|
};
|
|
150504
|
-
|
|
150542
|
+
loadAndFinalizeEnv();
|
|
150505
150543
|
const startupProfiler = createStartupProfilerFromEnv();
|
|
150506
150544
|
startupProfiler.checkpoint("process:start");
|
|
150507
150545
|
const parsed = parseArgs(args);
|
|
150508
|
-
scrubLoadedSecurityOverrideEnv();
|
|
150509
150546
|
startupProfiler.checkpoint("cli:parsed");
|
|
150510
150547
|
const startupTelemetry = Promise.resolve().then(() => (init_cli_startup(), cli_startup_exports)).then(({ recordCliStartupTelemetry: recordCliStartupTelemetry2 }) => recordCliStartupTelemetry2({
|
|
150511
150548
|
args: parsed,
|
package/dist/cli.js
CHANGED
|
@@ -225,9 +225,8 @@ const run = async () => {
|
|
|
225
225
|
let envLoaded = false;
|
|
226
226
|
let loadedEnvKeys = [];
|
|
227
227
|
if (immediateExit !== null) {
|
|
228
|
-
const {
|
|
229
|
-
loadedEnvKeys =
|
|
230
|
-
scrubLoadedSecurityOverrideEnv();
|
|
228
|
+
const { loadAndFinalizeEnv } = await import("./load-env.js");
|
|
229
|
+
({ loadedEnvKeys } = loadAndFinalizeEnv());
|
|
231
230
|
envLoaded = true;
|
|
232
231
|
}
|
|
233
232
|
if (shouldUseInstantCliExit(immediateExit, process.env)) {
|
|
@@ -235,9 +234,8 @@ const run = async () => {
|
|
|
235
234
|
return;
|
|
236
235
|
}
|
|
237
236
|
if (!envLoaded) {
|
|
238
|
-
const {
|
|
239
|
-
loadedEnvKeys =
|
|
240
|
-
scrubLoadedSecurityOverrideEnv();
|
|
237
|
+
const { loadAndFinalizeEnv } = await import("./load-env.js");
|
|
238
|
+
({ loadedEnvKeys } = loadAndFinalizeEnv());
|
|
241
239
|
}
|
|
242
240
|
await refreshInstalledCliOnStartup(args, loadedEnvKeys);
|
|
243
241
|
if (shouldUseFastUnbundledExecRuntime(args)) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\ndeclare const MAESTRO_BUNDLE_RUNTIME: boolean | undefined;\n\n// Suppress punycode deprecation warning from dependencies\n// This warning comes from old dependencies still using the deprecated punycode module\nimport {\n\ttype ImmediateCliExit,\n\tgetImmediateCliExit,\n\tshouldUseInstantCliExit,\n} from \"./cli/instant-exit.js\";\n\nconst originalEmit = process.emit.bind(process) as (\n\tevent: string | symbol,\n\t...args: unknown[]\n) => boolean;\nprocess.emit = ((event: string | symbol, ...args: unknown[]) => {\n\tif (event === \"warning\") {\n\t\tconst [firstArg] = args;\n\t\tif (\n\t\t\ttypeof firstArg === \"object\" &&\n\t\t\tfirstArg !== null &&\n\t\t\t\"name\" in firstArg &&\n\t\t\t\"code\" in firstArg &&\n\t\t\t(firstArg as { name?: string; code?: string }).name ===\n\t\t\t\t\"DeprecationWarning\" &&\n\t\t\t(firstArg as { name?: string; code?: string }).code === \"DEP0040\"\n\t\t) {\n\t\t\treturn false; // Suppress punycode deprecation\n\t\t}\n\t}\n\treturn originalEmit(event, ...args);\n}) as typeof process.emit;\n\nfunction isHeadlessInvocation(args: string[]): boolean {\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\t\tif (arg === \"--headless\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (arg === \"--mode\" && args[i + 1] === \"headless\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\targ?.startsWith(\"--mode=\") &&\n\t\t\targ.slice(\"--mode=\".length) === \"headless\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n// Keep this detector local: importing the shared command runtime detector is the\n// pre-main work the exec fast path avoids.\nconst EXEC_RUNTIME_FLAGS_WITH_VALUES = new Set([\n\t\"--mode\",\n\t\"--provider\",\n\t\"--model\",\n\t\"-m\",\n\t\"--task-budget\",\n\t\"--models\",\n\t\"--models-file\",\n\t\"--api-key\",\n\t\"--port\",\n\t\"--system-prompt\",\n\t\"--append-system-prompt\",\n\t\"--session\",\n\t\"--approval-mode\",\n\t\"--auth\",\n\t\"--sandbox\",\n\t\"--output-schema\",\n\t\"--output-last-message\",\n\t\"--tools\",\n\t\"--composer\",\n\t\"--format\",\n\t\"--profile\",\n\t\"--config\",\n\t\"--junit\",\n\t\"--replay\",\n\t\"--record-scenario\",\n]);\n\nfunction getLauncherRuntimeCommand(args: readonly string[]): string | null {\n\tfor (let index = 0; index < args.length; index++) {\n\t\tconst arg = args[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (EXEC_RUNTIME_FLAGS_WITH_VALUES.has(arg) && index + 1 < args.length) {\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn arg;\n\t}\n\treturn null;\n}\n\nfunction shouldUseFastUnbundledExecRuntime(args: readonly string[]): boolean {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn false;\n\t}\n\treturn getLauncherRuntimeCommand(args) === \"exec\";\n}\n\nfunction emitHeadlessStartupError(error: unknown): void {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconst stack = error instanceof Error ? error.stack : undefined;\n\ttry {\n\t\tprocess.stdout.write(\n\t\t\t`${JSON.stringify({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `Headless startup failed: ${message}`,\n\t\t\t\tfatal: true,\n\t\t\t\terror_type: \"fatal\",\n\t\t\t})}\\n`,\n\t\t);\n\t} catch {\n\t\t// If stdout is unavailable there is no protocol channel left to use.\n\t}\n\tprocess.stderr.write(`${stack ?? message}\\n`);\n}\n\nasync function reportFatalCliError(error: unknown): Promise<void> {\n\ttry {\n\t\tconst { captureSentryException, flushSentry, initSentry } = await import(\n\t\t\t\"./sentry.js\"\n\t\t);\n\t\tinitSentry(\"maestro-cli\");\n\t\tcaptureSentryException(error);\n\t\tawait flushSentry();\n\t} catch {\n\t\t// Sentry reporting is best-effort and must not mask the original failure.\n\t}\n}\n\nasync function refreshInstalledCliOnStartup(\n\targs: string[],\n\tignoredEnvKeys: string[] = [],\n): Promise<void> {\n\ttry {\n\t\tconst env = { ...process.env };\n\t\tfor (const key of ignoredEnvKeys) {\n\t\t\tdelete env[key];\n\t\t}\n\t\tconst startupUpdateMode = env.MAESTRO_STARTUP_UPDATE?.trim().toLowerCase();\n\t\tif (\n\t\t\tenv.MAESTRO_SKIP_STARTUP_UPDATE ||\n\t\t\tenv.CI ||\n\t\t\tenv.NODE_ENV === \"test\" ||\n\t\t\tstartupUpdateMode === \"0\" ||\n\t\t\tstartupUpdateMode === \"false\" ||\n\t\t\tstartupUpdateMode === \"off\" ||\n\t\t\t!process.stdin.isTTY ||\n\t\t\t!process.stdout.isTTY\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst [{ getPackageName, getPackageVersion }, { attemptStartupUpdate }] =\n\t\t\tawait Promise.all([\n\t\t\t\timport(\"./package-metadata.js\"),\n\t\t\t\timport(\"./update/startup-refresh.js\"),\n\t\t\t]);\n\t\tconst outcome = await attemptStartupUpdate({\n\t\t\targs,\n\t\t\tcurrentVersion: getPackageVersion(env),\n\t\t\tenv,\n\t\t\tpackageName: getPackageName(env),\n\t\t});\n\t\tif (outcome.status === \"restarted\") {\n\t\t\tprocess.exit(outcome.exitCode);\n\t\t}\n\t} catch {\n\t\t// Startup refresh is best-effort and must never prevent the CLI from booting.\n\t}\n}\n\nasync function runImmediateCliExit(exit: ImmediateCliExit): Promise<void> {\n\tif (exit.kind === \"version\") {\n\t\tconst { getPackageVersion } = await import(\"./package-metadata.js\");\n\t\tconsole.log(`Maestro v${getPackageVersion()}`);\n\t\treturn;\n\t}\n\n\tconst [{ printHelp }, { getPackageVersion }] = await Promise.all([\n\t\timport(\"./cli/help.js\"),\n\t\timport(\"./package-metadata.js\"),\n\t]);\n\tprintHelp(getPackageVersion(), { includeHidden: exit.includeHidden });\n}\n\nasync function runCliRuntime(args: string[]): Promise<void> {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\tconst { runCliRuntime: runRuntime } = await import(\"./cli-runtime.js\");\n\t\tawait runRuntime(args);\n\t\treturn;\n\t}\n\tconst runtimeEntry = \"./cli-runtime.\" + \"js\";\n\tconst { runCliRuntime: runRuntime } = await import(runtimeEntry);\n\tawait runRuntime(args);\n}\n\nasync function runMainRuntime(args: string[]): Promise<void> {\n\tconst loadMain = async () => {\n\t\tif (process.versions?.bun) {\n\t\t\tconst tsEntry = \"./main.\" + \"ts\";\n\t\t\ttry {\n\t\t\t\treturn await import(tsEntry);\n\t\t\t} catch {\n\t\t\t\treturn await import(\"./main.js\");\n\t\t\t}\n\t\t}\n\t\tconst mainEntry = \"./main.\" + \"js\";\n\t\treturn import(mainEntry);\n\t};\n\n\tconst { main } = await loadMain();\n\tawait main(args);\n}\n\nasync function loadDirectRuntimeCommandModule() {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn import(\"./cli/direct-runtime-command.js\");\n\t}\n\tconst directRuntimeCommandEntry = \"./cli/direct-runtime-command.\" + \"js\";\n\treturn import(directRuntimeCommandEntry);\n}\n\nasync function runCliCommandRuntime(args: string[]): Promise<boolean> {\n\tconst { shouldAttemptDirectRuntimeDispatch } =\n\t\tawait loadDirectRuntimeCommandModule();\n\tif (!shouldAttemptDirectRuntimeDispatch(args)) {\n\t\treturn false;\n\t}\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\tconst { runCliCommandRuntime: runCommandRuntime } = await import(\n\t\t\t\"./cli-command-runtime.js\"\n\t\t);\n\t\treturn runCommandRuntime(args);\n\t}\n\tconst commandRuntimeEntry = \"./cli-command-runtime.\" + \"js\";\n\tconst { runCliCommandRuntime: runCommandRuntime } = await import(\n\t\tcommandRuntimeEntry\n\t);\n\treturn runCommandRuntime(args);\n}\n\nasync function runUnbundledMainRuntime(args: string[]): Promise<boolean> {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn false;\n\t}\n\tconst { shouldUseUnbundledMainRuntime } =\n\t\tawait loadDirectRuntimeCommandModule();\n\tif (!shouldUseUnbundledMainRuntime(args)) {\n\t\treturn false;\n\t}\n\tawait runMainRuntime(args);\n\treturn true;\n}\n\nconst run = async () => {\n\ttry {\n\t\tconst args = process.argv.slice(2);\n\t\tconst immediateExit = getImmediateCliExit(args);\n\t\tlet envLoaded = false;\n\t\tlet loadedEnvKeys: string[] = [];\n\t\tif (immediateExit !== null) {\n\t\t\tconst { loadEnv, scrubLoadedSecurityOverrideEnv } = await import(\n\t\t\t\t\"./load-env.js\"\n\t\t\t);\n\t\t\tloadedEnvKeys = loadEnv();\n\t\t\tscrubLoadedSecurityOverrideEnv();\n\t\t\tenvLoaded = true;\n\t\t}\n\t\tif (shouldUseInstantCliExit(immediateExit, process.env)) {\n\t\t\tawait runImmediateCliExit(immediateExit);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!envLoaded) {\n\t\t\tconst { loadEnv, scrubLoadedSecurityOverrideEnv } = await import(\n\t\t\t\t\"./load-env.js\"\n\t\t\t);\n\t\t\tloadedEnvKeys = loadEnv();\n\t\t\tscrubLoadedSecurityOverrideEnv();\n\t\t}\n\t\tawait refreshInstalledCliOnStartup(args, loadedEnvKeys);\n\t\tif (shouldUseFastUnbundledExecRuntime(args)) {\n\t\t\tawait runMainRuntime(args);\n\t\t\treturn;\n\t\t}\n\t\tif (await runCliCommandRuntime(args)) {\n\t\t\treturn;\n\t\t}\n\t\tif (await runUnbundledMainRuntime(args)) {\n\t\t\treturn;\n\t\t}\n\t\tawait runCliRuntime(args);\n\t} catch (err) {\n\t\tif (isHeadlessInvocation(process.argv.slice(2))) {\n\t\t\temitHeadlessStartupError(err);\n\t\t} else {\n\t\t\tconsole.error(err);\n\t\t}\n\t\tawait reportFatalCliError(err);\n\t\tprocess.exit(1);\n\t}\n};\n\n// Call without top-level await so Bun's bytecode compilation (which forbids TLA) can bundle this entry.\nvoid run();\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,0DAA0D;AAC1D,sFAAsF;AACtF,OAAO,EAEN,mBAAmB,EACnB,uBAAuB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAGlC,CAAC;AACb,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAsB,EAAE,GAAG,IAAe,EAAE,EAAE;IAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACxB,IACC,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,KAAK,IAAI;YACjB,MAAM,IAAI,QAAQ;YAClB,MAAM,IAAI,QAAQ;YACjB,QAA6C,CAAC,IAAI;gBAClD,oBAAoB;YACpB,QAA6C,CAAC,IAAI,KAAK,SAAS,EAChE,CAAC;YACF,OAAO,KAAK,CAAC,CAAC,gCAAgC;QAC/C,CAAC;IACF,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC,CAAwB,CAAC;AAE1B,SAAS,oBAAoB,CAAC,IAAc;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IACC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,EACzC,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,2CAA2C;AAC3C,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IAC9C,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,IAAI;IACJ,eAAe;IACf,UAAU;IACV,eAAe;IACf,WAAW;IACX,QAAQ;IACR,iBAAiB;IACjB,wBAAwB;IACxB,WAAW;IACX,iBAAiB;IACjB,QAAQ;IACR,WAAW;IACX,iBAAiB;IACjB,uBAAuB;IACvB,SAAS;IACT,YAAY;IACZ,UAAU;IACV,WAAW;IACX,UAAU;IACV,SAAS;IACT,UAAU;IACV,mBAAmB;CACnB,CAAC,CAAC;AAEH,SAAS,yBAAyB,CAAC,IAAuB;IACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,SAAS;QACV,CAAC;QACD,IAAI,8BAA8B,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxE,KAAK,EAAE,CAAC;YACR,SAAS;QACV,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACV,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,iCAAiC,CAAC,IAAuB;IACjE,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AACnD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC/C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,IAAI,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,GAAG,IAAI,CAAC,SAAS,CAAC;YACjB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,4BAA4B,OAAO,EAAE;YAC9C,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,OAAO;SACnB,CAAC,IAAI,CACN,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,qEAAqE;IACtE,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,OAAO,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC;QACJ,MAAM,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CACvE,aAAa,CACb,CAAC;QACF,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1B,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,WAAW,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACR,0EAA0E;IAC3E,CAAC;AACF,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,IAAc,EACd,iBAA2B,EAAE;IAE7B,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,iBAAiB,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3E,IACC,GAAG,CAAC,2BAA2B;YAC/B,GAAG,CAAC,EAAE;YACN,GAAG,CAAC,QAAQ,KAAK,MAAM;YACvB,iBAAiB,KAAK,GAAG;YACzB,iBAAiB,KAAK,OAAO;YAC7B,iBAAiB,KAAK,KAAK;YAC3B,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;YACpB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EACpB,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC,GACtE,MAAM,OAAO,CAAC,GAAG,CAAC;YACjB,MAAM,CAAC,uBAAuB,CAAC;YAC/B,MAAM,CAAC,6BAA6B,CAAC;SACrC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC;YAC1C,IAAI;YACJ,cAAc,EAAE,iBAAiB,CAAC,GAAG,CAAC;YACtC,GAAG;YACH,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;SAChC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,8EAA8E;IAC/E,CAAC;AACF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,YAAY,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO;IACR,CAAC;IAED,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChE,MAAM,CAAC,eAAe,CAAC;QACvB,MAAM,CAAC,uBAAuB,CAAC;KAC/B,CAAC,CAAC;IACH,SAAS,CAAC,iBAAiB,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAc;IAC1C,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC7E,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO;IACR,CAAC;IACD,MAAM,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC;gBACJ,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;IAClC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,8BAA8B;IAC5C,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC7E,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,yBAAyB,GAAG,+BAA+B,GAAG,IAAI,CAAC;IACzE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,EAAE,kCAAkC,EAAE,GAC3C,MAAM,8BAA8B,EAAE,CAAC;IACxC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC7E,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAC/D,0BAA0B,CAC1B,CAAC;QACF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,IAAI,CAAC;IAC5D,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAC/D,mBAAmB,CACnB,CAAC;IACF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,IAAc;IACpD,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,EAAE,6BAA6B,EAAE,GACtC,MAAM,8BAA8B,EAAE,CAAC;IACxC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7D,CAAC,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;YAC3C,SAAS,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7D,CAAC,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACR,CAAC;QACD,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO;QACR,CAAC;QACD,IAAI,MAAM,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO;QACR,CAAC;QACD,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC;AAEF,wGAAwG;AACxG,KAAK,GAAG,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n\ndeclare const MAESTRO_BUNDLE_RUNTIME: boolean | undefined;\n\n// Suppress punycode deprecation warning from dependencies\n// This warning comes from old dependencies still using the deprecated punycode module\nimport {\n\ttype ImmediateCliExit,\n\tgetImmediateCliExit,\n\tshouldUseInstantCliExit,\n} from \"./cli/instant-exit.js\";\n\nconst originalEmit = process.emit.bind(process) as (\n\tevent: string | symbol,\n\t...args: unknown[]\n) => boolean;\nprocess.emit = ((event: string | symbol, ...args: unknown[]) => {\n\tif (event === \"warning\") {\n\t\tconst [firstArg] = args;\n\t\tif (\n\t\t\ttypeof firstArg === \"object\" &&\n\t\t\tfirstArg !== null &&\n\t\t\t\"name\" in firstArg &&\n\t\t\t\"code\" in firstArg &&\n\t\t\t(firstArg as { name?: string; code?: string }).name ===\n\t\t\t\t\"DeprecationWarning\" &&\n\t\t\t(firstArg as { name?: string; code?: string }).code === \"DEP0040\"\n\t\t) {\n\t\t\treturn false; // Suppress punycode deprecation\n\t\t}\n\t}\n\treturn originalEmit(event, ...args);\n}) as typeof process.emit;\n\nfunction isHeadlessInvocation(args: string[]): boolean {\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\t\tif (arg === \"--headless\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (arg === \"--mode\" && args[i + 1] === \"headless\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\targ?.startsWith(\"--mode=\") &&\n\t\t\targ.slice(\"--mode=\".length) === \"headless\"\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n// Keep this detector local: importing the shared command runtime detector is the\n// pre-main work the exec fast path avoids.\nconst EXEC_RUNTIME_FLAGS_WITH_VALUES = new Set([\n\t\"--mode\",\n\t\"--provider\",\n\t\"--model\",\n\t\"-m\",\n\t\"--task-budget\",\n\t\"--models\",\n\t\"--models-file\",\n\t\"--api-key\",\n\t\"--port\",\n\t\"--system-prompt\",\n\t\"--append-system-prompt\",\n\t\"--session\",\n\t\"--approval-mode\",\n\t\"--auth\",\n\t\"--sandbox\",\n\t\"--output-schema\",\n\t\"--output-last-message\",\n\t\"--tools\",\n\t\"--composer\",\n\t\"--format\",\n\t\"--profile\",\n\t\"--config\",\n\t\"--junit\",\n\t\"--replay\",\n\t\"--record-scenario\",\n]);\n\nfunction getLauncherRuntimeCommand(args: readonly string[]): string | null {\n\tfor (let index = 0; index < args.length; index++) {\n\t\tconst arg = args[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (EXEC_RUNTIME_FLAGS_WITH_VALUES.has(arg) && index + 1 < args.length) {\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn arg;\n\t}\n\treturn null;\n}\n\nfunction shouldUseFastUnbundledExecRuntime(args: readonly string[]): boolean {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn false;\n\t}\n\treturn getLauncherRuntimeCommand(args) === \"exec\";\n}\n\nfunction emitHeadlessStartupError(error: unknown): void {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconst stack = error instanceof Error ? error.stack : undefined;\n\ttry {\n\t\tprocess.stdout.write(\n\t\t\t`${JSON.stringify({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `Headless startup failed: ${message}`,\n\t\t\t\tfatal: true,\n\t\t\t\terror_type: \"fatal\",\n\t\t\t})}\\n`,\n\t\t);\n\t} catch {\n\t\t// If stdout is unavailable there is no protocol channel left to use.\n\t}\n\tprocess.stderr.write(`${stack ?? message}\\n`);\n}\n\nasync function reportFatalCliError(error: unknown): Promise<void> {\n\ttry {\n\t\tconst { captureSentryException, flushSentry, initSentry } = await import(\n\t\t\t\"./sentry.js\"\n\t\t);\n\t\tinitSentry(\"maestro-cli\");\n\t\tcaptureSentryException(error);\n\t\tawait flushSentry();\n\t} catch {\n\t\t// Sentry reporting is best-effort and must not mask the original failure.\n\t}\n}\n\nasync function refreshInstalledCliOnStartup(\n\targs: string[],\n\tignoredEnvKeys: string[] = [],\n): Promise<void> {\n\ttry {\n\t\tconst env = { ...process.env };\n\t\tfor (const key of ignoredEnvKeys) {\n\t\t\tdelete env[key];\n\t\t}\n\t\tconst startupUpdateMode = env.MAESTRO_STARTUP_UPDATE?.trim().toLowerCase();\n\t\tif (\n\t\t\tenv.MAESTRO_SKIP_STARTUP_UPDATE ||\n\t\t\tenv.CI ||\n\t\t\tenv.NODE_ENV === \"test\" ||\n\t\t\tstartupUpdateMode === \"0\" ||\n\t\t\tstartupUpdateMode === \"false\" ||\n\t\t\tstartupUpdateMode === \"off\" ||\n\t\t\t!process.stdin.isTTY ||\n\t\t\t!process.stdout.isTTY\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst [{ getPackageName, getPackageVersion }, { attemptStartupUpdate }] =\n\t\t\tawait Promise.all([\n\t\t\t\timport(\"./package-metadata.js\"),\n\t\t\t\timport(\"./update/startup-refresh.js\"),\n\t\t\t]);\n\t\tconst outcome = await attemptStartupUpdate({\n\t\t\targs,\n\t\t\tcurrentVersion: getPackageVersion(env),\n\t\t\tenv,\n\t\t\tpackageName: getPackageName(env),\n\t\t});\n\t\tif (outcome.status === \"restarted\") {\n\t\t\tprocess.exit(outcome.exitCode);\n\t\t}\n\t} catch {\n\t\t// Startup refresh is best-effort and must never prevent the CLI from booting.\n\t}\n}\n\nasync function runImmediateCliExit(exit: ImmediateCliExit): Promise<void> {\n\tif (exit.kind === \"version\") {\n\t\tconst { getPackageVersion } = await import(\"./package-metadata.js\");\n\t\tconsole.log(`Maestro v${getPackageVersion()}`);\n\t\treturn;\n\t}\n\n\tconst [{ printHelp }, { getPackageVersion }] = await Promise.all([\n\t\timport(\"./cli/help.js\"),\n\t\timport(\"./package-metadata.js\"),\n\t]);\n\tprintHelp(getPackageVersion(), { includeHidden: exit.includeHidden });\n}\n\nasync function runCliRuntime(args: string[]): Promise<void> {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\tconst { runCliRuntime: runRuntime } = await import(\"./cli-runtime.js\");\n\t\tawait runRuntime(args);\n\t\treturn;\n\t}\n\tconst runtimeEntry = \"./cli-runtime.\" + \"js\";\n\tconst { runCliRuntime: runRuntime } = await import(runtimeEntry);\n\tawait runRuntime(args);\n}\n\nasync function runMainRuntime(args: string[]): Promise<void> {\n\tconst loadMain = async () => {\n\t\tif (process.versions?.bun) {\n\t\t\tconst tsEntry = \"./main.\" + \"ts\";\n\t\t\ttry {\n\t\t\t\treturn await import(tsEntry);\n\t\t\t} catch {\n\t\t\t\treturn await import(\"./main.js\");\n\t\t\t}\n\t\t}\n\t\tconst mainEntry = \"./main.\" + \"js\";\n\t\treturn import(mainEntry);\n\t};\n\n\tconst { main } = await loadMain();\n\tawait main(args);\n}\n\nasync function loadDirectRuntimeCommandModule() {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn import(\"./cli/direct-runtime-command.js\");\n\t}\n\tconst directRuntimeCommandEntry = \"./cli/direct-runtime-command.\" + \"js\";\n\treturn import(directRuntimeCommandEntry);\n}\n\nasync function runCliCommandRuntime(args: string[]): Promise<boolean> {\n\tconst { shouldAttemptDirectRuntimeDispatch } =\n\t\tawait loadDirectRuntimeCommandModule();\n\tif (!shouldAttemptDirectRuntimeDispatch(args)) {\n\t\treturn false;\n\t}\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\tconst { runCliCommandRuntime: runCommandRuntime } = await import(\n\t\t\t\"./cli-command-runtime.js\"\n\t\t);\n\t\treturn runCommandRuntime(args);\n\t}\n\tconst commandRuntimeEntry = \"./cli-command-runtime.\" + \"js\";\n\tconst { runCliCommandRuntime: runCommandRuntime } = await import(\n\t\tcommandRuntimeEntry\n\t);\n\treturn runCommandRuntime(args);\n}\n\nasync function runUnbundledMainRuntime(args: string[]): Promise<boolean> {\n\tif (typeof MAESTRO_BUNDLE_RUNTIME !== \"undefined\" && MAESTRO_BUNDLE_RUNTIME) {\n\t\treturn false;\n\t}\n\tconst { shouldUseUnbundledMainRuntime } =\n\t\tawait loadDirectRuntimeCommandModule();\n\tif (!shouldUseUnbundledMainRuntime(args)) {\n\t\treturn false;\n\t}\n\tawait runMainRuntime(args);\n\treturn true;\n}\n\nconst run = async () => {\n\ttry {\n\t\tconst args = process.argv.slice(2);\n\t\tconst immediateExit = getImmediateCliExit(args);\n\t\tlet envLoaded = false;\n\t\tlet loadedEnvKeys: string[] = [];\n\t\tif (immediateExit !== null) {\n\t\t\tconst { loadAndFinalizeEnv } = await import(\"./load-env.js\");\n\t\t\t({ loadedEnvKeys } = loadAndFinalizeEnv());\n\t\t\tenvLoaded = true;\n\t\t}\n\t\tif (shouldUseInstantCliExit(immediateExit, process.env)) {\n\t\t\tawait runImmediateCliExit(immediateExit);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!envLoaded) {\n\t\t\tconst { loadAndFinalizeEnv } = await import(\"./load-env.js\");\n\t\t\t({ loadedEnvKeys } = loadAndFinalizeEnv());\n\t\t}\n\t\tawait refreshInstalledCliOnStartup(args, loadedEnvKeys);\n\t\tif (shouldUseFastUnbundledExecRuntime(args)) {\n\t\t\tawait runMainRuntime(args);\n\t\t\treturn;\n\t\t}\n\t\tif (await runCliCommandRuntime(args)) {\n\t\t\treturn;\n\t\t}\n\t\tif (await runUnbundledMainRuntime(args)) {\n\t\t\treturn;\n\t\t}\n\t\tawait runCliRuntime(args);\n\t} catch (err) {\n\t\tif (isHeadlessInvocation(process.argv.slice(2))) {\n\t\t\temitHeadlessStartupError(err);\n\t\t} else {\n\t\t\tconsole.error(err);\n\t\t}\n\t\tawait reportFatalCliError(err);\n\t\tprocess.exit(1);\n\t}\n};\n\n// Call without top-level await so Bun's bytecode compilation (which forbids TLA) can bundle this entry.\nvoid run();\n"]}
|
package/dist/db/health.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CRITICAL_DATABASE_TABLES: readonly ["_composer_migrations", "organizations", "users", "sessions", "webhook_deliveries", "distributed_locks", "usage_metrics", "execution_traces", "workspace_config", "revenue_attribution"];
|
|
1
|
+
export declare const CRITICAL_DATABASE_TABLES: readonly ["_composer_migrations", "organizations", "users", "sessions", "webhook_deliveries", "distributed_locks", "usage_metrics", "execution_traces", "operating_layer_evidence", "workspace_config", "revenue_attribution"];
|
|
2
2
|
export interface CriticalTableCheck {
|
|
3
3
|
name: (typeof CRITICAL_DATABASE_TABLES)[number];
|
|
4
4
|
exists: boolean;
|
package/dist/db/health.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/db/health.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/db/health.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,gOAY3B,CAAC;AAEX,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAgCD,wBAAsB,mBAAmB,CACxC,MAAM,GAAE,SAAS,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,EAA6B,GACrF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqC/B"}
|
package/dist/db/health.js
CHANGED
|
@@ -9,6 +9,7 @@ export const CRITICAL_DATABASE_TABLES = [
|
|
|
9
9
|
"distributed_locks",
|
|
10
10
|
"usage_metrics",
|
|
11
11
|
"execution_traces",
|
|
12
|
+
"operating_layer_evidence",
|
|
12
13
|
"workspace_config",
|
|
13
14
|
"revenue_attribution",
|
|
14
15
|
];
|
|
@@ -29,6 +30,15 @@ const CRITICAL_DATABASE_COLUMNS = {
|
|
|
29
30
|
"delivered_at",
|
|
30
31
|
"created_at",
|
|
31
32
|
],
|
|
33
|
+
operating_layer_evidence: [
|
|
34
|
+
"id",
|
|
35
|
+
"capability_id",
|
|
36
|
+
"evidence_kind",
|
|
37
|
+
"subject",
|
|
38
|
+
"status",
|
|
39
|
+
"evidence",
|
|
40
|
+
"recorded_at",
|
|
41
|
+
],
|
|
32
42
|
};
|
|
33
43
|
export async function checkCriticalTables(tables = CRITICAL_DATABASE_TABLES) {
|
|
34
44
|
const db = getDb();
|
package/dist/db/health.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/db/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,sBAAsB;IACtB,eAAe;IACf,OAAO;IACP,UAAU;IACV,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACZ,CAAC;AAQX,MAAM,yBAAyB,GAE3B;IACH,kBAAkB,EAAE;QACnB,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,SAAS;QACT,WAAW;QACX,QAAQ;QACR,UAAU;QACV,cAAc;QACd,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,uBAAuB;QACvB,cAAc;QACd,YAAY;KACZ;CACD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,SAA+D,wBAAwB;IAEvF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,UAAU,SAAS,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;wBACb,aAAa;GAClC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAmC,CAAC;QACnE,MAAM,eAAe,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;wBAIrB,SAAS;IAC7B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAoC;iBAC3D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;iBACnC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAC5D,CAAC;YACF,cAAc,GAAG,eAAe,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CACtC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;YAC5B,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import { sql } from \"drizzle-orm\";\nimport { getDb } from \"./client.js\";\n\nexport const CRITICAL_DATABASE_TABLES = [\n\t\"_composer_migrations\",\n\t\"organizations\",\n\t\"users\",\n\t\"sessions\",\n\t\"webhook_deliveries\",\n\t\"distributed_locks\",\n\t\"usage_metrics\",\n\t\"execution_traces\",\n\t\"workspace_config\",\n\t\"revenue_attribution\",\n] as const;\n\nexport interface CriticalTableCheck {\n\tname: (typeof CRITICAL_DATABASE_TABLES)[number];\n\texists: boolean;\n\tmissingColumns?: string[];\n}\n\nconst CRITICAL_DATABASE_COLUMNS: Partial<\n\tRecord<(typeof CRITICAL_DATABASE_TABLES)[number], readonly string[]>\n> = {\n\twebhook_deliveries: [\n\t\t\"id\",\n\t\t\"org_id\",\n\t\t\"url\",\n\t\t\"payload\",\n\t\t\"signature\",\n\t\t\"status\",\n\t\t\"attempts\",\n\t\t\"max_attempts\",\n\t\t\"next_retry_at\",\n\t\t\"last_error\",\n\t\t\"last_status_code\",\n\t\t\"last_response_time_ms\",\n\t\t\"delivered_at\",\n\t\t\"created_at\",\n\t],\n};\n\nexport async function checkCriticalTables(\n\ttables: readonly (typeof CRITICAL_DATABASE_TABLES)[number][] = CRITICAL_DATABASE_TABLES,\n): Promise<CriticalTableCheck[]> {\n\tconst db = getDb();\n\tconst checks: CriticalTableCheck[] = [];\n\n\tfor (const tableName of tables) {\n\t\tconst qualifiedName = `public.${tableName}`;\n\t\tconst result = await db.execute(sql`\n\t\t\tSELECT to_regclass(${qualifiedName}) IS NOT NULL AS exists\n\t\t`);\n\t\tconst [row] = Array.from(result) as Array<Record<string, unknown>>;\n\t\tconst requiredColumns = CRITICAL_DATABASE_COLUMNS[tableName] ?? [];\n\t\tlet missingColumns: string[] = [];\n\t\tif (row?.exists === true && requiredColumns.length > 0) {\n\t\t\tconst columnsResult = await db.execute(sql`\n\t\t\t\tSELECT column_name\n\t\t\t\tFROM information_schema.columns\n\t\t\t\tWHERE table_schema = 'public'\n\t\t\t\t\tAND table_name = ${tableName}\n\t\t\t`);\n\t\t\tconst actualColumns = new Set(\n\t\t\t\t(Array.from(columnsResult) as Array<Record<string, unknown>>)\n\t\t\t\t\t.map((column) => column.column_name)\n\t\t\t\t\t.filter((name): name is string => typeof name === \"string\"),\n\t\t\t);\n\t\t\tmissingColumns = requiredColumns.filter(\n\t\t\t\t(column) => !actualColumns.has(column),\n\t\t\t);\n\t\t}\n\n\t\tchecks.push({\n\t\t\tname: tableName,\n\t\t\texists: row?.exists === true,\n\t\t\t...(missingColumns.length > 0 ? { missingColumns } : {}),\n\t\t});\n\t}\n\n\treturn checks;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/db/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,sBAAsB;IACtB,eAAe;IACf,OAAO;IACP,UAAU;IACV,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,kBAAkB;IAClB,0BAA0B;IAC1B,kBAAkB;IAClB,qBAAqB;CACZ,CAAC;AAQX,MAAM,yBAAyB,GAE3B;IACH,kBAAkB,EAAE;QACnB,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,SAAS;QACT,WAAW;QACX,QAAQ;QACR,UAAU;QACV,cAAc;QACd,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,uBAAuB;QACvB,cAAc;QACd,YAAY;KACZ;IACD,wBAAwB,EAAE;QACzB,IAAI;QACJ,eAAe;QACf,eAAe;QACf,SAAS;QACT,QAAQ;QACR,UAAU;QACV,aAAa;KACb;CACD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,SAA+D,wBAAwB;IAEvF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,UAAU,SAAS,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;wBACb,aAAa;GAClC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAmC,CAAC;QACnE,MAAM,eAAe,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;wBAIrB,SAAS;IAC7B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAoC;iBAC3D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;iBACnC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAC5D,CAAC;YACF,cAAc,GAAG,eAAe,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CACtC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;YAC5B,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import { sql } from \"drizzle-orm\";\nimport { getDb } from \"./client.js\";\n\nexport const CRITICAL_DATABASE_TABLES = [\n\t\"_composer_migrations\",\n\t\"organizations\",\n\t\"users\",\n\t\"sessions\",\n\t\"webhook_deliveries\",\n\t\"distributed_locks\",\n\t\"usage_metrics\",\n\t\"execution_traces\",\n\t\"operating_layer_evidence\",\n\t\"workspace_config\",\n\t\"revenue_attribution\",\n] as const;\n\nexport interface CriticalTableCheck {\n\tname: (typeof CRITICAL_DATABASE_TABLES)[number];\n\texists: boolean;\n\tmissingColumns?: string[];\n}\n\nconst CRITICAL_DATABASE_COLUMNS: Partial<\n\tRecord<(typeof CRITICAL_DATABASE_TABLES)[number], readonly string[]>\n> = {\n\twebhook_deliveries: [\n\t\t\"id\",\n\t\t\"org_id\",\n\t\t\"url\",\n\t\t\"payload\",\n\t\t\"signature\",\n\t\t\"status\",\n\t\t\"attempts\",\n\t\t\"max_attempts\",\n\t\t\"next_retry_at\",\n\t\t\"last_error\",\n\t\t\"last_status_code\",\n\t\t\"last_response_time_ms\",\n\t\t\"delivered_at\",\n\t\t\"created_at\",\n\t],\n\toperating_layer_evidence: [\n\t\t\"id\",\n\t\t\"capability_id\",\n\t\t\"evidence_kind\",\n\t\t\"subject\",\n\t\t\"status\",\n\t\t\"evidence\",\n\t\t\"recorded_at\",\n\t],\n};\n\nexport async function checkCriticalTables(\n\ttables: readonly (typeof CRITICAL_DATABASE_TABLES)[number][] = CRITICAL_DATABASE_TABLES,\n): Promise<CriticalTableCheck[]> {\n\tconst db = getDb();\n\tconst checks: CriticalTableCheck[] = [];\n\n\tfor (const tableName of tables) {\n\t\tconst qualifiedName = `public.${tableName}`;\n\t\tconst result = await db.execute(sql`\n\t\t\tSELECT to_regclass(${qualifiedName}) IS NOT NULL AS exists\n\t\t`);\n\t\tconst [row] = Array.from(result) as Array<Record<string, unknown>>;\n\t\tconst requiredColumns = CRITICAL_DATABASE_COLUMNS[tableName] ?? [];\n\t\tlet missingColumns: string[] = [];\n\t\tif (row?.exists === true && requiredColumns.length > 0) {\n\t\t\tconst columnsResult = await db.execute(sql`\n\t\t\t\tSELECT column_name\n\t\t\t\tFROM information_schema.columns\n\t\t\t\tWHERE table_schema = 'public'\n\t\t\t\t\tAND table_name = ${tableName}\n\t\t\t`);\n\t\t\tconst actualColumns = new Set(\n\t\t\t\t(Array.from(columnsResult) as Array<Record<string, unknown>>)\n\t\t\t\t\t.map((column) => column.column_name)\n\t\t\t\t\t.filter((name): name is string => typeof name === \"string\"),\n\t\t\t);\n\t\t\tmissingColumns = requiredColumns.filter(\n\t\t\t\t(column) => !actualColumns.has(column),\n\t\t\t);\n\t\t}\n\n\t\tchecks.push({\n\t\t\tname: tableName,\n\t\t\texists: row?.exists === true,\n\t\t\t...(missingColumns.length > 0 ? { missingColumns } : {}),\n\t\t});\n\t}\n\n\treturn checks;\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "operating_layer_evidence" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"org_id" uuid,
|
|
4
|
+
"session_id" varchar(255),
|
|
5
|
+
"capability_id" varchar(64) NOT NULL,
|
|
6
|
+
"evidence_kind" varchar(128) NOT NULL,
|
|
7
|
+
"subject" varchar(255) NOT NULL,
|
|
8
|
+
"status" varchar(32) DEFAULT 'recorded' NOT NULL,
|
|
9
|
+
"score" integer,
|
|
10
|
+
"blockers" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
11
|
+
"warnings" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
12
|
+
"evidence" jsonb NOT NULL,
|
|
13
|
+
"metadata" jsonb DEFAULT '{}'::jsonb,
|
|
14
|
+
"recorded_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
15
|
+
"expires_at" timestamp with time zone,
|
|
16
|
+
CONSTRAINT "operating_layer_evidence_org_id_organizations_id_fk"
|
|
17
|
+
FOREIGN KEY ("org_id") REFERENCES "organizations"("id") ON DELETE cascade
|
|
18
|
+
);
|
|
19
|
+
--> statement-breakpoint
|
|
20
|
+
CREATE INDEX IF NOT EXISTS "operating_layer_evidence_capability_recorded_idx"
|
|
21
|
+
ON "operating_layer_evidence" ("capability_id", "recorded_at");
|
|
22
|
+
--> statement-breakpoint
|
|
23
|
+
CREATE INDEX IF NOT EXISTS "operating_layer_evidence_org_recorded_idx"
|
|
24
|
+
ON "operating_layer_evidence" ("org_id", "recorded_at");
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
CREATE INDEX IF NOT EXISTS "operating_layer_evidence_session_recorded_idx"
|
|
27
|
+
ON "operating_layer_evidence" ("session_id", "recorded_at");
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE INDEX IF NOT EXISTS "operating_layer_evidence_expiry_idx"
|
|
30
|
+
ON "operating_layer_evidence" ("expires_at");
|
|
@@ -64,6 +64,13 @@
|
|
|
64
64
|
"when": 1777303800000,
|
|
65
65
|
"tag": "0008_reconcile_legacy_webhook_deliveries",
|
|
66
66
|
"breakpoints": true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"idx": 9,
|
|
70
|
+
"version": "7",
|
|
71
|
+
"when": 1781749800000,
|
|
72
|
+
"tag": "0009_operating_layer_evidence",
|
|
73
|
+
"breakpoints": true
|
|
67
74
|
}
|
|
68
75
|
]
|
|
69
76
|
}
|
package/dist/db/schema.d.ts
CHANGED
|
@@ -1740,6 +1740,269 @@ export declare const hostedSessionEntries: import("drizzle-orm/pg-core").PgTable
|
|
|
1740
1740
|
};
|
|
1741
1741
|
dialect: "pg";
|
|
1742
1742
|
}>;
|
|
1743
|
+
export declare const operatingLayerEvidence: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
1744
|
+
name: "operating_layer_evidence";
|
|
1745
|
+
schema: undefined;
|
|
1746
|
+
columns: {
|
|
1747
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
1748
|
+
name: "id";
|
|
1749
|
+
tableName: "operating_layer_evidence";
|
|
1750
|
+
dataType: "string";
|
|
1751
|
+
columnType: "PgUUID";
|
|
1752
|
+
data: string;
|
|
1753
|
+
driverParam: string;
|
|
1754
|
+
notNull: true;
|
|
1755
|
+
hasDefault: true;
|
|
1756
|
+
isPrimaryKey: true;
|
|
1757
|
+
isAutoincrement: false;
|
|
1758
|
+
hasRuntimeDefault: false;
|
|
1759
|
+
enumValues: undefined;
|
|
1760
|
+
baseColumn: never;
|
|
1761
|
+
identity: undefined;
|
|
1762
|
+
generated: undefined;
|
|
1763
|
+
}, {}, {}>;
|
|
1764
|
+
orgId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1765
|
+
name: "org_id";
|
|
1766
|
+
tableName: "operating_layer_evidence";
|
|
1767
|
+
dataType: "string";
|
|
1768
|
+
columnType: "PgUUID";
|
|
1769
|
+
data: string;
|
|
1770
|
+
driverParam: string;
|
|
1771
|
+
notNull: false;
|
|
1772
|
+
hasDefault: false;
|
|
1773
|
+
isPrimaryKey: false;
|
|
1774
|
+
isAutoincrement: false;
|
|
1775
|
+
hasRuntimeDefault: false;
|
|
1776
|
+
enumValues: undefined;
|
|
1777
|
+
baseColumn: never;
|
|
1778
|
+
identity: undefined;
|
|
1779
|
+
generated: undefined;
|
|
1780
|
+
}, {}, {}>;
|
|
1781
|
+
sessionId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1782
|
+
name: "session_id";
|
|
1783
|
+
tableName: "operating_layer_evidence";
|
|
1784
|
+
dataType: "string";
|
|
1785
|
+
columnType: "PgVarchar";
|
|
1786
|
+
data: string;
|
|
1787
|
+
driverParam: string;
|
|
1788
|
+
notNull: false;
|
|
1789
|
+
hasDefault: false;
|
|
1790
|
+
isPrimaryKey: false;
|
|
1791
|
+
isAutoincrement: false;
|
|
1792
|
+
hasRuntimeDefault: false;
|
|
1793
|
+
enumValues: [string, ...string[]];
|
|
1794
|
+
baseColumn: never;
|
|
1795
|
+
identity: undefined;
|
|
1796
|
+
generated: undefined;
|
|
1797
|
+
}, {}, {
|
|
1798
|
+
length: 255;
|
|
1799
|
+
}>;
|
|
1800
|
+
capabilityId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1801
|
+
name: "capability_id";
|
|
1802
|
+
tableName: "operating_layer_evidence";
|
|
1803
|
+
dataType: "string";
|
|
1804
|
+
columnType: "PgVarchar";
|
|
1805
|
+
data: string;
|
|
1806
|
+
driverParam: string;
|
|
1807
|
+
notNull: true;
|
|
1808
|
+
hasDefault: false;
|
|
1809
|
+
isPrimaryKey: false;
|
|
1810
|
+
isAutoincrement: false;
|
|
1811
|
+
hasRuntimeDefault: false;
|
|
1812
|
+
enumValues: [string, ...string[]];
|
|
1813
|
+
baseColumn: never;
|
|
1814
|
+
identity: undefined;
|
|
1815
|
+
generated: undefined;
|
|
1816
|
+
}, {}, {
|
|
1817
|
+
length: 64;
|
|
1818
|
+
}>;
|
|
1819
|
+
evidenceKind: import("drizzle-orm/pg-core").PgColumn<{
|
|
1820
|
+
name: "evidence_kind";
|
|
1821
|
+
tableName: "operating_layer_evidence";
|
|
1822
|
+
dataType: "string";
|
|
1823
|
+
columnType: "PgVarchar";
|
|
1824
|
+
data: string;
|
|
1825
|
+
driverParam: string;
|
|
1826
|
+
notNull: true;
|
|
1827
|
+
hasDefault: false;
|
|
1828
|
+
isPrimaryKey: false;
|
|
1829
|
+
isAutoincrement: false;
|
|
1830
|
+
hasRuntimeDefault: false;
|
|
1831
|
+
enumValues: [string, ...string[]];
|
|
1832
|
+
baseColumn: never;
|
|
1833
|
+
identity: undefined;
|
|
1834
|
+
generated: undefined;
|
|
1835
|
+
}, {}, {
|
|
1836
|
+
length: 128;
|
|
1837
|
+
}>;
|
|
1838
|
+
subject: import("drizzle-orm/pg-core").PgColumn<{
|
|
1839
|
+
name: "subject";
|
|
1840
|
+
tableName: "operating_layer_evidence";
|
|
1841
|
+
dataType: "string";
|
|
1842
|
+
columnType: "PgVarchar";
|
|
1843
|
+
data: string;
|
|
1844
|
+
driverParam: string;
|
|
1845
|
+
notNull: true;
|
|
1846
|
+
hasDefault: false;
|
|
1847
|
+
isPrimaryKey: false;
|
|
1848
|
+
isAutoincrement: false;
|
|
1849
|
+
hasRuntimeDefault: false;
|
|
1850
|
+
enumValues: [string, ...string[]];
|
|
1851
|
+
baseColumn: never;
|
|
1852
|
+
identity: undefined;
|
|
1853
|
+
generated: undefined;
|
|
1854
|
+
}, {}, {
|
|
1855
|
+
length: 255;
|
|
1856
|
+
}>;
|
|
1857
|
+
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
1858
|
+
name: "status";
|
|
1859
|
+
tableName: "operating_layer_evidence";
|
|
1860
|
+
dataType: "string";
|
|
1861
|
+
columnType: "PgVarchar";
|
|
1862
|
+
data: string;
|
|
1863
|
+
driverParam: string;
|
|
1864
|
+
notNull: true;
|
|
1865
|
+
hasDefault: true;
|
|
1866
|
+
isPrimaryKey: false;
|
|
1867
|
+
isAutoincrement: false;
|
|
1868
|
+
hasRuntimeDefault: false;
|
|
1869
|
+
enumValues: [string, ...string[]];
|
|
1870
|
+
baseColumn: never;
|
|
1871
|
+
identity: undefined;
|
|
1872
|
+
generated: undefined;
|
|
1873
|
+
}, {}, {
|
|
1874
|
+
length: 32;
|
|
1875
|
+
}>;
|
|
1876
|
+
score: import("drizzle-orm/pg-core").PgColumn<{
|
|
1877
|
+
name: "score";
|
|
1878
|
+
tableName: "operating_layer_evidence";
|
|
1879
|
+
dataType: "number";
|
|
1880
|
+
columnType: "PgInteger";
|
|
1881
|
+
data: number;
|
|
1882
|
+
driverParam: string | number;
|
|
1883
|
+
notNull: false;
|
|
1884
|
+
hasDefault: false;
|
|
1885
|
+
isPrimaryKey: false;
|
|
1886
|
+
isAutoincrement: false;
|
|
1887
|
+
hasRuntimeDefault: false;
|
|
1888
|
+
enumValues: undefined;
|
|
1889
|
+
baseColumn: never;
|
|
1890
|
+
identity: undefined;
|
|
1891
|
+
generated: undefined;
|
|
1892
|
+
}, {}, {}>;
|
|
1893
|
+
blockers: import("drizzle-orm/pg-core").PgColumn<{
|
|
1894
|
+
name: "blockers";
|
|
1895
|
+
tableName: "operating_layer_evidence";
|
|
1896
|
+
dataType: "json";
|
|
1897
|
+
columnType: "PgJsonb";
|
|
1898
|
+
data: string[];
|
|
1899
|
+
driverParam: unknown;
|
|
1900
|
+
notNull: true;
|
|
1901
|
+
hasDefault: true;
|
|
1902
|
+
isPrimaryKey: false;
|
|
1903
|
+
isAutoincrement: false;
|
|
1904
|
+
hasRuntimeDefault: false;
|
|
1905
|
+
enumValues: undefined;
|
|
1906
|
+
baseColumn: never;
|
|
1907
|
+
identity: undefined;
|
|
1908
|
+
generated: undefined;
|
|
1909
|
+
}, {}, {
|
|
1910
|
+
$type: string[];
|
|
1911
|
+
}>;
|
|
1912
|
+
warnings: import("drizzle-orm/pg-core").PgColumn<{
|
|
1913
|
+
name: "warnings";
|
|
1914
|
+
tableName: "operating_layer_evidence";
|
|
1915
|
+
dataType: "json";
|
|
1916
|
+
columnType: "PgJsonb";
|
|
1917
|
+
data: string[];
|
|
1918
|
+
driverParam: unknown;
|
|
1919
|
+
notNull: true;
|
|
1920
|
+
hasDefault: true;
|
|
1921
|
+
isPrimaryKey: false;
|
|
1922
|
+
isAutoincrement: false;
|
|
1923
|
+
hasRuntimeDefault: false;
|
|
1924
|
+
enumValues: undefined;
|
|
1925
|
+
baseColumn: never;
|
|
1926
|
+
identity: undefined;
|
|
1927
|
+
generated: undefined;
|
|
1928
|
+
}, {}, {
|
|
1929
|
+
$type: string[];
|
|
1930
|
+
}>;
|
|
1931
|
+
evidence: import("drizzle-orm/pg-core").PgColumn<{
|
|
1932
|
+
name: "evidence";
|
|
1933
|
+
tableName: "operating_layer_evidence";
|
|
1934
|
+
dataType: "json";
|
|
1935
|
+
columnType: "PgJsonb";
|
|
1936
|
+
data: unknown;
|
|
1937
|
+
driverParam: unknown;
|
|
1938
|
+
notNull: true;
|
|
1939
|
+
hasDefault: false;
|
|
1940
|
+
isPrimaryKey: false;
|
|
1941
|
+
isAutoincrement: false;
|
|
1942
|
+
hasRuntimeDefault: false;
|
|
1943
|
+
enumValues: undefined;
|
|
1944
|
+
baseColumn: never;
|
|
1945
|
+
identity: undefined;
|
|
1946
|
+
generated: undefined;
|
|
1947
|
+
}, {}, {
|
|
1948
|
+
$type: unknown;
|
|
1949
|
+
}>;
|
|
1950
|
+
metadata: import("drizzle-orm/pg-core").PgColumn<{
|
|
1951
|
+
name: "metadata";
|
|
1952
|
+
tableName: "operating_layer_evidence";
|
|
1953
|
+
dataType: "json";
|
|
1954
|
+
columnType: "PgJsonb";
|
|
1955
|
+
data: Record<string, unknown>;
|
|
1956
|
+
driverParam: unknown;
|
|
1957
|
+
notNull: false;
|
|
1958
|
+
hasDefault: true;
|
|
1959
|
+
isPrimaryKey: false;
|
|
1960
|
+
isAutoincrement: false;
|
|
1961
|
+
hasRuntimeDefault: false;
|
|
1962
|
+
enumValues: undefined;
|
|
1963
|
+
baseColumn: never;
|
|
1964
|
+
identity: undefined;
|
|
1965
|
+
generated: undefined;
|
|
1966
|
+
}, {}, {
|
|
1967
|
+
$type: Record<string, unknown>;
|
|
1968
|
+
}>;
|
|
1969
|
+
recordedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1970
|
+
name: "recorded_at";
|
|
1971
|
+
tableName: "operating_layer_evidence";
|
|
1972
|
+
dataType: "date";
|
|
1973
|
+
columnType: "PgTimestamp";
|
|
1974
|
+
data: Date;
|
|
1975
|
+
driverParam: string;
|
|
1976
|
+
notNull: true;
|
|
1977
|
+
hasDefault: true;
|
|
1978
|
+
isPrimaryKey: false;
|
|
1979
|
+
isAutoincrement: false;
|
|
1980
|
+
hasRuntimeDefault: false;
|
|
1981
|
+
enumValues: undefined;
|
|
1982
|
+
baseColumn: never;
|
|
1983
|
+
identity: undefined;
|
|
1984
|
+
generated: undefined;
|
|
1985
|
+
}, {}, {}>;
|
|
1986
|
+
expiresAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1987
|
+
name: "expires_at";
|
|
1988
|
+
tableName: "operating_layer_evidence";
|
|
1989
|
+
dataType: "date";
|
|
1990
|
+
columnType: "PgTimestamp";
|
|
1991
|
+
data: Date;
|
|
1992
|
+
driverParam: string;
|
|
1993
|
+
notNull: false;
|
|
1994
|
+
hasDefault: false;
|
|
1995
|
+
isPrimaryKey: false;
|
|
1996
|
+
isAutoincrement: false;
|
|
1997
|
+
hasRuntimeDefault: false;
|
|
1998
|
+
enumValues: undefined;
|
|
1999
|
+
baseColumn: never;
|
|
2000
|
+
identity: undefined;
|
|
2001
|
+
generated: undefined;
|
|
2002
|
+
}, {}, {}>;
|
|
2003
|
+
};
|
|
2004
|
+
dialect: "pg";
|
|
2005
|
+
}>;
|
|
1743
2006
|
export declare const auditLogs: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
1744
2007
|
name: "audit_logs";
|
|
1745
2008
|
schema: undefined;
|