@zhixuan92/multi-model-agent-core 4.7.1 → 4.7.3

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.
Files changed (206) hide show
  1. package/README.md +8 -6
  2. package/dist/bounded-execution/progress-events-subscriber.d.ts +3 -3
  3. package/dist/bounded-execution/progress-events-subscriber.d.ts.map +1 -1
  4. package/dist/bounded-execution/progress-events-subscriber.js +14 -4
  5. package/dist/bounded-execution/progress-events-subscriber.js.map +1 -1
  6. package/dist/bounded-execution/stall-watchdog.d.ts +4 -2
  7. package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
  8. package/dist/bounded-execution/stall-watchdog.js +55 -31
  9. package/dist/bounded-execution/stall-watchdog.js.map +1 -1
  10. package/dist/config/schema.d.ts +0 -1
  11. package/dist/config/schema.d.ts.map +1 -1
  12. package/dist/config/schema.js +0 -1
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/events/envelope-bus.d.ts +22 -0
  15. package/dist/events/envelope-bus.d.ts.map +1 -0
  16. package/dist/events/envelope-bus.js +35 -0
  17. package/dist/events/envelope-bus.js.map +1 -0
  18. package/dist/events/log-writer.d.ts +24 -0
  19. package/dist/events/log-writer.d.ts.map +1 -0
  20. package/dist/events/log-writer.js +52 -0
  21. package/dist/events/log-writer.js.map +1 -0
  22. package/dist/events/plain-log-entry.d.ts +45 -0
  23. package/dist/events/plain-log-entry.d.ts.map +1 -0
  24. package/dist/events/plain-log-entry.js +45 -0
  25. package/dist/events/plain-log-entry.js.map +1 -0
  26. package/dist/events/stderr-log-subscriber.d.ts +16 -0
  27. package/dist/events/stderr-log-subscriber.d.ts.map +1 -0
  28. package/dist/events/stderr-log-subscriber.js +50 -0
  29. package/dist/events/stderr-log-subscriber.js.map +1 -0
  30. package/dist/events/task-envelope.d.ts +174 -0
  31. package/dist/events/task-envelope.d.ts.map +1 -0
  32. package/dist/events/task-envelope.js +165 -0
  33. package/dist/events/task-envelope.js.map +1 -0
  34. package/dist/events/telemetry-uploader.d.ts +24 -0
  35. package/dist/events/telemetry-uploader.d.ts.map +1 -0
  36. package/dist/events/telemetry-uploader.js +31 -0
  37. package/dist/events/telemetry-uploader.js.map +1 -0
  38. package/dist/events/to-wire-record.d.ts +42 -0
  39. package/dist/events/to-wire-record.d.ts.map +1 -0
  40. package/dist/events/to-wire-record.js +230 -0
  41. package/dist/events/to-wire-record.js.map +1 -0
  42. package/dist/events/{telemetry-types.d.ts → wire-schema.d.ts} +23 -36
  43. package/dist/events/wire-schema.d.ts.map +1 -0
  44. package/dist/events/{telemetry-types.js → wire-schema.js} +2 -9
  45. package/dist/events/wire-schema.js.map +1 -0
  46. package/dist/identity/{auth-token-store.d.ts → claude-oauth.d.ts} +1 -24
  47. package/dist/identity/claude-oauth.d.ts.map +1 -0
  48. package/dist/identity/claude-oauth.js +71 -0
  49. package/dist/identity/claude-oauth.js.map +1 -0
  50. package/dist/index.d.ts +9 -10
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +5 -7
  53. package/dist/index.js.map +1 -1
  54. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -1
  55. package/dist/lifecycle/handlers/annotate-stage.js +11 -5
  56. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -1
  57. package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -1
  58. package/dist/lifecycle/handlers/review-stage.js +6 -1
  59. package/dist/lifecycle/handlers/review-stage.js.map +1 -1
  60. package/dist/lifecycle/handlers/rework-stage.js +2 -2
  61. package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
  62. package/dist/lifecycle/handlers/terminal-handlers.d.ts +5 -4
  63. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  64. package/dist/lifecycle/handlers/terminal-handlers.js +39 -71
  65. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  66. package/dist/lifecycle/lifecycle-context.d.ts +11 -8
  67. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  68. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  69. package/dist/lifecycle/lifecycle-driver.js +169 -9
  70. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  71. package/dist/lifecycle/perform-implementation.js +2 -2
  72. package/dist/lifecycle/perform-implementation.js.map +1 -1
  73. package/dist/lifecycle/stage-plan-types.d.ts +7 -2
  74. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  75. package/dist/lifecycle/task-completion-summary.js +1 -1
  76. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  77. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  78. package/dist/lifecycle/task-executor.js +1 -2
  79. package/dist/lifecycle/task-executor.js.map +1 -1
  80. package/dist/lifecycle/task-runner.d.ts +11 -10
  81. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  82. package/dist/lifecycle/task-runner.js +3 -4
  83. package/dist/lifecycle/task-runner.js.map +1 -1
  84. package/dist/providers/claude-session.d.ts +1 -0
  85. package/dist/providers/claude-session.d.ts.map +1 -1
  86. package/dist/providers/claude-session.js +29 -27
  87. package/dist/providers/claude-session.js.map +1 -1
  88. package/dist/providers/claude.js +1 -1
  89. package/dist/providers/claude.js.map +1 -1
  90. package/dist/providers/codex-cli-session.d.ts +4 -2
  91. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  92. package/dist/providers/codex-cli-session.js +47 -46
  93. package/dist/providers/codex-cli-session.js.map +1 -1
  94. package/dist/providers/runner-types.d.ts +3 -3
  95. package/dist/providers/runner-types.d.ts.map +1 -1
  96. package/dist/reporting/structured-report.d.ts +3 -3
  97. package/dist/stores/batch-registry.d.ts +37 -29
  98. package/dist/stores/batch-registry.d.ts.map +1 -1
  99. package/dist/stores/batch-registry.js +18 -23
  100. package/dist/stores/batch-registry.js.map +1 -1
  101. package/dist/tools/audit/schema.d.ts +1 -1
  102. package/dist/tools/review/schema.d.ts +1 -1
  103. package/dist/transport/http-listener.d.ts +1 -1
  104. package/dist/types/config.d.ts +0 -1
  105. package/dist/types/config.d.ts.map +1 -1
  106. package/dist/types/enums.d.ts +16 -16
  107. package/dist/types/run-result.d.ts +3 -0
  108. package/dist/types/run-result.d.ts.map +1 -1
  109. package/package.json +25 -29
  110. package/dist/events/caller-response-channel.d.ts +0 -17
  111. package/dist/events/caller-response-channel.d.ts.map +0 -1
  112. package/dist/events/caller-response-channel.js +0 -10
  113. package/dist/events/caller-response-channel.js.map +0 -1
  114. package/dist/events/clamp.d.ts +0 -13
  115. package/dist/events/clamp.d.ts.map +0 -1
  116. package/dist/events/clamp.js +0 -24
  117. package/dist/events/clamp.js.map +0 -1
  118. package/dist/events/cloud-events.d.ts +0 -108
  119. package/dist/events/cloud-events.d.ts.map +0 -1
  120. package/dist/events/cloud-events.js +0 -58
  121. package/dist/events/cloud-events.js.map +0 -1
  122. package/dist/events/concern-classifier.d.ts +0 -9
  123. package/dist/events/concern-classifier.d.ts.map +0 -1
  124. package/dist/events/concern-classifier.js +0 -26
  125. package/dist/events/concern-classifier.js.map +0 -1
  126. package/dist/events/diagnostics-types.d.ts +0 -65
  127. package/dist/events/diagnostics-types.d.ts.map +0 -1
  128. package/dist/events/diagnostics-types.js +0 -2
  129. package/dist/events/diagnostics-types.js.map +0 -1
  130. package/dist/events/event-base.d.ts +0 -14
  131. package/dist/events/event-base.d.ts.map +0 -1
  132. package/dist/events/event-base.js +0 -24
  133. package/dist/events/event-base.js.map +0 -1
  134. package/dist/events/event-builder.d.ts +0 -55
  135. package/dist/events/event-builder.d.ts.map +0 -1
  136. package/dist/events/event-builder.js +0 -557
  137. package/dist/events/event-builder.js.map +0 -1
  138. package/dist/events/event-emitter.d.ts +0 -31
  139. package/dist/events/event-emitter.d.ts.map +0 -1
  140. package/dist/events/event-emitter.js +0 -63
  141. package/dist/events/event-emitter.js.map +0 -1
  142. package/dist/events/http-server-log.d.ts +0 -63
  143. package/dist/events/http-server-log.d.ts.map +0 -1
  144. package/dist/events/http-server-log.js +0 -188
  145. package/dist/events/http-server-log.js.map +0 -1
  146. package/dist/events/index.d.ts +0 -6
  147. package/dist/events/index.d.ts.map +0 -1
  148. package/dist/events/index.js +0 -7
  149. package/dist/events/index.js.map +0 -1
  150. package/dist/events/local-log-sink.d.ts +0 -10
  151. package/dist/events/local-log-sink.d.ts.map +0 -1
  152. package/dist/events/local-log-sink.js +0 -11
  153. package/dist/events/local-log-sink.js.map +0 -1
  154. package/dist/events/normalize.d.ts +0 -18
  155. package/dist/events/normalize.d.ts.map +0 -1
  156. package/dist/events/normalize.js +0 -18
  157. package/dist/events/normalize.js.map +0 -1
  158. package/dist/events/observability-events.d.ts +0 -1324
  159. package/dist/events/observability-events.d.ts.map +0 -1
  160. package/dist/events/observability-events.js +0 -446
  161. package/dist/events/observability-events.js.map +0 -1
  162. package/dist/events/privacy-filter.d.ts +0 -2
  163. package/dist/events/privacy-filter.d.ts.map +0 -1
  164. package/dist/events/privacy-filter.js +0 -10
  165. package/dist/events/privacy-filter.js.map +0 -1
  166. package/dist/events/request-spill.d.ts +0 -16
  167. package/dist/events/request-spill.d.ts.map +0 -1
  168. package/dist/events/request-spill.js +0 -23
  169. package/dist/events/request-spill.js.map +0 -1
  170. package/dist/events/telemetry-channel.d.ts +0 -9
  171. package/dist/events/telemetry-channel.d.ts.map +0 -1
  172. package/dist/events/telemetry-channel.js +0 -16
  173. package/dist/events/telemetry-channel.js.map +0 -1
  174. package/dist/events/telemetry-sink.d.ts +0 -12
  175. package/dist/events/telemetry-sink.d.ts.map +0 -1
  176. package/dist/events/telemetry-sink.js +0 -24
  177. package/dist/events/telemetry-sink.js.map +0 -1
  178. package/dist/events/telemetry-types.d.ts.map +0 -1
  179. package/dist/events/telemetry-types.js.map +0 -1
  180. package/dist/events/verbose-line.d.ts +0 -13
  181. package/dist/events/verbose-line.d.ts.map +0 -1
  182. package/dist/events/verbose-line.js +0 -99
  183. package/dist/events/verbose-line.js.map +0 -1
  184. package/dist/events/verbose-log-channel.d.ts +0 -29
  185. package/dist/events/verbose-log-channel.d.ts.map +0 -1
  186. package/dist/events/verbose-log-channel.js +0 -63
  187. package/dist/events/verbose-log-channel.js.map +0 -1
  188. package/dist/identity/auth-token-store.d.ts.map +0 -1
  189. package/dist/identity/auth-token-store.js +0 -136
  190. package/dist/identity/auth-token-store.js.map +0 -1
  191. package/dist/identity/cwd-validator.d.ts +0 -6
  192. package/dist/identity/cwd-validator.d.ts.map +0 -1
  193. package/dist/identity/cwd-validator.js +0 -28
  194. package/dist/identity/cwd-validator.js.map +0 -1
  195. package/dist/identity/host-allowlist.d.ts +0 -6
  196. package/dist/identity/host-allowlist.d.ts.map +0 -1
  197. package/dist/identity/host-allowlist.js +0 -11
  198. package/dist/identity/host-allowlist.js.map +0 -1
  199. package/dist/identity/index.d.ts +0 -6
  200. package/dist/identity/index.d.ts.map +0 -1
  201. package/dist/identity/index.js +0 -7
  202. package/dist/identity/index.js.map +0 -1
  203. package/dist/identity/ssrf-guard.d.ts +0 -4
  204. package/dist/identity/ssrf-guard.d.ts.map +0 -1
  205. package/dist/identity/ssrf-guard.js +0 -19
  206. package/dist/identity/ssrf-guard.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stderr-log-subscriber.d.ts","sourceRoot":"","sources":["../../src/events/stderr-log-subscriber.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,mBAAoB,YAAW,UAAU;IAGxC,OAAO,CAAC,KAAK;IAFzB,QAAQ,CAAC,IAAI,gBAAgB;gBAET,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAgD;IAE7F,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;CAI/B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAe7D"}
