@zhixuan92/multi-model-agent-core 4.7.0 → 4.7.2
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/README.md +6 -6
- package/dist/bounded-execution/activity-tracker.d.ts +1 -0
- package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
- package/dist/bounded-execution/activity-tracker.js +5 -0
- package/dist/bounded-execution/activity-tracker.js.map +1 -1
- package/dist/bounded-execution/progress-events-subscriber.d.ts +41 -0
- package/dist/bounded-execution/progress-events-subscriber.d.ts.map +1 -0
- package/dist/bounded-execution/progress-events-subscriber.js +63 -0
- package/dist/bounded-execution/progress-events-subscriber.js.map +1 -0
- package/dist/bounded-execution/stall-watchdog.d.ts +4 -2
- package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
- package/dist/bounded-execution/stall-watchdog.js +55 -31
- package/dist/bounded-execution/stall-watchdog.js.map +1 -1
- package/dist/events/envelope-bus.d.ts +22 -0
- package/dist/events/envelope-bus.d.ts.map +1 -0
- package/dist/events/envelope-bus.js +35 -0
- package/dist/events/envelope-bus.js.map +1 -0
- package/dist/events/log-writer.d.ts +24 -0
- package/dist/events/log-writer.d.ts.map +1 -0
- package/dist/events/log-writer.js +52 -0
- package/dist/events/log-writer.js.map +1 -0
- package/dist/events/plain-log-entry.d.ts +45 -0
- package/dist/events/plain-log-entry.d.ts.map +1 -0
- package/dist/events/plain-log-entry.js +45 -0
- package/dist/events/plain-log-entry.js.map +1 -0
- package/dist/events/task-envelope.d.ts +174 -0
- package/dist/events/task-envelope.d.ts.map +1 -0
- package/dist/events/task-envelope.js +152 -0
- package/dist/events/task-envelope.js.map +1 -0
- package/dist/events/telemetry-uploader.d.ts +24 -0
- package/dist/events/telemetry-uploader.d.ts.map +1 -0
- package/dist/events/telemetry-uploader.js +31 -0
- package/dist/events/telemetry-uploader.js.map +1 -0
- package/dist/events/to-wire-record.d.ts +42 -0
- package/dist/events/to-wire-record.d.ts.map +1 -0
- package/dist/events/to-wire-record.js +167 -0
- package/dist/events/to-wire-record.js.map +1 -0
- package/dist/events/{telemetry-types.d.ts → wire-schema.d.ts} +23 -36
- package/dist/events/wire-schema.d.ts.map +1 -0
- package/dist/events/{telemetry-types.js → wire-schema.js} +2 -9
- package/dist/events/wire-schema.js.map +1 -0
- package/dist/identity/{auth-token-store.d.ts → claude-oauth.d.ts} +1 -24
- package/dist/identity/claude-oauth.d.ts.map +1 -0
- package/dist/identity/claude-oauth.js +71 -0
- package/dist/identity/claude-oauth.js.map +1 -0
- package/dist/index.d.ts +9 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/annotate-stage.js +11 -17
- package/dist/lifecycle/handlers/annotate-stage.js.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +0 -15
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/review-stage.js +0 -17
- package/dist/lifecycle/handlers/review-stage.js.map +1 -1
- package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -1
- package/dist/lifecycle/handlers/rework-stage.js +2 -18
- package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +5 -4
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +34 -71
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +11 -5
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +151 -9
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
- package/dist/lifecycle/perform-implementation.js +2 -3
- package/dist/lifecycle/perform-implementation.js.map +1 -1
- package/dist/lifecycle/task-completion-summary.js +1 -1
- package/dist/lifecycle/task-completion-summary.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts +11 -6
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +12 -0
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/providers/claude-session.d.ts +1 -0
- package/dist/providers/claude-session.d.ts.map +1 -1
- package/dist/providers/claude-session.js +29 -27
- package/dist/providers/claude-session.js.map +1 -1
- package/dist/providers/claude.js +1 -1
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex-cli-session.d.ts +4 -2
- package/dist/providers/codex-cli-session.d.ts.map +1 -1
- package/dist/providers/codex-cli-session.js +47 -46
- package/dist/providers/codex-cli-session.js.map +1 -1
- package/dist/providers/runner-types.d.ts +3 -3
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/reporting/structured-report.d.ts +3 -3
- package/dist/stores/batch-registry.d.ts +37 -29
- package/dist/stores/batch-registry.d.ts.map +1 -1
- package/dist/stores/batch-registry.js +18 -23
- package/dist/stores/batch-registry.js.map +1 -1
- package/dist/tools/audit/schema.d.ts +1 -1
- package/dist/tools/review/schema.d.ts +1 -1
- package/dist/transport/http-listener.d.ts +1 -1
- package/dist/types/enums.d.ts +16 -16
- package/dist/types/run-result.d.ts +3 -0
- package/dist/types/run-result.d.ts.map +1 -1
- package/package.json +21 -29
- package/dist/events/caller-response-channel.d.ts +0 -17
- package/dist/events/caller-response-channel.d.ts.map +0 -1
- package/dist/events/caller-response-channel.js +0 -10
- package/dist/events/caller-response-channel.js.map +0 -1
- package/dist/events/clamp.d.ts +0 -13
- package/dist/events/clamp.d.ts.map +0 -1
- package/dist/events/clamp.js +0 -24
- package/dist/events/clamp.js.map +0 -1
- package/dist/events/cloud-events.d.ts +0 -108
- package/dist/events/cloud-events.d.ts.map +0 -1
- package/dist/events/cloud-events.js +0 -58
- package/dist/events/cloud-events.js.map +0 -1
- package/dist/events/concern-classifier.d.ts +0 -9
- package/dist/events/concern-classifier.d.ts.map +0 -1
- package/dist/events/concern-classifier.js +0 -26
- package/dist/events/concern-classifier.js.map +0 -1
- package/dist/events/diagnostics-types.d.ts +0 -65
- package/dist/events/diagnostics-types.d.ts.map +0 -1
- package/dist/events/diagnostics-types.js +0 -2
- package/dist/events/diagnostics-types.js.map +0 -1
- package/dist/events/event-base.d.ts +0 -14
- package/dist/events/event-base.d.ts.map +0 -1
- package/dist/events/event-base.js +0 -24
- package/dist/events/event-base.js.map +0 -1
- package/dist/events/event-builder.d.ts +0 -55
- package/dist/events/event-builder.d.ts.map +0 -1
- package/dist/events/event-builder.js +0 -557
- package/dist/events/event-builder.js.map +0 -1
- package/dist/events/event-emitter.d.ts +0 -31
- package/dist/events/event-emitter.d.ts.map +0 -1
- package/dist/events/event-emitter.js +0 -63
- package/dist/events/event-emitter.js.map +0 -1
- package/dist/events/http-server-log.d.ts +0 -63
- package/dist/events/http-server-log.d.ts.map +0 -1
- package/dist/events/http-server-log.js +0 -188
- package/dist/events/http-server-log.js.map +0 -1
- package/dist/events/index.d.ts +0 -6
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -7
- package/dist/events/index.js.map +0 -1
- package/dist/events/local-log-sink.d.ts +0 -10
- package/dist/events/local-log-sink.d.ts.map +0 -1
- package/dist/events/local-log-sink.js +0 -11
- package/dist/events/local-log-sink.js.map +0 -1
- package/dist/events/normalize.d.ts +0 -18
- package/dist/events/normalize.d.ts.map +0 -1
- package/dist/events/normalize.js +0 -18
- package/dist/events/normalize.js.map +0 -1
- package/dist/events/observability-events.d.ts +0 -1324
- package/dist/events/observability-events.d.ts.map +0 -1
- package/dist/events/observability-events.js +0 -446
- package/dist/events/observability-events.js.map +0 -1
- package/dist/events/privacy-filter.d.ts +0 -2
- package/dist/events/privacy-filter.d.ts.map +0 -1
- package/dist/events/privacy-filter.js +0 -10
- package/dist/events/privacy-filter.js.map +0 -1
- package/dist/events/request-spill.d.ts +0 -16
- package/dist/events/request-spill.d.ts.map +0 -1
- package/dist/events/request-spill.js +0 -23
- package/dist/events/request-spill.js.map +0 -1
- package/dist/events/telemetry-channel.d.ts +0 -9
- package/dist/events/telemetry-channel.d.ts.map +0 -1
- package/dist/events/telemetry-channel.js +0 -16
- package/dist/events/telemetry-channel.js.map +0 -1
- package/dist/events/telemetry-sink.d.ts +0 -12
- package/dist/events/telemetry-sink.d.ts.map +0 -1
- package/dist/events/telemetry-sink.js +0 -24
- package/dist/events/telemetry-sink.js.map +0 -1
- package/dist/events/telemetry-types.d.ts.map +0 -1
- package/dist/events/telemetry-types.js.map +0 -1
- package/dist/events/verbose-line.d.ts +0 -13
- package/dist/events/verbose-line.d.ts.map +0 -1
- package/dist/events/verbose-line.js +0 -99
- package/dist/events/verbose-line.js.map +0 -1
- package/dist/events/verbose-log-channel.d.ts +0 -29
- package/dist/events/verbose-log-channel.d.ts.map +0 -1
- package/dist/events/verbose-log-channel.js +0 -63
- package/dist/events/verbose-log-channel.js.map +0 -1
- package/dist/identity/auth-token-store.d.ts.map +0 -1
- package/dist/identity/auth-token-store.js +0 -136
- package/dist/identity/auth-token-store.js.map +0 -1
- package/dist/identity/cwd-validator.d.ts +0 -6
- package/dist/identity/cwd-validator.d.ts.map +0 -1
- package/dist/identity/cwd-validator.js +0 -28
- package/dist/identity/cwd-validator.js.map +0 -1
- package/dist/identity/host-allowlist.d.ts +0 -6
- package/dist/identity/host-allowlist.d.ts.map +0 -1
- package/dist/identity/host-allowlist.js +0 -11
- package/dist/identity/host-allowlist.js.map +0 -1
- package/dist/identity/index.d.ts +0 -6
- package/dist/identity/index.d.ts.map +0 -1
- package/dist/identity/index.js +0 -7
- package/dist/identity/index.js.map +0 -1
- package/dist/identity/ssrf-guard.d.ts +0 -4
- package/dist/identity/ssrf-guard.d.ts.map +0 -1
- package/dist/identity/ssrf-guard.js +0 -19
- package/dist/identity/ssrf-guard.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// packages/core/src/events/plain-log-entry.ts
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const PlainLogKindEnum = z.enum([
|
|
4
|
+
'server_started', 'server_stopped',
|
|
5
|
+
'batch_created', 'request_received', 'request_spilled',
|
|
6
|
+
'batch_completed', 'batch_failed',
|
|
7
|
+
'project_evicted',
|
|
8
|
+
'stall_watchdog_armed', 'stall_watchdog_fired',
|
|
9
|
+
'provider_event',
|
|
10
|
+
'server_error',
|
|
11
|
+
]);
|
|
12
|
+
const FieldValue = z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
|
13
|
+
export const PlainLogEntrySchema = z.object({
|
|
14
|
+
ts: z.string().datetime({ offset: true }),
|
|
15
|
+
kind: PlainLogKindEnum,
|
|
16
|
+
fields: z.record(z.string(), FieldValue),
|
|
17
|
+
}).strict();
|
|
18
|
+
export const PROVIDER_EVENT_NAMES = [
|
|
19
|
+
// Claude (7)
|
|
20
|
+
'claude_session_starting', 'claude_turn_started', 'claude_error',
|
|
21
|
+
'claude_turn_completed', 'claude_text_emission', 'claude_tool_call', 'claude_session_closed',
|
|
22
|
+
// Codex (13)
|
|
23
|
+
'codex_subprocess_starting', 'codex_spawn_failed', 'codex_subprocess_started', 'codex_subprocess_exited',
|
|
24
|
+
'codex_thread_started', 'codex_turn_started', 'codex_command_started', 'codex_command_completed',
|
|
25
|
+
'codex_turn_completed', 'codex_turn_failed', 'codex_error', 'codex_agent_message', 'codex_file_change',
|
|
26
|
+
];
|
|
27
|
+
/** Per-event field shapes are NOT pre-declared — `mapProviderEventToPlainEntry`
|
|
28
|
+
* passes through all primitive fields from the raw event payload (object-valued
|
|
29
|
+
* fields become `<name>_json`). The names list above is the closed schema; field
|
|
30
|
+
* shapes are discovered from the provider files at migration time (T11) and
|
|
31
|
+
* asserted by tests/events/provider-event-mapping.test.ts.
|
|
32
|
+
*/
|
|
33
|
+
export function mapProviderEventToPlainEntry(provider, event, rawFields) {
|
|
34
|
+
const fields = { provider, event };
|
|
35
|
+
for (const [k, v] of Object.entries(rawFields)) {
|
|
36
|
+
if (v === null || typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {
|
|
37
|
+
fields[k] = v;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
fields[`${k}_json`] = JSON.stringify(v);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return { ts: new Date().toISOString(), kind: 'provider_event', fields };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=plain-log-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-log-entry.js","sourceRoot":"","sources":["../../src/events/plain-log-entry.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,gBAAgB,EAAC,gBAAgB;IACjC,eAAe,EAAC,kBAAkB,EAAC,iBAAiB;IACpD,iBAAiB,EAAC,cAAc;IAChC,iBAAiB;IACjB,sBAAsB,EAAC,sBAAsB;IAC7C,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAGH,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC;CACzC,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa;IACb,yBAAyB,EAAC,qBAAqB,EAAC,cAAc;IAC9D,uBAAuB,EAAC,sBAAsB,EAAC,kBAAkB,EAAC,uBAAuB;IACzF,aAAa;IACb,2BAA2B,EAAC,oBAAoB,EAAC,0BAA0B,EAAC,yBAAyB;IACrG,sBAAsB,EAAC,oBAAoB,EAAC,uBAAuB,EAAC,yBAAyB;IAC7F,sBAAsB,EAAC,mBAAmB,EAAC,aAAa,EAAC,qBAAqB,EAAC,mBAAmB;CAC1F,CAAC;AAGX;;;;;GAKG;AAEH,MAAM,UAAU,4BAA4B,CAC1C,QAA4B,EAC5B,KAAwB,EACxB,SAAkC;IAElC,MAAM,MAAM,GAAqD,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3F,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { EnvelopeBus } from './envelope-bus.js';
|
|
2
|
+
export interface StructuredError {
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
where?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface Finding {
|
|
8
|
+
id: string;
|
|
9
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
10
|
+
category: string;
|
|
11
|
+
claim: string;
|
|
12
|
+
evidence: string;
|
|
13
|
+
suggestion?: string;
|
|
14
|
+
source: 'implementer' | 'reviewer';
|
|
15
|
+
}
|
|
16
|
+
export interface EscalationEntry {
|
|
17
|
+
fromModel: string;
|
|
18
|
+
toModel: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
atStage?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ValidationWarning {
|
|
23
|
+
rule: string;
|
|
24
|
+
path: string;
|
|
25
|
+
}
|
|
26
|
+
export type Route = 'delegate' | 'audit' | 'review' | 'debug' | 'investigate' | 'execute-plan' | 'retry' | 'research';
|
|
27
|
+
export type EnvelopeStatus = 'running' | 'done' | 'done_with_concerns' | 'failed';
|
|
28
|
+
export type StageName = 'implementing' | 'reviewing' | 'reworking' | 'annotating' | 'committing';
|
|
29
|
+
export type AgentTier = 'standard' | 'complex';
|
|
30
|
+
export interface StageRecord {
|
|
31
|
+
name: StageName;
|
|
32
|
+
round: number;
|
|
33
|
+
outcome: 'advance' | 'concern' | 'fail' | 'skipped' | null;
|
|
34
|
+
startedAt: string;
|
|
35
|
+
completedAt: string | null;
|
|
36
|
+
durationMs: number;
|
|
37
|
+
costUSD: number | null;
|
|
38
|
+
model: string;
|
|
39
|
+
tier: AgentTier;
|
|
40
|
+
turnsUsed: number;
|
|
41
|
+
toolCallCount: number;
|
|
42
|
+
filesReadCount: number;
|
|
43
|
+
filesWrittenCount: number;
|
|
44
|
+
inputTokens: number;
|
|
45
|
+
outputTokens: number;
|
|
46
|
+
cachedReadTokens: number | null;
|
|
47
|
+
cachedNonReadTokens: number | null;
|
|
48
|
+
filesCommittedCount?: number;
|
|
49
|
+
branchCreated?: boolean;
|
|
50
|
+
skipReason?: 'noop' | 'no_command' | 'not_applicable' | 'reviewPolicy_none';
|
|
51
|
+
verdict?: 'passed' | 'failed' | 'no_command' | 'annotated';
|
|
52
|
+
findingsBySeverity?: {
|
|
53
|
+
critical: number;
|
|
54
|
+
high: number;
|
|
55
|
+
medium: number;
|
|
56
|
+
low: number;
|
|
57
|
+
};
|
|
58
|
+
concernCategories?: string[];
|
|
59
|
+
}
|
|
60
|
+
export interface ToolCallRecord {
|
|
61
|
+
ts: string;
|
|
62
|
+
stage: string;
|
|
63
|
+
tool: string;
|
|
64
|
+
filesRead: string[];
|
|
65
|
+
filesWritten: string[];
|
|
66
|
+
}
|
|
67
|
+
export interface HeadlineSnapshot {
|
|
68
|
+
prefix: string;
|
|
69
|
+
stageLabel: string;
|
|
70
|
+
stageDone: number;
|
|
71
|
+
stageTotal: number;
|
|
72
|
+
toolReads: number;
|
|
73
|
+
toolWrites: number;
|
|
74
|
+
toolTotal: number;
|
|
75
|
+
}
|
|
76
|
+
export interface TaskEnvelope {
|
|
77
|
+
taskId: string;
|
|
78
|
+
batchId: string;
|
|
79
|
+
taskIndex: number;
|
|
80
|
+
route: Route;
|
|
81
|
+
agentType: AgentTier;
|
|
82
|
+
client: string;
|
|
83
|
+
mainModel: string;
|
|
84
|
+
cwd: string;
|
|
85
|
+
startedAt: string;
|
|
86
|
+
status: EnvelopeStatus;
|
|
87
|
+
terminalAt: string | null;
|
|
88
|
+
stopReason: string | null;
|
|
89
|
+
structuredError: StructuredError | null;
|
|
90
|
+
stages: StageRecord[];
|
|
91
|
+
toolCalls: ToolCallRecord[];
|
|
92
|
+
filesRead: string[];
|
|
93
|
+
filesWritten: string[];
|
|
94
|
+
realFilesChanged: string[];
|
|
95
|
+
totalCostUSD: number;
|
|
96
|
+
totalInputTokens: number;
|
|
97
|
+
totalOutputTokens: number;
|
|
98
|
+
totalCachedReadTokens: number;
|
|
99
|
+
totalCachedNonReadTokens: number;
|
|
100
|
+
totalDurationMs: number;
|
|
101
|
+
turnsUsed: number;
|
|
102
|
+
stallCount: number;
|
|
103
|
+
sandboxViolationCount: number;
|
|
104
|
+
taskMaxIdleMs: number;
|
|
105
|
+
findings: Finding[];
|
|
106
|
+
escalationLog: EscalationEntry[];
|
|
107
|
+
validationWarnings: ValidationWarning[];
|
|
108
|
+
headline: HeadlineSnapshot;
|
|
109
|
+
}
|
|
110
|
+
export interface CreateSeed {
|
|
111
|
+
taskId: string;
|
|
112
|
+
batchId: string;
|
|
113
|
+
taskIndex: number;
|
|
114
|
+
route: Route;
|
|
115
|
+
agentType: AgentTier;
|
|
116
|
+
client: string;
|
|
117
|
+
mainModel: string;
|
|
118
|
+
cwd: string;
|
|
119
|
+
}
|
|
120
|
+
export declare class SealedEnvelopeError extends Error {
|
|
121
|
+
constructor(method: string);
|
|
122
|
+
}
|
|
123
|
+
type Notify = (reason: string) => void;
|
|
124
|
+
export declare class TaskEnvelopeStore {
|
|
125
|
+
private env;
|
|
126
|
+
private sealed;
|
|
127
|
+
private notify;
|
|
128
|
+
private constructor();
|
|
129
|
+
static create(seed: CreateSeed, busOrNotify?: EnvelopeBus | Notify): TaskEnvelopeStore;
|
|
130
|
+
private guard;
|
|
131
|
+
startStage(name: StageName, init: {
|
|
132
|
+
model: string;
|
|
133
|
+
tier: AgentTier;
|
|
134
|
+
startedAt?: string;
|
|
135
|
+
round?: number;
|
|
136
|
+
}): void;
|
|
137
|
+
completeStage(name: StageName, round: number, result: Partial<StageRecord> & {
|
|
138
|
+
outcome: StageRecord['outcome'];
|
|
139
|
+
durationMs: number;
|
|
140
|
+
}): void;
|
|
141
|
+
recordToolCall(entry: {
|
|
142
|
+
stage: string;
|
|
143
|
+
tool: string;
|
|
144
|
+
filesRead?: string[];
|
|
145
|
+
filesWritten?: string[];
|
|
146
|
+
}): void;
|
|
147
|
+
recordEscalation(entry: EscalationEntry): void;
|
|
148
|
+
recordStall(entry: {
|
|
149
|
+
atMs: number;
|
|
150
|
+
idleMs: number;
|
|
151
|
+
}): void;
|
|
152
|
+
recordSandboxViolation(entry: {
|
|
153
|
+
kind: string;
|
|
154
|
+
path: string;
|
|
155
|
+
}): void;
|
|
156
|
+
recordFinding(f: Finding): void;
|
|
157
|
+
recordValidationWarning(w: ValidationWarning): void;
|
|
158
|
+
recordHeartbeat(_state: {
|
|
159
|
+
stallIdleMs: number;
|
|
160
|
+
}): void;
|
|
161
|
+
seal(terminal: {
|
|
162
|
+
status: 'done' | 'done_with_concerns' | 'failed';
|
|
163
|
+
terminalAt?: string;
|
|
164
|
+
stopReason: string | null;
|
|
165
|
+
structuredError?: StructuredError | null;
|
|
166
|
+
realFilesChanged: string[];
|
|
167
|
+
}): void;
|
|
168
|
+
isSealed(): boolean;
|
|
169
|
+
snapshot(): Readonly<TaskEnvelope>;
|
|
170
|
+
private recomputeTotals;
|
|
171
|
+
private recomputeHeadline;
|
|
172
|
+
}
|
|
173
|
+
export {};
|
|
174
|
+
//# sourceMappingURL=task-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-envelope.d.ts","sourceRoot":"","sources":["../../src/events/task-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// packages/core/src/events/task-envelope.ts
|
|
2
|
+
// StructuredError lives on RunResult — re-define inline here to decouple events from run-result.
|
|
3
|
+
// Finding: existing in lifecycle/stage-io.ts but we keep a local minimal shape so events doesn't depend on lifecycle.
|
|
4
|
+
// EscalationEntry: existing as EscalationRecord on RunResult — local re-shape here.
|
|
5
|
+
// ValidationWarning: existing inline in TaskCompletedEventSchema — local re-shape here.
|
|
6
|
+
export class SealedEnvelopeError extends Error {
|
|
7
|
+
constructor(method) { super(`TaskEnvelopeStore: cannot call ${method}() after seal()`); }
|
|
8
|
+
}
|
|
9
|
+
export class TaskEnvelopeStore {
|
|
10
|
+
env;
|
|
11
|
+
sealed = false;
|
|
12
|
+
notify;
|
|
13
|
+
constructor(env, notify) {
|
|
14
|
+
this.env = env;
|
|
15
|
+
this.notify = notify;
|
|
16
|
+
}
|
|
17
|
+
static create(seed, busOrNotify = () => { }) {
|
|
18
|
+
const notify = typeof busOrNotify === 'function'
|
|
19
|
+
? busOrNotify
|
|
20
|
+
: (reason) => busOrNotify.emitEnvelopeSnapshot(store.snapshot(), reason);
|
|
21
|
+
let store;
|
|
22
|
+
const env = {
|
|
23
|
+
taskId: seed.taskId, batchId: seed.batchId, taskIndex: seed.taskIndex,
|
|
24
|
+
route: seed.route, agentType: seed.agentType,
|
|
25
|
+
client: seed.client, mainModel: seed.mainModel, cwd: seed.cwd,
|
|
26
|
+
startedAt: new Date().toISOString(),
|
|
27
|
+
status: 'running', terminalAt: null, stopReason: null, structuredError: null,
|
|
28
|
+
stages: [], toolCalls: [], filesRead: [], filesWritten: [], realFilesChanged: [],
|
|
29
|
+
totalCostUSD: 0, totalInputTokens: 0, totalOutputTokens: 0,
|
|
30
|
+
totalCachedReadTokens: 0, totalCachedNonReadTokens: 0,
|
|
31
|
+
totalDurationMs: 0, turnsUsed: 0, stallCount: 0, sandboxViolationCount: 0, taskMaxIdleMs: 0,
|
|
32
|
+
findings: [], escalationLog: [], validationWarnings: [],
|
|
33
|
+
headline: { prefix: '', stageLabel: 'queued', stageDone: 0, stageTotal: 0, toolReads: 0, toolWrites: 0, toolTotal: 0 },
|
|
34
|
+
};
|
|
35
|
+
store = new TaskEnvelopeStore(env, notify);
|
|
36
|
+
store.recomputeHeadline();
|
|
37
|
+
return store;
|
|
38
|
+
}
|
|
39
|
+
guard(method) { if (this.sealed)
|
|
40
|
+
throw new SealedEnvelopeError(method); }
|
|
41
|
+
startStage(name, init) {
|
|
42
|
+
this.guard('startStage');
|
|
43
|
+
this.env.stages.push({
|
|
44
|
+
name, round: init.round ?? 1, outcome: null,
|
|
45
|
+
startedAt: init.startedAt ?? new Date().toISOString(), completedAt: null,
|
|
46
|
+
durationMs: 0, costUSD: null, model: init.model, tier: init.tier,
|
|
47
|
+
turnsUsed: 0, toolCallCount: 0, filesReadCount: 0, filesWrittenCount: 0,
|
|
48
|
+
inputTokens: 0, outputTokens: 0, cachedReadTokens: null, cachedNonReadTokens: null,
|
|
49
|
+
});
|
|
50
|
+
this.recomputeHeadline();
|
|
51
|
+
this.notify('startStage');
|
|
52
|
+
}
|
|
53
|
+
completeStage(name, round, result) {
|
|
54
|
+
this.guard('completeStage');
|
|
55
|
+
const stage = this.env.stages.find(s => s.name === name && s.round === round);
|
|
56
|
+
if (!stage)
|
|
57
|
+
throw new Error(`completeStage: no started stage ${name}@${round}`);
|
|
58
|
+
Object.assign(stage, result, { completedAt: new Date().toISOString() });
|
|
59
|
+
this.recomputeTotals();
|
|
60
|
+
this.recomputeHeadline();
|
|
61
|
+
this.notify('completeStage');
|
|
62
|
+
}
|
|
63
|
+
recordToolCall(entry) {
|
|
64
|
+
this.guard('recordToolCall');
|
|
65
|
+
const rec = {
|
|
66
|
+
ts: new Date().toISOString(), stage: entry.stage, tool: entry.tool,
|
|
67
|
+
filesRead: entry.filesRead ?? [], filesWritten: entry.filesWritten ?? [],
|
|
68
|
+
};
|
|
69
|
+
this.env.toolCalls.push(rec);
|
|
70
|
+
for (const f of rec.filesRead)
|
|
71
|
+
if (!this.env.filesRead.includes(f))
|
|
72
|
+
this.env.filesRead.push(f);
|
|
73
|
+
for (const f of rec.filesWritten)
|
|
74
|
+
if (!this.env.filesWritten.includes(f))
|
|
75
|
+
this.env.filesWritten.push(f);
|
|
76
|
+
const last = this.env.stages[this.env.stages.length - 1];
|
|
77
|
+
if (last) {
|
|
78
|
+
last.toolCallCount++;
|
|
79
|
+
last.filesReadCount = this.env.filesRead.length;
|
|
80
|
+
last.filesWrittenCount = this.env.filesWritten.length;
|
|
81
|
+
}
|
|
82
|
+
this.recomputeHeadline();
|
|
83
|
+
this.notify('recordToolCall');
|
|
84
|
+
}
|
|
85
|
+
recordEscalation(entry) {
|
|
86
|
+
this.guard('recordEscalation');
|
|
87
|
+
this.env.escalationLog.push(entry);
|
|
88
|
+
this.notify('recordEscalation');
|
|
89
|
+
}
|
|
90
|
+
recordStall(entry) {
|
|
91
|
+
this.guard('recordStall');
|
|
92
|
+
this.env.stallCount++;
|
|
93
|
+
if (entry.idleMs > this.env.taskMaxIdleMs)
|
|
94
|
+
this.env.taskMaxIdleMs = entry.idleMs;
|
|
95
|
+
this.notify('recordStall');
|
|
96
|
+
}
|
|
97
|
+
recordSandboxViolation(entry) {
|
|
98
|
+
this.guard('recordSandboxViolation');
|
|
99
|
+
this.env.sandboxViolationCount++;
|
|
100
|
+
this.notify('recordSandboxViolation');
|
|
101
|
+
}
|
|
102
|
+
recordFinding(f) { this.guard('recordFinding'); this.env.findings.push(f); this.notify('recordFinding'); }
|
|
103
|
+
recordValidationWarning(w) { this.guard('recordValidationWarning'); this.env.validationWarnings.push(w); this.notify('recordValidationWarning'); }
|
|
104
|
+
recordHeartbeat(_state) { this.guard('recordHeartbeat'); this.recomputeHeadline(); this.notify('recordHeartbeat'); }
|
|
105
|
+
seal(terminal) {
|
|
106
|
+
this.guard('seal');
|
|
107
|
+
this.env.status = terminal.status;
|
|
108
|
+
this.env.terminalAt = terminal.terminalAt ?? new Date().toISOString();
|
|
109
|
+
this.env.stopReason = terminal.stopReason;
|
|
110
|
+
this.env.structuredError = terminal.structuredError ?? null;
|
|
111
|
+
this.env.realFilesChanged = [...terminal.realFilesChanged];
|
|
112
|
+
this.recomputeTotals();
|
|
113
|
+
this.recomputeHeadline();
|
|
114
|
+
this.sealed = true;
|
|
115
|
+
this.notify('seal');
|
|
116
|
+
}
|
|
117
|
+
isSealed() { return this.sealed; }
|
|
118
|
+
snapshot() { return structuredClone(this.env); }
|
|
119
|
+
recomputeTotals() {
|
|
120
|
+
let cost = 0, inT = 0, outT = 0, crT = 0, cnrT = 0, dur = 0, turns = 0;
|
|
121
|
+
for (const s of this.env.stages) {
|
|
122
|
+
cost += s.costUSD ?? 0;
|
|
123
|
+
inT += s.inputTokens;
|
|
124
|
+
outT += s.outputTokens;
|
|
125
|
+
crT += s.cachedReadTokens ?? 0;
|
|
126
|
+
cnrT += s.cachedNonReadTokens ?? 0;
|
|
127
|
+
dur += s.durationMs;
|
|
128
|
+
turns += s.turnsUsed;
|
|
129
|
+
}
|
|
130
|
+
this.env.totalCostUSD = cost;
|
|
131
|
+
this.env.totalInputTokens = inT;
|
|
132
|
+
this.env.totalOutputTokens = outT;
|
|
133
|
+
this.env.totalCachedReadTokens = crT;
|
|
134
|
+
this.env.totalCachedNonReadTokens = cnrT;
|
|
135
|
+
this.env.totalDurationMs = dur;
|
|
136
|
+
this.env.turnsUsed = turns;
|
|
137
|
+
}
|
|
138
|
+
recomputeHeadline() {
|
|
139
|
+
const stageNames = this.env.stages.map(s => s.name);
|
|
140
|
+
const lastStage = this.env.stages[this.env.stages.length - 1];
|
|
141
|
+
const reads = this.env.filesRead.length;
|
|
142
|
+
const writes = this.env.filesWritten.length;
|
|
143
|
+
this.env.headline = {
|
|
144
|
+
prefix: '',
|
|
145
|
+
stageLabel: lastStage ? lastStage.name : 'queued',
|
|
146
|
+
stageDone: this.env.stages.filter(s => s.outcome !== null).length,
|
|
147
|
+
stageTotal: stageNames.length,
|
|
148
|
+
toolReads: reads, toolWrites: writes, toolTotal: reads + writes,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=task-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-envelope.js","sourceRoot":"","sources":["../../src/events/task-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Subscriber, BusMessage } from './envelope-bus.js';
|
|
2
|
+
import type { TaskEnvelope } from './task-envelope.js';
|
|
3
|
+
import { toWireRecord } from './to-wire-record.js';
|
|
4
|
+
export interface RecorderLike {
|
|
5
|
+
enqueue(event: unknown): void;
|
|
6
|
+
}
|
|
7
|
+
export interface ConsentLike {
|
|
8
|
+
decide(): {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface TelemetryUploaderOpts {
|
|
13
|
+
recorder: RecorderLike | null;
|
|
14
|
+
consent?: ConsentLike;
|
|
15
|
+
buildOpts: (env: TaskEnvelope) => Parameters<typeof toWireRecord>[1];
|
|
16
|
+
}
|
|
17
|
+
export declare class TelemetryUploader implements Subscriber {
|
|
18
|
+
private opts;
|
|
19
|
+
readonly name = "telemetry-uploader";
|
|
20
|
+
private uploaded;
|
|
21
|
+
constructor(opts: TelemetryUploaderOpts);
|
|
22
|
+
receive(msg: BusMessage): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=telemetry-uploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-uploader.d.ts","sourceRoot":"","sources":["../../src/events/telemetry-uploader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,IAAI;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE;AAED,qBAAa,iBAAkB,YAAW,UAAU;IAGtC,OAAO,CAAC,IAAI;IAFxB,QAAQ,CAAC,IAAI,wBAAwB;IACrC,OAAO,CAAC,QAAQ,CAAqB;gBACjB,IAAI,EAAE,qBAAqB;IAE/C,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;CAe/B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { toWireRecord } from './to-wire-record.js';
|
|
2
|
+
export class TelemetryUploader {
|
|
3
|
+
opts;
|
|
4
|
+
name = 'telemetry-uploader';
|
|
5
|
+
uploaded = new Set();
|
|
6
|
+
constructor(opts) {
|
|
7
|
+
this.opts = opts;
|
|
8
|
+
}
|
|
9
|
+
receive(msg) {
|
|
10
|
+
if (msg.type === 'plain')
|
|
11
|
+
return;
|
|
12
|
+
const env = msg.envelope;
|
|
13
|
+
if (env.status === 'running')
|
|
14
|
+
return;
|
|
15
|
+
if (this.uploaded.has(env.taskId))
|
|
16
|
+
return;
|
|
17
|
+
if (!this.opts.recorder)
|
|
18
|
+
return;
|
|
19
|
+
if (this.opts.consent && !this.opts.consent.decide().enabled)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
const record = toWireRecord(env, this.opts.buildOpts(env));
|
|
23
|
+
this.opts.recorder.enqueue(record);
|
|
24
|
+
this.uploaded.add(env.taskId);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
process.stderr.write(`[mmagent] telemetry_upload_error task=${env.taskId} err=${err.message}\n`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=telemetry-uploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-uploader.js","sourceRoot":"","sources":["../../src/events/telemetry-uploader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAgBnD,MAAM,OAAO,iBAAiB;IAGR;IAFX,IAAI,GAAG,oBAAoB,CAAC;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,YAAoB,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAG,CAAC;IAEnD,OAAO,CAAC,GAAe;QACrB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO;QACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO;YAAE,OAAO;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,MAAM,QAAS,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ModelFamily } from '../config/model-profile-registry.js';
|
|
2
|
+
import type { TaskEnvelope } from './task-envelope.js';
|
|
3
|
+
import type { TaskCompletedEventType } from './wire-schema.js';
|
|
4
|
+
export declare const clampStageCost: (n: number) => number;
|
|
5
|
+
export declare const clampTaskCost: (n: number) => number;
|
|
6
|
+
export declare const clampInputTokens: (n: number) => number;
|
|
7
|
+
export declare const clampOutputTokens: (n: number) => number;
|
|
8
|
+
export declare const clampCachedTokens: (n: number) => number;
|
|
9
|
+
export declare const clampToolCallCount: (n: number) => number;
|
|
10
|
+
export declare const clampFilesReadCount: (n: number) => number;
|
|
11
|
+
export declare const clampFilesWrittenCount: (n: number) => number;
|
|
12
|
+
export declare const clampTurnCount: (n: number) => number;
|
|
13
|
+
export declare const clampDurationMsStage: (n: number) => number;
|
|
14
|
+
export declare const clampDurationMsTotal: (n: number) => number;
|
|
15
|
+
/**
|
|
16
|
+
* Normalize a raw model ID into its canonical name and family.
|
|
17
|
+
*
|
|
18
|
+
* Combines prefix stripping (extractCanonicalModelName) with profile
|
|
19
|
+
* lookup (findModelProfile) into a single call. Callers that need both
|
|
20
|
+
* the canonical form and the family without reaching into routing
|
|
21
|
+
* internals should use this entry point.
|
|
22
|
+
*
|
|
23
|
+
* Idempotent: the canonical output of normalizeModel, when fed back
|
|
24
|
+
* in as input, produces the same canonical output.
|
|
25
|
+
*/
|
|
26
|
+
export declare function normalizeModel(rawModelId: string): {
|
|
27
|
+
canonical: string;
|
|
28
|
+
family: ModelFamily;
|
|
29
|
+
};
|
|
30
|
+
export declare function mapStatusToWire(status: TaskEnvelope['status'], errCode: string | null): {
|
|
31
|
+
terminalStatus: string;
|
|
32
|
+
workerStatus: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function toWireRecord(env: TaskEnvelope, opts: {
|
|
35
|
+
reviewPolicy: 'full' | 'quality_only' | 'diff_only' | 'none';
|
|
36
|
+
toolMode: 'none' | 'readonly' | 'no-shell' | 'full';
|
|
37
|
+
verifyCommandPresent: boolean;
|
|
38
|
+
implementerModel: string;
|
|
39
|
+
implementerTier: 'standard' | 'complex';
|
|
40
|
+
mainModelFamily: string;
|
|
41
|
+
}): TaskCompletedEventType;
|
|
42
|
+
//# sourceMappingURL=to-wire-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-wire-record.d.ts","sourceRoot":"","sources":["../../src/events/to-wire-record.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI/D,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,KAAG,MACwB,CAAC;AAEpE,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,KAAG,MACT,CAAC;AAElC,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,KAAG,MACN,CAAC;AAExC,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,MACT,CAAC;AAEtC,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,MACP,CAAC;AAExC,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,KAAG,MACf,CAAC;AAEjC,eAAO,MAAM,mBAAmB,GAAI,GAAG,MAAM,KAAG,MAChB,CAAC;AAEjC,eAAO,MAAM,sBAAsB,GAAI,GAAG,MAAM,KAAG,MACnB,CAAC;AAEjC,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,KAAG,MACZ,CAAC;AAEhC,eAAO,MAAM,oBAAoB,GAAI,GAAG,MAAM,KAAG,MACZ,CAAC;AAEtC,eAAO,MAAM,oBAAoB,GAAI,GAAG,MAAM,KAAG,MACX,CAAC;AAGvC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAI7F;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAuBlD;AAGD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;IAC7D,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IACpD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,sBAAsB,CAmHxB"}
|