opensip-cli 0.1.1 → 0.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/dist/bootstrap/bind-tool-context.d.ts +16 -0
- package/dist/bootstrap/bind-tool-context.d.ts.map +1 -0
- package/dist/bootstrap/bind-tool-context.js +160 -0
- package/dist/bootstrap/bind-tool-context.js.map +1 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -1
- package/dist/bootstrap/build-per-run-scope.js +35 -2
- package/dist/bootstrap/build-per-run-scope.js.map +1 -1
- package/dist/bootstrap/bundled-tools.manifest.json +6 -0
- package/dist/bootstrap/deliver-envelope.d.ts +7 -0
- package/dist/bootstrap/deliver-envelope.d.ts.map +1 -1
- package/dist/bootstrap/deliver-envelope.js +18 -3
- package/dist/bootstrap/deliver-envelope.js.map +1 -1
- package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts +45 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts.map +1 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.js +108 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.js.map +1 -0
- package/dist/bootstrap/plan-pre-action-bootstrap.d.ts +45 -0
- package/dist/bootstrap/plan-pre-action-bootstrap.d.ts.map +1 -0
- package/dist/bootstrap/plan-pre-action-bootstrap.js +86 -0
- package/dist/bootstrap/plan-pre-action-bootstrap.js.map +1 -0
- package/dist/bootstrap/pre-action-bootstrap-phases.d.ts +20 -0
- package/dist/bootstrap/pre-action-bootstrap-phases.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-bootstrap-phases.js +25 -0
- package/dist/bootstrap/pre-action-bootstrap-phases.js.map +1 -0
- package/dist/bootstrap/pre-action-hook.d.ts +7 -61
- package/dist/bootstrap/pre-action-hook.d.ts.map +1 -1
- package/dist/bootstrap/pre-action-hook.js +34 -272
- package/dist/bootstrap/pre-action-hook.js.map +1 -1
- package/dist/bootstrap/pre-action-runtime.d.ts +9 -0
- package/dist/bootstrap/pre-action-runtime.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-runtime.js +2 -0
- package/dist/bootstrap/pre-action-runtime.js.map +1 -0
- package/dist/bootstrap/register-tools-bundled.d.ts +28 -0
- package/dist/bootstrap/register-tools-bundled.d.ts.map +1 -0
- package/dist/bootstrap/register-tools-bundled.js +107 -0
- package/dist/bootstrap/register-tools-bundled.js.map +1 -0
- package/dist/bootstrap/register-tools-discovery.d.ts +154 -0
- package/dist/bootstrap/register-tools-discovery.d.ts.map +1 -0
- package/dist/bootstrap/register-tools-discovery.js +385 -0
- package/dist/bootstrap/register-tools-discovery.js.map +1 -0
- package/dist/bootstrap/register-tools-mount.d.ts +25 -0
- package/dist/bootstrap/register-tools-mount.d.ts.map +1 -0
- package/dist/bootstrap/register-tools-mount.js +91 -0
- package/dist/bootstrap/register-tools-mount.js.map +1 -0
- package/dist/bootstrap/register-tools-shared.d.ts +40 -0
- package/dist/bootstrap/register-tools-shared.d.ts.map +1 -0
- package/dist/bootstrap/register-tools-shared.js +98 -0
- package/dist/bootstrap/register-tools-shared.js.map +1 -0
- package/dist/bootstrap/register-tools.d.ts +4 -215
- package/dist/bootstrap/register-tools.d.ts.map +1 -1
- package/dist/bootstrap/register-tools.js +4 -683
- package/dist/bootstrap/register-tools.js.map +1 -1
- package/dist/commands/mount-command-spec.d.ts +2 -1
- package/dist/commands/mount-command-spec.d.ts.map +1 -1
- package/dist/commands/mount-command-spec.js +3 -6
- package/dist/commands/mount-command-spec.js.map +1 -1
- package/dist/env/host-env-specs.d.ts +4 -3
- package/dist/env/host-env-specs.d.ts.map +1 -1
- package/dist/env/host-env-specs.js +8 -3
- package/dist/env/host-env-specs.js.map +1 -1
- package/package.json +33 -33
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bind-tool-context — mount-time guard for tool-scoped host planes.
|
|
3
|
+
*
|
|
4
|
+
* The host-owned baseline, toolState, governance, audit, and entitlement planes
|
|
5
|
+
* are all keyed by a `tool` string for backward compatibility with the public
|
|
6
|
+
* ToolCliContext. The mounted command already has an owning Tool, so bind that
|
|
7
|
+
* ownership into a thin context wrapper and reject accidental or malicious
|
|
8
|
+
* cross-tool keys before they reach persistence.
|
|
9
|
+
*/
|
|
10
|
+
import { type Tool, type ToolCliContext } from '@opensip-cli/core';
|
|
11
|
+
import type { RunActionHooks } from './run-plane.js';
|
|
12
|
+
type BoundToolCliContext = ToolCliContext & RunActionHooks;
|
|
13
|
+
export declare function toolOwnedKeys(tool: Tool): ReadonlySet<string>;
|
|
14
|
+
export declare function bindToolCliContext(tool: Tool, ctx: ToolCliContext): BoundToolCliContext;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=bind-tool-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind-tool-context.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bind-tool-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA2B,KAAK,IAAI,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,KAAK,mBAAmB,GAAG,cAAc,GAAG,cAAc,CAAC;AAM3D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAS7D;AAqGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,GAAG,mBAAmB,CA2DvF"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bind-tool-context — mount-time guard for tool-scoped host planes.
|
|
3
|
+
*
|
|
4
|
+
* The host-owned baseline, toolState, governance, audit, and entitlement planes
|
|
5
|
+
* are all keyed by a `tool` string for backward compatibility with the public
|
|
6
|
+
* ToolCliContext. The mounted command already has an owning Tool, so bind that
|
|
7
|
+
* ownership into a thin context wrapper and reject accidental or malicious
|
|
8
|
+
* cross-tool keys before they reach persistence.
|
|
9
|
+
*/
|
|
10
|
+
import { PluginIncompatibleError } from '@opensip-cli/core';
|
|
11
|
+
function primaryCommandName(tool) {
|
|
12
|
+
return tool.commandSpecs?.[0]?.name ?? tool.commands[0]?.name;
|
|
13
|
+
}
|
|
14
|
+
export function toolOwnedKeys(tool) {
|
|
15
|
+
return new Set([
|
|
16
|
+
tool.metadata.id,
|
|
17
|
+
tool.metadata.name,
|
|
18
|
+
primaryCommandName(tool),
|
|
19
|
+
tool.sessionReplay?.tool,
|
|
20
|
+
].filter((value) => typeof value === 'string' && value.length > 0));
|
|
21
|
+
}
|
|
22
|
+
function describeTool(tool) {
|
|
23
|
+
return tool.metadata.name || tool.metadata.id;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @throws {PluginIncompatibleError} When a mounted tool attempts to use a
|
|
27
|
+
* host-owned seam with another tool's namespace.
|
|
28
|
+
*/
|
|
29
|
+
function assertOwnToolKey(tool, allowed, requested, seam) {
|
|
30
|
+
if (allowed.has(requested))
|
|
31
|
+
return;
|
|
32
|
+
throw new PluginIncompatibleError(`tool '${describeTool(tool)}' attempted to use ${seam} for tool namespace '${requested}'. ` +
|
|
33
|
+
`Allowed namespaces: ${[...allowed].sort().join(', ')}.`, {
|
|
34
|
+
code: 'PLUGIN.IDENTITY_NAMESPACE_MISMATCH',
|
|
35
|
+
diagnostic: `cross-tool ${seam} namespace '${requested}'`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function wrapHostPlanes(tool, allowed, hostPlanes) {
|
|
39
|
+
if (hostPlanes === undefined)
|
|
40
|
+
return undefined;
|
|
41
|
+
const wrapped = {};
|
|
42
|
+
const governance = hostPlanes.governance;
|
|
43
|
+
if (governance !== undefined) {
|
|
44
|
+
wrapped.governance = {
|
|
45
|
+
getGovernanceState: (toolId) => {
|
|
46
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.getGovernanceState');
|
|
47
|
+
return governance.getGovernanceState(toolId);
|
|
48
|
+
},
|
|
49
|
+
listForProject: governance.listForProject.bind(governance),
|
|
50
|
+
queryAudit: (toolId, filter) => {
|
|
51
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.queryAudit');
|
|
52
|
+
return governance.queryAudit(toolId, filter);
|
|
53
|
+
},
|
|
54
|
+
recordInstallation: (toolId, record) => {
|
|
55
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.recordInstallation');
|
|
56
|
+
return governance.recordInstallation(toolId, record);
|
|
57
|
+
},
|
|
58
|
+
recordApprovalDecision: (toolId, decision) => {
|
|
59
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.recordApprovalDecision');
|
|
60
|
+
return governance.recordApprovalDecision(toolId, decision);
|
|
61
|
+
},
|
|
62
|
+
setBlock: (toolId, blocked, reason) => {
|
|
63
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.setBlock');
|
|
64
|
+
return governance.setBlock(toolId, blocked, reason);
|
|
65
|
+
},
|
|
66
|
+
checkAllowed: (toolId, action) => {
|
|
67
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.governance.checkAllowed');
|
|
68
|
+
return governance.checkAllowed(toolId, action);
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const audit = hostPlanes.audit;
|
|
73
|
+
if (audit !== undefined) {
|
|
74
|
+
wrapped.audit = {
|
|
75
|
+
append: (toolId, entry) => {
|
|
76
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.audit.append');
|
|
77
|
+
return audit.append(toolId, entry);
|
|
78
|
+
},
|
|
79
|
+
query: (toolId, filter) => {
|
|
80
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.audit.query');
|
|
81
|
+
return audit.query(toolId, filter);
|
|
82
|
+
},
|
|
83
|
+
...(audit.exportForCloud ? { exportForCloud: audit.exportForCloud.bind(audit) } : {}),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const entitlements = hostPlanes.entitlements;
|
|
87
|
+
if (entitlements !== undefined) {
|
|
88
|
+
wrapped.entitlements = {
|
|
89
|
+
check: (toolId, action) => {
|
|
90
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.entitlements.check');
|
|
91
|
+
return entitlements.check(toolId, action);
|
|
92
|
+
},
|
|
93
|
+
recordUsage: (toolId, usage) => {
|
|
94
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.entitlements.recordUsage');
|
|
95
|
+
return entitlements.recordUsage(toolId, usage);
|
|
96
|
+
},
|
|
97
|
+
getLicenseState: (toolId) => {
|
|
98
|
+
assertOwnToolKey(tool, allowed, toolId, 'hostPlanes.entitlements.getLicenseState');
|
|
99
|
+
return entitlements.getLicenseState(toolId);
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return wrapped;
|
|
104
|
+
}
|
|
105
|
+
export function bindToolCliContext(tool, ctx) {
|
|
106
|
+
const allowed = toolOwnedKeys(tool);
|
|
107
|
+
const source = ctx;
|
|
108
|
+
const bound = Object.defineProperties({}, Object.getOwnPropertyDescriptors(source));
|
|
109
|
+
Object.defineProperties(bound, {
|
|
110
|
+
saveBaseline: {
|
|
111
|
+
value: (toolId, envelope) => {
|
|
112
|
+
assertOwnToolKey(tool, allowed, toolId, 'saveBaseline');
|
|
113
|
+
return ctx.saveBaseline(toolId, envelope);
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
compareBaseline: {
|
|
117
|
+
value: (toolId, envelope) => {
|
|
118
|
+
assertOwnToolKey(tool, allowed, toolId, 'compareBaseline');
|
|
119
|
+
return ctx.compareBaseline(toolId, envelope);
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
exportBaselineSarif: {
|
|
123
|
+
value: (toolId, path) => {
|
|
124
|
+
assertOwnToolKey(tool, allowed, toolId, 'exportBaselineSarif');
|
|
125
|
+
return ctx.exportBaselineSarif(toolId, path);
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
exportBaselineFingerprints: {
|
|
129
|
+
value: (toolId, path) => {
|
|
130
|
+
assertOwnToolKey(tool, allowed, toolId, 'exportBaselineFingerprints');
|
|
131
|
+
return ctx.exportBaselineFingerprints(toolId, path);
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
toolState: {
|
|
135
|
+
value: {
|
|
136
|
+
get: (toolId, key) => {
|
|
137
|
+
assertOwnToolKey(tool, allowed, toolId, 'toolState.get');
|
|
138
|
+
return ctx.toolState.get(toolId, key);
|
|
139
|
+
},
|
|
140
|
+
put: (toolId, key, payload) => {
|
|
141
|
+
assertOwnToolKey(tool, allowed, toolId, 'toolState.put');
|
|
142
|
+
return ctx.toolState.put(toolId, key, payload);
|
|
143
|
+
},
|
|
144
|
+
delete: (toolId, key) => {
|
|
145
|
+
assertOwnToolKey(tool, allowed, toolId, 'toolState.delete');
|
|
146
|
+
return ctx.toolState.delete(toolId, key);
|
|
147
|
+
},
|
|
148
|
+
list: (toolId) => {
|
|
149
|
+
assertOwnToolKey(tool, allowed, toolId, 'toolState.list');
|
|
150
|
+
return ctx.toolState.list(toolId);
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
hostPlanes: {
|
|
155
|
+
value: wrapHostPlanes(tool, allowed, ctx.hostPlanes),
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
return bound;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=bind-tool-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind-tool-context.js","sourceRoot":"","sources":["../../src/bootstrap/bind-tool-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-per-run-scope.d.ts","sourceRoot":"","sources":["../../src/bootstrap/build-per-run-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"build-per-run-scope.d.ts","sourceRoot":"","sources":["../../src/bootstrap/build-per-run-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EAEX,KAAK,cAAc,EAEnB,QAAQ,EAGR,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAoDzD,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;QACrC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAClD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,QAAQ,CAqIvE"}
|
|
@@ -19,11 +19,44 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { join } from 'node:path';
|
|
21
21
|
import { resolveEffectiveCloudConfig } from '@opensip-cli/config';
|
|
22
|
-
import { createCapabilityRegistry, resolveUserPaths, RunScope, } from '@opensip-cli/core';
|
|
22
|
+
import { createCapabilityRegistry, PluginIncompatibleError, resolveUserPaths, RunScope, } from '@opensip-cli/core';
|
|
23
23
|
import { resolveSignalSink } from '@opensip-cli/output';
|
|
24
24
|
import { buildDatastoreThunk } from '../cli-context.js';
|
|
25
25
|
import { buildTargets } from './build-targets.js';
|
|
26
26
|
import { composeAndValidateToolConfig, wireCapabilityRegistry } from './config-and-capabilities.js';
|
|
27
|
+
const FORBIDDEN_SCOPE_CONTRIBUTION_KEYS = new Set(['__proto__', 'prototype', 'constructor']);
|
|
28
|
+
/**
|
|
29
|
+
* @throws {PluginIncompatibleError} When a tool returns an invalid scope
|
|
30
|
+
* contribution or attempts to overwrite an existing scope key.
|
|
31
|
+
*/
|
|
32
|
+
function installScopeContribution(scope, tool, contribution) {
|
|
33
|
+
if (typeof contribution !== 'object' || contribution === null || Array.isArray(contribution)) {
|
|
34
|
+
throw new PluginIncompatibleError(`tool '${tool.metadata.name || tool.metadata.id}' returned a non-object scope contribution`, {
|
|
35
|
+
code: 'PLUGIN.SCOPE_CONTRIBUTION_INVALID',
|
|
36
|
+
diagnostic: 'contributeScope must return a plain object',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
for (const key of Object.keys(contribution)) {
|
|
40
|
+
if (FORBIDDEN_SCOPE_CONTRIBUTION_KEYS.has(key)) {
|
|
41
|
+
throw new PluginIncompatibleError(`tool '${tool.metadata.name || tool.metadata.id}' returned forbidden scope key '${key}'`, {
|
|
42
|
+
code: 'PLUGIN.SCOPE_CONTRIBUTION_FORBIDDEN_KEY',
|
|
43
|
+
diagnostic: `forbidden scope key '${key}'`,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// `key in scope` (not `hasOwnProperty`) so prototype members are protected
|
|
47
|
+
// too: `RunScope.dispose()` lives on the prototype, and an own-property
|
|
48
|
+
// shadow would silently hijack `disposeCurrentScope()`. This also rejects
|
|
49
|
+
// `Object.prototype` names; no namespaced tool subscope key collides with
|
|
50
|
+
// those, so the stricter check has no legitimate false positive.
|
|
51
|
+
if (key in scope) {
|
|
52
|
+
throw new PluginIncompatibleError(`tool '${tool.metadata.name || tool.metadata.id}' attempted to overwrite scope key '${key}'`, {
|
|
53
|
+
code: 'PLUGIN.SCOPE_CONTRIBUTION_COLLISION',
|
|
54
|
+
diagnostic: `scope key '${key}' already exists`,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
Object.assign(scope, contribution);
|
|
59
|
+
}
|
|
27
60
|
/**
|
|
28
61
|
* Build the per-run RunScope + perform the post-construction wiring
|
|
29
62
|
* (contributeScope, capabilities, toolConfig, targets).
|
|
@@ -100,7 +133,7 @@ export function buildPerRunScope(input) {
|
|
|
100
133
|
for (const tool of tools.list()) {
|
|
101
134
|
const contribution = tool.contributeScope?.();
|
|
102
135
|
if (contribution)
|
|
103
|
-
|
|
136
|
+
installScopeContribution(scope, tool, contribution);
|
|
104
137
|
}
|
|
105
138
|
// §5.3 Phase 4: per-run capability registry (manifest domains → real registrars).
|
|
106
139
|
const capabilities = wireCapabilityRegistry({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-per-run-scope.js","sourceRoot":"","sources":["../../src/bootstrap/build-per-run-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"build-per-run-scope.js","sourceRoot":"","sources":["../../src/bootstrap/build-per-run-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./bundled-tools.manifest.schema.json",
|
|
3
|
+
"comment": "Data-driven source for first-party bundled tools. Edit this when adding a new bundled tool (see contributor docs). The CLI composition root loads it at runtime (via require) so BUNDLED_TOOL_PACKAGES and EXPECTED_SCAFFOLDING_TOOL_IDS are derived, not hand-maintained.",
|
|
4
|
+
"bundledPackages": ["@opensip-cli/fitness", "@opensip-cli/simulation", "@opensip-cli/graph"],
|
|
5
|
+
"scaffoldingToolIds": ["fitness", "simulation"]
|
|
6
|
+
}
|
|
@@ -61,6 +61,13 @@ export type DeliverEnvelopeResult = SignalDeliveryResult;
|
|
|
61
61
|
* add repo identity, preserve the run identity, drop `verdict`/`units`.
|
|
62
62
|
*/
|
|
63
63
|
export declare function envelopeToSignalBatch(envelope: SignalEnvelope, repo: RepoIdentity): SignalBatch;
|
|
64
|
+
/**
|
|
65
|
+
* Pure seam for the report-upload vs findings-failure exit precedence (ADR-0008 / Task 1).
|
|
66
|
+
* Extracted so the matrix is unit-testable without IO / full deliverEnvelope.
|
|
67
|
+
* A report failure (exit 4) is only honoured when the run otherwise passed
|
|
68
|
+
* (real findings / gate / override failure always dominates; last-write-wins on RUNTIME_ERROR).
|
|
69
|
+
*/
|
|
70
|
+
export declare function deriveReportExitDecision(reportTo: string | undefined, reportSuccess: boolean, runFailed: boolean): number | undefined;
|
|
64
71
|
/**
|
|
65
72
|
* The root's post-run signal-delivery step. Emits the envelope to the cloud
|
|
66
73
|
* sink (best-effort) and, when `--report-to` is set, uploads its SARIF
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver-envelope.d.ts","sourceRoot":"","sources":["../../src/bootstrap/deliver-envelope.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIjG,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAS/F;
|
|
1
|
+
{"version":3,"file":"deliver-envelope.d.ts","sourceRoot":"","sources":["../../src/bootstrap/deliver-envelope.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIjG,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAS/F;AAmED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAMpB;AAyBD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CA2EhC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9F"}
|
|
@@ -100,6 +100,20 @@ async function emitToCloud(envelope, repo, log) {
|
|
|
100
100
|
return { accepted: 0, skippedReason: 'error' };
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Pure seam for the report-upload vs findings-failure exit precedence (ADR-0008 / Task 1).
|
|
105
|
+
* Extracted so the matrix is unit-testable without IO / full deliverEnvelope.
|
|
106
|
+
* A report failure (exit 4) is only honoured when the run otherwise passed
|
|
107
|
+
* (real findings / gate / override failure always dominates; last-write-wins on RUNTIME_ERROR).
|
|
108
|
+
*/
|
|
109
|
+
export function deriveReportExitDecision(reportTo, reportSuccess, runFailed) {
|
|
110
|
+
if (reportTo === undefined || reportTo.length === 0)
|
|
111
|
+
return undefined;
|
|
112
|
+
if (!reportSuccess && !runFailed) {
|
|
113
|
+
return EXIT_CODES.REPORT_FAILED;
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
103
117
|
/** POST the envelope's SARIF to a `--report-to` receiver via the chunked transport. */
|
|
104
118
|
async function reportSarif(envelope, url, apiKey, fetchImpl) {
|
|
105
119
|
const sarif = formatSignalSarif(envelope);
|
|
@@ -168,9 +182,10 @@ export async function deliverEnvelope(envelope, opts) {
|
|
|
168
182
|
}
|
|
169
183
|
// Exit-code contract (ADR-0008): a report-upload failure exits 4 — but only
|
|
170
184
|
// when the run otherwise passed; a real failure (`runFailed`, derived from the
|
|
171
|
-
// verdict above) dominates.
|
|
172
|
-
|
|
173
|
-
|
|
185
|
+
// verdict above) dominates. Uses the extracted pure seam for the matrix.
|
|
186
|
+
const reportExit = deriveReportExitDecision(opts.reportTo, reportSuccess, runFailed);
|
|
187
|
+
if (reportExit !== undefined) {
|
|
188
|
+
opts.setExitCode?.(reportExit);
|
|
174
189
|
}
|
|
175
190
|
void scope?.diagnostics.event('deliver', reportSuccess ? 'info' : 'warn', `report-to ${reportSuccess ? 'succeeded' : 'failed'}`, {
|
|
176
191
|
url: opts.reportTo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver-envelope.js","sourceRoot":"","sources":["../../src/bootstrap/deliver-envelope.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deliver-envelope.js","sourceRoot":"","sources":["../../src/bootstrap/deliver-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute-post-bailout-bootstrap — post-bailout phases 5–9 (ADR-0052).
|
|
3
|
+
*
|
|
4
|
+
* Side effects after the bailout window: per-run logger, scope build/enter,
|
|
5
|
+
* host start effects, and tool preflight. Injectable deps support table-driven
|
|
6
|
+
* phase-order tests without Commander.
|
|
7
|
+
*/
|
|
8
|
+
import { createRunLogger, enterScope, type Logger, type RunScope } from '@opensip-cli/core';
|
|
9
|
+
import { startProfiling } from '../telemetry/profiling.js';
|
|
10
|
+
import { checkForUpdate } from '../update-notifier.js';
|
|
11
|
+
import { buildPerRunScope } from './build-per-run-scope.js';
|
|
12
|
+
import { loadOwningToolCapabilities } from './load-tool-capabilities.js';
|
|
13
|
+
import { maybeInitializeOwningTool, resolveOwningTool } from './owning-tool-init.js';
|
|
14
|
+
import type { PreActionBootstrapPlan } from './plan-pre-action-bootstrap.js';
|
|
15
|
+
import type { PreActionRuntime } from './pre-action-runtime.js';
|
|
16
|
+
/** Recorded phase transitions for ordering tests. */
|
|
17
|
+
export type PhaseRecorder = (phase: string) => void;
|
|
18
|
+
export interface PostBailoutBootstrapInput {
|
|
19
|
+
readonly plan: PreActionBootstrapPlan;
|
|
20
|
+
readonly runtime: PreActionRuntime;
|
|
21
|
+
readonly version: string;
|
|
22
|
+
readonly noCloud: boolean;
|
|
23
|
+
readonly apiKey?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface PostBailoutBootstrapDeps {
|
|
26
|
+
readonly recordPhase?: PhaseRecorder;
|
|
27
|
+
readonly createRunLogger?: typeof createRunLogger;
|
|
28
|
+
readonly buildPerRunScope?: typeof buildPerRunScope;
|
|
29
|
+
readonly enterScope?: typeof enterScope;
|
|
30
|
+
readonly checkForUpdate?: typeof checkForUpdate;
|
|
31
|
+
readonly startProfiling?: typeof startProfiling;
|
|
32
|
+
readonly maybeInitializeOwningTool?: typeof maybeInitializeOwningTool;
|
|
33
|
+
readonly loadOwningToolCapabilities?: typeof loadOwningToolCapabilities;
|
|
34
|
+
readonly resolveOwningTool?: typeof resolveOwningTool;
|
|
35
|
+
}
|
|
36
|
+
export interface PostBailoutBootstrapResult {
|
|
37
|
+
readonly scope: RunScope;
|
|
38
|
+
readonly runLogger: Logger;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Run post-bailout bootstrap phases. Returns the entered scope and its
|
|
42
|
+
* per-run logger (ADR-0053).
|
|
43
|
+
*/
|
|
44
|
+
export declare function executePostBailoutBootstrap(input: PostBailoutBootstrapInput, deps?: PostBailoutBootstrapDeps): Promise<PostBailoutBootstrapResult>;
|
|
45
|
+
//# sourceMappingURL=execute-post-bailout-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-post-bailout-bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EAEf,UAAU,EAGV,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACtE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAyBD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,yBAAyB,EAChC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAiGrC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// @fitness-ignore-file detached-promises -- phase recorder, diagnostics, OTel meter, logger, and enterScope calls are synchronous; the async tool lifecycle calls are awaited below.
|
|
2
|
+
/**
|
|
3
|
+
* execute-post-bailout-bootstrap — post-bailout phases 5–9 (ADR-0052).
|
|
4
|
+
*
|
|
5
|
+
* Side effects after the bailout window: per-run logger, scope build/enter,
|
|
6
|
+
* host start effects, and tool preflight. Injectable deps support table-driven
|
|
7
|
+
* phase-order tests without Commander.
|
|
8
|
+
*/
|
|
9
|
+
import { createRunLogger, currentScope, enterScope, getMeter, SystemError, } from '@opensip-cli/core';
|
|
10
|
+
import { startProfiling } from '../telemetry/profiling.js';
|
|
11
|
+
import { checkForUpdate, formatUpdateNag } from '../update-notifier.js';
|
|
12
|
+
import { buildPerRunScope } from './build-per-run-scope.js';
|
|
13
|
+
import { loadOwningToolCapabilities } from './load-tool-capabilities.js';
|
|
14
|
+
import { maybeInitializeOwningTool, resolveOwningTool } from './owning-tool-init.js';
|
|
15
|
+
import { PRE_ACTION_PHASES } from './pre-action-bootstrap-phases.js';
|
|
16
|
+
const MODULE_TAG = 'cli:bootstrap';
|
|
17
|
+
const CLI_PACKAGE_NAME = 'opensip-cli';
|
|
18
|
+
function noopPhaseRecord() {
|
|
19
|
+
// Default when callers omit recordPhase (production hook path).
|
|
20
|
+
}
|
|
21
|
+
const defaultDeps = {
|
|
22
|
+
createRunLogger,
|
|
23
|
+
buildPerRunScope,
|
|
24
|
+
enterScope,
|
|
25
|
+
checkForUpdate,
|
|
26
|
+
startProfiling,
|
|
27
|
+
maybeInitializeOwningTool,
|
|
28
|
+
loadOwningToolCapabilities,
|
|
29
|
+
resolveOwningTool,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Run post-bailout bootstrap phases. Returns the entered scope and its
|
|
33
|
+
* per-run logger (ADR-0053).
|
|
34
|
+
*/
|
|
35
|
+
export async function executePostBailoutBootstrap(input, deps = {}) {
|
|
36
|
+
const d = { ...defaultDeps, ...deps };
|
|
37
|
+
const record = deps.recordPhase ?? noopPhaseRecord;
|
|
38
|
+
const { plan, runtime, version, noCloud, apiKey } = input;
|
|
39
|
+
const { languages, tools, manifests, provenance } = runtime;
|
|
40
|
+
record(PRE_ACTION_PHASES.projectSideEffects);
|
|
41
|
+
const runLogger = d.createRunLogger(plan.runLoggerOptions);
|
|
42
|
+
const bannerSize = plan.cliDefaults.ui?.banner ?? 'mini';
|
|
43
|
+
const update = d.checkForUpdate({ name: CLI_PACKAGE_NAME, version });
|
|
44
|
+
if (update && (bannerSize !== 'mini' || plan.jsonOutput)) {
|
|
45
|
+
process.stderr.write(formatUpdateNag(version, update));
|
|
46
|
+
}
|
|
47
|
+
record(PRE_ACTION_PHASES.buildScope);
|
|
48
|
+
const scope = d.buildPerRunScope({
|
|
49
|
+
project: plan.project,
|
|
50
|
+
runId: plan.runId,
|
|
51
|
+
cwd: plan.cwd,
|
|
52
|
+
cliDefaults: plan.cliDefaults,
|
|
53
|
+
registries: { languages, tools },
|
|
54
|
+
manifests,
|
|
55
|
+
provenance,
|
|
56
|
+
apiKey,
|
|
57
|
+
noCloud,
|
|
58
|
+
logger: runLogger,
|
|
59
|
+
ui: { version, update },
|
|
60
|
+
});
|
|
61
|
+
record(PRE_ACTION_PHASES.enterScope);
|
|
62
|
+
d.enterScope(scope); // resilience-ok: Commander postAction in pre-action-hook.ts disposes the entered RunScope after the action completes.
|
|
63
|
+
if (!currentScope()) {
|
|
64
|
+
throw new SystemError('Scope was not entered before command dispatch', {
|
|
65
|
+
code: 'SYSTEM.SCOPE.NOT_ENTERED',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
record(PRE_ACTION_PHASES.hostStartEffects);
|
|
69
|
+
scope.diagnostics.event('load', 'debug', `${tools.list().length} tool(s) loaded`);
|
|
70
|
+
scope.diagnostics.counter('tools.loaded', tools.list().length);
|
|
71
|
+
getMeter('opensip-cli').createCounter('opensip_cli.commands.started').add(1, {
|
|
72
|
+
command: plan.commandName,
|
|
73
|
+
});
|
|
74
|
+
scope.diagnostics.event('validate', 'debug', `project config resolved (scope: ${plan.project.scope})`);
|
|
75
|
+
runLogger.info({
|
|
76
|
+
evt: 'cli.run.start',
|
|
77
|
+
module: MODULE_TAG,
|
|
78
|
+
runId: plan.runId,
|
|
79
|
+
command: plan.commandName,
|
|
80
|
+
cwd: plan.cwd,
|
|
81
|
+
projectRoot: plan.project.projectRoot,
|
|
82
|
+
scope: plan.project.scope,
|
|
83
|
+
});
|
|
84
|
+
if (plan.project.walkedUp > 0) {
|
|
85
|
+
runLogger.info({
|
|
86
|
+
evt: 'cli.project.discovered',
|
|
87
|
+
module: MODULE_TAG,
|
|
88
|
+
runId: plan.runId,
|
|
89
|
+
cwd: plan.cwd,
|
|
90
|
+
projectRoot: plan.project.projectRoot,
|
|
91
|
+
walkedUp: plan.project.walkedUp,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
d.startProfiling(scope, plan.commandName);
|
|
95
|
+
record(PRE_ACTION_PHASES.toolPreflight);
|
|
96
|
+
await d.maybeInitializeOwningTool(tools, plan.commandName, plan.runId);
|
|
97
|
+
const driven = await d.loadOwningToolCapabilities({
|
|
98
|
+
owningTool: d.resolveOwningTool(tools, plan.commandName),
|
|
99
|
+
projectDir: plan.project.projectRoot,
|
|
100
|
+
configPath: plan.project.scope === 'project' ? plan.project.configPath : undefined,
|
|
101
|
+
});
|
|
102
|
+
if (driven > 0) {
|
|
103
|
+
scope.diagnostics.event('load', 'debug', `drove ${String(driven)} owning-tool capability domain(s) (see per-domain 'capability ... loaded' events for contribution counts + errors)`);
|
|
104
|
+
scope.diagnostics.counter('capabilities.driven', driven);
|
|
105
|
+
}
|
|
106
|
+
return { scope, runLogger };
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=execute-post-bailout-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-post-bailout-bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plan-pre-action-bootstrap — pure planner for the pre-action bootstrap
|
|
3
|
+
* phases through the bailout window (ADR-0052).
|
|
4
|
+
*
|
|
5
|
+
* Does NOT mutate the process-wide logger, enter a scope, or open a
|
|
6
|
+
* datastore. Returns a {@link PreActionBootstrapPlan} the hook (or tests)
|
|
7
|
+
* pass to the post-bailout executor.
|
|
8
|
+
*/
|
|
9
|
+
import { type LoggerOptions, type ProjectContext, type ToolRegistry } from '@opensip-cli/core';
|
|
10
|
+
import { PRE_ACTION_PHASES } from './pre-action-bootstrap-phases.js';
|
|
11
|
+
import type { loadCliDefaults as loadCliDefaultsFn } from './cli-defaults.js';
|
|
12
|
+
export interface PlanPreActionBootstrapInput {
|
|
13
|
+
readonly opts: Record<string, unknown>;
|
|
14
|
+
readonly cwd: string;
|
|
15
|
+
readonly cwdExplicit: boolean;
|
|
16
|
+
readonly runId: string;
|
|
17
|
+
readonly commandName: string;
|
|
18
|
+
readonly explicitConfigPath?: string;
|
|
19
|
+
readonly tools: ToolRegistry;
|
|
20
|
+
}
|
|
21
|
+
export interface PreActionBootstrapPlan {
|
|
22
|
+
readonly runId: string;
|
|
23
|
+
readonly cwd: string;
|
|
24
|
+
readonly cwdExplicit: boolean;
|
|
25
|
+
readonly opts: Record<string, unknown>;
|
|
26
|
+
readonly cliDefaults: ReturnType<typeof loadCliDefaultsFn>;
|
|
27
|
+
readonly project: ProjectContext;
|
|
28
|
+
readonly commandName: string;
|
|
29
|
+
readonly extraAgnostic: ReadonlySet<string>;
|
|
30
|
+
readonly jsonOutput: boolean;
|
|
31
|
+
/** Per-run logger options computed after bailouts (ADR-0053). */
|
|
32
|
+
readonly runLoggerOptions: LoggerOptions;
|
|
33
|
+
readonly completedThrough: typeof PRE_ACTION_PHASES.bailoutWindow;
|
|
34
|
+
}
|
|
35
|
+
/** Collect tool CommandSpecs that declare `scope: 'none'` for no-project guard. */
|
|
36
|
+
export declare function collectExtraAgnosticCommands(tools: ToolRegistry): ReadonlySet<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Plan phases 1–4 (read options through bailout window). Throws
|
|
39
|
+
* {@link BootstrapError} on config-resolve or bailout failures.
|
|
40
|
+
*
|
|
41
|
+
* @throws {BootstrapError} When config resolution fails or an early bootstrap
|
|
42
|
+
* guard bails out before project side effects are allowed.
|
|
43
|
+
*/
|
|
44
|
+
export declare function planPreActionBootstrap(input: PlanPreActionBootstrapInput): PreActionBootstrapPlan;
|
|
45
|
+
//# sourceMappingURL=plan-pre-action-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-pre-action-bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/plan-pre-action-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAOrE,OAAO,KAAK,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,iBAAiB,CAAC,aAAa,CAAC;CACnE;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAarF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,sBAAsB,CAsDjG"}
|