Browse Source

chore: upgrade TypeScript 5 → 6.0 and fix noNonNullAssertion warnings

- Upgrade TypeScript from 5.x to 6.0.3
- Fix 10 noNonNullAssertion warnings in agent permission tests
  using Record<string, unknown> cast instead of !
- Eliminates all lint warnings on check:ci

Ref #798
Michael Henke 3 weeks ago
parent
commit
5806a0d72c
3 changed files with 43 additions and 15 deletions
  1. 2 2
      bun.lock
  2. 1 1
      package.json
  3. 40 12
      src/agents/index.test.ts

+ 2 - 2
bun.lock

@@ -20,7 +20,7 @@
         "@types/turndown": "^5.0.6",
         "all-contributors-cli": "^6.26.1",
         "bun-types": "^1.3.14",
-        "typescript": "^5.9.3",
+        "typescript": "6.0",
         "zod": "^4.4.3",
       },
       "optionalDependencies": {
@@ -737,7 +737,7 @@
 
     "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
 
-    "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+    "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
 
     "undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
 

+ 1 - 1
package.json

@@ -96,7 +96,7 @@
     "@types/turndown": "^5.0.6",
     "all-contributors-cli": "^6.26.1",
     "bun-types": "^1.3.14",
-    "typescript": "^5.9.3",
+    "typescript": "6.0",
     "zod": "^4.4.3"
   },
   "peerDependencies": {

+ 40 - 12
src/agents/index.test.ts

@@ -176,21 +176,28 @@ describe('orchestrator agent', () => {
     const agents = createAgents();
     const orchestrator = agents.find((a) => a.name === 'orchestrator');
     expect(orchestrator?.config.permission).toBeDefined();
-    expect((orchestrator!.config.permission as any).question).toBe('allow');
+    expect(
+      (orchestrator as { config: { permission: Record<string, unknown> } })
+        .config.permission.question,
+    ).toBe('allow');
   });
 
   test('orchestrator is denied access to council_session', () => {
     const agents = createAgents();
     const orchestrator = agents.find((a) => a.name === 'orchestrator');
-    expect((orchestrator!.config.permission as any).council_session).toBe(
-      'deny',
-    );
+    expect(
+      (orchestrator as { config: { permission: Record<string, unknown> } })
+        .config.permission.council_session,
+    ).toBe('deny');
   });
 
   test('orchestrator is allowed to invoke cancel_task', () => {
     const agents = createAgents();
     const orchestrator = agents.find((a) => a.name === 'orchestrator');
-    expect((orchestrator!.config.permission as any).cancel_task).toBe('allow');
+    expect(
+      (orchestrator as { config: { permission: Record<string, unknown> } })
+        .config.permission.cancel_task,
+    ).toBe('allow');
   });
 
   test('orchestrator accepts overrides', () => {
@@ -336,43 +343,64 @@ describe('tool permissions', () => {
       council: councilConfig(),
     });
     const council = agents.find((a) => a.name === 'council');
-    expect((council!.config.permission as any).council_session).toBe('allow');
+    expect(
+      (council as { config: { permission: Record<string, unknown> } }).config
+        .permission.council_session,
+    ).toBe('allow');
   });
 
   test('oracle is denied access to council_session', () => {
     const agents = createAgents();
     const oracle = agents.find((a) => a.name === 'oracle');
-    expect((oracle!.config.permission as any).council_session).toBe('deny');
+    expect(
+      (oracle as { config: { permission: Record<string, unknown> } }).config
+        .permission.council_session,
+    ).toBe('deny');
   });
 
   test('explorer is denied access to council_session', () => {
     const agents = createAgents();
     const explorer = agents.find((a) => a.name === 'explorer');
-    expect((explorer!.config.permission as any).council_session).toBe('deny');
+    expect(
+      (explorer as { config: { permission: Record<string, unknown> } }).config
+        .permission.council_session,
+    ).toBe('deny');
   });
 
   test('councillor is denied access to council_session', () => {
     const agents = createAgents();
     const councillor = agents.find((a) => a.name === 'councillor');
-    expect((councillor!.config.permission as any).council_session).toBe('deny');
+    expect(
+      (councillor as { config: { permission: Record<string, unknown> } }).config
+        .permission.council_session,
+    ).toBe('deny');
   });
 
   test('oracle is denied access to cancel_task', () => {
     const agents = createAgents();
     const oracle = agents.find((a) => a.name === 'oracle');
-    expect((oracle!.config.permission as any).cancel_task).toBe('deny');
+    expect(
+      (oracle as { config: { permission: Record<string, unknown> } }).config
+        .permission.cancel_task,
+    ).toBe('deny');
   });
 
   test('explorer is denied access to cancel_task', () => {
     const agents = createAgents();
     const explorer = agents.find((a) => a.name === 'explorer');
-    expect((explorer!.config.permission as any).cancel_task).toBe('deny');
+    expect(
+      (explorer as { config: { permission: Record<string, unknown> } }).config
+        .permission.cancel_task,
+    ).toBe('deny');
   });
 
   test('fixer is denied access to cancel_task', () => {
     const agents = createAgents();
     const fixer = agents.find((a) => a.name === 'fixer');
-    expect((fixer!.config.permission as any).cancel_task).toBe('deny');
+    expect(
+      (fixer as { config: { permission: Record<string, unknown> } }).config
+        .permission.cancel_task,
+    ).toBe('deny');
   });
 
   test('council agent is read-only except council_session', () => {