autodev-cli 1.4.131 → 1.4.133
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/LICENSE.md +21 -0
- package/media/profile/00b-self-verifiable-work.md +62 -0
- package/media/profile/00c-verifiable-threads.md +78 -0
- package/media/profile/00d-turn-end-retrospective.md +61 -0
- package/media/profile/00e-long-horizon-planning.md +83 -0
- package/out/commands/office.js +4 -0
- package/out/commands/office.js.map +1 -1
- package/out/commands/start.js +1 -1
- package/out/commands/start.js.map +1 -1
- package/out/core/claudeUsage.d.ts +1 -26
- package/out/core/claudeUsage.js +15 -91
- package/out/core/claudeUsage.js.map +1 -1
- package/out/core/modelInfo.d.ts +1 -28
- package/out/core/modelInfo.js +15 -94
- package/out/core/modelInfo.js.map +1 -1
- package/out/core/provider/BaseProvider.d.ts +1 -14
- package/out/core/provider/BaseProvider.js +15 -22
- package/out/core/provider/BaseProvider.js.map +1 -1
- package/out/core/provider/ProviderRegistry.d.ts +1 -12
- package/out/core/provider/ProviderRegistry.js +15 -38
- package/out/core/provider/ProviderRegistry.js.map +1 -1
- package/out/core/provider/contract.d.ts +1 -62
- package/out/core/provider/contract.js +15 -6
- package/out/core/provider/contract.js.map +1 -1
- package/out/core/provider/implementations.d.ts +1 -65
- package/out/core/provider/implementations.js +4 -169
- package/out/core/provider/implementations.js.map +1 -1
- package/out/dispatcher.js +7 -0
- package/out/dispatcher.js.map +1 -1
- package/out/hookEventNormalizer.d.ts +1 -33
- package/out/hookEventNormalizer.js +15 -424
- package/out/hookEventNormalizer.js.map +1 -1
- package/out/profileBuilder.js +32 -0
- package/out/profileBuilder.js.map +1 -1
- package/out/providers/base/BaseProvider.d.ts +14 -0
- package/out/providers/base/BaseProvider.js +25 -0
- package/out/providers/base/BaseProvider.js.map +1 -0
- package/out/providers/base/ProviderEvents.d.ts +12 -0
- package/out/providers/base/ProviderEvents.js +81 -0
- package/out/providers/base/ProviderEvents.js.map +1 -0
- package/out/providers/base/ProviderManager.d.ts +25 -0
- package/out/providers/base/ProviderManager.js +22 -0
- package/out/providers/base/ProviderManager.js.map +1 -0
- package/out/providers/base/ProviderModels.d.ts +28 -0
- package/out/providers/base/ProviderModels.js +89 -0
- package/out/providers/base/ProviderModels.js.map +1 -0
- package/out/providers/base/ProviderNormalizer.d.ts +42 -0
- package/out/providers/base/ProviderNormalizer.js +439 -0
- package/out/providers/base/ProviderNormalizer.js.map +1 -0
- package/out/providers/base/ProviderRegistry.d.ts +12 -0
- package/out/providers/base/ProviderRegistry.js +42 -0
- package/out/providers/base/ProviderRegistry.js.map +1 -0
- package/out/providers/base/ProviderSessions.d.ts +15 -0
- package/out/providers/base/ProviderSessions.js +15 -0
- package/out/providers/base/ProviderSessions.js.map +1 -0
- package/out/providers/base/ProviderState.d.ts +9 -0
- package/out/providers/base/ProviderState.js +16 -0
- package/out/providers/base/ProviderState.js.map +1 -0
- package/out/providers/base/ProviderUsage.d.ts +12 -0
- package/out/providers/base/ProviderUsage.js +33 -0
- package/out/providers/base/ProviderUsage.js.map +1 -0
- package/out/providers/base/contract.d.ts +62 -0
- package/out/providers/base/contract.js +9 -0
- package/out/providers/base/contract.js.map +1 -0
- package/out/providers/base/factories.d.ts +64 -0
- package/out/providers/base/factories.js +265 -0
- package/out/providers/base/factories.js.map +1 -0
- package/out/providers/base/implementations.d.ts +5 -0
- package/out/providers/base/implementations.js +23 -0
- package/out/providers/base/implementations.js.map +1 -0
- package/out/providers/base/index.d.ts +13 -0
- package/out/providers/base/index.js +29 -0
- package/out/providers/base/index.js.map +1 -0
- package/out/providers/base/types.d.ts +30 -0
- package/out/providers/base/types.js +8 -0
- package/out/providers/base/types.js.map +1 -0
- package/out/providers/claude/ProviderEvents.d.ts +5 -0
- package/out/providers/claude/ProviderEvents.js +18 -0
- package/out/providers/claude/ProviderEvents.js.map +1 -0
- package/out/providers/claude/ProviderManager.d.ts +39 -0
- package/out/providers/claude/ProviderManager.js +50 -0
- package/out/providers/claude/ProviderManager.js.map +1 -0
- package/out/providers/claude/ProviderModels.d.ts +8 -0
- package/out/providers/claude/ProviderModels.js +23 -0
- package/out/providers/claude/ProviderModels.js.map +1 -0
- package/out/providers/claude/ProviderNormalizer.d.ts +5 -0
- package/out/providers/claude/ProviderNormalizer.js +10 -0
- package/out/providers/claude/ProviderNormalizer.js.map +1 -0
- package/out/providers/claude/ProviderSessions.d.ts +14 -0
- package/out/providers/claude/ProviderSessions.js +35 -0
- package/out/providers/claude/ProviderSessions.js.map +1 -0
- package/out/providers/claude/ProviderState.d.ts +13 -0
- package/out/providers/claude/ProviderState.js +19 -0
- package/out/providers/claude/ProviderState.js.map +1 -0
- package/out/providers/claude/ProviderUsage.d.ts +13 -0
- package/out/providers/claude/ProviderUsage.js +59 -0
- package/out/providers/claude/ProviderUsage.js.map +1 -0
- package/out/providers/claude/cli.d.ts +95 -0
- package/out/providers/claude/cli.js +674 -0
- package/out/providers/claude/cli.js.map +1 -0
- package/out/providers/claude/index.d.ts +9 -0
- package/out/providers/claude/index.js +26 -0
- package/out/providers/claude/index.js.map +1 -0
- package/out/providers/claude/tui.d.ts +38 -0
- package/out/providers/claude/tui.js +346 -0
- package/out/providers/claude/tui.js.map +1 -0
- package/out/providers/claudeCliProvider.d.ts +1 -95
- package/out/providers/claudeCliProvider.js +4 -660
- package/out/providers/claudeCliProvider.js.map +1 -1
- package/out/providers/claudeTuiProvider.d.ts +1 -38
- package/out/providers/claudeTuiProvider.js +4 -332
- package/out/providers/claudeTuiProvider.js.map +1 -1
- package/out/providers/copilot/ProviderEvents.d.ts +6 -0
- package/out/providers/copilot/ProviderEvents.js +18 -0
- package/out/providers/copilot/ProviderEvents.js.map +1 -0
- package/out/providers/copilot/ProviderManager.d.ts +39 -0
- package/out/providers/copilot/ProviderManager.js +98 -0
- package/out/providers/copilot/ProviderManager.js.map +1 -0
- package/out/providers/copilot/ProviderModels.d.ts +7 -0
- package/out/providers/copilot/ProviderModels.js +18 -0
- package/out/providers/copilot/ProviderModels.js.map +1 -0
- package/out/providers/copilot/ProviderNormalizer.d.ts +5 -0
- package/out/providers/copilot/ProviderNormalizer.js +10 -0
- package/out/providers/copilot/ProviderNormalizer.js.map +1 -0
- package/out/providers/copilot/ProviderSessions.d.ts +12 -0
- package/out/providers/copilot/ProviderSessions.js +39 -0
- package/out/providers/copilot/ProviderSessions.js.map +1 -0
- package/out/providers/copilot/ProviderState.d.ts +11 -0
- package/out/providers/copilot/ProviderState.js +17 -0
- package/out/providers/copilot/ProviderState.js.map +1 -0
- package/out/providers/copilot/ProviderUsage.d.ts +12 -0
- package/out/providers/copilot/ProviderUsage.js +41 -0
- package/out/providers/copilot/ProviderUsage.js.map +1 -0
- package/out/providers/copilot/cli.d.ts +16 -0
- package/out/providers/copilot/cli.js +52 -0
- package/out/providers/copilot/cli.js.map +1 -0
- package/out/providers/copilot/index.d.ts +10 -0
- package/out/providers/copilot/index.js +27 -0
- package/out/providers/copilot/index.js.map +1 -0
- package/out/providers/copilot/sdk.d.ts +22 -0
- package/out/providers/copilot/sdk.js +489 -0
- package/out/providers/copilot/sdk.js.map +1 -0
- package/out/providers/copilot/sessions.d.ts +25 -0
- package/out/providers/copilot/sessions.js +214 -0
- package/out/providers/copilot/sessions.js.map +1 -0
- package/out/providers/copilotCliProvider.d.ts +1 -16
- package/out/providers/copilotCliProvider.js +15 -49
- package/out/providers/copilotCliProvider.js.map +1 -1
- package/out/providers/copilotSdkProvider.d.ts +1 -22
- package/out/providers/copilotSdkProvider.js +4 -475
- package/out/providers/copilotSdkProvider.js.map +1 -1
- package/out/providers/copilotSessions.d.ts +1 -25
- package/out/providers/copilotSessions.js +4 -200
- package/out/providers/copilotSessions.js.map +1 -1
- package/out/providers/dummy/ProviderEvents.d.ts +5 -0
- package/out/providers/dummy/ProviderEvents.js +16 -0
- package/out/providers/dummy/ProviderEvents.js.map +1 -0
- package/out/providers/dummy/ProviderManager.d.ts +31 -0
- package/out/providers/dummy/ProviderManager.js +115 -0
- package/out/providers/dummy/ProviderManager.js.map +1 -0
- package/out/providers/dummy/ProviderModels.d.ts +7 -0
- package/out/providers/dummy/ProviderModels.js +15 -0
- package/out/providers/dummy/ProviderModels.js.map +1 -0
- package/out/providers/dummy/ProviderNormalizer.d.ts +4 -0
- package/out/providers/dummy/ProviderNormalizer.js +9 -0
- package/out/providers/dummy/ProviderNormalizer.js.map +1 -0
- package/out/providers/dummy/ProviderSessions.d.ts +12 -0
- package/out/providers/dummy/ProviderSessions.js +105 -0
- package/out/providers/dummy/ProviderSessions.js.map +1 -0
- package/out/providers/dummy/ProviderState.d.ts +12 -0
- package/out/providers/dummy/ProviderState.js +23 -0
- package/out/providers/dummy/ProviderState.js.map +1 -0
- package/out/providers/dummy/ProviderUsage.d.ts +9 -0
- package/out/providers/dummy/ProviderUsage.js +27 -0
- package/out/providers/dummy/ProviderUsage.js.map +1 -0
- package/out/providers/dummy/commands.d.ts +9 -0
- package/out/providers/dummy/commands.js +48 -0
- package/out/providers/dummy/commands.js.map +1 -0
- package/out/providers/dummy/index.d.ts +10 -0
- package/out/providers/dummy/index.js +27 -0
- package/out/providers/dummy/index.js.map +1 -0
- package/out/providers/dummy/office.d.ts +23 -0
- package/out/providers/dummy/office.js +66 -0
- package/out/providers/dummy/office.js.map +1 -0
- package/out/providers/dummy/traces.d.ts +8 -0
- package/out/providers/dummy/traces.js +174 -0
- package/out/providers/dummy/traces.js.map +1 -0
- package/out/providers/grok/ProviderEvents.d.ts +6 -0
- package/out/providers/grok/ProviderEvents.js +17 -0
- package/out/providers/grok/ProviderEvents.js.map +1 -0
- package/out/providers/grok/ProviderManager.d.ts +42 -0
- package/out/providers/grok/ProviderManager.js +48 -0
- package/out/providers/grok/ProviderManager.js.map +1 -0
- package/out/providers/grok/ProviderModels.d.ts +7 -0
- package/out/providers/grok/ProviderModels.js +16 -0
- package/out/providers/grok/ProviderModels.js.map +1 -0
- package/out/providers/grok/ProviderNormalizer.d.ts +5 -0
- package/out/providers/grok/ProviderNormalizer.js +10 -0
- package/out/providers/grok/ProviderNormalizer.js.map +1 -0
- package/out/providers/grok/ProviderSessions.d.ts +12 -0
- package/out/providers/grok/ProviderSessions.js +27 -0
- package/out/providers/grok/ProviderSessions.js.map +1 -0
- package/out/providers/grok/ProviderState.d.ts +10 -0
- package/out/providers/grok/ProviderState.js +15 -0
- package/out/providers/grok/ProviderState.js.map +1 -0
- package/out/providers/grok/ProviderUsage.d.ts +7 -0
- package/out/providers/grok/ProviderUsage.js +20 -0
- package/out/providers/grok/ProviderUsage.js.map +1 -0
- package/out/providers/grok/index.d.ts +9 -0
- package/out/providers/grok/index.js +26 -0
- package/out/providers/grok/index.js.map +1 -0
- package/out/providers/grok/sessions.d.ts +27 -0
- package/out/providers/grok/sessions.js +246 -0
- package/out/providers/grok/sessions.js.map +1 -0
- package/out/providers/grok/tui.d.ts +38 -0
- package/out/providers/grok/tui.js +1630 -0
- package/out/providers/grok/tui.js.map +1 -0
- package/out/providers/grokSessions.d.ts +1 -27
- package/out/providers/grokSessions.js +4 -232
- package/out/providers/grokSessions.js.map +1 -1
- package/out/providers/grokTuiProvider.d.ts +1 -38
- package/out/providers/grokTuiProvider.js +4 -1616
- package/out/providers/grokTuiProvider.js.map +1 -1
- package/out/providers/opencode/ProviderEvents.d.ts +6 -0
- package/out/providers/opencode/ProviderEvents.js +18 -0
- package/out/providers/opencode/ProviderEvents.js.map +1 -0
- package/out/providers/opencode/ProviderManager.d.ts +39 -0
- package/out/providers/opencode/ProviderManager.js +90 -0
- package/out/providers/opencode/ProviderManager.js.map +1 -0
- package/out/providers/opencode/ProviderModels.d.ts +7 -0
- package/out/providers/opencode/ProviderModels.js +17 -0
- package/out/providers/opencode/ProviderModels.js.map +1 -0
- package/out/providers/opencode/ProviderNormalizer.d.ts +5 -0
- package/out/providers/opencode/ProviderNormalizer.js +10 -0
- package/out/providers/opencode/ProviderNormalizer.js.map +1 -0
- package/out/providers/opencode/ProviderSessions.d.ts +11 -0
- package/out/providers/opencode/ProviderSessions.js +28 -0
- package/out/providers/opencode/ProviderSessions.js.map +1 -0
- package/out/providers/opencode/ProviderState.d.ts +14 -0
- package/out/providers/opencode/ProviderState.js +20 -0
- package/out/providers/opencode/ProviderState.js.map +1 -0
- package/out/providers/opencode/ProviderUsage.d.ts +7 -0
- package/out/providers/opencode/ProviderUsage.js +20 -0
- package/out/providers/opencode/ProviderUsage.js.map +1 -0
- package/out/providers/opencode/cli.d.ts +29 -0
- package/out/providers/opencode/cli.js +199 -0
- package/out/providers/opencode/cli.js.map +1 -0
- package/out/providers/opencode/index.d.ts +9 -0
- package/out/providers/opencode/index.js +26 -0
- package/out/providers/opencode/index.js.map +1 -0
- package/out/providers/opencode/sdk.d.ts +32 -0
- package/out/providers/opencode/sdk.js +610 -0
- package/out/providers/opencode/sdk.js.map +1 -0
- package/out/providers/opencodeCliProvider.d.ts +1 -29
- package/out/providers/opencodeCliProvider.js +15 -196
- package/out/providers/opencodeCliProvider.js.map +1 -1
- package/out/providers/opencodeSdkProvider.d.ts +1 -32
- package/out/providers/opencodeSdkProvider.js +4 -596
- package/out/providers/opencodeSdkProvider.js.map +1 -1
- package/out/providers.d.ts +1 -1
- package/out/providers.js +5 -0
- package/out/providers.js.map +1 -1
- package/out/sdk/index.js +5 -0
- package/out/sdk/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// hookEventNormalizer — converts raw events from any supported provider into
|
|
4
|
+
// the unified hook-event schema written to .autodev/hooks-events.jsonl.
|
|
5
|
+
//
|
|
6
|
+
// Unified schema (same as Claude/Copilot CLI hook scripts):
|
|
7
|
+
// hook_event_name — PascalCase event name (required)
|
|
8
|
+
// provider — source provider string (required)
|
|
9
|
+
// tool_name — name of tool involved (optional)
|
|
10
|
+
// tool_input — tool arguments (optional)
|
|
11
|
+
// tool_output — { text: string } (optional)
|
|
12
|
+
// success — boolean (optional)
|
|
13
|
+
// session_id — session / call ID (optional)
|
|
14
|
+
// message — free-form text (optional)
|
|
15
|
+
// timestamp — ISO-8601 (added here) (required)
|
|
16
|
+
//
|
|
17
|
+
// Usage:
|
|
18
|
+
// import { normalizeEvent } from './hookEventNormalizer';
|
|
19
|
+
// const hookEv = normalizeEvent('copilot-sdk', rawSdkEvent);
|
|
20
|
+
// if (hookEv) fs.appendFileSync(jsonlPath, JSON.stringify(hookEv) + '\n');
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.ProviderNormalizer = void 0;
|
|
24
|
+
exports.eventTypeFor = eventTypeFor;
|
|
25
|
+
exports.normalizeEvent = normalizeEvent;
|
|
26
|
+
exports.appendHookEvent = appendHookEvent;
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Helpers
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
function safeStr(v) {
|
|
31
|
+
if (v == null) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
if (typeof v === 'string') {
|
|
35
|
+
return v;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
return JSON.stringify(v);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return String(v);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function safeObj(v) {
|
|
45
|
+
if (v == null) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
return JSON.parse(JSON.stringify(v));
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return String(v);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function textOut(v, maxLen = 400) {
|
|
56
|
+
if (v == null) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const s = typeof v === 'string' ? v : safeStr(v) ?? '';
|
|
60
|
+
return s.length > 0 ? { text: s.slice(0, maxLen) } : null;
|
|
61
|
+
}
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// Provider: 'copilot-sdk'
|
|
64
|
+
//
|
|
65
|
+
// Raw event shape: { type: string; data?: Record<string, unknown>; ephemeral?: boolean }
|
|
66
|
+
// Caller should only pass non-ephemeral events.
|
|
67
|
+
// toolCallId → toolName: populated by tool.execution_start, consumed by
|
|
68
|
+
// tool.execution_complete so we can resolve the tool name even when the SDK
|
|
69
|
+
// doesn't repeat it in the completion payload. Auto-pruned after 500 entries.
|
|
70
|
+
const _toolCallNames = new Map();
|
|
71
|
+
// toolCallId → intentionSummary: populated by assistant.message (toolRequests),
|
|
72
|
+
// consumed by tool.execution_start so PreToolUse carries the agent's stated reasoning.
|
|
73
|
+
const _toolCallIntentions = new Map();
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
function normalizeCopilotSdk(raw, provider) {
|
|
76
|
+
const type = raw['type'];
|
|
77
|
+
if (!type) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const d = raw['data'] ?? {};
|
|
81
|
+
const toolName = (d['toolName'] ?? d['name'] ?? d['toolId']);
|
|
82
|
+
// Safe-serialise the raw data payload so pixel-office has all available fields.
|
|
83
|
+
const rawData = safeObj(d);
|
|
84
|
+
// Base event: include safe raw data so nothing is lost, then let mapped
|
|
85
|
+
// fields below override / supplement.
|
|
86
|
+
const base = {
|
|
87
|
+
sdk_type: type,
|
|
88
|
+
data: rawData,
|
|
89
|
+
};
|
|
90
|
+
switch (type) {
|
|
91
|
+
case 'tool.execution_start': {
|
|
92
|
+
const callId = safeStr(d['toolCallId']);
|
|
93
|
+
if (callId && toolName) {
|
|
94
|
+
if (_toolCallNames.size > 500) {
|
|
95
|
+
_toolCallNames.clear();
|
|
96
|
+
}
|
|
97
|
+
_toolCallNames.set(callId, toolName);
|
|
98
|
+
}
|
|
99
|
+
// Look up reasoning from the preceding assistant.message toolRequests
|
|
100
|
+
const reasoning = callId ? (_toolCallIntentions.get(callId) ?? null) : null;
|
|
101
|
+
if (callId) {
|
|
102
|
+
_toolCallIntentions.delete(callId);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
...base,
|
|
106
|
+
hook_event_name: 'PreToolUse',
|
|
107
|
+
provider,
|
|
108
|
+
tool_name: toolName ?? 'unknown',
|
|
109
|
+
tool_input: safeObj(d['arguments']),
|
|
110
|
+
session_id: callId,
|
|
111
|
+
reasoning,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
case 'tool.execution_complete': {
|
|
115
|
+
const success = d['success'];
|
|
116
|
+
const result = d['result'];
|
|
117
|
+
const err = d['error'];
|
|
118
|
+
const outRaw = success === false
|
|
119
|
+
? (err?.['message'])
|
|
120
|
+
: (result?.['content'] ?? result?.['detailedContent']);
|
|
121
|
+
// tool name: prefer explicit field, then the start-event cache by toolCallId,
|
|
122
|
+
// then telemetry properties.command (present on failures), else 'unknown'.
|
|
123
|
+
const callId2 = safeStr(d['toolCallId']);
|
|
124
|
+
const telemetry = d['toolTelemetry'];
|
|
125
|
+
const telProps = telemetry?.['properties'];
|
|
126
|
+
const resolvedToolName = toolName
|
|
127
|
+
?? (callId2 ? _toolCallNames.get(callId2) : undefined)
|
|
128
|
+
?? safeStr(telProps?.['command'])
|
|
129
|
+
?? 'unknown';
|
|
130
|
+
if (callId2) {
|
|
131
|
+
_toolCallNames.delete(callId2);
|
|
132
|
+
} // clean up
|
|
133
|
+
// Parse file paths (JSON string in restrictedProperties.filePaths)
|
|
134
|
+
const telRestricted = telemetry?.['restrictedProperties'];
|
|
135
|
+
const fpRaw = telRestricted?.['filePaths'];
|
|
136
|
+
let filePaths = null;
|
|
137
|
+
if (typeof fpRaw === 'string') {
|
|
138
|
+
try {
|
|
139
|
+
const parsed = JSON.parse(fpRaw);
|
|
140
|
+
if (Array.isArray(parsed)) {
|
|
141
|
+
filePaths = parsed.filter((x) => typeof x === 'string');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch { /* ignore */ }
|
|
145
|
+
}
|
|
146
|
+
else if (Array.isArray(fpRaw)) {
|
|
147
|
+
filePaths = fpRaw.filter((x) => typeof x === 'string');
|
|
148
|
+
}
|
|
149
|
+
// Lines added/removed from telemetry metrics
|
|
150
|
+
const telMetrics = telemetry?.['metrics'];
|
|
151
|
+
const linesAdded = typeof telMetrics?.['linesAdded'] === 'number' ? telMetrics['linesAdded'] : null;
|
|
152
|
+
const linesRemoved = typeof telMetrics?.['linesRemoved'] === 'number' ? telMetrics['linesRemoved'] : null;
|
|
153
|
+
return {
|
|
154
|
+
...base,
|
|
155
|
+
hook_event_name: success === false ? 'PostToolUseFailure' : 'PostToolUse',
|
|
156
|
+
provider,
|
|
157
|
+
tool_name: resolvedToolName,
|
|
158
|
+
tool_output: textOut(outRaw),
|
|
159
|
+
success: success ?? true,
|
|
160
|
+
session_id: safeStr(d['toolCallId']),
|
|
161
|
+
model: safeStr(d['model']),
|
|
162
|
+
interaction_id: safeStr(d['interactionId']),
|
|
163
|
+
file_paths: filePaths,
|
|
164
|
+
lines_added: linesAdded,
|
|
165
|
+
lines_removed: linesRemoved,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
case 'subagent.started':
|
|
169
|
+
return {
|
|
170
|
+
...base,
|
|
171
|
+
hook_event_name: 'SubagentStart',
|
|
172
|
+
provider,
|
|
173
|
+
message: safeStr(d['agentDisplayName'] ?? d['agentName']),
|
|
174
|
+
session_id: safeStr(d['toolCallId']),
|
|
175
|
+
};
|
|
176
|
+
case 'assistant.message': {
|
|
177
|
+
const content = d['content'];
|
|
178
|
+
const tools = d['toolRequests'];
|
|
179
|
+
const outputTokens = typeof d['outputTokens'] === 'number' ? d['outputTokens'] : null;
|
|
180
|
+
const interactionId = safeStr(d['interactionId']);
|
|
181
|
+
if ((!content || content.length === 0) && (!tools || tools.length === 0)) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
// Store intentionSummary per toolCallId so PreToolUse can carry reasoning
|
|
185
|
+
if (tools && tools.length > 0) {
|
|
186
|
+
for (const t of tools) {
|
|
187
|
+
const cid = safeStr(t['toolCallId']);
|
|
188
|
+
const intention = safeStr(t['intentionSummary']);
|
|
189
|
+
if (cid && intention) {
|
|
190
|
+
if (_toolCallIntentions.size > 500) {
|
|
191
|
+
_toolCallIntentions.clear();
|
|
192
|
+
}
|
|
193
|
+
_toolCallIntentions.set(cid, intention);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Build message: prefer content text; fall back to intention summaries; then count
|
|
198
|
+
let summary;
|
|
199
|
+
if (content && content.length > 0) {
|
|
200
|
+
summary = content.slice(0, 400);
|
|
201
|
+
}
|
|
202
|
+
else if (tools && tools.length > 0) {
|
|
203
|
+
const intentions = tools
|
|
204
|
+
.map(t => safeStr(t['intentionSummary']))
|
|
205
|
+
.filter((s) => s !== null && s.length > 0)
|
|
206
|
+
.join(' | ');
|
|
207
|
+
summary = intentions || `[${tools.length} tool call(s)]`;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
summary = '[empty message]';
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
...base,
|
|
214
|
+
hook_event_name: 'AgentMessage',
|
|
215
|
+
provider,
|
|
216
|
+
message: summary,
|
|
217
|
+
session_id: safeStr(d['messageId'] ?? d['interactionId']),
|
|
218
|
+
interaction_id: interactionId,
|
|
219
|
+
output_tokens: outputTokens,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
case 'session.task_complete':
|
|
223
|
+
return {
|
|
224
|
+
...base,
|
|
225
|
+
hook_event_name: 'Stop',
|
|
226
|
+
provider,
|
|
227
|
+
message: safeStr(d['summary']),
|
|
228
|
+
};
|
|
229
|
+
case 'user.message':
|
|
230
|
+
return {
|
|
231
|
+
...base,
|
|
232
|
+
hook_event_name: 'UserPromptSubmit',
|
|
233
|
+
provider,
|
|
234
|
+
message: safeStr(d['content']),
|
|
235
|
+
session_id: safeStr(d['messageId']),
|
|
236
|
+
};
|
|
237
|
+
case 'assistant.turn_start':
|
|
238
|
+
return { ...base, hook_event_name: 'TurnStart', provider, interaction_id: safeStr(d['interactionId']) };
|
|
239
|
+
case 'assistant.turn_end':
|
|
240
|
+
return { ...base, hook_event_name: 'TurnEnd', provider };
|
|
241
|
+
case 'permission.requested':
|
|
242
|
+
return {
|
|
243
|
+
...base,
|
|
244
|
+
hook_event_name: 'PermissionRequest',
|
|
245
|
+
provider,
|
|
246
|
+
message: safeStr(d['permissionRequest']),
|
|
247
|
+
session_id: safeStr(d['requestId']),
|
|
248
|
+
};
|
|
249
|
+
default:
|
|
250
|
+
return null; // unknown / uninteresting event
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// ---------------------------------------------------------------------------
|
|
254
|
+
// Provider: 'opencode-sdk'
|
|
255
|
+
//
|
|
256
|
+
// Raw event shape: the outer SSE envelope; relevant data in payload.properties.
|
|
257
|
+
// ---------------------------------------------------------------------------
|
|
258
|
+
function normalizeOpencodeSDK(raw, provider) {
|
|
259
|
+
const payload = (raw['payload'] ?? raw);
|
|
260
|
+
const type = payload['type'];
|
|
261
|
+
const props = payload['properties'];
|
|
262
|
+
if (!type) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const toolName = (props?.['toolID'] ?? props?.['name'] ?? props?.['tool']);
|
|
266
|
+
const sessionId = safeStr(props?.['sessionID'] ?? props?.['session_id']);
|
|
267
|
+
switch (type) {
|
|
268
|
+
case 'tool.execute.before':
|
|
269
|
+
return {
|
|
270
|
+
hook_event_name: 'PreToolUse',
|
|
271
|
+
provider,
|
|
272
|
+
tool_name: toolName ?? 'unknown',
|
|
273
|
+
tool_input: safeObj(props?.['args'] ?? props?.['input']),
|
|
274
|
+
session_id: sessionId,
|
|
275
|
+
};
|
|
276
|
+
case 'tool.execute.after': {
|
|
277
|
+
const rawOut = props?.['output'] ?? props?.['result'] ?? props?.['text'];
|
|
278
|
+
return {
|
|
279
|
+
hook_event_name: 'PostToolUse',
|
|
280
|
+
provider,
|
|
281
|
+
tool_name: toolName ?? 'unknown',
|
|
282
|
+
tool_input: safeObj(props?.['args'] ?? props?.['input']),
|
|
283
|
+
tool_output: textOut(rawOut),
|
|
284
|
+
session_id: sessionId,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
case 'permission.updated': {
|
|
288
|
+
const permTitle = safeStr(props?.['title']);
|
|
289
|
+
return {
|
|
290
|
+
hook_event_name: 'PermissionReplied',
|
|
291
|
+
provider,
|
|
292
|
+
message: permTitle,
|
|
293
|
+
session_id: sessionId,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
case 'session.compacted':
|
|
297
|
+
return {
|
|
298
|
+
hook_event_name: 'PostCompact',
|
|
299
|
+
provider,
|
|
300
|
+
session_id: sessionId,
|
|
301
|
+
};
|
|
302
|
+
case 'session.idle': {
|
|
303
|
+
// Optional _assistantText injected by opencodeSdkProvider for flush
|
|
304
|
+
const assistantText = props?.['_assistantText'];
|
|
305
|
+
if (assistantText) {
|
|
306
|
+
return {
|
|
307
|
+
hook_event_name: 'AgentMessage',
|
|
308
|
+
provider,
|
|
309
|
+
message: assistantText,
|
|
310
|
+
session_id: sessionId,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
hook_event_name: 'Stop',
|
|
315
|
+
provider,
|
|
316
|
+
session_id: sessionId,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
case 'session.error':
|
|
320
|
+
return {
|
|
321
|
+
hook_event_name: 'StopFailure',
|
|
322
|
+
provider,
|
|
323
|
+
message: safeStr(props?.['error'] ?? props?.['message']),
|
|
324
|
+
session_id: sessionId,
|
|
325
|
+
};
|
|
326
|
+
case 'message.part.delta':
|
|
327
|
+
return null; // streamed text — not forwarded
|
|
328
|
+
default:
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// ---------------------------------------------------------------------------
|
|
333
|
+
// Provider: 'claude-cli' / 'copilot-cli'
|
|
334
|
+
//
|
|
335
|
+
// Raw event = the JSON that was already written by the hook script.
|
|
336
|
+
// It already has hook_event_name + provider; we just ensure timestamp + schema.
|
|
337
|
+
// ---------------------------------------------------------------------------
|
|
338
|
+
function normalizeCliHook(raw, provider) {
|
|
339
|
+
const hookName = raw['hook_event_name'] ?? raw['hook'];
|
|
340
|
+
if (!hookName) {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
...raw,
|
|
345
|
+
hook_event_name: hookName,
|
|
346
|
+
provider: raw['provider'] ?? provider,
|
|
347
|
+
tool_name: raw['tool_name'] ?? raw['tool'],
|
|
348
|
+
session_id: safeStr(raw['session_id'] ?? raw['sessionId']),
|
|
349
|
+
message: safeStr(raw['message'] ?? raw['summary']),
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
// ---------------------------------------------------------------------------
|
|
353
|
+
// Public API
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
/**
|
|
356
|
+
* Normalize a raw provider event into the unified HookEvent schema.
|
|
357
|
+
*
|
|
358
|
+
* @param provider One of: 'copilot-sdk' | 'opencode-sdk' | 'claude-cli' |
|
|
359
|
+
* 'copilot-cli' | or any string for pass-through.
|
|
360
|
+
* @param raw The raw event object from the provider.
|
|
361
|
+
* @returns A HookEvent ready to be JSON-stringified, or null if the
|
|
362
|
+
* event type is not mapped / not interesting.
|
|
363
|
+
*/
|
|
364
|
+
// Canonical hook_event_name (PascalCase) → event_type (snake_case). Mirrors
|
|
365
|
+
// pixel-office's HookEventNormalizer::CLAUDE_CODE_TYPES so the CLI can emit the
|
|
366
|
+
// final event_type itself — the server then trusts it and doesn't have to know
|
|
367
|
+
// every provider (which is what let grok-tui events fall through to "unknown").
|
|
368
|
+
const EVENT_TYPE_MAP = {
|
|
369
|
+
PreToolUse: 'tool_start', PostToolUse: 'tool_end', PostToolUseFailure: 'tool_error',
|
|
370
|
+
SessionStart: 'session_start', SessionEnd: 'session_end', Stop: 'session_end', StopFailure: 'stop_failure',
|
|
371
|
+
SubagentStart: 'subagent_start', SubagentStop: 'subagent_stop', TeammateIdle: 'teammate_idle',
|
|
372
|
+
PermissionRequest: 'permission_request', PermissionDenied: 'permission_denied', PermissionReplied: 'permission_replied',
|
|
373
|
+
UserPromptSubmit: 'user_prompt_submit',
|
|
374
|
+
TaskCreated: 'task_created', TaskCompleted: 'task_completed',
|
|
375
|
+
CwdChanged: 'cwd_changed', FileChanged: 'file_changed', InstructionsLoaded: 'instructions_loaded', ConfigChange: 'config_change',
|
|
376
|
+
PreCompact: 'pre_compact', PostCompact: 'post_compact',
|
|
377
|
+
Elicitation: 'elicitation', ElicitationResult: 'elicitation_result',
|
|
378
|
+
WorktreeCreate: 'worktree_create', WorktreeRemove: 'worktree_remove',
|
|
379
|
+
Notification: 'notification',
|
|
380
|
+
AgentMessage: 'agent_message', TurnStart: 'turn_start', TurnEnd: 'turn_end',
|
|
381
|
+
};
|
|
382
|
+
/** Canonical event_type for a hook_event_name (falls back to snake_case-ing the name). */
|
|
383
|
+
function eventTypeFor(hookEventName) {
|
|
384
|
+
if (EVENT_TYPE_MAP[hookEventName]) {
|
|
385
|
+
return EVENT_TYPE_MAP[hookEventName];
|
|
386
|
+
}
|
|
387
|
+
// Unknown PascalCase name → best-effort snake_case so it's at least descriptive.
|
|
388
|
+
return hookEventName.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();
|
|
389
|
+
}
|
|
390
|
+
function normalizeEvent(provider, raw) {
|
|
391
|
+
let partial = null;
|
|
392
|
+
if (provider === 'copilot-sdk') {
|
|
393
|
+
partial = normalizeCopilotSdk(raw, provider);
|
|
394
|
+
}
|
|
395
|
+
else if (provider === 'opencode-sdk') {
|
|
396
|
+
partial = normalizeOpencodeSDK(raw, provider);
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
// claude-cli, copilot-cli, or any other — treat as already-formatted hook
|
|
400
|
+
partial = normalizeCliHook(raw, provider);
|
|
401
|
+
}
|
|
402
|
+
if (!partial) {
|
|
403
|
+
return null;
|
|
404
|
+
}
|
|
405
|
+
// Emit the canonical event_type alongside hook_event_name so downstream
|
|
406
|
+
// consumers (pixel-office) never have to re-derive it per provider.
|
|
407
|
+
const event_type = eventTypeFor(String(partial.hook_event_name ?? 'unknown'));
|
|
408
|
+
return { ...partial, event_type, timestamp: new Date().toISOString() };
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Append a normalized event to a JSONL sink file.
|
|
412
|
+
* Creates the directory if it doesn't exist.
|
|
413
|
+
* Silently ignores write errors (non-critical path).
|
|
414
|
+
*/
|
|
415
|
+
function appendHookEvent(jsonlPath, provider, raw, fs, path, onError) {
|
|
416
|
+
const ev = normalizeEvent(provider, raw);
|
|
417
|
+
if (!ev) {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
try {
|
|
421
|
+
fs.mkdirSync(path.dirname(jsonlPath), { recursive: true });
|
|
422
|
+
fs.appendFileSync(jsonlPath, JSON.stringify(ev) + '\n', 'utf8');
|
|
423
|
+
}
|
|
424
|
+
catch (e) {
|
|
425
|
+
onError?.(e);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Per-family normalizer. Concrete providers override `normalizeRaw` when they
|
|
430
|
+
* speak a native event dialect (copilot-sdk, opencode-sdk, dummy). CLI-hook
|
|
431
|
+
* families inherit the already-formatted pass-through.
|
|
432
|
+
*/
|
|
433
|
+
class ProviderNormalizer {
|
|
434
|
+
normalize(raw) {
|
|
435
|
+
return normalizeEvent(this.provider, raw);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
exports.ProviderNormalizer = ProviderNormalizer;
|
|
439
|
+
//# sourceMappingURL=ProviderNormalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderNormalizer.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ProviderId } from '../../providers';
|
|
2
|
+
import { IProvider } from './contract';
|
|
3
|
+
export declare class ProviderRegistry {
|
|
4
|
+
private readonly _providers;
|
|
5
|
+
constructor(providers: IProvider[]);
|
|
6
|
+
/** Resolve a provider by id. Throws on an unknown id (fail loudly). */
|
|
7
|
+
get(id: ProviderId): IProvider;
|
|
8
|
+
has(id: ProviderId): boolean;
|
|
9
|
+
ids(): ProviderId[];
|
|
10
|
+
}
|
|
11
|
+
/** The default registry wired with every built-in provider. */
|
|
12
|
+
export declare const providerRegistry: ProviderRegistry;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// ProviderRegistry — single point that maps a ProviderId to its IProvider
|
|
4
|
+
// strategy (dependency inversion: callers depend on this + IProvider, never on
|
|
5
|
+
// a concrete provider). Adding a provider = add a class + one line here, with
|
|
6
|
+
// no change to the dispatcher (open/closed).
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.providerRegistry = exports.ProviderRegistry = void 0;
|
|
10
|
+
const implementations_1 = require("./implementations");
|
|
11
|
+
class ProviderRegistry {
|
|
12
|
+
_providers = new Map();
|
|
13
|
+
constructor(providers) {
|
|
14
|
+
for (const p of providers) {
|
|
15
|
+
this._providers.set(p.id, p);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Resolve a provider by id. Throws on an unknown id (fail loudly). */
|
|
19
|
+
get(id) {
|
|
20
|
+
const p = this._providers.get(id);
|
|
21
|
+
if (!p) {
|
|
22
|
+
throw new Error(`No provider registered for id "${id}"`);
|
|
23
|
+
}
|
|
24
|
+
return p;
|
|
25
|
+
}
|
|
26
|
+
has(id) { return this._providers.has(id); }
|
|
27
|
+
ids() { return [...this._providers.keys()]; }
|
|
28
|
+
}
|
|
29
|
+
exports.ProviderRegistry = ProviderRegistry;
|
|
30
|
+
/** The default registry wired with every built-in provider. */
|
|
31
|
+
exports.providerRegistry = new ProviderRegistry([
|
|
32
|
+
new implementations_1.ClaudeCliProvider(),
|
|
33
|
+
new implementations_1.CopilotCliProvider(),
|
|
34
|
+
new implementations_1.OpenCodeCliProvider(),
|
|
35
|
+
new implementations_1.ClaudeTuiProvider(),
|
|
36
|
+
new implementations_1.CopilotSdkProvider(),
|
|
37
|
+
new implementations_1.OpenCodeSdkProvider(),
|
|
38
|
+
new implementations_1.GrokCliProvider(),
|
|
39
|
+
new implementations_1.GrokTuiProvider(),
|
|
40
|
+
implementations_1.dummyProvider,
|
|
41
|
+
]);
|
|
42
|
+
//# sourceMappingURL=ProviderRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderRegistry.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,+EAA+E;AAC/E,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;;;AAI9E,uDAI2B;AAE3B,MAAa,gBAAgB;IACV,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE/D,YAAY,SAAsB;QAChC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;IAC9D,CAAC;IAED,uEAAuE;IACvE,GAAG,CAAC,EAAc;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,EAAc,IAAa,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,GAAG,KAAmB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5D;AAjBD,4CAiBC;AAED,+DAA+D;AAClD,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;IACnD,IAAI,mCAAiB,EAAE;IACvB,IAAI,oCAAkB,EAAE;IACxB,IAAI,qCAAmB,EAAE;IACzB,IAAI,mCAAiB,EAAE;IACvB,IAAI,oCAAkB,EAAE;IACxB,IAAI,qCAAmB,EAAE;IACzB,IAAI,iCAAe,EAAE;IACrB,IAAI,iCAAe,EAAE;IACrB,+BAAa;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Logger } from './contract';
|
|
2
|
+
import type { SessionRecord, TranscriptMsg } from './types';
|
|
3
|
+
export declare abstract class ProviderSessions {
|
|
4
|
+
abstract readonly family: string;
|
|
5
|
+
/** Sessions for one workspace, newest first. */
|
|
6
|
+
abstract list(root: string): SessionRecord[] | Promise<SessionRecord[]>;
|
|
7
|
+
/** Latest session id for `root`, or undefined when none exist. */
|
|
8
|
+
resolveLatest(root: string, _log?: Logger): Promise<string | undefined>;
|
|
9
|
+
/** Read a transcript by id into a normalized message array. */
|
|
10
|
+
abstract readTranscript(id: string, opts?: {
|
|
11
|
+
cwd?: string;
|
|
12
|
+
file?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
}): TranscriptMsg[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// ProviderSessions — list / read / resolve conversation sessions.
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProviderSessions = void 0;
|
|
7
|
+
class ProviderSessions {
|
|
8
|
+
/** Latest session id for `root`, or undefined when none exist. */
|
|
9
|
+
async resolveLatest(root, _log) {
|
|
10
|
+
const all = await this.list(root);
|
|
11
|
+
return all[0]?.id;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ProviderSessions = ProviderSessions;
|
|
15
|
+
//# sourceMappingURL=ProviderSessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderSessions.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderSessions.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;;;AAK9E,MAAsB,gBAAgB;IAMpC,kEAAkE;IAClE,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAa;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpB,CAAC;CAIF;AAdD,4CAcC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Logger } from './contract';
|
|
2
|
+
export declare abstract class ProviderState {
|
|
3
|
+
abstract readonly family: string;
|
|
4
|
+
isBusy(_root: string): boolean;
|
|
5
|
+
lastActivity(_root: string): number;
|
|
6
|
+
forceIdle(_root: string): void;
|
|
7
|
+
close(_root: string, _log: Logger): void;
|
|
8
|
+
closeAll(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// ProviderState — busy / activity / teardown for a persistent (sdk/tui)
|
|
4
|
+
// provider. CLI providers inherit the idle defaults.
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ProviderState = void 0;
|
|
8
|
+
class ProviderState {
|
|
9
|
+
isBusy(_root) { return false; }
|
|
10
|
+
lastActivity(_root) { return 0; }
|
|
11
|
+
forceIdle(_root) { }
|
|
12
|
+
close(_root, _log) { }
|
|
13
|
+
closeAll() { }
|
|
14
|
+
}
|
|
15
|
+
exports.ProviderState = ProviderState;
|
|
16
|
+
//# sourceMappingURL=ProviderState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderState.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderState.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,qDAAqD;AACrD,8EAA8E;;;AAI9E,MAAsB,aAAa;IAGjC,MAAM,CAAC,KAAa,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAChD,YAAY,CAAC,KAAa,IAAY,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,KAAa,IAAsB,CAAC;IAC9C,KAAK,CAAC,KAAa,EAAE,IAAY,IAAsB,CAAC;IACxD,QAAQ,KAAuB,CAAC;CACjC;AARD,sCAQC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UsagePayload } from './types';
|
|
2
|
+
/** Coerce an unknown to a finite, non-negative number, else 0. */
|
|
3
|
+
export declare function nonNeg(v: unknown): number;
|
|
4
|
+
/** Clamp a raw percent to 0..100 with one decimal place. */
|
|
5
|
+
export declare function clampPct(raw: number): number;
|
|
6
|
+
export declare abstract class ProviderUsage {
|
|
7
|
+
abstract readonly family: string;
|
|
8
|
+
abstract readonly defaultContextLimit: number;
|
|
9
|
+
/** Build a usage snapshot from a provider-native payload, or null if empty. */
|
|
10
|
+
abstract extract(raw: unknown, model?: string | null): UsagePayload | null;
|
|
11
|
+
protected pack(input: number, output: number, context: number, limit: number): UsagePayload | null;
|
|
12
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// ProviderUsage — turn a provider-native usage block into the compact
|
|
4
|
+
// snapshot pixel-office renders (context% + tokens).
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ProviderUsage = void 0;
|
|
8
|
+
exports.nonNeg = nonNeg;
|
|
9
|
+
exports.clampPct = clampPct;
|
|
10
|
+
/** Coerce an unknown to a finite, non-negative number, else 0. */
|
|
11
|
+
function nonNeg(v) {
|
|
12
|
+
return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : 0;
|
|
13
|
+
}
|
|
14
|
+
/** Clamp a raw percent to 0..100 with one decimal place. */
|
|
15
|
+
function clampPct(raw) {
|
|
16
|
+
return Math.max(0, Math.min(100, Math.round(raw * 10) / 10));
|
|
17
|
+
}
|
|
18
|
+
class ProviderUsage {
|
|
19
|
+
pack(input, output, context, limit) {
|
|
20
|
+
if (input === 0 && output === 0 && context === 0) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
tokens: input + output,
|
|
25
|
+
inputTokens: input,
|
|
26
|
+
outputTokens: output,
|
|
27
|
+
contextTokens: context,
|
|
28
|
+
contextPct: clampPct(limit > 0 ? (context / limit) * 100 : 0),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.ProviderUsage = ProviderUsage;
|
|
33
|
+
//# sourceMappingURL=ProviderUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderUsage.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderUsage.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,sEAAsE;AACtE,qDAAqD;AACrD,8EAA8E;;;AAK9E,wBAEC;AAGD,4BAEC;AARD,kEAAkE;AAClE,SAAgB,MAAM,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,4DAA4D;AAC5D,SAAgB,QAAQ,CAAC,GAAW;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAsB,aAAa;IAOvB,IAAI,CAAC,KAAa,EAAE,MAAc,EAAE,OAAe,EAAE,KAAa;QAC1E,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAClE,OAAO;YACL,MAAM,EAAE,KAAK,GAAG,MAAM;YACtB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,MAAM;YACpB,aAAa,EAAE,OAAO;YACtB,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,CAAC;IACJ,CAAC;CACF;AAjBD,sCAiBC"}
|