chore(cli): typecheck clean (10 → 0)
- broker-actions: msg-status section header used out-of-scope `id` variable; was a real bug (renders "message undefined…" on the JSON path). Fixed to use the in-scope lookupId. - exit-codes: add IO_ERROR (10) — referenced in three places by platform-actions but never declared. - types/text-import.d.ts: declare wildcard `*.md` module so Bun's text-import attribute used by skill.ts typechecks. - ipc/server: cast PeerSummary/SkillSummary through unknown before spreading into Record<string, unknown>. - mcp/server: typed JSON.parse for SSE events. - bridge/daemon-route: import path with .ts → .js (esm). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -194,7 +194,7 @@ export async function runMsgStatus(id: string | undefined, opts: StateFlags): Pr
|
||||
console.log(JSON.stringify(result, null, 2));
|
||||
return EXIT.SUCCESS;
|
||||
}
|
||||
render.section(`message ${id.slice(0, 12)}…`);
|
||||
render.section(`message ${lookupId.slice(0, 12)}…`);
|
||||
render.kv([
|
||||
["target", result.targetSpec],
|
||||
["delivered", result.delivered ? "yes" : "no"],
|
||||
|
||||
@@ -9,6 +9,7 @@ export const EXIT = {
|
||||
PERMISSION_DENIED: 7,
|
||||
INTERNAL_ERROR: 8,
|
||||
CLAUDE_MISSING: 9,
|
||||
IO_ERROR: 10,
|
||||
} as const;
|
||||
|
||||
export type ExitCode = (typeof EXIT)[keyof typeof EXIT];
|
||||
|
||||
@@ -328,7 +328,7 @@ function makeHandler(opts: {
|
||||
if (filterMesh && filterMesh !== slug) continue;
|
||||
try {
|
||||
const peers = await b.listPeers();
|
||||
for (const p of peers) all.push({ ...(p as Record<string, unknown>), mesh: slug });
|
||||
for (const p of peers) all.push({ ...(p as unknown as Record<string, unknown>), mesh: slug });
|
||||
} catch (e) {
|
||||
opts.log("warn", "ipc_peers_broker_failed", { mesh: slug, err: String(e) });
|
||||
}
|
||||
@@ -486,7 +486,7 @@ function makeHandler(opts: {
|
||||
if (filterMesh && filterMesh !== slug) continue;
|
||||
try {
|
||||
const skills = await b.listSkills(query);
|
||||
for (const s of skills) all.push({ ...(s as Record<string, unknown>), mesh: slug });
|
||||
for (const s of skills) all.push({ ...(s as unknown as Record<string, unknown>), mesh: slug });
|
||||
} catch (e) {
|
||||
opts.log("warn", "ipc_skills_broker_failed", { mesh: slug, err: String(e) });
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ function subscribeEvents(onEvent: (e: DaemonEvent) => void): { close: () => void
|
||||
}
|
||||
if (!dataLine) continue;
|
||||
try {
|
||||
const parsed = JSON.parse(dataLine);
|
||||
const parsed = JSON.parse(dataLine) as Record<string, unknown>;
|
||||
onEvent({ kind, ts: String(parsed.ts ?? ""), data: parsed });
|
||||
} catch { /* malformed event; skip */ }
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
import { ipc } from "~/daemon/ipc/client.js";
|
||||
import { ensureDaemonReady } from "~/services/daemon/lifecycle.js";
|
||||
import { getDaemonPolicy } from "~/services/daemon/policy.js";
|
||||
import { warnDaemonState } from "~/ui/warnings.ts";
|
||||
import { warnDaemonState } from "~/ui/warnings.js";
|
||||
|
||||
function meshQuery(mesh?: string): string {
|
||||
return mesh ? `?mesh=${encodeURIComponent(mesh)}` : "";
|
||||
|
||||
9
apps/cli/src/types/text-import.d.ts
vendored
Normal file
9
apps/cli/src/types/text-import.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Bun's text-import attribute lets us bake `.md` content into the bundle
|
||||
* at build time. TypeScript doesn't know about the import attribute
|
||||
* syntax for non-JS modules, so we declare the wildcard here.
|
||||
*/
|
||||
declare module "*.md" {
|
||||
const content: string;
|
||||
export default content;
|
||||
}
|
||||
Reference in New Issue
Block a user