kernl 0.12.3 → 0.12.6

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 (100) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +18 -0
  3. package/README.md +29 -0
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +2 -0
  6. package/dist/kernl/kernl.d.ts +6 -0
  7. package/dist/kernl/kernl.d.ts.map +1 -1
  8. package/dist/kernl/kernl.js +19 -0
  9. package/dist/kernl/types.d.ts +6 -0
  10. package/dist/kernl/types.d.ts.map +1 -1
  11. package/dist/lib/env.d.ts +2 -2
  12. package/dist/mcp/http.d.ts.map +1 -1
  13. package/dist/mcp/http.js +1 -5
  14. package/dist/mcp/sse.d.ts.map +1 -1
  15. package/dist/mcp/sse.js +1 -5
  16. package/dist/mcp/stdio.d.ts.map +1 -1
  17. package/dist/mcp/stdio.js +1 -5
  18. package/dist/task.d.ts.map +1 -1
  19. package/dist/task.js +0 -1
  20. package/dist/thread/__tests__/thread.test.js +241 -0
  21. package/dist/thread/thread.d.ts +5 -4
  22. package/dist/thread/thread.d.ts.map +1 -1
  23. package/dist/thread/thread.js +91 -22
  24. package/dist/thread/types.d.ts +5 -0
  25. package/dist/thread/types.d.ts.map +1 -1
  26. package/dist/tool/tool.d.ts +2 -2
  27. package/dist/tool/tool.d.ts.map +1 -1
  28. package/dist/tracing/__tests__/composite.test.d.ts +2 -0
  29. package/dist/tracing/__tests__/composite.test.d.ts.map +1 -0
  30. package/dist/tracing/__tests__/composite.test.js +146 -0
  31. package/dist/tracing/__tests__/dispatch.test.d.ts +2 -0
  32. package/dist/tracing/__tests__/dispatch.test.d.ts.map +1 -0
  33. package/dist/tracing/__tests__/dispatch.test.js +160 -0
  34. package/dist/tracing/__tests__/helpers.d.ts +69 -0
  35. package/dist/tracing/__tests__/helpers.d.ts.map +1 -0
  36. package/dist/tracing/__tests__/helpers.js +109 -0
  37. package/dist/tracing/__tests__/integration.test.d.ts +2 -0
  38. package/dist/tracing/__tests__/integration.test.d.ts.map +1 -0
  39. package/dist/tracing/__tests__/integration.test.js +675 -0
  40. package/dist/tracing/__tests__/span.test.d.ts +2 -0
  41. package/dist/tracing/__tests__/span.test.d.ts.map +1 -0
  42. package/dist/tracing/__tests__/span.test.js +188 -0
  43. package/dist/tracing/dispatch.d.ts +43 -0
  44. package/dist/tracing/dispatch.d.ts.map +1 -0
  45. package/dist/tracing/dispatch.js +70 -0
  46. package/dist/tracing/index.d.ts +8 -0
  47. package/dist/tracing/index.d.ts.map +1 -0
  48. package/dist/tracing/index.js +6 -0
  49. package/dist/tracing/span.d.ts +69 -0
  50. package/dist/tracing/span.d.ts.map +1 -0
  51. package/dist/tracing/span.js +64 -0
  52. package/dist/tracing/subscriber.d.ts +53 -0
  53. package/dist/tracing/subscriber.d.ts.map +1 -0
  54. package/dist/tracing/subscriber.js +1 -0
  55. package/dist/tracing/subscribers/composite.d.ts +26 -0
  56. package/dist/tracing/subscribers/composite.d.ts.map +1 -0
  57. package/dist/tracing/subscribers/composite.js +96 -0
  58. package/dist/tracing/subscribers/console.d.ts +22 -0
  59. package/dist/tracing/subscribers/console.d.ts.map +1 -0
  60. package/dist/tracing/subscribers/console.js +82 -0
  61. package/dist/tracing/types.d.ts +77 -0
  62. package/dist/tracing/types.d.ts.map +1 -0
  63. package/dist/tracing/types.js +1 -0
  64. package/package.json +6 -2
  65. package/src/agent.ts +2 -0
  66. package/src/index.ts +1 -0
  67. package/src/kernl/kernl.ts +21 -0
  68. package/src/kernl/types.ts +7 -0
  69. package/src/mcp/http.ts +1 -9
  70. package/src/mcp/sse.ts +1 -10
  71. package/src/mcp/stdio.ts +1 -10
  72. package/src/task.ts +0 -1
  73. package/src/thread/__tests__/thread.test.ts +280 -0
  74. package/src/thread/thread.ts +111 -24
  75. package/src/thread/types.ts +5 -0
  76. package/src/tool/tool.ts +1 -1
  77. package/src/tracing/__tests__/composite.test.ts +218 -0
  78. package/src/tracing/__tests__/dispatch.test.ts +222 -0
  79. package/src/tracing/__tests__/helpers.ts +138 -0
  80. package/src/tracing/__tests__/integration.test.ts +808 -0
  81. package/src/tracing/__tests__/span.test.ts +250 -0
  82. package/src/tracing/dispatch.ts +114 -0
  83. package/src/tracing/index.ts +39 -0
  84. package/src/tracing/span.ts +115 -0
  85. package/src/tracing/subscriber.ts +62 -0
  86. package/src/tracing/subscribers/composite.ts +102 -0
  87. package/src/tracing/subscribers/console.ts +101 -0
  88. package/src/tracing/types.ts +115 -0
  89. package/dist/trace/processor.d.ts +0 -1
  90. package/dist/trace/processor.d.ts.map +0 -1
  91. package/dist/trace/processor.js +0 -1
  92. package/dist/trace/traces.d.ts +0 -1
  93. package/dist/trace/traces.d.ts.map +0 -1
  94. package/dist/trace/traces.js +0 -73
  95. package/dist/trace/utils.d.ts +0 -22
  96. package/dist/trace/utils.d.ts.map +0 -1
  97. package/dist/trace/utils.js +0 -30
  98. package/src/trace/processor.ts +0 -0
  99. package/src/trace/traces.ts +0 -86
  100. package/src/trace/utils.ts +0 -38
