repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/klaus/src/debug.ts
Rawimport { defineDebug } from "./pi-ext-debug.ts";
const events = [
"index.module",
"index.extension.start",
"index.oauth.model",
"index.oauth.kind",
"index.oauth.resolved",
"index.oauth.fableWarning",
"index.currentCwd",
"index.currentSession",
"index.promptDriftWarning",
"index.register.unchanged",
"index.register",
"index.streamSimple",
"index.session_start",
"index.turn_end",
"index.session_before_switch",
"index.session_before_fork",
"index.session_before_compact",
"index.session_shutdown",
"bridge.settle.truncated",
"bridge.create",
"bridge.listTools",
"bridge.callTool.start",
"bridge.callTool.park",
"bridge.allow",
"bridge.toolNames",
"bridge.replaceTools",
"bridge.hasSchemaChange",
"bridge.pendingIds",
"bridge.waitForPending.start",
"bridge.waitForPending.end",
"bridge.settle.start",
"bridge.settle.end",
"bridge.close.start",
"bridge.close.end",
"bridge.errorResult",
"subscriptionPrompt.rewrite",
"replay.visibleMessage",
"replay.contentImages",
"replay.images.start",
"replay.images.end",
"replay.prompt.start",
"replay.prompt.end",
"setupToken.exchange.start",
"setupToken.exchange.response",
"setupToken.command.start",
"setupToken.command.cancelled",
"setupToken.command.minted",
"setupToken.command.denied",
"runtime.standard.platformKey.start",
"runtime.standard.resolve.start",
"runtime.standard.resolve.end",
"runtime.standard.resolveCached",
"runtime.standard.resolve.error",
"runtime.customHeaders.start",
"runtime.customHeaders.end",
"runtime.create.start",
"runtime.create.configDir",
"runtime.cleanup.start",
"runtime.cleanup.end",
"runtime.create.ready",
"runtime.create.error",
"runtime.android.stateRoot",
"runtime.android.executableOnPath.start",
"runtime.android.executableOnPath.found",
"runtime.android.executableOnPath.missing",
"runtime.android.validLauncher.start",
"runtime.android.validLauncher.valid",
"runtime.android.validLauncher.invalid",
"runtime.android.resolve",
"runtime.android.resolve.error",
"runtime.android.prepare.start",
"runtime.android.prepare.reuse",
"runtime.android.prepare.install",
"runtime.android.prepare.installed",
"runtime.android.prepare.error",
"sdk.prompt.yield",
"sdk.toolSchemaError",
"sdk.prompt.build",
"sdk.start",
"sdk.runtime.ready",
"sdk.bridge.ready",
"sdk.interrupt.start",
"sdk.interrupt.end",
"sdk.cleanup.request",
"sdk.cleanup.start",
"sdk.cleanup.end",
"sdk.close.request",
"sdk.close.abort",
"sdk.query.call",
"sdk.stderr",
"sdk.hook.preToolUse",
"sdk.canUseTool",
"sdk.query.returned",
"sdk.query.error",
"sdk.pump.start",
"sdk.pump.message",
"sdk.position.candidate",
"sdk.pump.error",
"sdk.pump.finally",
"sdk.handle.ready",
"sdk.setTools",
"sdk.send",
"sdk.handleMessage",
"sdk.message.init",
"sdk.message.assistant",
"sdk.message.mirror_error",
"sdk.message.apiRetry",
"sdk.message.permissionDenied",
"sdk.message.workerShuttingDown",
"sdk.message.informational",
"sdk.message.rateLimitRejected",
"sdk.message.result",
"sdk.message.resultError",
"sdk.streamEvent",
"sdk.contentBlock.stop",
"sdk.messageDelta",
"coordinator.sink.create",
"coordinator.sink.content",
"coordinator.sink.toolUse",
"coordinator.sink.done",
"coordinator.sink.error",
"coordinator.create",
"coordinator.stream",
"coordinator.preparePrimaryCache",
"coordinator.persistCheckpoint.start",
"coordinator.persistCheckpoint.skip",
"coordinator.persistCheckpoint.position",
"coordinator.persistCheckpoint.end",
"coordinator.closeAll.start",
"coordinator.closeAll.end",
"coordinator.invoke.start",
"coordinator.invoke.batch",
"coordinator.invoke.continuation",
"coordinator.invoke.compatibility",
"coordinator.invoke.error",
"coordinator.start.begin",
"coordinator.start.cacheReady",
"coordinator.start.memoryCandidate",
"coordinator.start.checkpointLoadError",
"coordinator.start.candidates",
"coordinator.start.completed",
"coordinator.start.reuseFit",
"coordinator.start.resumePlan",
"coordinator.start.request",
"coordinator.start.payloadHook",
"coordinator.start.payloadTransformed",
"coordinator.start.scope",
"coordinator.start.reuseRejectedByHook",
"coordinator.start.stateAdded",
"coordinator.callback.ready",
"coordinator.callback.activity",
"coordinator.callback.notice",
"coordinator.callback.content",
"coordinator.callback.toolBoundary",
"coordinator.callback.result",
"coordinator.checkpoint.published",
"coordinator.callback.error",
"coordinator.reuse.swapTools",
"coordinator.reuse.send",
"coordinator.reuse.error",
"coordinator.oauth.resolve.start",
"coordinator.oauth.resolve.end",
"coordinator.sdk.start",
"coordinator.sdk.started",
"coordinator.handle.attached",
"coordinator.start.error",
"coordinator.keepForReuse",
"coordinator.findReusable",
"coordinator.findContinuation",
"coordinator.addState",
"coordinator.replaceAbort",
"coordinator.touchState",
"coordinator.checkpointRoot",
"coordinator.storeFor",
"coordinator.armTimeout",
"coordinator.closeState.start",
"coordinator.closeState.end",
"coordinator.thinkingBudget",
"coordinator.finalUserPrompt",
"coordinator.recentToolResults.start",
"coordinator.recentToolResults.end",
"coordinator.isRequest",
"cache.validateEntry",
"cache.memory.append.start",
"cache.memory.append.end",
"cache.memory.load",
"cache.memory.listSubkeys",
"cache.checkpoints.load.start",
"cache.checkpoints.load.end",
"cache.checkpoint.load",
"cache.checkpoint.save.start",
"cache.checkpoint.save.end",
"cache.staging.create",
"cache.staging.append",
"cache.staging.load",
"cache.staging.listSubkeys",
"cache.staging.commit.start",
"cache.staging.commit.batch",
"cache.staging.commit.end",
"cache.file.create",
"cache.file.ensureManifest",
"cache.file.prepare.start",
"cache.file.prepare.end",
"cache.file.append.start",
"cache.file.append.end",
"cache.file.load.start",
"cache.file.listSubkeys",
"models.clamp",
"models.projectModel",
"models.projectModels",
"protocol.isKlausModelId",
"protocol.toKlausTools",
"protocol.requiredConstrainedTool",
"protocol.emptyUsage",
"protocol.createAssistant",
"protocol.modelFacingContent",
"protocol.contextFingerprint.start",
"protocol.contextFingerprint.end",
"test.event",
"test.env",
"test.disabled",
"test.failure",
] as const;
export const {
dbg,
span: debugSpan,
closeDebug,
} = defineDebug({
events,
spans: ["test.operation", "index.oauth", "index.flush"],
fields: {
found: "boolean",
usingOAuth: "boolean",
hasAuth: "boolean",
hasScope: "boolean",
hasLeaf: "boolean",
persisted: "boolean",
alreadyWarned: "boolean",
copied: "boolean",
closed: "boolean",
finished: "boolean",
aborted: "boolean",
hasCheckpoint: "boolean",
hasRoot: "boolean",
hasHandle: "boolean",
linearResume: "boolean",
enabled: "boolean",
transformed: "boolean",
hadSignal: "boolean",
isPiSystemPrompt: "boolean",
existing: "boolean",
changed: "boolean",
incompatible: "boolean",
cached: "boolean",
count: "number",
length: "number",
index: "number",
toolCount: "number",
resultCount: "number",
stateCount: "number",
batchCount: "number",
storedCount: "number",
entryCount: "number",
imageCount: "number",
imageIndex: "number",
originalLength: "number",
forwardedCount: "number",
messageCount: "number",
promptLength: "number",
outputBytes: "number",
retries: "number",
timeoutMs: "number",
attempt: "number",
mode: ["tui", "rpc", "json", "print"],
kind: [
"missing-resume-uuid",
"revoked-oauth",
"redacted",
"nu",
"mcp",
"aborted",
"failure",
"host",
"oauth",
"flush",
],
type: ["system", "assistant", "user", "result", "stream_event"],
subtype: [
"init",
"success",
"error",
"api_error",
"rate_limit",
"tool_use",
"tool_result",
],
},
} as const);
export function diagnosticKind(
value: unknown,
): "missing-resume-uuid" | "revoked-oauth" | "redacted" {
try {
const text = value instanceof Error ? value.message : String(value);
if (/No message found with message\.uuid of:/i.test(text))
return "missing-resume-uuid";
if (/OAuth access token has been revoked/i.test(text))
return "revoked-oauth";
} catch {
// Debugging must not surface hostile values.
}
return "redacted";
}