@opensip-cli/checks-typescript 0.1.8 โ 0.1.10
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/README.md +2 -2
- package/dist/__tests__/command-handler-host-owned-output.test.d.ts +2 -0
- package/dist/__tests__/command-handler-host-owned-output.test.d.ts.map +1 -0
- package/dist/__tests__/command-handler-host-owned-output.test.js +85 -0
- package/dist/__tests__/command-handler-host-owned-output.test.js.map +1 -0
- package/dist/__tests__/host-tool-runtime-import-boundary.test.js +69 -12
- package/dist/__tests__/host-tool-runtime-import-boundary.test.js.map +1 -1
- package/dist/checks/architecture/command-handler-host-owned-output.d.ts +25 -0
- package/dist/checks/architecture/command-handler-host-owned-output.d.ts.map +1 -0
- package/dist/checks/architecture/command-handler-host-owned-output.js +165 -0
- package/dist/checks/architecture/command-handler-host-owned-output.js.map +1 -0
- package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts +24 -7
- package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts.map +1 -1
- package/dist/checks/architecture/host-tool-runtime-import-boundary.js +114 -33
- package/dist/checks/architecture/host-tool-runtime-import-boundary.js.map +1 -1
- package/dist/checks/architecture/index.d.ts +30 -0
- package/dist/checks/architecture/index.d.ts.map +1 -1
- package/dist/checks/architecture/index.js +30 -0
- package/dist/checks/architecture/index.js.map +1 -1
- package/dist/checks/resilience/detached-promises.d.ts.map +1 -1
- package/dist/checks/resilience/detached-promises.js +4 -0
- package/dist/checks/resilience/detached-promises.js.map +1 -1
- package/dist/display/architecture.d.ts.map +1 -1
- package/dist/display/architecture.js +1 -0
- package/dist/display/architecture.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -23,8 +23,8 @@ This package is published for the CLI and advanced plugin authors; most users sh
|
|
|
23
23
|
## Documentation
|
|
24
24
|
|
|
25
25
|
- ๐ Project docs: https://opensip.ai/docs/opensip-cli/
|
|
26
|
-
- ๐งญ Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.
|
|
27
|
-
- ๐ฆ Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.
|
|
26
|
+
- ๐งญ Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.10/docs/public/70-reference/02-package-catalog.md
|
|
27
|
+
- ๐ฆ Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.10/packages/fitness/checks-typescript
|
|
28
28
|
|
|
29
29
|
## License
|
|
30
30
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler-host-owned-output.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/command-handler-host-owned-output.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Behaviour tests for the command-handler-host-owned-output
|
|
3
|
+
* seam-discipline check: a tool command handler must let the host own rendering
|
|
4
|
+
* and exit (no direct stdout/console/process.exit) unless it declares
|
|
5
|
+
* output:'raw-stream'.
|
|
6
|
+
*/
|
|
7
|
+
import { runCheckOnFixture } from '@opensip-cli/test-support';
|
|
8
|
+
import { describe, expect, it } from 'vitest';
|
|
9
|
+
import { analyzeCommandHandlerHostOwnedOutput } from '../checks/architecture/command-handler-host-owned-output.js';
|
|
10
|
+
import { checks } from '../index.js';
|
|
11
|
+
const TOOL_PATH = 'src/audit-sec.ts';
|
|
12
|
+
function check() {
|
|
13
|
+
const c = checks.find((x) => x.config.slug === 'command-handler-host-owned-output');
|
|
14
|
+
if (!c)
|
|
15
|
+
throw new Error('check not found: command-handler-host-owned-output');
|
|
16
|
+
return c;
|
|
17
|
+
}
|
|
18
|
+
async function findingsFor(file) {
|
|
19
|
+
const run = await runCheckOnFixture(check(), { files: [file] });
|
|
20
|
+
return run.findings.length;
|
|
21
|
+
}
|
|
22
|
+
function spec(output, handlerBody, rawStreamReason) {
|
|
23
|
+
const reason = rawStreamReason ? ` rawStreamReason: '${rawStreamReason}',\n` : '';
|
|
24
|
+
return [
|
|
25
|
+
"import { defineCommand } from '@opensip-cli/core';",
|
|
26
|
+
'export const s = defineCommand({',
|
|
27
|
+
" name: 'audit-sec',",
|
|
28
|
+
" description: 'Run',",
|
|
29
|
+
" commonFlags: ['cwd'],",
|
|
30
|
+
" scope: 'project',",
|
|
31
|
+
` output: '${output}',`,
|
|
32
|
+
reason,
|
|
33
|
+
' handler: async (opts, cli) => {',
|
|
34
|
+
handlerBody,
|
|
35
|
+
' },',
|
|
36
|
+
'});',
|
|
37
|
+
].join('\n');
|
|
38
|
+
}
|
|
39
|
+
describe('analyzeCommandHandlerHostOwnedOutput (AST)', () => {
|
|
40
|
+
it('flags process.stdout.write inside a command-result handler', () => {
|
|
41
|
+
const v = analyzeCommandHandlerHostOwnedOutput(spec('command-result', " process.stdout.write('x');\n return cli;"), TOOL_PATH);
|
|
42
|
+
expect(v).toHaveLength(1);
|
|
43
|
+
expect(v[0]?.message).toContain('process.stdout.write');
|
|
44
|
+
});
|
|
45
|
+
it('flags console.log and process.exit inside a signal-envelope handler', () => {
|
|
46
|
+
const v = analyzeCommandHandlerHostOwnedOutput(spec('signal-envelope', " console.log('x');\n process.exit(1);"), TOOL_PATH);
|
|
47
|
+
expect(v).toHaveLength(2);
|
|
48
|
+
});
|
|
49
|
+
it('does NOT flag a handler that routes through the cli context', () => {
|
|
50
|
+
const v = analyzeCommandHandlerHostOwnedOutput(spec('command-result', ' cli.setExitCode(0);\n return { passed: true };'), TOOL_PATH);
|
|
51
|
+
expect(v).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
it('does NOT flag stdout when the command declares output:raw-stream (escape hatch)', () => {
|
|
54
|
+
const v = analyzeCommandHandlerHostOwnedOutput(spec('raw-stream', " process.stdout.write('x');", 'file-export'), TOOL_PATH);
|
|
55
|
+
expect(v).toEqual([]);
|
|
56
|
+
});
|
|
57
|
+
it('does NOT flag process.exit outside any command handler', () => {
|
|
58
|
+
const v = analyzeCommandHandlerHostOwnedOutput([
|
|
59
|
+
'export function worker(): void {',
|
|
60
|
+
' process.stdout.write("ipc");',
|
|
61
|
+
' process.exit(0);',
|
|
62
|
+
'}',
|
|
63
|
+
].join('\n'), TOOL_PATH);
|
|
64
|
+
expect(v).toEqual([]);
|
|
65
|
+
});
|
|
66
|
+
it('flags stdout in an inline callback nested inside the handler body', () => {
|
|
67
|
+
const v = analyzeCommandHandlerHostOwnedOutput(spec('command-result', ' [1].forEach(() => process.stdout.write("x"));\n return cli;'), TOOL_PATH);
|
|
68
|
+
expect(v).toHaveLength(1);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('command-handler-host-owned-output (gate)', () => {
|
|
72
|
+
it('flags a command-result handler writing to stdout', async () => {
|
|
73
|
+
expect(await findingsFor({
|
|
74
|
+
path: TOOL_PATH,
|
|
75
|
+
content: spec('command-result', " process.stdout.write('x');\n return cli;"),
|
|
76
|
+
})).toBeGreaterThanOrEqual(1);
|
|
77
|
+
});
|
|
78
|
+
it('does NOT flag a raw-stream handler writing to stdout', async () => {
|
|
79
|
+
expect(await findingsFor({
|
|
80
|
+
path: TOOL_PATH,
|
|
81
|
+
content: spec('raw-stream', " process.stdout.write('x');", 'worker-ipc'),
|
|
82
|
+
})).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=command-handler-host-owned-output.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler-host-owned-output.test.js","sourceRoot":"","sources":["../../src/__tests__/command-handler-host-owned-output.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Behaviour tests for the ADR-0054 host-process tool
|
|
3
|
-
* import boundary check.
|
|
2
|
+
* @fileoverview Behaviour tests for the ADR-0054 M4-G CAPSTONE host-process tool
|
|
3
|
+
* runtime import boundary check. After the capstone: external runtimes never
|
|
4
|
+
* import in the host; `importToolRuntime` stays in the admission/discovery
|
|
5
|
+
* boundary; host imports are bundled-only; the external worker policy is confined
|
|
6
|
+
* to the worker-owned plane.
|
|
4
7
|
*/
|
|
5
8
|
import { runCheckOnFixture } from '@opensip-cli/test-support';
|
|
6
9
|
import { describe, expect, it } from 'vitest';
|
|
7
10
|
import { analyzeHostToolRuntimeImportBoundary } from '../checks/architecture/host-tool-runtime-import-boundary.js';
|
|
8
11
|
import { checks } from '../index.js';
|
|
9
|
-
const DISCOVERY_PATH = 'packages/cli/src/bootstrap/register-tools.ts';
|
|
12
|
+
const DISCOVERY_PATH = 'packages/cli/src/bootstrap/register-tools-discovery.ts';
|
|
13
|
+
const REGISTER_TOOLS_PATH = 'packages/cli/src/bootstrap/register-tools.ts';
|
|
10
14
|
const ADMISSION_PATH = 'packages/cli/src/bootstrap/admit-tool-package.ts';
|
|
15
|
+
const WORKER_ENTRY_PATH = 'packages/cli/src/bootstrap/tool-command-worker-entry.ts';
|
|
11
16
|
const OTHER_CLI_PATH = 'packages/cli/src/commands/plugin.ts';
|
|
12
17
|
function check() {
|
|
13
18
|
const c = checks.find((x) => x.config.slug === 'host-tool-runtime-import-boundary');
|
|
@@ -19,17 +24,48 @@ async function findingsFor(file) {
|
|
|
19
24
|
const run = await runCheckOnFixture(check(), { files: [file] });
|
|
20
25
|
return run.findings.length;
|
|
21
26
|
}
|
|
22
|
-
describe('analyzeHostToolRuntimeImportBoundary (AST)', () => {
|
|
23
|
-
it('allows
|
|
27
|
+
describe('analyzeHostToolRuntimeImportBoundary (AST, M4-G capstone)', () => {
|
|
28
|
+
it('allows a BUNDLED host import in the discovery boundary', () => {
|
|
24
29
|
const v = analyzeHostToolRuntimeImportBoundary([
|
|
25
30
|
"import { hostRuntimeImportPolicyFor, importToolRuntime } from './admit-tool-package.js';",
|
|
26
31
|
'export async function load(dir: string) {',
|
|
27
|
-
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('
|
|
32
|
+
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('bundled'));",
|
|
28
33
|
'}',
|
|
29
34
|
].join('\n'), DISCOVERY_PATH);
|
|
30
35
|
expect(v).toEqual([]);
|
|
31
36
|
});
|
|
32
|
-
it(
|
|
37
|
+
it("allows a literal { source: 'bundled' } host import", () => {
|
|
38
|
+
const v = analyzeHostToolRuntimeImportBoundary([
|
|
39
|
+
"import { importToolRuntime } from './admit-tool-package.js';",
|
|
40
|
+
'export async function load(dir: string) {',
|
|
41
|
+
" return importToolRuntime(dir, { source: 'bundled' });",
|
|
42
|
+
'}',
|
|
43
|
+
].join('\n'), REGISTER_TOOLS_PATH);
|
|
44
|
+
expect(v).toEqual([]);
|
|
45
|
+
});
|
|
46
|
+
it('allows the WORKER policy on the worker-owned plane (discovery file)', () => {
|
|
47
|
+
const v = analyzeHostToolRuntimeImportBoundary([
|
|
48
|
+
"import { importToolRuntime, workerRuntimeImportPolicyFor } from './admit-tool-package.js';",
|
|
49
|
+
'export async function load(dir: string, source: ToolSource) {',
|
|
50
|
+
' return importToolRuntime(dir, workerRuntimeImportPolicyFor(source));',
|
|
51
|
+
'}',
|
|
52
|
+
].join('\n'), DISCOVERY_PATH);
|
|
53
|
+
expect(v).toEqual([]);
|
|
54
|
+
});
|
|
55
|
+
it('FLAGS the WORKER policy in an allowlisted-callsite that is NOT on the worker plane (register-tools)', () => {
|
|
56
|
+
// register-tools.ts may call importToolRuntime (it bootstraps BUNDLED tools)
|
|
57
|
+
// but must pass a bundled policy โ the worker policy would import an external
|
|
58
|
+
// runtime in the host.
|
|
59
|
+
const v = analyzeHostToolRuntimeImportBoundary([
|
|
60
|
+
"import { importToolRuntime, workerRuntimeImportPolicyFor } from './admit-tool-package.js';",
|
|
61
|
+
'export async function load(dir: string, source: ToolSource) {',
|
|
62
|
+
' return importToolRuntime(dir, workerRuntimeImportPolicyFor(source));',
|
|
63
|
+
'}',
|
|
64
|
+
].join('\n'), REGISTER_TOOLS_PATH);
|
|
65
|
+
expect(v).toHaveLength(1);
|
|
66
|
+
expect(v[0]?.message).toContain('worker-owned dispatch plane');
|
|
67
|
+
});
|
|
68
|
+
it('flags missing/unknown policy even in the admitted boundary files', () => {
|
|
33
69
|
const v = analyzeHostToolRuntimeImportBoundary([
|
|
34
70
|
"import { importToolRuntime } from './admit-tool-package.js';",
|
|
35
71
|
'export async function load(dir: string) {',
|
|
@@ -37,22 +73,43 @@ describe('analyzeHostToolRuntimeImportBoundary (AST)', () => {
|
|
|
37
73
|
'}',
|
|
38
74
|
].join('\n'), DISCOVERY_PATH);
|
|
39
75
|
expect(v).toHaveLength(1);
|
|
40
|
-
expect(v[0]?.message).toContain('explicit
|
|
76
|
+
expect(v[0]?.message).toContain('explicit policy');
|
|
41
77
|
});
|
|
42
78
|
it('flags any new callsite outside admission/discovery', () => {
|
|
43
79
|
const v = analyzeHostToolRuntimeImportBoundary([
|
|
44
80
|
"import { hostRuntimeImportPolicyFor, importToolRuntime } from '../bootstrap/admit-tool-package.js';",
|
|
45
81
|
'export async function load(dir: string) {',
|
|
46
|
-
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('
|
|
82
|
+
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('bundled'));",
|
|
47
83
|
'}',
|
|
48
84
|
].join('\n'), OTHER_CLI_PATH);
|
|
49
85
|
expect(v).toHaveLength(1);
|
|
50
86
|
expect(v[0]?.message).toContain('admission/discovery boundary');
|
|
51
87
|
});
|
|
52
|
-
it('allows the
|
|
88
|
+
it('allows the WORKER policy in the worker entry (the forked isolation boundary)', () => {
|
|
89
|
+
const v = analyzeHostToolRuntimeImportBoundary([
|
|
90
|
+
"import { importToolRuntime, workerRuntimeImportPolicyFor } from './admit-tool-package.js';",
|
|
91
|
+
'export async function run(dir: string, source: ToolSource) {',
|
|
92
|
+
' return importToolRuntime(dir, workerRuntimeImportPolicyFor(source));',
|
|
93
|
+
'}',
|
|
94
|
+
].join('\n'), WORKER_ENTRY_PATH);
|
|
95
|
+
expect(v).toEqual([]);
|
|
96
|
+
});
|
|
97
|
+
it('flags a missing policy in the worker entry too', () => {
|
|
98
|
+
const v = analyzeHostToolRuntimeImportBoundary([
|
|
99
|
+
"import { importToolRuntime } from './admit-tool-package.js';",
|
|
100
|
+
'export async function run(dir: string) {',
|
|
101
|
+
' return importToolRuntime(dir);',
|
|
102
|
+
'}',
|
|
103
|
+
].join('\n'), WORKER_ENTRY_PATH);
|
|
104
|
+
expect(v).toHaveLength(1);
|
|
105
|
+
expect(v[0]?.message).toContain('explicit policy');
|
|
106
|
+
});
|
|
107
|
+
it('allows the defining module to call its local function with a worker policy', () => {
|
|
108
|
+
// admit-tool-package.ts defines workerRuntimeImportPolicyFor and runs the
|
|
109
|
+
// bundled/probe runtime-load section โ it is on the worker-policy allowlist.
|
|
53
110
|
const v = analyzeHostToolRuntimeImportBoundary([
|
|
54
111
|
'export async function admit(dir: string, source: ToolSource) {',
|
|
55
|
-
' return importToolRuntime(dir,
|
|
112
|
+
' return importToolRuntime(dir, workerRuntimeImportPolicyFor(source));',
|
|
56
113
|
'}',
|
|
57
114
|
].join('\n'), ADMISSION_PATH);
|
|
58
115
|
expect(v).toEqual([]);
|
|
@@ -65,7 +122,7 @@ describe('host-tool-runtime-import-boundary (gate)', () => {
|
|
|
65
122
|
content: [
|
|
66
123
|
"import { hostRuntimeImportPolicyFor, importToolRuntime } from '../bootstrap/admit-tool-package.js';",
|
|
67
124
|
'export async function load(dir: string) {',
|
|
68
|
-
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('
|
|
125
|
+
" return importToolRuntime(dir, hostRuntimeImportPolicyFor('bundled'));",
|
|
69
126
|
'}',
|
|
70
127
|
].join('\n'),
|
|
71
128
|
})).toBeGreaterThanOrEqual(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-tool-runtime-import-boundary.test.js","sourceRoot":"","sources":["../../src/__tests__/host-tool-runtime-import-boundary.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-tool-runtime-import-boundary.test.js","sourceRoot":"","sources":["../../src/__tests__/host-tool-runtime-import-boundary.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAoB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,oCAAoC,EAAE,MAAM,6DAA6D,CAAC;AACnH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,cAAc,GAAG,wDAAwD,CAAC;AAChF,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAC3E,MAAM,cAAc,GAAG,kDAAkD,CAAC;AAC1E,MAAM,iBAAiB,GAAG,yDAAyD,CAAC;AACpF,MAAM,cAAc,GAAG,qCAAqC,CAAC;AAE7D,SAAS,KAAK;IACZ,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,mCAAmC,CAAC,CAAC;IACpF,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC9E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAiB;IAC1C,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,QAAQ,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACzE,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,0FAA0F;YAC1F,2CAA2C;YAC3C,yEAAyE;YACzE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,8DAA8D;YAC9D,2CAA2C;YAC3C,yDAAyD;YACzD,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,mBAAmB,CACpB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,4FAA4F;YAC5F,+DAA+D;YAC/D,wEAAwE;YACxE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qGAAqG,EAAE,GAAG,EAAE;QAC7G,6EAA6E;QAC7E,8EAA8E;QAC9E,uBAAuB;QACvB,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,4FAA4F;YAC5F,+DAA+D;YAC/D,wEAAwE;YACxE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,mBAAmB,CACpB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,8DAA8D;YAC9D,2CAA2C;YAC3C,kCAAkC;YAClC,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,qGAAqG;YACrG,2CAA2C;YAC3C,yEAAyE;YACzE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,4FAA4F;YAC5F,8DAA8D;YAC9D,wEAAwE;YACxE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,iBAAiB,CAClB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,8DAA8D;YAC9D,0CAA0C;YAC1C,kCAAkC;YAClC,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,iBAAiB,CAClB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,CAAC,GAAG,oCAAoC,CAC5C;YACE,gEAAgE;YAChE,wEAAwE;YACxE,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,CACJ,MAAM,WAAW,CAAC;YAChB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,qGAAqG;gBACrG,2CAA2C;gBAC3C,yEAAyE;gBACzE,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC,CACH,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,CACJ,MAAM,WAAW,CAAC;YAChB,IAAI,EAAE,qCAAqC;YAC3C,OAAO,EAAE;gBACP,kFAAkF;gBAClF,qCAAqC;aACtC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tool command handlers must let the host own output and exit.
|
|
3
|
+
*
|
|
4
|
+
* A Tool plugin declares its commands as `CommandSpec`s via `defineCommand({...})`
|
|
5
|
+
* and the host mounts them โ owning rendering, `--json`, and the exit code. The
|
|
6
|
+
* handler receives a host context (`cli`) and must route its results through that
|
|
7
|
+
* seam: it returns a result/envelope and (when it must influence the exit) calls
|
|
8
|
+
* `cli.setExitCode(...)`. A handler that writes run output straight to stdout
|
|
9
|
+
* (`process.stdout.write` / `console.log`), or terminates the process itself
|
|
10
|
+
* (`process.exit`), bypasses the host: the output never reaches a formatter, never
|
|
11
|
+
* honours `--json`, and the process can exit before pending delivery drains.
|
|
12
|
+
*
|
|
13
|
+
* The escape hatch is DECLARED, not implicit: a command that genuinely owns its
|
|
14
|
+
* own output surface (a completion script, a file export, subprocess IPC) sets
|
|
15
|
+
* `output: 'raw-stream'` with a `rawStreamReason`. This check therefore fires only
|
|
16
|
+
* inside a `defineCommand({...})` whose `output` is NOT `'raw-stream'` โ exactly
|
|
17
|
+
* where the host-owned-output contract applies. It is generic: it keys on the
|
|
18
|
+
* public command-authoring vocabulary every tool author uses, with no host path
|
|
19
|
+
* gating, so an adopter's own `fit` run enforces the same seam.
|
|
20
|
+
*/
|
|
21
|
+
import { type CheckViolation } from '@opensip-cli/fitness';
|
|
22
|
+
/** Pure analysis over a parsed source file. Exported for unit tests. */
|
|
23
|
+
export declare function analyzeCommandHandlerHostOwnedOutput(content: string, filePath: string): CheckViolation[];
|
|
24
|
+
export declare const commandHandlerHostOwnedOutput: import("@opensip-cli/fitness").Check;
|
|
25
|
+
//# sourceMappingURL=command-handler-host-owned-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler-host-owned-output.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/command-handler-host-owned-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAqHpF,wEAAwE;AACxE,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CA0BlB;AAED,eAAO,MAAM,6BAA6B,sCAcxC,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tool command handlers must let the host own output and exit.
|
|
3
|
+
*
|
|
4
|
+
* A Tool plugin declares its commands as `CommandSpec`s via `defineCommand({...})`
|
|
5
|
+
* and the host mounts them โ owning rendering, `--json`, and the exit code. The
|
|
6
|
+
* handler receives a host context (`cli`) and must route its results through that
|
|
7
|
+
* seam: it returns a result/envelope and (when it must influence the exit) calls
|
|
8
|
+
* `cli.setExitCode(...)`. A handler that writes run output straight to stdout
|
|
9
|
+
* (`process.stdout.write` / `console.log`), or terminates the process itself
|
|
10
|
+
* (`process.exit`), bypasses the host: the output never reaches a formatter, never
|
|
11
|
+
* honours `--json`, and the process can exit before pending delivery drains.
|
|
12
|
+
*
|
|
13
|
+
* The escape hatch is DECLARED, not implicit: a command that genuinely owns its
|
|
14
|
+
* own output surface (a completion script, a file export, subprocess IPC) sets
|
|
15
|
+
* `output: 'raw-stream'` with a `rawStreamReason`. This check therefore fires only
|
|
16
|
+
* inside a `defineCommand({...})` whose `output` is NOT `'raw-stream'` โ exactly
|
|
17
|
+
* where the host-owned-output contract applies. It is generic: it keys on the
|
|
18
|
+
* public command-authoring vocabulary every tool author uses, with no host path
|
|
19
|
+
* gating, so an adopter's own `fit` run enforces the same seam.
|
|
20
|
+
*/
|
|
21
|
+
import { defineCheck, isTestFile } from '@opensip-cli/fitness';
|
|
22
|
+
import { getSharedSourceFile } from '@opensip-cli/lang-typescript';
|
|
23
|
+
import * as ts from 'typescript';
|
|
24
|
+
/** The command-authoring factory whose specs the host mounts. */
|
|
25
|
+
const DEFINE_COMMAND = 'defineCommand';
|
|
26
|
+
/** The declared escape hatch: the handler owns its own output surface. */
|
|
27
|
+
const RAW_STREAM = 'raw-stream';
|
|
28
|
+
/** Output channels the host owns โ a non-raw-stream handler must not write them itself. */
|
|
29
|
+
const FORBIDDEN_CALLS = [
|
|
30
|
+
{ chain: ['process', 'stdout', 'write'], label: 'process.stdout.write' },
|
|
31
|
+
{ chain: ['console', 'log'], label: 'console.log' },
|
|
32
|
+
{ chain: ['console', 'info'], label: 'console.info' },
|
|
33
|
+
{ chain: ['console', 'debug'], label: 'console.debug' },
|
|
34
|
+
{ chain: ['process', 'exit'], label: 'process.exit' },
|
|
35
|
+
];
|
|
36
|
+
function normalized(path) {
|
|
37
|
+
return path.replaceAll('\\', '/');
|
|
38
|
+
}
|
|
39
|
+
function propertyNameText(name) {
|
|
40
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name))
|
|
41
|
+
return name.text;
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
/** The string value of a property assignment whose initializer is a string literal. */
|
|
45
|
+
function stringPropValue(obj, key) {
|
|
46
|
+
for (const prop of obj.properties) {
|
|
47
|
+
if (!ts.isPropertyAssignment(prop))
|
|
48
|
+
continue;
|
|
49
|
+
if (propertyNameText(prop.name) !== key)
|
|
50
|
+
continue;
|
|
51
|
+
if (ts.isStringLiteral(prop.initializer))
|
|
52
|
+
return prop.initializer.text;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
/** The handler initializer (arrow / function) of a `defineCommand` object literal. */
|
|
57
|
+
function handlerBody(obj) {
|
|
58
|
+
for (const prop of obj.properties) {
|
|
59
|
+
if (ts.isPropertyAssignment(prop) && propertyNameText(prop.name) === 'handler') {
|
|
60
|
+
const init = prop.initializer;
|
|
61
|
+
if (ts.isArrowFunction(init) || ts.isFunctionExpression(init))
|
|
62
|
+
return init.body;
|
|
63
|
+
}
|
|
64
|
+
if (ts.isMethodDeclaration(prop) &&
|
|
65
|
+
propertyNameText(prop.name) === 'handler' &&
|
|
66
|
+
prop.body !== undefined) {
|
|
67
|
+
return prop.body;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/** The dotted property chain of a call's callee (`process.stdout.write` โ ['process','stdout','write']). */
|
|
73
|
+
function calleeChain(expr) {
|
|
74
|
+
const parts = [];
|
|
75
|
+
let node = expr;
|
|
76
|
+
while (ts.isPropertyAccessExpression(node)) {
|
|
77
|
+
parts.unshift(node.name.text);
|
|
78
|
+
node = node.expression;
|
|
79
|
+
}
|
|
80
|
+
if (!ts.isIdentifier(node))
|
|
81
|
+
return undefined;
|
|
82
|
+
parts.unshift(node.text);
|
|
83
|
+
return parts;
|
|
84
|
+
}
|
|
85
|
+
function chainEquals(actual, expected) {
|
|
86
|
+
if (actual.length !== expected.length)
|
|
87
|
+
return false;
|
|
88
|
+
return actual.every((part, i) => part === expected[i]);
|
|
89
|
+
}
|
|
90
|
+
/** Find each forbidden host-owned-output call within a handler body subtree. */
|
|
91
|
+
function findForbiddenCalls(body, sourceFile, filePath) {
|
|
92
|
+
const violations = [];
|
|
93
|
+
const visit = (node) => {
|
|
94
|
+
if (ts.isCallExpression(node)) {
|
|
95
|
+
const chain = calleeChain(node.expression);
|
|
96
|
+
if (chain) {
|
|
97
|
+
for (const { chain: forbidden, label } of FORBIDDEN_CALLS) {
|
|
98
|
+
if (chainEquals(chain, forbidden)) {
|
|
99
|
+
const line = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
100
|
+
violations.push({
|
|
101
|
+
filePath,
|
|
102
|
+
line,
|
|
103
|
+
message: `Command handler calls ${label} directly. A tool command lets the host own ` +
|
|
104
|
+
`rendering, --json, and the exit code โ the handler returns its result and ` +
|
|
105
|
+
`routes output/exit through the host context (cli.render / cli.emitJson / ` +
|
|
106
|
+
`cli.emitEnvelope / cli.setExitCode). Direct stdout/exit bypasses that seam.`,
|
|
107
|
+
severity: 'error',
|
|
108
|
+
suggestion: `Return the command result (or a SignalEnvelope) and use the cli context to ` +
|
|
109
|
+
`emit and set the exit code. If this command genuinely owns its own output ` +
|
|
110
|
+
`surface (completion script, file export, subprocess IPC), declare ` +
|
|
111
|
+
`output: 'raw-stream' with a rawStreamReason instead.`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
ts.forEachChild(node, visit);
|
|
118
|
+
};
|
|
119
|
+
visit(body);
|
|
120
|
+
return violations;
|
|
121
|
+
}
|
|
122
|
+
/** Pure analysis over a parsed source file. Exported for unit tests. */
|
|
123
|
+
export function analyzeCommandHandlerHostOwnedOutput(content, filePath) {
|
|
124
|
+
const violations = [];
|
|
125
|
+
const sourceFile = getSharedSourceFile(filePath, content);
|
|
126
|
+
if (!sourceFile)
|
|
127
|
+
return violations;
|
|
128
|
+
const visit = (node) => {
|
|
129
|
+
if (ts.isCallExpression(node) &&
|
|
130
|
+
ts.isIdentifier(node.expression) &&
|
|
131
|
+
node.expression.text === DEFINE_COMMAND &&
|
|
132
|
+
node.arguments.length > 0) {
|
|
133
|
+
const arg = node.arguments[0];
|
|
134
|
+
if (ts.isObjectLiteralExpression(arg)) {
|
|
135
|
+
const output = stringPropValue(arg, 'output');
|
|
136
|
+
// A raw-stream command DECLARES that it owns its own output surface.
|
|
137
|
+
if (output !== RAW_STREAM) {
|
|
138
|
+
const body = handlerBody(arg);
|
|
139
|
+
if (body)
|
|
140
|
+
violations.push(...findForbiddenCalls(body, sourceFile, filePath));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
ts.forEachChild(node, visit);
|
|
145
|
+
};
|
|
146
|
+
visit(sourceFile);
|
|
147
|
+
return violations;
|
|
148
|
+
}
|
|
149
|
+
export const commandHandlerHostOwnedOutput = defineCheck({
|
|
150
|
+
id: 'c1f4a2e7-6b83-4d59-9e0a-2f7c4b8d1a36',
|
|
151
|
+
slug: 'command-handler-host-owned-output',
|
|
152
|
+
description: 'A tool command handler must let the host own rendering and exit โ no direct stdout/console/process.exit inside a non-raw-stream defineCommand handler',
|
|
153
|
+
scope: { languages: ['typescript'], concerns: ['backend'] },
|
|
154
|
+
tags: ['architecture'],
|
|
155
|
+
fileTypes: ['ts', 'tsx'],
|
|
156
|
+
analyze: (content, filePath) => {
|
|
157
|
+
if (isTestFile(filePath))
|
|
158
|
+
return [];
|
|
159
|
+
// Cheap pre-filter: only files that author a command can violate the rule.
|
|
160
|
+
if (!content.includes(DEFINE_COMMAND))
|
|
161
|
+
return [];
|
|
162
|
+
return analyzeCommandHandlerHostOwnedOutput(content, normalized(filePath));
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=command-handler-host-owned-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler-host-owned-output.js","sourceRoot":"","sources":["../../../src/checks/architecture/command-handler-host-owned-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
2
|
+
* @fileoverview Mechanize the ADR-0054 M4-G CAPSTONE invariant: no
|
|
3
|
+
* `importToolRuntime(...)` for external-provenance tools in the HOST process.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* boundary.
|
|
5
|
+
* After the capstone, external tool runtime code NEVER loads in the host. The
|
|
6
|
+
* host registers a manifest-derived synthetic Tool (command shells from the
|
|
7
|
+
* static manifest) and mounts its commands without importing the runtime; the
|
|
8
|
+
* forked dispatch WORKER imports the untrusted runtime when a command actually
|
|
9
|
+
* dispatches. This is no longer a transition guardrail โ it is the enforced
|
|
10
|
+
* boundary. The check asserts three things across the CLI host package:
|
|
11
|
+
*
|
|
12
|
+
* 1. `importToolRuntime` may be called only from the admission/discovery
|
|
13
|
+
* boundary or the worker-owned dispatch plane (the allowlisted files).
|
|
14
|
+
* Any other host-process call site is a violation.
|
|
15
|
+
* 2. A HOST import must pass a BUNDLED policy โ `hostRuntimeImportPolicyFor(...)`
|
|
16
|
+
* (type-narrowed to `'bundled'`) or a literal `{ source: 'bundled' }`. A
|
|
17
|
+
* non-bundled host policy is a violation (the type already forbids it; this
|
|
18
|
+
* catches a hand-rolled literal that bypasses the constructor).
|
|
19
|
+
* 3. `workerRuntimeImportPolicyFor(...)` โ the policy that authorizes loading an
|
|
20
|
+
* EXTERNAL runtime โ is permitted only on the worker-owned plane (the
|
|
21
|
+
* discovery leg gated behind `isHostRuntimeImportForbidden`, the worker entry,
|
|
22
|
+
* and the admission module that defines it). Using it elsewhere would import
|
|
23
|
+
* an external runtime in the host.
|
|
24
|
+
*
|
|
25
|
+
* The `adr0054Transition` exception is gone: the worker is now the only path for
|
|
26
|
+
* external runtime import, and the host import policy is bundled-only.
|
|
10
27
|
*/
|
|
11
28
|
import { type CheckViolation } from '@opensip-cli/fitness';
|
|
12
29
|
/** Pure analysis over a parsed source file. Exported for unit tests. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-tool-runtime-import-boundary.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-tool-runtime-import-boundary.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA2HpF,wEAAwE;AACxE,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CA2DlB;AAED,eAAO,MAAM,6BAA6B,sCAYxC,CAAC"}
|
|
@@ -1,64 +1,128 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
2
|
+
* @fileoverview Mechanize the ADR-0054 M4-G CAPSTONE invariant: no
|
|
3
|
+
* `importToolRuntime(...)` for external-provenance tools in the HOST process.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* boundary.
|
|
5
|
+
* After the capstone, external tool runtime code NEVER loads in the host. The
|
|
6
|
+
* host registers a manifest-derived synthetic Tool (command shells from the
|
|
7
|
+
* static manifest) and mounts its commands without importing the runtime; the
|
|
8
|
+
* forked dispatch WORKER imports the untrusted runtime when a command actually
|
|
9
|
+
* dispatches. This is no longer a transition guardrail โ it is the enforced
|
|
10
|
+
* boundary. The check asserts three things across the CLI host package:
|
|
11
|
+
*
|
|
12
|
+
* 1. `importToolRuntime` may be called only from the admission/discovery
|
|
13
|
+
* boundary or the worker-owned dispatch plane (the allowlisted files).
|
|
14
|
+
* Any other host-process call site is a violation.
|
|
15
|
+
* 2. A HOST import must pass a BUNDLED policy โ `hostRuntimeImportPolicyFor(...)`
|
|
16
|
+
* (type-narrowed to `'bundled'`) or a literal `{ source: 'bundled' }`. A
|
|
17
|
+
* non-bundled host policy is a violation (the type already forbids it; this
|
|
18
|
+
* catches a hand-rolled literal that bypasses the constructor).
|
|
19
|
+
* 3. `workerRuntimeImportPolicyFor(...)` โ the policy that authorizes loading an
|
|
20
|
+
* EXTERNAL runtime โ is permitted only on the worker-owned plane (the
|
|
21
|
+
* discovery leg gated behind `isHostRuntimeImportForbidden`, the worker entry,
|
|
22
|
+
* and the admission module that defines it). Using it elsewhere would import
|
|
23
|
+
* an external runtime in the host.
|
|
24
|
+
*
|
|
25
|
+
* The `adr0054Transition` exception is gone: the worker is now the only path for
|
|
26
|
+
* external runtime import, and the host import policy is bundled-only.
|
|
10
27
|
*/
|
|
11
|
-
// @fitness-ignore-file shipped-checks-must-be-generic -- dogfood check for this repo's ADR-0054
|
|
28
|
+
// @fitness-ignore-file shipped-checks-must-be-generic -- dogfood check for this repo's ADR-0054 capstone boundary; AST precision keeps the host/worker import distinction mechanically exact.
|
|
12
29
|
import { defineCheck, isTestFile } from '@opensip-cli/fitness';
|
|
13
30
|
import { getSharedSourceFile } from '@opensip-cli/lang-typescript';
|
|
14
31
|
import * as ts from 'typescript';
|
|
15
32
|
const CLI_HOST_PATH = 'packages/cli/src/';
|
|
16
33
|
const IMPORT_RUNTIME = 'importToolRuntime';
|
|
17
|
-
const
|
|
34
|
+
const HOST_POLICY_HELPER = 'hostRuntimeImportPolicyFor';
|
|
35
|
+
const WORKER_POLICY_HELPER = 'workerRuntimeImportPolicyFor';
|
|
36
|
+
/**
|
|
37
|
+
* The files permitted to call `importToolRuntime` at all (admission/discovery +
|
|
38
|
+
* the worker-owned dispatch plane). Any other host file is a hard violation.
|
|
39
|
+
*/
|
|
18
40
|
const ALLOWED_CALLSITE_SUFFIXES = new Set([
|
|
19
41
|
'packages/cli/src/bootstrap/admit-tool-package.ts',
|
|
20
42
|
'packages/cli/src/bootstrap/register-tools.ts',
|
|
21
43
|
'packages/cli/src/bootstrap/register-tools-discovery.ts',
|
|
44
|
+
// Authored (project-local / user-global) tool registration: same host-vs-worker
|
|
45
|
+
// discovery split as register-tools-discovery (the import runs only in the
|
|
46
|
+
// worker, gated by isHostRuntimeImportForbidden).
|
|
47
|
+
'packages/cli/src/bootstrap/register-authored-tools.ts',
|
|
48
|
+
// ADR-0054 worker-owned dispatch plane: this entry runs in the FORKED worker
|
|
49
|
+
// process (not the host), so importing the external runtime here is the
|
|
50
|
+
// isolation goal. It uses the worker policy.
|
|
51
|
+
'packages/cli/src/bootstrap/tool-command-worker-entry.ts',
|
|
52
|
+
]);
|
|
53
|
+
/**
|
|
54
|
+
* The files permitted to construct/pass the WORKER policy
|
|
55
|
+
* (`workerRuntimeImportPolicyFor`) โ the policy that authorizes loading an
|
|
56
|
+
* EXTERNAL runtime. This is the worker-owned plane: the discovery leg (which
|
|
57
|
+
* gates the import behind `isHostRuntimeImportForbidden`, so it runs only inside
|
|
58
|
+
* the worker), the worker entry, and the admission module that defines the
|
|
59
|
+
* constructor + runs the bundled/probe runtime-load section. Using the worker
|
|
60
|
+
* policy anywhere else would import an external runtime in the host.
|
|
61
|
+
*/
|
|
62
|
+
const ALLOWED_WORKER_POLICY_SUFFIXES = new Set([
|
|
63
|
+
'packages/cli/src/bootstrap/admit-tool-package.ts',
|
|
64
|
+
'packages/cli/src/bootstrap/register-tools-discovery.ts',
|
|
65
|
+
'packages/cli/src/bootstrap/register-authored-tools.ts',
|
|
66
|
+
'packages/cli/src/bootstrap/tool-command-worker-entry.ts',
|
|
22
67
|
]);
|
|
23
68
|
function normalized(path) {
|
|
24
69
|
return path.replaceAll('\\', '/');
|
|
25
70
|
}
|
|
26
|
-
function
|
|
71
|
+
function endsWithAny(filePath, suffixes) {
|
|
27
72
|
const p = normalized(filePath);
|
|
28
|
-
for (const suffix of
|
|
73
|
+
for (const suffix of suffixes) {
|
|
29
74
|
if (p.endsWith(suffix))
|
|
30
75
|
return true;
|
|
31
76
|
}
|
|
32
77
|
return false;
|
|
33
78
|
}
|
|
79
|
+
function isAllowedCallsite(filePath) {
|
|
80
|
+
return endsWithAny(filePath, ALLOWED_CALLSITE_SUFFIXES);
|
|
81
|
+
}
|
|
82
|
+
function isWorkerPolicyAllowed(filePath) {
|
|
83
|
+
return endsWithAny(filePath, ALLOWED_WORKER_POLICY_SUFFIXES);
|
|
84
|
+
}
|
|
34
85
|
function propertyNameText(name) {
|
|
35
86
|
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {
|
|
36
87
|
return name.text;
|
|
37
88
|
}
|
|
38
89
|
return undefined;
|
|
39
90
|
}
|
|
40
|
-
|
|
41
|
-
|
|
91
|
+
/** A call to a named policy helper, e.g. `hostRuntimeImportPolicyFor(source)`. */
|
|
92
|
+
function helperCallName(arg) {
|
|
93
|
+
if (ts.isCallExpression(arg) && ts.isIdentifier(arg.expression))
|
|
94
|
+
return arg.expression.text;
|
|
95
|
+
return undefined;
|
|
42
96
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return arg.expression.text === POLICY_HELPER;
|
|
46
|
-
}
|
|
97
|
+
/** Whether an object literal is exactly `{ source: 'bundled' }` (the host policy). */
|
|
98
|
+
function isBundledLiteral(arg) {
|
|
47
99
|
if (!ts.isObjectLiteralExpression(arg))
|
|
48
100
|
return false;
|
|
49
|
-
let
|
|
50
|
-
let hasTransition = false;
|
|
101
|
+
let bundled = false;
|
|
51
102
|
for (const prop of arg.properties) {
|
|
52
103
|
if (!ts.isPropertyAssignment(prop))
|
|
53
|
-
|
|
104
|
+
return false;
|
|
54
105
|
const name = propertyNameText(prop.name);
|
|
55
|
-
if (name
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
106
|
+
if (name !== 'source')
|
|
107
|
+
return false;
|
|
108
|
+
if (!ts.isStringLiteral(prop.initializer) || prop.initializer.text !== 'bundled')
|
|
109
|
+
return false;
|
|
110
|
+
bundled = true;
|
|
60
111
|
}
|
|
61
|
-
return
|
|
112
|
+
return bundled;
|
|
113
|
+
}
|
|
114
|
+
/** Classify the policy argument of an `importToolRuntime(dir, policy)` call. */
|
|
115
|
+
function classifyPolicyArg(arg) {
|
|
116
|
+
if (arg === undefined)
|
|
117
|
+
return 'other';
|
|
118
|
+
const helper = helperCallName(arg);
|
|
119
|
+
if (helper === HOST_POLICY_HELPER)
|
|
120
|
+
return 'host-bundled';
|
|
121
|
+
if (helper === WORKER_POLICY_HELPER)
|
|
122
|
+
return 'worker';
|
|
123
|
+
if (isBundledLiteral(arg))
|
|
124
|
+
return 'host-bundled';
|
|
125
|
+
return 'other';
|
|
62
126
|
}
|
|
63
127
|
function localRuntimeImportNames(sourceFile) {
|
|
64
128
|
const names = new Set();
|
|
@@ -93,27 +157,44 @@ export function analyzeHostToolRuntimeImportBoundary(content, filePath) {
|
|
|
93
157
|
if (runtimeNames.size === 0)
|
|
94
158
|
return violations;
|
|
95
159
|
const allowedFile = isAllowedCallsite(filePath);
|
|
160
|
+
const workerPolicyAllowed = isWorkerPolicyAllowed(filePath);
|
|
96
161
|
const visit = (node) => {
|
|
97
162
|
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
|
|
98
163
|
const callee = node.expression.text;
|
|
99
164
|
if (runtimeNames.has(callee)) {
|
|
100
165
|
const line = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
166
|
+
const kind = classifyPolicyArg(node.arguments[1]);
|
|
101
167
|
if (!allowedFile) {
|
|
102
168
|
violations.push({
|
|
103
169
|
message: `importToolRuntime may only be called from the tool admission/discovery boundary ` +
|
|
104
|
-
`(ADR-0054
|
|
170
|
+
`or the worker-owned dispatch plane (ADR-0054 M4-G capstone). Found host-process ` +
|
|
171
|
+
`runtime import in ${normalized(filePath)}.`,
|
|
172
|
+
severity: 'error',
|
|
173
|
+
line,
|
|
174
|
+
suggestion: 'External tool runtimes load ONLY behind the worker boundary. Register a ' +
|
|
175
|
+
'manifest-derived synthetic Tool in the host; import the runtime in the worker.',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else if (kind === 'other') {
|
|
179
|
+
violations.push({
|
|
180
|
+
message: 'importToolRuntime must pass an explicit policy โ a bundled HOST policy ' +
|
|
181
|
+
"(hostRuntimeImportPolicyFor or { source: 'bundled' }) or workerRuntimeImportPolicyFor " +
|
|
182
|
+
'on the worker-owned plane (ADR-0054 M4-G).',
|
|
105
183
|
severity: 'error',
|
|
106
184
|
line,
|
|
107
|
-
suggestion: '
|
|
185
|
+
suggestion: 'Pass hostRuntimeImportPolicyFor(...) for a bundled host import, or ' +
|
|
186
|
+
'workerRuntimeImportPolicyFor(source) on the worker plane.',
|
|
108
187
|
});
|
|
109
188
|
}
|
|
110
|
-
else if (
|
|
189
|
+
else if (kind === 'worker' && !workerPolicyAllowed) {
|
|
111
190
|
violations.push({
|
|
112
|
-
message:
|
|
113
|
-
|
|
191
|
+
message: `workerRuntimeImportPolicyFor authorizes loading an EXTERNAL tool runtime; it is ` +
|
|
192
|
+
`permitted only on the worker-owned dispatch plane, not in ${normalized(filePath)} ` +
|
|
193
|
+
`(ADR-0054 M4-G capstone: external runtimes never import in the host).`,
|
|
114
194
|
severity: 'error',
|
|
115
195
|
line,
|
|
116
|
-
suggestion: '
|
|
196
|
+
suggestion: 'In the host, register a manifest-derived synthetic Tool instead. Import the ' +
|
|
197
|
+
'external runtime only in the dispatch worker.',
|
|
117
198
|
});
|
|
118
199
|
}
|
|
119
200
|
}
|
|
@@ -126,7 +207,7 @@ export function analyzeHostToolRuntimeImportBoundary(content, filePath) {
|
|
|
126
207
|
export const hostToolRuntimeImportBoundary = defineCheck({
|
|
127
208
|
id: 'b7554963-e24e-4d80-b3e0-edbb97bbdba3',
|
|
128
209
|
slug: 'host-tool-runtime-import-boundary',
|
|
129
|
-
description: '
|
|
210
|
+
description: 'External tool runtimes never import in the host: importToolRuntime stays in the admission/discovery boundary, host imports are bundled-only, and the external worker policy is confined to the worker plane (ADR-0054 M4-G capstone)',
|
|
130
211
|
scope: { languages: ['typescript'], concerns: ['backend'] },
|
|
131
212
|
tags: ['architecture'],
|
|
132
213
|
fileTypes: ['ts', 'tsx'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-tool-runtime-import-boundary.js","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-tool-runtime-import-boundary.js","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Architecture checks barrel.
|
|
3
|
+
*
|
|
4
|
+
* Tool/host SEAM-DISCIPLINE โ shipped vs project-local (audit M5):
|
|
5
|
+
*
|
|
6
|
+
* SHIPPED here (generic; fire on any adopter authoring a Tool plugin, keyed on
|
|
7
|
+
* the public command-authoring contract, no host path gating):
|
|
8
|
+
* - host-tool-runtime-import-boundary โ the host loads tool runtimes only
|
|
9
|
+
* through the admission boundary with an explicit source policy.
|
|
10
|
+
* - command-handler-host-owned-output โ a tool command handler lets the host
|
|
11
|
+
* own rendering / --json / exit; no direct stdout/console/process.exit inside
|
|
12
|
+
* a non-raw-stream defineCommand handler (the declared escape hatch is
|
|
13
|
+
* output:'raw-stream' + rawStreamReason).
|
|
14
|
+
*
|
|
15
|
+
* KEPT PROJECT-LOCAL (opensip-cli/fit/checks/*.mjs) โ opensip-internal facts that
|
|
16
|
+
* are inert/meaningless for an adopter, so they would just clutter their `fit
|
|
17
|
+
* list`. Each is path-gated to opensip's own monorepo layout
|
|
18
|
+
* (packages/{fitness,graph,simulation}/engine/src/, packages/cli/src/...) and/or
|
|
19
|
+
* cites an internal decision/spec section:
|
|
20
|
+
* - only-documented-toolcli-seams, no-direct-stdout-in-tool-engine,
|
|
21
|
+
* no-local-exit-or-stdout (the *principles* are shipped above in their
|
|
22
|
+
* contract-keyed, path-independent form; these dogfood the opensip tree).
|
|
23
|
+
* - restrict-raw-db-access, capability-by-manifest, no-tool-owned-session-timing,
|
|
24
|
+
* no-module-singleton, etc. โ coupled to opensip's own DataStore/registry/
|
|
25
|
+
* manifest internals.
|
|
26
|
+
* The shipped-checks-must-be-generic project-local gate enforces this split: a
|
|
27
|
+
* check carrying opensip paths / ADR refs / ยง-sections / internal-engine imports
|
|
28
|
+
* cannot live in a shipped pack.
|
|
29
|
+
*/
|
|
1
30
|
export * from './circular-import-detection.js';
|
|
31
|
+
export * from './command-handler-host-owned-output.js';
|
|
2
32
|
export * from './contracts-schema-consistency.js';
|
|
3
33
|
export * from './drizzle-orm-migration-guardrails.js';
|
|
4
34
|
export * from './host-tool-runtime-import-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Architecture checks barrel.
|
|
3
|
+
*
|
|
4
|
+
* Tool/host SEAM-DISCIPLINE โ shipped vs project-local (audit M5):
|
|
5
|
+
*
|
|
6
|
+
* SHIPPED here (generic; fire on any adopter authoring a Tool plugin, keyed on
|
|
7
|
+
* the public command-authoring contract, no host path gating):
|
|
8
|
+
* - host-tool-runtime-import-boundary โ the host loads tool runtimes only
|
|
9
|
+
* through the admission boundary with an explicit source policy.
|
|
10
|
+
* - command-handler-host-owned-output โ a tool command handler lets the host
|
|
11
|
+
* own rendering / --json / exit; no direct stdout/console/process.exit inside
|
|
12
|
+
* a non-raw-stream defineCommand handler (the declared escape hatch is
|
|
13
|
+
* output:'raw-stream' + rawStreamReason).
|
|
14
|
+
*
|
|
15
|
+
* KEPT PROJECT-LOCAL (opensip-cli/fit/checks/*.mjs) โ opensip-internal facts that
|
|
16
|
+
* are inert/meaningless for an adopter, so they would just clutter their `fit
|
|
17
|
+
* list`. Each is path-gated to opensip's own monorepo layout
|
|
18
|
+
* (packages/{fitness,graph,simulation}/engine/src/, packages/cli/src/...) and/or
|
|
19
|
+
* cites an internal decision/spec section:
|
|
20
|
+
* - only-documented-toolcli-seams, no-direct-stdout-in-tool-engine,
|
|
21
|
+
* no-local-exit-or-stdout (the *principles* are shipped above in their
|
|
22
|
+
* contract-keyed, path-independent form; these dogfood the opensip tree).
|
|
23
|
+
* - restrict-raw-db-access, capability-by-manifest, no-tool-owned-session-timing,
|
|
24
|
+
* no-module-singleton, etc. โ coupled to opensip's own DataStore/registry/
|
|
25
|
+
* manifest internals.
|
|
26
|
+
* The shipped-checks-must-be-generic project-local gate enforces this split: a
|
|
27
|
+
* check carrying opensip paths / ADR refs / ยง-sections / internal-engine imports
|
|
28
|
+
* cannot live in a shipped pack.
|
|
29
|
+
*/
|
|
1
30
|
export * from './circular-import-detection.js';
|
|
31
|
+
export * from './command-handler-host-owned-output.js';
|
|
2
32
|
export * from './contracts-schema-consistency.js';
|
|
3
33
|
export * from './drizzle-orm-migration-guardrails.js';
|
|
4
34
|
export * from './host-tool-runtime-import-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detached-promises.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/detached-promises.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;
|
|
1
|
+
{"version":3,"file":"detached-promises.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/detached-promises.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAuoBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,sCA0B3B,CAAC"}
|
|
@@ -236,6 +236,10 @@ const KNOWN_SYNC_RECEIVER_PATTERNS = [
|
|
|
236
236
|
'timer',
|
|
237
237
|
'counter',
|
|
238
238
|
'gauge',
|
|
239
|
+
// The scope-owned DiagnosticsBus is a synchronous event sink (its `event` /
|
|
240
|
+
// `counter` / `emit` push onto an in-memory array and return void), exactly
|
|
241
|
+
// like a logger/emitter โ `diagnostics.event(...)` is never a detached promise.
|
|
242
|
+
'diagnostics',
|
|
239
243
|
];
|
|
240
244
|
/**
|
|
241
245
|
* File path patterns that indicate CLI commands or route registrations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detached-promises.js","sourceRoot":"","sources":["../../../src/checks/resilience/detached-promises.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"detached-promises.js","sourceRoot":"","sources":["../../../src/checks/resilience/detached-promises.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,6CAc/B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,6CAAuD,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
/** Architecture check display entries (TS_AST only) */
|
|
5
5
|
export const ARCHITECTURE_DISPLAY = Object.freeze({
|
|
6
6
|
'circular-import-detection': ['๐', 'Circular Import Detection'],
|
|
7
|
+
'command-handler-host-owned-output': ['๐ช', 'Command Handler Host-Owned Output'],
|
|
7
8
|
'contracts-schema-consistency': ['๐', 'Contracts Schema Consistency'],
|
|
8
9
|
'drizzle-orm-migration-guardrails': ['๐ก๏ธ', 'Drizzle ORM Migration Guardrails'],
|
|
9
10
|
'host-tool-runtime-import-boundary': ['๐งฑ', 'Host Tool Runtime Import Boundary'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAoC;IACnF,2BAA2B,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAChE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,kCAAkC,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC;IAC/E,mCAAmC,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAChF,sBAAsB,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtD,yBAAyB,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC7D,0BAA0B,EAAE,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC9D,iCAAiC,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;IACxE,4BAA4B,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAClE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,iCAAiC,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC;IAC5E,6BAA6B,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;CACrE,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAoC,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAoC;IACnF,2BAA2B,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAChE,mCAAmC,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAChF,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,kCAAkC,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC;IAC/E,mCAAmC,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAChF,sBAAsB,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtD,yBAAyB,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC7D,0BAA0B,EAAE,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC9D,iCAAiC,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;IACxE,4BAA4B,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAClE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,iCAAiC,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC;IAC5E,6BAA6B,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;CACrE,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAoC,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensip-cli/checks-typescript",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "TypeScript/Node.js fitness checks for opensip-cli",
|
|
6
6
|
"keywords": [
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"typescript": "~6.0.3",
|
|
40
|
-
"@opensip-cli/core": "0.1.
|
|
41
|
-
"@opensip-cli/fitness": "0.1.
|
|
42
|
-
"@opensip-cli/lang-typescript": "0.1.
|
|
40
|
+
"@opensip-cli/core": "0.1.10",
|
|
41
|
+
"@opensip-cli/fitness": "0.1.10",
|
|
42
|
+
"@opensip-cli/lang-typescript": "0.1.10"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^24.13.2",
|
|
46
46
|
"vitest": "^4.1.8",
|
|
47
|
-
"@opensip-cli/test-support": "0.1.
|
|
47
|
+
"@opensip-cli/test-support": "0.1.10"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "tsc",
|