opencode-swarm 7.82.2 → 7.84.0

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 (58) hide show
  1. package/README.md +3 -1
  2. package/dist/cli/capability-probe-jevmgwmf.js +18 -0
  3. package/dist/cli/config-doctor-4tcdd9vt.js +35 -0
  4. package/dist/cli/dispatch-k86d928w.js +477 -0
  5. package/dist/cli/evidence-summary-service-g2znnd33.js +320 -0
  6. package/dist/cli/explorer-gz70sm9b.js +16 -0
  7. package/dist/cli/gate-evidence-y8zn7fe2.js +29 -0
  8. package/dist/cli/guardrail-explain-tcamcdfy.js +30 -0
  9. package/dist/cli/guardrail-log-fd14n96q.js +15 -0
  10. package/dist/cli/index-293f68mj.js +13538 -0
  11. package/dist/cli/index-8ra2qpk8.js +29027 -0
  12. package/dist/cli/index-a76rekgs.js +67 -0
  13. package/dist/cli/index-a82d6d87.js +1241 -0
  14. package/dist/cli/index-b9v501fr.js +371 -0
  15. package/dist/cli/index-bcp79s17.js +1673 -0
  16. package/dist/cli/index-ckntc5gf.js +91 -0
  17. package/dist/cli/index-d9fbxaqd.js +2314 -0
  18. package/dist/cli/index-e7h9bb6v.js +233 -0
  19. package/dist/cli/index-e8pk68cc.js +540 -0
  20. package/dist/cli/index-eb85wtx9.js +242 -0
  21. package/dist/cli/index-f8r50m3h.js +14505 -0
  22. package/dist/cli/index-fjwwrwr5.js +37 -0
  23. package/dist/cli/index-hz59hg4h.js +452 -0
  24. package/dist/cli/index-j710h2ge.js +412 -0
  25. package/dist/cli/index-jfgr5gye.js +110 -0
  26. package/dist/cli/index-jtqkh8jf.js +119 -0
  27. package/dist/cli/index-p0arc26j.js +28 -0
  28. package/dist/cli/index-p0ye10nd.js +222 -0
  29. package/dist/cli/index-pv2xmc9k.js +2391 -0
  30. package/dist/cli/index-red8fm8p.js +2914 -0
  31. package/dist/cli/index-wg3r6acj.js +2042 -0
  32. package/dist/cli/index-xw0bcy0v.js +583 -0
  33. package/dist/cli/index-yhsmmv2z.js +339 -0
  34. package/dist/cli/index-yx44zd0p.js +40 -0
  35. package/dist/cli/index-zfsbaaqh.js +29 -0
  36. package/dist/cli/index.js +73 -69703
  37. package/dist/cli/knowledge-store-n4x6zyk7.js +73 -0
  38. package/dist/cli/pending-delegations-pz61mrsz.js +255 -0
  39. package/dist/cli/pr-subscriptions-y1nn36e5.js +33 -0
  40. package/dist/cli/schema-c2dbzhm8.js +168 -0
  41. package/dist/cli/skill-generator-a5ehggyg.js +55 -0
  42. package/dist/cli/task-envelope-qn0qtnh0.js +90 -0
  43. package/dist/cli/telemetry-9bbyxrvn.js +20 -0
  44. package/dist/cli/workspace-snapshot-w58jr2ga.js +90 -0
  45. package/dist/commands/guardrail-explain.d.ts +1 -0
  46. package/dist/commands/guardrail-log.d.ts +1 -0
  47. package/dist/commands/index.d.ts +2 -0
  48. package/dist/commands/registry.d.ts +14 -0
  49. package/dist/config/index.d.ts +2 -2
  50. package/dist/config/schema.d.ts +7 -0
  51. package/dist/hooks/guardrails/audit-log.d.ts +114 -0
  52. package/dist/hooks/repo-graph-builder.d.ts +4 -1
  53. package/dist/index.js +3615 -2378
  54. package/dist/services/diagnose-service.d.ts +5 -0
  55. package/dist/services/guardrail-explain-service.d.ts +42 -0
  56. package/dist/services/guardrail-log-service.d.ts +10 -0
  57. package/dist/tools/repo-graph/types.d.ts +6 -0
  58. package/package.json +2 -2
