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));
|
console.log(JSON.stringify(result, null, 2));
|
||||||
return EXIT.SUCCESS;
|
return EXIT.SUCCESS;
|
||||||
}
|
}
|
||||||
render.section(`message ${id.slice(0, 12)}…`);
|
render.section(`message ${lookupId.slice(0, 12)}…`);
|
||||||
render.kv([
|
render.kv([
|
||||||
["target", result.targetSpec],
|
["target", result.targetSpec],
|
||||||
["delivered", result.delivered ? "yes" : "no"],
|
["delivered", result.delivered ? "yes" : "no"],
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export const EXIT = {
|
|||||||
PERMISSION_DENIED: 7,
|
PERMISSION_DENIED: 7,
|
||||||
INTERNAL_ERROR: 8,
|
INTERNAL_ERROR: 8,
|
||||||
CLAUDE_MISSING: 9,
|
CLAUDE_MISSING: 9,
|
||||||
|
IO_ERROR: 10,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export type ExitCode = (typeof EXIT)[keyof typeof EXIT];
|
export type ExitCode = (typeof EXIT)[keyof typeof EXIT];
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ function makeHandler(opts: {
|
|||||||
if (filterMesh && filterMesh !== slug) continue;
|
if (filterMesh && filterMesh !== slug) continue;
|
||||||
try {
|
try {
|
||||||
const peers = await b.listPeers();
|
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) {
|
} catch (e) {
|
||||||
opts.log("warn", "ipc_peers_broker_failed", { mesh: slug, err: String(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;
|
if (filterMesh && filterMesh !== slug) continue;
|
||||||
try {
|
try {
|
||||||
const skills = await b.listSkills(query);
|
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) {
|
} catch (e) {
|
||||||
opts.log("warn", "ipc_skills_broker_failed", { mesh: slug, err: String(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;
|
if (!dataLine) continue;
|
||||||
try {
|
try {
|
||||||
const parsed = JSON.parse(dataLine);
|
const parsed = JSON.parse(dataLine) as Record<string, unknown>;
|
||||||
onEvent({ kind, ts: String(parsed.ts ?? ""), data: parsed });
|
onEvent({ kind, ts: String(parsed.ts ?? ""), data: parsed });
|
||||||
} catch { /* malformed event; skip */ }
|
} catch { /* malformed event; skip */ }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import { ipc } from "~/daemon/ipc/client.js";
|
import { ipc } from "~/daemon/ipc/client.js";
|
||||||
import { ensureDaemonReady } from "~/services/daemon/lifecycle.js";
|
import { ensureDaemonReady } from "~/services/daemon/lifecycle.js";
|
||||||
import { getDaemonPolicy } from "~/services/daemon/policy.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 {
|
function meshQuery(mesh?: string): string {
|
||||||
return mesh ? `?mesh=${encodeURIComponent(mesh)}` : "";
|
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