opensip-cli 0.1.12 → 0.1.14
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-seams.d.ts +7 -0
- package/dist/bootstrap/artifact-seams.d.ts.map +1 -0
- package/dist/bootstrap/artifact-seams.js +53 -0
- package/dist/bootstrap/artifact-seams.js.map +1 -0
- package/dist/bootstrap/atomic-artifact-write.d.ts +19 -0
- package/dist/bootstrap/atomic-artifact-write.d.ts.map +1 -0
- package/dist/bootstrap/atomic-artifact-write.js +68 -0
- package/dist/bootstrap/atomic-artifact-write.js.map +1 -0
- package/dist/bootstrap/baseline-seams.d.ts.map +1 -1
- package/dist/bootstrap/baseline-seams.js +79 -27
- package/dist/bootstrap/baseline-seams.js.map +1 -1
- package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -1
- package/dist/bootstrap/build-command-registration-input.js.map +1 -1
- package/dist/bootstrap/build-external-worker-child-env.d.ts +25 -0
- package/dist/bootstrap/build-external-worker-child-env.d.ts.map +1 -0
- package/dist/bootstrap/build-external-worker-child-env.js +71 -0
- package/dist/bootstrap/build-external-worker-child-env.js.map +1 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -1
- package/dist/bootstrap/build-per-run-scope.js +4 -1
- package/dist/bootstrap/build-per-run-scope.js.map +1 -1
- package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/config-and-capabilities.js +12 -94
- package/dist/bootstrap/config-and-capabilities.js.map +1 -1
- package/dist/bootstrap/config-declarations.d.ts +23 -0
- package/dist/bootstrap/config-declarations.d.ts.map +1 -0
- package/dist/bootstrap/config-declarations.js +73 -0
- package/dist/bootstrap/config-declarations.js.map +1 -0
- package/dist/bootstrap/decorate-tool-primary.d.ts.map +1 -1
- package/dist/bootstrap/decorate-tool-primary.js.map +1 -1
- package/dist/bootstrap/deliver-envelope.d.ts +4 -1
- package/dist/bootstrap/deliver-envelope.d.ts.map +1 -1
- package/dist/bootstrap/deliver-envelope.js +38 -10
- package/dist/bootstrap/deliver-envelope.js.map +1 -1
- package/dist/bootstrap/dispatch-fork-core.d.ts +1 -1
- package/dist/bootstrap/dispatch-fork-core.d.ts.map +1 -1
- package/dist/bootstrap/dispatch-fork-core.js +73 -75
- 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 +4 -0
- package/dist/bootstrap/dispatch-host-rpc-handler.js.map +1 -1
- package/dist/bootstrap/dispatch-replay-result.d.ts.map +1 -1
- package/dist/bootstrap/dispatch-replay-result.js +3 -0
- package/dist/bootstrap/dispatch-replay-result.js.map +1 -1
- package/dist/bootstrap/io-plane.d.ts.map +1 -1
- package/dist/bootstrap/io-plane.js +4 -1
- package/dist/bootstrap/io-plane.js.map +1 -1
- package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/load-tool-capabilities.js +34 -3
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
- package/dist/bootstrap/register-tools-discovery.d.ts.map +1 -1
- package/dist/bootstrap/register-tools-discovery.js +2 -0
- package/dist/bootstrap/register-tools-discovery.js.map +1 -1
- package/dist/bootstrap/report-failure.d.ts +28 -0
- package/dist/bootstrap/report-failure.d.ts.map +1 -0
- package/dist/bootstrap/report-failure.js +135 -0
- package/dist/bootstrap/report-failure.js.map +1 -0
- package/dist/bootstrap/scope-access.d.ts +1 -1
- package/dist/bootstrap/scope-access.d.ts.map +1 -1
- package/dist/bootstrap/scope-access.js +10 -2
- package/dist/bootstrap/scope-access.js.map +1 -1
- package/dist/bootstrap/state-lock-policy.d.ts +19 -0
- package/dist/bootstrap/state-lock-policy.d.ts.map +1 -0
- package/dist/bootstrap/state-lock-policy.js +86 -0
- package/dist/bootstrap/state-lock-policy.js.map +1 -0
- package/dist/bootstrap/synthesize-external-tool.d.ts.map +1 -1
- package/dist/bootstrap/synthesize-external-tool.js +11 -1
- package/dist/bootstrap/synthesize-external-tool.js.map +1 -1
- package/dist/bootstrap/tool-command-dispatch-types.d.ts +23 -2
- package/dist/bootstrap/tool-command-dispatch-types.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-config-pass.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-config-pass.js.map +1 -1
- package/dist/bootstrap/tool-command-worker-context.d.ts +4 -3
- package/dist/bootstrap/tool-command-worker-context.d.ts.map +1 -1
- package/dist/bootstrap/tool-command-worker-context.js +28 -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 +38 -31
- package/dist/bootstrap/tool-command-worker-entry.js.map +1 -1
- package/dist/bootstrap/tool-command-worker-result.d.ts +25 -0
- package/dist/bootstrap/tool-command-worker-result.d.ts.map +1 -0
- package/dist/bootstrap/tool-command-worker-result.js +60 -0
- package/dist/bootstrap/tool-command-worker-result.js.map +1 -0
- package/dist/bootstrap/tool-trust.d.ts +12 -0
- package/dist/bootstrap/tool-trust.d.ts.map +1 -1
- package/dist/bootstrap/tool-trust.js +29 -5
- package/dist/bootstrap/tool-trust.js.map +1 -1
- package/dist/bootstrap/validate-tool.d.ts.map +1 -1
- package/dist/bootstrap/validate-tool.js +4 -1
- package/dist/bootstrap/validate-tool.js.map +1 -1
- package/dist/cli-context.d.ts.map +1 -1
- package/dist/cli-context.js +42 -8
- package/dist/cli-context.js.map +1 -1
- package/dist/commands/agent-catalog.d.ts +8 -7
- package/dist/commands/agent-catalog.d.ts.map +1 -1
- package/dist/commands/agent-catalog.js +129 -60
- package/dist/commands/agent-catalog.js.map +1 -1
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +12 -2
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/config.d.ts +22 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +135 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +5 -1
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/host-command-specs.d.ts.map +1 -1
- package/dist/commands/host-command-specs.js +13 -5
- package/dist/commands/host-command-specs.js.map +1 -1
- package/dist/commands/host-subcommand-config.d.ts +7 -0
- package/dist/commands/host-subcommand-config.d.ts.map +1 -0
- package/dist/commands/host-subcommand-config.js +75 -0
- package/dist/commands/host-subcommand-config.js.map +1 -0
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
- package/dist/commands/host-subcommand-groups.js +7 -1
- package/dist/commands/host-subcommand-groups.js.map +1 -1
- package/dist/commands/host-subcommand-sessions.d.ts.map +1 -1
- package/dist/commands/host-subcommand-sessions.js +8 -4
- package/dist/commands/host-subcommand-sessions.js.map +1 -1
- package/dist/commands/init/agents-md.d.ts +6 -0
- package/dist/commands/init/agents-md.d.ts.map +1 -0
- package/dist/commands/init/agents-md.js +52 -0
- package/dist/commands/init/agents-md.js.map +1 -0
- package/dist/commands/init/language-detection.d.ts.map +1 -1
- package/dist/commands/init/language-detection.js +8 -3
- package/dist/commands/init/language-detection.js.map +1 -1
- package/dist/commands/init/scaffold-writer.d.ts.map +1 -1
- package/dist/commands/init/scaffold-writer.js +6 -1
- package/dist/commands/init/scaffold-writer.js.map +1 -1
- package/dist/commands/init.d.ts +5 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mount-command-spec.d.ts +3 -1
- package/dist/commands/mount-command-spec.d.ts.map +1 -1
- package/dist/commands/mount-command-spec.js +27 -4
- package/dist/commands/mount-command-spec.js.map +1 -1
- package/dist/commands/plugin-host-ops.d.ts.map +1 -1
- package/dist/commands/plugin-host-ops.js +11 -2
- package/dist/commands/plugin-host-ops.js.map +1 -1
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +11 -2
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/session-show.js +5 -46
- package/dist/commands/session-show.js.map +1 -1
- package/dist/commands/shared.d.ts +5 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/tools/create-template-writer.d.ts +16 -0
- package/dist/commands/tools/create-template-writer.d.ts.map +1 -0
- package/dist/commands/tools/create-template-writer.js +39 -0
- package/dist/commands/tools/create-template-writer.js.map +1 -0
- package/dist/commands/tools/create-templates.d.ts +19 -0
- package/dist/commands/tools/create-templates.d.ts.map +1 -0
- package/dist/commands/tools/create-templates.js +228 -0
- package/dist/commands/tools/create-templates.js.map +1 -0
- package/dist/commands/tools/create.d.ts +4 -1
- package/dist/commands/tools/create.d.ts.map +1 -1
- package/dist/commands/tools/create.js +35 -50
- package/dist/commands/tools/create.js.map +1 -1
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +8 -0
- package/dist/commands/tools/index.js.map +1 -1
- package/dist/commands/tools/install.d.ts.map +1 -1
- package/dist/commands/tools/install.js +21 -2
- package/dist/commands/tools/install.js.map +1 -1
- package/dist/commands/tools/storage-contract-checks.d.ts.map +1 -1
- package/dist/commands/tools/storage-contract-checks.js.map +1 -1
- package/dist/commands/tools/uninstall.d.ts.map +1 -1
- package/dist/commands/tools/uninstall.js +14 -3
- package/dist/commands/tools/uninstall.js.map +1 -1
- package/dist/commands/tools/validate.d.ts.map +1 -1
- package/dist/commands/tools/validate.js +51 -6
- package/dist/commands/tools/validate.js.map +1 -1
- package/dist/commands/uninstall/targets.d.ts.map +1 -1
- package/dist/commands/uninstall/targets.js +8 -1
- package/dist/commands/uninstall/targets.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +12 -2
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/env/host-env-specs.d.ts.map +1 -1
- package/dist/env/host-env-specs.js +57 -4
- package/dist/env/host-env-specs.js.map +1 -1
- package/dist/error-handler.d.ts.map +1 -1
- package/dist/error-handler.js +28 -6
- package/dist/error-handler.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/report-compose.d.ts.map +1 -1
- package/dist/report-compose.js +21 -3
- package/dist/report-compose.js.map +1 -1
- package/dist/telemetry/sdk-init.d.ts.map +1 -1
- package/dist/telemetry/sdk-init.js +3 -1
- package/dist/telemetry/sdk-init.js.map +1 -1
- package/dist/ui/result-to-view.d.ts.map +1 -1
- package/dist/ui/result-to-view.js +21 -1
- package/dist/ui/result-to-view.js.map +1 -1
- package/dist/ui/views/init-view.d.ts.map +1 -1
- package/dist/ui/views/init-view.js +14 -2
- package/dist/ui/views/init-view.js.map +1 -1
- package/dist/ui/views/misc-views.d.ts +13 -0
- package/dist/ui/views/misc-views.d.ts.map +1 -1
- package/dist/ui/views/misc-views.js +77 -5
- package/dist/ui/views/misc-views.js.map +1 -1
- package/dist/ui/views/plugin-view.d.ts.map +1 -1
- package/dist/ui/views/plugin-view.js +4 -1
- package/dist/ui/views/plugin-view.js.map +1 -1
- package/dist/ui/views/tools-views.d.ts.map +1 -1
- package/dist/ui/views/tools-views.js +8 -7
- package/dist/ui/views/tools-views.js.map +1 -1
- package/dist/update-notifier.d.ts +3 -0
- package/dist/update-notifier.d.ts.map +1 -1
- package/dist/update-notifier.js +3 -0
- package/dist/update-notifier.js.map +1 -1
- package/package.json +33 -33
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* report-failure — host-owned resolver and fan-out for {@link ReportFailureDetail}
|
|
3
|
+
* (Plan 06). Combines core error types with contracts exit-code policy.
|
|
4
|
+
*/
|
|
5
|
+
import { EXIT_CODES, mapToolErrorToExitCode } from '@opensip-cli/contracts';
|
|
6
|
+
import { SystemError, ToolError, formatCliDiagnosticHuman, } from '@opensip-cli/core';
|
|
7
|
+
const DEFAULT_FAILURE_EVT = 'tool.command.failed';
|
|
8
|
+
const MODULE_TAG = 'cli:report-failure';
|
|
9
|
+
const MAX_DERIVED_ERROR_MESSAGE_LENGTH = 1000;
|
|
10
|
+
function truncateDerivedMessage(message) {
|
|
11
|
+
if (message.length <= MAX_DERIVED_ERROR_MESSAGE_LENGTH)
|
|
12
|
+
return message;
|
|
13
|
+
return `${message.slice(0, MAX_DERIVED_ERROR_MESSAGE_LENGTH - 3)}...`;
|
|
14
|
+
}
|
|
15
|
+
function stringFromUnknown(error) {
|
|
16
|
+
try {
|
|
17
|
+
return String(error);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return '<unstringifiable thrown value>';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function deriveErrorDefaults(error) {
|
|
24
|
+
if (error instanceof ToolError) {
|
|
25
|
+
return {
|
|
26
|
+
message: truncateDerivedMessage(error.message),
|
|
27
|
+
exitCode: mapToolErrorToExitCode(error),
|
|
28
|
+
code: error.code,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (error instanceof Error) {
|
|
32
|
+
return {
|
|
33
|
+
message: truncateDerivedMessage(error.message),
|
|
34
|
+
exitCode: EXIT_CODES.RUNTIME_ERROR,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (error === undefined) {
|
|
38
|
+
return { exitCode: EXIT_CODES.RUNTIME_ERROR };
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
message: truncateDerivedMessage(stringFromUnknown(error)),
|
|
42
|
+
exitCode: EXIT_CODES.RUNTIME_ERROR,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Resolve a {@link ReportFailureDetail} into a plain, effect-ready payload. */
|
|
46
|
+
function applyErrorDefaults(detail, fields) {
|
|
47
|
+
if (detail.error === undefined)
|
|
48
|
+
return fields;
|
|
49
|
+
const derived = deriveErrorDefaults(detail.error);
|
|
50
|
+
return {
|
|
51
|
+
message: fields.message ?? derived.message,
|
|
52
|
+
code: fields.code ?? derived.code,
|
|
53
|
+
exitCode: fields.exitCode ?? derived.exitCode,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function resolveReportFailure(detail) {
|
|
57
|
+
const derived = applyErrorDefaults(detail, {
|
|
58
|
+
message: detail.message,
|
|
59
|
+
exitCode: detail.exitCode,
|
|
60
|
+
code: detail.code,
|
|
61
|
+
});
|
|
62
|
+
const message = derived.message;
|
|
63
|
+
const exitCode = derived.exitCode;
|
|
64
|
+
const code = derived.code;
|
|
65
|
+
if (message === undefined || exitCode === undefined) {
|
|
66
|
+
throw new SystemError('reportFailure: message and exitCode are required when no resolvable error is provided');
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
message,
|
|
70
|
+
exitCode,
|
|
71
|
+
...(detail.suggestion === undefined ? {} : { suggestion: detail.suggestion }),
|
|
72
|
+
...(code === undefined ? {} : { code }),
|
|
73
|
+
...(detail.diagnostic === undefined ? {} : { diagnostic: detail.diagnostic }),
|
|
74
|
+
...(detail.jsonRequested === undefined ? {} : { jsonRequested: detail.jsonRequested }),
|
|
75
|
+
...(detail.log === undefined ? {} : { log: detail.log }),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Convert a resolved detail to the wire-safe worker replay shape (no Error instances). */
|
|
79
|
+
export function toReportedFailureWire(resolved) {
|
|
80
|
+
return resolved;
|
|
81
|
+
}
|
|
82
|
+
/** Build the async {@link ToolCliContext.reportFailure} seam. */
|
|
83
|
+
export function createReportFailure(deps) {
|
|
84
|
+
const writeStderr = deps.writeStderr ?? ((text) => process.stderr.write(text));
|
|
85
|
+
return async (detail) => {
|
|
86
|
+
const resolved = resolveReportFailure(detail);
|
|
87
|
+
const log = deps.getLogger();
|
|
88
|
+
const logDetail = resolved.log ?? {
|
|
89
|
+
level: 'warn',
|
|
90
|
+
evt: DEFAULT_FAILURE_EVT,
|
|
91
|
+
data: {
|
|
92
|
+
message: resolved.message,
|
|
93
|
+
...(resolved.code === undefined ? {} : { code: resolved.code }),
|
|
94
|
+
exitCode: resolved.exitCode,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
const logEntry = {
|
|
98
|
+
evt: logDetail.evt,
|
|
99
|
+
module: MODULE_TAG,
|
|
100
|
+
message: resolved.message,
|
|
101
|
+
exitCode: resolved.exitCode,
|
|
102
|
+
...(resolved.code === undefined ? {} : { code: resolved.code }),
|
|
103
|
+
...logDetail.data,
|
|
104
|
+
};
|
|
105
|
+
if (logDetail.level === 'error') {
|
|
106
|
+
log.error(logEntry);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
log.warn(logEntry);
|
|
110
|
+
}
|
|
111
|
+
deps.setExitCode(resolved.exitCode);
|
|
112
|
+
deps.getDiagnostics?.()?.event('execute', 'error', resolved.message);
|
|
113
|
+
if (resolved.jsonRequested === true) {
|
|
114
|
+
deps.emitError({
|
|
115
|
+
message: resolved.message,
|
|
116
|
+
exitCode: resolved.exitCode,
|
|
117
|
+
...(resolved.suggestion === undefined ? {} : { suggestion: resolved.suggestion }),
|
|
118
|
+
...(resolved.code === undefined ? {} : { code: resolved.code }),
|
|
119
|
+
...(resolved.diagnostic === undefined ? {} : { diagnostic: resolved.diagnostic }),
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (resolved.diagnostic !== undefined) {
|
|
124
|
+
writeStderr(`${formatCliDiagnosticHuman(resolved.diagnostic)}\n`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
await deps.render({
|
|
128
|
+
type: 'error',
|
|
129
|
+
message: resolved.message,
|
|
130
|
+
...(resolved.suggestion === undefined ? {} : { suggestion: resolved.suggestion }),
|
|
131
|
+
exitCode: resolved.exitCode,
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=report-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-failure.js","sourceRoot":"","sources":["../../src/bootstrap/report-failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,7 @@ export interface DatastoreThunk {
|
|
|
57
57
|
* `project.scope === 'project'` first or handle the throw as a "no project
|
|
58
58
|
* found" error.
|
|
59
59
|
*/
|
|
60
|
-
export declare function buildDatastoreThunk(project: ProjectContext, log?: Logger): DatastoreThunk;
|
|
60
|
+
export declare function buildDatastoreThunk(project: ProjectContext, log?: Logger, commandName?: string): DatastoreThunk;
|
|
61
61
|
/**
|
|
62
62
|
* Open (or return cached) project-local SQLite DataStore via the
|
|
63
63
|
* scope's datastore thunk. Shared between tool action bodies and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-access.d.ts","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"scope-access.d.ts","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI1E;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,SAAS,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAsB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAqChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAsB,GAAG,SAAS,CAG1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAgB/C;AAED,sFAAsF;AACtF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,GAAG,cAAc,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,SAAS,CAAC;AACnB,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,SAAS,GAAG,SAAS,CAAC"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { ConfigurationError, SystemError, currentScope, logger as defaultLogger, resolveProjectPaths, } from '@opensip-cli/core';
|
|
16
16
|
import { DataStoreFactory } from '@opensip-cli/datastore';
|
|
17
|
+
import { buildDatastoreLockContext } from './state-lock-policy.js';
|
|
17
18
|
/**
|
|
18
19
|
* Strict reader: the only way to obtain the per-run scope is `currentScope()`
|
|
19
20
|
* (entered by pre-action-hook or explicit runWithScope in tests). All previous
|
|
@@ -57,7 +58,7 @@ export function getCurrentProjectRoot() {
|
|
|
57
58
|
* `project.scope === 'project'` first or handle the throw as a "no project
|
|
58
59
|
* found" error.
|
|
59
60
|
*/
|
|
60
|
-
export function buildDatastoreThunk(project, log = defaultLogger) {
|
|
61
|
+
export function buildDatastoreThunk(project, log = defaultLogger, commandName) {
|
|
61
62
|
let cached;
|
|
62
63
|
const thunk = (() => {
|
|
63
64
|
if (cached)
|
|
@@ -67,7 +68,14 @@ export function buildDatastoreThunk(project, log = defaultLogger) {
|
|
|
67
68
|
'errored earlier with "No OpenSIP CLI project found" before touching this.', { code: 'SYSTEM.BOOTSTRAP.DATASTORE_OUTSIDE_PROJECT' });
|
|
68
69
|
}
|
|
69
70
|
const path = `${resolveProjectPaths(project.projectRoot).runtimeDir}/datastore.sqlite`;
|
|
70
|
-
cached = DataStoreFactory.open({
|
|
71
|
+
cached = DataStoreFactory.open({
|
|
72
|
+
backend: 'sqlite',
|
|
73
|
+
path,
|
|
74
|
+
lock: buildDatastoreLockContext(log, {
|
|
75
|
+
cwd: project.projectRoot,
|
|
76
|
+
commandName,
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
71
79
|
log.info({
|
|
72
80
|
evt: 'cli.datastore.opened',
|
|
73
81
|
module: 'cli:context',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-access.js","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,kBAAkB,EAIlB,WAAW,EACX,YAAY,EACZ,MAAM,IAAI,aAAa,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CACnB,2FAA2F;YACzF,yFAAyF;YACzF,2FAA2F,EAC7F,EAAE,IAAI,EAAE,0BAA0B,EAAE,CACrC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CACnB,6EAA6E,EAC7E,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAiBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,MAAc,aAAa;
|
|
1
|
+
{"version":3,"file":"scope-access.js","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* state-lock-policy — resolves datastore/artifact write-lock timing from host env.
|
|
3
|
+
*
|
|
4
|
+
* Local interactive runs wait longer and recover stale locks; CI/non-interactive
|
|
5
|
+
* runs fail fast by default. All overrides flow through {@link hostEnv}.
|
|
6
|
+
*/
|
|
7
|
+
import { type FileLockEvent, type Logger, type StateLockPolicy } from '@opensip-cli/core';
|
|
8
|
+
import type { DataStoreLockContext } from '@opensip-cli/datastore';
|
|
9
|
+
/** Resolve lock timing policy from host env and interactive/CI context. */
|
|
10
|
+
export declare function resolveStateLockPolicy(input?: {
|
|
11
|
+
readonly commandName?: string;
|
|
12
|
+
}): StateLockPolicy;
|
|
13
|
+
export declare function createStateLockEventBridge(logger: Logger): (event: FileLockEvent) => void;
|
|
14
|
+
/** Build datastore lock context for {@link DataStoreFactory.open}. */
|
|
15
|
+
export declare function buildDatastoreLockContext(logger: Logger, input?: {
|
|
16
|
+
readonly commandName?: string;
|
|
17
|
+
readonly cwd?: string;
|
|
18
|
+
}): DataStoreLockContext;
|
|
19
|
+
//# sourceMappingURL=state-lock-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-lock-policy.d.ts","sourceRoot":"","sources":["../../src/bootstrap/state-lock-policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAsBnE,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAoBjG;AAWD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CA4BzF;AAED,sEAAsE;AACtE,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,oBAAoB,CAStB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* state-lock-policy — resolves datastore/artifact write-lock timing from host env.
|
|
3
|
+
*
|
|
4
|
+
* Local interactive runs wait longer and recover stale locks; CI/non-interactive
|
|
5
|
+
* runs fail fast by default. All overrides flow through {@link hostEnv}.
|
|
6
|
+
*/
|
|
7
|
+
import { basename } from 'node:path';
|
|
8
|
+
import { ConfigurationError, currentScope, } from '@opensip-cli/core';
|
|
9
|
+
import { hostEnv } from '../env/host-env-specs.js';
|
|
10
|
+
const DEFAULT_LOCAL_WAIT_MS = 30_000;
|
|
11
|
+
const DEFAULT_CI_WAIT_MS = 5000;
|
|
12
|
+
const DEFAULT_STALE_MS = 600_000;
|
|
13
|
+
const DEFAULT_HEARTBEAT_MS = 2000;
|
|
14
|
+
function parseNonNegativeLockOverride(raw, name) {
|
|
15
|
+
const value = Number(raw);
|
|
16
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
17
|
+
throw new ConfigurationError(`${name} must be a non-negative integer`, {
|
|
18
|
+
code: 'CONFIGURATION.STATE_LOCK.INVALID_OVERRIDE',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
function isCiEnv() {
|
|
24
|
+
const ci = hostEnv.get('CI');
|
|
25
|
+
return ci !== undefined && ci.length > 0 && ci !== '0' && ci.toLowerCase() !== 'false';
|
|
26
|
+
}
|
|
27
|
+
/** Resolve lock timing policy from host env and interactive/CI context. */
|
|
28
|
+
export function resolveStateLockPolicy(input) {
|
|
29
|
+
const waitOverride = hostEnv.get('OPENSIP_STATE_LOCK_WAIT_MS');
|
|
30
|
+
const staleOverride = hostEnv.get('OPENSIP_STATE_LOCK_STALE_MS');
|
|
31
|
+
const defaultWait = isCiEnv() ? DEFAULT_CI_WAIT_MS : DEFAULT_LOCAL_WAIT_MS;
|
|
32
|
+
const waitMs = waitOverride === undefined
|
|
33
|
+
? defaultWait
|
|
34
|
+
: parseNonNegativeLockOverride(waitOverride, 'OPENSIP_STATE_LOCK_WAIT_MS');
|
|
35
|
+
const staleMs = staleOverride === undefined
|
|
36
|
+
? DEFAULT_STALE_MS
|
|
37
|
+
: parseNonNegativeLockOverride(staleOverride, 'OPENSIP_STATE_LOCK_STALE_MS');
|
|
38
|
+
void input?.commandName;
|
|
39
|
+
return {
|
|
40
|
+
waitMs,
|
|
41
|
+
staleMs,
|
|
42
|
+
heartbeatMs: DEFAULT_HEARTBEAT_MS,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Map generic lock events to logger + RunDiagnostics (phase `persist`). */
|
|
46
|
+
const LOCK_EVENT_LOGGER_NAMES = {
|
|
47
|
+
'acquire.start': 'state.lock.acquire.start',
|
|
48
|
+
'acquire.wait': 'state.lock.acquire.wait',
|
|
49
|
+
'acquire.complete': 'state.lock.acquire.complete',
|
|
50
|
+
'acquire.timeout': 'state.lock.acquire.timeout',
|
|
51
|
+
'stale.recovered': 'state.lock.stale.recovered',
|
|
52
|
+
};
|
|
53
|
+
export function createStateLockEventBridge(logger) {
|
|
54
|
+
return (event) => {
|
|
55
|
+
const loggerEvt = LOCK_EVENT_LOGGER_NAMES[event.kind];
|
|
56
|
+
logger.info({
|
|
57
|
+
evt: loggerEvt,
|
|
58
|
+
module: 'cli:state-lock',
|
|
59
|
+
resource: event.resource,
|
|
60
|
+
operation: event.operation,
|
|
61
|
+
waitMs: event.waitMs,
|
|
62
|
+
ownerPid: event.ownerPid,
|
|
63
|
+
ownerHostname: event.ownerHostname,
|
|
64
|
+
});
|
|
65
|
+
const scope = currentScope();
|
|
66
|
+
scope?.diagnostics?.event('persist', event.kind === 'acquire.timeout' ? 'warn' : 'info', loggerEvt, {
|
|
67
|
+
resource: event.resource,
|
|
68
|
+
operation: event.operation,
|
|
69
|
+
waitMs: event.waitMs,
|
|
70
|
+
ownerPid: event.ownerPid,
|
|
71
|
+
ownerHostname: event.ownerHostname,
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** Build datastore lock context for {@link DataStoreFactory.open}. */
|
|
76
|
+
export function buildDatastoreLockContext(logger, input) {
|
|
77
|
+
const scope = currentScope();
|
|
78
|
+
return {
|
|
79
|
+
policy: resolveStateLockPolicy(input),
|
|
80
|
+
runId: scope?.runId,
|
|
81
|
+
command: input?.commandName,
|
|
82
|
+
cwdBasename: input?.cwd ? basename(input.cwd) : basename(process.cwd()),
|
|
83
|
+
onLockEvent: createStateLockEventBridge(logger),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=state-lock-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-lock-policy.js","sourceRoot":"","sources":["../../src/bootstrap/state-lock-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize-external-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/synthesize-external-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,UAAU,
|
|
1
|
+
{"version":3,"file":"synthesize-external-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/synthesize-external-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,UAAU,EAQV,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAmD3B,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,CAAC,OAAO,UAAU,CAAC,CA4B/B"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* EXTERNAL provenance, so the HOST can register + mount an external tool's
|
|
4
4
|
* commands WITHOUT importing its untrusted runtime (ADR-0054 M4-G capstone).
|
|
5
5
|
*/
|
|
6
|
-
import { assertCommandSpec, defineTool, SystemError, } from '@opensip-cli/core';
|
|
6
|
+
import { assertCommandSpec, defineTool, PluginIncompatibleError, SystemError, } from '@opensip-cli/core';
|
|
7
7
|
function externalDispatchStub(commandName) {
|
|
8
8
|
return () => {
|
|
9
9
|
throw new SystemError(`external tool command '${commandName}' handler was invoked in the host process; ` +
|
|
@@ -14,7 +14,17 @@ function externalDispatchStub(commandName) {
|
|
|
14
14
|
function manifestOptionToSpec(option) {
|
|
15
15
|
return { ...option };
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* @throws {PluginIncompatibleError} When an external manifest declares an in-process-only output mode.
|
|
19
|
+
*/
|
|
17
20
|
function manifestCommandToSpec(cmd) {
|
|
21
|
+
if (cmd.output === 'live-view') {
|
|
22
|
+
throw new PluginIncompatibleError(`external tool command '${cmd.name}' declares output 'live-view', which is bundled/in-process only; ` +
|
|
23
|
+
"external commands must use 'command-result', 'signal-envelope', or 'raw-stream'.", {
|
|
24
|
+
code: 'PLUGIN_INCOMPATIBLE',
|
|
25
|
+
diagnostic: "external command output 'live-view' is not supported",
|
|
26
|
+
});
|
|
27
|
+
}
|
|
18
28
|
const spec = {
|
|
19
29
|
name: cmd.name,
|
|
20
30
|
description: cmd.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize-external-tool.js","sourceRoot":"","sources":["../../src/bootstrap/synthesize-external-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"synthesize-external-tool.js","sourceRoot":"","sources":["../../src/bootstrap/synthesize-external-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* still fail loud in the worker — Ink/TTY rendering cannot leave the host
|
|
31
31
|
* (ADR-0054 M4-C mapping table; documented as a later increment).
|
|
32
32
|
*/
|
|
33
|
-
import type { CommandOutputMode, ToolSessionContribution, ToolSource } from '@opensip-cli/core';
|
|
33
|
+
import type { CliDiagnostic, CommandOutputMode, ToolSessionContribution, ToolSource } from '@opensip-cli/core';
|
|
34
34
|
/**
|
|
35
35
|
* The request the host writes to a temp JSON spec file and forks the worker
|
|
36
36
|
* with (`fork(workerEntry, [specPath])`). The worker re-resolves + re-imports
|
|
@@ -109,7 +109,7 @@ export interface ToolCommandWorkerSpec {
|
|
|
109
109
|
* pass, so the UX is identical regardless of which
|
|
110
110
|
* pass caught the failure.
|
|
111
111
|
*/
|
|
112
|
-
export type ToolCommandFailureClass = 'tool-handler-throw' | 'unsupported-seam' | 'host-rpc-failed' | 'command-not-found' | 'runtime-load-failed' | 'bad-spec' | 'config-invalid';
|
|
112
|
+
export type ToolCommandFailureClass = 'tool-handler-throw' | 'unsupported-seam' | 'host-rpc-failed' | 'command-not-found' | 'runtime-load-failed' | 'bad-spec' | 'config-invalid' | 'payload_too_large';
|
|
113
113
|
/**
|
|
114
114
|
* The final-result-return payload the worker posts back over IPC once the
|
|
115
115
|
* command handler resolves. The host replays it through the REAL host
|
|
@@ -137,6 +137,23 @@ export interface ToolCommandResult {
|
|
|
137
137
|
readonly suggestion?: string;
|
|
138
138
|
readonly code?: string;
|
|
139
139
|
};
|
|
140
|
+
/**
|
|
141
|
+
* `ctx.reportFailure(...)` resolved detail — replayed host-side through the
|
|
142
|
+
* real reportFailure seam (Plan 06). Wire-safe plain data only; no Error instances.
|
|
143
|
+
*/
|
|
144
|
+
readonly reportedFailure?: {
|
|
145
|
+
readonly message: string;
|
|
146
|
+
readonly exitCode: number;
|
|
147
|
+
readonly suggestion?: string;
|
|
148
|
+
readonly code?: string;
|
|
149
|
+
readonly diagnostic?: CliDiagnostic;
|
|
150
|
+
readonly jsonRequested?: boolean;
|
|
151
|
+
readonly log?: {
|
|
152
|
+
readonly level?: 'warn' | 'error';
|
|
153
|
+
readonly evt: string;
|
|
154
|
+
readonly data?: Readonly<Record<string, unknown>>;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
140
157
|
/** The last `ctx.setExitCode(...)` value (last-write-wins). */
|
|
141
158
|
readonly exitCode?: number;
|
|
142
159
|
/**
|
|
@@ -202,6 +219,10 @@ export type HostRpcCall = {
|
|
|
202
219
|
readonly seam: 'writeSarif';
|
|
203
220
|
readonly envelope: unknown;
|
|
204
221
|
readonly path: string;
|
|
222
|
+
} | {
|
|
223
|
+
readonly seam: 'writeArtifact';
|
|
224
|
+
readonly path: string;
|
|
225
|
+
readonly bytes: string;
|
|
205
226
|
} | {
|
|
206
227
|
readonly seam: 'saveBaseline';
|
|
207
228
|
readonly tool: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-command-dispatch-types.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-dispatch-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tool-command-dispatch-types.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-dispatch-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-command-worker-config-pass.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-config-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-command-worker-config-pass.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-config-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAwBhE;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAwBjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-command-worker-config-pass.js","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-config-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAa,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-command-worker-config-pass.js","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-config-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAa,MAAM,mBAAmB,CAAC;AAehE,sFAAsF;AACtF,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAiC,CAAC,SAAS,KAAK,UAAU,CACnE,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU,EAAE,MAAe;IAC3D,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAClD,8EAA8E;IAC9E,+EAA+E;IAC/E,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAExF,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;SACzC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;QAC5B,OAAO,GAAG,WAAW,CAAC,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,8BAA8B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,MACzE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wCACjC,EAAE,CAAC;AACL,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ResultAccumulator} drained into a `ToolCommandResult` after the handler
|
|
11
11
|
* resolves; the host replays them through the real seams.
|
|
12
12
|
* - host-RPC (RPC): `deliverSignals` / `writeSarif` / the four baseline seams
|
|
13
|
-
* / `toolState.*` / `hostPlanes.*` / `maybeOpenReport` / `getExitCode` issue
|
|
13
|
+
* / `writeArtifact` / `toolState.*` / `hostPlanes.*` / `maybeOpenReport` / `getExitCode` issue
|
|
14
14
|
* a typed {@link HostRpcRequest} via the {@link WorkerRpcClient} and await
|
|
15
15
|
* the host's reply — the HOST performs the privileged effect (datastore /
|
|
16
16
|
* egress / FS / process exit) and returns the result.
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* {@link RunScope} + run timer (the worker re-bootstraps its own scope; it never
|
|
23
23
|
* ships a live `RunScope` across IPC).
|
|
24
24
|
*/
|
|
25
|
-
import { type RunScope, type RunTimer, type ToolCliContext } from '@opensip-cli/core';
|
|
25
|
+
import { type ResolvedReportFailure, type RunScope, type RunTimer, type ToolCliContext } from '@opensip-cli/core';
|
|
26
26
|
import type { ToolCommandFailureClass, ToolCommandResult } from './tool-command-dispatch-types.js';
|
|
27
27
|
import type { WorkerRpcClient } from './tool-command-worker-rpc.js';
|
|
28
28
|
/**
|
|
@@ -45,11 +45,12 @@ export interface ResultAccumulator {
|
|
|
45
45
|
json?: unknown;
|
|
46
46
|
raw?: unknown;
|
|
47
47
|
error?: ToolCommandResult['error'];
|
|
48
|
+
reportedFailure?: ResolvedReportFailure;
|
|
48
49
|
exitCode?: number;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* Build the worker-side {@link ToolCliContext} shim. FRR seams record into
|
|
52
53
|
* `acc`; RPC seams upcall via `rpcClient`; the live-view seams fail loud.
|
|
53
54
|
*/
|
|
54
|
-
export declare function buildWorkerContext(scope: RunScope, timing: RunTimer, acc: ResultAccumulator, rpcClient: WorkerRpcClient): ToolCliContext;
|
|
55
|
+
export declare function buildWorkerContext(scope: RunScope, timing: RunTimer, acc: ResultAccumulator, rpcClient: WorkerRpcClient, maxCapturedOutputBytes?: number): ToolCliContext;
|
|
55
56
|
//# sourceMappingURL=tool-command-worker-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-command-worker-context.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"tool-command-worker-context.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAQL,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAGV,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAsB;gBACxD,IAAI,EAAE,MAAM;CAQzB;AAeD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2DD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,eAAe,EAC1B,sBAAsB,SAA2C,GAChE,cAAc,CAqFhB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ResultAccumulator} drained into a `ToolCommandResult` after the handler
|
|
11
11
|
* resolves; the host replays them through the real seams.
|
|
12
12
|
* - host-RPC (RPC): `deliverSignals` / `writeSarif` / the four baseline seams
|
|
13
|
-
* / `toolState.*` / `hostPlanes.*` / `maybeOpenReport` / `getExitCode` issue
|
|
13
|
+
* / `writeArtifact` / `toolState.*` / `hostPlanes.*` / `maybeOpenReport` / `getExitCode` issue
|
|
14
14
|
* a typed {@link HostRpcRequest} via the {@link WorkerRpcClient} and await
|
|
15
15
|
* the host's reply — the HOST performs the privileged effect (datastore /
|
|
16
16
|
* egress / FS / process exit) and returns the result.
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
* {@link RunScope} + run timer (the worker re-bootstraps its own scope; it never
|
|
23
23
|
* ships a live `RunScope` across IPC).
|
|
24
24
|
*/
|
|
25
|
+
import { assertCapturedOutputFits, getWorkerLimits, } from '@opensip-cli/core';
|
|
26
|
+
import { resolveReportFailure, toReportedFailureWire } from './report-failure.js';
|
|
25
27
|
/**
|
|
26
28
|
* A loud, marked failure for a seam the worker shim cannot marshal (the
|
|
27
29
|
* live-view seams). Carries the {@link ToolCommandFailureClass} so the
|
|
@@ -101,23 +103,30 @@ function buildHostPlanesRpc(client) {
|
|
|
101
103
|
* Build the worker-side {@link ToolCliContext} shim. FRR seams record into
|
|
102
104
|
* `acc`; RPC seams upcall via `rpcClient`; the live-view seams fail loud.
|
|
103
105
|
*/
|
|
104
|
-
export function buildWorkerContext(scope, timing, acc, rpcClient) {
|
|
106
|
+
export function buildWorkerContext(scope, timing, acc, rpcClient, maxCapturedOutputBytes = getWorkerLimits().maxCapturedOutputBytes) {
|
|
107
|
+
const cap = (field, value) => {
|
|
108
|
+
assertCapturedOutputFits(field, value, maxCapturedOutputBytes);
|
|
109
|
+
};
|
|
105
110
|
return {
|
|
106
111
|
scope,
|
|
107
112
|
runSession: { timing },
|
|
108
113
|
logger: scope.logger,
|
|
109
114
|
// ── Final-result-return seams (recorded, replayed host-side) ──────────
|
|
110
115
|
render: (result) => {
|
|
116
|
+
cap('render', result);
|
|
111
117
|
acc.render = result;
|
|
112
118
|
return Promise.resolve();
|
|
113
119
|
},
|
|
114
120
|
emitJson: (value) => {
|
|
121
|
+
cap('json', value);
|
|
115
122
|
acc.json = value;
|
|
116
123
|
},
|
|
117
124
|
emitEnvelope: (envelope) => {
|
|
125
|
+
cap('envelope', envelope);
|
|
118
126
|
acc.envelope = envelope;
|
|
119
127
|
},
|
|
120
128
|
emitRaw: (value) => {
|
|
129
|
+
cap('raw', value);
|
|
121
130
|
acc.raw = value;
|
|
122
131
|
},
|
|
123
132
|
emitError: (detail) => {
|
|
@@ -128,6 +137,13 @@ export function buildWorkerContext(scope, timing, acc, rpcClient) {
|
|
|
128
137
|
...(detail.code === undefined ? {} : { code: detail.code }),
|
|
129
138
|
};
|
|
130
139
|
},
|
|
140
|
+
reportFailure: (detail) => {
|
|
141
|
+
const resolved = resolveReportFailure(detail);
|
|
142
|
+
const wire = toReportedFailureWire(resolved);
|
|
143
|
+
cap('reportedFailure', wire);
|
|
144
|
+
acc.reportedFailure = wire;
|
|
145
|
+
return Promise.resolve();
|
|
146
|
+
},
|
|
131
147
|
setExitCode: (code) => {
|
|
132
148
|
acc.exitCode = code;
|
|
133
149
|
},
|
|
@@ -144,13 +160,21 @@ export function buildWorkerContext(scope, timing, acc, rpcClient) {
|
|
|
144
160
|
},
|
|
145
161
|
}),
|
|
146
162
|
writeSarif: (envelope, path) => rpc(rpcClient, { seam: 'writeSarif', envelope, path }),
|
|
163
|
+
writeArtifact: (path, bytes) => rpc(rpcClient, { seam: 'writeArtifact', path, bytes }),
|
|
147
164
|
saveBaseline: (tool, envelope) => rpc(rpcClient, { seam: 'saveBaseline', tool, envelope }),
|
|
148
|
-
compareBaseline: (tool, envelope) => rpc(rpcClient, {
|
|
165
|
+
compareBaseline: (tool, envelope) => rpc(rpcClient, {
|
|
166
|
+
seam: 'compareBaseline',
|
|
167
|
+
tool,
|
|
168
|
+
envelope,
|
|
169
|
+
}),
|
|
149
170
|
exportBaselineSarif: (tool, path) => rpc(rpcClient, { seam: 'exportBaselineSarif', tool, path }),
|
|
150
171
|
exportBaselineFingerprints: (tool, path) => rpc(rpcClient, { seam: 'exportBaselineFingerprints', tool, path }),
|
|
151
172
|
maybeOpenReport: (opts) => rpc(rpcClient, {
|
|
152
173
|
seam: 'maybeOpenReport',
|
|
153
|
-
opts: {
|
|
174
|
+
opts: {
|
|
175
|
+
openRequested: opts.openRequested,
|
|
176
|
+
jsonOutput: opts.jsonOutput,
|
|
177
|
+
},
|
|
154
178
|
}),
|
|
155
179
|
toolState: buildToolStateRpc(rpcClient),
|
|
156
180
|
hostPlanes: buildHostPlanesRpc(rpcClient),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-command-worker-context.js","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"tool-command-worker-context.js","sourceRoot":"","sources":["../../src/bootstrap/tool-command-worker-context.ts"],"names":[],"mappings":"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"}
|