opensip-cli 0.1.14 → 0.1.16
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/bootstrap/artifact-retention.d.ts +62 -0
- package/dist/bootstrap/artifact-retention.d.ts.map +1 -0
- package/dist/bootstrap/artifact-retention.js +117 -0
- package/dist/bootstrap/artifact-retention.js.map +1 -0
- package/dist/bootstrap/artifact-seams.d.ts +21 -1
- package/dist/bootstrap/artifact-seams.d.ts.map +1 -1
- package/dist/bootstrap/artifact-seams.js +76 -4
- package/dist/bootstrap/artifact-seams.js.map +1 -1
- package/dist/bootstrap/atomic-artifact-write.d.ts.map +1 -1
- package/dist/bootstrap/atomic-artifact-write.js +7 -2
- package/dist/bootstrap/atomic-artifact-write.js.map +1 -1
- package/dist/bootstrap/bundled-tools.manifest.json +2 -1
- package/dist/bootstrap/dispatch-fork-core.d.ts +15 -2
- package/dist/bootstrap/dispatch-fork-core.d.ts.map +1 -1
- package/dist/bootstrap/dispatch-fork-core.js +22 -4
- package/dist/bootstrap/dispatch-fork-core.js.map +1 -1
- package/dist/bootstrap/dispatch-host-rpc-handler.d.ts.map +1 -1
- package/dist/bootstrap/dispatch-host-rpc-handler.js +10 -0
- package/dist/bootstrap/dispatch-host-rpc-handler.js.map +1 -1
- package/dist/bootstrap/load-tool-capabilities.js +11 -4
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
- package/dist/bootstrap/pre-action-messages.js +1 -1
- package/dist/bootstrap/pre-action-messages.js.map +1 -1
- package/dist/bootstrap/run-plane.d.ts +10 -0
- package/dist/bootstrap/run-plane.d.ts.map +1 -1
- package/dist/bootstrap/run-plane.js +20 -0
- package/dist/bootstrap/run-plane.js.map +1 -1
- package/dist/bootstrap/tool-command-dispatch-types.d.ts +15 -0
- package/dist/bootstrap/tool-command-dispatch-types.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-context.d.ts +5 -4
- package/dist/bootstrap/tool-command-worker-context.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-context.js +6 -4
- package/dist/bootstrap/tool-command-worker-context.js.map +1 -1
- package/dist/bootstrap/tool-command-worker-entry.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-entry.js +30 -5
- package/dist/bootstrap/tool-command-worker-entry.js.map +1 -1
- package/dist/bootstrap/tool-command-worker-rpc.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-rpc.js +23 -1
- package/dist/bootstrap/tool-command-worker-rpc.js.map +1 -1
- package/dist/cli-context.d.ts.map +1 -1
- package/dist/cli-context.js +26 -3
- package/dist/cli-context.js.map +1 -1
- package/dist/commands/agent-catalog.d.ts +9 -56
- package/dist/commands/agent-catalog.d.ts.map +1 -1
- package/dist/commands/agent-catalog.js +8 -199
- package/dist/commands/agent-catalog.js.map +1 -1
- package/dist/commands/assemble-opts.d.ts +13 -0
- package/dist/commands/assemble-opts.d.ts.map +1 -0
- package/dist/commands/assemble-opts.js +85 -0
- package/dist/commands/assemble-opts.js.map +1 -0
- package/dist/commands/history.d.ts +7 -11
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +7 -39
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
- package/dist/commands/host-subcommand-groups.js +12 -1
- package/dist/commands/host-subcommand-groups.js.map +1 -1
- package/dist/commands/init/agents-md.d.ts.map +1 -1
- package/dist/commands/init/agents-md.js +6 -0
- package/dist/commands/init/agents-md.js.map +1 -1
- package/dist/commands/mount-command-spec-wiring.d.ts +1 -0
- package/dist/commands/mount-command-spec-wiring.d.ts.map +1 -1
- package/dist/commands/mount-command-spec-wiring.js +5 -5
- package/dist/commands/mount-command-spec-wiring.js.map +1 -1
- package/dist/commands/session-show.d.ts.map +1 -1
- package/dist/commands/session-show.js +14 -41
- package/dist/commands/session-show.js.map +1 -1
- package/dist/commands/shared.d.ts +3 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/suite/capturing-context.d.ts +19 -0
- package/dist/commands/suite/capturing-context.d.ts.map +1 -0
- package/dist/commands/suite/capturing-context.js +62 -0
- package/dist/commands/suite/capturing-context.js.map +1 -0
- package/dist/commands/suite/orchestrator.d.ts +12 -0
- package/dist/commands/suite/orchestrator.d.ts.map +1 -0
- package/dist/commands/suite/orchestrator.js +216 -0
- package/dist/commands/suite/orchestrator.js.map +1 -0
- package/dist/commands/suite/suite-add.d.ts +18 -0
- package/dist/commands/suite/suite-add.d.ts.map +1 -0
- package/dist/commands/suite/suite-add.js +130 -0
- package/dist/commands/suite/suite-add.js.map +1 -0
- package/dist/commands/suite/suite-command-specs.d.ts +4 -0
- package/dist/commands/suite/suite-command-specs.d.ts.map +1 -0
- package/dist/commands/suite/suite-command-specs.js +150 -0
- package/dist/commands/suite/suite-command-specs.js.map +1 -0
- package/dist/commands/suite/validate-suite.d.ts +21 -0
- package/dist/commands/suite/validate-suite.d.ts.map +1 -0
- package/dist/commands/suite/validate-suite.js +89 -0
- package/dist/commands/suite/validate-suite.js.map +1 -0
- package/dist/commands/tools/list.d.ts.map +1 -1
- package/dist/commands/tools/list.js +54 -31
- package/dist/commands/tools/list.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/report-compose.js +2 -2
- package/dist/report-compose.js.map +1 -1
- package/dist/ui/result-to-view.d.ts.map +1 -1
- package/dist/ui/result-to-view.js +22 -0
- package/dist/ui/result-to-view.js.map +1 -1
- package/dist/ui/views/misc-views.d.ts.map +1 -1
- package/dist/ui/views/misc-views.js +30 -7
- package/dist/ui/views/misc-views.js.map +1 -1
- package/dist/ui/views/suite-views.d.ts +6 -0
- package/dist/ui/views/suite-views.d.ts.map +1 -0
- package/dist/ui/views/suite-views.js +70 -0
- package/dist/ui/views/suite-views.js.map +1 -0
- package/dist/ui/views/tools-views.d.ts.map +1 -1
- package/dist/ui/views/tools-views.js +2 -0
- package/dist/ui/views/tools-views.js.map +1 -1
- package/package.json +34 -33
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// @fitness-ignore-file dogfood-one-config-document-ratchet -- `suite add` is the host-owned config authoring command: it intentionally edits opensip-cli.config.yml and does not participate in runtime config loading.
|
|
2
|
+
import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { ConfigurationError, currentLogger } from '@opensip-cli/core';
|
|
5
|
+
import { isMap, isSeq, parseDocument } from 'yaml';
|
|
6
|
+
const MAX_EDITABLE_CONFIG_BYTES = 1_000_000;
|
|
7
|
+
export function addSuiteStep(input) {
|
|
8
|
+
const tool = resolveTool(input.tool, input.tools);
|
|
9
|
+
const command = tool.commandSpecs?.find((spec) => spec.name === input.command);
|
|
10
|
+
if (command === undefined) {
|
|
11
|
+
throw new ConfigurationError(`Tool '${tool.metadata.name}' has no command '${input.command}'.`, { code: 'CONFIG.SUITE_ADD.UNKNOWN_COMMAND' });
|
|
12
|
+
}
|
|
13
|
+
const configPath = input.configPath ?? join(input.projectRoot, 'opensip-cli.config.yml');
|
|
14
|
+
const args = parseArgPairs(input.argPairs);
|
|
15
|
+
const changed = appendSuiteStep(configPath, input.suite, {
|
|
16
|
+
tool: tool.metadata.id,
|
|
17
|
+
name: tool.metadata.name,
|
|
18
|
+
command: command.name,
|
|
19
|
+
...(Object.keys(args).length === 0 ? {} : { args }),
|
|
20
|
+
});
|
|
21
|
+
return { configPath, changed, tool, args };
|
|
22
|
+
}
|
|
23
|
+
function resolveTool(selector, tools) {
|
|
24
|
+
const matches = tools.filter((tool) => tool.metadata.id === selector || tool.metadata.name === selector);
|
|
25
|
+
if (matches.length === 1) {
|
|
26
|
+
const [match] = matches;
|
|
27
|
+
if (match !== undefined)
|
|
28
|
+
return match;
|
|
29
|
+
}
|
|
30
|
+
if (matches.length > 1) {
|
|
31
|
+
throw new ConfigurationError(`Tool selector '${selector}' matched multiple tools. Use a UUID.`, {
|
|
32
|
+
code: 'CONFIG.SUITE_ADD.AMBIGUOUS_TOOL',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
throw new ConfigurationError(`Unknown tool '${selector}'.`, {
|
|
36
|
+
code: 'CONFIG.SUITE_ADD.UNKNOWN_TOOL',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function parseArgPairs(pairs) {
|
|
40
|
+
const args = {};
|
|
41
|
+
for (const pair of pairs) {
|
|
42
|
+
const eq = pair.indexOf('=');
|
|
43
|
+
if (eq <= 0) {
|
|
44
|
+
throw new ConfigurationError(`Invalid --arg '${pair}'. Expected key=value.`, {
|
|
45
|
+
code: 'CONFIG.SUITE_ADD.INVALID_ARG',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
args[pair.slice(0, eq)] = parseScalar(pair.slice(eq + 1));
|
|
49
|
+
}
|
|
50
|
+
return args;
|
|
51
|
+
}
|
|
52
|
+
function parseScalar(raw) {
|
|
53
|
+
if (raw === 'true')
|
|
54
|
+
return true;
|
|
55
|
+
if (raw === 'false')
|
|
56
|
+
return false;
|
|
57
|
+
if (/^-?\d+(\.\d+)?$/.test(raw))
|
|
58
|
+
return Number(raw);
|
|
59
|
+
return raw;
|
|
60
|
+
}
|
|
61
|
+
function appendSuiteStep(configPath, suiteName, step) {
|
|
62
|
+
const doc = readOrCreateDocument(configPath);
|
|
63
|
+
const root = ensureRootMap(doc, configPath);
|
|
64
|
+
let suites = root.get('suites');
|
|
65
|
+
if (!isMap(suites)) {
|
|
66
|
+
suites = doc.createNode({});
|
|
67
|
+
root.set('suites', suites);
|
|
68
|
+
}
|
|
69
|
+
const suitesMap = suites;
|
|
70
|
+
let suite = suitesMap.get(suiteName);
|
|
71
|
+
if (!isMap(suite)) {
|
|
72
|
+
suite = doc.createNode({ steps: [] });
|
|
73
|
+
suitesMap.set(suiteName, suite);
|
|
74
|
+
}
|
|
75
|
+
const suiteMap = suite;
|
|
76
|
+
let seq = suiteMap.get('steps');
|
|
77
|
+
if (seq === undefined) {
|
|
78
|
+
seq = doc.createNode([]);
|
|
79
|
+
suiteMap.set('steps', seq);
|
|
80
|
+
}
|
|
81
|
+
if (!isSeq(seq)) {
|
|
82
|
+
throw new ConfigurationError(`Cannot edit suites.${suiteName}.steps in ${configPath}.`, {
|
|
83
|
+
code: 'CONFIG.SUITE_ADD.INVALID_STEPS',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const yamlSeq = seq;
|
|
87
|
+
const stepKey = JSON.stringify(step);
|
|
88
|
+
if (yamlSeq.items.some((item) => JSON.stringify(yamlNodeToJson(item)) === stepKey)) {
|
|
89
|
+
currentLogger().info?.({
|
|
90
|
+
evt: 'cli.suite.add.duplicate_step',
|
|
91
|
+
suite: suiteName,
|
|
92
|
+
configPath,
|
|
93
|
+
msg: 'Suite step already exists; leaving config unchanged.',
|
|
94
|
+
});
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
yamlSeq.add(step);
|
|
98
|
+
writeFileSync(configPath, doc.toString(), 'utf8');
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
function yamlNodeToJson(item) {
|
|
102
|
+
if (item && typeof item === 'object' && 'toJSON' in item) {
|
|
103
|
+
return item.toJSON();
|
|
104
|
+
}
|
|
105
|
+
return item;
|
|
106
|
+
}
|
|
107
|
+
function readOrCreateDocument(configPath) {
|
|
108
|
+
if (!existsSync(configPath))
|
|
109
|
+
return parseDocument('');
|
|
110
|
+
const stat = statSync(configPath);
|
|
111
|
+
if (stat.size > MAX_EDITABLE_CONFIG_BYTES) {
|
|
112
|
+
throw new ConfigurationError(`Cannot edit ${configPath}: file is larger than ${MAX_EDITABLE_CONFIG_BYTES} bytes.`, { code: 'CONFIG.SUITE_ADD.CONFIG_TOO_LARGE' });
|
|
113
|
+
}
|
|
114
|
+
const doc = parseDocument(readFileSync(configPath, 'utf8'));
|
|
115
|
+
if (doc.errors.length > 0) {
|
|
116
|
+
const first = doc.errors[0]?.message ?? 'unknown YAML error';
|
|
117
|
+
throw new ConfigurationError(`Cannot edit ${configPath}: ${first}.`, {
|
|
118
|
+
code: 'CONFIG.SUITE_ADD.MALFORMED_YAML',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return doc;
|
|
122
|
+
}
|
|
123
|
+
function ensureRootMap(doc, configPath) {
|
|
124
|
+
doc.contents ??= doc.createNode({});
|
|
125
|
+
if (!isMap(doc.contents)) {
|
|
126
|
+
throw new ConfigurationError(`Cannot edit ${configPath}: opensip-cli.config.yml must start with a YAML map.`, { code: 'CONFIG.SUITE_ADD.NON_MAP_CONFIG' });
|
|
127
|
+
}
|
|
128
|
+
return doc.contents;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=suite-add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite-add.js","sourceRoot":"","sources":["../../../src/commands/suite/suite-add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite-command-specs.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/suite-command-specs.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,8BAA8B,CAAC;AAMtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA0JvD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,QAAQ,EAAE,CAElF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { suitesConfigSchema } from '@opensip-cli/config';
|
|
2
|
+
import { EXIT_CODES } from '@opensip-cli/contracts';
|
|
3
|
+
import { currentScope } from '@opensip-cli/core';
|
|
4
|
+
import { COMMAND_RESULT, defineCommand, PROJECT_SCOPE, } from '../host-subcommand-shared.js';
|
|
5
|
+
import { runSuite } from './orchestrator.js';
|
|
6
|
+
import { addSuiteStep } from './suite-add.js';
|
|
7
|
+
import { validateSuite } from './validate-suite.js';
|
|
8
|
+
function configuredSuites() {
|
|
9
|
+
return suitesConfigSchema.parse(currentScope()?.configDocument?.suites ?? {});
|
|
10
|
+
}
|
|
11
|
+
function isStringArray(value) {
|
|
12
|
+
return Array.isArray(value) && value.every((item) => typeof item === 'string');
|
|
13
|
+
}
|
|
14
|
+
function parseArg(raw, previous) {
|
|
15
|
+
return [...(isStringArray(previous) ? previous : []), raw];
|
|
16
|
+
}
|
|
17
|
+
function buildSuiteRunSpec(ctx) {
|
|
18
|
+
return defineCommand({
|
|
19
|
+
name: 'run',
|
|
20
|
+
description: 'Run a configured suite in one shared project scope',
|
|
21
|
+
commonFlags: ['cwd', 'json', 'quiet', 'verbose', 'debug', 'reportTo', 'apiKey', 'open'],
|
|
22
|
+
args: [{ name: 'name', description: 'Configured suite name' }],
|
|
23
|
+
scope: PROJECT_SCOPE,
|
|
24
|
+
output: COMMAND_RESULT,
|
|
25
|
+
handler: async (rawOpts) => {
|
|
26
|
+
if (ctx.toolContext === undefined) {
|
|
27
|
+
ctx.setExitCode(EXIT_CODES.CONFIGURATION_ERROR);
|
|
28
|
+
return {
|
|
29
|
+
type: 'error',
|
|
30
|
+
message: 'suite run requires the full ToolCliContext handle.',
|
|
31
|
+
exitCode: EXIT_CODES.CONFIGURATION_ERROR,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const opts = rawOpts;
|
|
35
|
+
const name = String(opts._args?.[0] ?? '');
|
|
36
|
+
const suite = configuredSuites()[name];
|
|
37
|
+
if (suite === undefined) {
|
|
38
|
+
ctx.setExitCode(EXIT_CODES.CONFIGURATION_ERROR);
|
|
39
|
+
return {
|
|
40
|
+
type: 'error',
|
|
41
|
+
message: `Unknown suite '${name}'.`,
|
|
42
|
+
exitCode: EXIT_CODES.CONFIGURATION_ERROR,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const result = await runSuite({
|
|
46
|
+
name,
|
|
47
|
+
suite,
|
|
48
|
+
tools: currentScope()?.tools.list() ?? [],
|
|
49
|
+
ctx: ctx.toolContext,
|
|
50
|
+
suiteOpts: opts,
|
|
51
|
+
});
|
|
52
|
+
ctx.setExitCode(result.exitCode);
|
|
53
|
+
return result;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function buildSuiteListSpec() {
|
|
58
|
+
return defineCommand({
|
|
59
|
+
name: 'list',
|
|
60
|
+
description: 'List configured suites and their resolved steps',
|
|
61
|
+
commonFlags: ['json'],
|
|
62
|
+
scope: PROJECT_SCOPE,
|
|
63
|
+
output: COMMAND_RESULT,
|
|
64
|
+
handler: () => {
|
|
65
|
+
const tools = currentScope()?.tools.list() ?? [];
|
|
66
|
+
const suites = configuredSuites();
|
|
67
|
+
const result = {
|
|
68
|
+
type: 'suite-list',
|
|
69
|
+
totalCount: Object.keys(suites).length,
|
|
70
|
+
suites: Object.entries(suites).map(([name, suite]) => {
|
|
71
|
+
const validated = validateSuite({ name, suite, tools });
|
|
72
|
+
return {
|
|
73
|
+
name,
|
|
74
|
+
...(suite.description === undefined ? {} : { description: suite.description }),
|
|
75
|
+
steps: validated.steps.map((step) => ({
|
|
76
|
+
tool: step.tool.metadata.name,
|
|
77
|
+
stableId: step.tool.metadata.id,
|
|
78
|
+
command: step.spec.name,
|
|
79
|
+
args: step.args,
|
|
80
|
+
})),
|
|
81
|
+
};
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
return Promise.resolve(result);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function buildSuiteAddSpec(ctx) {
|
|
89
|
+
return defineCommand({
|
|
90
|
+
name: 'add',
|
|
91
|
+
description: 'Add a tool command step to a configured suite',
|
|
92
|
+
commonFlags: ['json', 'cwd'],
|
|
93
|
+
args: [{ name: 'name', description: 'Suite name' }],
|
|
94
|
+
options: [
|
|
95
|
+
{
|
|
96
|
+
flag: '--tool',
|
|
97
|
+
value: '<name-or-uuid>',
|
|
98
|
+
description: 'Tool name or stable UUID',
|
|
99
|
+
required: true,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
flag: '--command',
|
|
103
|
+
value: '<name>',
|
|
104
|
+
description: 'Tool command name',
|
|
105
|
+
required: true,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
flag: '--arg',
|
|
109
|
+
value: '<key=value>',
|
|
110
|
+
description: 'Tool option value to write into the suite step',
|
|
111
|
+
variadic: true,
|
|
112
|
+
arrayDefault: [],
|
|
113
|
+
parse: parseArg,
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
scope: PROJECT_SCOPE,
|
|
117
|
+
output: COMMAND_RESULT,
|
|
118
|
+
handler: (rawOpts) => {
|
|
119
|
+
const scope = currentScope();
|
|
120
|
+
const opts = rawOpts;
|
|
121
|
+
const suite = String(opts._args?.[0] ?? '');
|
|
122
|
+
const project = scope?.projectContext;
|
|
123
|
+
const output = addSuiteStep({
|
|
124
|
+
suite,
|
|
125
|
+
tool: opts.tool ?? '',
|
|
126
|
+
command: opts.command ?? '',
|
|
127
|
+
argPairs: opts.arg ?? [],
|
|
128
|
+
tools: scope?.tools.list() ?? [],
|
|
129
|
+
projectRoot: project?.projectRoot ?? process.cwd(),
|
|
130
|
+
configPath: project?.configPath,
|
|
131
|
+
});
|
|
132
|
+
const result = {
|
|
133
|
+
type: 'suite-add',
|
|
134
|
+
suite,
|
|
135
|
+
tool: output.tool.metadata.name,
|
|
136
|
+
stableId: output.tool.metadata.id,
|
|
137
|
+
command: opts.command ?? '',
|
|
138
|
+
configPath: output.configPath,
|
|
139
|
+
changed: output.changed,
|
|
140
|
+
};
|
|
141
|
+
if (!output.changed)
|
|
142
|
+
ctx.setExitCode(EXIT_CODES.SUCCESS);
|
|
143
|
+
return result;
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
export function buildSuiteGroupLeaves(ctx) {
|
|
148
|
+
return [buildSuiteRunSpec(ctx), buildSuiteListSpec(), buildSuiteAddSpec(ctx)];
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=suite-command-specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite-command-specs.js","sourceRoot":"","sources":["../../../src/commands/suite/suite-command-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type CommandSpec, type Tool, type ToolCliContext } from '@opensip-cli/core';
|
|
2
|
+
import type { SuiteDefinition, SuiteStep } from '@opensip-cli/config';
|
|
3
|
+
export interface ValidatedSuiteStep {
|
|
4
|
+
readonly index: number;
|
|
5
|
+
readonly tool: Tool;
|
|
6
|
+
readonly spec: CommandSpec<unknown, ToolCliContext>;
|
|
7
|
+
readonly config: SuiteStep;
|
|
8
|
+
readonly args: Readonly<Record<string, unknown>>;
|
|
9
|
+
readonly positionals: readonly unknown[];
|
|
10
|
+
}
|
|
11
|
+
export interface ValidatedSuite {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly description?: string;
|
|
14
|
+
readonly steps: readonly ValidatedSuiteStep[];
|
|
15
|
+
}
|
|
16
|
+
export declare function validateSuite(args: {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly suite: SuiteDefinition;
|
|
19
|
+
readonly tools: readonly Tool[];
|
|
20
|
+
}): ValidatedSuite;
|
|
21
|
+
//# sourceMappingURL=validate-suite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-suite.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/validate-suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAgBtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC/C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACjC,GAAG,cAAc,CAuBjB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ConfigurationError, } from '@opensip-cli/core';
|
|
2
|
+
import { assembleOptsFromSpec } from '../assemble-opts.js';
|
|
3
|
+
const RUN_SCOPE_ARG_KEYS = new Set([
|
|
4
|
+
'cwd',
|
|
5
|
+
'config',
|
|
6
|
+
'debug',
|
|
7
|
+
'json',
|
|
8
|
+
'quiet',
|
|
9
|
+
'verbose',
|
|
10
|
+
'reportTo',
|
|
11
|
+
'apiKey',
|
|
12
|
+
'open',
|
|
13
|
+
'targets',
|
|
14
|
+
'target',
|
|
15
|
+
]);
|
|
16
|
+
export function validateSuite(args) {
|
|
17
|
+
const errors = [];
|
|
18
|
+
if (args.suite.execution !== undefined) {
|
|
19
|
+
errors.push(`Suite '${args.name}' declares reserved execution options. execution.mode and execution.stopOnFirstFailure are not supported in v1.`);
|
|
20
|
+
}
|
|
21
|
+
const steps = [];
|
|
22
|
+
args.suite.steps.forEach((step, index) => {
|
|
23
|
+
try {
|
|
24
|
+
steps.push(validateStep(args.name, step, index, args.tools));
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
errors.push(error instanceof Error ? error.message : String(error));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
if (errors.length > 0) {
|
|
31
|
+
throw new ConfigurationError(errors.join('\n'), { code: 'CONFIG.SUITE.INVALID' });
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
name: args.name,
|
|
35
|
+
...(args.suite.description === undefined ? {} : { description: args.suite.description }),
|
|
36
|
+
steps,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function validateStep(suiteName, step, index, tools) {
|
|
40
|
+
const tool = tools.find((candidate) => candidate.metadata.id === step.tool);
|
|
41
|
+
if (tool === undefined) {
|
|
42
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} references unknown tool UUID '${step.tool}'.`, { code: 'CONFIG.SUITE.UNKNOWN_TOOL' });
|
|
43
|
+
}
|
|
44
|
+
const spec = (tool.commandSpecs ?? []).find((candidate) => candidate.name === step.command);
|
|
45
|
+
if (spec === undefined) {
|
|
46
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} references unknown command '${step.command}' for tool '${tool.metadata.name}'.`, { code: 'CONFIG.SUITE.UNKNOWN_COMMAND' });
|
|
47
|
+
}
|
|
48
|
+
if (spec.output === 'live-view') {
|
|
49
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} command '${step.command}' is a live-view command; suites require non-interactive commands in v1.`, { code: 'CONFIG.SUITE.LIVE_VIEW_UNSUPPORTED' });
|
|
50
|
+
}
|
|
51
|
+
if (step.cwd !== undefined) {
|
|
52
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} declares reserved per-step cwd. Put run-scope flags on 'suite run' instead.`, { code: 'CONFIG.SUITE.RESERVED_CWD' });
|
|
53
|
+
}
|
|
54
|
+
const rawArgs = step.args ?? {};
|
|
55
|
+
for (const key of Object.keys(rawArgs)) {
|
|
56
|
+
if (RUN_SCOPE_ARG_KEYS.has(key)) {
|
|
57
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} uses run-scope arg '${key}'. Put run-scope flags on 'suite run' instead.`, { code: 'CONFIG.SUITE.RUN_SCOPE_ARG' });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const { knownKeys } = assembleOptsFromSpec({
|
|
61
|
+
options: spec.options,
|
|
62
|
+
suppliedValues: rawArgs,
|
|
63
|
+
});
|
|
64
|
+
const positionals = positionalArgs(rawArgs);
|
|
65
|
+
for (const key of Object.keys(rawArgs)) {
|
|
66
|
+
if (key === '_args')
|
|
67
|
+
continue;
|
|
68
|
+
if (!knownKeys.has(key)) {
|
|
69
|
+
throw new ConfigurationError(`Suite '${suiteName}' step ${index + 1} arg '${key}' is not an option on '${step.command}'.`, { code: 'CONFIG.SUITE.UNKNOWN_ARG' });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
index,
|
|
74
|
+
tool,
|
|
75
|
+
spec: spec,
|
|
76
|
+
config: step,
|
|
77
|
+
args: rawArgs,
|
|
78
|
+
positionals,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function positionalArgs(args) {
|
|
82
|
+
const raw = args._args;
|
|
83
|
+
if (raw === undefined)
|
|
84
|
+
return [];
|
|
85
|
+
if (Array.isArray(raw))
|
|
86
|
+
return raw;
|
|
87
|
+
return [raw];
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=validate-suite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-suite.js","sourceRoot":"","sources":["../../../src/commands/suite/validate-suite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/tools/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,wBAAwB,CAAC;AAK5E,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAwBD,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/tools/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,wBAAwB,CAAC;AAK5E,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAwBD,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CA0BjE"}
|
|
@@ -48,10 +48,29 @@ function sourceLabelFor(provenance, projectHostDir, globalHostDir) {
|
|
|
48
48
|
export function toolsList(opts) {
|
|
49
49
|
const projectHostDir = resolveProjectPaths(opts.cwd).pluginsDir(TOOL_DOMAIN);
|
|
50
50
|
const globalHostDir = resolveUserPaths().pluginsDir(TOOL_DOMAIN);
|
|
51
|
+
const loadedPackageNames = new Set();
|
|
52
|
+
// Installed-but-not-loaded set — marker scan + manifest file read per host.
|
|
53
|
+
const hosts = [
|
|
54
|
+
{ dir: projectHostDir, source: 'project' },
|
|
55
|
+
{ dir: globalHostDir, source: 'global' },
|
|
56
|
+
];
|
|
57
|
+
const rows = [
|
|
58
|
+
...loadedRows(opts, projectHostDir, globalHostDir, loadedPackageNames),
|
|
59
|
+
...manifestOnlyRows(hosts, loadedPackageNames),
|
|
60
|
+
];
|
|
61
|
+
// Shadow-marking: a project row shadows a global row with the same tool id
|
|
62
|
+
// (matches discovery's first-occurrence-wins ordering: project precedes
|
|
63
|
+
// global). Bundled rows are never shadow-marked — the registry's
|
|
64
|
+
// first-writer-wins already keeps a duplicate id from loading at all.
|
|
65
|
+
const projectIds = new Set(rows.filter((r) => r.source === 'project').map((r) => r.id));
|
|
66
|
+
const marked = rows.map((row) => row.source === 'global' && projectIds.has(row.id) ? { ...row, shadowed: true } : row);
|
|
67
|
+
const filtered = filterRows(marked, opts);
|
|
68
|
+
return { type: 'tools-list', tools: filtered, totalCount: filtered.length };
|
|
69
|
+
}
|
|
70
|
+
function loadedRows(opts, projectHostDir, globalHostDir, loadedPackageNames) {
|
|
71
|
+
const rows = [];
|
|
51
72
|
const provenance = opts.provenance ?? [];
|
|
52
73
|
const manifests = opts.manifests ?? [];
|
|
53
|
-
const rows = [];
|
|
54
|
-
const loadedPackageNames = new Set();
|
|
55
74
|
// Loaded set — provenance and manifests are pushed pairwise at admission,
|
|
56
75
|
// so they index together.
|
|
57
76
|
for (const [i, prov] of provenance.entries()) {
|
|
@@ -60,6 +79,7 @@ export function toolsList(opts) {
|
|
|
60
79
|
loadedPackageNames.add(prov.packageName);
|
|
61
80
|
rows.push({
|
|
62
81
|
id: prov.id,
|
|
82
|
+
...(prov.stableId === undefined ? {} : { stableId: prov.stableId, uuid: prov.stableId }),
|
|
63
83
|
...(prov.packageName === undefined ? {} : { packageName: prov.packageName }),
|
|
64
84
|
version: prov.version,
|
|
65
85
|
source: sourceLabelFor(prov, projectHostDir, globalHostDir),
|
|
@@ -67,37 +87,40 @@ export function toolsList(opts) {
|
|
|
67
87
|
status: 'loaded',
|
|
68
88
|
});
|
|
69
89
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
];
|
|
90
|
+
return rows;
|
|
91
|
+
}
|
|
92
|
+
function manifestOnlyRows(hosts, loadedPackageNames) {
|
|
93
|
+
const rows = [];
|
|
75
94
|
for (const host of hosts) {
|
|
76
|
-
|
|
77
|
-
if (loadedPackageNames.has(pkg.name))
|
|
78
|
-
continue;
|
|
79
|
-
const manifest = loadToolManifest('installed', pkg.packageDir);
|
|
80
|
-
rows.push({
|
|
81
|
-
id: manifest?.id ?? pkg.name,
|
|
82
|
-
packageName: pkg.name,
|
|
83
|
-
version: manifest?.version ?? 'unknown',
|
|
84
|
-
source: host.source,
|
|
85
|
-
commands: manifest?.commands.map((c) => c.name) ?? [],
|
|
86
|
-
status: 'manifest-only',
|
|
87
|
-
});
|
|
88
|
-
}
|
|
95
|
+
rows.push(...manifestRowsForHost(host, loadedPackageNames));
|
|
89
96
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
return rows;
|
|
98
|
+
}
|
|
99
|
+
function manifestRowsForHost(host, loadedPackageNames) {
|
|
100
|
+
const rows = [];
|
|
101
|
+
for (const pkg of discoverPackagesInNodeModules(join(host.dir, 'node_modules'), 'tool')) {
|
|
102
|
+
if (loadedPackageNames.has(pkg.name))
|
|
103
|
+
continue;
|
|
104
|
+
const manifest = loadToolManifest('installed', pkg.packageDir);
|
|
105
|
+
rows.push({
|
|
106
|
+
id: manifest?.id ?? pkg.name,
|
|
107
|
+
...(manifest?.stableId === undefined
|
|
108
|
+
? {}
|
|
109
|
+
: { stableId: manifest.stableId, uuid: manifest.stableId }),
|
|
110
|
+
packageName: pkg.name,
|
|
111
|
+
version: manifest?.version ?? 'unknown',
|
|
112
|
+
source: host.source,
|
|
113
|
+
commands: manifest?.commands.map((c) => c.name) ?? [],
|
|
114
|
+
status: 'manifest-only',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return rows;
|
|
118
|
+
}
|
|
119
|
+
function filterRows(rows, opts) {
|
|
97
120
|
if (opts.global === true)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return
|
|
121
|
+
return rows.filter((r) => r.source === 'global');
|
|
122
|
+
if (opts.project === true)
|
|
123
|
+
return rows.filter((r) => r.source === 'project');
|
|
124
|
+
return [...rows];
|
|
102
125
|
}
|
|
103
126
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/tools/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAuB7D;;;;GAIG;AACH,SAAS,cAAc,CACrB,UAA0B,EAC1B,cAAsB,EACtB,aAAqB;IAErB,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,UAAU,CAAC,MAAM,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/tools/list.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/report-compose.js
CHANGED
|
@@ -24,7 +24,7 @@ import { mkdirSync, writeFileSync } from 'node:fs';
|
|
|
24
24
|
import { join } from 'node:path';
|
|
25
25
|
import { currentScope, resolveProjectPaths, resolveToolHooks, SystemError, logger as defaultLogger, } from '@opensip-cli/core';
|
|
26
26
|
import { generateDashboardHtml, } from '@opensip-cli/dashboard';
|
|
27
|
-
import { SessionRepo } from '@opensip-cli/session-store';
|
|
27
|
+
import { orderSessionsForSuiteGrouping, SessionRepo } from '@opensip-cli/session-store';
|
|
28
28
|
import { dispatchExternalToolHook } from './bootstrap/dispatch-external-tool-hook.js';
|
|
29
29
|
import { isExternalToolProvenance, provenanceRecordFor, shouldRunHookInHost, } from './bootstrap/tool-provenance.js';
|
|
30
30
|
import { buildHostDispatchCtx, getCurrentProjectRoot } from './cli-context.js';
|
|
@@ -59,7 +59,7 @@ async function composeReportInput() {
|
|
|
59
59
|
const log = scope.logger ?? defaultLogger;
|
|
60
60
|
const datastore = scope.datastore();
|
|
61
61
|
const repo = datastore ? new SessionRepo(datastore) : undefined;
|
|
62
|
-
const sessions = repo ? [...repo.list({ limit: 20 })] : [];
|
|
62
|
+
const sessions = repo ? orderSessionsForSuiteGrouping([...repo.list({ limit: 20 })]) : [];
|
|
63
63
|
const input = { sessions };
|
|
64
64
|
const claimedKeys = new Map();
|
|
65
65
|
const provenance = scope.toolProvenance;
|