@opensip-cli/checks-typescript 0.1.8 โ†’ 0.1.9

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.
Files changed (26) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/command-handler-host-owned-output.test.d.ts +2 -0
  3. package/dist/__tests__/command-handler-host-owned-output.test.d.ts.map +1 -0
  4. package/dist/__tests__/command-handler-host-owned-output.test.js +85 -0
  5. package/dist/__tests__/command-handler-host-owned-output.test.js.map +1 -0
  6. package/dist/__tests__/host-tool-runtime-import-boundary.test.js +69 -12
  7. package/dist/__tests__/host-tool-runtime-import-boundary.test.js.map +1 -1
  8. package/dist/checks/architecture/command-handler-host-owned-output.d.ts +25 -0
  9. package/dist/checks/architecture/command-handler-host-owned-output.d.ts.map +1 -0
  10. package/dist/checks/architecture/command-handler-host-owned-output.js +165 -0
  11. package/dist/checks/architecture/command-handler-host-owned-output.js.map +1 -0
  12. package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts +24 -7
  13. package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts.map +1 -1
  14. package/dist/checks/architecture/host-tool-runtime-import-boundary.js +114 -33
  15. package/dist/checks/architecture/host-tool-runtime-import-boundary.js.map +1 -1
  16. package/dist/checks/architecture/index.d.ts +30 -0
  17. package/dist/checks/architecture/index.d.ts.map +1 -1
  18. package/dist/checks/architecture/index.js +30 -0
  19. package/dist/checks/architecture/index.js.map +1 -1
  20. package/dist/checks/resilience/detached-promises.d.ts.map +1 -1
  21. package/dist/checks/resilience/detached-promises.js +4 -0
  22. package/dist/checks/resilience/detached-promises.js.map +1 -1
  23. package/dist/display/architecture.d.ts.map +1 -1
  24. package/dist/display/architecture.js +1 -0
  25. package/dist/display/architecture.js.map +1 -1
  26. 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.8/docs/public/70-reference/02-package-catalog.md
27
- - ๐Ÿ“ฆ Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.8/packages/fitness/checks-typescript
26
+ - ๐Ÿงญ Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.9/docs/public/70-reference/02-package-catalog.md
27
+ - ๐Ÿ“ฆ Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.9/packages/fitness/checks-typescript
28
28
 
29
29
  ## License
30
30
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=command-handler-host-owned-output.test.d.ts.map
@@ -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 runtime
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 the discovery boundary when a policy helper is present', () => {
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('installed'));",
32
+ " return importToolRuntime(dir, hostRuntimeImportPolicyFor('bundled'));",
28
33
  '}',
29
34
  ].join('\n'), DISCOVERY_PATH);
30
35
  expect(v).toEqual([]);
31
36
  });
32
- it('flags missing policy even in the admitted boundary files', () => {
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 source policy');
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('installed'));",
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 defining module to call its local function with policy', () => {
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, hostRuntimeImportPolicyFor(source));',
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('installed'));",
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":"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"}
1
+ {"version":3,"file":"host-tool-runtime-import-boundary.test.js","sourceRoot":"","sources":["../../src/__tests__/host-tool-runtime-import-boundary.test.ts"],"names":[],"mappings":"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"}
@@ -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 Keep ADR-0054's host-process runtime import exception narrow.
2
+ * @fileoverview Mechanize the ADR-0054 M4-G CAPSTONE invariant: no
3
+ * `importToolRuntime(...)` for external-provenance tools in the HOST process.
3
4
  *
4
- * External Tool runtimes still execute in the host process during the
5
- * ADR-0054 migration because the current manifest only carries command
6
- * metadata, not executable CommandSpec/RPC descriptors. That exception must
7
- * remain explicit: every importToolRuntime call needs a source policy, and no
8
- * new production call sites should appear outside the admission/discovery
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;;;;;;;;;GASG;AAEH,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA4EpF,wEAAwE;AACxE,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CAyClB;AAED,eAAO,MAAM,6BAA6B,sCAYxC,CAAC"}
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 Keep ADR-0054's host-process runtime import exception narrow.
2
+ * @fileoverview Mechanize the ADR-0054 M4-G CAPSTONE invariant: no
3
+ * `importToolRuntime(...)` for external-provenance tools in the HOST process.
3
4
  *
4
- * External Tool runtimes still execute in the host process during the
5
- * ADR-0054 migration because the current manifest only carries command
6
- * metadata, not executable CommandSpec/RPC descriptors. That exception must
7
- * remain explicit: every importToolRuntime call needs a source policy, and no
8
- * new production call sites should appear outside the admission/discovery
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 migration boundary; AST precision keeps the temporary import exception mechanically narrow.
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 POLICY_HELPER = 'hostRuntimeImportPolicyFor';
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 isAllowedCallsite(filePath) {
71
+ function endsWithAny(filePath, suffixes) {
27
72
  const p = normalized(filePath);
28
- for (const suffix of ALLOWED_CALLSITE_SUFFIXES) {
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
- function isTrueLiteral(node) {
41
- return node.kind === ts.SyntaxKind.TrueKeyword;
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
- function isPolicyArg(arg) {
44
- if (ts.isCallExpression(arg) && ts.isIdentifier(arg.expression)) {
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 hasSource = false;
50
- let hasTransition = false;
101
+ let bundled = false;
51
102
  for (const prop of arg.properties) {
52
103
  if (!ts.isPropertyAssignment(prop))
53
- continue;
104
+ return false;
54
105
  const name = propertyNameText(prop.name);
55
- if (name === 'source')
56
- hasSource = true;
57
- if (name === 'adr0054Transition' && isTrueLiteral(prop.initializer)) {
58
- hasTransition = true;
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 hasSource && (hasTransition || arg.getText().includes("'bundled'"));
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 transition). Found host-process runtime import in ${normalized(filePath)}.`,
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: 'Route tool runtime loading through admit-tool-package/register-tools, or the ADR-0054 worker boundary.',
185
+ suggestion: 'Pass hostRuntimeImportPolicyFor(...) for a bundled host import, or ' +
186
+ 'workerRuntimeImportPolicyFor(source) on the worker plane.',
108
187
  });
109
188
  }
110
- else if (node.arguments.length < 2 || !isPolicyArg(node.arguments[1])) {
189
+ else if (kind === 'worker' && !workerPolicyAllowed) {
111
190
  violations.push({
112
- message: 'importToolRuntime host-process imports must pass an explicit source policy ' +
113
- '(bundled or adr0054Transition) so external runtime execution remains visible.',
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: 'Pass hostRuntimeImportPolicyFor(source), or an explicit policy object for bundled/ADR-0054 transition imports.',
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: 'Host-process tool runtime imports must stay in the admission boundary and carry an explicit ADR-0054 transition policy',
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":"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"}
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;AAmoBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,sCA0B3B,CAAC"}
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,6CAa/B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,6CAAuD,CAAC"}
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.8",
3
+ "version": "0.1.9",
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.8",
41
- "@opensip-cli/fitness": "0.1.8",
42
- "@opensip-cli/lang-typescript": "0.1.8"
40
+ "@opensip-cli/core": "0.1.9",
41
+ "@opensip-cli/fitness": "0.1.9",
42
+ "@opensip-cli/lang-typescript": "0.1.9"
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.8"
47
+ "@opensip-cli/test-support": "0.1.9"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "tsc",