@@ -0,0 +1,50 @@
1
+ // packages/core/src/events/stderr-log-subscriber.ts
2
+ //
3
+ // EnvelopeBus subscriber that streams every plain log entry to the daemon's
4
+ // stderr in `[mmagent] event=... ts=... key=val` snake_case format. Always-on
5
+ // for `mmagent serve` — there is no quiet mode and no `--verbose` flag.
6
+ // Replaces the 4.7.1 VerboseLogChannel after the 4.7.2 envelope-bus rewrite
7
+ // dropped it; `verbose` as a separate concept is gone (4.7.3+).
8
+ //
9
+ // Filters: emits PlainLogEntry (provider events + lifecycle one-offs).
10
+ // Envelope snapshots are intentionally NOT emitted — they're too noisy at
11
+ // stderr (one per 5s heartbeat + per mutation). LogWriter handles the file
12
+ // path for full envelope persistence.
13
+ export class StderrLogSubscriber {
14
+ write;
15
+ name = 'stderr-log';
16
+ constructor(write = (line) => { process.stderr.write(line); }) {
17
+ this.write = write;
18
+ }
19
+ receive(msg) {
20
+ if (msg.type !== 'plain')
21
+ return;
22
+ this.write(formatStderrLine(msg.entry) + '\n');
23
+ }
24
+ }
25
+ /**
26
+ * Format a PlainLogEntry as a single `[mmagent] event=... ts=... key=val` line.
27
+ * Primitive values are emitted directly (snake-cased, quoted only when they
28
+ * contain whitespace or quotes). One line per event — operators can grep this
29
+ * stream the same way they'd grep the JSONL log.
30
+ */
31
+ export function formatStderrLine(entry) {
32
+ const fields = entry.fields ?? {};
33
+ const eventName = typeof fields['event'] === 'string' ? fields['event'] : entry.kind;
34
+ const parts = [`event=${eventName}`, `ts=${entry.ts}`];
35
+ for (const [k, v] of Object.entries(fields)) {
36
+ if (k === 'event')
37
+ continue;
38
+ if (v === undefined || v === null)
39
+ continue;
40
+ const snake = k.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();
41
+ if (typeof v === 'string' && /[\s"\\]/.test(v)) {
42
+ parts.push(`${snake}=${JSON.stringify(v)}`);
43
+ }
44
+ else {
45
+ parts.push(`${snake}=${v}`);
46
+ }
47
+ }
48
+ return `[mmagent] ${parts.join(' ')}`;
49
+ }
50
+ //# sourceMappingURL=stderr-log-subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stderr-log-subscriber.js","sourceRoot":"","sources":["../../src/events/stderr-log-subscriber.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,gEAAgE;AAChE,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,2EAA2E;AAC3E,sCAAsC;AAKtC,MAAM,OAAO,mBAAmB;IAGV;IAFX,IAAI,GAAG,YAAY,CAAC;IAE7B,YAAoB,QAAgC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAzE,UAAK,GAAL,KAAK,CAAoE;IAAG,CAAC;IAEjG,OAAO,CAAC,GAAe;QACrB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACrF,MAAM,KAAK,GAAa,CAAC,SAAS,SAAS,EAAE,EAAE,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,OAAO;YAAE,SAAS;QAC5B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,aAAa,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACxC,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' | 'approved' | 'changes_required' | 'concerns' | 'error';
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":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAClF,MAAM,WAAW,OAAO;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,GAAC,MAAM,GAAC,QAAQ,GAAC,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,GAAC,UAAU,CAAA;CAAE;AAC7L,MAAM,WAAW,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACzG,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEjE,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AACtH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AACjG,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;IAM5E,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAC;IACpH,kBAAkB,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAE3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IAExC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IAExC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACnD,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAChD;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,MAAM,EAAE,MAAM;CAC3B;AAED,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,GAAE,WAAW,GAAG,MAAiB,GAAG,iBAAiB;IAuBhG,OAAO,CAAC,KAAK;IAEb,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAa/G,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG;QAAE,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAU3I,cAAc,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAe3G,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAM9C,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO1D,sBAAsB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMnE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC/B,uBAAuB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI;IACnD,eAAe,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUtD,IAAI,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAahM,QAAQ,IAAI,OAAO;IACnB,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC;IAElC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;CAiB1B"}
@@ -0,0 +1,165 @@
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) {
105
+ // Heartbeats fire on a periodic timer that can race past seal(). Silently
106
+ // no-op once sealed — other mutations (startStage, completeStage, recordX)
107
+ // still throw because their callers should know they're operating on a
108
+ // finalized envelope, but a stray heartbeat tick is harmless.
109
+ if (this.sealed)
110
+ return;
111
+ this.recomputeHeadline();
112
+ this.notify('recordHeartbeat');
113
+ }
114
+ seal(terminal) {
115
+ this.guard('seal');
116
+ this.env.status = terminal.status;
117
+ this.env.terminalAt = terminal.terminalAt ?? new Date().toISOString();
118
+ this.env.stopReason = terminal.stopReason;
119
+ this.env.structuredError = terminal.structuredError ?? null;
120
+ this.env.realFilesChanged = [...terminal.realFilesChanged];
121
+ this.recomputeTotals();
122
+ this.recomputeHeadline();
123
+ this.sealed = true;
124
+ this.notify('seal');
125
+ }
126
+ isSealed() { return this.sealed; }
127
+ snapshot() { return structuredClone(this.env); }
128
+ recomputeTotals() {
129
+ let cost = 0, inT = 0, outT = 0, crT = 0, cnrT = 0, dur = 0, turns = 0;
130
+ for (const s of this.env.stages) {
131
+ cost += s.costUSD ?? 0;
132
+ inT += s.inputTokens;
133
+ outT += s.outputTokens;
134
+ crT += s.cachedReadTokens ?? 0;
135
+ cnrT += s.cachedNonReadTokens ?? 0;
136
+ dur += s.durationMs;
137
+ turns += s.turnsUsed;
138
+ }
139
+ this.env.totalCostUSD = cost;
140
+ this.env.totalInputTokens = inT;
141
+ this.env.totalOutputTokens = outT;
142
+ this.env.totalCachedReadTokens = crT;
143
+ this.env.totalCachedNonReadTokens = cnrT;
144
+ this.env.totalDurationMs = dur;
145
+ this.env.turnsUsed = turns;
146
+ }
147
+ recomputeHeadline() {
148
+ const stageNames = this.env.stages.map(s => s.name);
149
+ const lastStage = this.env.stages[this.env.stages.length - 1];
150
+ const reads = this.env.filesRead.length;
151
+ const writes = this.env.filesWritten.length;
152
+ // toolTotal is the count of recorded tool calls (run_shell, edit_file, …),
153
+ // NOT reads+writes. Codex's run_shell commands pass empty file lists so
154
+ // computing toolTotal from file counts only would report zero through an
155
+ // entire investigation where the worker ran many shell commands.
156
+ this.env.headline = {
157
+ prefix: '',
158
+ stageLabel: lastStage ? lastStage.name : 'queued',
159
+ stageDone: this.env.stages.filter(s => s.outcome !== null).length,
160
+ stageTotal: stageNames.length,
161
+ toolReads: reads, toolWrites: writes, toolTotal: this.env.toolCalls.length,
162
+ };
163
+ }
164
+ }
165
+ //# 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,CAsLxB"}