@namzu/cli 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +8 -0
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/agent.d.ts +10 -0
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +10 -0
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +46 -0
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +96 -0
- package/dist/tui/slashCommands.js.map +1 -1
- package/package.json +11 -6
- package/dist/__tests__/environment-reaches-the-turn.test.d.ts +0 -17
- package/dist/__tests__/environment-reaches-the-turn.test.d.ts.map +0 -1
- package/dist/__tests__/environment-reaches-the-turn.test.js +0 -128
- package/dist/__tests__/environment-reaches-the-turn.test.js.map +0 -1
- package/dist/__tests__/headless-trust-gate.test.d.ts +0 -23
- package/dist/__tests__/headless-trust-gate.test.d.ts.map +0 -1
- package/dist/__tests__/headless-trust-gate.test.js +0 -227
- package/dist/__tests__/headless-trust-gate.test.js.map +0 -1
- package/dist/__tests__/mcp-servers-reach-the-session.test.d.ts +0 -17
- package/dist/__tests__/mcp-servers-reach-the-session.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-servers-reach-the-session.test.js +0 -171
- package/dist/__tests__/mcp-servers-reach-the-session.test.js.map +0 -1
- package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts +0 -31
- package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts.map +0 -1
- package/dist/__tests__/permission-rules-reach-the-turn.test.js +0 -132
- package/dist/__tests__/permission-rules-reach-the-turn.test.js.map +0 -1
- package/dist/__tests__/project-instructions-reach-the-turn.test.d.ts +0 -24
- package/dist/__tests__/project-instructions-reach-the-turn.test.d.ts.map +0 -1
- package/dist/__tests__/project-instructions-reach-the-turn.test.js +0 -153
- package/dist/__tests__/project-instructions-reach-the-turn.test.js.map +0 -1
- package/dist/cli.test.d.ts +0 -2
- package/dist/cli.test.d.ts.map +0 -1
- package/dist/cli.test.js +0 -108
- package/dist/cli.test.js.map +0 -1
- package/dist/commands/__tests__/eval.test.d.ts +0 -2
- package/dist/commands/__tests__/eval.test.d.ts.map +0 -1
- package/dist/commands/__tests__/eval.test.js +0 -165
- package/dist/commands/__tests__/eval.test.js.map +0 -1
- package/dist/commands/__tests__/passthrough-help.test.d.ts +0 -2
- package/dist/commands/__tests__/passthrough-help.test.d.ts.map +0 -1
- package/dist/commands/__tests__/passthrough-help.test.js +0 -96
- package/dist/commands/__tests__/passthrough-help.test.js.map +0 -1
- package/dist/commands/__tests__/resume.test.d.ts +0 -15
- package/dist/commands/__tests__/resume.test.d.ts.map +0 -1
- package/dist/commands/__tests__/resume.test.js +0 -116
- package/dist/commands/__tests__/resume.test.js.map +0 -1
- package/dist/commands/__tests__/run-exit-code.test.d.ts +0 -2
- package/dist/commands/__tests__/run-exit-code.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run-exit-code.test.js +0 -100
- package/dist/commands/__tests__/run-exit-code.test.js.map +0 -1
- package/dist/commands/__tests__/run-flags.test.d.ts +0 -11
- package/dist/commands/__tests__/run-flags.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run-flags.test.js +0 -238
- package/dist/commands/__tests__/run-flags.test.js.map +0 -1
- package/dist/commands/__tests__/run-stream-flags.test.d.ts +0 -2
- package/dist/commands/__tests__/run-stream-flags.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run-stream-flags.test.js +0 -295
- package/dist/commands/__tests__/run-stream-flags.test.js.map +0 -1
- package/dist/commands/doctor.test.d.ts +0 -2
- package/dist/commands/doctor.test.d.ts.map +0 -1
- package/dist/commands/doctor.test.js +0 -82
- package/dist/commands/doctor.test.js.map +0 -1
- package/dist/config/load.test.d.ts +0 -2
- package/dist/config/load.test.d.ts.map +0 -1
- package/dist/config/load.test.js +0 -57
- package/dist/config/load.test.js.map +0 -1
- package/dist/context/__tests__/environment.test.d.ts +0 -10
- package/dist/context/__tests__/environment.test.d.ts.map +0 -1
- package/dist/context/__tests__/environment.test.js +0 -84
- package/dist/context/__tests__/environment.test.js.map +0 -1
- package/dist/context/__tests__/project.test.d.ts +0 -12
- package/dist/context/__tests__/project.test.d.ts.map +0 -1
- package/dist/context/__tests__/project.test.js +0 -201
- package/dist/context/__tests__/project.test.js.map +0 -1
- package/dist/doctor/checks/credentials.test.d.ts +0 -10
- package/dist/doctor/checks/credentials.test.d.ts.map +0 -1
- package/dist/doctor/checks/credentials.test.js +0 -47
- package/dist/doctor/checks/credentials.test.js.map +0 -1
- package/dist/doctor/checks/sandbox.test.d.ts +0 -2
- package/dist/doctor/checks/sandbox.test.d.ts.map +0 -1
- package/dist/doctor/checks/sandbox.test.js +0 -59
- package/dist/doctor/checks/sandbox.test.js.map +0 -1
- package/dist/doctor/registry.test.d.ts +0 -7
- package/dist/doctor/registry.test.d.ts.map +0 -1
- package/dist/doctor/registry.test.js +0 -379
- package/dist/doctor/registry.test.js.map +0 -1
- package/dist/integrations/mcp/__tests__/connect.test.d.ts +0 -11
- package/dist/integrations/mcp/__tests__/connect.test.d.ts.map +0 -1
- package/dist/integrations/mcp/__tests__/connect.test.js +0 -231
- package/dist/integrations/mcp/__tests__/connect.test.js.map +0 -1
- package/dist/integrations/providers/discover.test.d.ts +0 -2
- package/dist/integrations/providers/discover.test.d.ts.map +0 -1
- package/dist/integrations/providers/discover.test.js +0 -93
- package/dist/integrations/providers/discover.test.js.map +0 -1
- package/dist/integrations/providers/keychain.test.d.ts +0 -2
- package/dist/integrations/providers/keychain.test.d.ts.map +0 -1
- package/dist/integrations/providers/keychain.test.js +0 -21
- package/dist/integrations/providers/keychain.test.js.map +0 -1
- package/dist/integrations/providers/oauth.test.d.ts +0 -2
- package/dist/integrations/providers/oauth.test.d.ts.map +0 -1
- package/dist/integrations/providers/oauth.test.js +0 -86
- package/dist/integrations/providers/oauth.test.js.map +0 -1
- package/dist/integrations/providers/preferences.test.d.ts +0 -2
- package/dist/integrations/providers/preferences.test.d.ts.map +0 -1
- package/dist/integrations/providers/preferences.test.js +0 -76
- package/dist/integrations/providers/preferences.test.js.map +0 -1
- package/dist/integrations/sessions/__tests__/archived-workspace.test.d.ts +0 -21
- package/dist/integrations/sessions/__tests__/archived-workspace.test.d.ts.map +0 -1
- package/dist/integrations/sessions/__tests__/archived-workspace.test.js +0 -62
- package/dist/integrations/sessions/__tests__/archived-workspace.test.js.map +0 -1
- package/dist/integrations/subagents/__tests__/delegation-trace.test.d.ts +0 -2
- package/dist/integrations/subagents/__tests__/delegation-trace.test.d.ts.map +0 -1
- package/dist/integrations/subagents/__tests__/delegation-trace.test.js +0 -114
- package/dist/integrations/subagents/__tests__/delegation-trace.test.js.map +0 -1
- package/dist/integrations/trust/store.test.d.ts +0 -2
- package/dist/integrations/trust/store.test.d.ts.map +0 -1
- package/dist/integrations/trust/store.test.js +0 -50
- package/dist/integrations/trust/store.test.js.map +0 -1
- package/dist/memory/store.test.d.ts +0 -2
- package/dist/memory/store.test.d.ts.map +0 -1
- package/dist/memory/store.test.js +0 -63
- package/dist/memory/store.test.js.map +0 -1
- package/dist/output/formatter.test.d.ts +0 -2
- package/dist/output/formatter.test.d.ts.map +0 -1
- package/dist/output/formatter.test.js +0 -88
- package/dist/output/formatter.test.js.map +0 -1
- package/dist/output/rendered-payload.test.d.ts +0 -2
- package/dist/output/rendered-payload.test.d.ts.map +0 -1
- package/dist/output/rendered-payload.test.js +0 -61
- package/dist/output/rendered-payload.test.js.map +0 -1
- package/dist/permissions/__tests__/mode.test.d.ts +0 -10
- package/dist/permissions/__tests__/mode.test.d.ts.map +0 -1
- package/dist/permissions/__tests__/mode.test.js +0 -115
- package/dist/permissions/__tests__/mode.test.js.map +0 -1
- package/dist/permissions/__tests__/rules.test.d.ts +0 -10
- package/dist/permissions/__tests__/rules.test.d.ts.map +0 -1
- package/dist/permissions/__tests__/rules.test.js +0 -196
- package/dist/permissions/__tests__/rules.test.js.map +0 -1
- package/dist/skills/store.test.d.ts +0 -2
- package/dist/skills/store.test.d.ts.map +0 -1
- package/dist/skills/store.test.js +0 -80
- package/dist/skills/store.test.js.map +0 -1
- package/dist/tui/__tests__/context-gauge.test.d.ts +0 -2
- package/dist/tui/__tests__/context-gauge.test.d.ts.map +0 -1
- package/dist/tui/__tests__/context-gauge.test.js +0 -83
- package/dist/tui/__tests__/context-gauge.test.js.map +0 -1
- package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts +0 -24
- package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts.map +0 -1
- package/dist/tui/__tests__/deferred-tool-discovery.test.js +0 -111
- package/dist/tui/__tests__/deferred-tool-discovery.test.js.map +0 -1
- package/dist/tui/__tests__/to-agent-event.test.d.ts +0 -2
- package/dist/tui/__tests__/to-agent-event.test.d.ts.map +0 -1
- package/dist/tui/__tests__/to-agent-event.test.js +0 -230
- package/dist/tui/__tests__/to-agent-event.test.js.map +0 -1
- package/dist/tui/__tests__/working-directory.test.d.ts +0 -13
- package/dist/tui/__tests__/working-directory.test.d.ts.map +0 -1
- package/dist/tui/__tests__/working-directory.test.js +0 -109
- package/dist/tui/__tests__/working-directory.test.js.map +0 -1
- package/dist/tui/agent.test.d.ts +0 -2
- package/dist/tui/agent.test.d.ts.map +0 -1
- package/dist/tui/agent.test.js +0 -225
- package/dist/tui/agent.test.js.map +0 -1
- package/dist/tui/markdownParser.test.d.ts +0 -2
- package/dist/tui/markdownParser.test.d.ts.map +0 -1
- package/dist/tui/markdownParser.test.js +0 -90
- package/dist/tui/markdownParser.test.js.map +0 -1
- package/dist/tui/mentions.test.d.ts +0 -2
- package/dist/tui/mentions.test.d.ts.map +0 -1
- package/dist/tui/mentions.test.js +0 -35
- package/dist/tui/mentions.test.js.map +0 -1
- package/dist/tui/slashCommands.test.d.ts +0 -2
- package/dist/tui/slashCommands.test.d.ts.map +0 -1
- package/dist/tui/slashCommands.test.js +0 -114
- package/dist/tui/slashCommands.test.js.map +0 -1
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { describeIsolationHealth, sandboxPlatformCheck } from './sandbox.js';
|
|
3
|
-
/**
|
|
4
|
-
* The check used to switch on `process.platform` and answer from a table
|
|
5
|
-
* written beside it, which drifted from the runtime in both directions:
|
|
6
|
-
* it called the Linux probe unimplemented long after the provider began
|
|
7
|
-
* probing real flags, and it told a Windows operator that sandboxing is
|
|
8
|
-
* "not supported" full stop — true of the in-process tier, silent about
|
|
9
|
-
* the container tier that runs there.
|
|
10
|
-
*
|
|
11
|
-
* The verdict is tested apart from the probe on purpose. Driving the
|
|
12
|
-
* whole check can only ever exercise the outcome THIS machine produces,
|
|
13
|
-
* so the branches for the other tiers would rot unnoticed — and did: an
|
|
14
|
-
* earlier version of this file guarded every assertion behind the status
|
|
15
|
-
* it happened to get, which made two of them unreachable here.
|
|
16
|
-
*/
|
|
17
|
-
const verdict = (environment) => describeIsolationHealth(environment);
|
|
18
|
-
describe('the verdict for a host that enforces everything', () => {
|
|
19
|
-
it('passes, and names every control it is claiming', () => {
|
|
20
|
-
const result = verdict('macos-seatbelt');
|
|
21
|
-
expect(result.status).toBe('pass');
|
|
22
|
-
expect(result.message).toBe('macos-seatbelt enforces filesystem, network, process');
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
describe('the verdict for a host that enforces some of it', () => {
|
|
26
|
-
it('warns rather than passing', () => {
|
|
27
|
-
// The run that depended on the missing control is the one that gets
|
|
28
|
-
// hurt, so a partial boundary is not a whole one.
|
|
29
|
-
expect(verdict('linux-namespace').status).toBe('warn');
|
|
30
|
-
});
|
|
31
|
-
it('names what is missing, not just that something is', () => {
|
|
32
|
-
const result = verdict('linux-namespace');
|
|
33
|
-
expect(result.message).toContain('enforces network, process');
|
|
34
|
-
expect(result.message).toContain('but not filesystem');
|
|
35
|
-
});
|
|
36
|
-
it('says what to do about it', () => {
|
|
37
|
-
expect(verdict('linux-namespace').remediation).toContain('requireIsolation');
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
describe('the verdict for a host that enforces nothing', () => {
|
|
41
|
-
it('warns and says so plainly', () => {
|
|
42
|
-
const result = verdict('basic');
|
|
43
|
-
expect(result.status).toBe('warn');
|
|
44
|
-
expect(result.message).toContain('enforces nothing');
|
|
45
|
-
expect(result.message).toContain('unconfined');
|
|
46
|
-
});
|
|
47
|
-
it('points at the boundary that does work there', () => {
|
|
48
|
-
// "Not supported", with nowhere to go, is what this replaced.
|
|
49
|
-
expect(verdict('basic').remediation).toContain('container');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('the check itself', () => {
|
|
53
|
-
it('answers from the provider rather than from the OS name', async () => {
|
|
54
|
-
const result = await sandboxPlatformCheck.run({});
|
|
55
|
-
expect(['pass', 'warn', 'fail']).toContain(result.status);
|
|
56
|
-
expect(result.message).toMatch(/^(basic|linux-namespace|macos-seatbelt|sandbox probe failed)/);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=sandbox.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.test.js","sourceRoot":"","sources":["../../../src/doctor/checks/sandbox.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAE5E;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,GAAG,CAAC,WAA+B,EAAE,EAAE,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;AAEzF,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAChE,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAExC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAChE,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,oEAAoE;QACpE,kDAAkD;QAClD,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAEzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAE/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,8DAA8D;QAC9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,EAAW,CAAC,CAAA;QAE1D,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ratified in ses_007-probe-and-doctor §9 (agent working memory, gitignored).
|
|
3
|
-
* D4 = registerDoctorCheck + plugin auto-discovery + standalone-CLI /
|
|
4
|
-
* embedded-runDoctor split. D5 = sysexits exit codes (0/1/2/70).
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
7
|
-
//# sourceMappingURL=registry.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/doctor/registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,379 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ratified in ses_007-probe-and-doctor §9 (agent working memory, gitignored).
|
|
3
|
-
* D4 = registerDoctorCheck + plugin auto-discovery + standalone-CLI /
|
|
4
|
-
* embedded-runDoctor split. D5 = sysexits exit codes (0/1/2/70).
|
|
5
|
-
*/
|
|
6
|
-
import { describe, expect, it } from 'vitest';
|
|
7
|
-
import { createDoctorRegistry, runDoctor } from './registry.js';
|
|
8
|
-
function check(id, result, category = 'custom') {
|
|
9
|
-
return {
|
|
10
|
-
id,
|
|
11
|
-
category,
|
|
12
|
-
run: async () => result,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
describe('DoctorRegistry — registration', () => {
|
|
16
|
-
it('register + list returns the registered check', () => {
|
|
17
|
-
const reg = createDoctorRegistry();
|
|
18
|
-
const c = check('a', { status: 'pass' });
|
|
19
|
-
reg.register(c);
|
|
20
|
-
expect(reg.list()).toEqual([c]);
|
|
21
|
-
});
|
|
22
|
-
it('throws when registering a duplicate id without unregister', () => {
|
|
23
|
-
const reg = createDoctorRegistry();
|
|
24
|
-
reg.register(check('dup', { status: 'pass' }));
|
|
25
|
-
expect(() => reg.register(check('dup', { status: 'pass' }))).toThrow(/already registered/);
|
|
26
|
-
});
|
|
27
|
-
it('unregister removes the check', () => {
|
|
28
|
-
const reg = createDoctorRegistry();
|
|
29
|
-
reg.register(check('x', { status: 'pass' }));
|
|
30
|
-
expect(reg.unregister('x')).toBe(true);
|
|
31
|
-
expect(reg.list()).toEqual([]);
|
|
32
|
-
});
|
|
33
|
-
it('clear removes everything', () => {
|
|
34
|
-
const reg = createDoctorRegistry();
|
|
35
|
-
reg.register(check('a', { status: 'pass' }));
|
|
36
|
-
reg.register(check('b', { status: 'fail' }));
|
|
37
|
-
reg.clear();
|
|
38
|
-
expect(reg.list()).toEqual([]);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
describe('runDoctor — aggregation + summary', () => {
|
|
42
|
-
it('aggregates check results into a DoctorReport with the right summary', async () => {
|
|
43
|
-
const reg = createDoctorRegistry();
|
|
44
|
-
reg.register(check('a', { status: 'pass' }));
|
|
45
|
-
reg.register(check('b', { status: 'fail', message: 'broken' }));
|
|
46
|
-
reg.register(check('c', { status: 'inconclusive' }));
|
|
47
|
-
reg.register(check('d', { status: 'warn' }));
|
|
48
|
-
const report = await runDoctor({ registry: reg, version: '0.0.1' });
|
|
49
|
-
expect(report.summary).toEqual({
|
|
50
|
-
pass: 1,
|
|
51
|
-
fail: 1,
|
|
52
|
-
inconclusive: 1,
|
|
53
|
-
warn: 1,
|
|
54
|
-
total: 4,
|
|
55
|
-
});
|
|
56
|
-
expect(report.checks).toHaveLength(4);
|
|
57
|
-
expect(report.version).toBe('0.0.1');
|
|
58
|
-
});
|
|
59
|
-
it('exit = 0 when all pass / no fail', async () => {
|
|
60
|
-
const reg = createDoctorRegistry();
|
|
61
|
-
reg.register(check('a', { status: 'pass' }));
|
|
62
|
-
reg.register(check('b', { status: 'inconclusive' }));
|
|
63
|
-
reg.register(check('c', { status: 'warn' }));
|
|
64
|
-
const report = await runDoctor({ registry: reg });
|
|
65
|
-
expect(report.exit).toBe(0);
|
|
66
|
-
});
|
|
67
|
-
it('exit = 1 when any check fails', async () => {
|
|
68
|
-
const reg = createDoctorRegistry();
|
|
69
|
-
reg.register(check('a', { status: 'pass' }));
|
|
70
|
-
reg.register(check('b', { status: 'fail' }));
|
|
71
|
-
const report = await runDoctor({ registry: reg });
|
|
72
|
-
expect(report.exit).toBe(1);
|
|
73
|
-
});
|
|
74
|
-
it('exit = 2 (no config) when no checks registered', async () => {
|
|
75
|
-
const reg = createDoctorRegistry();
|
|
76
|
-
const report = await runDoctor({ registry: reg });
|
|
77
|
-
expect(report.exit).toBe(2);
|
|
78
|
-
expect(report.summary.total).toBe(0);
|
|
79
|
-
});
|
|
80
|
-
it('inconclusive + warn do not affect exit code', async () => {
|
|
81
|
-
const reg = createDoctorRegistry();
|
|
82
|
-
reg.register(check('a', { status: 'inconclusive' }));
|
|
83
|
-
reg.register(check('b', { status: 'warn' }));
|
|
84
|
-
const report = await runDoctor({ registry: reg });
|
|
85
|
-
expect(report.exit).toBe(0);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
describe('runDoctor — failure isolation', () => {
|
|
89
|
-
it('a throwing check is reported as fail; other checks still run', async () => {
|
|
90
|
-
const reg = createDoctorRegistry();
|
|
91
|
-
reg.register({
|
|
92
|
-
id: 'thrower',
|
|
93
|
-
category: 'custom',
|
|
94
|
-
run: async () => {
|
|
95
|
-
throw new Error('boom');
|
|
96
|
-
},
|
|
97
|
-
});
|
|
98
|
-
reg.register(check('ok', { status: 'pass' }));
|
|
99
|
-
const report = await runDoctor({ registry: reg });
|
|
100
|
-
expect(report.summary.total).toBe(2);
|
|
101
|
-
expect(report.summary.fail).toBe(1);
|
|
102
|
-
expect(report.summary.pass).toBe(1);
|
|
103
|
-
const thrower = report.checks.find((r) => r.id === 'thrower');
|
|
104
|
-
expect(thrower?.status).toBe('fail');
|
|
105
|
-
expect(thrower?.message).toMatch(/boom/);
|
|
106
|
-
});
|
|
107
|
-
it('a slow check that exceeds perCheckTimeoutMs is recorded as inconclusive', async () => {
|
|
108
|
-
const reg = createDoctorRegistry();
|
|
109
|
-
reg.register({
|
|
110
|
-
id: 'slow',
|
|
111
|
-
category: 'custom',
|
|
112
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 200)),
|
|
113
|
-
});
|
|
114
|
-
const report = await runDoctor({ registry: reg, perCheckTimeoutMs: 30 });
|
|
115
|
-
expect(report.summary.total).toBe(1);
|
|
116
|
-
const slow = report.checks[0];
|
|
117
|
-
expect(slow?.status).toBe('inconclusive');
|
|
118
|
-
expect(slow?.message).toMatch(/did not return within 30ms/);
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
describe('runDoctor — wall-clock timeout preserves completed records (ses_013 C5 fix)', () => {
|
|
122
|
-
it('fast pass + slow check exceeding wall budget → 1 pass + 1 inconclusive (NOT 2 inconclusive)', async () => {
|
|
123
|
-
const reg = createDoctorRegistry();
|
|
124
|
-
reg.register({
|
|
125
|
-
id: 'fast',
|
|
126
|
-
category: 'custom',
|
|
127
|
-
run: async () => ({ status: 'pass', message: 'instantly done' }),
|
|
128
|
-
});
|
|
129
|
-
reg.register({
|
|
130
|
-
id: 'slow',
|
|
131
|
-
category: 'custom',
|
|
132
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 200)),
|
|
133
|
-
});
|
|
134
|
-
const report = await runDoctor({
|
|
135
|
-
registry: reg,
|
|
136
|
-
wallClockTimeoutMs: 50,
|
|
137
|
-
perCheckTimeoutMs: 1000,
|
|
138
|
-
});
|
|
139
|
-
expect(report.summary.total).toBe(2);
|
|
140
|
-
expect(report.summary.pass).toBe(1);
|
|
141
|
-
expect(report.summary.inconclusive).toBe(1);
|
|
142
|
-
const fast = report.checks.find((r) => r.id === 'fast');
|
|
143
|
-
const slow = report.checks.find((r) => r.id === 'slow');
|
|
144
|
-
expect(fast?.status).toBe('pass');
|
|
145
|
-
expect(fast?.message).toBe('instantly done');
|
|
146
|
-
expect(slow?.status).toBe('inconclusive');
|
|
147
|
-
expect(slow?.message).toMatch(/wall-clock timeout/);
|
|
148
|
-
expect(slow?.message).toMatch(/before this check completed/);
|
|
149
|
-
});
|
|
150
|
-
it('all checks finish before wall-clock budget → all preserved (no overwrite)', async () => {
|
|
151
|
-
const reg = createDoctorRegistry();
|
|
152
|
-
reg.register(check('a', { status: 'pass', message: 'first' }));
|
|
153
|
-
reg.register(check('b', { status: 'fail', message: 'second' }));
|
|
154
|
-
reg.register(check('c', { status: 'warn', message: 'third' }));
|
|
155
|
-
const report = await runDoctor({
|
|
156
|
-
registry: reg,
|
|
157
|
-
wallClockTimeoutMs: 5_000,
|
|
158
|
-
});
|
|
159
|
-
expect(report.summary.total).toBe(3);
|
|
160
|
-
expect(report.checks.find((r) => r.id === 'a')?.message).toBe('first');
|
|
161
|
-
expect(report.checks.find((r) => r.id === 'b')?.message).toBe('second');
|
|
162
|
-
expect(report.checks.find((r) => r.id === 'c')?.message).toBe('third');
|
|
163
|
-
});
|
|
164
|
-
it('mixed: 2 fast pass + 1 fast fail + 1 slow → preserves 3 + 1 inconclusive on wall timeout', async () => {
|
|
165
|
-
const reg = createDoctorRegistry();
|
|
166
|
-
reg.register(check('a', { status: 'pass' }));
|
|
167
|
-
reg.register(check('b', { status: 'pass' }));
|
|
168
|
-
reg.register(check('c', { status: 'fail', message: 'expected fail' }));
|
|
169
|
-
reg.register({
|
|
170
|
-
id: 'd',
|
|
171
|
-
category: 'custom',
|
|
172
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 300)),
|
|
173
|
-
});
|
|
174
|
-
const report = await runDoctor({
|
|
175
|
-
registry: reg,
|
|
176
|
-
wallClockTimeoutMs: 50,
|
|
177
|
-
perCheckTimeoutMs: 1000,
|
|
178
|
-
});
|
|
179
|
-
expect(report.summary.pass).toBe(2);
|
|
180
|
-
expect(report.summary.fail).toBe(1);
|
|
181
|
-
expect(report.summary.inconclusive).toBe(1);
|
|
182
|
-
expect(report.summary.total).toBe(4);
|
|
183
|
-
// exit code respects: fail > 0 → 1 (not affected by inconclusive)
|
|
184
|
-
expect(report.exit).toBe(1);
|
|
185
|
-
expect(report.checks.find((r) => r.id === 'd')?.status).toBe('inconclusive');
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
describe('runDoctor — double-fire defense (ses_013 C4)', () => {
|
|
189
|
-
it('a check whose per-check timeout fires after the check resolved produces exactly one record', async () => {
|
|
190
|
-
// This timing is fragile by nature; the test asserts the contract
|
|
191
|
-
// "exactly one record per id" which holds regardless of which side
|
|
192
|
-
// of the race wins.
|
|
193
|
-
const reg = createDoctorRegistry();
|
|
194
|
-
reg.register({
|
|
195
|
-
id: 'racer',
|
|
196
|
-
category: 'custom',
|
|
197
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 25)),
|
|
198
|
-
});
|
|
199
|
-
const report = await runDoctor({
|
|
200
|
-
registry: reg,
|
|
201
|
-
perCheckTimeoutMs: 25, // intentionally close to the check's 25ms
|
|
202
|
-
wallClockTimeoutMs: 1000,
|
|
203
|
-
});
|
|
204
|
-
expect(report.summary.total).toBe(1);
|
|
205
|
-
expect(report.checks).toHaveLength(1);
|
|
206
|
-
const racer = report.checks[0];
|
|
207
|
-
// Whichever side won, exactly ONE record exists (no duplicate).
|
|
208
|
-
expect(['pass', 'inconclusive']).toContain(racer?.status);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
describe('runDoctor — category filter', () => {
|
|
212
|
-
it('only runs checks matching the requested category', async () => {
|
|
213
|
-
const reg = createDoctorRegistry();
|
|
214
|
-
reg.register(check('a', { status: 'pass' }, 'sandbox'));
|
|
215
|
-
reg.register(check('b', { status: 'pass' }, 'providers'));
|
|
216
|
-
reg.register(check('c', { status: 'pass' }, 'sandbox'));
|
|
217
|
-
const report = await runDoctor({ registry: reg, categories: ['sandbox'] });
|
|
218
|
-
expect(report.summary.total).toBe(2);
|
|
219
|
-
expect(report.checks.every((r) => r.category === 'sandbox')).toBe(true);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
describe('runDoctor — context plumbing', () => {
|
|
223
|
-
it('passes cwd / env / projectRoot to the check', async () => {
|
|
224
|
-
const reg = createDoctorRegistry();
|
|
225
|
-
let observedCwd;
|
|
226
|
-
let observedRoot;
|
|
227
|
-
reg.register({
|
|
228
|
-
id: 'context-probe',
|
|
229
|
-
category: 'custom',
|
|
230
|
-
run: async (ctx) => {
|
|
231
|
-
observedCwd = ctx.cwd;
|
|
232
|
-
observedRoot = ctx.projectRoot;
|
|
233
|
-
return { status: 'pass' };
|
|
234
|
-
},
|
|
235
|
-
});
|
|
236
|
-
await runDoctor({
|
|
237
|
-
registry: reg,
|
|
238
|
-
cwd: '/tmp/fake',
|
|
239
|
-
projectRoot: '/projects/x',
|
|
240
|
-
});
|
|
241
|
-
expect(observedCwd).toBe('/tmp/fake');
|
|
242
|
-
expect(observedRoot).toBe('/projects/x');
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
describe('runDoctor — report shape', () => {
|
|
246
|
-
it('produces a frozen report with timestamp', async () => {
|
|
247
|
-
const reg = createDoctorRegistry();
|
|
248
|
-
reg.register(check('a', { status: 'pass' }));
|
|
249
|
-
const report = await runDoctor({ registry: reg });
|
|
250
|
-
expect(Object.isFrozen(report)).toBe(true);
|
|
251
|
-
expect(report.timestamp).toMatch(/^\d{4}-\d{2}-\d{2}T/);
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
describe('runDoctor — onCheckStart / onCheckComplete callbacks (ses_013 Phase 1)', () => {
|
|
255
|
-
it('onCheckStart fires before onCheckComplete for the same id', async () => {
|
|
256
|
-
const reg = createDoctorRegistry();
|
|
257
|
-
reg.register(check('a', { status: 'pass' }));
|
|
258
|
-
reg.register(check('b', { status: 'fail', message: 'broken' }));
|
|
259
|
-
const events = [];
|
|
260
|
-
await runDoctor({
|
|
261
|
-
registry: reg,
|
|
262
|
-
onCheckStart: (c) => events.push(`start:${c.id}`),
|
|
263
|
-
onCheckComplete: (r) => events.push(`done:${r.id}`),
|
|
264
|
-
});
|
|
265
|
-
// Independently per id, start must precede done.
|
|
266
|
-
const startA = events.indexOf('start:a');
|
|
267
|
-
const doneA = events.indexOf('done:a');
|
|
268
|
-
const startB = events.indexOf('start:b');
|
|
269
|
-
const doneB = events.indexOf('done:b');
|
|
270
|
-
expect(startA).toBeGreaterThanOrEqual(0);
|
|
271
|
-
expect(doneA).toBeGreaterThan(startA);
|
|
272
|
-
expect(startB).toBeGreaterThanOrEqual(0);
|
|
273
|
-
expect(doneB).toBeGreaterThan(startB);
|
|
274
|
-
});
|
|
275
|
-
it('both callbacks fire exactly once per check, even when per-check timeout races', async () => {
|
|
276
|
-
const reg = createDoctorRegistry();
|
|
277
|
-
reg.register({
|
|
278
|
-
id: 'racer',
|
|
279
|
-
category: 'custom',
|
|
280
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 25)),
|
|
281
|
-
});
|
|
282
|
-
const startCount = {};
|
|
283
|
-
const doneCount = {};
|
|
284
|
-
await runDoctor({
|
|
285
|
-
registry: reg,
|
|
286
|
-
perCheckTimeoutMs: 25,
|
|
287
|
-
onCheckStart: (c) => {
|
|
288
|
-
startCount[c.id] = (startCount[c.id] ?? 0) + 1;
|
|
289
|
-
},
|
|
290
|
-
onCheckComplete: (r) => {
|
|
291
|
-
doneCount[r.id] = (doneCount[r.id] ?? 0) + 1;
|
|
292
|
-
},
|
|
293
|
-
});
|
|
294
|
-
expect(startCount.racer).toBe(1);
|
|
295
|
-
expect(doneCount.racer).toBe(1);
|
|
296
|
-
});
|
|
297
|
-
it('a throwing onCheckStart does NOT affect the DoctorReport (ses_013 C3)', async () => {
|
|
298
|
-
const reg = createDoctorRegistry();
|
|
299
|
-
reg.register(check('a', { status: 'pass', message: 'still here' }));
|
|
300
|
-
reg.register(check('b', { status: 'fail', message: 'still failed' }));
|
|
301
|
-
const report = await runDoctor({
|
|
302
|
-
registry: reg,
|
|
303
|
-
onCheckStart: () => {
|
|
304
|
-
throw new Error('start handler exploded');
|
|
305
|
-
},
|
|
306
|
-
});
|
|
307
|
-
expect(report.summary.total).toBe(2);
|
|
308
|
-
expect(report.summary.pass).toBe(1);
|
|
309
|
-
expect(report.summary.fail).toBe(1);
|
|
310
|
-
expect(report.checks.find((r) => r.id === 'a')?.message).toBe('still here');
|
|
311
|
-
});
|
|
312
|
-
it('a throwing onCheckComplete does NOT affect the DoctorReport (ses_013 C3)', async () => {
|
|
313
|
-
const reg = createDoctorRegistry();
|
|
314
|
-
reg.register(check('a', { status: 'pass' }));
|
|
315
|
-
const report = await runDoctor({
|
|
316
|
-
registry: reg,
|
|
317
|
-
onCheckComplete: () => {
|
|
318
|
-
throw new Error('complete handler exploded');
|
|
319
|
-
},
|
|
320
|
-
});
|
|
321
|
-
expect(report.summary.total).toBe(1);
|
|
322
|
-
expect(report.summary.pass).toBe(1);
|
|
323
|
-
expect(report.exit).toBe(0);
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
describe('runDoctor — signal abort (ses_013 Phase 1)', () => {
|
|
327
|
-
it('signal already aborted before run → all checks marked inconclusive immediately', async () => {
|
|
328
|
-
const reg = createDoctorRegistry();
|
|
329
|
-
reg.register(check('a', { status: 'pass' }));
|
|
330
|
-
reg.register(check('b', { status: 'pass' }));
|
|
331
|
-
const controller = new AbortController();
|
|
332
|
-
controller.abort();
|
|
333
|
-
const report = await runDoctor({
|
|
334
|
-
registry: reg,
|
|
335
|
-
signal: controller.signal,
|
|
336
|
-
perCheckTimeoutMs: 5_000,
|
|
337
|
-
wallClockTimeoutMs: 5_000,
|
|
338
|
-
});
|
|
339
|
-
expect(report.summary.total).toBe(2);
|
|
340
|
-
// Either all inconclusive (abort wins the race), OR some completed
|
|
341
|
-
// if the synchronous check resolved before the race. The contract is
|
|
342
|
-
// "no checks should hang indefinitely" — the report should return
|
|
343
|
-
// promptly, not wait 5s.
|
|
344
|
-
expect(report.summary.fail).toBe(0);
|
|
345
|
-
expect(report.checks.every((r) => ['pass', 'inconclusive'].includes(r.status))).toBe(true);
|
|
346
|
-
// Inconclusive records carry the "aborted by signal" message.
|
|
347
|
-
const inconclusiveOnes = report.checks.filter((r) => r.status === 'inconclusive');
|
|
348
|
-
for (const r of inconclusiveOnes) {
|
|
349
|
-
expect(r.message).toMatch(/aborted by signal/);
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
|
-
it('signal aborted mid-run → completed checks preserved, in-flight marked aborted-inconclusive', async () => {
|
|
353
|
-
const reg = createDoctorRegistry();
|
|
354
|
-
reg.register(check('fast', { status: 'pass', message: 'finished' }));
|
|
355
|
-
reg.register({
|
|
356
|
-
id: 'slow',
|
|
357
|
-
category: 'custom',
|
|
358
|
-
run: () => new Promise((resolve) => setTimeout(() => resolve({ status: 'pass' }), 500)),
|
|
359
|
-
});
|
|
360
|
-
const controller = new AbortController();
|
|
361
|
-
// Abort after the fast check has had time to finish but before the
|
|
362
|
-
// slow check resolves.
|
|
363
|
-
setTimeout(() => controller.abort(), 50);
|
|
364
|
-
const report = await runDoctor({
|
|
365
|
-
registry: reg,
|
|
366
|
-
signal: controller.signal,
|
|
367
|
-
perCheckTimeoutMs: 5_000,
|
|
368
|
-
wallClockTimeoutMs: 5_000,
|
|
369
|
-
});
|
|
370
|
-
expect(report.summary.total).toBe(2);
|
|
371
|
-
const fast = report.checks.find((r) => r.id === 'fast');
|
|
372
|
-
const slow = report.checks.find((r) => r.id === 'slow');
|
|
373
|
-
expect(fast?.status).toBe('pass');
|
|
374
|
-
expect(fast?.message).toBe('finished');
|
|
375
|
-
expect(slow?.status).toBe('inconclusive');
|
|
376
|
-
expect(slow?.message).toMatch(/aborted by signal/);
|
|
377
|
-
});
|
|
378
|
-
});
|
|
379
|
-
//# sourceMappingURL=registry.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/doctor/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An external tool server declared in the config is actually reachable.
|
|
3
|
-
*
|
|
4
|
-
* The server here is a REAL child process speaking real JSON-RPC over stdio,
|
|
5
|
-
* written to a temp file and spawned by the shipped transport. A stubbed
|
|
6
|
-
* transport would prove the adapter agrees with itself and would say nothing
|
|
7
|
-
* about the thing that actually breaks: a process that spawns, or does not, and
|
|
8
|
-
* a handshake that answers, or does not.
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=connect.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.test.d.ts","sourceRoot":"","sources":["../../../../src/integrations/mcp/__tests__/connect.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|