proofscan 0.10.22 → 0.10.23
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-shell.d.ts +7 -0
- package/dist/cli-shell.d.ts.map +1 -0
- package/dist/cli-shell.js +34 -0
- package/dist/cli-shell.js.map +1 -0
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +112 -57
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plans.d.ts +7 -0
- package/dist/commands/plans.d.ts.map +1 -0
- package/dist/commands/plans.js +486 -0
- package/dist/commands/plans.js.map +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +7 -2
- package/dist/commands/scan.js.map +1 -1
- package/dist/db/connection.d.ts +22 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +141 -8
- package/dist/db/connection.js.map +1 -1
- package/dist/db/schema.d.ts +10 -5
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +85 -6
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types.d.ts +1 -1
- package/dist/db/types.d.ts.map +1 -1
- package/dist/help/categories.d.ts.map +1 -1
- package/dist/help/categories.js +15 -0
- package/dist/help/categories.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +31 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +32 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +32 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/plans/artifacts.d.ts +53 -0
- package/dist/plans/artifacts.d.ts.map +1 -0
- package/dist/plans/artifacts.js +186 -0
- package/dist/plans/artifacts.js.map +1 -0
- package/dist/plans/builtin.d.ts +40 -0
- package/dist/plans/builtin.d.ts.map +1 -0
- package/dist/plans/builtin.js +75 -0
- package/dist/plans/builtin.js.map +1 -0
- package/dist/plans/digest.d.ts +24 -0
- package/dist/plans/digest.d.ts.map +1 -0
- package/dist/plans/digest.js +49 -0
- package/dist/plans/digest.js.map +1 -0
- package/dist/plans/index.d.ts +11 -0
- package/dist/plans/index.d.ts.map +1 -0
- package/dist/plans/index.js +11 -0
- package/dist/plans/index.js.map +1 -0
- package/dist/plans/runner.d.ts +47 -0
- package/dist/plans/runner.d.ts.map +1 -0
- package/dist/plans/runner.js +360 -0
- package/dist/plans/runner.js.map +1 -0
- package/dist/plans/schema.d.ts +192 -0
- package/dist/plans/schema.d.ts.map +1 -0
- package/dist/plans/schema.js +81 -0
- package/dist/plans/schema.js.map +1 -0
- package/dist/plans/store.d.ts +111 -0
- package/dist/plans/store.d.ts.map +1 -0
- package/dist/plans/store.js +350 -0
- package/dist/plans/store.js.map +1 -0
- package/dist/popl/index.d.ts +1 -1
- package/dist/popl/index.d.ts.map +1 -1
- package/dist/popl/index.js +1 -1
- package/dist/popl/index.js.map +1 -1
- package/dist/popl/service.d.ts +12 -0
- package/dist/popl/service.d.ts.map +1 -1
- package/dist/popl/service.js +213 -0
- package/dist/popl/service.js.map +1 -1
- package/dist/popl/types.d.ts +5 -1
- package/dist/popl/types.d.ts.map +1 -1
- package/dist/shell/context-applicator.d.ts.map +1 -1
- package/dist/shell/context-applicator.js +7 -0
- package/dist/shell/context-applicator.js.map +1 -1
- package/dist/shell/ref-resolver.d.ts +34 -3
- package/dist/shell/ref-resolver.d.ts.map +1 -1
- package/dist/shell/ref-resolver.js +128 -1
- package/dist/shell/ref-resolver.js.map +1 -1
- package/dist/shell/router-commands.d.ts.map +1 -1
- package/dist/shell/router-commands.js +108 -25
- package/dist/shell/router-commands.js.map +1 -1
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +12 -0
- package/dist/shell/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plans store - manages plans and runs in proofs.db
|
|
3
|
+
* Phase 5.2: CRUD operations for validation plans
|
|
4
|
+
*/
|
|
5
|
+
import type { Plan, Run, RunStatus, PlanDefinition } from './schema.js';
|
|
6
|
+
export declare class PlansStore {
|
|
7
|
+
private configDir?;
|
|
8
|
+
private builtinInitialized;
|
|
9
|
+
constructor(configDir?: string);
|
|
10
|
+
private get db();
|
|
11
|
+
/**
|
|
12
|
+
* Ensure built-in plans are installed
|
|
13
|
+
* Called lazily on first access
|
|
14
|
+
*/
|
|
15
|
+
private ensureBuiltinPlans;
|
|
16
|
+
/**
|
|
17
|
+
* List all plans
|
|
18
|
+
*/
|
|
19
|
+
listPlans(): Plan[];
|
|
20
|
+
/**
|
|
21
|
+
* Get plan by name
|
|
22
|
+
*/
|
|
23
|
+
getPlan(name: string): Plan | null;
|
|
24
|
+
/**
|
|
25
|
+
* Check if plan exists
|
|
26
|
+
*/
|
|
27
|
+
planExists(name: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Add a new plan from YAML content
|
|
30
|
+
*/
|
|
31
|
+
addPlan(name: string, yamlContent: string, source?: 'manual' | 'import' | 'builtin'): {
|
|
32
|
+
success: boolean;
|
|
33
|
+
plan?: Plan;
|
|
34
|
+
error?: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Update an existing plan
|
|
38
|
+
*/
|
|
39
|
+
updatePlan(name: string, yamlContent: string): {
|
|
40
|
+
success: boolean;
|
|
41
|
+
plan?: Plan;
|
|
42
|
+
error?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Delete a plan
|
|
46
|
+
* @param force If true, also delete associated runs
|
|
47
|
+
* Note: Built-in plans cannot be deleted
|
|
48
|
+
*/
|
|
49
|
+
deletePlan(name: string, force?: boolean): {
|
|
50
|
+
success: boolean;
|
|
51
|
+
error?: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Get plan definition (parsed YAML)
|
|
55
|
+
*/
|
|
56
|
+
getPlanDefinition(name: string): PlanDefinition | null;
|
|
57
|
+
/**
|
|
58
|
+
* Export plan as YAML
|
|
59
|
+
*/
|
|
60
|
+
exportPlanYaml(name: string): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Import multiple plans from multi-document YAML
|
|
63
|
+
*/
|
|
64
|
+
importPlans(yamlContent: string, source?: 'import' | 'builtin'): {
|
|
65
|
+
imported: string[];
|
|
66
|
+
errors: Array<{
|
|
67
|
+
name?: string;
|
|
68
|
+
error: string;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Create a new run record (status = 'running')
|
|
73
|
+
*/
|
|
74
|
+
createRun(params: {
|
|
75
|
+
runId: string;
|
|
76
|
+
planName: string;
|
|
77
|
+
planDigest: string;
|
|
78
|
+
connectorId: string;
|
|
79
|
+
artifactPath: string;
|
|
80
|
+
}): Run;
|
|
81
|
+
/**
|
|
82
|
+
* Update run status and end time
|
|
83
|
+
*/
|
|
84
|
+
completeRun(runId: string, status: RunStatus): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get run by ID
|
|
87
|
+
*/
|
|
88
|
+
getRun(runId: string): Run | null;
|
|
89
|
+
/**
|
|
90
|
+
* Get latest run
|
|
91
|
+
*/
|
|
92
|
+
getLatestRun(): Run | null;
|
|
93
|
+
/**
|
|
94
|
+
* List runs, optionally filtered by plan
|
|
95
|
+
*/
|
|
96
|
+
listRuns(planName?: string, limit?: number): Run[];
|
|
97
|
+
/**
|
|
98
|
+
* Delete a run
|
|
99
|
+
*/
|
|
100
|
+
deleteRun(runId: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Recover crashed runs (status = 'running' at startup)
|
|
103
|
+
* Marks them as 'crashed'
|
|
104
|
+
*/
|
|
105
|
+
recoverCrashedRuns(): number;
|
|
106
|
+
/**
|
|
107
|
+
* Count runs by status
|
|
108
|
+
*/
|
|
109
|
+
countRunsByStatus(): Record<RunStatus, number>;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/plans/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIxE,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,KAAK,EAAE,GAEb;IAED;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,SAAS,IAAI,IAAI,EAAE;IAQnB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAOlC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC;;OAEG;IACH,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,QAAQ,GAAG,QAAQ,GAAG,SAAoB,GACjD;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAsEpD;;OAEG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAsDpD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA0B7E;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAWtD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM3C;;OAEG;IACH,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,QAAQ,GAAG,SAAoB,GACtC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;IAmC1E;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,GAAG;IAqCP;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAOnD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAMjC;;OAEG;IACH,YAAY,IAAI,GAAG,GAAG,IAAI;IAQ1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,GAAG,EAAE;IAc9C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAMjC;;;OAGG;IACH,kBAAkB,IAAI,MAAM;IAQ5B;;OAEG;IACH,iBAAiB,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;CAoB/C"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plans store - manages plans and runs in proofs.db
|
|
3
|
+
* Phase 5.2: CRUD operations for validation plans
|
|
4
|
+
*/
|
|
5
|
+
import { parse as parseYaml } from 'yaml';
|
|
6
|
+
import { getProofsDb } from '../db/connection.js';
|
|
7
|
+
import { calculatePlanDigest, normalizePlanForDigest } from './digest.js';
|
|
8
|
+
import { validatePlanDefinition, isValidPlanName } from './schema.js';
|
|
9
|
+
import { BUILTIN_PLANS, isBuiltinPlan } from './builtin.js';
|
|
10
|
+
export class PlansStore {
|
|
11
|
+
configDir;
|
|
12
|
+
builtinInitialized = false;
|
|
13
|
+
constructor(configDir) {
|
|
14
|
+
this.configDir = configDir;
|
|
15
|
+
}
|
|
16
|
+
get db() {
|
|
17
|
+
return getProofsDb(this.configDir);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Ensure built-in plans are installed
|
|
21
|
+
* Called lazily on first access
|
|
22
|
+
*/
|
|
23
|
+
ensureBuiltinPlans() {
|
|
24
|
+
if (this.builtinInitialized)
|
|
25
|
+
return;
|
|
26
|
+
this.builtinInitialized = true;
|
|
27
|
+
for (const builtin of BUILTIN_PLANS) {
|
|
28
|
+
if (!this.planExists(builtin.name)) {
|
|
29
|
+
this.addPlan(builtin.name, builtin.yaml, 'builtin');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ============================================================
|
|
34
|
+
// Plans CRUD
|
|
35
|
+
// ============================================================
|
|
36
|
+
/**
|
|
37
|
+
* List all plans
|
|
38
|
+
*/
|
|
39
|
+
listPlans() {
|
|
40
|
+
this.ensureBuiltinPlans();
|
|
41
|
+
const stmt = this.db.prepare(`
|
|
42
|
+
SELECT * FROM plans ORDER BY created_at DESC
|
|
43
|
+
`);
|
|
44
|
+
return stmt.all();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get plan by name
|
|
48
|
+
*/
|
|
49
|
+
getPlan(name) {
|
|
50
|
+
this.ensureBuiltinPlans();
|
|
51
|
+
const stmt = this.db.prepare(`SELECT * FROM plans WHERE name = ?`);
|
|
52
|
+
const result = stmt.get(name);
|
|
53
|
+
return result ?? null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if plan exists
|
|
57
|
+
*/
|
|
58
|
+
planExists(name) {
|
|
59
|
+
const stmt = this.db.prepare(`SELECT 1 FROM plans WHERE name = ?`);
|
|
60
|
+
return stmt.get(name) !== undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Add a new plan from YAML content
|
|
64
|
+
*/
|
|
65
|
+
addPlan(name, yamlContent, source = 'manual') {
|
|
66
|
+
// Validate name
|
|
67
|
+
if (!isValidPlanName(name)) {
|
|
68
|
+
return { success: false, error: `Invalid plan name: must match [a-z0-9_-]+` };
|
|
69
|
+
}
|
|
70
|
+
// Check if exists
|
|
71
|
+
if (this.planExists(name)) {
|
|
72
|
+
return { success: false, error: `Plan '${name}' already exists` };
|
|
73
|
+
}
|
|
74
|
+
// Parse YAML
|
|
75
|
+
let def;
|
|
76
|
+
try {
|
|
77
|
+
def = parseYaml(yamlContent);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return { success: false, error: `Invalid YAML: ${err instanceof Error ? err.message : String(err)}` };
|
|
81
|
+
}
|
|
82
|
+
// Validate definition
|
|
83
|
+
const validation = validatePlanDefinition(def);
|
|
84
|
+
if (!validation.valid) {
|
|
85
|
+
return { success: false, error: `Invalid plan: ${validation.errors.join('; ')}` };
|
|
86
|
+
}
|
|
87
|
+
// Calculate normalized content and digest
|
|
88
|
+
const contentNormalized = normalizePlanForDigest(def);
|
|
89
|
+
const digestSha256 = calculatePlanDigest(def);
|
|
90
|
+
const now = new Date().toISOString();
|
|
91
|
+
const plan = {
|
|
92
|
+
name,
|
|
93
|
+
schema_version: def.version,
|
|
94
|
+
content_yaml: yamlContent,
|
|
95
|
+
content_normalized: contentNormalized,
|
|
96
|
+
digest_sha256: digestSha256,
|
|
97
|
+
description: def.description || null,
|
|
98
|
+
default_connector: null,
|
|
99
|
+
source,
|
|
100
|
+
created_at: now,
|
|
101
|
+
updated_at: now,
|
|
102
|
+
};
|
|
103
|
+
try {
|
|
104
|
+
const stmt = this.db.prepare(`
|
|
105
|
+
INSERT INTO plans (
|
|
106
|
+
name, schema_version, content_yaml, content_normalized, digest_sha256,
|
|
107
|
+
description, default_connector, source, created_at, updated_at
|
|
108
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
109
|
+
`);
|
|
110
|
+
stmt.run(plan.name, plan.schema_version, plan.content_yaml, plan.content_normalized, plan.digest_sha256, plan.description, plan.default_connector, plan.source, plan.created_at, plan.updated_at);
|
|
111
|
+
return { success: true, plan };
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Update an existing plan
|
|
119
|
+
*/
|
|
120
|
+
updatePlan(name, yamlContent) {
|
|
121
|
+
// Check if exists
|
|
122
|
+
if (!this.planExists(name)) {
|
|
123
|
+
return { success: false, error: `Plan '${name}' not found` };
|
|
124
|
+
}
|
|
125
|
+
// Parse YAML
|
|
126
|
+
let def;
|
|
127
|
+
try {
|
|
128
|
+
def = parseYaml(yamlContent);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return { success: false, error: `Invalid YAML: ${err instanceof Error ? err.message : String(err)}` };
|
|
132
|
+
}
|
|
133
|
+
// Validate definition
|
|
134
|
+
const validation = validatePlanDefinition(def);
|
|
135
|
+
if (!validation.valid) {
|
|
136
|
+
return { success: false, error: `Invalid plan: ${validation.errors.join('; ')}` };
|
|
137
|
+
}
|
|
138
|
+
// Calculate normalized content and digest
|
|
139
|
+
const contentNormalized = normalizePlanForDigest(def);
|
|
140
|
+
const digestSha256 = calculatePlanDigest(def);
|
|
141
|
+
const now = new Date().toISOString();
|
|
142
|
+
try {
|
|
143
|
+
const stmt = this.db.prepare(`
|
|
144
|
+
UPDATE plans SET
|
|
145
|
+
schema_version = ?,
|
|
146
|
+
content_yaml = ?,
|
|
147
|
+
content_normalized = ?,
|
|
148
|
+
digest_sha256 = ?,
|
|
149
|
+
description = ?,
|
|
150
|
+
updated_at = ?
|
|
151
|
+
WHERE name = ?
|
|
152
|
+
`);
|
|
153
|
+
stmt.run(def.version, yamlContent, contentNormalized, digestSha256, def.description || null, now, name);
|
|
154
|
+
return { success: true, plan: this.getPlan(name) };
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Delete a plan
|
|
162
|
+
* @param force If true, also delete associated runs
|
|
163
|
+
* Note: Built-in plans cannot be deleted
|
|
164
|
+
*/
|
|
165
|
+
deletePlan(name, force = false) {
|
|
166
|
+
if (!this.planExists(name)) {
|
|
167
|
+
return { success: false, error: `Plan '${name}' not found` };
|
|
168
|
+
}
|
|
169
|
+
// Prevent deletion of built-in plans
|
|
170
|
+
if (isBuiltinPlan(name)) {
|
|
171
|
+
return { success: false, error: `Cannot delete built-in plan '${name}'` };
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
if (force) {
|
|
175
|
+
// Delete associated runs first
|
|
176
|
+
const deleteRuns = this.db.prepare(`DELETE FROM runs WHERE plan_name = ?`);
|
|
177
|
+
deleteRuns.run(name);
|
|
178
|
+
}
|
|
179
|
+
const stmt = this.db.prepare(`DELETE FROM plans WHERE name = ?`);
|
|
180
|
+
stmt.run(name);
|
|
181
|
+
return { success: true };
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get plan definition (parsed YAML)
|
|
189
|
+
*/
|
|
190
|
+
getPlanDefinition(name) {
|
|
191
|
+
const plan = this.getPlan(name);
|
|
192
|
+
if (!plan)
|
|
193
|
+
return null;
|
|
194
|
+
try {
|
|
195
|
+
return parseYaml(plan.content_yaml);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Export plan as YAML
|
|
203
|
+
*/
|
|
204
|
+
exportPlanYaml(name) {
|
|
205
|
+
const plan = this.getPlan(name);
|
|
206
|
+
if (!plan)
|
|
207
|
+
return null;
|
|
208
|
+
return plan.content_yaml;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Import multiple plans from multi-document YAML
|
|
212
|
+
*/
|
|
213
|
+
importPlans(yamlContent, source = 'import') {
|
|
214
|
+
const imported = [];
|
|
215
|
+
const errors = [];
|
|
216
|
+
// Split multi-document YAML
|
|
217
|
+
const docs = yamlContent.split(/^---$/m).filter(s => s.trim());
|
|
218
|
+
for (const doc of docs) {
|
|
219
|
+
try {
|
|
220
|
+
const def = parseYaml(doc);
|
|
221
|
+
const name = def.name;
|
|
222
|
+
if (!name) {
|
|
223
|
+
errors.push({ error: 'Plan missing name field' });
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const result = this.addPlan(name, doc.trim(), source);
|
|
227
|
+
if (result.success) {
|
|
228
|
+
imported.push(name);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
errors.push({ name, error: result.error });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
errors.push({ error: `YAML parse error: ${err instanceof Error ? err.message : String(err)}` });
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return { imported, errors };
|
|
239
|
+
}
|
|
240
|
+
// ============================================================
|
|
241
|
+
// Runs CRUD
|
|
242
|
+
// ============================================================
|
|
243
|
+
/**
|
|
244
|
+
* Create a new run record (status = 'running')
|
|
245
|
+
*/
|
|
246
|
+
createRun(params) {
|
|
247
|
+
const now = new Date().toISOString();
|
|
248
|
+
const run = {
|
|
249
|
+
run_id: params.runId,
|
|
250
|
+
plan_name: params.planName,
|
|
251
|
+
plan_digest: params.planDigest,
|
|
252
|
+
connector_id: params.connectorId,
|
|
253
|
+
status: 'running',
|
|
254
|
+
artifact_path: params.artifactPath,
|
|
255
|
+
started_at: now,
|
|
256
|
+
ended_at: null,
|
|
257
|
+
created_at: now,
|
|
258
|
+
};
|
|
259
|
+
const stmt = this.db.prepare(`
|
|
260
|
+
INSERT INTO runs (
|
|
261
|
+
run_id, plan_name, plan_digest, connector_id, status,
|
|
262
|
+
artifact_path, started_at, ended_at, created_at
|
|
263
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
264
|
+
`);
|
|
265
|
+
stmt.run(run.run_id, run.plan_name, run.plan_digest, run.connector_id, run.status, run.artifact_path, run.started_at, run.ended_at, run.created_at);
|
|
266
|
+
return run;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Update run status and end time
|
|
270
|
+
*/
|
|
271
|
+
completeRun(runId, status) {
|
|
272
|
+
const stmt = this.db.prepare(`
|
|
273
|
+
UPDATE runs SET status = ?, ended_at = ? WHERE run_id = ?
|
|
274
|
+
`);
|
|
275
|
+
stmt.run(status, new Date().toISOString(), runId);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get run by ID
|
|
279
|
+
*/
|
|
280
|
+
getRun(runId) {
|
|
281
|
+
const stmt = this.db.prepare(`SELECT * FROM runs WHERE run_id = ?`);
|
|
282
|
+
const result = stmt.get(runId);
|
|
283
|
+
return result ?? null;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get latest run
|
|
287
|
+
*/
|
|
288
|
+
getLatestRun() {
|
|
289
|
+
const stmt = this.db.prepare(`
|
|
290
|
+
SELECT * FROM runs ORDER BY started_at DESC LIMIT 1
|
|
291
|
+
`);
|
|
292
|
+
const result = stmt.get();
|
|
293
|
+
return result ?? null;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* List runs, optionally filtered by plan
|
|
297
|
+
*/
|
|
298
|
+
listRuns(planName, limit = 50) {
|
|
299
|
+
if (planName) {
|
|
300
|
+
const stmt = this.db.prepare(`
|
|
301
|
+
SELECT * FROM runs WHERE plan_name = ? ORDER BY started_at DESC LIMIT ?
|
|
302
|
+
`);
|
|
303
|
+
return stmt.all(planName, limit);
|
|
304
|
+
}
|
|
305
|
+
const stmt = this.db.prepare(`
|
|
306
|
+
SELECT * FROM runs ORDER BY started_at DESC LIMIT ?
|
|
307
|
+
`);
|
|
308
|
+
return stmt.all(limit);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Delete a run
|
|
312
|
+
*/
|
|
313
|
+
deleteRun(runId) {
|
|
314
|
+
const stmt = this.db.prepare(`DELETE FROM runs WHERE run_id = ?`);
|
|
315
|
+
const result = stmt.run(runId);
|
|
316
|
+
return result.changes > 0;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Recover crashed runs (status = 'running' at startup)
|
|
320
|
+
* Marks them as 'crashed'
|
|
321
|
+
*/
|
|
322
|
+
recoverCrashedRuns() {
|
|
323
|
+
const stmt = this.db.prepare(`
|
|
324
|
+
UPDATE runs SET status = 'crashed', ended_at = ? WHERE status = 'running'
|
|
325
|
+
`);
|
|
326
|
+
const result = stmt.run(new Date().toISOString());
|
|
327
|
+
return result.changes;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Count runs by status
|
|
331
|
+
*/
|
|
332
|
+
countRunsByStatus() {
|
|
333
|
+
const stmt = this.db.prepare(`
|
|
334
|
+
SELECT status, COUNT(*) as count FROM runs GROUP BY status
|
|
335
|
+
`);
|
|
336
|
+
const rows = stmt.all();
|
|
337
|
+
const result = {
|
|
338
|
+
running: 0,
|
|
339
|
+
completed: 0,
|
|
340
|
+
failed: 0,
|
|
341
|
+
partial: 0,
|
|
342
|
+
crashed: 0,
|
|
343
|
+
};
|
|
344
|
+
for (const row of rows) {
|
|
345
|
+
result[row.status] = row.count;
|
|
346
|
+
}
|
|
347
|
+
return result;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/plans/store.ts"],"names":[],"mappings":"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"}
|
package/dist/popl/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
export { POPL_VERSION, TRUST_LABELS, type TrustLevel, type TargetKind, type RedactionPolicy, type PoplAuthor, type PoplTrust, type PoplTargetIds, type PoplTarget, type PoplCaptureSummary, type PoplMcpClient, type PoplMcpServer, type PoplMcp, type PoplCaptureWindow, type PoplCapture, type PoplArtifact, type PoplEvidencePolicy, type PoplEvidence, type PoplEntry, type PoplDocument, type CreatePoplOptions, type CreatePoplResult, type PoplConfig, } from './types.js';
|
|
7
7
|
export { SANITIZER_RULESET_VERSION, sanitize, sanitizeRpcPayload, sanitizeLogLine, sanitizeRpcEvent, hashValue, hashFileContent, type SanitizeResult, } from './sanitizer.js';
|
|
8
8
|
export { generateStatusArtifact, generateRpcArtifact, generateLogsArtifact, generateValidationArtifact, generateSessionArtifacts, type SessionStatus, type StatusJson, type ArtifactResult, type GeneratedArtifacts, } from './artifacts.js';
|
|
9
|
-
export { hasPoplDir, getPoplDir, getPoplEntriesDir, initPoplDir, loadPoplConfig, createSessionPoplEntry, listPoplEntries, readPoplEntry, } from './service.js';
|
|
9
|
+
export { hasPoplDir, getPoplDir, getPoplEntriesDir, initPoplDir, loadPoplConfig, createSessionPoplEntry, createPlanPoplEntry, createRunPoplEntry, listPoplEntries, readPoplEntry, } from './service.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/popl/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/popl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/popl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
|
package/dist/popl/index.js
CHANGED
|
@@ -10,5 +10,5 @@ export { SANITIZER_RULESET_VERSION, sanitize, sanitizeRpcPayload, sanitizeLogLin
|
|
|
10
10
|
// Artifacts
|
|
11
11
|
export { generateStatusArtifact, generateRpcArtifact, generateLogsArtifact, generateValidationArtifact, generateSessionArtifacts, } from './artifacts.js';
|
|
12
12
|
// Service
|
|
13
|
-
export { hasPoplDir, getPoplDir, getPoplEntriesDir, initPoplDir, loadPoplConfig, createSessionPoplEntry, listPoplEntries, readPoplEntry, } from './service.js';
|
|
13
|
+
export { hasPoplDir, getPoplDir, getPoplEntriesDir, initPoplDir, loadPoplConfig, createSessionPoplEntry, createPlanPoplEntry, createRunPoplEntry, listPoplEntries, readPoplEntry, } from './service.js';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/popl/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/popl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,OAAO,EACL,YAAY,EACZ,YAAY,GAsBb,MAAM,YAAY,CAAC;AAEpB,YAAY;AACZ,OAAO,EACL,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,GAKzB,MAAM,gBAAgB,CAAC;AAExB,UAAU;AACV,OAAO,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/popl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,OAAO,EACL,YAAY,EACZ,YAAY,GAsBb,MAAM,YAAY,CAAC;AAEpB,YAAY;AACZ,OAAO,EACL,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,GAKzB,MAAM,gBAAgB,CAAC;AAExB,UAAU;AACV,OAAO,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
|
package/dist/popl/service.d.ts
CHANGED
|
@@ -32,6 +32,18 @@ export declare function loadPoplConfig(root: string): Promise<PoplConfig>;
|
|
|
32
32
|
* This is the core service function called by both CLI and shell.
|
|
33
33
|
*/
|
|
34
34
|
export declare function createSessionPoplEntry(sessionId: string, configDir: string, options: Omit<CreatePoplOptions, 'kind' | 'ids'>): Promise<CreatePoplResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a POPL entry for a validation plan
|
|
37
|
+
*
|
|
38
|
+
* Plans are static definitions, so POPL entries contain the plan YAML and metadata.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createPlanPoplEntry(planName: string, planDigest: string, planYaml: string, planDescription: string | undefined, options: Omit<CreatePoplOptions, 'kind' | 'ids'>): Promise<CreatePoplResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a POPL entry for a plan run
|
|
43
|
+
*
|
|
44
|
+
* Run entries contain the execution results, inventory, and plan used.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createRunPoplEntry(runId: string, planName: string | null, planDigest: string, connectorId: string, status: string, resultsJson: string, inventoryJson: string, planYaml: string, startedAt: string, endedAt: string, options: Omit<CreatePoplOptions, 'kind' | 'ids'>): Promise<CreatePoplResult>;
|
|
35
47
|
/**
|
|
36
48
|
* List existing POPL entries
|
|
37
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/popl/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7D;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBtE;AA8BD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CA2G3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAgBzC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAanF"}
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/popl/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7D;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBtE;AA8BD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CA2G3B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CAiG3B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CA2H3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAgBzC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAanF"}
|