@@ -0,0 +1,69 @@
1
+ import type { SpanId, SpanData, EventData } from "../types.js";
2
+ import type { Subscriber } from "../subscriber.js";
3
+ /**
4
+ * A test subscriber that captures all tracing calls for assertions.
5
+ */
6
+ export declare class TestSubscriber implements Subscriber {
7
+ private nextId;
8
+ spans: Map<string, {
9
+ data: SpanData;
10
+ parent: SpanId | null;
11
+ }>;
12
+ recorded: Map<string, Partial<SpanData>[]>;
13
+ errors: Map<string, Error[]>;
14
+ events: {
15
+ data: EventData;
16
+ parent: SpanId | null;
17
+ }[];
18
+ calls: {
19
+ method: string;
20
+ spanId?: SpanId;
21
+ args?: unknown;
22
+ }[];
23
+ entered: Set<string>;
24
+ exited: Set<string>;
25
+ closed: Set<string>;
26
+ enabledKinds: Set<SpanData["kind"]> | null;
27
+ enabled(data: SpanData): boolean;
28
+ span(data: SpanData, parent: SpanId | null): SpanId;
29
+ enter(spanId: SpanId): void;
30
+ exit(spanId: SpanId): void;
31
+ record(spanId: SpanId, delta: Partial<SpanData>): void;
32
+ error(spanId: SpanId, err: Error): void;
33
+ close(spanId: SpanId): void;
34
+ event(data: EventData, parent: SpanId | null): void;
35
+ flush(): Promise<void>;
36
+ shutdown(_timeout?: number): Promise<void>;
37
+ /**
38
+ * Get all spans of a specific kind.
39
+ */
40
+ spansOfKind<K extends SpanData["kind"]>(kind: K): Array<{
41
+ id: SpanId;
42
+ data: Extract<SpanData, {
43
+ kind: K;
44
+ }>;
45
+ parent: SpanId | null;
46
+ }>;
47
+ /**
48
+ * Get events of a specific kind.
49
+ */
50
+ eventsOfKind<K extends EventData["kind"]>(kind: K): Array<{
51
+ data: Extract<EventData, {
52
+ kind: K;
53
+ }>;
54
+ parent: SpanId | null;
55
+ }>;
56
+ /**
57
+ * Get recorded data for a span.
58
+ */
59
+ getRecorded(spanId: SpanId): Partial<SpanData>[];
60
+ /**
61
+ * Check if a span was fully completed (entered, exited, closed).
62
+ */
63
+ isComplete(spanId: SpanId): boolean;
64
+ /**
65
+ * Reset all captured data.
66
+ */
67
+ reset(): void;
68
+ }
69
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/tracing/__tests__/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;GAEG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAK;IAGnB,KAAK;cAA2B,QAAQ;gBAAU,MAAM,GAAG,IAAI;OAAM;IACrE,QAAQ,mCAA0C;IAClD,MAAM,uBAA8B;IACpC,MAAM,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAM;IAG1D,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAM;IAGlE,OAAO,cAAqB;IAC5B,MAAM,cAAqB;IAC3B,MAAM,cAAqB;IAG3B,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAQ;IAElD,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAKhC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAOnD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IAOtD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAOvC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3B,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EACpC,IAAI,EAAE,CAAC,GACN,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAUrF;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EACtC,IAAI,EAAE,CAAC,GACN,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAO1E;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE;IAIhD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,KAAK,IAAI,IAAI;CAWd"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * A test subscriber that captures all tracing calls for assertions.
3
+ */
4
+ export class TestSubscriber {
5
+ nextId = 0;
6
+ // Captured data
7
+ spans = new Map();
8
+ recorded = new Map();
9
+ errors = new Map();
10
+ events = [];
11
+ // Call log for verifying order
12
+ calls = [];
13
+ // State tracking
14
+ entered = new Set();
15
+ exited = new Set();
16
+ closed = new Set();
17
+ // Configuration
18
+ enabledKinds = null; // null = all enabled
19
+ enabled(data) {
20
+ if (this.enabledKinds === null)
21
+ return true;
22
+ return this.enabledKinds.has(data.kind);
23
+ }
24
+ span(data, parent) {
25
+ const id = `test_span_${this.nextId++}`;
26
+ this.spans.set(id, { data, parent });
27
+ this.calls.push({ method: "span", spanId: id, args: { data, parent } });
28
+ return id;
29
+ }
30
+ enter(spanId) {
31
+ this.entered.add(spanId);
32
+ this.calls.push({ method: "enter", spanId });
33
+ }
34
+ exit(spanId) {
35
+ this.exited.add(spanId);
36
+ this.calls.push({ method: "exit", spanId });
37
+ }
38
+ record(spanId, delta) {
39
+ const existing = this.recorded.get(spanId) ?? [];
40
+ existing.push(delta);
41
+ this.recorded.set(spanId, existing);
42
+ this.calls.push({ method: "record", spanId, args: delta });
43
+ }
44
+ error(spanId, err) {
45
+ const existing = this.errors.get(spanId) ?? [];
46
+ existing.push(err);
47
+ this.errors.set(spanId, existing);
48
+ this.calls.push({ method: "error", spanId, args: err });
49
+ }
50
+ close(spanId) {
51
+ this.closed.add(spanId);
52
+ this.calls.push({ method: "close", spanId });
53
+ }
54
+ event(data, parent) {
55
+ this.events.push({ data, parent });
56
+ this.calls.push({ method: "event", args: { data, parent } });
57
+ }
58
+ async flush() {
59
+ this.calls.push({ method: "flush" });
60
+ }
61
+ async shutdown(_timeout) {
62
+ this.calls.push({ method: "shutdown" });
63
+ }
64
+ // --- Test helpers ---
65
+ /**
66
+ * Get all spans of a specific kind.
67
+ */
68
+ spansOfKind(kind) {
69
+ const result = [];
70
+ for (const [id, { data, parent }] of this.spans) {
71
+ if (data.kind === kind) {
72
+ result.push({ id, data: data, parent });
73
+ }
74
+ }
75
+ return result;
76
+ }
77
+ /**
78
+ * Get events of a specific kind.
79
+ */
80
+ eventsOfKind(kind) {
81
+ return this.events.filter((e) => e.data.kind === kind);
82
+ }
83
+ /**
84
+ * Get recorded data for a span.
85
+ */
86
+ getRecorded(spanId) {
87
+ return this.recorded.get(spanId) ?? [];
88
+ }
89
+ /**
90
+ * Check if a span was fully completed (entered, exited, closed).
91
+ */
92
+ isComplete(spanId) {
93
+ return this.entered.has(spanId) && this.exited.has(spanId) && this.closed.has(spanId);
94
+ }
95
+ /**
96
+ * Reset all captured data.
97
+ */
98
+ reset() {
99
+ this.nextId = 0;
100
+ this.spans.clear();
101
+ this.recorded.clear();
102
+ this.errors.clear();
103
+ this.events = [];
104
+ this.calls = [];
105
+ this.entered.clear();
106
+ this.exited.clear();
107
+ this.closed.clear();
108
+ }
109
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../../src/tracing/__tests__/integration.test.ts"],"names":[],"mappings":""}