@@ -0,0 +1,222 @@
1
+ // @bun
2
+ // src/telemetry.ts
3
+ import * as fs from "fs";
4
+ import { createWriteStream } from "fs";
5
+ import * as os from "os";
6
+ import * as path from "path";
7
+ var _writeStream = null;
8
+ var _projectDirectory = null;
9
+ var _listeners = [];
10
+ var _disabled = false;
11
+ function resetTelemetryForTesting() {
12
+ _disabled = false;
13
+ _projectDirectory = null;
14
+ _listeners.length = 0;
15
+ if (_writeStream !== null) {
16
+ _writeStream.end();
17
+ _writeStream = null;
18
+ }
19
+ }
20
+ function initTelemetry(projectDirectory) {
21
+ if (_writeStream !== null || _disabled) {
22
+ return;
23
+ }
24
+ try {
25
+ _projectDirectory = projectDirectory;
26
+ const swarmDir = path.join(projectDirectory, ".swarm");
27
+ if (!fs.existsSync(swarmDir)) {
28
+ fs.mkdirSync(swarmDir, { recursive: true });
29
+ }
30
+ const telemetryPath = path.join(swarmDir, "telemetry.jsonl");
31
+ _writeStream = createWriteStream(telemetryPath, { flags: "a" });
32
+ _writeStream.on("error", () => {
33
+ _disabled = true;
34
+ _writeStream = null;
35
+ });
36
+ } catch {
37
+ _disabled = true;
38
+ _writeStream = null;
39
+ }
40
+ }
41
+ function emit(event, data) {
42
+ try {
43
+ if (_disabled || _writeStream === null) {
44
+ return;
45
+ }
46
+ const line = JSON.stringify({
47
+ timestamp: new Date().toISOString(),
48
+ event,
49
+ ...data
50
+ }) + os.EOL;
51
+ _writeStream.write(line, (err) => {
52
+ if (err) {
53
+ _disabled = true;
54
+ _writeStream = null;
55
+ }
56
+ });
57
+ for (const listener of _listeners) {
58
+ try {
59
+ listener(event, data);
60
+ } catch {}
61
+ }
62
+ } catch {}
63
+ }
64
+ function addTelemetryListener(callback) {
65
+ _listeners.push(callback);
66
+ }
67
+ function rotateTelemetryIfNeeded(maxBytes = 10 * 1024 * 1024) {
68
+ try {
69
+ if (_projectDirectory === null) {
70
+ return;
71
+ }
72
+ const telemetryPath = path.join(_projectDirectory, ".swarm", "telemetry.jsonl");
73
+ if (!fs.existsSync(telemetryPath)) {
74
+ return;
75
+ }
76
+ const stats = fs.statSync(telemetryPath);
77
+ if (stats.size < maxBytes) {
78
+ return;
79
+ }
80
+ const rotatedPath = path.join(_projectDirectory, ".swarm", "telemetry.jsonl.1");
81
+ fs.renameSync(telemetryPath, rotatedPath);
82
+ if (_writeStream !== null) {
83
+ _writeStream.end();
84
+ _writeStream = createWriteStream(telemetryPath, { flags: "a" });
85
+ _writeStream.on("error", () => {
86
+ _disabled = true;
87
+ _writeStream = null;
88
+ });
89
+ }
90
+ } catch {}
91
+ }
92
+ var telemetry = {
93
+ sessionStarted(sessionId, agentName) {
94
+ _internals.emit("session_started", { sessionId, agentName });
95
+ },
96
+ sessionEnded(sessionId, reason) {
97
+ _internals.emit("session_ended", { sessionId, reason });
98
+ },
99
+ agentActivated(sessionId, agentName, oldName) {
100
+ _internals.emit("agent_activated", { sessionId, agentName, oldName });
101
+ },
102
+ delegationBegin(sessionId, agentName, taskId) {
103
+ _internals.emit("delegation_begin", { sessionId, agentName, taskId });
104
+ },
105
+ delegationEnd(sessionId, agentName, taskId, result) {
106
+ _internals.emit("delegation_end", { sessionId, agentName, taskId, result });
107
+ },
108
+ taskStateChanged(sessionId, taskId, newState, oldState) {
109
+ _internals.emit("task_state_changed", {
110
+ sessionId,
111
+ taskId,
112
+ newState,
113
+ oldState
114
+ });
115
+ },
116
+ gatePassed(sessionId, gate, taskId) {
117
+ _internals.emit("gate_passed", { sessionId, gate, taskId });
118
+ },
119
+ gateParseError(taskId, error) {
120
+ _internals.emit("gate_parse_error", {
121
+ taskId,
122
+ errorName: error.name,
123
+ errorMessage: error.message.slice(0, 200)
124
+ });
125
+ },
126
+ gateFailed(sessionId, gate, taskId, reason) {
127
+ _internals.emit("gate_failed", { sessionId, gate, taskId, reason });
128
+ },
129
+ phaseChanged(sessionId, oldPhase, newPhase) {
130
+ _internals.emit("phase_changed", { sessionId, oldPhase, newPhase });
131
+ },
132
+ budgetUpdated(sessionId, budgetPct, agentName) {
133
+ _internals.emit("budget_updated", { sessionId, budgetPct, agentName });
134
+ },
135
+ modelFallback(sessionId, agentName, fromModel, toModel, reason) {
136
+ _internals.emit("model_fallback", {
137
+ sessionId,
138
+ agentName,
139
+ fromModel,
140
+ toModel,
141
+ reason
142
+ });
143
+ },
144
+ hardLimitHit(sessionId, agentName, limitType, value) {
145
+ _internals.emit("hard_limit_hit", {
146
+ sessionId,
147
+ agentName,
148
+ limitType,
149
+ value
150
+ });
151
+ },
152
+ revisionLimitHit(sessionId, agentName) {
153
+ _internals.emit("revision_limit_hit", { sessionId, agentName });
154
+ },
155
+ loopDetected(sessionId, agentName, loopType) {
156
+ _internals.emit("loop_detected", { sessionId, agentName, loopType });
157
+ },
158
+ scopeViolation(sessionId, agentName, file, reason) {
159
+ _internals.emit("scope_violation", { sessionId, agentName, file, reason });
160
+ },
161
+ qaSkipViolation(sessionId, agentName, skipCount) {
162
+ _internals.emit("qa_skip_violation", { sessionId, agentName, skipCount });
163
+ },
164
+ heartbeat(sessionId) {
165
+ _internals.emit("heartbeat", { sessionId });
166
+ },
167
+ turboModeChanged(sessionId, enabled, agentName) {
168
+ _internals.emit("turbo_mode_changed", { sessionId, enabled, agentName });
169
+ },
170
+ autoOversightEscalation(sessionId, reason, interactionCount, deadlockCount, phase) {
171
+ _internals.emit("auto_oversight_escalation", {
172
+ sessionId,
173
+ reason,
174
+ interactionCount,
175
+ deadlockCount,
176
+ phase
177
+ });
178
+ },
179
+ environmentDetected(sessionId, hostOS, shellFamily, executionMode) {
180
+ _internals.emit("environment_detected", {
181
+ sessionId,
182
+ hostOS,
183
+ shellFamily,
184
+ executionMode
185
+ });
186
+ },
187
+ prmPatternDetected(sessionId, pattern, severity, category, stepRange) {
188
+ _internals.emit("prm_pattern_detected", {
189
+ sessionId,
190
+ pattern,
191
+ severity,
192
+ category,
193
+ stepRange
194
+ });
195
+ },
196
+ prmCourseCorrectionInjected(sessionId, pattern, level) {
197
+ _internals.emit("prm_course_correction_injected", {
198
+ sessionId,
199
+ pattern,
200
+ level
201
+ });
202
+ },
203
+ prmEscalationTriggered(sessionId, pattern, level, occurrenceCount) {
204
+ _internals.emit("prm_escalation_triggered", {
205
+ sessionId,
206
+ pattern,
207
+ level,
208
+ occurrenceCount
209
+ });
210
+ },
211
+ prmHardStop(sessionId, pattern, level, occurrenceCount) {
212
+ _internals.emit("prm_hard_stop", {
213
+ sessionId,
214
+ pattern,
215
+ level,
216
+ occurrenceCount
217
+ });
218
+ }
219
+ };
220
+ var _internals = { telemetry, emit };
221
+
222
+ export { resetTelemetryForTesting, initTelemetry, emit, addTelemetryListener, rotateTelemetryIfNeeded, telemetry, _internals };