@ngocsangairvds/vsaf 5.1.1 → 5.1.3
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/package.json +6 -4
- package/packages/cli/dist/commands/run.d.ts.map +1 -1
- package/packages/cli/dist/commands/run.js +93 -10
- package/packages/cli/dist/commands/run.js.map +1 -1
- package/packages/cli/dist/index.d.ts +1 -1
- package/packages/cli/dist/index.js +1 -1
- package/packages/core/dist/engine/dag-executor.d.ts +6 -1
- package/packages/core/dist/engine/dag-executor.d.ts.map +1 -1
- package/packages/core/dist/engine/dag-executor.js +152 -28
- package/packages/core/dist/engine/dag-executor.js.map +1 -1
- package/packages/core/dist/engine/dag-parser.d.ts.map +1 -1
- package/packages/core/dist/engine/dag-parser.js +12 -2
- package/packages/core/dist/engine/dag-parser.js.map +1 -1
- package/packages/core/dist/engine/node-runner.d.ts +1 -0
- package/packages/core/dist/engine/node-runner.d.ts.map +1 -1
- package/packages/core/dist/engine/node-runner.js +110 -0
- package/packages/core/dist/engine/node-runner.js.map +1 -1
- package/packages/core/dist/index.d.ts +6 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +21 -1
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/isolation/isolation-policy.d.ts +19 -0
- package/packages/core/dist/isolation/isolation-policy.d.ts.map +1 -0
- package/packages/core/dist/isolation/isolation-policy.js +52 -0
- package/packages/core/dist/isolation/isolation-policy.js.map +1 -0
- package/packages/core/dist/providers/command-provider.d.ts +32 -0
- package/packages/core/dist/providers/command-provider.d.ts.map +1 -0
- package/packages/core/dist/providers/command-provider.js +148 -0
- package/packages/core/dist/providers/command-provider.js.map +1 -0
- package/packages/core/dist/providers/default-adapters.d.ts +39 -0
- package/packages/core/dist/providers/default-adapters.d.ts.map +1 -0
- package/packages/core/dist/providers/default-adapters.js +354 -0
- package/packages/core/dist/providers/default-adapters.js.map +1 -0
- package/packages/core/dist/runtime/executor.d.ts +44 -0
- package/packages/core/dist/runtime/executor.d.ts.map +1 -0
- package/packages/core/dist/runtime/executor.js +123 -0
- package/packages/core/dist/runtime/executor.js.map +1 -0
- package/packages/core/dist/runtime/index.d.ts +5 -0
- package/packages/core/dist/runtime/index.d.ts.map +1 -0
- package/packages/core/dist/runtime/index.js +30 -0
- package/packages/core/dist/runtime/index.js.map +1 -0
- package/packages/core/dist/runtime/legacy-loader.d.ts +10 -0
- package/packages/core/dist/runtime/legacy-loader.d.ts.map +1 -0
- package/packages/core/dist/runtime/legacy-loader.js +110 -0
- package/packages/core/dist/runtime/legacy-loader.js.map +1 -0
- package/packages/core/dist/runtime/load-workflow.d.ts +10 -0
- package/packages/core/dist/runtime/load-workflow.d.ts.map +1 -0
- package/packages/core/dist/runtime/load-workflow.js +208 -0
- package/packages/core/dist/runtime/load-workflow.js.map +1 -0
- package/packages/core/dist/runtime/types.d.ts +28 -0
- package/packages/core/dist/runtime/types.d.ts.map +1 -0
- package/packages/core/dist/runtime/types.js +3 -0
- package/packages/core/dist/runtime/types.js.map +1 -0
- package/packages/core/dist/schema/workflow-schema.d.ts +48 -0
- package/packages/core/dist/schema/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/schema/workflow-schema.js +28 -3
- package/packages/core/dist/schema/workflow-schema.js.map +1 -1
- package/packages/core/dist/store/sqlite-schema.d.ts +2 -0
- package/packages/core/dist/store/sqlite-schema.d.ts.map +1 -0
- package/packages/core/dist/store/sqlite-schema.js +64 -0
- package/packages/core/dist/store/sqlite-schema.js.map +1 -0
- package/packages/core/dist/store/sqlite-workflow-store.d.ts +85 -0
- package/packages/core/dist/store/sqlite-workflow-store.d.ts.map +1 -0
- package/packages/core/dist/store/sqlite-workflow-store.js +208 -0
- package/packages/core/dist/store/sqlite-workflow-store.js.map +1 -0
- package/packages/core/dist/types/dag.d.ts +12 -1
- package/packages/core/dist/types/dag.d.ts.map +1 -1
- package/packages/core/dist/types/workflow.d.ts +12 -0
- package/packages/core/dist/types/workflow.d.ts.map +1 -1
- package/packages/web/dist/web/3rdpartylicenses.txt +5 -212
- package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +1 -0
- package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +1 -0
- package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +1 -0
- package/packages/web/dist/web/browser/{chunk-7PK6Q4UU.js → chunk-RGFLNLPM.js} +1 -1
- package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +5 -0
- package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +1 -0
- package/packages/web/dist/web/browser/index.html +1 -1
- package/packages/web/dist/web/browser/main-IIUZVPMI.js +1 -0
- package/packages/web/dist/web/browser/chunk-2QJBTGYU.js +0 -3
- package/packages/web/dist/web/browser/chunk-3VYLP4FZ.js +0 -1
- package/packages/web/dist/web/browser/chunk-6HRQZQXD.js +0 -1
- package/packages/web/dist/web/browser/chunk-O7TQGEFF.js +0 -8
- package/packages/web/dist/web/browser/chunk-PWF76NCM.js +0 -1
- package/packages/web/dist/web/browser/main-AZU5W3KI.js +0 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LegacyWorkflowError = exports.LEGACY_WORKFLOW_ERROR = void 0;
|
|
7
|
+
exports.loadLegacyWorkflowFromContent = loadLegacyWorkflowFromContent;
|
|
8
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
+
const load_workflow_js_1 = require("./load-workflow.js");
|
|
10
|
+
exports.LEGACY_WORKFLOW_ERROR = 'ERR-VSAF-010';
|
|
11
|
+
const WORKFLOW_FIELDS = new Set([
|
|
12
|
+
'name',
|
|
13
|
+
'description',
|
|
14
|
+
'provider',
|
|
15
|
+
'model',
|
|
16
|
+
'inputs',
|
|
17
|
+
'nodes',
|
|
18
|
+
]);
|
|
19
|
+
const NODE_FIELDS = new Set([
|
|
20
|
+
'id',
|
|
21
|
+
'description',
|
|
22
|
+
'prompt',
|
|
23
|
+
'bash',
|
|
24
|
+
'command',
|
|
25
|
+
'script',
|
|
26
|
+
'cancel',
|
|
27
|
+
'approval',
|
|
28
|
+
'depends_on',
|
|
29
|
+
'when',
|
|
30
|
+
'trigger_rule',
|
|
31
|
+
'context',
|
|
32
|
+
'model',
|
|
33
|
+
'allowed_tools',
|
|
34
|
+
'output_format',
|
|
35
|
+
'workspace',
|
|
36
|
+
'loop',
|
|
37
|
+
'on_error',
|
|
38
|
+
'idempotent',
|
|
39
|
+
'timeout',
|
|
40
|
+
'runtime',
|
|
41
|
+
'deps',
|
|
42
|
+
]);
|
|
43
|
+
class LegacyWorkflowError extends Error {
|
|
44
|
+
code;
|
|
45
|
+
constructor(message) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.name = 'LegacyWorkflowError';
|
|
48
|
+
this.code = exports.LEGACY_WORKFLOW_ERROR;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.LegacyWorkflowError = LegacyWorkflowError;
|
|
52
|
+
function loadLegacyWorkflowFromContent(content, filename = 'legacy-workflow.yaml') {
|
|
53
|
+
const parsed = parseLegacyYaml(content, filename);
|
|
54
|
+
assertSupportedLegacyFields(parsed, filename);
|
|
55
|
+
try {
|
|
56
|
+
return (0, load_workflow_js_1.loadWorkflowFromContent)(content, filename);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof load_workflow_js_1.VSAFWorkflowError) {
|
|
60
|
+
throw new LegacyWorkflowError(`${filename}: Legacy workflow cannot be translated. ${error.message}. See migration guidance for Archon-style VSAF workflows.`);
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function parseLegacyYaml(content, filename) {
|
|
66
|
+
try {
|
|
67
|
+
const parsed = js_yaml_1.default.load(content);
|
|
68
|
+
if (!isRecord(parsed)) {
|
|
69
|
+
throwLegacy(filename, 'root', 'Workflow YAML must be an object');
|
|
70
|
+
}
|
|
71
|
+
return parsed;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error instanceof LegacyWorkflowError) {
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
78
|
+
throwLegacy(filename, 'YAML', `Workflow YAML could not be parsed: ${detail}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function assertSupportedLegacyFields(workflow, filename) {
|
|
82
|
+
for (const field of Object.keys(workflow)) {
|
|
83
|
+
if (!WORKFLOW_FIELDS.has(field)) {
|
|
84
|
+
throwUnsupportedField(filename, field);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!Array.isArray(workflow.nodes)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
for (const node of workflow.nodes) {
|
|
91
|
+
if (!isRecord(node)) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
for (const field of Object.keys(node)) {
|
|
95
|
+
if (!NODE_FIELDS.has(field)) {
|
|
96
|
+
throwUnsupportedField(filename, field);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function throwUnsupportedField(filename, field) {
|
|
102
|
+
throwLegacy(filename, field, `Legacy workflow cannot be translated: ${field}. See migration guidance for Archon-style VSAF workflows.`);
|
|
103
|
+
}
|
|
104
|
+
function throwLegacy(filename, field, message) {
|
|
105
|
+
throw new LegacyWorkflowError(`${filename}: Legacy workflow field is unsupported: ${field}. ${message}`);
|
|
106
|
+
}
|
|
107
|
+
function isRecord(value) {
|
|
108
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=legacy-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-loader.js","sourceRoot":"","sources":["../../src/runtime/legacy-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RuntimeWorkflow } from './types.js';
|
|
2
|
+
export declare const WORKFLOW_VALIDATION_ERROR = "ERR-VSAF-002";
|
|
3
|
+
type WorkflowValidationCode = typeof WORKFLOW_VALIDATION_ERROR;
|
|
4
|
+
export declare class VSAFWorkflowError extends Error {
|
|
5
|
+
readonly code: WorkflowValidationCode;
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare function loadWorkflowFromContent(content: string, filename?: string): RuntimeWorkflow;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=load-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-workflow.d.ts","sourceRoot":"","sources":["../../src/runtime/load-workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,KAAK,sBAAsB,GAAG,OAAO,yBAAyB,CAAC;AAI/D,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;gBAE1B,OAAO,EAAE,MAAM;CAK5B;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAkB,GAAG,eAAe,CAsBpG"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VSAFWorkflowError = exports.WORKFLOW_VALIDATION_ERROR = void 0;
|
|
7
|
+
exports.loadWorkflowFromContent = loadWorkflowFromContent;
|
|
8
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
+
exports.WORKFLOW_VALIDATION_ERROR = 'ERR-VSAF-002';
|
|
10
|
+
class VSAFWorkflowError extends Error {
|
|
11
|
+
code;
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'VSAFWorkflowError';
|
|
15
|
+
this.code = exports.WORKFLOW_VALIDATION_ERROR;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.VSAFWorkflowError = VSAFWorkflowError;
|
|
19
|
+
function loadWorkflowFromContent(content, filename = 'workflow.yaml') {
|
|
20
|
+
const raw = parseYaml(content, filename);
|
|
21
|
+
const nodesValue = raw.nodes;
|
|
22
|
+
if (!Array.isArray(nodesValue) || nodesValue.length === 0) {
|
|
23
|
+
throwValidation(filename, 'Workflow must define a non-empty nodes array');
|
|
24
|
+
}
|
|
25
|
+
const worktree = readWorktree(raw.worktree, filename);
|
|
26
|
+
validateVsafPublicPaths(worktree, filename);
|
|
27
|
+
const nodes = nodesValue.map((node, index) => readNode(node, index, filename));
|
|
28
|
+
validateGraph(nodes, filename);
|
|
29
|
+
return {
|
|
30
|
+
name: readOptionalString(raw.name) ?? filename.replace(/\.(ya?ml)$/i, ''),
|
|
31
|
+
description: readOptionalString(raw.description) ?? '',
|
|
32
|
+
defaultProvider: readOptionalString(raw.provider) ?? 'claude',
|
|
33
|
+
defaultModel: readOptionalString(raw.model) ?? 'sonnet',
|
|
34
|
+
worktree,
|
|
35
|
+
nodes,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function parseYaml(content, filename) {
|
|
39
|
+
try {
|
|
40
|
+
const parsed = js_yaml_1.default.load(content);
|
|
41
|
+
if (!isRecord(parsed)) {
|
|
42
|
+
throwValidation(filename, 'Workflow YAML must be an object');
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof VSAFWorkflowError) {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
51
|
+
throwValidation(filename, `Workflow YAML could not be parsed: ${detail}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function readWorktree(value, filename) {
|
|
55
|
+
if (value === undefined) {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
if (!isRecord(value)) {
|
|
59
|
+
throwValidation(filename, 'worktree must be an object when provided');
|
|
60
|
+
}
|
|
61
|
+
const worktree = {};
|
|
62
|
+
if (typeof value.enabled === 'boolean') {
|
|
63
|
+
worktree.enabled = value.enabled;
|
|
64
|
+
}
|
|
65
|
+
if (typeof value.path === 'string') {
|
|
66
|
+
worktree.path = value.path;
|
|
67
|
+
}
|
|
68
|
+
return worktree;
|
|
69
|
+
}
|
|
70
|
+
function readNode(value, index, filename) {
|
|
71
|
+
if (!isRecord(value)) {
|
|
72
|
+
throwValidation(filename, `Node at index ${index} must be an object`);
|
|
73
|
+
}
|
|
74
|
+
const id = readOptionalString(value.id);
|
|
75
|
+
if (!id) {
|
|
76
|
+
throwValidation(filename, `Node at index ${index} must define id`);
|
|
77
|
+
}
|
|
78
|
+
const type = detectNodeType(value, id, filename);
|
|
79
|
+
const dependsOn = readStringArray(value.depends_on, `Node "${id}" depends_on`, filename);
|
|
80
|
+
return {
|
|
81
|
+
id,
|
|
82
|
+
type,
|
|
83
|
+
content: readNodeContent(value, type),
|
|
84
|
+
dependsOn,
|
|
85
|
+
triggerRule: readTriggerRule(value.trigger_rule, id, filename),
|
|
86
|
+
when: readOptionalString(value.when),
|
|
87
|
+
provider: readOptionalString(value.provider),
|
|
88
|
+
model: readOptionalString(value.model),
|
|
89
|
+
persistSession: value.persist_session === true,
|
|
90
|
+
options: readOptions(value.options, id, filename),
|
|
91
|
+
approval: isRecord(value.approval) ? value.approval : undefined,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function detectNodeType(node, id, filename) {
|
|
95
|
+
const keys = ['prompt', 'bash', 'command', 'script', 'approval', 'cancel'];
|
|
96
|
+
const matched = keys.filter((key) => node[key] !== undefined);
|
|
97
|
+
if (matched.length !== 1) {
|
|
98
|
+
throwValidation(filename, `Node "${id}" must define exactly one runtime action`);
|
|
99
|
+
}
|
|
100
|
+
return matched[0];
|
|
101
|
+
}
|
|
102
|
+
function readNodeContent(node, type) {
|
|
103
|
+
if (type === 'approval' && isRecord(node.approval)) {
|
|
104
|
+
return readOptionalString(node.approval.message) ?? '';
|
|
105
|
+
}
|
|
106
|
+
return readOptionalString(node[type]) ?? '';
|
|
107
|
+
}
|
|
108
|
+
function readTriggerRule(value, id, filename) {
|
|
109
|
+
if (value === undefined) {
|
|
110
|
+
return 'all_success';
|
|
111
|
+
}
|
|
112
|
+
if (isTriggerRule(value)) {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
throwValidation(filename, `Node "${id}" has unsupported trigger_rule "${String(value)}"`);
|
|
116
|
+
}
|
|
117
|
+
function readOptions(value, id, filename) {
|
|
118
|
+
if (value === undefined) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
if (!isRecord(value)) {
|
|
122
|
+
throwValidation(filename, `Node "${id}" options must be an object`);
|
|
123
|
+
}
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
function readStringArray(value, field, filename) {
|
|
127
|
+
if (value === undefined) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== 'string')) {
|
|
131
|
+
throwValidation(filename, `${field} must be an array of node ids`);
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
function validateGraph(nodes, filename) {
|
|
136
|
+
const seen = new Set();
|
|
137
|
+
for (const node of nodes) {
|
|
138
|
+
if (seen.has(node.id)) {
|
|
139
|
+
throwValidation(filename, `Duplicate node id "${node.id}"`);
|
|
140
|
+
}
|
|
141
|
+
seen.add(node.id);
|
|
142
|
+
}
|
|
143
|
+
for (const node of nodes) {
|
|
144
|
+
for (const dependency of node.dependsOn) {
|
|
145
|
+
if (!seen.has(dependency)) {
|
|
146
|
+
throwValidation(filename, `Node "${node.id}" depends on unknown node "${dependency}"`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const cycle = findCycle(nodes);
|
|
151
|
+
if (cycle) {
|
|
152
|
+
throwValidation(filename, `Circular dependency cycle detected: ${cycle.join(' -> ')}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function findCycle(nodes) {
|
|
156
|
+
const nodeMap = new Map(nodes.map((node) => [node.id, node]));
|
|
157
|
+
const visiting = new Set();
|
|
158
|
+
const visited = new Set();
|
|
159
|
+
const stack = [];
|
|
160
|
+
for (const node of nodes) {
|
|
161
|
+
const cycle = visitNode(node.id, nodeMap, visiting, visited, stack);
|
|
162
|
+
if (cycle) {
|
|
163
|
+
return cycle;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
function visitNode(nodeId, nodeMap, visiting, visited, stack) {
|
|
169
|
+
if (visited.has(nodeId)) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
if (visiting.has(nodeId)) {
|
|
173
|
+
return stack.slice(stack.indexOf(nodeId)).concat(nodeId);
|
|
174
|
+
}
|
|
175
|
+
visiting.add(nodeId);
|
|
176
|
+
stack.push(nodeId);
|
|
177
|
+
for (const dependency of nodeMap.get(nodeId)?.dependsOn ?? []) {
|
|
178
|
+
const cycle = visitNode(dependency, nodeMap, visiting, visited, stack);
|
|
179
|
+
if (cycle) {
|
|
180
|
+
return cycle;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
stack.pop();
|
|
184
|
+
visiting.delete(nodeId);
|
|
185
|
+
visited.add(nodeId);
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
function validateVsafPublicPaths(worktree, filename) {
|
|
189
|
+
if (worktree.path?.split(/[\\/]+/).includes('.archon')) {
|
|
190
|
+
throwValidation(filename, 'Public runtime paths must not use .archon; use .vsaf instead');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function readOptionalString(value) {
|
|
194
|
+
return typeof value === 'string' ? value : undefined;
|
|
195
|
+
}
|
|
196
|
+
function isRecord(value) {
|
|
197
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
198
|
+
}
|
|
199
|
+
function isTriggerRule(value) {
|
|
200
|
+
return value === 'all_success'
|
|
201
|
+
|| value === 'all_done'
|
|
202
|
+
|| value === 'one_success'
|
|
203
|
+
|| value === 'always';
|
|
204
|
+
}
|
|
205
|
+
function throwValidation(filename, message) {
|
|
206
|
+
throw new VSAFWorkflowError(`${filename}: ${message}`);
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=load-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-workflow.js","sourceRoot":"","sources":["../../src/runtime/load-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type RuntimeNodeType = 'prompt' | 'bash' | 'command' | 'script' | 'approval' | 'cancel';
|
|
2
|
+
export type RuntimeTriggerRule = 'all_success' | 'all_done' | 'one_success' | 'always';
|
|
3
|
+
export interface RuntimeWorktreeConfig {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
path?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RuntimeWorkflowNode {
|
|
8
|
+
id: string;
|
|
9
|
+
type: RuntimeNodeType;
|
|
10
|
+
content: string;
|
|
11
|
+
dependsOn: string[];
|
|
12
|
+
triggerRule: RuntimeTriggerRule;
|
|
13
|
+
when?: string;
|
|
14
|
+
provider?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
persistSession: boolean;
|
|
17
|
+
options?: Record<string, unknown>;
|
|
18
|
+
approval?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeWorkflow {
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
defaultProvider: string;
|
|
24
|
+
defaultModel: string;
|
|
25
|
+
worktree: RuntimeWorktreeConfig;
|
|
26
|
+
nodes: RuntimeWorkflowNode[];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/F,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,kBAAkB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
|
|
@@ -69,6 +69,54 @@ export declare const workflowSchema: {
|
|
|
69
69
|
type: "string";
|
|
70
70
|
minLength: number;
|
|
71
71
|
};
|
|
72
|
+
script: {
|
|
73
|
+
type: "string";
|
|
74
|
+
minLength: number;
|
|
75
|
+
};
|
|
76
|
+
runtime: {
|
|
77
|
+
type: "string";
|
|
78
|
+
enum: string[];
|
|
79
|
+
};
|
|
80
|
+
deps: {
|
|
81
|
+
type: "array";
|
|
82
|
+
items: {
|
|
83
|
+
type: "string";
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
cancel: {
|
|
87
|
+
type: "string";
|
|
88
|
+
minLength: number;
|
|
89
|
+
};
|
|
90
|
+
approval: {
|
|
91
|
+
type: "object";
|
|
92
|
+
required: string[];
|
|
93
|
+
properties: {
|
|
94
|
+
message: {
|
|
95
|
+
type: "string";
|
|
96
|
+
minLength: number;
|
|
97
|
+
};
|
|
98
|
+
capture_response: {
|
|
99
|
+
type: "boolean";
|
|
100
|
+
};
|
|
101
|
+
on_reject: {
|
|
102
|
+
type: "object";
|
|
103
|
+
required: string[];
|
|
104
|
+
properties: {
|
|
105
|
+
prompt: {
|
|
106
|
+
type: "string";
|
|
107
|
+
minLength: number;
|
|
108
|
+
};
|
|
109
|
+
max_attempts: {
|
|
110
|
+
type: "integer";
|
|
111
|
+
minimum: number;
|
|
112
|
+
maximum: number;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
additionalProperties: boolean;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
additionalProperties: boolean;
|
|
119
|
+
};
|
|
72
120
|
depends_on: {
|
|
73
121
|
type: "array";
|
|
74
122
|
items: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-schema.d.ts","sourceRoot":"","sources":["../../src/schema/workflow-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-schema.d.ts","sourceRoot":"","sources":["../../src/schema/workflow-schema.ts"],"names":[],"mappings":"AAkFA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAC"}
|
|
@@ -5,9 +5,12 @@ const nodeSchema = {
|
|
|
5
5
|
type: 'object',
|
|
6
6
|
required: ['id'],
|
|
7
7
|
oneOf: [
|
|
8
|
-
{ required: ['prompt'], not: { anyOf: [{ required: ['bash'] }, { required: ['command'] }] } },
|
|
9
|
-
{ required: ['bash'], not: { anyOf: [{ required: ['prompt'] }, { required: ['command'] }] } },
|
|
10
|
-
{ required: ['command'], not: { anyOf: [{ required: ['prompt'] }, { required: ['bash'] }] } },
|
|
8
|
+
{ required: ['prompt'], not: { anyOf: [{ required: ['bash'] }, { required: ['command'] }, { required: ['script'] }, { required: ['approval'] }, { required: ['cancel'] }] } },
|
|
9
|
+
{ required: ['bash'], not: { anyOf: [{ required: ['prompt'] }, { required: ['command'] }, { required: ['script'] }, { required: ['approval'] }, { required: ['cancel'] }] } },
|
|
10
|
+
{ required: ['command'], not: { anyOf: [{ required: ['prompt'] }, { required: ['bash'] }, { required: ['script'] }, { required: ['approval'] }, { required: ['cancel'] }] } },
|
|
11
|
+
{ required: ['script'], not: { anyOf: [{ required: ['prompt'] }, { required: ['bash'] }, { required: ['command'] }, { required: ['approval'] }, { required: ['cancel'] }] } },
|
|
12
|
+
{ required: ['approval'], not: { anyOf: [{ required: ['prompt'] }, { required: ['bash'] }, { required: ['command'] }, { required: ['script'] }, { required: ['cancel'] }] } },
|
|
13
|
+
{ required: ['cancel'], not: { anyOf: [{ required: ['prompt'] }, { required: ['bash'] }, { required: ['command'] }, { required: ['script'] }, { required: ['approval'] }] } },
|
|
11
14
|
],
|
|
12
15
|
additionalProperties: false,
|
|
13
16
|
properties: {
|
|
@@ -16,6 +19,28 @@ const nodeSchema = {
|
|
|
16
19
|
prompt: { type: 'string', minLength: 1 },
|
|
17
20
|
bash: { type: 'string', minLength: 1 },
|
|
18
21
|
command: { type: 'string', minLength: 1 },
|
|
22
|
+
script: { type: 'string', minLength: 1 },
|
|
23
|
+
runtime: { type: 'string', enum: ['bun', 'uv'] },
|
|
24
|
+
deps: { type: 'array', items: { type: 'string' } },
|
|
25
|
+
cancel: { type: 'string', minLength: 1 },
|
|
26
|
+
approval: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
required: ['message'],
|
|
29
|
+
properties: {
|
|
30
|
+
message: { type: 'string', minLength: 1 },
|
|
31
|
+
capture_response: { type: 'boolean' },
|
|
32
|
+
on_reject: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
required: ['prompt'],
|
|
35
|
+
properties: {
|
|
36
|
+
prompt: { type: 'string', minLength: 1 },
|
|
37
|
+
max_attempts: { type: 'integer', minimum: 1, maximum: 10 },
|
|
38
|
+
},
|
|
39
|
+
additionalProperties: false,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
additionalProperties: false,
|
|
43
|
+
},
|
|
19
44
|
depends_on: { type: 'array', items: { type: 'string' } },
|
|
20
45
|
when: { type: 'string' },
|
|
21
46
|
trigger_rule: { type: 'string', enum: ['all_success', 'one_success'] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-schema.js","sourceRoot":"","sources":["../../src/schema/workflow-schema.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE;QACL,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"workflow-schema.js","sourceRoot":"","sources":["../../src/schema/workflow-schema.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE;QACL,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7K,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7K,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7K,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7K,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7K,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE;KAC9K;IACD,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACxC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QAC/C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QAClD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;QACzD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;QACpE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;gBAClD,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;gBAC9C,SAAS,EAAE;oBACT,IAAI,EAAE,QAAiB;oBACvB,QAAQ,EAAE,CAAC,QAAQ,CAAC;oBACpB,UAAU,EAAE;wBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;wBACjD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;qBACpE;oBACD,oBAAoB,EAAE,KAAK;iBAC5B;aACF;YACD,oBAAoB,EAAE,KAAK;SAC5B;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;QAC1E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACjC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE;QAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;QAChE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QAClC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACvC,aAAa,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;QAC7E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE;QAC7F,aAAa,EAAE;YACb,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;YAChC,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACnD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAiB;oBACvB,oBAAoB,EAAE;wBACpB,IAAI,EAAE,QAAiB;wBACvB,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;4BACjC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;yBACrE;qBACF;iBACF;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;aACzE;SACF;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;QACjD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;YACpC,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;gBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;gBACrD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;gBAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;aACrD;YACD,oBAAoB,EAAE,KAAK;SAC5B;KACF;CACF,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,SAAS,EAAE,CAAC,EAAE;QAC/C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QAClC,MAAM,EAAE;YACN,IAAI,EAAE,QAAiB;YACvB,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;oBACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;oBACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;iBACrC;aACF;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAgB;YACtB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,UAAU;SAClB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const VSAF_SQLITE_SCHEMA = "\nCREATE TABLE IF NOT EXISTS vsaf_workflow_runs (\n id TEXT PRIMARY KEY,\n workflow_name TEXT NOT NULL,\n conversation_id TEXT NOT NULL,\n codebase_id TEXT,\n current_step_index INTEGER DEFAULT 0,\n status TEXT NOT NULL DEFAULT 'pending',\n user_message TEXT NOT NULL,\n metadata TEXT DEFAULT '{}',\n working_path TEXT,\n parent_conversation_id TEXT,\n user_id TEXT,\n started_at TEXT NOT NULL DEFAULT (datetime('now')),\n completed_at TEXT,\n last_activity_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_conversation\n ON vsaf_workflow_runs(conversation_id);\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_status\n ON vsaf_workflow_runs(status);\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_last_activity\n ON vsaf_workflow_runs(last_activity_at)\n WHERE status IN ('pending', 'running', 'paused');\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_working_path\n ON vsaf_workflow_runs(working_path);\n\nCREATE TABLE IF NOT EXISTS vsaf_workflow_events (\n id TEXT PRIMARY KEY,\n workflow_run_id TEXT NOT NULL REFERENCES vsaf_workflow_runs(id) ON DELETE CASCADE,\n event_type TEXT NOT NULL,\n step_index INTEGER,\n step_name TEXT,\n data TEXT DEFAULT '{}',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_events_run_id\n ON vsaf_workflow_events(workflow_run_id);\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_events_type\n ON vsaf_workflow_events(event_type);\n\nCREATE TABLE IF NOT EXISTS vsaf_workflow_node_sessions (\n workflow_name TEXT NOT NULL,\n node_id TEXT NOT NULL,\n scope_key TEXT NOT NULL,\n provider TEXT NOT NULL,\n provider_session_id TEXT NOT NULL,\n last_run_id TEXT REFERENCES vsaf_workflow_runs(id) ON DELETE SET NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n PRIMARY KEY (workflow_name, node_id, scope_key, provider)\n);\n\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_node_sessions_scope\n ON vsaf_workflow_node_sessions(scope_key);\nCREATE INDEX IF NOT EXISTS idx_vsaf_workflow_node_sessions_workflow\n ON vsaf_workflow_node_sessions(workflow_name);\n";
|
|
2
|
+
//# sourceMappingURL=sqlite-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-schema.d.ts","sourceRoot":"","sources":["../../src/store/sqlite-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,gqEA2D9B,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VSAF_SQLITE_SCHEMA = void 0;
|
|
4
|
+
exports.VSAF_SQLITE_SCHEMA = `
|
|
5
|
+
CREATE TABLE IF NOT EXISTS vsaf_workflow_runs (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
workflow_name TEXT NOT NULL,
|
|
8
|
+
conversation_id TEXT NOT NULL,
|
|
9
|
+
codebase_id TEXT,
|
|
10
|
+
current_step_index INTEGER DEFAULT 0,
|
|
11
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
12
|
+
user_message TEXT NOT NULL,
|
|
13
|
+
metadata TEXT DEFAULT '{}',
|
|
14
|
+
working_path TEXT,
|
|
15
|
+
parent_conversation_id TEXT,
|
|
16
|
+
user_id TEXT,
|
|
17
|
+
started_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
18
|
+
completed_at TEXT,
|
|
19
|
+
last_activity_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_conversation
|
|
23
|
+
ON vsaf_workflow_runs(conversation_id);
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_status
|
|
25
|
+
ON vsaf_workflow_runs(status);
|
|
26
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_last_activity
|
|
27
|
+
ON vsaf_workflow_runs(last_activity_at)
|
|
28
|
+
WHERE status IN ('pending', 'running', 'paused');
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_runs_working_path
|
|
30
|
+
ON vsaf_workflow_runs(working_path);
|
|
31
|
+
|
|
32
|
+
CREATE TABLE IF NOT EXISTS vsaf_workflow_events (
|
|
33
|
+
id TEXT PRIMARY KEY,
|
|
34
|
+
workflow_run_id TEXT NOT NULL REFERENCES vsaf_workflow_runs(id) ON DELETE CASCADE,
|
|
35
|
+
event_type TEXT NOT NULL,
|
|
36
|
+
step_index INTEGER,
|
|
37
|
+
step_name TEXT,
|
|
38
|
+
data TEXT DEFAULT '{}',
|
|
39
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_events_run_id
|
|
43
|
+
ON vsaf_workflow_events(workflow_run_id);
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_events_type
|
|
45
|
+
ON vsaf_workflow_events(event_type);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE IF NOT EXISTS vsaf_workflow_node_sessions (
|
|
48
|
+
workflow_name TEXT NOT NULL,
|
|
49
|
+
node_id TEXT NOT NULL,
|
|
50
|
+
scope_key TEXT NOT NULL,
|
|
51
|
+
provider TEXT NOT NULL,
|
|
52
|
+
provider_session_id TEXT NOT NULL,
|
|
53
|
+
last_run_id TEXT REFERENCES vsaf_workflow_runs(id) ON DELETE SET NULL,
|
|
54
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
55
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
56
|
+
PRIMARY KEY (workflow_name, node_id, scope_key, provider)
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_node_sessions_scope
|
|
60
|
+
ON vsaf_workflow_node_sessions(scope_key);
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_vsaf_workflow_node_sessions_workflow
|
|
62
|
+
ON vsaf_workflow_node_sessions(workflow_name);
|
|
63
|
+
`;
|
|
64
|
+
//# sourceMappingURL=sqlite-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-schema.js","sourceRoot":"","sources":["../../src/store/sqlite-schema.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DjC,CAAC"}
|