@backlog-md/core 0.3.7 → 0.3.9
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/dist/core/Core.d.ts +1 -0
- package/dist/core/Core.d.ts.map +1 -1
- package/dist/core/Core.js +789 -395
- package/dist/core/Core.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/telemetry.d.ts +44 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +47 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/telemetry.test.d.ts +5 -0
- package/dist/telemetry.test.d.ts.map +1 -0
- package/dist/telemetry.test.js +103 -0
- package/dist/telemetry.test.js.map +1 -0
- package/dist/test/core-init.otel.test.d.ts +12 -0
- package/dist/test/core-init.otel.test.d.ts.map +1 -0
- package/dist/test/core-init.otel.test.js +107 -0
- package/dist/test/core-init.otel.test.js.map +1 -0
- package/dist/test/milestone-crud.otel.test.d.ts +8 -0
- package/dist/test/milestone-crud.otel.test.d.ts.map +1 -0
- package/dist/test/milestone-crud.otel.test.js +143 -0
- package/dist/test/milestone-crud.otel.test.js.map +1 -0
- package/dist/test/otel-setup.d.ts +52 -0
- package/dist/test/otel-setup.d.ts.map +1 -0
- package/dist/test/otel-setup.js +82 -0
- package/dist/test/otel-setup.js.map +1 -0
- package/dist/test/task-crud.otel.test.d.ts +8 -0
- package/dist/test/task-crud.otel.test.d.ts.map +1 -0
- package/dist/test/task-crud.otel.test.js +181 -0
- package/dist/test/task-crud.otel.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for Milestone CRUD telemetry
|
|
3
|
+
*
|
|
4
|
+
* These tests exercise the milestone CRUD operations and send telemetry
|
|
5
|
+
* to the local OTEL collector for visualization.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, test, expect, beforeAll, afterAll } from "bun:test";
|
|
8
|
+
import { context, trace, ROOT_CONTEXT, SpanStatusCode } from "@opentelemetry/api";
|
|
9
|
+
import { InMemoryFileSystemAdapter } from "@principal-ai/repository-abstraction";
|
|
10
|
+
import { Core } from "../core/Core";
|
|
11
|
+
import { getTracer } from "../telemetry";
|
|
12
|
+
import { setupOTEL, shutdownOTEL } from "./otel-setup";
|
|
13
|
+
async function createTestCore() {
|
|
14
|
+
const fs = new InMemoryFileSystemAdapter();
|
|
15
|
+
await fs.writeFile("/project/backlog/config.yml", `projectName: Test Project
|
|
16
|
+
statuses:
|
|
17
|
+
- To Do
|
|
18
|
+
- In Progress
|
|
19
|
+
- Done
|
|
20
|
+
defaultStatus: To Do
|
|
21
|
+
`);
|
|
22
|
+
await fs.createDir("/project/backlog/tasks", { recursive: true });
|
|
23
|
+
await fs.createDir("/project/backlog/milestones", { recursive: true });
|
|
24
|
+
const core = new Core({
|
|
25
|
+
projectRoot: "/project",
|
|
26
|
+
adapters: { fs },
|
|
27
|
+
});
|
|
28
|
+
await core.initialize();
|
|
29
|
+
return core;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run a test function within its own trace context.
|
|
33
|
+
* Creates a root span for the test so all operations are children of it.
|
|
34
|
+
*/
|
|
35
|
+
async function withTestTrace(testName, fn) {
|
|
36
|
+
const tracer = getTracer();
|
|
37
|
+
// Start span with ROOT_CONTEXT to ensure new trace
|
|
38
|
+
const span = tracer.startSpan(testName, {}, ROOT_CONTEXT);
|
|
39
|
+
try {
|
|
40
|
+
// Run the test function with this span as the active context
|
|
41
|
+
const ctx = trace.setSpan(ROOT_CONTEXT, span);
|
|
42
|
+
const result = await context.with(ctx, async () => {
|
|
43
|
+
return await fn();
|
|
44
|
+
});
|
|
45
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
span.setStatus({
|
|
50
|
+
code: SpanStatusCode.ERROR,
|
|
51
|
+
message: error instanceof Error ? error.message : String(error),
|
|
52
|
+
});
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
span.end();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
describe("Milestone CRUD telemetry", () => {
|
|
60
|
+
beforeAll(async () => {
|
|
61
|
+
await setupOTEL({
|
|
62
|
+
serviceName: "@backlog-md/core-test",
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
afterAll(async () => {
|
|
66
|
+
await shutdownOTEL();
|
|
67
|
+
});
|
|
68
|
+
test("createMilestone() emits telemetry", async () => {
|
|
69
|
+
await withTestTrace("test.milestone.create", async () => {
|
|
70
|
+
const core = await createTestCore();
|
|
71
|
+
const milestone = await core.createMilestone({
|
|
72
|
+
title: "Test milestone for telemetry",
|
|
73
|
+
description: "A test milestone",
|
|
74
|
+
});
|
|
75
|
+
expect(milestone.id).toBe("m-0");
|
|
76
|
+
expect(milestone.title).toBe("Test milestone for telemetry");
|
|
77
|
+
});
|
|
78
|
+
console.log("[TEST] createMilestone telemetry sent to collector");
|
|
79
|
+
});
|
|
80
|
+
test("createMilestone() without description emits telemetry", async () => {
|
|
81
|
+
await withTestTrace("test.milestone.create.no-description", async () => {
|
|
82
|
+
const core = await createTestCore();
|
|
83
|
+
const milestone = await core.createMilestone({
|
|
84
|
+
title: "Milestone without description",
|
|
85
|
+
});
|
|
86
|
+
expect(milestone.id).toBe("m-0");
|
|
87
|
+
expect(milestone.description).toBe("Milestone: Milestone without description");
|
|
88
|
+
});
|
|
89
|
+
console.log("[TEST] createMilestone (no description) telemetry sent to collector");
|
|
90
|
+
});
|
|
91
|
+
test("updateMilestone() emits telemetry", async () => {
|
|
92
|
+
await withTestTrace("test.milestone.update", async () => {
|
|
93
|
+
const core = await createTestCore();
|
|
94
|
+
// Create a milestone first
|
|
95
|
+
const milestone = await core.createMilestone({
|
|
96
|
+
title: "Milestone to update",
|
|
97
|
+
});
|
|
98
|
+
// Update the milestone
|
|
99
|
+
const updated = await core.updateMilestone(milestone.id, {
|
|
100
|
+
title: "Updated milestone title",
|
|
101
|
+
description: "Updated description",
|
|
102
|
+
});
|
|
103
|
+
expect(updated).not.toBeNull();
|
|
104
|
+
expect(updated?.title).toBe("Updated milestone title");
|
|
105
|
+
expect(updated?.description).toBe("Updated description");
|
|
106
|
+
});
|
|
107
|
+
console.log("[TEST] updateMilestone telemetry sent to collector");
|
|
108
|
+
});
|
|
109
|
+
test("updateMilestone() with non-existent ID emits telemetry", async () => {
|
|
110
|
+
await withTestTrace("test.milestone.update.not-found", async () => {
|
|
111
|
+
const core = await createTestCore();
|
|
112
|
+
// Try to update a non-existent milestone
|
|
113
|
+
const updated = await core.updateMilestone("m-999", {
|
|
114
|
+
title: "Should not update",
|
|
115
|
+
});
|
|
116
|
+
expect(updated).toBeNull();
|
|
117
|
+
});
|
|
118
|
+
console.log("[TEST] updateMilestone (not found) telemetry sent to collector");
|
|
119
|
+
});
|
|
120
|
+
test("deleteMilestone() emits telemetry", async () => {
|
|
121
|
+
await withTestTrace("test.milestone.delete", async () => {
|
|
122
|
+
const core = await createTestCore();
|
|
123
|
+
// Create a milestone first
|
|
124
|
+
const milestone = await core.createMilestone({
|
|
125
|
+
title: "Milestone to delete",
|
|
126
|
+
});
|
|
127
|
+
// Delete the milestone
|
|
128
|
+
const deleted = await core.deleteMilestone(milestone.id);
|
|
129
|
+
expect(deleted).toBe(true);
|
|
130
|
+
});
|
|
131
|
+
console.log("[TEST] deleteMilestone telemetry sent to collector");
|
|
132
|
+
});
|
|
133
|
+
test("deleteMilestone() with non-existent ID emits telemetry", async () => {
|
|
134
|
+
await withTestTrace("test.milestone.delete.not-found", async () => {
|
|
135
|
+
const core = await createTestCore();
|
|
136
|
+
// Try to delete a non-existent milestone
|
|
137
|
+
const deleted = await core.deleteMilestone("m-999");
|
|
138
|
+
expect(deleted).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
console.log("[TEST] deleteMilestone (not found) telemetry sent to collector");
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=milestone-crud.otel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"milestone-crud.otel.test.js","sourceRoot":"","sources":["../../src/test/milestone-crud.otel.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry test setup for Backlog-Core
|
|
3
|
+
*
|
|
4
|
+
* This module configures a tracer provider that sends telemetry to a local
|
|
5
|
+
* OpenTelemetry collector. Use this in integration tests to capture real
|
|
6
|
+
* telemetry data.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { setupOTEL, shutdownOTEL } from './test/otel-setup';
|
|
11
|
+
*
|
|
12
|
+
* beforeAll(async () => {
|
|
13
|
+
* await setupOTEL();
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* afterAll(async () => {
|
|
17
|
+
* await shutdownOTEL();
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export interface OTELSetupOptions {
|
|
22
|
+
/**
|
|
23
|
+
* OTLP collector endpoint
|
|
24
|
+
* @default 'http://localhost:4318/v1/traces'
|
|
25
|
+
*/
|
|
26
|
+
endpoint?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Service name for telemetry
|
|
29
|
+
* @default '@backlog-md/core-test'
|
|
30
|
+
*/
|
|
31
|
+
serviceName?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Set up OpenTelemetry with OTLP HTTP exporter
|
|
35
|
+
*
|
|
36
|
+
* This registers a global tracer provider that sends spans to the configured
|
|
37
|
+
* OTLP collector endpoint. Call this in beforeAll() of your test suite.
|
|
38
|
+
*/
|
|
39
|
+
export declare function setupOTEL(options?: OTELSetupOptions): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Shutdown OpenTelemetry and flush pending spans
|
|
42
|
+
*
|
|
43
|
+
* Call this in afterAll() to ensure all spans are exported before tests end.
|
|
44
|
+
*/
|
|
45
|
+
export declare function shutdownOTEL(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Force flush pending spans without shutting down
|
|
48
|
+
*
|
|
49
|
+
* Useful for ensuring spans are exported mid-test.
|
|
50
|
+
*/
|
|
51
|
+
export declare function flushOTEL(): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=otel-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-setup.d.ts","sourceRoot":"","sources":["../../src/test/otel-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAYH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD;AAED;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry test setup for Backlog-Core
|
|
3
|
+
*
|
|
4
|
+
* This module configures a tracer provider that sends telemetry to a local
|
|
5
|
+
* OpenTelemetry collector. Use this in integration tests to capture real
|
|
6
|
+
* telemetry data.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { setupOTEL, shutdownOTEL } from './test/otel-setup';
|
|
11
|
+
*
|
|
12
|
+
* beforeAll(async () => {
|
|
13
|
+
* await setupOTEL();
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* afterAll(async () => {
|
|
17
|
+
* await shutdownOTEL();
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { trace } from "@opentelemetry/api";
|
|
22
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
23
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
24
|
+
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
25
|
+
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
26
|
+
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
27
|
+
import { TRACER_NAME, TRACER_VERSION } from "../telemetry";
|
|
28
|
+
let tracerProvider = null;
|
|
29
|
+
/**
|
|
30
|
+
* Set up OpenTelemetry with OTLP HTTP exporter
|
|
31
|
+
*
|
|
32
|
+
* This registers a global tracer provider that sends spans to the configured
|
|
33
|
+
* OTLP collector endpoint. Call this in beforeAll() of your test suite.
|
|
34
|
+
*/
|
|
35
|
+
export async function setupOTEL(options = {}) {
|
|
36
|
+
const endpoint = options.endpoint ?? "http://localhost:4318/v1/traces";
|
|
37
|
+
const serviceName = options.serviceName ?? "@backlog-md/core-test";
|
|
38
|
+
// Create OTLP exporter
|
|
39
|
+
const exporter = new OTLPTraceExporter({
|
|
40
|
+
url: endpoint,
|
|
41
|
+
});
|
|
42
|
+
// Create resource with service info
|
|
43
|
+
const resource = resourceFromAttributes({
|
|
44
|
+
[ATTR_SERVICE_NAME]: serviceName,
|
|
45
|
+
[ATTR_SERVICE_VERSION]: TRACER_VERSION,
|
|
46
|
+
"library.name": TRACER_NAME,
|
|
47
|
+
"library.version": TRACER_VERSION,
|
|
48
|
+
"test.framework": "bun",
|
|
49
|
+
});
|
|
50
|
+
// Create and register tracer provider
|
|
51
|
+
tracerProvider = new NodeTracerProvider({
|
|
52
|
+
resource,
|
|
53
|
+
spanProcessors: [new SimpleSpanProcessor(exporter)],
|
|
54
|
+
});
|
|
55
|
+
// Register globally so getTracer() returns a real tracer
|
|
56
|
+
tracerProvider.register();
|
|
57
|
+
console.log(`[OTEL] Initialized tracer provider, exporting to ${endpoint}`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Shutdown OpenTelemetry and flush pending spans
|
|
61
|
+
*
|
|
62
|
+
* Call this in afterAll() to ensure all spans are exported before tests end.
|
|
63
|
+
*/
|
|
64
|
+
export async function shutdownOTEL() {
|
|
65
|
+
if (tracerProvider) {
|
|
66
|
+
await tracerProvider.shutdown();
|
|
67
|
+
tracerProvider = null;
|
|
68
|
+
trace.disable();
|
|
69
|
+
console.log("[OTEL] Tracer provider shut down");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Force flush pending spans without shutting down
|
|
74
|
+
*
|
|
75
|
+
* Useful for ensuring spans are exported mid-test.
|
|
76
|
+
*/
|
|
77
|
+
export async function flushOTEL() {
|
|
78
|
+
if (tracerProvider) {
|
|
79
|
+
await tracerProvider.forceFlush();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=otel-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-setup.js","sourceRoot":"","sources":["../../src/test/otel-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3D,IAAI,cAAc,GAA8B,IAAI,CAAC;AAgBrD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iCAAiC,CAAC;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,uBAAuB,CAAC;IAEnE,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,CAAC,iBAAiB,CAAC,EAAE,WAAW;QAChC,CAAC,oBAAoB,CAAC,EAAE,cAAc;QACtC,cAAc,EAAE,WAAW;QAC3B,iBAAiB,EAAE,cAAc;QACjC,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,sCAAsC;IACtC,cAAc,GAAG,IAAI,kBAAkB,CAAC;QACtC,QAAQ;QACR,cAAc,EAAE,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACpD,CAAC,CAAC;IAEH,yDAAyD;IACzD,cAAc,CAAC,QAAQ,EAAE,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChC,cAAc,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-crud.otel.test.d.ts","sourceRoot":"","sources":["../../src/test/task-crud.otel.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for Task CRUD telemetry
|
|
3
|
+
*
|
|
4
|
+
* These tests exercise the task CRUD operations and send telemetry
|
|
5
|
+
* to the local OTEL collector for visualization.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, test, expect, beforeAll, afterAll } from "bun:test";
|
|
8
|
+
import { context, trace, ROOT_CONTEXT, SpanStatusCode } from "@opentelemetry/api";
|
|
9
|
+
import { InMemoryFileSystemAdapter } from "@principal-ai/repository-abstraction";
|
|
10
|
+
import { setupOTEL, shutdownOTEL } from "./otel-setup";
|
|
11
|
+
import { Core } from "../core/Core";
|
|
12
|
+
import { getTracer } from "../telemetry";
|
|
13
|
+
async function createTestCore() {
|
|
14
|
+
const fs = new InMemoryFileSystemAdapter();
|
|
15
|
+
await fs.writeFile("/project/backlog/config.yml", `projectName: Test Project
|
|
16
|
+
statuses:
|
|
17
|
+
- To Do
|
|
18
|
+
- In Progress
|
|
19
|
+
- Done
|
|
20
|
+
defaultStatus: To Do
|
|
21
|
+
`);
|
|
22
|
+
await fs.createDir("/project/backlog/tasks", { recursive: true });
|
|
23
|
+
const core = new Core({
|
|
24
|
+
projectRoot: "/project",
|
|
25
|
+
adapters: { fs },
|
|
26
|
+
});
|
|
27
|
+
await core.initialize();
|
|
28
|
+
return core;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run a test function within its own trace context.
|
|
32
|
+
* Creates a root span for the test so all operations are children of it.
|
|
33
|
+
* Flushes telemetry before returning to ensure trace isolation.
|
|
34
|
+
*/
|
|
35
|
+
async function withTestTrace(testName, fn) {
|
|
36
|
+
const tracer = getTracer();
|
|
37
|
+
// Start span with ROOT_CONTEXT to ensure new trace
|
|
38
|
+
const span = tracer.startSpan(testName, {}, ROOT_CONTEXT);
|
|
39
|
+
try {
|
|
40
|
+
// Run the test function with this span as the active context
|
|
41
|
+
const ctx = trace.setSpan(ROOT_CONTEXT, span);
|
|
42
|
+
const result = await context.with(ctx, async () => {
|
|
43
|
+
return await fn();
|
|
44
|
+
});
|
|
45
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
span.setStatus({
|
|
50
|
+
code: SpanStatusCode.ERROR,
|
|
51
|
+
message: error instanceof Error ? error.message : String(error),
|
|
52
|
+
});
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
span.end();
|
|
57
|
+
// Note: Relying on shutdown to flush - per-test flush can hang on 502 retries
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
describe("Task CRUD telemetry", () => {
|
|
61
|
+
beforeAll(async () => {
|
|
62
|
+
await setupOTEL({
|
|
63
|
+
serviceName: "@backlog-md/core-test",
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
afterAll(async () => {
|
|
67
|
+
await shutdownOTEL();
|
|
68
|
+
});
|
|
69
|
+
test("createTask() emits telemetry", async () => {
|
|
70
|
+
await withTestTrace("test.task.create", async () => {
|
|
71
|
+
const core = await createTestCore();
|
|
72
|
+
const task = await core.createTask({
|
|
73
|
+
title: "Test task for telemetry",
|
|
74
|
+
status: "To Do",
|
|
75
|
+
});
|
|
76
|
+
expect(task.id).toBe("1");
|
|
77
|
+
expect(task.title).toBe("Test task for telemetry");
|
|
78
|
+
});
|
|
79
|
+
console.log("[TEST] createTask telemetry sent to collector");
|
|
80
|
+
});
|
|
81
|
+
test("updateTask() emits telemetry", async () => {
|
|
82
|
+
await withTestTrace("test.task.update", async () => {
|
|
83
|
+
const core = await createTestCore();
|
|
84
|
+
// Create a task first
|
|
85
|
+
const task = await core.createTask({
|
|
86
|
+
title: "Task to update",
|
|
87
|
+
status: "To Do",
|
|
88
|
+
});
|
|
89
|
+
// Update the task
|
|
90
|
+
const updated = await core.updateTask(task.id, {
|
|
91
|
+
title: "Updated task title",
|
|
92
|
+
status: "In Progress",
|
|
93
|
+
});
|
|
94
|
+
expect(updated).not.toBeNull();
|
|
95
|
+
expect(updated?.title).toBe("Updated task title");
|
|
96
|
+
expect(updated?.status).toBe("In Progress");
|
|
97
|
+
});
|
|
98
|
+
console.log("[TEST] updateTask telemetry sent to collector");
|
|
99
|
+
});
|
|
100
|
+
test("deleteTask() emits telemetry", async () => {
|
|
101
|
+
await withTestTrace("test.task.delete", async () => {
|
|
102
|
+
const core = await createTestCore();
|
|
103
|
+
// Create a task first
|
|
104
|
+
const task = await core.createTask({
|
|
105
|
+
title: "Task to delete",
|
|
106
|
+
});
|
|
107
|
+
// Delete the task
|
|
108
|
+
const deleted = await core.deleteTask(task.id);
|
|
109
|
+
expect(deleted).toBe(true);
|
|
110
|
+
});
|
|
111
|
+
console.log("[TEST] deleteTask telemetry sent to collector");
|
|
112
|
+
});
|
|
113
|
+
test("archiveTask() emits telemetry", async () => {
|
|
114
|
+
await withTestTrace("test.task.archive", async () => {
|
|
115
|
+
const core = await createTestCore();
|
|
116
|
+
// Create a task first
|
|
117
|
+
const task = await core.createTask({
|
|
118
|
+
title: "Task to archive",
|
|
119
|
+
});
|
|
120
|
+
// Archive the task
|
|
121
|
+
const archived = await core.archiveTask(task.id);
|
|
122
|
+
expect(archived).not.toBeNull();
|
|
123
|
+
expect(archived?.source).toBe("completed");
|
|
124
|
+
});
|
|
125
|
+
console.log("[TEST] archiveTask telemetry sent to collector");
|
|
126
|
+
});
|
|
127
|
+
test("restoreTask() emits telemetry", async () => {
|
|
128
|
+
await withTestTrace("test.task.restore", async () => {
|
|
129
|
+
const core = await createTestCore();
|
|
130
|
+
// Create and archive a task first
|
|
131
|
+
const task = await core.createTask({
|
|
132
|
+
title: "Task to restore",
|
|
133
|
+
});
|
|
134
|
+
await core.archiveTask(task.id);
|
|
135
|
+
// Restore the task
|
|
136
|
+
const restored = await core.restoreTask(task.id);
|
|
137
|
+
expect(restored).not.toBeNull();
|
|
138
|
+
expect(restored?.source).toBe("local");
|
|
139
|
+
});
|
|
140
|
+
console.log("[TEST] restoreTask telemetry sent to collector");
|
|
141
|
+
});
|
|
142
|
+
test("updateTask() with non-existent ID emits telemetry", async () => {
|
|
143
|
+
await withTestTrace("test.task.update.not-found", async () => {
|
|
144
|
+
const core = await createTestCore();
|
|
145
|
+
// Try to update a non-existent task
|
|
146
|
+
const updated = await core.updateTask("999", {
|
|
147
|
+
title: "Should not update",
|
|
148
|
+
});
|
|
149
|
+
expect(updated).toBeNull();
|
|
150
|
+
});
|
|
151
|
+
console.log("[TEST] updateTask (not found) telemetry sent to collector");
|
|
152
|
+
});
|
|
153
|
+
test("deleteTask() with non-existent ID emits telemetry", async () => {
|
|
154
|
+
await withTestTrace("test.task.delete.not-found", async () => {
|
|
155
|
+
const core = await createTestCore();
|
|
156
|
+
// Try to delete a non-existent task
|
|
157
|
+
const deleted = await core.deleteTask("999");
|
|
158
|
+
expect(deleted).toBe(false);
|
|
159
|
+
});
|
|
160
|
+
console.log("[TEST] deleteTask (not found) telemetry sent to collector");
|
|
161
|
+
});
|
|
162
|
+
test("archiveTask() with non-existent ID emits telemetry", async () => {
|
|
163
|
+
await withTestTrace("test.task.archive.not-found", async () => {
|
|
164
|
+
const core = await createTestCore();
|
|
165
|
+
// Try to archive a non-existent task
|
|
166
|
+
const archived = await core.archiveTask("999");
|
|
167
|
+
expect(archived).toBeNull();
|
|
168
|
+
});
|
|
169
|
+
console.log("[TEST] archiveTask (not found) telemetry sent to collector");
|
|
170
|
+
});
|
|
171
|
+
test("restoreTask() with non-existent ID emits telemetry", async () => {
|
|
172
|
+
await withTestTrace("test.task.restore.not-found", async () => {
|
|
173
|
+
const core = await createTestCore();
|
|
174
|
+
// Try to restore a non-existent task
|
|
175
|
+
const restored = await core.restoreTask("999");
|
|
176
|
+
expect(restored).toBeNull();
|
|
177
|
+
});
|
|
178
|
+
console.log("[TEST] restoreTask (not found) telemetry sent to collector");
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=task-crud.otel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-crud.otel.test.js","sourceRoot":"","sources":["../../src/test/task-crud.otel.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare const DEFAULT_TASK_STATUSES: {
|
|
|
14
14
|
/**
|
|
15
15
|
* Default task status type (type-safe)
|
|
16
16
|
*/
|
|
17
|
-
export type DefaultTaskStatus = typeof DEFAULT_TASK_STATUSES[keyof typeof DEFAULT_TASK_STATUSES];
|
|
17
|
+
export type DefaultTaskStatus = (typeof DEFAULT_TASK_STATUSES)[keyof typeof DEFAULT_TASK_STATUSES];
|
|
18
18
|
/**
|
|
19
19
|
* Task status can be any string (for custom statuses), but defaults are type-safe
|
|
20
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,qBAAqB,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backlog-md/core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9",
|
|
4
4
|
"description": "Runtime-agnostic core package for Backlog.md task management",
|
|
5
5
|
"author": "Backlog.md Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -56,11 +56,16 @@
|
|
|
56
56
|
"prepare": "husky"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
+
"@opentelemetry/api": "^1.9.0",
|
|
59
60
|
"@principal-ai/repository-abstraction": "^0.4.0",
|
|
60
61
|
"yaml": "^2.8.1"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
|
63
64
|
"@biomejs/biome": "^2.3.10",
|
|
65
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.212.0",
|
|
66
|
+
"@opentelemetry/resources": "^2.5.1",
|
|
67
|
+
"@opentelemetry/sdk-trace-node": "^2.5.1",
|
|
68
|
+
"@opentelemetry/semantic-conventions": "^1.40.0",
|
|
64
69
|
"@types/bun": "^1.1.20",
|
|
65
70
|
"husky": "^9.1.7",
|
|
66
71
|
"lint-staged": "^15.2.0",
|